public async void given_GetApproverActicityProjectionQuery_queryprocessor_should_get_same_query_created_in_controller() { //Assemble var mockAgg = new UserControllerMockAggregate(); var input = new ApproverActivityFilterCriteria(); var query = new GetApproverActicityProjectionQuery { FilterCriteria = input }; mockAgg.setup_processor_to_verify_getApproverActivityQueries_are_the_same(); var controller = mockAgg.CreateUserController(); //Apply var result = await controller.GetApproverAtivityProjection(input); //Assert //Assert.Equal(query, mockAgg.PermissionQuery); Assert.IsType <List <ApproverActivityProjection> >(result); }
private IQueryable <ApproverActivityProjection> Filter(ApproverActivityFilterCriteria filter) { IQueryable <ApproverActivityProjection> queryable = _context.ApproverActivityProjection; if (filter.ApproverId != Guid.Empty) { queryable = queryable.Where(a => a.ApproverId == filter.ApproverId); } if (!String.IsNullOrWhiteSpace(filter.SearchTerms)) { _searchTerm = filter.SearchTerms.ToLower(); queryable = queryable.Where( a => a.ForFullName.ToLower().Contains(_searchTerm) || a.PermissionName.ToLower().Contains(_searchTerm) || a.TruncatedEventType.ToLower().Contains(_searchTerm) ); } if (filter.SortDirection.Equals("ASC")) { switch (filter.SortField) { case "ApproverID": queryable = queryable.OrderBy(a => a.ApproverId); break; case "FullName": queryable = queryable.OrderBy(a => a.ForFullName); break; case "ForID": queryable = queryable.OrderBy(a => a.ForId); break; case "PermissionName": queryable = queryable.OrderBy(a => a.PermissionName); break; case "DateCreated": queryable = queryable.OrderBy(a => a.TimeStamp); break; case "Event": queryable = queryable.OrderBy(a => a.TruncatedEventType); break; default: queryable = queryable.OrderBy(a => a.ApproverId); break; } } else { switch (filter.SortField) { case "ApproverID": queryable = queryable.OrderByDescending(a => a.ApproverId); break; case "FullName": queryable = queryable.OrderByDescending(a => a.ForFullName); break; case "ForID": queryable = queryable.OrderByDescending(a => a.ForId); break; case "PermissionName": queryable = queryable.OrderByDescending(a => a.PermissionName); break; case "DateCreated": queryable = queryable.OrderByDescending(a => a.TimeStamp); break; case "Event": queryable = queryable.OrderByDescending(a => a.TruncatedEventType); break; default: queryable = queryable.OrderByDescending(a => a.ApproverId); break; } } //Filter For Min/Max Date Range if (filter.MinDate != null && filter.MaxDate != null) { queryable = queryable.Where(a => a.TimeStamp >= filter.MinDate && a.TimeStamp <= filter.MaxDate); } //Filter For MinDate Only else if (filter.MinDate != null && filter.MaxDate == null) { queryable = queryable.Where(a => a.TimeStamp >= filter.MinDate); } //Filter For MaxDate Only else if (filter.MinDate == null && filter.MaxDate != null) { queryable = queryable.Where(a => a.TimeStamp <= filter.MaxDate); } return(queryable); }
public async Task <List <ApproverActivityProjection> > GetApproverAtivityProjection([FromQuery] ApproverActivityFilterCriteria filterCriteria) { var query = new GetApproverActicityProjectionQuery { FilterCriteria = filterCriteria, }; var result = _queryProcessor.Process(query); return(await result); }