190 lines
8.5 KiB
C#
190 lines
8.5 KiB
C#
using AutoMapper;
|
|
using IRaCIS.Application.Interfaces;
|
|
using IRaCIS.Application.Contracts;
|
|
using IRaCIS.Core.Infra.EFCore;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Panda.DynamicWebApi.Attributes;
|
|
|
|
namespace IRaCIS.Application.Services
|
|
{
|
|
[ApiExplorerSettings(GroupName = "Financial")]
|
|
public class TrialPaymentPriceService : BaseService, ITrialPaymentPriceService
|
|
{
|
|
private readonly IRepository<TrialPaymentPrice> _trialExtRepository;
|
|
private readonly IRepository<Enroll> _enrollRepository;
|
|
private readonly IRepository<Doctor> _doctorRepository;
|
|
private readonly IRepository<CRO> _croRepository;
|
|
|
|
|
|
private readonly IRepository<Trial> _trialRepository;
|
|
public TrialPaymentPriceService(IRepository<Trial> trialRepository, IRepository<TrialPaymentPrice> trialExtRepository,
|
|
IRepository<Enroll> enrollRepository,
|
|
IRepository<Doctor> doctorRepository,
|
|
IRepository<CRO> croCompanyRepository, IMapper mapper)
|
|
{
|
|
_trialExtRepository = trialExtRepository;
|
|
_croRepository = croCompanyRepository;
|
|
_enrollRepository = enrollRepository;
|
|
_doctorRepository = doctorRepository;
|
|
|
|
_trialRepository = trialRepository;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 添加或更新项目支付价格信息
|
|
/// </summary>
|
|
[NonDynamicMethod]
|
|
public async Task<IResponseOutput> AddOrUpdateTrialPaymentPrice(TrialPaymentPriceCommand addOrUpdateModel)
|
|
{
|
|
|
|
var trialExistedItem = await _trialExtRepository.FirstOrDefaultAsync(u => u.TrialId == addOrUpdateModel.TrialId);
|
|
if (trialExistedItem == null)//insert
|
|
{
|
|
var trialExt = _mapper.Map<TrialPaymentPrice>(addOrUpdateModel);
|
|
|
|
await _trialExtRepository.AddAsync(trialExt);
|
|
|
|
}
|
|
else//update
|
|
{
|
|
await _trialExtRepository.UpdateAsync(_mapper.Map(addOrUpdateModel, trialExistedItem));
|
|
|
|
}
|
|
var success = await _trialExtRepository.SaveChangesAsync();
|
|
return ResponseOutput.Result(success);
|
|
}
|
|
|
|
|
|
[HttpPost]
|
|
public async Task<IResponseOutput> UploadTrialSOW(TrialSOWPathDTO trialSowPath)
|
|
{
|
|
var trialPaymentPrice = await _trialExtRepository.FirstOrDefaultAsync(u => u.TrialId == trialSowPath.TrialId);
|
|
|
|
if (trialPaymentPrice == null)//添加
|
|
{
|
|
await _trialExtRepository.AddAsync(_mapper.Map<TrialPaymentPrice>(trialSowPath));
|
|
}
|
|
else//更新
|
|
{
|
|
await _trialExtRepository.UpdateAsync(_mapper.Map(trialSowPath, trialPaymentPrice));
|
|
}
|
|
|
|
var success = await _trialExtRepository.SaveChangesAsync();
|
|
|
|
return ResponseOutput.Result(success);
|
|
}
|
|
|
|
|
|
[HttpPost]
|
|
public async Task<IResponseOutput> DeleteTrialSOW(DeleteSowPathDTO trialSowPath)
|
|
{
|
|
var success = await _trialExtRepository.BatchUpdateAsync(u => u.TrialId == trialSowPath.TrialId, s => new TrialPaymentPrice
|
|
{
|
|
SowPath = "",
|
|
SowName = "",
|
|
UpdateTime = DateTime.Now,
|
|
UpdateUserId = _userInfo.Id
|
|
});
|
|
|
|
return ResponseOutput.Result(success);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取项目支付价格信息列表
|
|
/// </summary>
|
|
[HttpPost]
|
|
public async Task<PageOutput<TrialPaymentPriceDTO>> GetTrialPaymentPriceList(TrialPaymentPriceQueryDTO queryParam)
|
|
{
|
|
#region hwt
|
|
//var trialQueryable = from trial in _trialRepository.AsQueryable()
|
|
// .WhereIf(queryParam.CroId != null, o => o.CROId == queryParam.CroId)
|
|
// .WhereIf(!string.IsNullOrEmpty(queryParam.KeyWord), o => o.TrialCode.Contains(queryParam.KeyWord) || o.Indication.Contains(queryParam.KeyWord))
|
|
// join cro in _croRepository.AsQueryable() on trial.CROId equals cro.Id into CRO
|
|
// from croInfo in CRO.DefaultIfEmpty()
|
|
// join trialExt in _trialExtRepository.Where()
|
|
// on trial.Id equals trialExt.TrialId into trialInfo
|
|
// from trialExt in trialInfo.DefaultIfEmpty()
|
|
// select new TrialPaymentPriceDTO
|
|
// {
|
|
// //Id = trialExt.Id ,
|
|
// IsNewTrial = trialExt.IsNewTrial,
|
|
// TrialId = trial.Id,
|
|
// TrialCode = trial.TrialCode,
|
|
// Cro = croInfo.CROName,
|
|
// Indication = trial.Indication,
|
|
// Expedited = trial.Expedited,
|
|
// TrialAdditional = trialExt.TrialAdditional,
|
|
// AdjustmentMultiple = trialExt.AdjustmentMultiple,
|
|
// SowName = trialExt.SowName,
|
|
// SowPath = trialExt.SowPath,
|
|
// CreateTime = trial.CreateTime,
|
|
// };
|
|
|
|
//var namelist = (from enroll in _enrollRepository.AsQueryable()
|
|
// join doctor in _doctorRepository.Where() on enroll.DoctorId equals doctor.Id
|
|
// select new DtoDoctorList()
|
|
// {
|
|
// TrialId = enroll.TrialId,
|
|
// Name = doctor.ChineseName
|
|
// }).ToList().GroupBy(x => new { x.TrialId },
|
|
//(key, lst) => new DtoDoctorList
|
|
//{
|
|
// TrialId = key.TrialId,
|
|
// Name = string.Join(',', lst.Select(x => x.Name))
|
|
//});
|
|
|
|
//var returndata = trialQueryable.ToPagedList(queryParam.PageIndex, queryParam.PageSize, "CreateTime", queryParam.Asc);
|
|
|
|
//returndata.CurrentPageData.ForEach(x => {
|
|
// x.DoctorsNames = namelist.Where(y => y.TrialId == x.TrialId).Select(y => y.Name).FirstOrDefault() ?? string.Empty;
|
|
//});
|
|
//return returndata;
|
|
|
|
#endregion
|
|
|
|
#region byzhouhang 方式一
|
|
|
|
//var trialQueryable = _trialExtRepository.Where(t => t.Trial.IsDeleted == false)
|
|
// .WhereIf(queryParam.CroId != null, o => o.Trial.CROId == queryParam.CroId)
|
|
// .WhereIf(!string.IsNullOrEmpty(queryParam.KeyWord), o => o.Trial.TrialCode.Contains(queryParam.KeyWord) || o.Trial.Indication.Contains(queryParam.KeyWord))
|
|
// .Select(trialExt => new TrialPaymentPriceDTO()
|
|
// {
|
|
// TrialCode = trialExt.Trial.TrialCode,
|
|
// Cro = trialExt.Trial.CRO.CROName,
|
|
// Indication = trialExt.Trial.Indication,
|
|
// Expedited = trialExt.Trial.Expedited,
|
|
|
|
// TrialId = trialExt.TrialId,
|
|
// IsNewTrial = trialExt.IsNewTrial,
|
|
// SowName = trialExt.SowName,
|
|
// SowPath = trialExt.SowPath,
|
|
// TrialAdditional = trialExt.TrialAdditional,
|
|
// AdjustmentMultiple = trialExt.AdjustmentMultiple,
|
|
// CreateTime = trialExt.CreateTime,
|
|
// DoctorsNames = string.Join(',', trialExt.Trial.EnrollList.Select(t => t.Doctor.ChineseName))
|
|
// });
|
|
|
|
//return trialQueryable.ToPagedList(queryParam.PageIndex, queryParam.PageSize, string.IsNullOrEmpty(queryParam.SortField) ? "CreateTime" : queryParam.SortField, queryParam.Asc);
|
|
|
|
#endregion
|
|
|
|
|
|
#region byzhouhang 方式二
|
|
|
|
var trialQueryable2 = _trialExtRepository.Where(t => t.Trial.IsDeleted == false)
|
|
.WhereIf(queryParam.CroId != null, o => o.Trial.CROId == queryParam.CroId)
|
|
.WhereIf(!string.IsNullOrEmpty(queryParam.KeyWord), o => o.Trial.TrialCode.Contains(queryParam.KeyWord) || o.Trial.Indication.Contains(queryParam.KeyWord))
|
|
.ProjectTo<TrialPaymentPriceDTO>(_mapper.ConfigurationProvider);
|
|
|
|
return await trialQueryable2.ToPagedListAsync(queryParam.PageIndex, queryParam.PageSize, string.IsNullOrEmpty(queryParam.SortField) ? "CreateTime" : queryParam.SortField, queryParam.Asc);
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
}
|