using AutoMapper; using AutoMapper.QueryableExtensions; using IRaCIS.Application.ExpressionExtend; using IRaCIS.Application.Interfaces; using IRaCIS.Application.ViewModels; using IRaCIS.Core.Application.Contracts.RequestAndResponse; using IRaCIS.Core.Domain.Interfaces; using IRaCIS.Core.Domain.Models; using IRaCIS.Infra.Data.ExpressionExtend; using System; using System.Linq; using System.Linq.Dynamic.Core; using System.Linq.Expressions; namespace IRaCIS.Application.Services.Pay { public class TrialPaymentPriceService : ITrialPaymentPriceService { private readonly ITrialPaymentPriceRepository _trialExtRepository; private readonly ICRORepository _croRepository; private readonly IMapper _mapper; private readonly ITrialRepository _trialRepository; public TrialPaymentPriceService(ITrialRepository trialRepository, ITrialPaymentPriceRepository trialExtRepository, ICRORepository croCompanyRepository, IMapper mapper) { _trialExtRepository = trialExtRepository; _croRepository = croCompanyRepository; _mapper = mapper; _trialRepository = trialRepository; } /// /// 添加或更新项目支付价格信息 /// public IResponseOutput AddOrUpdateTrialPaymentPrice(TrialPaymentPriceCommand addOrUpdateModel, Guid userId) { var trialExistedItem = _trialExtRepository.FindSingleOrDefault(u => u.TrialId == addOrUpdateModel.TrialId); if (trialExistedItem == null)//insert { var trialExt = _mapper.Map(addOrUpdateModel); _trialExtRepository.Add(trialExt); } else//update { _trialExtRepository.Update(_mapper.Map(addOrUpdateModel, trialExistedItem)); } var success = _trialExtRepository.SaveChanges(); return ResponseOutput.Result(success); } public IResponseOutput UploadTrialSOW(Guid userId, TrialSOWPathDTO trialSowPath) { var trialPaymentPrice= _trialExtRepository.GetAll().FirstOrDefault(u => u.TrialId == trialSowPath.TrialId); if (trialPaymentPrice == null)//添加 { _trialExtRepository.Add(_mapper.Map(trialSowPath)); } else//更新 { _trialExtRepository.Update(_mapper.Map(trialSowPath, trialPaymentPrice)); } var success = _trialExtRepository.SaveChanges(); return ResponseOutput.Result(success); } public IResponseOutput DeleteTrialSOW(Guid userId, DeleteSowPathDTO trialSowPath) { var success = _trialExtRepository.Update(u => u.TrialId == trialSowPath.TrialId, s => new TrialPaymentPrice { SowPath = "", SowName = "", UpdateTime = DateTime.Now, UpdateUserId = userId }); return ResponseOutput.Result(success); } /// /// 获取项目支付价格信息列表 /// public PageOutput GetTrialPaymentPriceList(TrialPaymentPriceQueryDTO queryParam) { var trialQueryable2 = _trialExtRepository.GetAll(); if (queryParam.CroId != null) { trialQueryable2 = trialQueryable2.Where(o => o.Trial.CROId == queryParam.CroId); } if (!string.IsNullOrEmpty(queryParam.KeyWord)) { trialQueryable2 = trialQueryable2.Where(o => o.Trial.Indication.Contains(queryParam.KeyWord)); } var data= trialQueryable2.ProjectTo(_mapper.ConfigurationProvider); var list = data.Skip((queryParam.PageIndex - 1) * queryParam.PageSize).Take(queryParam.PageSize).ToList(); return new PageOutput(queryParam.PageIndex, queryParam.PageSize, data.Count(), list ); } } }