This commit is contained in:
@@ -116,21 +116,19 @@ namespace Sockeye.Biz
|
|||||||
if (isV7 && isLessThanV7Age)
|
if (isV7 && isLessThanV7Age)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
License newLicense = new License();
|
||||||
|
//Get last license if any, set up some basic stuff common to all license types
|
||||||
|
var firstPurchase = purchaseGroup.First();
|
||||||
|
var lastLicense = await ct.License.AsNoTracking().OrderByDescending(z => z.Id).FirstOrDefaultAsync(z => z.CustomerId == firstPurchase.CustomerId && z.PGroup == firstPurchase.PGroup);
|
||||||
|
|
||||||
|
newLicense.CustomerId = firstPurchase.CustomerId;
|
||||||
|
newLicense.Active = false;
|
||||||
|
newLicense.RegTo = firstPurchase.RegTo;
|
||||||
|
|
||||||
//if v7 license then lookup last license for same pgroup for same customer, if none then consider it a new license fresh
|
//if v7 license then lookup last license for same pgroup for same customer, if none then consider it a new license fresh
|
||||||
//if there is one and it's not entirely expired then duplicate and fixup from purchases in this group
|
//if there is one and it's not entirely expired then duplicate and fixup from purchases in this group
|
||||||
if (isV7)
|
if (isV7)
|
||||||
{
|
{
|
||||||
|
|
||||||
//get one representative product in the group, first is fine
|
|
||||||
var firstPurchase = purchaseGroup.First();
|
|
||||||
var lastLicense = await ct.License.AsNoTracking().OrderByDescending(z => z.Id).FirstOrDefaultAsync(z => z.CustomerId == firstPurchase.CustomerId && z.PGroup == firstPurchase.PGroup);
|
|
||||||
var newLicense = new License();
|
|
||||||
newLicense.CustomerId = firstPurchase.CustomerId;
|
|
||||||
newLicense.Active = false;
|
|
||||||
newLicense.RegTo = firstPurchase.RegTo;
|
|
||||||
newLicense.FetchEmail = purchaseGroupCustomer.EmailAddress;
|
newLicense.FetchEmail = purchaseGroupCustomer.EmailAddress;
|
||||||
|
|
||||||
//is there a prior license?
|
//is there a prior license?
|
||||||
@@ -284,22 +282,85 @@ namespace Sockeye.Biz
|
|||||||
log.LogError(err);
|
log.LogError(err);
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
}//switch product code
|
||||||
|
}//each purchase in purchasegroup
|
||||||
|
|
||||||
|
//license done ready to save not active so still requires manual intervention but should be substantially ready to send out by here fingers crossed!
|
||||||
|
|
||||||
|
|
||||||
|
}//if v7 block
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//it's a RAVEN license
|
||||||
|
//iterate the purchases and update / set the license
|
||||||
|
foreach (var purchase in purchaseGroup)
|
||||||
|
{
|
||||||
|
var product = await ct.Product.AsNoTracking().FirstOrDefaultAsync(z => z.Id == purchase.ProductId);//should *always* exist
|
||||||
|
if (product == null)
|
||||||
|
{
|
||||||
|
var err = $"SockBotProcessPurchasesIntoLicenses purchase: {purchase.Id} has un-matchable product id: {purchase.ProductId}";
|
||||||
|
//serious issue requires immediate notification
|
||||||
|
await NotifyEventHelper.AddOpsProblemEvent(err);
|
||||||
|
log.LogError(err);
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
/*
|
||||||
|
301028317 AyaNova perpetual single user license includes one year maintenance plan perpetual Product 12 months HD1 Aug 15, 2022, 9:07 PM
|
||||||
|
301028467 AyaNova subscription one user monthly subscriptionmonthly Product monthly HD1 Aug 18, 2022, 1:21 AM
|
||||||
|
301028468 AyaNova subscription one user yearly subscriptionyearly Product 12 months HD1 Aug 18, 2022, 1:25 AM
|
||||||
|
301033167 AyaNova subscription additional 250 customer users monthly 250customerusersmonthly Product monthly HD1 Oct 6, 2022, 12:56 AM
|
||||||
|
301033168 AyaNova subscription additional 250 customer users yearly 250customerusersyearly Product 12 months HD1 Oct 6, 2022, 12:59 AM
|
||||||
|
*/
|
||||||
|
//RAVEN licenses have one week padding to be on the safe side
|
||||||
|
var dtOneYear = DateTime.UtcNow.AddYears(1).AddDays(7);
|
||||||
|
var dtOneMonth = DateTime.UtcNow.AddMonths(1).AddDays(7);
|
||||||
|
switch (product.VendorCode)
|
||||||
|
{
|
||||||
|
|
||||||
|
case "301028317"://perpetual
|
||||||
|
newLicense.Users = purchase.Quantity;
|
||||||
|
newLicense.MaintenanceExpire = dtOneYear;
|
||||||
|
break;
|
||||||
|
case "301028467"://subscription monthly
|
||||||
|
newLicense.Users = purchase.Quantity;
|
||||||
|
newLicense.MaintenanceExpire = dtOneMonth;
|
||||||
|
//FUTURE: for now subscriptions all 20gb if ever add ability to go higher max data with product code etc then remove this
|
||||||
|
newLicense.MaxDataGB = 20;
|
||||||
|
break;
|
||||||
|
case "301028468"://subscription yearly
|
||||||
|
newLicense.Users = purchase.Quantity;
|
||||||
|
newLicense.MaintenanceExpire = dtOneYear;
|
||||||
|
//FUTURE: for now subscriptions all 20gb if ever add ability to go higher max data with product code etc then remove this
|
||||||
|
newLicense.MaxDataGB = 20;
|
||||||
|
break;
|
||||||
|
case "301033167"://Customer users monthly price
|
||||||
|
case "301033168"://Customer users yearly price
|
||||||
|
newLicense.CustomerUsers = purchase.Quantity;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
var err = $"SockBotProcessPurchasesIntoLicenses purchase: {purchase.Id} has product not part of RAVEN products expected: {product.Name}-{product.VendorCode}";
|
||||||
|
//serious issue requires immediate notification
|
||||||
|
await NotifyEventHelper.AddOpsProblemEvent(err);
|
||||||
|
log.LogError(err);
|
||||||
|
continue;
|
||||||
|
|
||||||
|
}//switch product code
|
||||||
|
}//each purchase in purchasegroup
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//IF raven license and have what is likely a recognizable dbid that ends in an = symbol then just make the new license and cancel the last one if that's necessary (NARRATOR: it wasn't, raven only ever fetches the newest)
|
//we have a new savable license at this point
|
||||||
|
if (newLicense != null)
|
||||||
|
{
|
||||||
|
LicenseBiz lbiz = LicenseBiz.GetBiz(ct);
|
||||||
|
newLicense = await lbiz.CreateAsync(newLicense);
|
||||||
|
if (newLicense == null)
|
||||||
|
{
|
||||||
|
//did not save, throw an error
|
||||||
|
throw new System.ApplicationException($"Error creating purchase: {lbiz.GetErrorsAsString()} for product item: {SalesItemProductVendorCode} vendor data :{vn.VendorData}");
|
||||||
// log.LogDebug($"Processing purchase id:{purchaseGroup[0].Id},purchasedate:{purchaseGroup.PurchaseDate}, custid:{purchaseGroup.CustomerId}");
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user