EI-Image-Viewer-Api/IRaCIS.Core.Application/Service/Reading/ReadModuleService.cs

67 lines
2.2 KiB
C#

using IRaCIS.Application.Interfaces;
using IRaCIS.Core.Infra.EFCore;
using IRaCIS.Core.Domain.Share;
using IRaCIS.Core.Application.Filter;
using Microsoft.AspNetCore.Mvc;
using IRaCIS.Core.Application.Service.WorkLoad.DTO;
using Microsoft.AspNetCore.Authorization;
using IRaCIS.Core.Application.Auth;
using IRaCIS.Core.Application.Service.Reading.Dto;
using IRaCIS.Core.Domain.Share.Reading;
namespace IRaCIS.Application.Services
{
[ApiExplorerSettings(GroupName = "Reading")]
public class ReadModuleService : BaseService
{
public IRepository<SubjectVisit> _subjectVisitRepository;
public ReadModuleService(IRepository<SubjectVisit> subjectVisitRepository
)
{
_subjectVisitRepository = subjectVisitRepository;
}
/// <summary>
/// 添加或更新项目医生项目价格
/// </summary>
[HttpPost]
public async Task<List<GetReadModuleDtoOut>> GetReadModule(GetReadModuleDto dto)
{
var visits = await _subjectVisitRepository.Where(x => x.TrialId == dto.TrialId).Include(x=>x.Subject).Include(x => x.Site)
.Select(x=>new GetReadModuleOutDto ()
{
CreateTime=x.CreateTime,
Id=x.Id,
SubjectId=x.SubjectId,
SubjectVisitId=x.Id,
IsUrgent=x.IsUrgent,
ModuleName= x.InPlan?"计划内访视":"计划外访视",
ModuleType= x.InPlan? ModuleTypeEnum.InPlanSubjectVisit: ModuleTypeEnum.OutPlanSubjectVisit,
SubjectCode=x.Subject.Code,
SiteCode=x.Site.SiteCode,
SiteId=x.Site.Id,
}).ToListAsync();
var data = visits.GroupBy(x => new { x.SiteId, x.SubjectId, x.SiteCode, x.SubjectCode }).Select(x => new GetReadModuleDtoOut()
{
SiteCode = x.Key.SiteCode,
SiteId = x.Key.SiteId,
SubjectCode = x.Key.SubjectCode,
SubjectId = x.Key.SubjectId,
Data = x.ToList().OrderBy(y => y.ModuleType).ToList(),
}).ToList();
return data;
}
}
}