コード例 #1
0
        public async Task <IActionResult> DeliveryInformation()
        {
            var model = new DeliveryInformationViewModel();

            var currentUser = await _workContext.GetCurrentUser();

            model.ExistingShippingAddresses = _userAddressRepository
                                              .Query()
                                              .Where(x => x.AddressType == AddressType.Shipping && x.UserId == currentUser.Id)
                                              .Select(x => new ShippingAddressViewModel
            {
                UserAddressId       = x.Id,
                ContactName         = x.Address.ContactName,
                Phone               = x.Address.Phone,
                AddressLine1        = x.Address.AddressLine1,
                AddressLine2        = x.Address.AddressLine1,
                DistrictName        = x.Address.District.Name,
                StateOrProvinceName = x.Address.StateOrProvince.Name,
                CountryName         = x.Address.Country.Name
            }).ToList();

            model.ShippingAddressId = currentUser.CurrentShippingAddressId ?? 0;

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

            var selectedStateOrProvince = long.Parse(model.NewAddressForm.StateOrProvinces.First().Value);

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

            return(View(model));
        }
コード例 #2
0
        public async Task<IActionResult> DeliveryInformation()
        {
            var model = new DeliveryInformationViewModel();

            var currentUser = await _workContext.GetCurrentUser();
            model.ExistingShippingAddresses = _userAddressRepository
                .Query()
                .Where(x => x.AddressType == AddressType.Shipping && x.UserId == currentUser.Id)
                .Select(x => new ShippingAddressViewModel
                {
                    UserAddressId = x.Id,
                    ContactName = x.Address.ContactName,
                    Phone = x.Address.Phone,
                    AddressLine1 = x.Address.AddressLine1,
                    AddressLine2 = x.Address.AddressLine1,
                    DistrictName = x.Address.District.Name,
                    StateOrProvinceName = x.Address.StateOrProvince.Name,
                    CountryName = x.Address.Country.Name
                }).ToList();

            model.ShippingAddressId = currentUser.CurrentShippingAddressId ?? 0;

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

            var selectedStateOrProvince = long.Parse(model.NewAddressForm.StateOrProvinces.First().Value);

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

            return View(model);
        }
コード例 #3
0
        public async Task <IActionResult> DeliveryInformation(DeliveryInformationViewModel model)
        {
            if (!ModelState.IsValid && model.ShippingAddressId == 0)
            {
                return(View(model));
            }

            var currentUser = await _workContext.GetCurrentUser();

            if (model.ShippingAddressId == 0)
            {
                var address = new Address
                {
                    AddressLine1      = model.NewAddressForm.AddressLine1,
                    ContactName       = model.NewAddressForm.ContactName,
                    CountryId         = 1,
                    StateOrProvinceId = model.NewAddressForm.StateOrProvinceId,
                    DistrictId        = model.NewAddressForm.DistrictId,
                    Phone             = model.NewAddressForm.Phone
                };

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

                _userAddressRepository.Add(userAddress);
                currentUser.CurrentShippingAddress = userAddress;
            }
            else
            {
                currentUser.CurrentShippingAddress = _userAddressRepository.Query().FirstOrDefault(x => x.Id == model.ShippingAddressId);
            }
            _orderService.CreateOrder(currentUser);
            _userAddressRepository.SaveChange();

            return(RedirectToAction("OrderConfirmation"));
        }
コード例 #4
0
        public async Task<IActionResult> DeliveryInformation(DeliveryInformationViewModel model)
        {
            if (!ModelState.IsValid && model.ShippingAddressId == 0)
            {
                return View(model);
            }

            var currentUser = await _workContext.GetCurrentUser();

            if (model.ShippingAddressId == 0)
            {
                var address = new Address
                {
                    AddressLine1 = model.NewAddressForm.AddressLine1,
                    ContactName = model.NewAddressForm.ContactName,
                    CountryId = 1,
                    StateOrProvinceId = model.NewAddressForm.StateOrProvinceId,
                    DistrictId = model.NewAddressForm.DistrictId,
                    Phone = model.NewAddressForm.Phone
                };

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

                _userAddressRepository.Add(userAddress);
                currentUser.CurrentShippingAddress = userAddress;
            }
            else
            {
                currentUser.CurrentShippingAddress = _userAddressRepository.Query().FirstOrDefault(x => x.Id == model.ShippingAddressId);
            }
            _orderService.CreateOrder(currentUser);
            _userAddressRepository.SaveChange();

            return RedirectToAction("OrderConfirmation");
        }