using Admin.NET.Core;
using Furion.DatabaseAccessor;
using Furion.DependencyInjection;
using Furion.DynamicApiController;
using Furion.FriendlyException;
using Mapster;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Dynamic.Core;
using System.Threading.Tasks;
namespace Admin.NET.Application
{
///
/// 留学时间节点服务
///
[ApiDescriptionSettings("测评服务", Name = "BusStudyabroadTimeAxis", Order = 100)]
public class BusStudyabroadTimeAxisService : IDynamicApiController, ITransient
{
private readonly SqlSugarRepository _busStudyabroadTimeAxisRep;
private readonly SqlSugarRepository _bussysDict;
private readonly UserManager _userManager;
public BusStudyabroadTimeAxisService(
SqlSugarRepository busStudyabroadTimeAxisRep,
SqlSugarRepository bussysDict,
UserManager userManager
)
{
_busStudyabroadTimeAxisRep = busStudyabroadTimeAxisRep;
_bussysDict = bussysDict;
_userManager = userManager;
}
///
/// 分页查询留学时间节点
///
///
///
[HttpGet("page")]
public async Task> Page([FromQuery] BusStudyabroadTimeAxisInput input)
{
var busStudyabroadTimeAxiss = await _busStudyabroadTimeAxisRep.AsQueryable()
.Where(u => u.CountryId == input.CountryId)
.WhereIF(!string.IsNullOrEmpty(input.TimeNode), u => u.TimeNode == input.TimeNode)
.WhereIF(!string.IsNullOrEmpty(input.EventName), u => u.EventName == input.EventName)
.WhereIF(!string.IsNullOrEmpty(input.Description), u => u.Description == input.Description)
.Where(u => u.Sort == input.Sort)
.OrderBy(u => u.CreateTime, OrderByType.Desc)
.OrderBuilder(input)
.Select(s => new BusStudyabroadTimeAxisOutput()
{
TimeNode = s.TimeNode,
EventName = s.EventName,
Description = s.Description,
Sort = s.Sort,
Id = s.Id
})
.ToPagedListAsync(input.Page, input.PageSize);
return busStudyabroadTimeAxiss;
}
///
/// 增加留学时间节点
///
///
///
[HttpPost("add")]
public async Task Add(AddBusStudyabroadTimeAxisInput input)
{
var busStudyabroadTimeAxis = input.Adapt();
await _busStudyabroadTimeAxisRep.InsertAsync(busStudyabroadTimeAxis);
}
///
/// 删除留学时间节点
///
///
///
[HttpPost("delete")]
public async Task Delete(DeleteBusStudyabroadTimeAxisInput input)
{
var busStudyabroadTimeAxis = await _busStudyabroadTimeAxisRep.AsQueryable().FirstAsync(u => u.Id == input.Id);
await _busStudyabroadTimeAxisRep.FakeDeleteAsync(busStudyabroadTimeAxis);
}
///
/// 更新留学时间节点
///
///
///
[HttpPost("edit")]
public async Task Update(UpdateBusStudyabroadTimeAxisInput input)
{
var isExist = await _busStudyabroadTimeAxisRep.AsQueryable().AnyAsync(u => u.Id == input.Id);
if (!isExist) throw Oops.Oh(ErrorCodeEnum.D3000);
var busStudyabroadTimeAxis = input.Adapt();
await _busStudyabroadTimeAxisRep.UpdateAsync(busStudyabroadTimeAxis);
}
///
/// 获取留学时间节点
///
///
///
[HttpGet("detail")]
public async Task Get([FromQuery] QueryeBusStudyabroadTimeAxisInput input)
{
return (await _busStudyabroadTimeAxisRep.AsQueryable().FirstAsync(u => u.Id == input.Id)).Adapt();
}
///
/// 获取留学时间节点列表
///
///
///
[HttpGet("list")]
public async Task> List([FromQuery] BusStudyabroadTimeAxisInput input)
{
return await _busStudyabroadTimeAxisRep.AsQueryable().Select(s => new BusStudyabroadTimeAxisOutput()
{
TimeNode = s.TimeNode,
EventName = s.EventName,
Description = s.Description,
Sort = s.Sort,
Id = s.Id
}).ToListAsync();
}
///
/// 导入数据
///
///
///
[HttpPost("import")]
public async Task Imports(IFormFile file)
{
var list = InputExcelUtil.InputExcel(file);
var replist = new List();
for (int i = 0; i < list.Count(); i++)
{
var item = list[i];
replist.Add(new BusStudyabroadTimeAxis()
{
CountryId = 1007,
CreateTime = DateTime.Now,
CreateUserId = _userManager.UserId,
CreateUserName = _userManager.Account,
TimeNode = item.TimeNode,
EventName = item.EventName,
Description = item.Description,
Sort = item.Sort,
});
}
await _busStudyabroadTimeAxisRep.InsertRangeAsync(replist);
}
///
/// 出国留学国家
///
///
///
[HttpGet("GetStudyAbroads")]
public async Task> GetStudyAbroads([FromQuery] StudyAbroadRequestDTO requestDTO)
{
var sysdict = await _bussysDict.AsQueryable().Where(e => e.DictTypeId == requestDTO.TypeId).ToListAsync();
return sysdict.Select(s => new StudyAbroadCountryDTO()
{
Code = s.Code,
Name = s.Value
}).ToList();
}
///
/// 获取留学时间轴
///
///
///
[HttpGet("GetBusStudyAbroadTimeAxes")]
public async Task> GetBusStudyAbroadTimeAxes([FromQuery] BusStudyAbroadTimeAxisRequestDTO axisRequestDTO)
{
var result = new List();
var sysdict = await _bussysDict.AsQueryable().Where(e => e.DictTypeId == 340876906606661).ToListAsync();
var query = await _busStudyabroadTimeAxisRep.AsQueryable().Where(e => e.CountryId == axisRequestDTO.CountryId).ToListAsync();
var timedict = query.Select(s => s.StartTimeAxis).Distinct().ToList();
timedict.ForEach(c =>
{
result.Add(new BusStudyAbroadTimeAxisResponseDTO()
{
StartTimeAxis = sysdict.FirstOrDefault(e => e.Code == c.ToString()).Value,
busStudyAbroadTimeAxes = query.Where(e => e.StartTimeAxis == c).Select(s => new BusStudyAbroadTimeAxisItems()
{
TimeNode = s.TimeNode,
EventName = s.EventName,
Description = s.Description,
Sort = s.Sort
}).ToList()
});
});
return result;
}
}
}