This commit is contained in:
2
.vscode/launch.json
vendored
2
.vscode/launch.json
vendored
@@ -25,7 +25,7 @@
|
|||||||
},
|
},
|
||||||
"env": {
|
"env": {
|
||||||
// "ASPNETCORE_ENVIRONMENT": "Development",
|
// "ASPNETCORE_ENVIRONMENT": "Development",
|
||||||
"SOCKEYE_JWT_SECRET": "1111111MyRandom32CharacterSecret",
|
"SOCKEYE_JWT_SECRET": "xxxxxxxxSockeye32CharacterSecret",
|
||||||
"SOCKEYE_LOG_LEVEL": "Info",
|
"SOCKEYE_LOG_LEVEL": "Info",
|
||||||
//"SOCKEYE_LOG_LEVEL": "Debug",
|
//"SOCKEYE_LOG_LEVEL": "Debug",
|
||||||
//"SOCKEYE_LOG_LEVEL": "Trace",
|
//"SOCKEYE_LOG_LEVEL": "Trace",
|
||||||
|
|||||||
@@ -19,7 +19,8 @@ namespace Sockeye.Api.ControllerHelpers
|
|||||||
UNKNOWN = 0,
|
UNKNOWN = 0,
|
||||||
///<summary>No access for anyone API completely locked down. Not set by user but rather by internal server operations like importing or backup.</summary>
|
///<summary>No access for anyone API completely locked down. Not set by user but rather by internal server operations like importing or backup.</summary>
|
||||||
Closed = 1,
|
Closed = 1,
|
||||||
|
///<summary>Access only to SuperUser account for migration from Rockfish</summary>
|
||||||
|
MigrateMode = 2,
|
||||||
///<summary>Access only to API Operations routes. Can be set by Ops user</summary>
|
///<summary>Access only to API Operations routes. Can be set by Ops user</summary>
|
||||||
OpsOnly = 3,
|
OpsOnly = 3,
|
||||||
///<summary>Open for all users (default). Can be set by Ops user</summary>
|
///<summary>Open for all users (default). Can be set by Ops user</summary>
|
||||||
|
|||||||
@@ -556,10 +556,14 @@ namespace Sockeye.Api.Controllers
|
|||||||
else if (keyNameInLowerCase == StringUtil.TrimTypeName(typeof(TrialRequestStatus).ToString()).ToLowerInvariant())
|
else if (keyNameInLowerCase == StringUtil.TrimTypeName(typeof(TrialRequestStatus).ToString()).ToLowerInvariant())
|
||||||
{
|
{
|
||||||
TranslationKeysToFetch.Add("TrialRequestStatusNew");
|
TranslationKeysToFetch.Add("TrialRequestStatusNew");
|
||||||
|
TranslationKeysToFetch.Add("TrialRequestStatusAwaitingEmailValidation");
|
||||||
|
TranslationKeysToFetch.Add("TrialRequestStatusAwaitingApproval");
|
||||||
TranslationKeysToFetch.Add("TrialRequestStatusApproved");
|
TranslationKeysToFetch.Add("TrialRequestStatusApproved");
|
||||||
TranslationKeysToFetch.Add("TrialRequestStatusRejected");
|
TranslationKeysToFetch.Add("TrialRequestStatusRejected");
|
||||||
var LT = await TranslationBiz.GetSubsetStaticAsync(TranslationKeysToFetch, translationId);
|
var LT = await TranslationBiz.GetSubsetStaticAsync(TranslationKeysToFetch, translationId);
|
||||||
ReturnList.Add(new NameIdItem() { Name = LT["TrialRequestStatusNew"], Id = (long)TrialRequestStatus.New });
|
ReturnList.Add(new NameIdItem() { Name = LT["TrialRequestStatusNew"], Id = (long)TrialRequestStatus.New });
|
||||||
|
ReturnList.Add(new NameIdItem() { Name = LT["TrialRequestStatusAwaitingEmailValidation"], Id = (long)TrialRequestStatus.AwaitingEmailValidation });
|
||||||
|
ReturnList.Add(new NameIdItem() { Name = LT["TrialRequestStatusAwaitingApproval"], Id = (long)TrialRequestStatus.AwaitingApproval });
|
||||||
ReturnList.Add(new NameIdItem() { Name = LT["TrialRequestStatusApproved"], Id = (long)TrialRequestStatus.Approved });
|
ReturnList.Add(new NameIdItem() { Name = LT["TrialRequestStatusApproved"], Id = (long)TrialRequestStatus.Approved });
|
||||||
ReturnList.Add(new NameIdItem() { Name = LT["TrialRequestStatusRejected"], Id = (long)TrialRequestStatus.Rejected });
|
ReturnList.Add(new NameIdItem() { Name = LT["TrialRequestStatusRejected"], Id = (long)TrialRequestStatus.Rejected });
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -633,6 +633,7 @@ namespace Sockeye.Biz
|
|||||||
//
|
//
|
||||||
public async Task HandlePotentialNotificationEvent(SockEvent ayaEvent, ICoreBizObjectModel proposedObj, ICoreBizObjectModel currentObj = null)
|
public async Task HandlePotentialNotificationEvent(SockEvent ayaEvent, ICoreBizObjectModel proposedObj, ICoreBizObjectModel currentObj = null)
|
||||||
{
|
{
|
||||||
|
if (ServerBootConfig.MIGRATING) return;
|
||||||
ILogger log = Sockeye.Util.ApplicationLogging.CreateLogger<CustomerBiz>();
|
ILogger log = Sockeye.Util.ApplicationLogging.CreateLogger<CustomerBiz>();
|
||||||
|
|
||||||
log.LogDebug($"HandlePotentialNotificationEvent processing: [SockType:{this.BizType}, AyaEvent:{ayaEvent}]");
|
log.LogDebug($"HandlePotentialNotificationEvent processing: [SockType:{this.BizType}, AyaEvent:{ayaEvent}]");
|
||||||
|
|||||||
@@ -270,6 +270,7 @@ namespace Sockeye.Biz
|
|||||||
public async Task HandlePotentialNotificationEvent(SockEvent ayaEvent, ICoreBizObjectModel proposedObj, ICoreBizObjectModel currentObj = null)
|
public async Task HandlePotentialNotificationEvent(SockEvent ayaEvent, ICoreBizObjectModel proposedObj, ICoreBizObjectModel currentObj = null)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
if (ServerBootConfig.MIGRATING) return;
|
||||||
ILogger log = Sockeye.Util.ApplicationLogging.CreateLogger<CustomerNoteBiz>();
|
ILogger log = Sockeye.Util.ApplicationLogging.CreateLogger<CustomerNoteBiz>();
|
||||||
log.LogDebug($"HandlePotentialNotificationEvent processing: [SockType:{this.BizType}, AyaEvent:{ayaEvent}]");
|
log.LogDebug($"HandlePotentialNotificationEvent processing: [SockType:{this.BizType}, AyaEvent:{ayaEvent}]");
|
||||||
|
|
||||||
|
|||||||
@@ -412,6 +412,7 @@ namespace Sockeye.Biz
|
|||||||
//
|
//
|
||||||
public async Task HandlePotentialNotificationEvent(SockEvent ayaEvent, ICoreBizObjectModel proposedObj, ICoreBizObjectModel currentObj = null)
|
public async Task HandlePotentialNotificationEvent(SockEvent ayaEvent, ICoreBizObjectModel proposedObj, ICoreBizObjectModel currentObj = null)
|
||||||
{
|
{
|
||||||
|
if (ServerBootConfig.MIGRATING) return;
|
||||||
ILogger log = Sockeye.Util.ApplicationLogging.CreateLogger<GZCaseBiz>();
|
ILogger log = Sockeye.Util.ApplicationLogging.CreateLogger<GZCaseBiz>();
|
||||||
|
|
||||||
log.LogDebug($"HandlePotentialNotificationEvent processing: [SockType:{this.BizType}, AyaEvent:{ayaEvent}]");
|
log.LogDebug($"HandlePotentialNotificationEvent processing: [SockType:{this.BizType}, AyaEvent:{ayaEvent}]");
|
||||||
|
|||||||
@@ -132,6 +132,14 @@ namespace Sockeye.Biz
|
|||||||
public async Task ImportRockfish(AyContext ct, ILogger log)
|
public async Task ImportRockfish(AyContext ct, ILogger log)
|
||||||
{
|
{
|
||||||
log.LogInformation("Start import from rockfish, authenticating");
|
log.LogInformation("Start import from rockfish, authenticating");
|
||||||
|
ApiServerState apiServerState = (ApiServerState)ServiceProviderProvider.Provider.GetService(typeof(ApiServerState));
|
||||||
|
|
||||||
|
//get the current server state so can set back to it later
|
||||||
|
ApiServerState.ServerState wasServerState = apiServerState.GetState();
|
||||||
|
string wasReason = apiServerState.Reason;
|
||||||
|
apiServerState.SetOpsOnly("Migrating from Rockfish");
|
||||||
|
ServerBootConfig.MIGRATING = true;
|
||||||
|
|
||||||
//Authenticate to rockfish
|
//Authenticate to rockfish
|
||||||
//string sUrl = $"{LICENSE_SERVER_URL_ROCKFISH}rvr";
|
//string sUrl = $"{LICENSE_SERVER_URL_ROCKFISH}rvr";
|
||||||
string URL_ROCKFISH = "https://rockfish.ayanova.com/";
|
string URL_ROCKFISH = "https://rockfish.ayanova.com/";
|
||||||
@@ -766,6 +774,12 @@ namespace Sockeye.Biz
|
|||||||
var msg = "*** RockFish import FAILED ***";
|
var msg = "*** RockFish import FAILED ***";
|
||||||
log.LogError(ex, msg);
|
log.LogError(ex, msg);
|
||||||
}
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
ServerBootConfig.MIGRATING = false;
|
||||||
|
log.LogInformation($"Migrate Rockfish: setting server state back to {wasServerState.ToString()}");
|
||||||
|
apiServerState.SetState(wasServerState, wasReason);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -553,6 +553,7 @@ namespace Sockeye.Biz
|
|||||||
//
|
//
|
||||||
public async Task HandlePotentialNotificationEvent(SockEvent ayaEvent, ICoreBizObjectModel proposedObj, ICoreBizObjectModel currentObj = null)
|
public async Task HandlePotentialNotificationEvent(SockEvent ayaEvent, ICoreBizObjectModel proposedObj, ICoreBizObjectModel currentObj = null)
|
||||||
{
|
{
|
||||||
|
if (ServerBootConfig.MIGRATING) return;
|
||||||
ILogger log = Sockeye.Util.ApplicationLogging.CreateLogger<HeadOfficeBiz>();
|
ILogger log = Sockeye.Util.ApplicationLogging.CreateLogger<HeadOfficeBiz>();
|
||||||
|
|
||||||
log.LogDebug($"HandlePotentialNotificationEvent processing: [SockType:{this.BizType}, AyaEvent:{ayaEvent}]");
|
log.LogDebug($"HandlePotentialNotificationEvent processing: [SockType:{this.BizType}, AyaEvent:{ayaEvent}]");
|
||||||
|
|||||||
@@ -972,6 +972,7 @@ namespace Sockeye.Biz
|
|||||||
//
|
//
|
||||||
public async Task HandlePotentialNotificationEvent(SockEvent ayaEvent, ICoreBizObjectModel proposedObj, ICoreBizObjectModel currentObj = null)
|
public async Task HandlePotentialNotificationEvent(SockEvent ayaEvent, ICoreBizObjectModel proposedObj, ICoreBizObjectModel currentObj = null)
|
||||||
{
|
{
|
||||||
|
if (ServerBootConfig.MIGRATING) return;
|
||||||
ILogger log = Sockeye.Util.ApplicationLogging.CreateLogger<LicenseBiz>();
|
ILogger log = Sockeye.Util.ApplicationLogging.CreateLogger<LicenseBiz>();
|
||||||
|
|
||||||
log.LogDebug($"HandlePotentialNotificationEvent processing: [SockType:{this.BizType}, AyaEvent:{ayaEvent}]");
|
log.LogDebug($"HandlePotentialNotificationEvent processing: [SockType:{this.BizType}, AyaEvent:{ayaEvent}]");
|
||||||
@@ -998,7 +999,6 @@ namespace Sockeye.Biz
|
|||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}//end of process notifications
|
}//end of process notifications
|
||||||
|
|||||||
@@ -485,6 +485,7 @@ namespace Sockeye.Biz
|
|||||||
//
|
//
|
||||||
public async Task HandlePotentialNotificationEvent(SockEvent ayaEvent, ICoreBizObjectModel proposedObj, ICoreBizObjectModel currentObj = null)
|
public async Task HandlePotentialNotificationEvent(SockEvent ayaEvent, ICoreBizObjectModel proposedObj, ICoreBizObjectModel currentObj = null)
|
||||||
{
|
{
|
||||||
|
if (ServerBootConfig.MIGRATING) return;
|
||||||
ILogger log = Sockeye.Util.ApplicationLogging.CreateLogger<MemoBiz>();
|
ILogger log = Sockeye.Util.ApplicationLogging.CreateLogger<MemoBiz>();
|
||||||
|
|
||||||
log.LogDebug($"HandlePotentialNotificationEvent processing: [SockType:{this.BizType}, AyaEvent:{ayaEvent}]");
|
log.LogDebug($"HandlePotentialNotificationEvent processing: [SockType:{this.BizType}, AyaEvent:{ayaEvent}]");
|
||||||
|
|||||||
@@ -404,6 +404,7 @@ namespace Sockeye.Biz
|
|||||||
//
|
//
|
||||||
public async Task HandlePotentialNotificationEvent(SockEvent ayaEvent, ICoreBizObjectModel proposedObj, ICoreBizObjectModel currentObj = null)
|
public async Task HandlePotentialNotificationEvent(SockEvent ayaEvent, ICoreBizObjectModel proposedObj, ICoreBizObjectModel currentObj = null)
|
||||||
{
|
{
|
||||||
|
if (ServerBootConfig.MIGRATING) return;
|
||||||
ILogger log = Sockeye.Util.ApplicationLogging.CreateLogger<ProductBiz>();
|
ILogger log = Sockeye.Util.ApplicationLogging.CreateLogger<ProductBiz>();
|
||||||
|
|
||||||
log.LogDebug($"HandlePotentialNotificationEvent processing: [SockType:{this.BizType}, AyaEvent:{ayaEvent}]");
|
log.LogDebug($"HandlePotentialNotificationEvent processing: [SockType:{this.BizType}, AyaEvent:{ayaEvent}]");
|
||||||
|
|||||||
@@ -427,6 +427,7 @@ namespace Sockeye.Biz
|
|||||||
//
|
//
|
||||||
public async Task HandlePotentialNotificationEvent(SockEvent ayaEvent, ICoreBizObjectModel proposedObj, ICoreBizObjectModel currentObj = null)
|
public async Task HandlePotentialNotificationEvent(SockEvent ayaEvent, ICoreBizObjectModel proposedObj, ICoreBizObjectModel currentObj = null)
|
||||||
{
|
{
|
||||||
|
if (ServerBootConfig.MIGRATING) return;
|
||||||
ILogger log = Sockeye.Util.ApplicationLogging.CreateLogger<PurchaseBiz>();
|
ILogger log = Sockeye.Util.ApplicationLogging.CreateLogger<PurchaseBiz>();
|
||||||
|
|
||||||
log.LogDebug($"HandlePotentialNotificationEvent processing: [SockType:{this.BizType}, AyaEvent:{ayaEvent}]");
|
log.LogDebug($"HandlePotentialNotificationEvent processing: [SockType:{this.BizType}, AyaEvent:{ayaEvent}]");
|
||||||
@@ -452,7 +453,35 @@ namespace Sockeye.Biz
|
|||||||
if (ayaEvent == SockEvent.Created || ayaEvent == SockEvent.Modified)
|
if (ayaEvent == SockEvent.Created || ayaEvent == SockEvent.Modified)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
//# NEW PURCHASE VENDOR NOTIFICATION
|
||||||
|
if (ayaEvent == SockEvent.Created && (!string.IsNullOrWhiteSpace(o.VendorData)))
|
||||||
|
{
|
||||||
|
//Get product name and get customer name to notify
|
||||||
|
var productName = await ct.Product.AsNoTracking().Where(x => x.Id == o.ProductId).Select(x => x.Name).FirstOrDefaultAsync();
|
||||||
|
var customerName = await ct.Customer.AsNoTracking().Where(x => x.Id == o.CustomerId).Select(x => x.Name).FirstOrDefaultAsync();
|
||||||
|
{
|
||||||
|
//Newly created only and immediate delivery so no need to remove
|
||||||
|
var subs = await ct.NotifySubscription.AsNoTracking().Where(z => z.EventType == NotifyEventType.PurchaseNotificationReceived).ToListAsync();
|
||||||
|
foreach (var sub in subs)
|
||||||
|
{
|
||||||
|
//not for inactive users
|
||||||
|
if (!await UserBiz.UserIsActive(sub.UserId)) continue;
|
||||||
|
|
||||||
|
NotifyEvent n = new NotifyEvent()
|
||||||
|
{
|
||||||
|
EventType = NotifyEventType.PurchaseNotificationReceived,
|
||||||
|
UserId = sub.UserId,
|
||||||
|
SockType = BizType,
|
||||||
|
ObjectId = o.Id,
|
||||||
|
NotifySubscriptionId = sub.Id,
|
||||||
|
Name = $"Purchase - {customerName}, {productName} x {o.Quantity} "
|
||||||
|
};
|
||||||
|
await ct.NotifyEvent.AddAsync(n);
|
||||||
|
log.LogDebug($"Adding NotifyEvent: [{n.ToString()}]");
|
||||||
|
await ct.SaveChangesAsync();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}//new purchase notification event
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -475,6 +475,7 @@ namespace Sockeye.Biz
|
|||||||
//
|
//
|
||||||
public async Task HandlePotentialNotificationEvent(SockEvent ayaEvent, ICoreBizObjectModel proposedObj, ICoreBizObjectModel currentObj = null)
|
public async Task HandlePotentialNotificationEvent(SockEvent ayaEvent, ICoreBizObjectModel proposedObj, ICoreBizObjectModel currentObj = null)
|
||||||
{
|
{
|
||||||
|
if (ServerBootConfig.MIGRATING) return;
|
||||||
ILogger log = Sockeye.Util.ApplicationLogging.CreateLogger<ReminderBiz>();
|
ILogger log = Sockeye.Util.ApplicationLogging.CreateLogger<ReminderBiz>();
|
||||||
|
|
||||||
log.LogDebug($"HandlePotentialNotificationEvent processing: [SockType:{this.BizType}, AyaEvent:{ayaEvent}]");
|
log.LogDebug($"HandlePotentialNotificationEvent processing: [SockType:{this.BizType}, AyaEvent:{ayaEvent}]");
|
||||||
|
|||||||
@@ -549,6 +549,7 @@ namespace Sockeye.Biz
|
|||||||
//
|
//
|
||||||
public async Task HandlePotentialNotificationEvent(SockEvent ayaEvent, ICoreBizObjectModel proposedObj, ICoreBizObjectModel currentObj = null)
|
public async Task HandlePotentialNotificationEvent(SockEvent ayaEvent, ICoreBizObjectModel proposedObj, ICoreBizObjectModel currentObj = null)
|
||||||
{
|
{
|
||||||
|
if (ServerBootConfig.MIGRATING) return;
|
||||||
ILogger log = Sockeye.Util.ApplicationLogging.CreateLogger<ReviewBiz>();
|
ILogger log = Sockeye.Util.ApplicationLogging.CreateLogger<ReviewBiz>();
|
||||||
|
|
||||||
log.LogDebug($"HandlePotentialNotificationEvent processing: [SockType:{this.BizType}, AyaEvent:{ayaEvent}]");
|
log.LogDebug($"HandlePotentialNotificationEvent processing: [SockType:{this.BizType}, AyaEvent:{ayaEvent}]");
|
||||||
|
|||||||
@@ -410,6 +410,7 @@ namespace Sockeye.Biz
|
|||||||
//
|
//
|
||||||
public async Task HandlePotentialNotificationEvent(SockEvent ayaEvent, ICoreBizObjectModel proposedObj, ICoreBizObjectModel currentObj = null)
|
public async Task HandlePotentialNotificationEvent(SockEvent ayaEvent, ICoreBizObjectModel proposedObj, ICoreBizObjectModel currentObj = null)
|
||||||
{
|
{
|
||||||
|
if (ServerBootConfig.MIGRATING) return;
|
||||||
ILogger log = Sockeye.Util.ApplicationLogging.CreateLogger<SubscriptionServerBiz>();
|
ILogger log = Sockeye.Util.ApplicationLogging.CreateLogger<SubscriptionServerBiz>();
|
||||||
|
|
||||||
log.LogDebug($"HandlePotentialNotificationEvent processing: [SockType:{this.BizType}, AyaEvent:{ayaEvent}]");
|
log.LogDebug($"HandlePotentialNotificationEvent processing: [SockType:{this.BizType}, AyaEvent:{ayaEvent}]");
|
||||||
@@ -435,6 +436,39 @@ namespace Sockeye.Biz
|
|||||||
if (ayaEvent == SockEvent.Created || ayaEvent == SockEvent.Modified)
|
if (ayaEvent == SockEvent.Created || ayaEvent == SockEvent.Modified)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
//# NEW TRIAL SERVER REQUEST
|
||||||
|
if (ayaEvent == SockEvent.Created && o.Trial == true)
|
||||||
|
{
|
||||||
|
{
|
||||||
|
//Conditions: must match specific status id value and also tags below
|
||||||
|
//Newly created only and immediate delivery so no need to remove
|
||||||
|
var subs = await ct.NotifySubscription.AsNoTracking().Where(z => z.EventType == NotifyEventType.SubscriptionServerRequestReceived).ToListAsync();
|
||||||
|
foreach (var sub in subs)
|
||||||
|
{
|
||||||
|
//not for inactive users
|
||||||
|
if (!await UserBiz.UserIsActive(sub.UserId)) continue;
|
||||||
|
|
||||||
|
//Tag match? (will be true if no sub tags so always safe to call this)
|
||||||
|
if (NotifyEventHelper.ObjectHasAllSubscriptionTags(o.Tags, sub.Tags))
|
||||||
|
{
|
||||||
|
NotifyEvent n = new NotifyEvent()
|
||||||
|
{
|
||||||
|
EventType = NotifyEventType.SubscriptionServerRequestReceived,
|
||||||
|
UserId = sub.UserId,
|
||||||
|
SockType = BizType,
|
||||||
|
ObjectId = o.Id,
|
||||||
|
NotifySubscriptionId = sub.Id,
|
||||||
|
Name = $"{o.TrialCompany} - trial server requested"
|
||||||
|
};
|
||||||
|
await ct.NotifyEvent.AddAsync(n);
|
||||||
|
log.LogDebug($"Adding NotifyEvent: [{n.ToString()}]");
|
||||||
|
await ct.SaveChangesAsync();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}//new trial server request event
|
||||||
|
|
||||||
|
|
||||||
//# SUBSCRIPTION SERVER EXPIRY
|
//# SUBSCRIPTION SERVER EXPIRY
|
||||||
{
|
{
|
||||||
//notify users about warranty expiry (time delayed)
|
//notify users about warranty expiry (time delayed)
|
||||||
@@ -498,7 +532,7 @@ namespace Sockeye.Biz
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}//subscription server expiry event
|
}//subscription server last updated event
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -405,6 +405,7 @@ namespace Sockeye.Biz
|
|||||||
//
|
//
|
||||||
public async Task HandlePotentialNotificationEvent(SockEvent ayaEvent, ICoreBizObjectModel proposedObj, ICoreBizObjectModel currentObj = null)
|
public async Task HandlePotentialNotificationEvent(SockEvent ayaEvent, ICoreBizObjectModel proposedObj, ICoreBizObjectModel currentObj = null)
|
||||||
{
|
{
|
||||||
|
if (ServerBootConfig.MIGRATING) return;
|
||||||
ILogger log = Sockeye.Util.ApplicationLogging.CreateLogger<TrialLicenseRequestBiz>();
|
ILogger log = Sockeye.Util.ApplicationLogging.CreateLogger<TrialLicenseRequestBiz>();
|
||||||
|
|
||||||
log.LogDebug($"HandlePotentialNotificationEvent processing: [SockType:{this.BizType}, AyaEvent:{ayaEvent}]");
|
log.LogDebug($"HandlePotentialNotificationEvent processing: [SockType:{this.BizType}, AyaEvent:{ayaEvent}]");
|
||||||
@@ -418,21 +419,135 @@ namespace Sockeye.Biz
|
|||||||
//SPECIFIC EVENTS FOR THIS OBJECT
|
//SPECIFIC EVENTS FOR THIS OBJECT
|
||||||
TrialLicenseRequest o = (TrialLicenseRequest)proposedObj;
|
TrialLicenseRequest o = (TrialLicenseRequest)proposedObj;
|
||||||
|
|
||||||
//## DELETED EVENTS
|
//# TRIAL KEY REQUEST EMAIL CONFIRMED - NOTIFY US IS READY FOR PROCESSING
|
||||||
//any event added below needs to be removed, so
|
if (ayaEvent == SockEvent.Modified && o.EmailValidated && o.Status == TrialRequestStatus.AwaitingApproval && o.Processed == null)
|
||||||
//just blanket remove any event for this object of eventtype that would be added below here
|
|
||||||
//do it regardless any time there's an update and then
|
|
||||||
//let this code below handle the refreshing addition that could have changes
|
|
||||||
//await NotifyEventHelper.ClearPriorEventsForObject(ct, SockType.TrialLicenseRequest, o.Id, NotifyEventType.ContractExpiring);
|
|
||||||
|
|
||||||
|
|
||||||
//## CREATED / MODIFIED EVENTS
|
|
||||||
if (ayaEvent == SockEvent.Created || ayaEvent == SockEvent.Modified)
|
|
||||||
{
|
{
|
||||||
|
{
|
||||||
|
//Newly created only and immediate delivery so no need to remove
|
||||||
|
var subs = await ct.NotifySubscription.AsNoTracking().Where(z => z.EventType == NotifyEventType.LicenseTrialRequestReceived).ToListAsync();
|
||||||
|
foreach (var sub in subs)
|
||||||
|
{
|
||||||
|
//not for inactive users
|
||||||
|
if (!await UserBiz.UserIsActive(sub.UserId)) continue;
|
||||||
|
|
||||||
|
NotifyEvent n = new NotifyEvent()
|
||||||
|
{
|
||||||
|
EventType = NotifyEventType.LicenseTrialRequestReceived,
|
||||||
|
UserId = sub.UserId,
|
||||||
|
SockType = BizType,
|
||||||
|
ObjectId = o.Id,
|
||||||
|
NotifySubscriptionId = sub.Id,
|
||||||
|
Name = $"{o.CompanyName} - trial license requested"
|
||||||
|
};
|
||||||
|
await ct.NotifyEvent.AddAsync(n);
|
||||||
|
log.LogDebug($"Adding NotifyEvent: [{n.ToString()}]");
|
||||||
|
await ct.SaveChangesAsync();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}//new trial key request event
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//## ------------------ DEFAULT NOTIFICATIONS ----------------
|
||||||
|
//ValidateEmail request message,RavenTrialApproved (which sends pending manual generation message) and RavenTrialRejected messages are sent in this block
|
||||||
|
//
|
||||||
|
//
|
||||||
|
var custInfo = await ct.Customer.AsNoTracking().Where(x => x.Id == o.CustomerId).Select(x => new { x.Active, x.Tags, x.EmailAddress }).FirstOrDefaultAsync();
|
||||||
|
if (custInfo != null && custInfo.Active && !string.IsNullOrWhiteSpace(custInfo.EmailAddress))//can this customer receive *any* customer notifications?
|
||||||
|
{
|
||||||
|
//-------- Customer is notifiable ------
|
||||||
|
|
||||||
|
// //# STATUS CHANGE (create new status)
|
||||||
|
// {
|
||||||
|
// //Conditions: must match specific status id value and also tags below
|
||||||
|
// //delivery is immediate so no need to remove old ones of this kind
|
||||||
|
// var subs = await ct.CustomerNotifySubscription.AsNoTracking().Where(z => z.EventType == NotifyEventType.WorkorderStatusChange && z.IdValue == oProposed.WorkOrderStatusId).OrderBy(z => z.Id).ToListAsync();
|
||||||
|
// foreach (var sub in subs)
|
||||||
|
// {
|
||||||
|
// //Object tags must match and Customer tags must match
|
||||||
|
// if (NotifyEventHelper.ObjectHasAllSubscriptionTags(WorkorderInfo.Tags, sub.Tags) && NotifyEventHelper.ObjectHasAllSubscriptionTags(custInfo.Tags, sub.CustomerTags))
|
||||||
|
// {
|
||||||
|
// CustomerNotifyEvent n = new CustomerNotifyEvent()
|
||||||
|
// {
|
||||||
|
// EventType = NotifyEventType.WorkorderStatusChange,
|
||||||
|
// CustomerId = WorkorderInfo.CustomerId,
|
||||||
|
// AyaType = AyaType.WorkOrder,
|
||||||
|
// ObjectId = oProposed.WorkOrderId,
|
||||||
|
// CustomerNotifySubscriptionId = sub.Id,
|
||||||
|
// Name = WorkorderInfo.Serial.ToString()
|
||||||
|
// };
|
||||||
|
// await ct.CustomerNotifyEvent.AddAsync(n);
|
||||||
|
// log.LogDebug($"Adding CustomerNotifyEvent: [{n.ToString()}]");
|
||||||
|
// await ct.SaveChangesAsync();
|
||||||
|
// break;//we have a match no need to process any further subs for this event
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }//workorder status change event
|
||||||
|
|
||||||
|
|
||||||
|
// //# STATUS AGE
|
||||||
|
// {
|
||||||
|
// //WorkorderStatusAge = 24,//* Workorder STATUS unchanged for set time (stuck in state), conditional on: Duration (how long stuck), exact status selected IdValue, Tags. Advance notice can NOT be set
|
||||||
|
// //Always clear any old ones for this object as they are all irrelevant the moment the state has changed:
|
||||||
|
// await NotifyEventHelper.ClearPriorCustomerNotifyEventsForObject(ct, proposedObj.AyaType, proposedObj.Id, NotifyEventType.WorkorderStatusAge);
|
||||||
|
// var subs = await ct.CustomerNotifySubscription.AsNoTracking().Where(z => z.EventType == NotifyEventType.WorkorderStatusAge && z.IdValue == oProposed.WorkOrderStatusId).OrderBy(z => z.Id).ToListAsync();
|
||||||
|
// foreach (var sub in subs)
|
||||||
|
// {
|
||||||
|
// //Object tags must match and Customer tags must match
|
||||||
|
// if (NotifyEventHelper.ObjectHasAllSubscriptionTags(WorkorderInfo.Tags, sub.Tags) && NotifyEventHelper.ObjectHasAllSubscriptionTags(custInfo.Tags, sub.CustomerTags))
|
||||||
|
// {
|
||||||
|
// CustomerNotifyEvent n = new CustomerNotifyEvent()
|
||||||
|
// {
|
||||||
|
// EventType = NotifyEventType.WorkorderStatusAge,
|
||||||
|
// CustomerId = WorkorderInfo.CustomerId,
|
||||||
|
// AyaType = AyaType.WorkOrder,
|
||||||
|
// ObjectId = oProposed.WorkOrderId,
|
||||||
|
// CustomerNotifySubscriptionId = sub.Id,
|
||||||
|
// Name = WorkorderInfo.Serial.ToString()
|
||||||
|
// };
|
||||||
|
// await ct.CustomerNotifyEvent.AddAsync(n);
|
||||||
|
// log.LogDebug($"Adding CustomerNotifyEvent: [{n.ToString()}]");
|
||||||
|
// await ct.SaveChangesAsync();
|
||||||
|
// break;//we have a match no need to process any further subs for this event
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }//workorder status age event
|
||||||
|
|
||||||
|
|
||||||
|
// //# WorkorderCompleted
|
||||||
|
// {
|
||||||
|
// if (wos.Completed)
|
||||||
|
// {
|
||||||
|
// var subs = await ct.CustomerNotifySubscription.AsNoTracking().Where(z => z.EventType == NotifyEventType.WorkorderCompleted).OrderBy(z => z.Id).ToListAsync();
|
||||||
|
// foreach (var sub in subs)
|
||||||
|
// {
|
||||||
|
// //Object tags must match and Customer tags must match
|
||||||
|
// if (NotifyEventHelper.ObjectHasAllSubscriptionTags(WorkorderInfo.Tags, sub.Tags) && NotifyEventHelper.ObjectHasAllSubscriptionTags(custInfo.Tags, sub.CustomerTags))
|
||||||
|
// {
|
||||||
|
|
||||||
|
// CustomerNotifyEvent n = new CustomerNotifyEvent()
|
||||||
|
// {
|
||||||
|
// EventType = NotifyEventType.WorkorderCompleted,
|
||||||
|
// CustomerId = WorkorderInfo.CustomerId,
|
||||||
|
// AyaType = AyaType.WorkOrder,
|
||||||
|
// ObjectId = oProposed.WorkOrderId,
|
||||||
|
// CustomerNotifySubscriptionId = sub.Id,
|
||||||
|
// Name = WorkorderInfo.Serial.ToString()
|
||||||
|
// };
|
||||||
|
// await ct.CustomerNotifyEvent.AddAsync(n);
|
||||||
|
// log.LogDebug($"Adding CustomerNotifyEvent: [{n.ToString()}]");
|
||||||
|
// await ct.SaveChangesAsync();
|
||||||
|
// break;//we have a match no need to process any further subs for this event
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }//WorkorderCompleted
|
||||||
|
|
||||||
|
//-----------------------
|
||||||
|
} //------------------ /default notifications ---------------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}//end of process notifications
|
}//end of process notifications
|
||||||
|
|
||||||
|
|||||||
@@ -3,8 +3,10 @@ namespace Sockeye.Biz
|
|||||||
public enum TrialRequestStatus
|
public enum TrialRequestStatus
|
||||||
{
|
{
|
||||||
New = 0,
|
New = 0,
|
||||||
Approved = 1,
|
AwaitingEmailValidation = 1,
|
||||||
Rejected = 2
|
AwaitingApproval = 2,
|
||||||
|
Approved = 3,
|
||||||
|
Rejected = 4
|
||||||
}
|
}
|
||||||
|
|
||||||
}//eons
|
}//eons
|
||||||
@@ -954,6 +954,7 @@ namespace Sockeye.Biz
|
|||||||
//
|
//
|
||||||
public async Task HandlePotentialNotificationEvent(SockEvent ayaEvent, ICoreBizObjectModel proposedObj, ICoreBizObjectModel currentObj = null)
|
public async Task HandlePotentialNotificationEvent(SockEvent ayaEvent, ICoreBizObjectModel proposedObj, ICoreBizObjectModel currentObj = null)
|
||||||
{
|
{
|
||||||
|
if (ServerBootConfig.MIGRATING) return;
|
||||||
ILogger log = Sockeye.Util.ApplicationLogging.CreateLogger<UserBiz>();
|
ILogger log = Sockeye.Util.ApplicationLogging.CreateLogger<UserBiz>();
|
||||||
|
|
||||||
log.LogDebug($"HandlePotentialNotificationEvent processing: [SockType:{this.BizType}, AyaEvent:{ayaEvent}]");
|
log.LogDebug($"HandlePotentialNotificationEvent processing: [SockType:{this.BizType}, AyaEvent:{ayaEvent}]");
|
||||||
|
|||||||
@@ -538,6 +538,7 @@ namespace Sockeye.Biz
|
|||||||
//
|
//
|
||||||
public async Task HandlePotentialNotificationEvent(SockEvent SockEvent, ICoreBizObjectModel proposedObj, ICoreBizObjectModel currentObj = null)
|
public async Task HandlePotentialNotificationEvent(SockEvent SockEvent, ICoreBizObjectModel proposedObj, ICoreBizObjectModel currentObj = null)
|
||||||
{
|
{
|
||||||
|
if (ServerBootConfig.MIGRATING) return;
|
||||||
ILogger log = Sockeye.Util.ApplicationLogging.CreateLogger<VendorBiz>();
|
ILogger log = Sockeye.Util.ApplicationLogging.CreateLogger<VendorBiz>();
|
||||||
|
|
||||||
log.LogDebug($"HandlePotentialNotificationEvent processing: [SockType:{this.BizType}, SockEvent:{SockEvent}]");
|
log.LogDebug($"HandlePotentialNotificationEvent processing: [SockType:{this.BizType}, SockEvent:{SockEvent}]");
|
||||||
|
|||||||
@@ -980,6 +980,8 @@ $BODY$ LANGUAGE PLPGSQL STABLE");
|
|||||||
await ExecQueryAsync("INSERT INTO atranslationitem(translationid,key,display) SELECT t.id, 'TrialRequestStatusNew', 'New' FROM atranslation t where t.baselanguage = 'en'");
|
await ExecQueryAsync("INSERT INTO atranslationitem(translationid,key,display) SELECT t.id, 'TrialRequestStatusNew', 'New' FROM atranslation t where t.baselanguage = 'en'");
|
||||||
await ExecQueryAsync("INSERT INTO atranslationitem(translationid,key,display) SELECT t.id, 'TrialRequestStatusApproved', 'Approved' FROM atranslation t where t.baselanguage = 'en'");
|
await ExecQueryAsync("INSERT INTO atranslationitem(translationid,key,display) SELECT t.id, 'TrialRequestStatusApproved', 'Approved' FROM atranslation t where t.baselanguage = 'en'");
|
||||||
await ExecQueryAsync("INSERT INTO atranslationitem(translationid,key,display) SELECT t.id, 'TrialRequestStatusRejected', 'Rejected' FROM atranslation t where t.baselanguage = 'en'");
|
await ExecQueryAsync("INSERT INTO atranslationitem(translationid,key,display) SELECT t.id, 'TrialRequestStatusRejected', 'Rejected' FROM atranslation t where t.baselanguage = 'en'");
|
||||||
|
await ExecQueryAsync("INSERT INTO atranslationitem(translationid,key,display) SELECT t.id, 'TrialRequestStatusAwaitingEmailValidation', 'Awaiting email validation' FROM atranslation t where t.baselanguage = 'en'");
|
||||||
|
await ExecQueryAsync("INSERT INTO atranslationitem(translationid,key,display) SELECT t.id, 'TrialRequestStatusAwaitingApproval', 'Awaiting approval' FROM atranslation t where t.baselanguage = 'en'");
|
||||||
|
|
||||||
//spanish translations
|
//spanish translations
|
||||||
await ExecQueryAsync("INSERT INTO atranslationitem(translationid,key,display) SELECT t.id, 'TrialLicenseRequest', 'Trial license request' FROM atranslation t where t.baselanguage = 'es'");
|
await ExecQueryAsync("INSERT INTO atranslationitem(translationid,key,display) SELECT t.id, 'TrialLicenseRequest', 'Trial license request' FROM atranslation t where t.baselanguage = 'es'");
|
||||||
@@ -995,6 +997,8 @@ $BODY$ LANGUAGE PLPGSQL STABLE");
|
|||||||
await ExecQueryAsync("INSERT INTO atranslationitem(translationid,key,display) SELECT t.id, 'TrialRequestStatusNew', 'New' FROM atranslation t where t.baselanguage = 'es'");
|
await ExecQueryAsync("INSERT INTO atranslationitem(translationid,key,display) SELECT t.id, 'TrialRequestStatusNew', 'New' FROM atranslation t where t.baselanguage = 'es'");
|
||||||
await ExecQueryAsync("INSERT INTO atranslationitem(translationid,key,display) SELECT t.id, 'TrialRequestStatusApproved', 'Approved' FROM atranslation t where t.baselanguage = 'es'");
|
await ExecQueryAsync("INSERT INTO atranslationitem(translationid,key,display) SELECT t.id, 'TrialRequestStatusApproved', 'Approved' FROM atranslation t where t.baselanguage = 'es'");
|
||||||
await ExecQueryAsync("INSERT INTO atranslationitem(translationid,key,display) SELECT t.id, 'TrialRequestStatusRejected', 'Rejected' FROM atranslation t where t.baselanguage = 'es'");
|
await ExecQueryAsync("INSERT INTO atranslationitem(translationid,key,display) SELECT t.id, 'TrialRequestStatusRejected', 'Rejected' FROM atranslation t where t.baselanguage = 'es'");
|
||||||
|
await ExecQueryAsync("INSERT INTO atranslationitem(translationid,key,display) SELECT t.id, 'TrialRequestStatusAwaitingEmailValidation', 'Awaiting email validation' FROM atranslation t where t.baselanguage = 'es'");
|
||||||
|
await ExecQueryAsync("INSERT INTO atranslationitem(translationid,key,display) SELECT t.id, 'TrialRequestStatusAwaitingApproval', 'Awaiting approval' FROM atranslation t where t.baselanguage = 'es'");
|
||||||
|
|
||||||
//french translations
|
//french translations
|
||||||
await ExecQueryAsync("INSERT INTO atranslationitem(translationid,key,display) SELECT t.id, 'TrialLicenseRequest', 'Trial license request' FROM atranslation t where t.baselanguage = 'fr'");
|
await ExecQueryAsync("INSERT INTO atranslationitem(translationid,key,display) SELECT t.id, 'TrialLicenseRequest', 'Trial license request' FROM atranslation t where t.baselanguage = 'fr'");
|
||||||
@@ -1010,6 +1014,8 @@ $BODY$ LANGUAGE PLPGSQL STABLE");
|
|||||||
await ExecQueryAsync("INSERT INTO atranslationitem(translationid,key,display) SELECT t.id, 'TrialRequestStatusNew', 'New' FROM atranslation t where t.baselanguage = 'fr'");
|
await ExecQueryAsync("INSERT INTO atranslationitem(translationid,key,display) SELECT t.id, 'TrialRequestStatusNew', 'New' FROM atranslation t where t.baselanguage = 'fr'");
|
||||||
await ExecQueryAsync("INSERT INTO atranslationitem(translationid,key,display) SELECT t.id, 'TrialRequestStatusApproved', 'Approved' FROM atranslation t where t.baselanguage = 'fr'");
|
await ExecQueryAsync("INSERT INTO atranslationitem(translationid,key,display) SELECT t.id, 'TrialRequestStatusApproved', 'Approved' FROM atranslation t where t.baselanguage = 'fr'");
|
||||||
await ExecQueryAsync("INSERT INTO atranslationitem(translationid,key,display) SELECT t.id, 'TrialRequestStatusRejected', 'Rejected' FROM atranslation t where t.baselanguage = 'fr'");
|
await ExecQueryAsync("INSERT INTO atranslationitem(translationid,key,display) SELECT t.id, 'TrialRequestStatusRejected', 'Rejected' FROM atranslation t where t.baselanguage = 'fr'");
|
||||||
|
await ExecQueryAsync("INSERT INTO atranslationitem(translationid,key,display) SELECT t.id, 'TrialRequestStatusAwaitingEmailValidation', 'Awaiting email validation' FROM atranslation t where t.baselanguage = 'fr'");
|
||||||
|
await ExecQueryAsync("INSERT INTO atranslationitem(translationid,key,display) SELECT t.id, 'TrialRequestStatusAwaitingApproval', 'Awaiting approval' FROM atranslation t where t.baselanguage = 'fr'");
|
||||||
|
|
||||||
//german translations
|
//german translations
|
||||||
await ExecQueryAsync("INSERT INTO atranslationitem(translationid,key,display) SELECT t.id, 'TrialLicenseRequest', 'Trial license request' FROM atranslation t where t.baselanguage = 'de'");
|
await ExecQueryAsync("INSERT INTO atranslationitem(translationid,key,display) SELECT t.id, 'TrialLicenseRequest', 'Trial license request' FROM atranslation t where t.baselanguage = 'de'");
|
||||||
@@ -1025,6 +1031,8 @@ $BODY$ LANGUAGE PLPGSQL STABLE");
|
|||||||
await ExecQueryAsync("INSERT INTO atranslationitem(translationid,key,display) SELECT t.id, 'TrialRequestStatusNew', 'New' FROM atranslation t where t.baselanguage = 'de'");
|
await ExecQueryAsync("INSERT INTO atranslationitem(translationid,key,display) SELECT t.id, 'TrialRequestStatusNew', 'New' FROM atranslation t where t.baselanguage = 'de'");
|
||||||
await ExecQueryAsync("INSERT INTO atranslationitem(translationid,key,display) SELECT t.id, 'TrialRequestStatusApproved', 'Approved' FROM atranslation t where t.baselanguage = 'de'");
|
await ExecQueryAsync("INSERT INTO atranslationitem(translationid,key,display) SELECT t.id, 'TrialRequestStatusApproved', 'Approved' FROM atranslation t where t.baselanguage = 'de'");
|
||||||
await ExecQueryAsync("INSERT INTO atranslationitem(translationid,key,display) SELECT t.id, 'TrialRequestStatusRejected', 'Rejected' FROM atranslation t where t.baselanguage = 'de'");
|
await ExecQueryAsync("INSERT INTO atranslationitem(translationid,key,display) SELECT t.id, 'TrialRequestStatusRejected', 'Rejected' FROM atranslation t where t.baselanguage = 'de'");
|
||||||
|
await ExecQueryAsync("INSERT INTO atranslationitem(translationid,key,display) SELECT t.id, 'TrialRequestStatusAwaitingEmailValidation', 'Awaiting email validation' FROM atranslation t where t.baselanguage = 'de'");
|
||||||
|
await ExecQueryAsync("INSERT INTO atranslationitem(translationid,key,display) SELECT t.id, 'TrialRequestStatusAwaitingApproval', 'Awaiting approval' FROM atranslation t where t.baselanguage = 'de'");
|
||||||
|
|
||||||
|
|
||||||
#endregion triallicenserequest
|
#endregion triallicenserequest
|
||||||
|
|||||||
@@ -26,7 +26,11 @@ namespace Sockeye.Util
|
|||||||
internal const long MAX_TRANSLATION_UPLOAD_BYTES = 15728640;//15MiB limit; currently export file is 200kb * 50 maximum at a time = 15mb
|
internal const long MAX_TRANSLATION_UPLOAD_BYTES = 15728640;//15MiB limit; currently export file is 200kb * 50 maximum at a time = 15mb
|
||||||
//############################################################################################################
|
//############################################################################################################
|
||||||
|
|
||||||
|
//############################
|
||||||
|
//MIGRATING FLAG INTERNAL ONLY
|
||||||
|
//used to speed up rockfish migration with bypasses to notification processing
|
||||||
|
internal static bool MIGRATING { get; set; }
|
||||||
|
//############################
|
||||||
|
|
||||||
//Diagnostic static values used during development, may not be related to config at all, this is just a convenient class to put them in
|
//Diagnostic static values used during development, may not be related to config at all, this is just a convenient class to put them in
|
||||||
#if (DEBUG)
|
#if (DEBUG)
|
||||||
|
|||||||
31
todo.txt
31
todo.txt
@@ -1,11 +1,22 @@
|
|||||||
TODO:
|
TODO:
|
||||||
|
|
||||||
- Subscriptionserverbiz state change trigger potential notification and event log event!!!
|
|
||||||
|
|
||||||
- Event log and event for server state change event should trigger an entry in the event log automatically
|
|
||||||
- events serverstate change can subscribe and be alerted etc
|
|
||||||
|
|
||||||
- Purchase event must trigger notification event subscribable (might already due to created etc)
|
- Purchase event must trigger notification event subscribable (might already due to created etc)
|
||||||
|
- figure out and implement default notifications for Customers where appropriate
|
||||||
|
these do not need to be subscribed to, they are automatic unless we need a way to prevent like a certain tag or something?
|
||||||
|
but do the ones only that are currently in rockfish
|
||||||
|
|
||||||
|
This would be done just like any current customer notification but wouldn't check for subscribers as it would be automatic
|
||||||
|
maybe like how ayanova does //## CUSTOMER "PROXY" NOTIFICATIONS like in wokrorder closed
|
||||||
|
|
||||||
|
|
||||||
|
make sure to add
|
||||||
|
if (ServerBootConfig.MIGRATING) return;
|
||||||
|
check or all hell will break loose
|
||||||
|
Also wrap the notification in a DEBUG block so that it will send to gzmailadmin only instead of customer actual email
|
||||||
|
this way can really test out anything without fear
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
- Message templates back and front new global setting fields:
|
- Message templates back and front new global setting fields:
|
||||||
V7NewKey (rockfish v7 template)
|
V7NewKey (rockfish v7 template)
|
||||||
@@ -17,14 +28,8 @@ TODO:
|
|||||||
RavenTrialRejected (rockfish TrialController line 131)
|
RavenTrialRejected (rockfish TrialController line 131)
|
||||||
|
|
||||||
|
|
||||||
|
- TODO: subscription server approved
|
||||||
- new notification event type and related code back and front for subscriptions etc
|
Need message template and automatic proxy notification to customer
|
||||||
want all old rockfish style and new sockeye notifications to go through proper notify event code
|
|
||||||
- new: trial subscription server requested
|
|
||||||
- new: trial subscription server expiration
|
|
||||||
- new: subscription server expiration past
|
|
||||||
so if they don't re-up no active license then it warns me to shut it down
|
|
||||||
One for shutting down server and another for decommissioning
|
|
||||||
|
|
||||||
|
|
||||||
- v7 license fetch route
|
- v7 license fetch route
|
||||||
@@ -47,7 +52,7 @@ TODO:
|
|||||||
fetched is set correctly
|
fetched is set correctly
|
||||||
headers
|
headers
|
||||||
tls version (once online are the same, should be since it's going through nginx technically for the tls part)
|
tls version (once online are the same, should be since it's going through nginx technically for the tls part)
|
||||||
- Test v8 key fetch, trial request, the whole shebang locally
|
- Test v8 key fetch, trial request, all critical event notifications, event logging - the whole shebang locally
|
||||||
- ONLINE TEST
|
- ONLINE TEST
|
||||||
Install and put on sockeye.ayanova.com subdomain in nginx on alternate port
|
Install and put on sockeye.ayanova.com subdomain in nginx on alternate port
|
||||||
Test ui functionality logins etc
|
Test ui functionality logins etc
|
||||||
|
|||||||
Reference in New Issue
Block a user