Esempio n. 1
0
        public async Task <IActionResult> LikeUser(int id, int recipientId)
        {
            if (id != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value))
            {
                return(Unauthorized());
            }

            var like = await _repo.GetLike(id, recipientId);

            if (like != null)
            {
                return(BadRequest("You already like this user"));
            }

            if (await _repo.GetUser(recipientId) == null)
            {
                return(NotFound());
            }

            like = new Like
            {
                LikerId = id,
                LikeeId = recipientId
            };

            if (await _repo.Add(like))
            {
                var likedUser = await _repo.GetUser(recipientId);

                var likedByUser = await _repo.GetUser(id);

                try
                {
                    await _mailer.SendLikeMail(
                        new MailUser
                    {
                        Email = likedUser.Email,
                        Name  = likedUser.Name
                    },
                        likedByUser.Name
                        );
                }
                catch (Exception)
                {
                    return(BadRequest("Successfully liked user, Unable to send email"));
                }

                return(Ok());
            }

            return(BadRequest("Failed to like user"));
        }