Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using AutoMapper;
- using Contracts;
- using Entities;
- using Entities.Exceptions;
- using Microsoft.AspNetCore.Http.HttpResults;
- using Service.Contracts;
- using Shared.DataTransferObjects;
- using System.Security.Claims;
- namespace Service;
- public class PostService : IPostService
- {
- private readonly IMapper _mapper;
- private readonly IRepositoryManager _repository;
- public PostService(IRepositoryManager repositoryManager, IMapper mapper)
- {
- _mapper = mapper;
- _repository = repositoryManager;
- }
- public async Task<IEnumerable<PostDto>> GetPostsAsync(string userIdClaim, bool trackChanges)
- {
- var postsFromDb = await _repository.Post.GetPostsAsync(userIdClaim, trackChanges);
- var postsDto = _mapper.Map<IEnumerable<PostDto>>(postsFromDb);
- return postsDto;
- }
- public async Task<PostDto> GetPostByIdAsync(Guid postId, bool trackChanges)
- {
- var post = await _repository.Post.GetPostByIdAsync(postId, trackChanges);
- if (post == null)
- {
- throw new PostNotFoundException(postId);
- }
- var postDto = _mapper.Map<PostDto>(post);
- return postDto;
- }
- public async Task<PostDto> CreatePostForUserAsync(string userId, string displayName, PostForCreationDto postForCreation, bool trackChanges)
- {
- var postEntity = _mapper.Map<Post>(postForCreation);
- _repository.Post.CreatePostForUser(userId, displayName, postEntity);
- await _repository.SaveAsync();
- var postToReturn = _mapper.Map<PostDto>(postEntity);
- return postToReturn;
- }
- public async Task DeletePost(Guid postId, bool trackChanges)
- {
- var post = await _repository.Post.GetPostByIdAsync(postId, trackChanges);
- if (post is null)
- {
- throw new PostNotFoundException(postId);
- }
- _repository.Post.DeletePost(post);
- await _repository.SaveAsync();
- }
- public async Task UpdateLikeCount(Guid postId, bool increment, bool trackChanges)
- {
- var post = await _repository.Post.GetPostByIdAsync(postId, trackChanges);
- if (post is null)
- {
- throw new PostNotFoundException(postId);
- }
- post.LikeCount++;
- await _repository.SaveAsync();
- //if (increment)
- //{
- //}
- //else if (!increment)
- //{
- // post.LikeCount--;
- // await _repository.SaveAsync();
- //}
- }
- }
Add Comment
Please, Sign In to add comment