public async Task<ActionResult> UpdateAddress(string id, shopifyModel.Address formModel) { var contact = await _customerApi.CustomerModuleGetContactByIdAsync(WorkContext.CurrentCustomer.Id); var updateContact = false; if (contact != null) { if (string.IsNullOrEmpty(id)) { // Add new address contact.Addresses.Add(formModel.ToServiceModel(WorkContext.AllCountries)); updateContact = true; } else { int addressIndex; if (int.TryParse(id, NumberStyles.Integer, CultureInfo.InvariantCulture, out addressIndex)) { if (addressIndex > 0 && addressIndex <= contact.Addresses.Count) { if (string.Equals(formModel.Method, "delete", StringComparison.OrdinalIgnoreCase)) { // Delete address contact.Addresses.RemoveAt(addressIndex - 1); updateContact = true; } else { // Update address contact.Addresses[addressIndex].CopyFrom(formModel, WorkContext.AllCountries); updateContact = true; } } } } if (updateContact) { await _customerApi.CustomerModuleUpdateContactAsync(contact); } } return StoreFrontRedirect("~/account/addresses"); }