1
0
mirror of https://github.com/bitwarden/server.git synced 2024-11-23 12:25:16 +01:00
This commit is contained in:
Jonas Hendrickx 2024-11-20 19:25:57 +01:00
parent 4c349ddce5
commit 4bd0c40881
3 changed files with 33 additions and 15 deletions

View File

@ -1,4 +1,5 @@
using Bit.Core.Services; using Bit.Core.Billing.Services;
using Bit.Core.Services;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http.HttpResults; using Microsoft.AspNetCore.Http.HttpResults;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
@ -46,4 +47,15 @@ public class StripeController(
return TypedResults.Ok(setupIntent.ClientSecret); return TypedResults.Ok(setupIntent.ClientSecret);
} }
[HttpGet]
[Route("~/tax/is-country-supported")]
public IResult IsCountrySupported(
[FromQuery] string country,
[FromServices] ITaxService taxService)
{
var isSupported = taxService.IsSupported(country);
return TypedResults.Ok(isSupported);
}
} }

View File

@ -1,10 +1,22 @@
using Bit.Core.Billing.Models; namespace Bit.Core.Billing.Services;
namespace Bit.Core.Billing.Services;
public interface ITaxService public interface ITaxService
{ {
/// <summary>
/// Retrieves the Stripe tax code for a given country and tax ID.
/// </summary>
/// <param name="country"></param>
/// <param name="taxId"></param>
/// <returns>
/// Returns the Stripe tax code if the tax ID is valid for the country.
/// Returns null if the tax ID is invalid or the country is not supported.
/// </returns>
string? GetStripeTaxCode(string country, string taxId); string? GetStripeTaxCode(string country, string taxId);
IEnumerable<TaxIdType> GetTaxIdTypes(); /// <summary>
/// Returns true or false whether charging or storing tax is supported for the given country.
/// </summary>
/// <param name="country"></param>
/// <returns></returns>
bool IsSupported(string country);
} }

View File

@ -881,15 +881,6 @@ public class TaxService : ITaxService
} }
]; ];
/// <summary>
/// Retrieves the Stripe tax code for a given country and tax ID.
/// </summary>
/// <param name="country"></param>
/// <param name="taxId"></param>
/// <returns>
/// Returns the Stripe tax code if the tax ID is valid for the country.
/// Returns null if the tax ID is invalid or the country is not supported.
/// </returns>
public string? GetStripeTaxCode(string country, string taxId) public string? GetStripeTaxCode(string country, string taxId)
{ {
foreach (var taxIdType in _taxIdTypes.Where(x => x.Country == country)) foreach (var taxIdType in _taxIdTypes.Where(x => x.Country == country))
@ -903,5 +894,8 @@ public class TaxService : ITaxService
return null; return null;
} }
public IEnumerable<TaxIdType> GetTaxIdTypes() => _taxIdTypes; public bool IsSupported(string country)
{
return _taxIdTypes.Any(x => x.Country == country);
}
} }