EI-Image-Viewer-Api/IRaCIS.Core.Application/Service/Institution/CROService.cs

80 lines
3.1 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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) || t.CRONameCN.Contains(croCompanySearchModel.CROName))
.WhereIf(!string.IsNullOrEmpty(croCompanySearchModel.CROCode), t => t.CROCode.Contains(croCompanySearchModel.CROCode) )
.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);
}
}
}