public async Task DeleteMessage(DeleteMessageDto deleteMessageDto, string userId) { if (deleteMessageDto.DeleteForAll == false && deleteMessageDto.DeleteForSender == false) { throw new ArgumentException("You need to chose at least one option"); } var message = await _unitOfWork.MessageRepository.GetByIdAsync(deleteMessageDto.MessageID); if (message == null) { throw new Exception("Message doesn't exist"); } if (message.SenderId != userId || message.DeletedForAll || message.DeletedForSender) { throw new Exception("You can't delete this message"); } using (var transaction = await _unitOfWork.BeginTransactionAsync()) { message.DeletedForAll = deleteMessageDto.DeleteForAll; message.DeletedForSender = deleteMessageDto.DeleteForSender; await _unitOfWork.CommitAsync(); await transaction.CommitAsync(); } }
public async Task <IActionResult> RemoveMessages() { var deletedDto = new DeleteMessageDto(); var messages = await _messageService.GetAllMessages(); deletedDto.Messages = DeleteMessageDto.MessageListToDto(messages); return(View(deletedDto)); }
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)); } }