using AutoMapper; using IRaCIS.Application.Interfaces; using IRaCIS.Application.Contracts; using IRaCIS.Core.Application.Filter; using IRaCIS.Core.Infra.EFCore; using IRaCIS.Core.Domain.Models; using IRaCIS.Core.Infrastructure.Extention; using Microsoft.AspNetCore.Mvc; using Panda.DynamicWebApi.Attributes; namespace IRaCIS.Application.Services { [ ApiExplorerSettings(GroupName = "Financial")] public class RankPriceService : BaseService, IRankPriceService { private readonly IRepository _rankPriceRepository; private readonly IRepository _reviewerPayInfoRepository; public RankPriceService(IRepository rankPriceRepository, IRepository reviewerPayInfoRepository,IMapper mapper) { _rankPriceRepository = rankPriceRepository; _reviewerPayInfoRepository = reviewerPayInfoRepository; } [NonDynamicMethod] public async Task AddOrUpdateRankPrice(RankPriceCommand addOrUpdateModel, Guid userId) { if (addOrUpdateModel.Id == Guid.Empty|| addOrUpdateModel.Id ==null) { var rankPrice = _mapper.Map(addOrUpdateModel); rankPrice = await _rankPriceRepository.AddAsync(rankPrice); if (await _rankPriceRepository.SaveChangesAsync()) { return ResponseOutput.Ok(rankPrice.Id.ToString()); } else { return ResponseOutput.NotOk(); } } else { var success =await _rankPriceRepository.BatchUpdateNoTrackingAsync(t => t.Id == addOrUpdateModel.Id, u => new RankPrice() { UpdateUserId = userId, UpdateTime = DateTime.Now, RefresherTraining=addOrUpdateModel.RefresherTraining, RankName = addOrUpdateModel.RankName, Timepoint = addOrUpdateModel.Timepoint, TimepointIn24H = addOrUpdateModel.TimepointIn24H, TimepointIn48H = addOrUpdateModel.TimepointIn48H, Adjudication = addOrUpdateModel.Adjudication, AdjudicationIn24H = addOrUpdateModel.AdjudicationIn24H, AdjudicationIn48H = addOrUpdateModel.AdjudicationIn48H, Global = addOrUpdateModel.Global, Training = addOrUpdateModel.Training, Downtime = addOrUpdateModel.Downtime }); return ResponseOutput.Result(success); } } [HttpDelete("{id:guid}")] public async Task DeleteRankPrice(Guid id) { if (await _reviewerPayInfoRepository.AnyAsync(t => t.RankId == id)) { return ResponseOutput.NotOk("This title has been used by reviewer payment information"); } var success = await _rankPriceRepository.BatchDeleteNoTrackingAsync(t => t.Id == id); return ResponseOutput.Result(success); } /// /// 获取职称单价列表 /// [HttpPost] public async Task> GetRankPriceList(RankPriceQueryDTO queryParam) { var rankPriceQueryable = _rankPriceRepository.ProjectTo(_mapper.ConfigurationProvider); return await rankPriceQueryable.ToPagedListAsync(queryParam.PageIndex, queryParam.PageSize, "ShowOrder", queryParam.Asc); } public async Task> GetRankDic() { var rankQueryable = _rankPriceRepository.ProjectTo(_mapper.ConfigurationProvider); return await rankQueryable.ToListAsync(); } } }