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
                });
            }
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }