public async Task <ActionResult> UpdateAddress(HandleDeliveryAddressPage currentPage, AddressViewModel model) { model.Silos = OrganizationViewHelper.PopulateSilos(model.Silos); var customerDeliveryAddress = OrganizationViewHelper.PopulateCustomerDeliveryAddress(model); var activeCustomer = UserManager.GetActiveCustomer(HttpContext); var customerId = activeCustomer?.CustomerId ?? 0; if (customerId == 0) { return(RedirectToAction("Index", new { hasUpdated = false })); } var result = _organizationRepository.UpdateDeliveryAddress(customerDeliveryAddress); // update list notifcation receivers var listPreviousChoosen = await _organizationRepository.GetDeliveryAddressReceiversAsync(customerId, model.AddressNumber); var listChoosenIds = OrganizationViewHelper.GetListChoosenReceiverIds(model.NotificationReceiverModels); var listRemovedIds = GetListRemovedIds(listPreviousChoosen, listChoosenIds); var listNewAddedIds = GetListAddedIds(listChoosenIds, listPreviousChoosen); if (!listRemovedIds.IsNullOrEmpty()) { await _organizationRepository.DeleteDeliveryAddressReceiversAsync(customerId, listRemovedIds.ToArray(), model.AddressNumber); } if (!listNewAddedIds.IsNullOrEmpty()) { await _organizationRepository.CreateDeliveryAddressReceiversAsync(customerId, listNewAddedIds.ToArray(), model.AddressNumber); } return(RedirectToAction("Index", new { hasUpdated = result })); }
private async Task <HandleDeliveryAddressesViewModel> GetViewModel(HandleDeliveryAddressPage currentPage, string addressNumber = "", string canDelete = "") { var activeCustomer = UserManager.GetActiveCustomer(HttpContext); var customerId = activeCustomer?.CustomerId ?? 0; var viewModel = new HandleDeliveryAddressesViewModel(currentPage); if (customerId <= 0) { return(viewModel); } var customerAdresses = await _organizationRepository.GetCustomersDeliveryAddressesAsync(customerId); customerAdresses = customerAdresses ?? new CustomerDeliveryAddress[0]; if (string.IsNullOrEmpty(addressNumber)) { viewModel.DeliveryAddresses = await PopulateListAddressModel(customerId, customerAdresses); } else { var address = customerAdresses?.FirstOrDefault( i => i.AddressNumber != null && i.AddressNumber.Equals(addressNumber)); if (address == null) { viewModel.DeliveryAddresses = await PopulateListAddressModel(customerId, customerAdresses); return(viewModel); } bool canDeleteValue; var listNotifcationReceivers = await _organizationRepository.GetDeliveryAddressReceiversAsync(customerId, addressNumber); var listAllReceivers = await _securityRepository.GetUsersForCustomerAsync(customerId); viewModel.EditingDeliveryAddress = new SingleDeliveryAddressViewModel(true) { DeliveryAddress = OrganizationViewHelper.PopulateAdressModels(address, listNotifcationReceivers, listAllReceivers), Instruction = currentPage.InstructionForEditting, CustomerName = activeCustomer != null ? activeCustomer.CustomerName : string.Empty, CanDelete = bool.TryParse(canDelete, out canDeleteValue) && canDeleteValue }; } return(viewModel); }
public async Task <ActionResult> Index(AddDeliveryAddressPage currentPage, AddressViewModel model) { var activeCustomer = UserManager.GetActiveCustomer(HttpContext); var customerId = activeCustomer?.CustomerId ?? 0; var addedSuccess = false; if (customerId > 0) { model.Silos = OrganizationViewHelper.PopulateSilos(model.Silos); addedSuccess = await AddNewDeliveryAddress(customerId, model); } var targetPageUrl = ContentExtensions.GetPageUnderSettingUrl(s => s.HandleAddressPage); targetPageUrl = string.IsNullOrEmpty(targetPageUrl) ? ContentExtensions.GetStartPageUrl() : $"{targetPageUrl}?hasAdded={addedSuccess}"; return(Redirect(targetPageUrl)); }
private async Task <IList <AddressViewModel> > PopulateListAddressModel(int customerId, CustomerDeliveryAddress[] customerAdresses) { var result = new List <AddressViewModel>(); if (customerAdresses.IsNullOrEmpty()) { return(result); } foreach (var address in customerAdresses) { var listNotifcationReceivers = await _organizationRepository.GetDeliveryAddressReceiversAsync(customerId, address.AddressNumber); result.Add(OrganizationViewHelper.PopulateAdressModels(address, listNotifcationReceivers, null)); } return(result); }
private async Task <IList <AddressViewModel> > GetDeliveryAddress(int customerId, string customerNumber) { var result = new List <AddressViewModel>(); var customerAdresses = customerId > 0 ? await _organizationRepo.GetCustomersDeliveryAddressesAsync(customerId) : await _customerSupportRepo.GetCustomersDeliveryAddressesAsync(customerNumber); customerAdresses = customerAdresses ?? new CustomerDeliveryAddress[0]; foreach (var address in customerAdresses) { var listNotifcationReceivers = await _organizationRepo.GetDeliveryAddressReceiversAsync(customerId, address.AddressNumber); result.Add(OrganizationViewHelper.PopulateAdressModels(address, listNotifcationReceivers, null)); } return(result); }