Try your search with a different keyword or use * as a wildcard.
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
}