public async Task <IActionResult> ChangePassword([FromBody] ChangePasswordViewModel changePasswordModel)
        {
            if (ModelState.IsValid)
            {
                var isTokenValid = await _tokenValidator.IsTokenValid(Request.Headers, HttpContext);

                if (isTokenValid)
                {
                    var user = await _userManager.GetUserAsync(HttpContext.User);

                    var result = await _userManager.ChangePasswordAsync(user, changePasswordModel.OldPassword, changePasswordModel.NewPassword);

                    if (result.Succeeded)
                    {
                        return(Ok());
                    }
                }
            }

            return(BadRequest());
        }
        public async Task <bool> IsLiked(int id)
        {
            if (ModelState.IsValid)
            {
                var isTokenValid = await _tokenValidator.IsTokenValid(Request.Headers, HttpContext);

                if (isTokenValid)
                {
                    var user = await GetCurrentUser();

                    var like = await _likesRepository.GetLikeByTopicAndUser(id, user.Id);

                    if (like != null)
                    {
                        return(like.IsLiked);
                    }
                }
            }

            return(false);
        }
        public async Task <IActionResult> Post([FromBody] TopicViewModel topic)
        {
            if (ModelState.IsValid)
            {
                var isTokenValid = await _tokenValidator.IsTokenValid(Request.Headers, HttpContext);

                if (isTokenValid)
                {
                    var topicToAdd = new Topic()
                    {
                        Body = topic.Body, Name = topic.Name
                    };
                    var user = await GetCurrentUserAsync();

                    topicToAdd.CreatorId = user.Id;
                    await _topicRepository.AddTopic(topicToAdd);

                    return(Ok(topicToAdd));
                }
            }

            return(BadRequest(ModelState));
        }
        public async Task AddComment([FromBody] CommentViewModel comment)
        {
            if (ModelState.IsValid)
            {
                var isTokenValid = await _tokenValidator.IsTokenValid(Request.Headers, HttpContext);

                if (isTokenValid)
                {
                    var commentToAdd = new Comment()
                    {
                        TopicId = comment.TopicId, Text = comment.Text
                    };
                    commentToAdd.Time = DateTime.UtcNow;
                    var currentUser = await _userManager.GetUserAsync(HttpContext.User);

                    commentToAdd.UserId   = currentUser.Id;
                    commentToAdd.UserName = currentUser.UserName;
                    await _commentRepository.AddComment(commentToAdd);
                }
            }
        }