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);
|
||
}
|
||
}
|
||
} |