public async Task ToggleLikeAsync(AddLikeDto addLikeDto, UserAndOrganizationDto userOrg) { await _postDeleteLock.WaitAsync(); try { var post = await _postsDbSet .Include(x => x.Wall) .FirstOrDefaultAsync(x => x.Id == addLikeDto.Id && x.Wall.OrganizationId == userOrg.OrganizationId); if (post == null) { throw new ValidationException(ErrorCodes.ContentDoesNotExist, "Post does not exist"); } var like = post.Likes.FirstOrDefault(x => x.UserId == userOrg.UserId); if (like == null) { post.Likes.Add(new Like(userOrg.UserId, addLikeDto.Type)); } else { post.Likes.Remove(like); } await _uow.SaveChangesAsync(userOrg.UserId); } finally { _postDeleteLock.Release(); } }
public async Task <CommandResult> AddLike(AddLikeDto addLikeDto) { if (addLikeDto is null) { return(new CommandResult(new ErrorMessage { ErrorCode = "CATALOG.LIKE.ADD.NULL", Message = "Please send valid information", StatusCode = System.Net.HttpStatusCode.BadRequest, })); } var(login, user) = await _userDataManager.AddCurrentUserIfNeeded(); if (user?.UserId is null) { return(new CommandResult(new ErrorMessage { ErrorCode = "CATALOG.LIKE.ADD.UNAUTHORIZED", Message = "You are not authorized to execute this request", StatusCode = System.Net.HttpStatusCode.Unauthorized, })); } var @object = _objectsRepo.Get(addLikeDto.ObjectId); if (@object is null || @object.ObjectStatus != ObjectStatus.Available) { return(new CommandResult(new ErrorMessage { ErrorCode = "CATALOG.LIKE.ADD.UNAVAILABLE", Message = "This object is unavailable", StatusCode = System.Net.HttpStatusCode.BadRequest, })); } var previousLikes = _likesRepo.Table.Where(ol => ol.Login.UserId == user.UserId && ol.ObjectId == addLikeDto.ObjectId).ToList(); if (!previousLikes.IsNullOrEmpty()) { return(new CommandResult(new ErrorMessage { ErrorCode = "CATALOG.LIKE.ADD.ALREADY.LIKED", Message = "You already liked this object", StatusCode = System.Net.HttpStatusCode.BadRequest, })); } _likesRepo.Add(new ObjectLike { LikedAtUtc = DateTime.UtcNow, ObjectLikeId = Guid.NewGuid(), LoginId = login.LoginId, ObjectId = addLikeDto.ObjectId }); await _likesRepo.SaveChangesAsync(); return(new CommandResult()); }
public static Likes AddLikeDTOtoLike(AddLikeDto like, Likes addLike) { addLike.UserId = like.UserId; addLike.PostId = like.PostId; addLike.DateCreated = DateTime.Now; return(addLike); }
public async Task <IActionResult> RemoveLike([FromBody] AddLikeDto removeLikeDto) { var result = await _likeService.Unlike(removeLikeDto); return(StatusCode(result, new { Message = "Like has been removed." })); }
public async Task <IActionResult> AddLike([FromBody] AddLikeDto addLikeDto) { var result = await _likeAdder.AddLike(addLikeDto); return(StatusCode(result, new { Message = "Like has been added." })); }
public IActionResult LikeComment(int id) { // if (_user != null) // { // if (!like.Any(l => l.LikedById == _user.Id) && comment.AvatarId == id) // { // addLike.CommentId = id; // addLike.LikedById = _user.Id; // var mappedLike = _mapper.Map<LikeEntity>(addLike); // if (await _ctx.AddOrRemoveLike(mappedLike)) // { // return Ok($"Comment: {id} was liked by {_user.Name}"); // } // return BadRequest($"Comment: {id} has already been liked by {_user.Name}."); // } // return BadRequest($"No like was added to comment: {id}."); // } // return NotFound("No User has Logged in."); if (_user != null) { var addLike = new AddLikeDto(); var comment = _ctx.GetCommentById(id); if (comment == null) { NotFound($"No comment has been found with id {id}"); } var like = comment.Likes.ToList(); if (!like.Any(v => v.LikedById == _user.Id)) { addLike.CommentId = id; addLike.LikedById = _user.Id; var mappedLike = _mapper.Map <LikeEntity>(addLike); if (_ctx.AddOrRemoveLike(mappedLike)) { return(Ok($"An LIKE has been ADDED on comment:{id} by {_user.Name}")); } } if (like.Any(v => v.LikedById == _user.Id)) { var result = like.FirstOrDefault(c => c.LikedById == _user.Id); if (_ctx.AddOrRemoveLike(result, _user.Id)) { return(Ok($"A like has been REMOVED on comment:{id} by {_user.Name}")); } return(NotFound("No LIKE was found for REMOVAL.")); } return(BadRequest($"You have already LIKED comment: {id}.")); } return(Unauthorized(Message("unautherized"))); }
public async Task <CommandResult> Unlike(AddLikeDto removeLikeDto) { if (removeLikeDto is null) { return(new CommandResult(new ErrorMessage { ErrorCode = "CATALOG.LIKE.ADD.NULL", Message = "Please send valid information", StatusCode = System.Net.HttpStatusCode.BadRequest, })); } var(login, user) = await _userDataManager.AddCurrentUserIfNeeded(); if (user?.UserId is null) { return(new CommandResult(new ErrorMessage { ErrorCode = "CATALOG.LIKE.REMOVE.UNAUTHORIZED", Message = "You are not authorized to execute this request", StatusCode = System.Net.HttpStatusCode.Unauthorized, })); } var @object = _objectsRepo.Get(removeLikeDto.ObjectId); if (@object is null || @object.ObjectStatus != ObjectStatus.Available) { return(new CommandResult(new ErrorMessage { ErrorCode = "CATALOG.LIKE.REMOVE.UNAVAILABLE", Message = "This object is unavailable", StatusCode = System.Net.HttpStatusCode.BadRequest, })); } var previousLikes = _likesRepo.Table.Where(ol => ol.Login.UserId == user.UserId && ol.ObjectId == removeLikeDto.ObjectId).ToList(); if (previousLikes.IsNullOrEmpty()) { return(new CommandResult(new ErrorMessage { ErrorCode = "CATALOG.LIKE.REMOVE.NO.PREVIOUS.LIKE", Message = "You have not liked this object before", StatusCode = System.Net.HttpStatusCode.BadRequest, })); } _likesRepo.Delete(previousLikes.SingleOrDefault()); await _likesRepo.SaveChangesAsync(); return(new CommandResult()); }
public void AddLike(AddLikeDto like) { var addLike = new Likes(); var existingLike = _likesRepository.GetFirstWhere(x => x.UserId == like.UserId && x.PostId == like.PostId); if (existingLike != null) { throw new FlowException("Like already exists!"); } addLike = DTOtoModel.AddLikeDTOtoLike(like, addLike); _likesRepository.Add(addLike); _likesRepository.SaveEntities(); }
public ActionResult AddLike(AddLikeDto like) { try { _likesService.AddLike(like); } catch (FlowException ex) { return(BadRequest(ex.Message)); } catch (Exception) { return(StatusCode(500, "An error has occured!Try again later!")); } return(CreatedAtAction("AddLike", like)); }
public async Task ToggleLikeAsync(AddLikeDto addLikeDto, UserAndOrganizationDto userOrg) { var comment = await _commentsDbSet .Include(x => x.Post.Wall) .FirstOrDefaultAsync(x => x.Id == addLikeDto.Id && x.Post.Wall.OrganizationId == userOrg.OrganizationId); if (comment == null) { throw new ValidationException(ErrorCodes.ContentDoesNotExist, "Comment does not exist"); } var like = comment.Likes.FirstOrDefault(x => x.UserId == userOrg.UserId); if (like == null) { comment.Likes.Add(new Like(userOrg.UserId, addLikeDto.Type)); } else { comment.Likes.Remove(like); } await _uow.SaveChangesAsync(userOrg.UserId); }