Ejemplo n.º 1
0
        public RequestIndexViewModel GetRequestIndexModelView(RequestsFilterOptions filterOptions, IQueryable <Request> filteredRequests)
        {
            if (filterOptions.SortField == null)
            {
                filterOptions.SortField     = "IdRequest";
                filterOptions.SortDirection = SortDirection.Desc;
            }
            var minSqlDateTimeValue = new DateTime(1753, 1, 1, 12, 0, 0);

            if (filterOptions.DateOfFillingFrom != null && filterOptions.DateOfFillingFrom < minSqlDateTimeValue)
            {
                filterOptions.DateOfFillingFrom = minSqlDateTimeValue;
            }
            if (filterOptions.DateOfFillingTo != null && filterOptions.DateOfFillingTo < minSqlDateTimeValue)
            {
                filterOptions.DateOfFillingTo = minSqlDateTimeValue;
            }
            var requests = GetVisibleRequests(filterOptions, filteredRequests).ToList();

            if (!requests.Any())
            {
                filterOptions.PageIndex = 0;
                requests = GetVisibleRequests(filterOptions, filteredRequests).ToList();
            }
            return(new RequestIndexViewModel
            {
                VisibleRequests = requests,
                FilterOptions = filterOptions,
                RequestCount = filteredRequests.Count(),
                RequestStateTypes = RequestsRepository.GetRequestStateTypes(),
                RequestTypes = RequestsRepository.GetRequestTypes(),
                RequestCatogories = GetRequestCategories()
            });
        }
Ejemplo n.º 2
0
 public IQueryable <Request> GetVisibleRequests(RequestsFilterOptions filterOptions,
                                                IQueryable <Request> filteredRequests)
 {
     return(Order(filteredRequests, filterOptions.SortField, filterOptions.SortDirection).
            Skip(filterOptions.PageSize * filterOptions.PageIndex).
            Take(filterOptions.PageSize));
 }
Ejemplo n.º 3
0
 public ActionResult GetDataTable(RequestsFilterOptions filterOptions)
 {
     if (!_securityService.CanRead())
     {
         return(RedirectToAction("ForbiddenError", "Home"));
     }
     ViewData["SecurityService"] = _securityService;
     ViewData["RequestService"]  = _requestService;
     return(PartialView("DataTable",
                        _requestService.GetRequestIndexModelView(filterOptions,
                                                                 _requestService.GetFilteredRequests(filterOptions))));
 }
Ejemplo n.º 4
0
        public IQueryable <Request> GetFilteredRequests(RequestsFilterOptions filterOptions)
        {
            var requests = RequestSecurityService.FilterRequests(RequestsRepository.GetRequests());

            if (filterOptions.IdRequestType != null)
            {
                requests = requests.Where(r => r.IdRequestType == filterOptions.IdRequestType);
            }
            if (filterOptions.IdRequestStateType != null)
            {
                requests = requests.Where(r => r.IdCurrentRequestStateType == filterOptions.IdRequestStateType);
            }
            if (filterOptions.RequestCategory == RequestCategory.MyRequests)
            {
                requests = requests.Where(r => r.User.Login == RequestSecurityService.CurrentUser);
            }
            if (filterOptions.RequestCategory == RequestCategory.AssignedToMeRequests)
            {
                requests = requests.Where(r => r.RequestExecutors.Any(re => re.Login == RequestSecurityService.CurrentUser));
            }
            if (filterOptions.DateOfFillingFrom != null)
            {
                requests = requests.Where(r =>
                                          r.RequestStates.OrderBy(rs => rs.IdRequestState).FirstOrDefault(rs => !rs.Deleted).Date >=
                                          filterOptions.DateOfFillingFrom);
            }
            if (filterOptions.DateOfFillingTo != null)
            {
                requests = requests.Where(r =>
                                          r.RequestStates.OrderBy(rs => rs.IdRequestState).FirstOrDefault(rs => !rs.Deleted).Date <=
                                          filterOptions.DateOfFillingTo);
            }
            if (filterOptions.RequestCategory == RequestCategory.NotSeenRequests)
            {
                requests = requests.Intersect(GetNotSeenRequests());
            }
            if (string.IsNullOrEmpty(filterOptions.Filter))
            {
                return(requests);
            }
            var filter = filterOptions.Filter.ToLower();

            return(requests.Where(r => r.IdRequest.ToString().ToLower().Contains(filter) ||
                                  r.User.Snp.ToLower().Contains(filter) ||
                                  r.CurrentRequestStateType.Name.ToLower().Contains(filter) ||
                                  r.RequestType.Name.ToLower().Contains(filter) ||
                                  (r.Description != null && r.Description.ToLower().Contains(filter))));
        }