public void ProjectNotificationFilter_Base_IsValid() { // Arrange var filter = new ProjectNotificationFilter(); // Act var result = filter.IsValid(); // Assert result.Should().BeTrue(); }
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(); }
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))); }
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(); }
/// <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)); }
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"); }