78 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C#
		
	
	
			
		
		
	
	
			78 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C#
		
	
	
| 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 CroService : BaseService, ICroService
 | ||
|     {
 | ||
|         private readonly IRepository<CRO> _croRepository;
 | ||
|         private readonly IRepository<Trial> _trialRepository;
 | ||
| 
 | ||
|         public CroService(IRepository<CRO> croRepository, IRepository<Trial> trialRepository)
 | ||
|         {
 | ||
|             _croRepository = croRepository;
 | ||
|             this._trialRepository = trialRepository;
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary> 分页获取CRO列表 </summary>
 | ||
|         [HttpPost]
 | ||
|         public async Task<PageOutput<CROCompanyDTO>> GetCroList(CROCompanyQueryDTO croCompanySearchModel)
 | ||
|         {        
 | ||
|             var croQueryable = _croRepository.WhereIf(!string.IsNullOrEmpty(croCompanySearchModel.CROName), t => t.CROName.Contains(croCompanySearchModel.CROName))
 | ||
|                 .ProjectTo<CROCompanyDTO>(_mapper.ConfigurationProvider);
 | ||
| 
 | ||
|             return await croQueryable.ToPagedListAsync(croCompanySearchModel.PageIndex, croCompanySearchModel.PageSize, 
 | ||
|                 string.IsNullOrWhiteSpace(croCompanySearchModel.SortField) ? "CROName": croCompanySearchModel.SortField, croCompanySearchModel.Asc);
 | ||
| 
 | ||
| 
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary> 根据CRO 名称查询所有CRO 列表 </summary>
 | ||
|         public async Task<IEnumerable<CroSelectDTO>> GetAllCROList()
 | ||
|         {
 | ||
|             return await _croRepository.ProjectTo<CroSelectDTO>(_mapper.ConfigurationProvider).ToListAsync();
 | ||
|         }
 | ||
| 
 | ||
| 
 | ||
| 
 | ||
|         /// <summary> 添加CRO信息 </summary>
 | ||
|        
 | ||
|         public async Task<IResponseOutput> AddOrUpdateCro(CROCompanyDTO addCroCompanyCommand)
 | ||
|         {
 | ||
| 
 | ||
|             var exp = new EntityVerifyExp<CRO>()
 | ||
|             {
 | ||
|                 VerifyExp = cro => cro.CROName.Equals(addCroCompanyCommand.CROName) ,
 | ||
|                 VerifyMsg = "已经存在同名的CRO,请确认。"
 | ||
|             };
 | ||
| 
 | ||
|             var cro = await _croRepository.InsertOrUpdateAsync(addCroCompanyCommand, true, exp);
 | ||
| 
 | ||
|          
 | ||
| 
 | ||
|             return ResponseOutput.Ok( cro.Id.ToString());
 | ||
|           
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary> 删除CRO信息 </summary>
 | ||
|        
 | ||
|         [HttpDelete("{croCompanyId:guid}")]
 | ||
|         public  async Task<IResponseOutput> DeleteCro(Guid cROCompanyId)
 | ||
|         {
 | ||
|             if (await _trialRepository.AnyAsync(t => t.CROId == cROCompanyId))
 | ||
|             {
 | ||
|                 return ResponseOutput.NotOk("该CRO已经参与项目,不能被删除。");
 | ||
|             }
 | ||
|             //if (_userRepository.Find().Any(t => t.OrganizationId == cROCompanyId))
 | ||
|             //{
 | ||
|             //    return ResponseOutput.NotOk("该CRO下存在用户,暂时无法删除。");
 | ||
|             //}
 | ||
|             var success = await _croRepository.BatchDeleteNoTrackingAsync(x=>x.Id== cROCompanyId);
 | ||
| 
 | ||
|             return ResponseOutput.Result(success);
 | ||
|         }
 | ||
|     }
 | ||
| } |