Beispiel #1
0
        public ActionResult Default()
        {
            vmSearchApplication vmSearchApplication = new vmSearchApplication();

            //Search date from start of previous month
            var      now = DateTime.Now.Date;
            DateTime dtStartSearchDateFrom = new DateTime(now.Year, now.Month, 1).AddMonths(-1).Date;

            vmSearchApplication.ApplicationSubmittedSearchDateFrom = dtStartSearchDateFrom;

            vmSearchApplication.ApplicationList = FilterApplicationList(vmSearchApplication);
            return(View(vmSearchApplication));
        }
Beispiel #2
0
        private List <vmApplication> FilterApplicationList(vmSearchApplication vmSearchApplication)
        {
            Func <string, List <string> > splitString
                = x =>
                {
                List <string> result = new List <string>();
                if (!String.IsNullOrWhiteSpace(x))
                {
                    result = x.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries).ToList();
                    //result.ForEach(e => e.Trim());
                }

                return(result);
                };

            //We are searching for these needles.
            List <string> nameSearchList = splitString(vmSearchApplication.NameSearch);

            Predicate <vmApplication> filter =
                app
                =>
            {
                bool nameSearch = String.IsNullOrWhiteSpace(vmSearchApplication.NameSearch) ||
                                  nameSearchList.All(e => String.Concat(app.ApplicantName, app.StallBusinessName).ToLower().Contains(e));


                bool eventNameSearch = String.IsNullOrWhiteSpace(vmSearchApplication.EventNameSearch) ||
                                       splitString(vmSearchApplication.EventNameSearch).All(e => app.EventName.ToLower().Contains(e));


                bool foodType = String.IsNullOrWhiteSpace(vmSearchApplication.FoodTypeSearch) ||
                                ((String.IsNullOrWhiteSpace(app.TypeOfFood) && (vmSearchApplication.FoodTypeSearch == null))) ||         //Can't search on food type if it is null
                                ((app.TypeOfFood != null) && (splitString(vmSearchApplication.FoodTypeSearch)).All(e => app.TypeOfFood.ToLower().Contains(e)));

                DateTime?searchSubmissionDateStart = vmSearchApplication.ApplicationSubmittedSearchDateFrom;


                bool searchSubmissionDate = (
                    //No start date and no end date

                    (!vmSearchApplication.ApplicationSubmittedSearchDateFrom.HasValue &&
                     (!vmSearchApplication.ApplicationSubmittedSearchDateTo.HasValue)
                    )



                    //Start date but no end date
                    ||
                    (
                        vmSearchApplication.ApplicationSubmittedSearchDateFrom.HasValue &&
                        (!vmSearchApplication.ApplicationSubmittedSearchDateTo.HasValue) &&
                        (app.SubmittedDate >= vmSearchApplication.ApplicationSubmittedSearchDateFrom.Value)
                    )
                    //No start date but has end date
                    ||
                    (
                        (!vmSearchApplication.ApplicationSubmittedSearchDateFrom.HasValue) &&
                        (vmSearchApplication.ApplicationSubmittedSearchDateTo.HasValue) &&
                        app.SubmittedDate <= vmSearchApplication.ApplicationSubmittedSearchDateTo.Value

                    )
                    //Start ddate and end date
                    ||
                    (
                        (vmSearchApplication.ApplicationSubmittedSearchDateFrom.HasValue) &&
                        (vmSearchApplication.ApplicationSubmittedSearchDateTo.HasValue)

                        && (app.SubmittedDate >= vmSearchApplication.ApplicationSubmittedSearchDateFrom.Value) &&
                        (app.SubmittedDate <= vmSearchApplication.ApplicationSubmittedSearchDateTo.Value)
                    )
                    );


                bool searchStallDate = (
                    //No start date and no end date

                    (!vmSearchApplication.StallSearchDateFrom.HasValue &&
                     (!vmSearchApplication.StallSearchDateTo.HasValue)
                    )



                    //Start date but no end date
                    ||
                    (
                        vmSearchApplication.StallSearchDateFrom.HasValue &&
                        (!vmSearchApplication.StallSearchDateTo.HasValue) &&
                        (app.EventStartDate >= vmSearchApplication.StallSearchDateFrom.Value)
                    )
                    //No start date but has end date
                    ||
                    (
                        (!vmSearchApplication.StallSearchDateFrom.HasValue) &&
                        (vmSearchApplication.StallSearchDateTo.HasValue) &&
                        app.EventStartDate <= vmSearchApplication.StallSearchDateTo.Value

                    )
                    //Start ddate and end date
                    ||
                    (
                        (vmSearchApplication.StallSearchDateFrom.HasValue) &&
                        (vmSearchApplication.StallSearchDateTo.HasValue)

                        && (app.EventStartDate >= vmSearchApplication.StallSearchDateFrom.Value) &&
                        (app.EventStartDate <= vmSearchApplication.StallSearchDateTo.Value)
                    )
                    );


                return(nameSearch && eventNameSearch && foodType && searchSubmissionDate && searchStallDate);
            };



            return(db.Applications.Where(e => e.AppID != null).Select(e => new vmApplication()
            {
                ApplicantName = e.ApplicantDetails.ApplicantName,
                ApplicationId = e.AppID.Value,
                EventName = e.EventDetails.EventName,
                EventStartDate = e.EventDetails.EventStartDate.HasValue ? e.EventDetails.EventStartDate.Value : e.SubmittedDate.Value,
                //EventStartDate = e.EventDetails.EventStartDate,
                StallBusinessName = e.StallDetails.StallBusinessName,
                SubmittedDate = e.SubmittedDate.Value,
                TypeOfFood = e.FoodDetails.FoodDetailsTypeOfFood
            }).ToList()
                   .Where(e => filter(e))
                   .ToList());
        }
Beispiel #3
0
 public ActionResult Default(vmSearchApplication vmSearchApplication)
 {
     vmSearchApplication.ApplicationList = FilterApplicationList(vmSearchApplication);
     return(View(vmSearchApplication));
 }