using AutoMapper; 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.Collections.Generic; using System.Linq; using System.Linq.Expressions; namespace IRaCIS.Application.Services { public class MessageService : IMessageService { private readonly IMessageRepository _sysMessageRepository; private readonly IMapper _mapper; public MessageService(IMessageRepository sysMessageRepository,IMapper mapper) { _sysMessageRepository = sysMessageRepository; _mapper = mapper; } public IResponseOutput DeleteSysMessage(Guid messageId) { var success= _sysMessageRepository.Delete(m => m.Id == messageId); return ResponseOutput.Result(success); } public PageOutput GetMessageList(Guid doctorId, int pageSize, int pageIndex) { Expression> sysMessageLambda = x => x.ToDoctorId == doctorId; var count = _sysMessageRepository.GetCount(sysMessageLambda); var result = _sysMessageRepository.Find(pageSize, pageIndex, false, "Id", sysMessageLambda).ToList(); return new PageOutput(pageIndex, pageSize, count, _mapper.Map>(result)); } public int GetUnReadMessageCount(Guid doctorId) { return _sysMessageRepository.GetCount(m => m.ToDoctorId == doctorId && m.HasRead == false); } public IResponseOutput MarkedAsRead(Guid messageId) { var success = _sysMessageRepository.Update(m => m.Id == messageId, u => new Message() { HasRead = true }); return ResponseOutput.Result(success); } } }