Esempio n. 1
0
        public ActionResult Index(CustomerFiltering filter, int page = 1)
        {
            var viewModel = new CustomerViewModel();

            viewModel.Filter = filter ?? new CustomerFiltering();

            viewModel.Customers  = _customerService.GetForView(viewModel.Filter, page, pageSize);
            viewModel.GenderList = viewModel.Filter.Gender.ToLocalisedSelectItem().Select(x => new SelectListItem {
                Text = x.Text, Value = x.Value, Selected = false
            }).ToList();

            return(View(viewModel));
        }
Esempio n. 2
0
 public ActionResult Index(CustomerFiltering model)
 {
     return(RedirectToAction("Index", new
     {
         model.CustomerId,
         model.Name,
         BirthDayFrom = model.BirthDayFrom.UrlDate(),
         BirthDayTo = model.BirthDayTo.UrlDate(),
         model.Gender,
         model.QuantityRequest,
         model.Sorting
     }));
 }
Esempio n. 3
0
 public CustomerViewModel()
 {
     Filter = new CustomerFiltering();
 }
Esempio n. 4
0
        public IPagedList <Customer> GetForView(CustomerFiltering customerFiltering, int page, int itemsPerPage)
        {
            var customers = db.Customer.AsNoTracking().AsQueryable();

            #region filter

            List <string> trackEvent = new List <string>();

            if (customerFiltering.CustomerId > 0)
            {
                trackEvent.Add(ETrackEvent.Filter_CustomerId.ToString());
                customers = customers.Where(x => x.Id == customerFiltering.CustomerId);
            }

            if (!string.IsNullOrEmpty(customerFiltering.Name))
            {
                trackEvent.Add(ETrackEvent.Filter_Name.ToString());
                customers = customers.Where(x => x.Name.Contains(customerFiltering.Name));
            }

            if (customerFiltering.BirthDayFrom.HasValue && customerFiltering.BirthDayTo.HasValue)
            {
                trackEvent.Add(ETrackEvent.Filter_BirthDay.ToString());
                customers = customers.Where(x => x.BirthDay >= customerFiltering.BirthDayFrom.Value && x.BirthDay <= customerFiltering.BirthDayTo);
            }

            if (customerFiltering.Gender.HasValue)
            {
                trackEvent.Add(ETrackEvent.Filter_Gender.ToString());
                customers = customers.Where(x => x.Gender == customerFiltering.Gender);
            }

            if (customerFiltering.QuantityRequest > 0)
            {
                trackEvent.Add(ETrackEvent.Filter_QuantityRequest.ToString());
                customers = customers.Where(x => x.QuantityRequest > customerFiltering.QuantityRequest);
            }

            #endregion

            #region sort order

            switch (customerFiltering.Sorting)
            {
            case ESortOrder.AscByCustomerId:
            {
                trackEvent.Add(ETrackEvent.Sort_Asc_CustomerId.ToString());
                customers = customers.OrderBy(x => x.Id);
                break;
            }

            case ESortOrder.DescByCustomerId:
            {
                trackEvent.Add(ETrackEvent.Sort_Desc_CustomerId.ToString());
                customers = customers.OrderByDescending(x => x.Id);
                break;
            }

            case ESortOrder.AscByName:
            {
                trackEvent.Add(ETrackEvent.Sort_Asc_Name.ToString());
                customers = customers.OrderBy(x => x.Name);
                break;
            }

            case ESortOrder.DescByName:
            {
                trackEvent.Add(ETrackEvent.Sort_Desc_Name.ToString());
                customers = customers.OrderByDescending(x => x.Name);
                break;
            }

            case ESortOrder.AscByBirthDay:
            {
                trackEvent.Add(ETrackEvent.Sort_Asc_BirthDay.ToString());
                customers = customers.OrderBy(x => x.BirthDay);
                break;
            }

            case ESortOrder.DescByBirthDay:
            {
                trackEvent.Add(ETrackEvent.Sort_Desc_BirthDay.ToString());
                customers = customers.OrderByDescending(x => x.BirthDay);
                break;
            }

            case ESortOrder.AscByGender:
            {
                trackEvent.Add(ETrackEvent.Sort_Asc_Gender.ToString());
                customers = customers.OrderBy(x => x.Gender);
                break;
            }

            case ESortOrder.DescByGender:
            {
                trackEvent.Add(ETrackEvent.Sort_Desc_Gender.ToString());
                customers = customers.OrderByDescending(x => x.Gender);
                break;
            }

            case ESortOrder.AscByQuantityRequest:
            {
                trackEvent.Add(ETrackEvent.Sort_Asc_QuantityRequest.ToString());
                customers = customers.OrderBy(x => x.QuantityRequest);
                break;
            }

            case ESortOrder.DescByQuantityRequest:
            {
                trackEvent.Add(ETrackEvent.Sort_Desc_QuantityRequest.ToString());
                customers = customers.OrderByDescending(x => x.QuantityRequest);
                break;
            }

            default:
                customers = customers.OrderBy(x => x.Id);
                break;
            }

            #endregion

            if (trackEvent.Any())
            {
                _trackService.TrackEvents(trackEvent);
            }

            return(customers.ToPagedList(page, itemsPerPage));
        }