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(_mapper.ConfigurationProvider).FirstOrDefault(); return doctorScientificResearchInfo; } public IResponseOutput AddOrUpdateResearchPublication(ResearchPublicationDTO param) { if (param.Id == Guid.Empty|| param.Id == null) { var doctorScientificResearchInfo = _mapper.Map(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); } } } }