CostCalculationItem/IRaCIS.Core.Application/Doctor/ResearchPublicationService.cs

61 lines
2.2 KiB
C#

using AutoMapper;
using AutoMapper.QueryableExtensions;
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 System;
using System.Linq;
namespace IRaCIS.Application.Services
{
public class ResearchPublicationService : IResearchPublicationService
{
private readonly IResearchPublicationRepository _researchPublicationRepository;
private readonly IMapper _mapper;
public ResearchPublicationService(IResearchPublicationRepository scientificResearchRepository,IMapper mapper)
{
_researchPublicationRepository = scientificResearchRepository;
_mapper = mapper;
}
public ResearchPublicationDTO GetResearchPublication(Guid doctorId)
{
var doctorScientificResearchInfo = _researchPublicationRepository.Find(o => o.DoctorId == doctorId)
.ProjectTo<ResearchPublicationDTO>(_mapper.ConfigurationProvider).FirstOrDefault();
return doctorScientificResearchInfo;
}
public IResponseOutput AddOrUpdateResearchPublication(ResearchPublicationDTO param)
{
if (param.Id == Guid.Empty|| param.Id == null)
{
var doctorScientificResearchInfo =
_mapper.Map<ResearchPublication>(param);
_researchPublicationRepository.Add(doctorScientificResearchInfo);
var success = _researchPublicationRepository.SaveChanges();
return ResponseOutput.Result(success, doctorScientificResearchInfo.Id.ToString());
}
else
{
var success = _researchPublicationRepository.Update(o => o.Id == param.Id,
t => new ResearchPublication()
{
Publications = param.Publications,
AwardsHonors = param.AwardsHonors,
Research = param.Research,
Grants = param.Grants
});
return ResponseOutput.Result(success);
}
}
}
}