This commit is contained in:
2
.vscode/launch.json
vendored
2
.vscode/launch.json
vendored
@@ -35,7 +35,7 @@
|
|||||||
"SOCKEYE_DB_CONNECTION": "Server=localhost;Username=postgres;Password=sockeye;Database=sockeye;CommandTimeout=300;",
|
"SOCKEYE_DB_CONNECTION": "Server=localhost;Username=postgres;Password=sockeye;Database=sockeye;CommandTimeout=300;",
|
||||||
"SOCKEYE_DATA_PATH": "c:\\temp\\sockeye",
|
"SOCKEYE_DATA_PATH": "c:\\temp\\sockeye",
|
||||||
"SOCKEYE_USE_URLS": "http://*:7676;",
|
"SOCKEYE_USE_URLS": "http://*:7676;",
|
||||||
//"SOCKEYE_PERMANENTLY_ERASE_DATABASE":"true",
|
"SOCKEYE_PERMANENTLY_ERASE_DATABASE":"true",
|
||||||
//"SOCKEYE_REPORT_RENDERING_TIMEOUT":"1",
|
//"SOCKEYE_REPORT_RENDERING_TIMEOUT":"1",
|
||||||
"SOCKEYE_BACKUP_PG_DUMP_PATH": "C:\\data\\code\\postgres_14\\bin"
|
"SOCKEYE_BACKUP_PG_DUMP_PATH": "C:\\data\\code\\postgres_14\\bin"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -197,7 +197,7 @@ namespace Sockeye.Biz
|
|||||||
{
|
{
|
||||||
//CREATE CUSTOMER
|
//CREATE CUSTOMER
|
||||||
Customer c = new Customer();
|
Customer c = new Customer();
|
||||||
c.Active=jCustomerListItem["active"].Value<bool>();
|
c.Active = jCustomerListItem["active"].Value<bool>();
|
||||||
c.Name = CustomerName;
|
c.Name = CustomerName;
|
||||||
c.Country = jSite["country"].Value<string>();
|
c.Country = jSite["country"].Value<string>();
|
||||||
c.Region = jSite["stateProvince"].Value<string>();
|
c.Region = jSite["stateProvince"].Value<string>();
|
||||||
@@ -305,7 +305,7 @@ namespace Sockeye.Biz
|
|||||||
responseText = await res.Content.ReadAsStringAsync();
|
responseText = await res.Content.ReadAsStringAsync();
|
||||||
var jaVendorNotificationList = JArray.Parse(responseText);
|
var jaVendorNotificationList = JArray.Parse(responseText);
|
||||||
|
|
||||||
foreach (JObject jVendorNotificationItem in jaVendorNotificationList)
|
foreach (JObject jVendorNotificationItem in jaVendorNotificationList.Reverse())
|
||||||
{
|
{
|
||||||
/*[]
|
/*[]
|
||||||
"{\n \"creation_date\": \"2022-12-28T20:20:24Z\",\n \
|
"{\n \"creation_date\": \"2022-12-28T20:20:24Z\",\n \
|
||||||
@@ -350,106 +350,106 @@ namespace Sockeye.Biz
|
|||||||
|
|
||||||
#region CASES
|
#region CASES
|
||||||
|
|
||||||
log.LogInformation("RFImport Cases");
|
// log.LogInformation("RFImport Cases");
|
||||||
//case projects to be tags
|
// //case projects to be tags
|
||||||
List<NameIdItem> CaseProjectList = new List<NameIdItem>();
|
// List<NameIdItem> CaseProjectList = new List<NameIdItem>();
|
||||||
{
|
// {
|
||||||
res = await client.GetAsync($"{URL_ROCKFISH}api/rfcaseproject");
|
// res = await client.GetAsync($"{URL_ROCKFISH}api/rfcaseproject");
|
||||||
responseText = await res.Content.ReadAsStringAsync();
|
// responseText = await res.Content.ReadAsStringAsync();
|
||||||
|
|
||||||
var jaRFCaseProjectList = JArray.Parse(responseText);
|
// var jaRFCaseProjectList = JArray.Parse(responseText);
|
||||||
foreach (JObject jRFCaseProject in jaRFCaseProjectList)
|
// foreach (JObject jRFCaseProject in jaRFCaseProjectList)
|
||||||
{
|
// {
|
||||||
CaseProjectList.Add(new NameIdItem() { Name = jRFCaseProject["name"].Value<string>(), Id = jRFCaseProject["id"].Value<long>() });
|
// CaseProjectList.Add(new NameIdItem() { Name = jRFCaseProject["name"].Value<string>(), Id = jRFCaseProject["id"].Value<long>() });
|
||||||
|
|
||||||
}
|
// }
|
||||||
|
|
||||||
}
|
// }
|
||||||
{
|
// {
|
||||||
res = await client.GetAsync($"{URL_ROCKFISH}api/rfcase/list");
|
// res = await client.GetAsync($"{URL_ROCKFISH}api/rfcase/list");
|
||||||
responseText = await res.Content.ReadAsStringAsync();
|
// responseText = await res.Content.ReadAsStringAsync();
|
||||||
var jaRFCaseList = JArray.Parse(responseText);
|
// var jaRFCaseList = JArray.Parse(responseText);
|
||||||
//some cases are missing the start date so substitute a close other case date (not critical but sb at least in the ballpark for list viewing purposes)
|
// //some cases are missing the start date so substitute a close other case date (not critical but sb at least in the ballpark for list viewing purposes)
|
||||||
DateTime dtTempCreated = new DateTime(2000, 1, 1, 0, 0, 0, DateTimeKind.Utc);
|
// DateTime dtTempCreated = new DateTime(2000, 1, 1, 0, 0, 0, DateTimeKind.Utc);
|
||||||
foreach (JObject jRFCase in jaRFCaseList)
|
// foreach (JObject jRFCase in jaRFCaseList.Reverse())
|
||||||
{
|
// {
|
||||||
|
|
||||||
var g = new GZCase();
|
// var g = new GZCase();
|
||||||
g.CaseId = jRFCase["id"].Value<long>();
|
// g.CaseId = jRFCase["id"].Value<long>();
|
||||||
g.Closed = DateUtil.EpochToDateNullIsNull(jRFCase["dtClosed"].Value<long?>());
|
// g.Closed = DateUtil.EpochToDateNullIsNull(jRFCase["dtClosed"].Value<long?>());
|
||||||
//NOTE: closed in rockfish was the date at midnight in GMT
|
// //NOTE: closed in rockfish was the date at midnight in GMT
|
||||||
//so to be in the same day as here need to add a few hours, let's say 8 am for each so add 8 hours
|
// //so to be in the same day as here need to add a few hours, let's say 8 am for each so add 8 hours
|
||||||
if (g.Closed != null)
|
// if (g.Closed != null)
|
||||||
{
|
// {
|
||||||
g.Closed = ((DateTime)g.Closed).AddHours(16);
|
// g.Closed = ((DateTime)g.Closed).AddHours(16);
|
||||||
}
|
// }
|
||||||
|
|
||||||
//fuckery to try to insert a at least semi close date when created date is missing
|
// //fuckery to try to insert a at least semi close date when created date is missing
|
||||||
DateTime? dtTemp = DateUtil.EpochToDateNullIsNull(jRFCase["dtCreated"].Value<long?>());
|
// DateTime? dtTemp = DateUtil.EpochToDateNullIsNull(jRFCase["dtCreated"].Value<long?>());
|
||||||
if (dtTemp == null)
|
// if (dtTemp == null)
|
||||||
{
|
// {
|
||||||
dtTemp = dtTempCreated;
|
// dtTemp = dtTempCreated;
|
||||||
}
|
// }
|
||||||
else
|
// else
|
||||||
{
|
// {
|
||||||
dtTempCreated = (DateTime)dtTemp;
|
// dtTempCreated = (DateTime)dtTemp;
|
||||||
}
|
// }
|
||||||
g.Created = (DateTime)dtTemp;
|
// g.Created = (DateTime)dtTemp;
|
||||||
g.Name = jRFCase["title"].Value<string>();
|
// g.Name = jRFCase["title"].Value<string>();
|
||||||
g.Notes = jRFCase["notes"].Value<string>();
|
// g.Notes = jRFCase["notes"].Value<string>();
|
||||||
|
|
||||||
var ver = jRFCase["releaseVersion"].Value<string>();
|
// var ver = jRFCase["releaseVersion"].Value<string>();
|
||||||
if (!string.IsNullOrWhiteSpace(ver))
|
// if (!string.IsNullOrWhiteSpace(ver))
|
||||||
g.Notes += $"\n-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\nReleased on version:{ver}";
|
// g.Notes += $"\n-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\nReleased on version:{ver}";
|
||||||
|
|
||||||
var releaseNotes = jRFCase["releaseNotes"].Value<string>();
|
// var releaseNotes = jRFCase["releaseNotes"].Value<string>();
|
||||||
if (!string.IsNullOrWhiteSpace(releaseNotes))
|
// if (!string.IsNullOrWhiteSpace(releaseNotes))
|
||||||
g.Notes += $"\nRelease notes:{releaseNotes}";
|
// g.Notes += $"\nRelease notes:{releaseNotes}";
|
||||||
|
|
||||||
//Project name to tags
|
// //Project name to tags
|
||||||
g.Tags.Add(CaseProjectList.FirstOrDefault(z => z.Id == jRFCase["rfCaseProjectId"].Value<long>()).Name.Replace("z_", "legacy-"));
|
// g.Tags.Add(CaseProjectList.FirstOrDefault(z => z.Id == jRFCase["rfCaseProjectId"].Value<long>()).Name.Replace("z_", "legacy-"));
|
||||||
|
|
||||||
//priority to tags
|
// //priority to tags
|
||||||
g.Tags.Add($"{jRFCase["priority"].Value<long>()}-priority");
|
// g.Tags.Add($"{jRFCase["priority"].Value<long>()}-priority");
|
||||||
|
|
||||||
//check for attachments and just add as a note, don't bother with actual transfer of attachment, there aren't a lot and most are way in the past and not required for anything
|
// //check for attachments and just add as a note, don't bother with actual transfer of attachment, there aren't a lot and most are way in the past and not required for anything
|
||||||
//if needed in future can manually xfer it over from the rockfish.sqlite db directly using DB BRowser for sqlite which allows opening the blob from the rfcaseblob table and saving it
|
// //if needed in future can manually xfer it over from the rockfish.sqlite db directly using DB BRowser for sqlite which allows opening the blob from the rfcaseblob table and saving it
|
||||||
res = await client.GetAsync($"{URL_ROCKFISH}api/rfcase/{g.CaseId}/attachments");
|
// res = await client.GetAsync($"{URL_ROCKFISH}api/rfcase/{g.CaseId}/attachments");
|
||||||
responseText = await res.Content.ReadAsStringAsync();
|
// responseText = await res.Content.ReadAsStringAsync();
|
||||||
var jAttachments = JObject.Parse(responseText);
|
// var jAttachments = JObject.Parse(responseText);
|
||||||
if (jAttachments["attach"].Count() > 0)
|
// if (jAttachments["attach"].Count() > 0)
|
||||||
{
|
// {
|
||||||
g.Notes += "\n********\nRockfish attachments\n";
|
// g.Notes += "\n********\nRockfish attachments\n";
|
||||||
foreach (JObject jAttachmentRecord in jAttachments["attach"])
|
// foreach (JObject jAttachmentRecord in jAttachments["attach"])
|
||||||
{
|
// {
|
||||||
g.Notes += $"File: \"{jAttachmentRecord["name"].Value<string>()}\", rfcaseblob table id: {jAttachmentRecord["id"].Value<long>()}\n";
|
// g.Notes += $"File: \"{jAttachmentRecord["name"].Value<string>()}\", rfcaseblob table id: {jAttachmentRecord["id"].Value<long>()}\n";
|
||||||
|
|
||||||
}
|
// }
|
||||||
g.Notes += "\n********\n";
|
// g.Notes += "\n********\n";
|
||||||
}
|
// }
|
||||||
|
|
||||||
GZCaseBiz biz = GZCaseBiz.GetBiz(ct);
|
// GZCaseBiz biz = GZCaseBiz.GetBiz(ct);
|
||||||
await biz.CreateAsync(g);
|
// await biz.CreateAsync(g);
|
||||||
|
|
||||||
//attachments example 86400000
|
// //attachments example 86400000
|
||||||
// /api/rfcase/4360/attachments
|
// // /api/rfcase/4360/attachments
|
||||||
//{"dlkey":"ZFkAUpo1L0Gi3Q9aO5szkA","attach":[{"id":259,"name":"desired weight calcs.txt"}]}
|
// //{"dlkey":"ZFkAUpo1L0Gi3Q9aO5szkA","attach":[{"id":259,"name":"desired weight calcs.txt"}]}
|
||||||
//{"dlkey":"iR6ncD70CkzkozyT0otA","attach":[]}
|
// //{"dlkey":"iR6ncD70CkzkozyT0otA","attach":[]}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}// all cases loop
|
// }// all cases loop
|
||||||
|
|
||||||
//Start next case with a new sequence caseid of 4444
|
// //Start next case with a new sequence caseid of 4444
|
||||||
using (var command = ct.Database.GetDbConnection().CreateCommand())
|
// using (var command = ct.Database.GetDbConnection().CreateCommand())
|
||||||
{
|
// {
|
||||||
command.CommandText = $"ALTER SEQUENCE agzcase_caseid_seq RESTART WITH 4443;";
|
// command.CommandText = $"ALTER SEQUENCE agzcase_caseid_seq RESTART WITH 4443;";
|
||||||
await ct.Database.OpenConnectionAsync();
|
// await ct.Database.OpenConnectionAsync();
|
||||||
await command.ExecuteNonQueryAsync();
|
// await command.ExecuteNonQueryAsync();
|
||||||
await ct.Database.CloseConnectionAsync();
|
// await ct.Database.CloseConnectionAsync();
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
#endregion cases
|
#endregion cases
|
||||||
|
|
||||||
@@ -462,7 +462,7 @@ namespace Sockeye.Biz
|
|||||||
var jaLicenseList = JArray.Parse(responseText);
|
var jaLicenseList = JArray.Parse(responseText);
|
||||||
//some cases are missing the start date so substitute a close other case date (not critical but sb at least in the ballpark for list viewing purposes)
|
//some cases are missing the start date so substitute a close other case date (not critical but sb at least in the ballpark for list viewing purposes)
|
||||||
DateTime dtTempCreated = new DateTime(2000, 1, 1, 0, 0, 0, DateTimeKind.Utc);
|
DateTime dtTempCreated = new DateTime(2000, 1, 1, 0, 0, 0, DateTimeKind.Utc);
|
||||||
foreach (JObject jLicenseListItem in jaLicenseList)
|
foreach (JObject jLicenseListItem in jaLicenseList.Reverse())
|
||||||
{
|
{
|
||||||
|
|
||||||
res = await client.GetAsync($"{URL_ROCKFISH}api/license/{jLicenseListItem["id"].Value<long>()}");
|
res = await client.GetAsync($"{URL_ROCKFISH}api/license/{jLicenseListItem["id"].Value<long>()}");
|
||||||
@@ -592,7 +592,8 @@ namespace Sockeye.Biz
|
|||||||
var jKey = JObject.Parse(keyNoWS);
|
var jKey = JObject.Parse(keyNoWS);
|
||||||
l.DbId = jKey["Key"]["DBID"].Value<string>();
|
l.DbId = jKey["Key"]["DBID"].Value<string>();
|
||||||
l.LicenseExpire = jKey["Key"]["LicenseExpiration"].Value<DateTime>().ToUniversalTime();
|
l.LicenseExpire = jKey["Key"]["LicenseExpiration"].Value<DateTime>().ToUniversalTime();
|
||||||
if (jKey["Key"]["Perpetual"].Value<bool>())
|
//if (jKey["Key"]["Perpetual"].Value<bool>())
|
||||||
|
if ((bool?)jKey["Key"]["Perpetual"] ?? true)
|
||||||
l.PGroup = ProductGroup.RavenPerpetual;
|
l.PGroup = ProductGroup.RavenPerpetual;
|
||||||
else
|
else
|
||||||
l.PGroup = ProductGroup.RavenSubscription;
|
l.PGroup = ProductGroup.RavenSubscription;
|
||||||
@@ -622,7 +623,7 @@ namespace Sockeye.Biz
|
|||||||
responseText = await res.Content.ReadAsStringAsync();
|
responseText = await res.Content.ReadAsStringAsync();
|
||||||
var jaTrialRequestList = JArray.Parse(responseText);
|
var jaTrialRequestList = JArray.Parse(responseText);
|
||||||
|
|
||||||
foreach (JObject jTrialRequestItem in jaTrialRequestList)
|
foreach (JObject jTrialRequestItem in jaTrialRequestList.Reverse())
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
/api/trial/list
|
/api/trial/list
|
||||||
@@ -669,16 +670,16 @@ namespace Sockeye.Biz
|
|||||||
}
|
}
|
||||||
#endregion trial requests
|
#endregion trial requests
|
||||||
|
|
||||||
|
log.LogInformation("RockFish import succeeded");
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
var msg = "Error importing rockfish";
|
var msg = "*** RockFish import FAILED ***";
|
||||||
log.LogError(ex, msg);
|
log.LogError(ex, msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
log.LogInformation("FINISHED IMPORTING");
|
|
||||||
//in the correct order retrieve every object and if it's not already present in sockeye, import it
|
//in the correct order retrieve every object and if it's not already present in sockeye, import it
|
||||||
//this should be callable any time and it will just update so it can be test live in sync / parallel until ready to switch over
|
//this should be callable any time and it will just update so it can be test live in sync / parallel until ready to switch over
|
||||||
//await Task.CompletedTask;
|
//await Task.CompletedTask;
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ namespace Sockeye.Util
|
|||||||
//!!!!WARNING: BE SURE TO UPDATE THE DbUtil::EmptyBizDataFromDatabaseForSeedingOrImportingAsync WHEN NEW TABLES ADDED!!!!
|
//!!!!WARNING: BE SURE TO UPDATE THE DbUtil::EmptyBizDataFromDatabaseForSeedingOrImportingAsync WHEN NEW TABLES ADDED!!!!
|
||||||
private const int DESIRED_SCHEMA_LEVEL = 17;
|
private const int DESIRED_SCHEMA_LEVEL = 17;
|
||||||
|
|
||||||
internal const long EXPECTED_COLUMN_COUNT = 502;
|
internal const long EXPECTED_COLUMN_COUNT = 503;
|
||||||
internal const long EXPECTED_INDEX_COUNT = 74;
|
internal const long EXPECTED_INDEX_COUNT = 74;
|
||||||
internal const long EXPECTED_CHECK_CONSTRAINTS = 240;
|
internal const long EXPECTED_CHECK_CONSTRAINTS = 240;
|
||||||
internal const long EXPECTED_FOREIGN_KEY_CONSTRAINTS = 32;
|
internal const long EXPECTED_FOREIGN_KEY_CONSTRAINTS = 32;
|
||||||
@@ -31,7 +31,7 @@ namespace Sockeye.Util
|
|||||||
|
|
||||||
//!!!!WARNING: BE SURE TO UPDATE THE DbUtil::EmptyBizDataFromDatabaseForSeedingOrImportingAsync WHEN NEW TABLES ADDED!!!!
|
//!!!!WARNING: BE SURE TO UPDATE THE DbUtil::EmptyBizDataFromDatabaseForSeedingOrImportingAsync WHEN NEW TABLES ADDED!!!!
|
||||||
|
|
||||||
///////////////////////////////////////// (C502:I74:CC240:FC32:V0:R2)
|
///////////////////////////////////////// (C503:I74:CC240:FC32:V0:R2)
|
||||||
/*
|
/*
|
||||||
|
|
||||||
MAXIMUM POSTGRES OBJECT NAME LENGTH: 63 CHARACTERS
|
MAXIMUM POSTGRES OBJECT NAME LENGTH: 63 CHARACTERS
|
||||||
|
|||||||
Reference in New Issue
Block a user