118 lines
5.1 KiB
C#
118 lines
5.1 KiB
C#
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.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Linq.Expressions;
|
|
|
|
namespace IRaCIS.Application.Services
|
|
{
|
|
public class SponsorService : ISponsorService
|
|
{
|
|
private readonly ISponsorRepository _sponsorRepository;
|
|
private readonly ITrialRepository _trialRepository;
|
|
private readonly IMapper _mapper;
|
|
private readonly IUserRepository _userRepository;
|
|
|
|
public SponsorService(ISponsorRepository sponsorRepository, ITrialRepository trialRepository, IUserRepository userRepository, IMapper mapper)
|
|
{
|
|
_sponsorRepository = sponsorRepository;
|
|
_trialRepository = trialRepository;
|
|
_userRepository = userRepository;
|
|
_mapper = mapper;
|
|
}
|
|
|
|
/// <summary> 分页获取申办方列表 </summary>
|
|
public PageOutput<SponsorDTO> GetSponsorList(SponsorQueryDTO sponsorSearchModel)
|
|
{
|
|
Expression<Func<Sponsor, bool>> sponsorLambda = x => true;
|
|
if (!string.IsNullOrWhiteSpace(sponsorSearchModel.SponsorName))
|
|
{
|
|
sponsorLambda = sponsorLambda.And(t => t.SponsorName.Contains(sponsorSearchModel.SponsorName.Trim()));
|
|
}
|
|
var sponsorQueryable = _sponsorRepository.GetAll().Where(sponsorLambda).ProjectTo<SponsorDTO>(_mapper.ConfigurationProvider);
|
|
var count = sponsorQueryable.Count();
|
|
|
|
//处理排序字段
|
|
var propName = string.IsNullOrWhiteSpace(sponsorSearchModel.SortField) ? "Id" : sponsorSearchModel.SortField;
|
|
//处理升序和降序
|
|
sponsorQueryable = sponsorSearchModel.Asc
|
|
? sponsorQueryable.OrderBy(propName)
|
|
: sponsorQueryable.OrderByDescending(propName);
|
|
|
|
//分页
|
|
sponsorQueryable = sponsorQueryable
|
|
.Skip(((sponsorSearchModel.PageIndex - 1) * sponsorSearchModel.PageSize))
|
|
.Take(sponsorSearchModel.PageSize);
|
|
//数据库查询
|
|
var sponsorList = sponsorQueryable.ToList();
|
|
return new PageOutput<SponsorDTO>(sponsorSearchModel.PageIndex,
|
|
sponsorSearchModel.PageSize, count, sponsorList);
|
|
}
|
|
|
|
/// <summary> 分页获取申办方列表 </summary>
|
|
public IEnumerable<SponsorSelectDTO> GetSponsorSearchList()
|
|
{
|
|
//Expression<Func<Sponsor, bool>> sponsorLambda = x => true;
|
|
//if (!string.IsNullOrWhiteSpace(sponsorSearchModel.SponsorName))
|
|
//{
|
|
// sponsorLambda = sponsorLambda.And(t => t.SponsorName.Contains(sponsorSearchModel.SponsorName.Trim()));
|
|
//}
|
|
var sponsorQueryable = _sponsorRepository.GetAll().ProjectTo<SponsorSelectDTO>(_mapper.ConfigurationProvider);
|
|
return sponsorQueryable.ToList();
|
|
}
|
|
|
|
/// <summary> 添加申办方 </summary>
|
|
public IResponseOutput AddOrUpdateSponsor(SponsorCommand addSponsorViewModel)
|
|
{
|
|
if (addSponsorViewModel.Id==Guid.Empty|| addSponsorViewModel.Id == null)
|
|
{
|
|
if (_sponsorRepository.FindSingleOrDefault(t => t.SponsorName == addSponsorViewModel.SponsorName) != null)
|
|
{
|
|
return ResponseOutput.NotOk("Name repetition. ");
|
|
}
|
|
var sponsor = _sponsorRepository.Add(_mapper.Map<Sponsor>(addSponsorViewModel));
|
|
var success = _sponsorRepository.SaveChanges();
|
|
return ResponseOutput.Result(success, sponsor.Id.ToString());
|
|
}
|
|
else
|
|
{
|
|
var updateSponsorViewModel = addSponsorViewModel;
|
|
|
|
if (_sponsorRepository.FindSingleOrDefault(t => t.SponsorName == updateSponsorViewModel.SponsorName && t.Id != updateSponsorViewModel.Id) != null)
|
|
{
|
|
return ResponseOutput.NotOk("Name repetition. ");
|
|
}
|
|
var success = _sponsorRepository.Update(t => t.Id == updateSponsorViewModel.Id, u => new Sponsor()
|
|
{
|
|
SponsorName = updateSponsorViewModel.SponsorName
|
|
});
|
|
|
|
return ResponseOutput.Result(success);
|
|
}
|
|
|
|
}
|
|
|
|
/// <summary> 删除申办方 </summary>
|
|
public IResponseOutput DeleteSponsor(Guid sponsorId)
|
|
{
|
|
if (_trialRepository.GetAll().Any(t => t.CROId == sponsorId))
|
|
{
|
|
return ResponseOutput.NotOk("在项目表中已关联此项");
|
|
}
|
|
if (_userRepository.Find().Any(t => t.OrganizationId == sponsorId))
|
|
{
|
|
return ResponseOutput.NotOk("该申办方下存在用户,暂时无法删除。");
|
|
}
|
|
var success = _sponsorRepository.Delete(t => t.Id == sponsorId);
|
|
return ResponseOutput.Result(success);
|
|
}
|
|
}
|
|
} |