public IActionResult Create(StorePickupPointModel model)
        {
            if (!_permissionService.Authorize(StandardPermissionProvider.ManageShippingSettings))
            {
                return(AccessDeniedView());
            }

            var address = new Address
            {
                Address1        = model.Address.Address1,
                City            = model.Address.City,
                County          = model.Address.County,
                CountryId       = model.Address.CountryId,
                StateProvinceId = model.Address.StateProvinceId,
                ZipPostalCode   = model.Address.ZipPostalCode,
                CreatedOnUtc    = DateTime.UtcNow
            };

            _addressService.InsertAddress(address);

            var pickupPoint = new StorePickupPoint
            {
                Name         = model.Name,
                Description  = model.Description,
                AddressId    = address.Id,
                OpeningHours = model.OpeningHours,
                PickupFee    = model.PickupFee,
                DisplayOrder = model.DisplayOrder,
                StoreId      = model.StoreId
            };

            _storePickupPointService.InsertStorePickupPoint(pickupPoint);

            ViewBag.RefreshPage = true;

            return(View("~/Plugins/Pickup.PickupInStore/Views/Create.cshtml", model));
        }
        public IActionResult Edit(int id)
        {
            if (!_permissionService.Authorize(StandardPermissionProvider.ManageShippingSettings))
            {
                return(AccessDeniedView());
            }

            var pickupPoint = _storePickupPointService.GetStorePickupPointById(id);

            if (pickupPoint == null)
            {
                return(RedirectToAction("Configure"));
            }

            var model = new StorePickupPointModel
            {
                Id           = pickupPoint.Id,
                Name         = pickupPoint.Name,
                Description  = pickupPoint.Description,
                OpeningHours = pickupPoint.OpeningHours,
                PickupFee    = pickupPoint.PickupFee,
                DisplayOrder = pickupPoint.DisplayOrder,
                StoreId      = pickupPoint.StoreId
            };

            var address = _addressService.GetAddressById(pickupPoint.AddressId);

            if (address != null)
            {
                model.Address = new AddressModel
                {
                    Address1        = address.Address1,
                    City            = address.City,
                    County          = address.County,
                    CountryId       = address.CountryId,
                    StateProvinceId = address.StateProvinceId,
                    ZipPostalCode   = address.ZipPostalCode
                };
            }

            model.Address.AvailableCountries.Add(new SelectListItem {
                Text = _localizationService.GetResource("Admin.Address.SelectCountry"), Value = "0"
            });
            foreach (var country in _countryService.GetAllCountries(showHidden: true))
            {
                model.Address.AvailableCountries.Add(new SelectListItem {
                    Text = country.Name, Value = country.Id.ToString(), Selected = (address != null && country.Id == address.CountryId)
                });
            }

            var states = !model.Address.CountryId.HasValue ? new List <StateProvince>()
                : _stateProvinceService.GetStateProvincesByCountryId(model.Address.CountryId.Value, showHidden: true);

            if (states.Any())
            {
                model.Address.AvailableStates.Add(new SelectListItem {
                    Text = _localizationService.GetResource("Admin.Address.SelectState"), Value = "0"
                });
                foreach (var state in states)
                {
                    model.Address.AvailableStates.Add(new SelectListItem {
                        Text = state.Name, Value = state.Id.ToString(), Selected = (address != null && state.Id == address.StateProvinceId)
                    });
                }
            }
            else
            {
                model.Address.AvailableStates.Add(new SelectListItem {
                    Text = _localizationService.GetResource("Admin.Address.OtherNonUS"), Value = "0"
                });
            }

            model.AvailableStores.Add(new SelectListItem {
                Text = _localizationService.GetResource("Admin.Configuration.Settings.StoreScope.AllStores"), Value = "0"
            });
            foreach (var store in _storeService.GetAllStores())
            {
                model.AvailableStores.Add(new SelectListItem {
                    Text = store.Name, Value = store.Id.ToString(), Selected = store.Id == model.StoreId
                });
            }

            return(View("~/Plugins/Pickup.PickupInStore/Views/Edit.cshtml", model));
        }
        public IActionResult Create()
        {
            if (!_permissionService.Authorize(StandardPermissionProvider.ManageShippingSettings))
            {
                return(AccessDeniedView());
            }

            var model = new StorePickupPointModel
            {
                Address =
                {
                    CountryEnabled       = _addressSettings.CountryEnabled,
                    StateProvinceEnabled = _addressSettings.StateProvinceEnabled,
                    ZipPostalCodeEnabled = _addressSettings.ZipPostalCodeEnabled,
                    CityEnabled          = _addressSettings.CityEnabled,
                    CountyEnabled        = _addressSettings.CountyEnabled
                }
            };

            model.Address.AvailableCountries.Add(new SelectListItem {
                Text = _localizationService.GetResource("Admin.Address.SelectCountry"), Value = "0"
            });
            foreach (var country in _countryService.GetAllCountries(showHidden: true))
            {
                model.Address.AvailableCountries.Add(new SelectListItem {
                    Text = country.Name, Value = country.Id.ToString()
                });
            }

            var states = !model.Address.CountryId.HasValue ? new List <StateProvince>()
                : _stateProvinceService.GetStateProvincesByCountryId(model.Address.CountryId.Value, showHidden: true);

            if (states.Any())
            {
                model.Address.AvailableStates.Add(new SelectListItem {
                    Text = _localizationService.GetResource("Admin.Address.SelectState"), Value = "0"
                });
                foreach (var state in states)
                {
                    model.Address.AvailableStates.Add(new SelectListItem {
                        Text = state.Name, Value = state.Id.ToString()
                    });
                }
            }
            else
            {
                model.Address.AvailableStates.Add(new SelectListItem {
                    Text = _localizationService.GetResource("Admin.Address.Other"), Value = "0"
                });
            }

            model.AvailableStores.Add(new SelectListItem {
                Text = _localizationService.GetResource("Admin.Configuration.Settings.StoreScope.AllStores"), Value = "0"
            });
            foreach (var store in _storeService.GetAllStores())
            {
                model.AvailableStores.Add(new SelectListItem {
                    Text = store.Name, Value = store.Id.ToString()
                });
            }

            return(View("~/Plugins/Pickup.PickupInStore/Views/Create.cshtml", model));
        }