Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        public async Task <List <ApproverActivityProjection> > GetApproverAtivityProjection([FromQuery] ApproverActivityFilterCriteria filterCriteria)
        {
            var query = new GetApproverActicityProjectionQuery
            {
                FilterCriteria = filterCriteria,
            };

            var result = _queryProcessor.Process(query);

            return(await result);
        }