using IRaCIS.Application.Interfaces; using IRaCIS.Application.Contracts; using IRaCIS.Core.Infra.EFCore; using Microsoft.AspNetCore.Mvc; using IRaCIS.Core.Domain.Models; namespace IRaCIS.Application.Services { [ ApiExplorerSettings(GroupName = "Institution")] public class SponsorService( IRepository _sponsorRepository, IRepository _trialRepository) : BaseService, ISponsorService { /// 分页获取申办方列表 [HttpPost] public async Task> GetSponsorList(SponsorQueryDTO inQuery) { var sponsorQueryable = _sponsorRepository .WhereIf(!string.IsNullOrWhiteSpace(inQuery.SponsorName),t => t.SponsorName.Contains(inQuery.SponsorName)|| t.SponsorNameCN.Contains(inQuery.SponsorName)) .WhereIf(!string.IsNullOrEmpty(inQuery.SponsorCode), t => t.SponsorCode.Contains(inQuery.SponsorCode)) .ProjectTo(_mapper.ConfigurationProvider); return await sponsorQueryable.ToPagedListAsync(inQuery); } /// 分页获取申办方列表 public async Task> GetAllSponsorList(Guid? trialId) { var sponsorQueryable = _sponsorRepository .WhereIf(trialId == null, t => t.IsTrialLevel == false) .WhereIf(trialId != null, t => t.IsTrialLevel == false || t.TrialId == trialId) .ProjectTo(_mapper.ConfigurationProvider,new { isEn_Us= _userInfo.IsEn_Us}); return await sponsorQueryable.ToListAsync(); } /// 添加申办方 public async Task AddOrUpdateSponsor(SponsorCommand sponsorCommand) { var exp = new EntityVerifyExp() { VerifyExp = h => (h.SponsorName.Equals(sponsorCommand.SponsorName)|| h.SponsorNameCN.Equals(sponsorCommand.SponsorNameCN)) && h.IsTrialLevel == false, //---已经存在同名的申办方,请确认。 VerifyMsg = _localizer["Sponsor_DupName"] }; 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.SponsorId == sponsorId)) { //---该申办方已经加入项目,不允许删除。 return ResponseOutput.NotOk(_localizer["Sponsor_InProject"]); } var success = await _sponsorRepository.BatchDeleteNoTrackingAsync(x => x.Id == sponsorId); return ResponseOutput.Result(success); } } }