140 lines
5.4 KiB
C#
140 lines
5.4 KiB
C#
|
|
using IRaCIS.Application.Interfaces;
|
|
using IRaCIS.Application.Contracts;
|
|
using IRaCIS.Core.Infra.EFCore;
|
|
using IRaCIS.Core.Domain.Share;
|
|
using IRaCIS.Core.Application.Filter;
|
|
using IRaCIS.Core.Infrastructure.Extention;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
|
namespace IRaCIS.Application.Services
|
|
{
|
|
[ApiExplorerSettings(GroupName = "Reviewer")]
|
|
public class EducationService : BaseService, IEducationService
|
|
{
|
|
private readonly IRepository<Postgraduate> _postgraduateRepository;
|
|
private readonly IRepository<Education> _educationRepository;
|
|
|
|
public EducationService(IRepository<Education> doctorNormalEducationRepository,
|
|
IRepository<Postgraduate> doctorContinueLearningRepository)
|
|
{
|
|
_educationRepository = doctorNormalEducationRepository;
|
|
_postgraduateRepository = doctorContinueLearningRepository;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据医生Id获取医生教育经历和继续学习经历列表
|
|
/// </summary>
|
|
[HttpGet("{doctorId:Guid}")]
|
|
public async Task<DoctorEducationExperienceDTO> GetEducation(Guid doctorId)
|
|
{
|
|
var educationList = await _educationRepository.Where(o => o.DoctorId == doctorId)
|
|
.OrderBy(t => t.CreateTime).ProjectTo<EducationInfoViewModel>(_mapper.ConfigurationProvider).ToListAsync();
|
|
|
|
var postgraduateList = await _postgraduateRepository.Where(o => o.DoctorId == doctorId)
|
|
.OrderBy(t => t.CreateTime).ProjectTo<PostgraduateViewModel>(_mapper.ConfigurationProvider).ToListAsync();
|
|
|
|
|
|
return new DoctorEducationExperienceDTO()
|
|
{
|
|
EducationList = educationList,
|
|
PostgraduateList = postgraduateList
|
|
};
|
|
|
|
}
|
|
/// <summary>
|
|
/// 新增医生教育经历
|
|
/// </summary>
|
|
/// <param name="educationInfoViewModel"></param>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
public async Task<IResponseOutput> AddOrUpdateEducationInfo(EducationCommand educationInfoViewModel)
|
|
{
|
|
if (educationInfoViewModel.Id == Guid.Empty || educationInfoViewModel.Id == null)
|
|
{
|
|
var doctorEducationInfo = _mapper.Map<Education>(educationInfoViewModel);
|
|
switch (educationInfoViewModel.Degree)
|
|
{
|
|
case StaticData.Bachelor:
|
|
doctorEducationInfo.ShowOrder = 1;
|
|
break;
|
|
case StaticData.Master:
|
|
doctorEducationInfo.ShowOrder = 2;
|
|
break;
|
|
case StaticData.Doctorate:
|
|
doctorEducationInfo.ShowOrder = 3;
|
|
break;
|
|
}
|
|
await _educationRepository.AddAsync(doctorEducationInfo);
|
|
var success = await _repository.SaveChangesAsync();
|
|
|
|
return ResponseOutput.Result(success, doctorEducationInfo.Id.ToString());
|
|
}
|
|
|
|
else
|
|
{
|
|
var needUpdate = await _educationRepository.FirstOrDefaultAsync(t => t.Id == educationInfoViewModel.Id);
|
|
|
|
if (needUpdate == null) return Null404NotFound(needUpdate);
|
|
|
|
_mapper.Map(educationInfoViewModel, needUpdate);
|
|
|
|
var success = await _repository.SaveChangesAsync();
|
|
|
|
return ResponseOutput.Ok(success);
|
|
|
|
}
|
|
//_educationRepository.Update(needUpdate);
|
|
|
|
|
|
}
|
|
|
|
[HttpDelete, Route("{doctorId:guid}")]
|
|
public async Task<IResponseOutput> DeleteEducationInfo(Guid id)
|
|
{
|
|
var success = await _educationRepository.BatchDeleteAsync(o => o.Id == id);
|
|
|
|
return ResponseOutput.Result(success);
|
|
}
|
|
/// <summary> 添加/更新医生继续学习经历</summary>
|
|
|
|
[HttpPost]
|
|
public async Task<IResponseOutput> AddOrUpdatePostgraduateInfo(PostgraduateCommand postgraduateViewModel)
|
|
{
|
|
#region 封装前
|
|
|
|
//if (postgraduateViewModel.Id == Guid.Empty || postgraduateViewModel.Id == null)
|
|
//{
|
|
// var doctorContinueLearning = _mapper.Map<Postgraduate>(postgraduateViewModel);
|
|
// _postgraduateRepository.Add(doctorContinueLearning);
|
|
// var success = _postgraduateRepository.SaveChanges();
|
|
|
|
// return ResponseOutput.Result(success, doctorContinueLearning.Id.ToString());
|
|
//}
|
|
//else
|
|
//{
|
|
// _postgraduateRepository.Update(_mapper.Map<Postgraduate>(postgraduateViewModel));
|
|
// var success = _postgraduateRepository.SaveChanges();
|
|
|
|
// return ResponseOutput.Result(success);
|
|
|
|
//}
|
|
#endregion
|
|
|
|
var entity = await _repository.InsertOrUpdateAsync<Postgraduate, PostgraduateCommand>(postgraduateViewModel, true);
|
|
return ResponseOutput.Ok(entity.Id);
|
|
}
|
|
/// <summary>
|
|
/// 删除医生继续学习经历
|
|
/// </summary>
|
|
/// <param name="doctorId">医生Id</param>
|
|
/// <returns></returns>
|
|
|
|
[HttpDelete("{doctorId:guid}")]
|
|
public async Task<IResponseOutput> DeletePostgraduateInfo(Guid doctorId)
|
|
{
|
|
var success = await _repository.BatchDeleteAsync<Postgraduate>(o => o.Id == doctorId);
|
|
return ResponseOutput.Result(success);
|
|
}
|
|
}
|
|
} |