Guest User

Untitled

a guest
Feb 1st, 2024
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.33 KB | None | 0 0
  1. using AutoMapper;
  2. using Contracts;
  3. using Entities;
  4. using Entities.Exceptions;
  5. using Microsoft.AspNetCore.Mvc;
  6. using Service.Contracts;
  7. using Shared.DataTransferObjects;
  8.  
  9. namespace Service;
  10.  
  11. public class LikeService : ILikeService
  12. {
  13. private readonly IRepositoryManager _repository;
  14. private readonly IMapper _mapper;
  15.  
  16. public LikeService(IRepositoryManager repository, IMapper mapper)
  17. {
  18. _repository = repository;
  19. _mapper = mapper;
  20. }
  21. public async Task<IEnumerable<LikeDto>> GetLikesAsync(Guid entityId, string entityType, bool trackChanges)
  22. {
  23. var likes = await _repository.Like.GetLikesAsync(entityId, entityType, trackChanges);
  24. var likesDto = _mapper.Map<IEnumerable<LikeDto>>(likes);
  25. return likesDto;
  26. }
  27.  
  28. public async Task<LikeDto> GetLikeByIdAsync(Guid likeId, bool trackChanges)
  29. {
  30. var like = await _repository.Like.GetLikeByIdAsync(likeId, trackChanges);
  31. var likeDto = _mapper.Map<LikeDto>(like);
  32. return likeDto;
  33. }
  34.  
  35. public async Task<LikeDto> CreateLikeAsync(string userId, string displayName, LikeForCreationDto likeForCreation)
  36. {
  37. var likeEntity = _mapper.Map<Like>(likeForCreation);
  38. _repository.Like.CreateLike(userId, displayName, likeEntity);
  39. await _repository.SaveAsync();
  40.  
  41. var likeDto = _mapper.Map<LikeDto>(likeEntity);
  42. return likeDto;
  43. }
  44.  
  45. public async Task DeleteLikeAsync(Guid likeId, bool trackChanges)
  46. {
  47.  
  48. var likeEntity = await _repository.Like.GetLikeByIdAsync(likeId, trackChanges);
  49.  
  50.  
  51. _repository.Like.DeleteLike(likeEntity);
  52. await _repository.SaveAsync();
  53. }
  54.  
  55. public async Task DeleteLikeAndUpdatePostAsync(Guid likeId)
  56. {
  57. var like = await _repository.Like.GetLikeByIdAsync(likeId, trackChanges: true);
  58. if (like == null)
  59. {
  60. throw new LikeNotFoundException(likeId);
  61. }
  62.  
  63. if (like.PostId.HasValue)
  64. {
  65. var post = await _repository.Post.GetPostByIdAsync(like.PostId.Value, trackChanges: true);
  66. if (post != null)
  67. {
  68. post.LikeCount--;
  69. await _repository.SaveAsync();
  70. }
  71. }
  72.  
  73. _repository.Like.DeleteLike(like);
  74. await _repository.SaveAsync();
  75. }
  76.  
  77. }
  78.  
Add Comment
Please, Sign In to add comment