80 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C#
		
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			3.3 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 SponsorService : BaseService, ISponsorService
 | 
						|
    {
 | 
						|
        private readonly IRepository<Sponsor> _sponsorRepository;
 | 
						|
 | 
						|
        public SponsorService(IRepository<Sponsor> sponsorRepository)
 | 
						|
        {
 | 
						|
            _sponsorRepository = sponsorRepository;
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary> 分页获取申办方列表 </summary>
 | 
						|
       [HttpPost]
 | 
						|
        public async Task<PageOutput<SponsorDTO>> GetSponsorList(SponsorQueryDTO sponsorSearchModel)
 | 
						|
        {
 | 
						|
           
 | 
						|
            var sponsorQueryable = _sponsorRepository
 | 
						|
                .WhereIf(!string.IsNullOrWhiteSpace(sponsorSearchModel.SponsorName),t => t.SponsorName.Contains(sponsorSearchModel.SponsorName))
 | 
						|
                .ProjectTo<SponsorDTO>(_mapper.ConfigurationProvider);
 | 
						|
 | 
						|
            return await sponsorQueryable.ToPagedListAsync(sponsorSearchModel.PageIndex,
 | 
						|
                sponsorSearchModel.PageSize, string.IsNullOrWhiteSpace(sponsorSearchModel.SortField) ? "Id" : sponsorSearchModel.SortField, sponsorSearchModel.Asc);
 | 
						|
           
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary> 分页获取申办方列表 </summary>
 | 
						|
        public async  Task<IEnumerable<SponsorSelectDTO>> GetAllSponsorList()
 | 
						|
        {
 | 
						|
            //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.ProjectTo<SponsorSelectDTO>(_mapper.ConfigurationProvider);
 | 
						|
            return await sponsorQueryable.ToListAsync();
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary> 添加申办方 </summary>
 | 
						|
        public async Task<IResponseOutput> AddOrUpdateSponsor(SponsorCommand sponsorCommand)
 | 
						|
        {
 | 
						|
            var exp = new EntityVerifyExp<Sponsor>()
 | 
						|
            {
 | 
						|
                VerifyExp = h => h.SponsorName.Equals(sponsorCommand.SponsorName),
 | 
						|
                VerifyMsg = "A sponsor with the same name already existed in the table. Please confirm."
 | 
						|
            };
 | 
						|
 | 
						|
            var sponsor = await _sponsorRepository.InsertOrUpdateAsync(sponsorCommand, true, exp);
 | 
						|
 | 
						|
            return ResponseOutput.Ok(sponsor.Id.ToString());
 | 
						|
 | 
						|
          
 | 
						|
           
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary> 删除申办方 </summary>
 | 
						|
        [HttpDelete("{sponsorId:guid}")]
 | 
						|
       
 | 
						|
        public async  Task<IResponseOutput> DeleteSponsor(Guid sponsorId)
 | 
						|
        {
 | 
						|
            if (await _repository.GetQueryable<Trial>().AnyAsync(t => t.CROId == sponsorId))
 | 
						|
            {
 | 
						|
                return ResponseOutput.NotOk("This sponsor has participated in the trial and couldn't be deleted.");
 | 
						|
            }
 | 
						|
            //if (_userRepository.Find().Any(t => t.OrganizationId == sponsorId))
 | 
						|
            //{
 | 
						|
            //    return ResponseOutput.NotOk("该申办方下存在用户,暂时无法删除。");
 | 
						|
            //}
 | 
						|
          
 | 
						|
 | 
						|
            var success = await _sponsorRepository.DeleteFromQueryAsync(x => x.Id == sponsorId);
 | 
						|
            return ResponseOutput.Result(success);
 | 
						|
        }      
 | 
						|
    }
 | 
						|
} |