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); }
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) ))); }