Billing: fixed upload license

This commit is contained in:
pavelbannov 2023-05-12 18:58:53 +03:00
parent 12a74a1247
commit 3bb1ca7969
5 changed files with 60 additions and 54 deletions

View File

@ -37,7 +37,7 @@ public interface ITariffService
Uri GetShoppingUri(string[] productIds, string affiliateId = null, string currency = null, string language = null, string customerId = null, string quantity = null);
void ClearCache(int tenantId);
void DeleteDefaultBillingInfo();
void SetTariff(int tenantId, Tariff tariff);
void SetTariff(int tenantId, Tariff tariff, List<TenantQuota> quotas = null);
Uri GetAccountLink(int tenant, string backUrl);
Task<bool> PaymentChange(int tenant, Dictionary<string, int> quantity);
int GetPaymentDelay();

View File

@ -216,7 +216,7 @@ public class LicenseReader
DueDate = license.DueDate,
};
_tariffService.SetTariff(-1, tariff);
_tariffService.SetTariff(-1, tariff, new List<TenantQuota> { quota });
}
private void LogError(Exception error)

View File

@ -343,13 +343,12 @@ public class TariffService : ITariffService
}
public void SetTariff(int tenantId, Tariff tariff)
public void SetTariff(int tenantId, Tariff tariff, List<TenantQuota> quotas = null)
{
ArgumentNullException.ThrowIfNull(tariff);
List<TenantQuota> quotas = null;
if (tariff.Quotas == null ||
(quotas = tariff.Quotas.Select(q => _quotaService.GetTenantQuota(q.Id)).ToList()).Any(q => q == null))
(quotas ??= tariff.Quotas.Select(q => _quotaService.GetTenantQuota(q.Id)).ToList()).Any(q => q == null))
{
return;
}
@ -719,62 +718,62 @@ public class TariffService : ITariffService
if (!tariffInfo.EqualsByParams(currentTariff))
{
try
{
using var dbContext = _dbContextFactory.CreateDbContext();
var strategy = dbContext.Database.CreateExecutionStrategy();
strategy.Execute(() =>
{
using var dbContext = _dbContextFactory.CreateDbContext();
var strategy = dbContext.Database.CreateExecutionStrategy();
using var tx = dbContext.Database.BeginTransaction();
strategy.Execute(() =>
var stamp = tariffInfo.DueDate;
if (stamp.Equals(DateTime.MaxValue))
{
using var dbContext = _dbContextFactory.CreateDbContext();
using var tx = dbContext.Database.BeginTransaction();
stamp = stamp.Date.Add(new TimeSpan(tariffInfo.DueDate.Hour, tariffInfo.DueDate.Minute, tariffInfo.DueDate.Second));
}
var stamp = tariffInfo.DueDate;
if (stamp.Equals(DateTime.MaxValue))
var efTariff = new DbTariff
{
Id = tariffInfo.Id,
Tenant = tenant,
Stamp = stamp,
CustomerId = tariffInfo.CustomerId,
CreateOn = DateTime.UtcNow
};
if (efTariff.Id == default)
{
efTariff.Id = (-tenant);
tariffInfo.Id = efTariff.Id;
}
if (efTariff.CustomerId == default)
{
efTariff.CustomerId = "";
}
efTariff = dbContext.AddOrUpdate(dbContext.Tariffs, efTariff);
dbContext.SaveChanges();
foreach (var q in tariffInfo.Quotas)
{
dbContext.AddOrUpdate(dbContext.TariffRows, new DbTariffRow
{
stamp = stamp.Date.Add(new TimeSpan(tariffInfo.DueDate.Hour, tariffInfo.DueDate.Minute, tariffInfo.DueDate.Second));
}
TariffId = efTariff.Id,
Quota = q.Id,
Quantity = q.Quantity,
Tenant = tenant
});
}
var efTariff = new DbTariff
{
Id = tariffInfo.Id,
Tenant = tenant,
Stamp = stamp,
CustomerId = tariffInfo.CustomerId,
CreateOn = DateTime.UtcNow
};
dbContext.SaveChanges();
if (efTariff.Id == default)
{
efTariff.Id = (-tenant);
tariffInfo.Id = efTariff.Id;
}
inserted = true;
if (efTariff.CustomerId == default)
{
efTariff.CustomerId = "";
}
efTariff = dbContext.AddOrUpdate(dbContext.Tariffs, efTariff);
dbContext.SaveChanges();
foreach (var q in tariffInfo.Quotas)
{
dbContext.AddOrUpdate(dbContext.TariffRows, new DbTariffRow
{
TariffId = efTariff.Id,
Quota = q.Id,
Quantity = q.Quantity,
Tenant = tenant
});
}
dbContext.SaveChanges();
inserted = true;
tx.Commit();
});
}
tx.Commit();
});
}
catch (DbUpdateException)
{

View File

@ -398,7 +398,14 @@ public class TenantQuota : IMapFrom<DbQuota>
if (!EqualityComparer<T>.Default.Equals(value, default))
{
_featuresList.Add($"{name}:{value}");
if (value is bool)
{
_featuresList.Add($"{name}");
}
else
{
_featuresList.Add($"{name}:{value}");
}
}
}
}

View File

@ -172,7 +172,7 @@ public class LicenseController : BaseSettingsController
DueDate = DateTime.Today.AddDays(DEFAULT_TRIAL_PERIOD)
};
_tariffService.SetTariff(-1, tariff);
_tariffService.SetTariff(-1, tariff, new List<TenantQuota>() { quota });
_messageService.Send(MessageAction.LicenseKeyUploaded);