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 = "BusScaleExplain", Order = 100)]
public class BusScaleExplainService : IDynamicApiController, ITransient
{
private readonly SqlSugarRepository _busScaleExplainRep;
private readonly UserManager _userManager;
///
///
///
///
public BusScaleExplainService(
SqlSugarRepository busScaleExplainRep,
UserManager userManager
)
{
_busScaleExplainRep = busScaleExplainRep;
_userManager = userManager;
}
///
/// 分页查询量表结果解释
///
///
///
[HttpGet("page")]
public async Task> Page([FromQuery] BusScaleExplainInput input)
{
var busScaleExplains = await _busScaleExplainRep.AsQueryable()
.Where(u => u.ScaleId == input.ScaleId)
.WhereIF(!string.IsNullOrEmpty(input.Tag), u => u.Tag == input.Tag)
.WhereIF(!string.IsNullOrEmpty(input.Title), u => u.Title == input.Title)
.WhereIF(!string.IsNullOrEmpty(input.Description), u => u.Description == input.Description)
.WhereIF(!string.IsNullOrEmpty(input.Resolving), u => u.Resolving == input.Resolving)
.WhereIF(!string.IsNullOrEmpty(input.Traits), u => u.Traits == input.Traits)
.WhereIF(!string.IsNullOrEmpty(input.Features), u => u.Features == input.Features)
.WhereIF(!string.IsNullOrEmpty(input.Occupation), u => u.Occupation == input.Occupation)
.WhereIF(!string.IsNullOrEmpty(input.Major), u => u.Major == input.Major)
.WhereIF(!string.IsNullOrEmpty(input.University), u => u.University == input.University)
.OrderBy(u => u.CreateTime, OrderByType.Desc)
.OrderBuilder(input)
.Select(s => new BusScaleExplainOutput
{
Tag = s.Tag,
Title = s.Title,
Description = s.Description,
Resolving = s.Resolving,
Traits = s.Traits,
Features = s.Features,
Occupation = s.Occupation,
Major = s.Major,
University = s.University,
Id = s.Id
})
.ToPagedListAsync(input.Page, input.PageSize);
return busScaleExplains;
}
///
/// 增加量表结果解释
///
///
///
[HttpPost("add")]
public async Task Add(AddBusScaleExplainInput input)
{
var busScaleExplain = input.Adapt();
await _busScaleExplainRep.InsertAsync(busScaleExplain);
}
///
/// 删除量表结果解释
///
///
///
[HttpPost("delete")]
public async Task Delete(DeleteBusScaleExplainInput input)
{
var busScaleExplain = await _busScaleExplainRep.AsQueryable().FirstAsync(u => u.Id == input.Id);
await _busScaleExplainRep.FakeDeleteAsync(busScaleExplain);
}
///
/// 更新量表结果解释
///
///
///
[HttpPost("edit")]
public async Task Update(UpdateBusScaleExplainInput input)
{
var isExist = await _busScaleExplainRep.AsQueryable().AnyAsync(u => u.Id == input.Id);
if (!isExist) throw Oops.Oh(ErrorCodeEnum.D3000);
var busScaleExplain = input.Adapt();
await _busScaleExplainRep.UpdateAsync(busScaleExplain);
}
///
/// 获取量表结果解释
///
///
///
[HttpGet("detail")]
public async Task Get([FromQuery] QueryeBusScaleExplainInput input)
{
return (await _busScaleExplainRep.AsQueryable().FirstAsync(u => u.Id == input.Id)).Adapt();
}
///
/// 获取量表结果解释列表
///
///
///
[HttpGet("list")]
public async Task> List([FromQuery] BusScaleExplainInput input)
{
return await _busScaleExplainRep.AsQueryable()
.Select().ToListAsync();
}
///
///
///
///
///
[HttpPost("import")]
public async Task Imports(IFormFile file)
{
var list = InputExcelUtil.InputExcel(file);
var scalelist = new List();
for (int i = 0; i < list.Count(); i++)
{
var item = list[i];
scalelist.Add(new BusScaleExplain()
{
CreateTime = DateTime.Now,
CreateUserName = _userManager.Account,
CreateUserId = _userManager.UserId,
Description = item.Description,
Features = item.Features,
MainDomain = item.MainDomain,
Major = item.Major,
Occupation = item.Occupation,
Resolving = item.Resolving,
ScaleId = item.ScaleId,
Tag = item.Tag,
Title = item.Title,
Traits = item.Traits,
University = item.University,
});
}
await _busScaleExplainRep.InsertRangeAsync(scalelist);
}
}
}