public IActionResult Reaction(int postId, [FromBody] ReactionModels reaction) { reaction.MessageID = postId; var prevReaction = _context.Reaction.Where(x => x.Profile == reaction.ProfileID && x.Message == reaction.MessageID).FirstOrDefault(); var stringValue = prevReaction == null ? "" : Reactions.ConvertToString(prevReaction.LikeOrDislike); if (reaction.ProfileID != 0 && reaction.MessageID != 0) { var react = new Reaction(); var userReactions = _context.Reaction .Where(r => r.Profile == reaction.ProfileID && r.Message == reaction.MessageID) .Count(); react.Message = reaction.MessageID; react.Profile = reaction.ProfileID; if (reaction.LikeOrDislike == "Like") { react.LikeOrDislike = true; } else if (reaction.LikeOrDislike == "DisLike") { react.LikeOrDislike = false; } if (userReactions < 1) { _context.Reaction.Add(react); } else if (reaction.LikeOrDislike == stringValue) { _context.Remove(prevReaction); } else if (reaction.LikeOrDislike != stringValue) { _context.Reaction.Remove(prevReaction); _context.Add(react); } else { return(BadRequest("Cannont give same reaction twice.")); } _context.SaveChanges(); var likes = _context.Reaction.Where(l => l.LikeOrDislike == Reactions.Like && l.Message == reaction.MessageID).Count(); var dislikes = _context.Reaction.Where(l => l.LikeOrDislike == Reactions.DisLike && l.Message == reaction.MessageID).Count(); return(Ok(new { likes, dislikes })); } return(BadRequest("Data is missing from the request.")); }