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); } } }