Пример #1
0
        public void ProjectNotificationFilter_Base_IsValid()
        {
            // Arrange
            var filter = new ProjectNotificationFilter();

            // Act
            var result = filter.IsValid();

            // Assert
            result.Should().BeTrue();
        }
Пример #2
0
        public void ProjectNotificationFilter_False()
        {
            // Arrange
            var query  = Microsoft.AspNetCore.WebUtilities.QueryHelpers.ParseQuery("?page=0");
            var filter = new ProjectNotificationFilter(query);

            // Act
            var result = filter.IsValid();

            // Assert
            result.Should().BeFalse();
        }
Пример #3
0
        public async Task <IActionResult> GetProjectNotificationsAsync(ProjectNotificationFilter filter)
        {
            var page = _pimsService.Project.GetNotificationsInQueue(filter);

            foreach (var notification in page.Items.Where(n => n.ChesMessageId.HasValue && n.Status.In(NotificationStatus.Accepted, NotificationStatus.Pending)))
            {
                var response = await _notifyService.GetStatusAsync(notification.ChesMessageId.Value);

                notification.Status = (Entity.NotificationStatus)Enum.Parse(typeof(Entity.NotificationStatus), response.Status, true);
            }
            _pimsService.NotificationQueue.Update(page);

            return(new JsonResult(_mapper.Map <PageModel <NModel.NotificationQueueModel> >(page)));
        }
Пример #4
0
        public void ProjectNotificationFilter_Default_Constructor()
        {
            // Arrange
            // Act
            var filter = new ProjectNotificationFilter();

            // Assert
            filter.Page.Should().Be(1);
            filter.Quantity.Should().Be(10);
            filter.ProjectNumber.Should().BeNull();
            filter.ProjectId.Should().BeNull();
            filter.AgencyId.Should().BeNull();
            filter.Tag.Should().BeNull();
            filter.Status.Should().BeNull();
            filter.To.Should().BeNull();
            filter.Subject.Should().BeNull();
        }
Пример #5
0
        /// <summary>
        /// Get all the notifications in the queue for the specified project 'filter'.
        /// </summary>
        /// <param name="id"></param>
        /// <param name="status"></param>
        /// <returns></returns>
        public Paged <NotificationQueue> GetNotificationsInQueue(ProjectNotificationFilter filter)
        {
            var query = this.Context.NotificationQueue
                        .AsNoTracking();

            if (filter.ProjectId.HasValue)
            {
                query = query.Where(n => n.ProjectId == filter.ProjectId);
            }

            if (filter.AgencyId.HasValue)
            {
                query = query.Where(n => n.ToAgencyId == filter.AgencyId);
            }

            if (!String.IsNullOrWhiteSpace(filter.ProjectNumber))
            {
                query = query.Where(n => n.Project.ProjectNumber == filter.ProjectNumber);
            }

            if (!String.IsNullOrWhiteSpace(filter.To))
            {
                query = query.Where(n => EF.Functions.Like(n.To, $"%{filter.To}%"));
            }

            if (!String.IsNullOrWhiteSpace(filter.Tag))
            {
                query = query.Where(n => EF.Functions.Like(n.Tag, $"%{filter.Tag}%"));
            }

            if (filter.Status?.Any() ?? false)
            {
                query = query.Where(n => filter.Status.Contains(n.Status));
            }

            var total = query.Count();
            var items = query
                        .Skip((filter.Page - 1) * filter.Quantity)
                        .Take(filter.Quantity)
                        .ToArray();

            return(new Paged <NotificationQueue>(items, filter.Page, filter.Quantity, total));
        }
Пример #6
0
        public void ProjectNotificationFilter_Constructor_01()
        {
            // Arrange
            var query = Microsoft.AspNetCore.WebUtilities.QueryHelpers.ParseQuery("?page=2&quantity=3&projectNumber=234&projectId=34&agencyId=3&tag=tag&status=3,4&to=to&subject=subject&sort=one,two");

            // Act
            var filter = new ProjectNotificationFilter(query);

            // Assert
            filter.Page.Should().Be(2);
            filter.Quantity.Should().Be(3);
            filter.ProjectNumber.Should().Be("234");
            filter.ProjectId.Should().Be(34);
            filter.AgencyId.Should().Be(3);
            filter.Tag.Should().Be("tag");
            filter.Status.Should().BeEquivalentTo(new[] { NotificationStatus.Failed, NotificationStatus.Completed });
            filter.To.Should().Be("to");
            filter.Subject.Should().Be("subject");
        }