コード例 #1
0
        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."));
        }