public async Task <LikeItemResult> LikeItemAsync(LikeItemModel likeItemModel) { var validRes = await modelValidatorsStore.LikeItemModelValidator.ValidateAsync(likeItemModel); if (!validRes.Succeed) { return(new LikeItemResult(validRes)); } var itemLike = (await itemLikeCrudService.GetAllAsync()).FirstOrDefault(il => il.ItemId == likeItemModel.ItemId && il.UserId == likeItemModel.UserId); var result = new LikeItemResult(); if (itemLike is null) { var newLike = mapper.Map <ItemLikeModel>(likeItemModel); await itemLikeCrudService.CreateAsync(newLike); result.Result = LikeResults.Liked; } else { await itemLikeCrudService.DeleteAsync(itemLike.Id); result.Result = LikeResults.Disliked; } return(result); }
public async Task <IActionResult> LikeItem(int id) { var userId = User.FindFirstValue(ClaimTypes.NameIdentifier); int.TryParse(userId, out int requesterId); var model = new LikeItemModel { ItemId = id, UserId = requesterId }; var result = await likesManager.LikeItemAsync(model); return(Json(result)); }
public async Task SendLike(string itemId) { if (!int.TryParse(itemId, out int parsedId)) { return; } var model = new LikeItemModel { UserId = sessionHelper.GetCurrentUserId(), ItemId = parsedId }; var result = await likesManager.LikeItemAsync(model); await Clients.Group(itemId.ToString()).SendAsync("OnItemLiked", result, Context.ConnectionId); }