Ejemplo n.º 1
0
        private static IList <SelectListItem> CreateSelectListItems(SelectListItem firstItem, params Operators[] operators)
        {
            var items = new List <SelectListItem>();

            if (firstItem != null)
            {
                items.Add(firstItem);
            }
            foreach (var op in operators)
            {
                var item = new SelectListItem {
                    Text = AspHelpers.GetDisplayName(op), Value = op.ToString()
                };
                items.Add(item);
            }
            return(items);
        }
Ejemplo n.º 2
0
        public ActionResult Search(int?uloId, string pegasysDocumentNumber, string organization, int[] region, int[] zone, string fund, string[] baCode, string pegasysTitleNumber, string pegasysVendorName, string[] docType, string contractingOfficersName, string currentlyAssignedTo, string hasBeenAssignedTo, string awardNumber, string[] reasons, bool[] validity, string[] status, int[] reviews, bool?reassignableByMe,
                                   string sortCol = null, string sortDir = null, int?page = null, int?pageSize = null)
        {
            SetNoDataMessage(ConfigOptions.Value.NoSearchResults);
            var wfPredicate = PortalHelpers.GenerateWorkflowPredicate(this.User, uloId, pegasysDocumentNumber, organization, region, zone, fund,
                                                                      baCode, pegasysTitleNumber, pegasysVendorName, docType, contractingOfficersName, currentlyAssignedTo, hasBeenAssignedTo, awardNumber, reasons, validity, status, reviews, reassignableByMe);
            bool hasFilters = wfPredicate != null || !string.IsNullOrEmpty(Request.Query["f"]);

            if (!hasFilters)
            {
                wfPredicate = PredicateBuilder.Create <Workflow>(wf => false);
            }
            else if (wfPredicate == null)
            {
                wfPredicate = PredicateBuilder.Create <Workflow>(wf => true);
            }

            var workflows = ApplyBrowse(
                Workflows.Where(wfPredicate).AsNoTracking(),
                sortCol ?? nameof(Workflow.DueAtUtc), sortDir, page, pageSize).ToList();

            var baCodes = Cacher.FindOrCreateValue(
                Cache.CreateKey(nameof(Search), "baCodes"),
                () => DB.UnliquidatedObligations.Select(u => u.Prog).Distinct().OrderBy(p => p).ToList().AsReadOnly(),
                PortalHelpers.MediumCacheTimeout
                );

            var ReasonIncludedInReviewList = Cacher.FindOrCreateValue(
                Cache.CreateKey(nameof(Search), "ReasonIncludedInReviewList"),
                () => DB.UnliquidatedObligations.Select(u => u.ReasonIncludedInReview).Distinct().OrderBy(p => p).ToList().AsReadOnly(),
                PortalHelpers.MediumCacheTimeout
                );

            var activityNames = GetOrderedActivityNameByWorkflowName().AtomEnumerable.ConvertAll(z => z.Value).Distinct().OrderBy().ToList();


            var reviewListItems = Cacher.FindOrCreateValue(Cache.CreateKey(nameof(Search), "reviewListItems"),
                                                           () =>
                                                           DB.Reviews.OrderByDescending(r => r.ReviewId).ConvertAll(
                                                               r => new SelectListItem
            {
                Text  = $"{r.ReviewName} (#{r.ReviewId}) - {AspHelpers.GetDisplayName(r.ReviewScopeId)} - {AspHelpers.GetDisplayName(r.ReviewTypeId)}",
                Value = r.ReviewId.ToString()
            }).
                                                           ToList().
                                                           AsReadOnly(),
                                                           PortalHelpers.ShortCacheTimeout
                                                           );

            var statuses = Cacher.FindOrCreateValue(
                "AllWorkflowStatusNames",
                () =>
            {
                var names = new List <string>();
                foreach (var wd in DB.WorkflowDefinitions.Where(wfd => wfd.IsActive == true))
                {
                    names.AddRange(wd.Description.WebActionWorkflowActivities.Select(z => z.ActivityName));
                }
                return(names.Distinct().OrderBy());
            },
                PortalHelpers.MediumCacheTimeout);

            PopulateViewInfoIntoViewBag(workflows);

            return(View(
                       "~/Views/Ulo/Search/Index.cshtml",
                       new FilterViewModel(
                           workflows,
                           PortalHelpers.CreateDocumentTypeSelectListItems().SelectItems(docType),
                           PortalHelpers.CreateZoneSelectListItems().SelectItems(zone),
                           PortalHelpers.CreateRegionSelectListItems().SelectItems(region),
                           baCodes,
                           activityNames,
                           statuses,
                           ReasonIncludedInReviewList,
                           reviewListItems,
                           hasFilters,
                           new[] { new SelectListItem("Yes", "true"), new SelectListItem("No", "false") }.SelectItems(validity)
                           )));
        }