CoreCommon: update subscription
This commit is contained in:
parent
ef7419c9ae
commit
b6559781ea
@ -185,6 +185,18 @@ public class BillingClient
|
||||
return paymentUrl;
|
||||
}
|
||||
|
||||
public bool ChangePayment(string portalId, string[] products, int[] quantity)
|
||||
{
|
||||
var parameters = products.Select(p => Tuple.Create("ProductId", p))
|
||||
.Concat(quantity.Select(q => Tuple.Create("ProductQty", q.ToString())))
|
||||
.ToArray();
|
||||
|
||||
var result = Request("ChangeSubscription", portalId, parameters);
|
||||
var changed = JsonConvert.DeserializeObject<bool>(result);
|
||||
|
||||
return changed;
|
||||
}
|
||||
|
||||
public IDictionary<string, Dictionary<string, decimal>> GetProductPriceInfo(params string[] productIds)
|
||||
{
|
||||
ArgumentNullException.ThrowIfNull(productIds);
|
||||
|
@ -41,4 +41,5 @@ public interface ITariffService
|
||||
void SaveButton(int tariffId, string partnerId, string buttonUrl);
|
||||
void SetTariff(int tenantId, Tariff tariff);
|
||||
Uri GetAccountLink(int tenant, string backUrl);
|
||||
bool PaymentChange(int tenant, Dictionary<string, int> quantity);
|
||||
}
|
||||
|
@ -227,6 +227,35 @@ public class TariffService : ITariffService
|
||||
return tariff;
|
||||
}
|
||||
|
||||
public bool PaymentChange(int tenantId, Dictionary<string, int> quantity)
|
||||
{
|
||||
if (quantity == null || !quantity.Any()
|
||||
|| !_billingClient.Configured)
|
||||
return false;
|
||||
|
||||
var productIds = _quotaService.GetTenantQuotas()
|
||||
.Where(q =>
|
||||
!string.IsNullOrEmpty(q.ProductId)
|
||||
&& quantity.ContainsKey(q.Name))
|
||||
.Select(q => q.ProductId);
|
||||
|
||||
try
|
||||
{
|
||||
var client = GetBillingClient();
|
||||
var changed = client.ChangePayment(GetPortalId(tenantId), productIds.ToArray(), quantity.Values.ToArray());
|
||||
|
||||
if (!changed) return false;
|
||||
|
||||
ClearCache(tenantId);
|
||||
}
|
||||
catch (Exception error)
|
||||
{
|
||||
_logger.ErrorWithException(error);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public void SetTariff(int tenantId, Tariff tariff)
|
||||
{
|
||||
ArgumentNullException.ThrowIfNull(tariff);
|
||||
|
@ -83,6 +83,11 @@ public class PaymentManager
|
||||
return _tariffService.GetAccountLink(tenantId, backUrl);
|
||||
}
|
||||
|
||||
public bool ChangePayment(Dictionary<string, int> quantity)
|
||||
{
|
||||
return _tariffService.PaymentChange(_tenantManager.GetCurrentTenant().Id, quantity);
|
||||
}
|
||||
|
||||
public void ActivateKey(string key)
|
||||
{
|
||||
ArgumentNullOrEmptyException.ThrowIfNullOrEmpty(key);
|
||||
@ -119,5 +124,4 @@ public class PaymentManager
|
||||
|
||||
return $"ASC :{now}:{hash}";
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -211,6 +211,18 @@ public class PortalController : ControllerBase
|
||||
inDto.Quantity,
|
||||
inDto.BackUrl);
|
||||
}
|
||||
|
||||
[HttpPut("payment/update")]
|
||||
public bool PaymentUpdate(PaymentUrlRequestsDto inDto)
|
||||
{
|
||||
if (!_paymentManager.GetTariffPayments(Tenant.Id).Any()
|
||||
|| !_userManager.GetUsers(_securityContext.CurrentAccount.ID).IsAdmin(_userManager))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return _paymentManager.ChangePayment(inDto.Quantity);
|
||||
}
|
||||
|
||||
[HttpGet("payment/account")]
|
||||
public Uri GetPaymentAccount(string backUrl)
|
||||
|
Loading…
Reference in New Issue
Block a user