using IRaCIS.Application.Interfaces; using IRaCIS.Application.Contracts; using IRaCIS.Core.Infra.EFCore; using Microsoft.AspNetCore.Mvc; namespace IRaCIS.Application.Services { [ ApiExplorerSettings(GroupName = "Institution")] public class SponsorService : BaseService, ISponsorService { private readonly IRepository _sponsorRepository; private readonly IRepository _trialRepository; public SponsorService(IRepository sponsorRepository, IRepository trialRepository) { _sponsorRepository = sponsorRepository; this._trialRepository = trialRepository; } /// 分页获取申办方列表 [HttpPost] public async Task> GetSponsorList(SponsorQueryDTO sponsorSearchModel) { var sponsorQueryable = _sponsorRepository .WhereIf(!string.IsNullOrWhiteSpace(sponsorSearchModel.SponsorName),t => t.SponsorName.Contains(sponsorSearchModel.SponsorName)|| t.SponsorNameCN.Contains(sponsorSearchModel.SponsorName)) .WhereIf(!string.IsNullOrEmpty(sponsorSearchModel.SponsorCode), t => t.SponsorCode.Contains(sponsorSearchModel.SponsorCode)) .ProjectTo(_mapper.ConfigurationProvider); return await sponsorQueryable.ToPagedListAsync(sponsorSearchModel.PageIndex, sponsorSearchModel.PageSize, string.IsNullOrWhiteSpace(sponsorSearchModel.SortField) ? "Id" : sponsorSearchModel.SortField, sponsorSearchModel.Asc); } /// 分页获取申办方列表 public async Task> GetAllSponsorList() { //Expression> sponsorLambda = x => true; //if (!string.IsNullOrWhiteSpace(sponsorSearchModel.SponsorName)) //{ // sponsorLambda = sponsorLambda.And(t => t.SponsorName.Contains(sponsorSearchModel.SponsorName.Trim())); //} var sponsorQueryable = _sponsorRepository.ProjectTo(_mapper.ConfigurationProvider); return await sponsorQueryable.ToListAsync(); } /// 添加申办方 public async Task AddOrUpdateSponsor(SponsorCommand sponsorCommand) { var exp = new EntityVerifyExp() { VerifyExp = h => h.SponsorName.Equals(sponsorCommand.SponsorName), VerifyMsg = "已经存在同名的申办方,请确认。" }; var sponsor = await _sponsorRepository.InsertOrUpdateAsync(sponsorCommand, true, exp); return ResponseOutput.Ok(sponsor.Id.ToString()); } /// 删除申办方 [HttpDelete("{sponsorId:guid}")] public async Task DeleteSponsor(Guid sponsorId) { if (await _trialRepository.AnyAsync(t => t.CROId == sponsorId)) { return ResponseOutput.NotOk("该申办方已经加入项目,不允许删除。"); } //if (_userRepository.Find().Any(t => t.OrganizationId == sponsorId)) //{ // return ResponseOutput.NotOk("该申办方下存在用户,暂时无法删除。"); //} var success = await _sponsorRepository.BatchDeleteNoTrackingAsync(x => x.Id == sponsorId); return ResponseOutput.Result(success); } } }