예제 #1
0
        public async Task <IActionResult> Edit(long id, UserAddressFormViewModel model)
        {
            if (ModelState.IsValid)
            {
                var currentUser = await _workContext.GetCurrentUser();

                var userAddress = _userAddressRepository.Query()
                                  .Include(x => x.Address)
                                  .FirstOrDefault(x => x.Id == id && x.UserId == currentUser.Id);

                if (userAddress == null)
                {
                    return(NotFound());
                }

                userAddress.Address.AddressLine1      = model.AddressLine1;
                userAddress.Address.ContactName       = model.ContactName;
                userAddress.Address.CountryId         = 1;
                userAddress.Address.StateOrProvinceId = model.StateOrProvinceId;
                userAddress.Address.DistrictId        = model.DistrictId;
                userAddress.Address.Phone             = model.Phone;

                _userAddressRepository.SaveChange();
                return(RedirectToAction("List"));
            }

            PopulateAddressFormData(model);
            return(View(model));
        }
예제 #2
0
        public async Task <IActionResult> Create(UserAddressFormViewModel model)
        {
            if (ModelState.IsValid)
            {
                var currentUser = await _workContext.GetCurrentUser();

                var address = new Address
                {
                    AddressLine1      = model.AddressLine1,
                    ContactName       = model.ContactName,
                    CountryId         = 1,
                    StateOrProvinceId = model.StateOrProvinceId,
                    DistrictId        = model.DistrictId,
                    Phone             = model.Phone
                };

                var userAddress = new UserAddress
                {
                    Address     = address,
                    AddressType = AddressType.Shipping,
                    UserId      = currentUser.Id
                };

                _userAddressRepository.Add(userAddress);
                _userAddressRepository.SaveChange();
                return(RedirectToAction("List"));
            }

            PopulateAddressFormData(model);
            return(View(model));
        }
예제 #3
0
        public async Task <IActionResult> Edit(long id)
        {
            var currentUser = await _workContext.GetCurrentUser();

            var userAddress = _userAddressRepository.Query()
                              .Include(x => x.Address)
                              .FirstOrDefault(x => x.Id == id && x.UserId == currentUser.Id);

            if (userAddress == null)
            {
                return(NotFound());
            }

            var model = new UserAddressFormViewModel
            {
                Id                = userAddress.Id,
                ContactName       = userAddress.Address.ContactName,
                Phone             = userAddress.Address.Phone,
                AddressLine1      = userAddress.Address.AddressLine1,
                DistrictId        = userAddress.Address.DistrictId,
                StateOrProvinceId = userAddress.Address.StateOrProvinceId
            };

            PopulateAddressFormData(model);

            return(View(model));
        }
예제 #4
0
        public IActionResult Create()
        {
            var model = new UserAddressFormViewModel();

            PopulateAddressFormData(model);

            return(View(model));
        }
예제 #5
0
        private void PopulateAddressFormData(UserAddressFormViewModel model)
        {
            var shippableCountries = _countryRepository.Query()
                                     .Where(x => x.IsShippingEnabled)
                                     .OrderBy(x => x.Name);

            if (!shippableCountries.Any())
            {
                return;
            }

            model.Countries = shippableCountries
                              .Select(x => new SelectListItem
            {
                Text  = x.Name,
                Value = x.Id.ToString()
            }).ToList();

            var selectedShipableCountryId = !string.IsNullOrEmpty(model.CountryId) ? model.CountryId : model.Countries.First().Value;
            var selectedCountry           = shippableCountries.FirstOrDefault(c => c.Id == selectedShipableCountryId);

            if (selectedCountry != null)
            {
                model.DisplayCity     = selectedCountry.IsCityEnabled;
                model.DisplayDistrict = selectedCountry.IsDistrictEnabled;
                model.DisplayZipCode  = selectedCountry.IsZipCodeEnabled;
            }

            model.StateOrProvinces = _stateOrProvinceRepository
                                     .Query()
                                     .Where(x => x.CountryId == selectedShipableCountryId)
                                     .OrderBy(x => x.Name)
                                     .Select(x => new SelectListItem
            {
                Text  = x.Name,
                Value = x.Id.ToString()
            }).ToList();

            if (model.StateOrProvinceId > 0)
            {
                model.Districts = _districtRepository
                                  .Query()
                                  .Where(x => x.StateOrProvinceId == model.StateOrProvinceId)
                                  .OrderBy(x => x.Name)
                                  .Select(x => new SelectListItem
                {
                    Text  = x.Name,
                    Value = x.Id.ToString()
                }).ToList();
            }
        }
예제 #6
0
        private void PopulateAddressFormData(UserAddressFormViewModel model)
        {
            model.StateOrProvinces = _stateOrProvinceRepository
                                     .Query()
                                     .OrderBy(x => x.Name)
                                     .Select(x => new SelectListItem
            {
                Text  = x.Name,
                Value = x.Id.ToString()
            }).ToList();

            var selectedStateOrProvince = model.StateOrProvinceId > 0 ? model.StateOrProvinceId : long.Parse(model.StateOrProvinces.First().Value);

            model.Districts = _districtRepository
                              .Query()
                              .Where(x => x.StateOrProvinceId == selectedStateOrProvince)
                              .OrderBy(x => x.Name)
                              .Select(x => new SelectListItem
            {
                Text  = x.Name,
                Value = x.Id.ToString()
            }).ToList();
        }
예제 #7
0
        private void PopulateAddressFormData(UserAddressFormViewModel model)
        {
            model.Countries = _countryRepository.Query()
                              .Where(x => x.IsShippingEnabled)
                              .OrderBy(x => x.Name)
                              .Select(x => new SelectListItem
            {
                Text  = x.Name,
                Value = x.Id.ToString()
            }).ToList();

            var onlyShipableCountryId = model.CountryId > 0 ? model.CountryId : long.Parse(model.Countries.First().Value);

            model.StateOrProvinces = _stateOrProvinceRepository
                                     .Query()
                                     .Where(x => x.CountryId == onlyShipableCountryId)
                                     .OrderBy(x => x.Name)
                                     .Select(x => new SelectListItem
            {
                Text  = x.Name,
                Value = x.Id.ToString()
            }).ToList();

            if (model.StateOrProvinceId > 0)
            {
                model.Districts = _districtRepository
                                  .Query()
                                  .Where(x => x.StateOrProvinceId == model.StateOrProvinceId)
                                  .OrderBy(x => x.Name)
                                  .Select(x => new SelectListItem
                {
                    Text  = x.Name,
                    Value = x.Id.ToString()
                }).ToList();
            }
        }