public async Task <ServiceResponse <PagedUserMessageDto> > GetUnreadMessages(ReadUserMessageDto model) { try { var validator = new ReadMessageValidator(); var validationResult = await validator.ValidateAsync(model); if (!validationResult.IsValid) { return(new ServiceResponse <PagedUserMessageDto> { Success = false, Message = "Model validation errors!", Errors = GetValidationErrors(validationResult) }); } var startIndex = (model.Page - 1) * model.PerPage; var userMessages = await _messageRepository.Get(x => (x.FromUser == model.Name || x.ToUser == model.Name) && !x.IsRead); var count = userMessages.Count; var messages = MapUserMessageData(userMessages.Skip(startIndex).Take(model.PerPage).ToList()); var totalPages = Convert.ToInt32(Math.Ceiling((double)count / model.PerPage)); var returnData = new PagedUserMessageDto { CurrentPage = model.Page, PerPage = model.PerPage, TotalPage = totalPages, Messages = messages }; await MarkAsReadMessages(userMessages); await LogAudit(AuditTypes.MessageRead, model.Name, nameof(MessageService)); return(new ServiceResponse <PagedUserMessageDto> { Success = true, Data = returnData, Message = "Messages listed successfully." }); } catch (Exception ex) { await LogError(ex); return(new ServiceResponse <PagedUserMessageDto> { Success = false, Message = Constants.DefaultErrorMessage }); } }
public async Task GetAllMessages_GivenInvalidModel_ReturnsErrorMessage(ReadUserMessageDto data) { var service = new MessageService(_userRepository.Object, _messageRepository.Object, _errorRepository.Object, _auditRepository.Object); var result = await service.GetAllMessages(data); Assert.False(result.Success); Assert.Null(result.Data); Assert.NotNull(result.Errors); Assert.Equal("Model validation errors!", result.Message); }
public async Task GetUnreadMessages_GivenValidModel_ReturnsSuccess(IQueryable <Message> messages, ReadUserMessageDto data) { _messageRepository.Setup(c => c.Get(It.IsAny <Expression <Func <Message, bool> > >())).ReturnsAsync( (Expression <Func <Message, bool> > predicate) => messages.Where(predicate).ToList()); var service = new MessageService(_userRepository.Object, _messageRepository.Object, _errorRepository.Object, _auditRepository.Object); var result = await service.GetUnreadMessages(data); Assert.True(result.Success); Assert.NotNull(result.Data); Assert.Null(result.Errors); Assert.Equal("Messages listed successfully.", result.Message); }