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 _subjectVisitRepository; public ReadModuleService(IRepository subjectVisitRepository ) { _subjectVisitRepository = subjectVisitRepository; } /// /// 添加或更新项目医生项目价格 /// [HttpPost] public async Task> 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; } } }