Ejemplo n.º 1
0
 public ServiceSortViewModel(ServiceSortState sortOrder)
 {
     NameSort      = sortOrder == ServiceSortState.NameAsc ? ServiceSortState.NameDesc : ServiceSortState.NameAsc;
     ClientFIOSort = sortOrder == ServiceSortState.ClientFIOAsc ? ServiceSortState.ClientFIODesc : ServiceSortState.ClientFIOAsc;
     RoomTypeSort  = sortOrder == ServiceSortState.RoomTypeAsc ? ServiceSortState.RoomTypeDesc : ServiceSortState.RoomTypeAsc;
     WorkerFIOSort = sortOrder == ServiceSortState.WorkerFIOAsc ? ServiceSortState.WorkerFIODesc : ServiceSortState.WorkerFIOAsc;
     Current       = sortOrder;
 }
        // GET: Services
        public async Task <IActionResult> Index(decimal?price, string service, string serviceType, ServiceSortState sortOrder = ServiceSortState.PriceAsc)
        {
            //var dentalClinicDBContext = _context.Services.Include(s => s.ServiceType);
            //return View(await dentalClinicDBContext.ToListAsync());
            var services = _context.Services.Include(st => st.ServiceType).Select(x => x);

            //var workers = from m in _context.Workers
            //             select m;
            if (price.HasValue)
            {
                services = services.Where(w => w.Price == price);
            }
            if (!String.IsNullOrEmpty(service))
            {
                services = services.Where(w => w.Name == service);
            }
            if (!String.IsNullOrEmpty(serviceType))
            {
                services = services.Where(w => w.ServiceType.Name == serviceType);
            }

            ViewData["PriceSort"]       = sortOrder == ServiceSortState.PriceAsc ? ServiceSortState.PriceDesc : ServiceSortState.PriceAsc;
            ViewData["ServiceSort"]     = sortOrder == ServiceSortState.ServiceAsc ? ServiceSortState.ServiceDesc : ServiceSortState.ServiceAsc;
            ViewData["ServiceTypeSort"] = sortOrder == ServiceSortState.ServiceAsc ? ServiceSortState.ServiceTypeDesc : ServiceSortState.ServiceTypeAsc;

            services = sortOrder switch
            {
                ServiceSortState.PriceDesc => services.OrderByDescending(s => s.Price),
                ServiceSortState.ServiceAsc => services.OrderBy(s => s.Name),
                ServiceSortState.ServiceDesc => services.OrderByDescending(s => s.Name),
                ServiceSortState.ServiceTypeAsc => services.OrderBy(s => s.ServiceType.Name),
                ServiceSortState.ServiceTypeDesc => services.OrderByDescending(s => s.ServiceType.Name),
                _ => services.OrderBy(s => s.Price),
            };
            return(View(await services.ToListAsync()));
        }
Ejemplo n.º 3
0
        public async Task <IActionResult> Index(int?worker, string name, int page = 1, ServiceSortState sortOrder = ServiceSortState.NameAsc)
        {
            int pageSize = 5;

            //фильтрация
            IQueryable <Service> services = db.Services.Include(x => x.Client).Include(x => x.Room).Include(x => x.Worker);

            if (worker != null && worker != 0)
            {
                services = services.Where(p => p.WorkerID == worker);
            }
            if (!String.IsNullOrEmpty(name))
            {
                services = services.Where(p => p.ServiceName.Contains(name));
            }

            // сортировка
            switch (sortOrder)
            {
            case ServiceSortState.NameDesc:
                services = services.OrderByDescending(s => s.ServiceName);
                break;

            case ServiceSortState.ClientFIOAsc:
                services = services.OrderBy(s => s.Client.ClientFIO);
                break;

            case ServiceSortState.ClientFIODesc:
                services = services.OrderByDescending(s => s.Client.ClientFIO);
                break;

            case ServiceSortState.RoomTypeAsc:
                services = services.OrderBy(s => s.Room.RoomType);
                break;

            case ServiceSortState.RoomTypeDesc:
                services = services.OrderByDescending(s => s.Room.RoomType);
                break;

            case ServiceSortState.WorkerFIOAsc:
                services = services.OrderBy(s => s.Worker.WorkerFIO);
                break;

            case ServiceSortState.WorkerFIODesc:
                services = services.OrderByDescending(s => s.Worker.WorkerFIO);
                break;

            default:
                services = services.OrderBy(s => s.ServiceName);
                break;
            }

            // пагинация
            var count = await services.CountAsync();

            var items = await services.Skip((page - 1) *pageSize).Take(pageSize).ToListAsync();

            // формируем модель представления
            ServicesViewModel viewModel = new ServicesViewModel
            {
                PageViewModel          = new PageViewModel(count, page, pageSize),
                ServiceSortViewModel   = new ServiceSortViewModel(sortOrder),
                ServiceFilterViewModel = new ServiceFilterViewModel(name, db.Workers.ToList(), worker),
                Services = items
            };

            return(View(viewModel));
        }