using AutoMapper; using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Tsi1.BusinessLayer.Dtos; using Tsi1.BusinessLayer.Helpers; using Tsi1.BusinessLayer.Interfaces; using Tsi1.DataLayer; using Tsi1.DataLayer.Entities; namespace Tsi1.BusinessLayer.Services { public class PostMessageService : IPostMessageService { private readonly Tsi1Context _context; private readonly IMapper _mapper; public PostMessageService(Tsi1Context context, IMapper mapper) { _context = context; _mapper = mapper; } public async Task<ServiceResult<PostMessage>> Create(PostMessageCreateDto newPostMessage) { var result = new ServiceResult<PostMessage>(); var postMessage = _mapper.Map<PostMessage>(newPostMessage); postMessage.Date = DateTime.Now; _context.PostMessages.Add(postMessage); await _context.SaveChangesAsync(); result.Data = postMessage; return result; } public async Task<ServiceResult<PostMessage>> Delete(int postMessageId) { var result = new ServiceResult<PostMessage>(); var postMessage = await _context.PostMessages .FirstOrDefaultAsync(x => x.Id == postMessageId); if (postMessage == null) { result.HasError = true; result.Message = string.Format(ErrorMessages.PostMessageDoesNotExist, postMessageId); return result; } _context.PostMessages.Remove(postMessage); await _context.SaveChangesAsync(); return result; } public async Task<ServiceResult<List<PostMessagePreviewDto>>> GetPostMessages(int postId) { var result = new ServiceResult<List<PostMessagePreviewDto>>(); var postMessages = await _context.PostMessages .Where(x => x.PostId == postId) .ToListAsync(); var postMessageDtos = _mapper.Map<List<PostMessagePreviewDto>>(postMessages); result.Data = postMessageDtos; return result; } } }