using Microsoft.AspNetCore.Mvc; using Nop.Core; using Nop.Core.Domain.Tax; using Nop.Services.Common; using Nop.Services.Customers; using Nop.Web.Framework.Controllers; namespace Nop.Plugin.Tax.Avalara.Controllers; [AutoValidateAntiforgeryToken] public class AddressValidationController : BaseController { #region Fields protected readonly IAddressService _addressService; protected readonly ICustomerService _customerService; protected readonly IWorkContext _workContext; protected readonly TaxSettings _taxSettings; #endregion #region Ctor public AddressValidationController(IAddressService addressService, ICustomerService customerService, IWorkContext workContext, TaxSettings taxSettings) { _addressService = addressService; _customerService = customerService; _workContext = workContext; _taxSettings = taxSettings; } #endregion #region Methods [HttpPost] public async Task UseValidatedAddress(int addressId, bool isNewAddress) { //try to get an address by the passed identifier var address = await _addressService.GetAddressByIdAsync(addressId); if (address != null) { var customer = await _workContext.GetCurrentCustomerAsync(); //add address to customer collection if it's a new if (isNewAddress) await _customerService.InsertCustomerAddressAsync(customer, address); //and update appropriate customer address if (_taxSettings.TaxBasedOn == TaxBasedOn.BillingAddress) (customer).BillingAddressId = address.Id; if (_taxSettings.TaxBasedOn == TaxBasedOn.ShippingAddress) (customer).ShippingAddressId = address.Id; await _customerService.UpdateCustomerAsync(customer); } //nothing to return return Content(string.Empty); } #endregion }