private void PrepareEditWindowModel <T>(RequestEditWindowModel <T> editWindowModel) where T : class
        {
            editWindowModel.Stores = new RequestEditWindowStoresModel();

            editWindowModel.Stores.Customers = _requestService.GetAllOrderedCustomerModels(null)
                                               .Select(x => new SelectListItem {
                Value = x.Id.ToString(), Text = $"{x.Name}, {x.ContactPersonPhone}"
            })
                                               .ToList()
                                               .AddEmptyElement("Ввести вручную");

            editWindowModel.Stores.Cars = _carService.GetAllCarModels(null)
                                          .Select(x => new SelectListItem {
                Value = x.Id.ToString(), Text = $"{x.Mark} {x.Number}"
            })
                                          .ToList()
                                          .AddEmptyElement();

            editWindowModel.Stores.Containers = _containerService.GetAllContainerModels(null)
                                                .Select(x => new SelectListItem {
                Value = x.Id.ToString(), Text = $"{x.Number} ({x.ContainerType.Name})"
            })
                                                .ToList()
                                                .AddEmptyElement();

            editWindowModel.Stores.Drivers = _driverService.GetAllDriverModels(null)
                                             .Select(x => new SelectListItem {
                Value = x.Id.ToString(), Text = x.Name
            })
                                             .ToList()
                                             .AddEmptyElement();

            editWindowModel.Stores.Polygons = _polygonService.GetAllPolygonModels(null)
                                              .Select(x => new SelectListItem {
                Value = x.Id.ToString(), Text = x.Name
            })
                                              .ToList()
                                              .AddEmptyElement();

            editWindowModel.Stores.RequestStatuses = Enum.GetValues(typeof(RequestStatus))
                                                     .Cast <RequestStatus>()
                                                     .Select(x => new SelectListItem {
                Value = x.ToString(), Text = x.GetDescription()
            })
                                                     .ToList();

            editWindowModel.Stores.RequestTypes = Enum.GetValues(typeof(RequestType))
                                                  .Cast <RequestType>()
                                                  .Select(x => new SelectListItem {
                Value = x.ToString(), Text = x.GetDescription()
            })
                                                  .ToList();

            editWindowModel.Stores.PaymentTypes = Enum.GetValues(typeof(PaymentType))
                                                  .Cast <PaymentType>()
                                                  .Select(x => new SelectListItem {
                Value = x.ToString(), Text = x.GetDescription()
            })
                                                  .ToList();
        }
 private void PrepareCreateWindowModel <T>(RequestEditWindowModel <T> editWindowModel) where T : class
 {
     editWindowModel.Stores.Containers = _containerService.GetAllFreeContainerModels(null)
                                         .Select(x => new SelectListItem {
         Value = x.Id.ToString(), Text = $"{x.Number} ({x.ContainerType.Name})"
     })
                                         .ToList()
                                         .AddEmptyElement();
 }
        /// <summary>
        /// Частичное представление - открытие окна редактирования
        /// </summary>
        public ActionResult Edit(long id)
        {
            var model = _requestService.GetRequestModel(id);

            var editWindowModel = new RequestEditWindowModel <RequestGetModel>(model);

            PrepareEditWindowModel(editWindowModel);

            return(PartialView("Partial/Edit", editWindowModel));
        }
        /// <summary>
        /// Частичное представление - открытие окна создания
        /// </summary>
        public ActionResult Create()
        {
            var model = new RequestSaveModel
            {
                CreateDate = DateTime.Now.ToString("dd.MM.yyyy HH:mm")
            };

            var editWindowModel = new RequestEditWindowModel <RequestSaveModel>(model);

            PrepareEditWindowModel(editWindowModel);
            PrepareCreateWindowModel(editWindowModel);

            return(PartialView("Partial/Create", editWindowModel));
        }