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)); }
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); }
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")); }
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"); }