89 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C#
		
	
	
			
		
		
	
	
			89 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C#
		
	
	
| 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 = "Reviewer")]
 | |
|     public class VacationService : BaseService, IVacationService
 | |
|     {
 | |
|         private readonly IRepository<Vacation> _vacationRepository;
 | |
| 
 | |
|         public VacationService(IRepository<Vacation> vacationRepository)
 | |
|         {
 | |
|             _vacationRepository = vacationRepository;
 | |
|         }
 | |
|         /// <summary>
 | |
|         /// 添加休假时间段
 | |
|         /// </summary>
 | |
|         /// <param name="param">Status不传</param>
 | |
|         /// <returns></returns>
 | |
| 
 | |
|         [HttpPost]
 | |
|         public async Task<IResponseOutput> AddOrUpdateVacation(VacationCommand param)
 | |
|         {
 | |
|             if (param.Id == Guid.Empty|| param.Id ==null)
 | |
|             {
 | |
|                 var result = await _vacationRepository.AddAsync(_mapper.Map<Vacation>(param));
 | |
| 
 | |
|                 var success = await _repository.SaveChangesAsync();
 | |
| 
 | |
|                 return ResponseOutput.Result(success, result.Id);
 | |
| 
 | |
|             }
 | |
|             else
 | |
|             {
 | |
|                 var success = await _vacationRepository.BatchUpdateNoTrackingAsync(u => u.Id == param.Id,
 | |
|                 h => new Vacation
 | |
|                 {
 | |
|                     StartDate = param.StartDate,
 | |
|                     EndDate = param.EndDate
 | |
|                 });
 | |
| 
 | |
|                 return ResponseOutput.Result(success);
 | |
| 
 | |
|             }
 | |
| 
 | |
|         }
 | |
|         /// <summary>
 | |
|         /// 删除休假时间段
 | |
|         /// </summary>
 | |
|         /// <param name="holidayId">记录Id</param>
 | |
|         /// <returns></returns>
 | |
|        
 | |
|         [HttpDelete("{holidayId:guid}")]
 | |
|         public async Task<IResponseOutput> DeleteVacation(Guid holidayId)
 | |
|         {
 | |
|             var success = await _vacationRepository.BatchDeleteNoTrackingAsync(u => u.Id == holidayId);
 | |
| 
 | |
|             return ResponseOutput.Result(success);
 | |
| 
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 获取休假时间段列表
 | |
|         /// </summary>
 | |
|         /// <returns></returns>
 | |
|         [HttpGet("{doctorId:guid}/{pageIndex:int}/{pageSize:int}")]
 | |
|         public async Task<PageOutput<VacationCommand>> GetVacationList(Guid doctorId, int pageIndex, int pageSize)
 | |
|         {
 | |
|             var query = _vacationRepository.Where(u => u.DoctorId == doctorId)
 | |
|                 .ProjectTo<VacationCommand>(_mapper.ConfigurationProvider);
 | |
| 
 | |
|             return await query.ToPagedListAsync(pageIndex, pageSize, "StartDate");
 | |
|        
 | |
|         }
 | |
| 
 | |
|         [NonDynamicMethod]
 | |
|         public async Task<IResponseOutput> OnVacation(Guid doctorId)
 | |
|         {
 | |
|             var count = await _vacationRepository.CountAsync(u => u.DoctorId == doctorId && u.EndDate >= DateTime.Now && u.StartDate <= DateTime.Now);
 | |
| 
 | |
|             return ResponseOutput.Result(count > 0);
 | |
|         }
 | |
| 
 | |
|     }
 | |
| }
 |