예제 #1
0
        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 }));
        }
예제 #2
0
        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);
        }
예제 #3
0
        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));
        }
예제 #4
0
        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);
        }
예제 #5
0
        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);
        }