public async Task <IActionResult> DeleteMessage(int id, int userId)
        {
            if (userId != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value))
            {
                return(Unauthorized());
            }

            var messageFromRepo = await _messagesService.GetMessage(id);

            if (messageFromRepo.SenderId == userId)
            {
                messageFromRepo.SenderDeleted = true;
            }

            if (messageFromRepo.RecipientId == userId)
            {
                messageFromRepo.RecipientDeleted = true;
            }

            if (messageFromRepo.SenderDeleted && messageFromRepo.RecipientDeleted)
            {
                _messagesService.DeleteMessage(messageFromRepo);
            }

            if (await _userService.SaveChangesInContext())
            {
                return(NoContent());
            }

            throw new Exception("Error deleting the message!");
        }
Esempio n. 2
0
        public async Task <ActionResult> DeleteMessage(DeleteMessageDto deleteMessageDto)
        {
            try
            {
                var userId = this.User.Claims.First(c => c.Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier").Value;
                await _messagesService.DeleteMessage(deleteMessageDto, userId);

                return(Ok(MessageControllerConstants.YouMessageIsDeleted));
            }
            catch (Exception ex)
            {
                _logger.Error(ex);
                return(StatusCode(StatusCodes.Status500InternalServerError, ex.Message));
            }
        }
Esempio n. 3
0
        public async Task <IActionResult> DeleteMessage(int id)
        {
            await _service.DeleteMessage(id, base.GetUserIdFromToken());

            return(NoContent());
        }