diff --git a/server/biz/GlobalBizSettingsBiz.cs b/server/biz/GlobalBizSettingsBiz.cs index fdef2dd..162db09 100644 --- a/server/biz/GlobalBizSettingsBiz.cs +++ b/server/biz/GlobalBizSettingsBiz.cs @@ -372,110 +372,110 @@ namespace Sockeye.Biz #region CASES - // log.LogInformation("RFImport Cases"); - // //case projects to be tags - // List CaseProjectList = new List(); - // { - // res = await client.GetAsync($"{URL_ROCKFISH}api/rfcaseproject"); - // responseText = await res.Content.ReadAsStringAsync(); + log.LogInformation("RFImport Cases"); + //case projects to be tags + List CaseProjectList = new List(); + { + res = await client.GetAsync($"{URL_ROCKFISH}api/rfcaseproject"); + responseText = await res.Content.ReadAsStringAsync(); - // var jaRFCaseProjectList = JArray.Parse(responseText); - // foreach (JObject jRFCaseProject in jaRFCaseProjectList) - // { - // CaseProjectList.Add(new NameIdItem() { Name = jRFCaseProject["name"].Value(), Id = jRFCaseProject["id"].Value() }); + var jaRFCaseProjectList = JArray.Parse(responseText); + foreach (JObject jRFCaseProject in jaRFCaseProjectList) + { + CaseProjectList.Add(new NameIdItem() { Name = jRFCaseProject["name"].Value(), Id = jRFCaseProject["id"].Value() }); - // } + } - // } - // { - // using (AyContext ct = ServiceProviderProvider.DBContext) - // { - // res = await client.GetAsync($"{URL_ROCKFISH}api/rfcase/list"); - // responseText = await res.Content.ReadAsStringAsync(); - // 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) - // DateTime dtTempCreated = new DateTime(2000, 1, 1, 0, 0, 0, DateTimeKind.Utc); - // foreach (JObject jRFCase in jaRFCaseList.Reverse()) - // { + } + { + using (AyContext ct = ServiceProviderProvider.DBContext) + { + res = await client.GetAsync($"{URL_ROCKFISH}api/rfcase/list"); + responseText = await res.Content.ReadAsStringAsync(); + 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) + DateTime dtTempCreated = new DateTime(2000, 1, 1, 0, 0, 0, DateTimeKind.Utc); + foreach (JObject jRFCase in jaRFCaseList.Reverse()) + { - // var g = new GZCase(); - // g.CaseId = jRFCase["id"].Value(); - // g.Closed = DateUtil.EpochToDateNullIsNull(jRFCase["dtClosed"].Value()); - // //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 - // if (g.Closed != null) - // { - // g.Closed = ((DateTime)g.Closed).AddHours(16); - // } + var g = new GZCase(); + g.CaseId = jRFCase["id"].Value(); + g.Closed = DateUtil.EpochToDateNullIsNull(jRFCase["dtClosed"].Value()); + //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 + if (g.Closed != null) + { + g.Closed = ((DateTime)g.Closed).AddHours(16); + } - // //fuckery to try to insert a at least semi close date when created date is missing - // DateTime? dtTemp = DateUtil.EpochToDateNullIsNull(jRFCase["dtCreated"].Value()); - // if (dtTemp == null) - // { - // dtTemp = dtTempCreated; - // } - // else - // { - // dtTempCreated = (DateTime)dtTemp; - // } - // g.Created = (DateTime)dtTemp; - // g.Name = jRFCase["title"].Value(); - // g.Notes = jRFCase["notes"].Value(); + //fuckery to try to insert a at least semi close date when created date is missing + DateTime? dtTemp = DateUtil.EpochToDateNullIsNull(jRFCase["dtCreated"].Value()); + if (dtTemp == null) + { + dtTemp = dtTempCreated; + } + else + { + dtTempCreated = (DateTime)dtTemp; + } + g.Created = (DateTime)dtTemp; + g.Name = jRFCase["title"].Value(); + g.Notes = jRFCase["notes"].Value(); - // var ver = jRFCase["releaseVersion"].Value(); - // if (!string.IsNullOrWhiteSpace(ver)) - // g.Notes += $"\n-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\nReleased on version:{ver}"; + var ver = jRFCase["releaseVersion"].Value(); + if (!string.IsNullOrWhiteSpace(ver)) + g.Notes += $"\n-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\nReleased on version:{ver}"; - // var releaseNotes = jRFCase["releaseNotes"].Value(); - // if (!string.IsNullOrWhiteSpace(releaseNotes)) - // g.Notes += $"\nRelease notes:{releaseNotes}"; + var releaseNotes = jRFCase["releaseNotes"].Value(); + if (!string.IsNullOrWhiteSpace(releaseNotes)) + g.Notes += $"\nRelease notes:{releaseNotes}"; - // //Project name to tags - // g.Tags.Add(CaseProjectList.FirstOrDefault(z => z.Id == jRFCase["rfCaseProjectId"].Value()).Name.Replace("z_", "legacy-")); + //Project name to tags + g.Tags.Add(CaseProjectList.FirstOrDefault(z => z.Id == jRFCase["rfCaseProjectId"].Value()).Name.Replace("z_", "legacy-")); - // //priority to tags - // g.Tags.Add($"{jRFCase["priority"].Value()}-priority"); + //priority to tags + g.Tags.Add($"{jRFCase["priority"].Value()}-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 - // //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"); - // responseText = await res.Content.ReadAsStringAsync(); - // var jAttachments = JObject.Parse(responseText); - // if (jAttachments["attach"].Count() > 0) - // { - // g.Notes += "\n********\nRockfish attachments\n"; - // foreach (JObject jAttachmentRecord in jAttachments["attach"]) - // { - // g.Notes += $"File: \"{jAttachmentRecord["name"].Value()}\", rfcaseblob table id: {jAttachmentRecord["id"].Value()}\n"; + //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 + res = await client.GetAsync($"{URL_ROCKFISH}api/rfcase/{g.CaseId}/attachments"); + responseText = await res.Content.ReadAsStringAsync(); + var jAttachments = JObject.Parse(responseText); + if (jAttachments["attach"].Count() > 0) + { + g.Notes += "\n********\nRockfish attachments\n"; + foreach (JObject jAttachmentRecord in jAttachments["attach"]) + { + g.Notes += $"File: \"{jAttachmentRecord["name"].Value()}\", rfcaseblob table id: {jAttachmentRecord["id"].Value()}\n"; - // } - // g.Notes += "\n********\n"; - // } + } + g.Notes += "\n********\n"; + } - // GZCaseBiz biz = GZCaseBiz.GetBiz(ct); - // await biz.CreateAsync(g); + GZCaseBiz biz = GZCaseBiz.GetBiz(ct); + await biz.CreateAsync(g); - // //attachments example 86400000 - // // /api/rfcase/4360/attachments - // //{"dlkey":"ZFkAUpo1L0Gi3Q9aO5szkA","attach":[{"id":259,"name":"desired weight calcs.txt"}]} - // //{"dlkey":"iR6ncD70CkzkozyT0otA","attach":[]} + //attachments example 86400000 + // /api/rfcase/4360/attachments + //{"dlkey":"ZFkAUpo1L0Gi3Q9aO5szkA","attach":[{"id":259,"name":"desired weight calcs.txt"}]} + //{"dlkey":"iR6ncD70CkzkozyT0otA","attach":[]} - // }// all cases loop + }// all cases loop - // //Start next case with a new sequence caseid of 4444 - // using (var command = ct.Database.GetDbConnection().CreateCommand()) - // { - // command.CommandText = $"ALTER SEQUENCE agzcase_caseid_seq RESTART WITH 4444;"; - // await ct.Database.OpenConnectionAsync(); - // await command.ExecuteNonQueryAsync(); - // await ct.Database.CloseConnectionAsync(); - // } - // }//end of context - // } + //Start next case with a new sequence caseid of 4444 + using (var command = ct.Database.GetDbConnection().CreateCommand()) + { + command.CommandText = $"ALTER SEQUENCE agzcase_caseid_seq RESTART WITH 4444;"; + await ct.Database.OpenConnectionAsync(); + await command.ExecuteNonQueryAsync(); + await ct.Database.CloseConnectionAsync(); + } + }//end of db context + } #endregion cases diff --git a/todo.txt b/todo.txt index a6d1431..37563cb 100644 --- a/todo.txt +++ b/todo.txt @@ -1,10 +1,13 @@ TODO: +Simulate new vendor notification, create and save, various scenarios confirm it processes by job, also test notification for that as well + +Then on to licenses job +then on to all the basics, fetch licenses for v7 and v8, trial request processing trigger route, trial subscription server processing and trigger route - JOB: Process purchases that are from vendor notification - - create customer if necessary from purchase notification or add to existing - - if v7 needs to account for there being a delay sometimes in order completeness - maybe just keep adding to the order and refreshing + + 2023-01-23 12:07:29.9706|INFO|SERVER|RFImport MULTISITE CUSTOMER: AAA TEST DEVELOPMENT - TEMPORARY-HPE d.o.o. 2023-01-23 12:07:30.0367|INFO|SERVER|RFImport MULTISITE CUSTOMER: AAA TEST DEVELOPMENT - TestEvalMartinParsons @@ -24,7 +27,7 @@ TODO: 2023-01-23 12:08:42.3657|INFO|SERVER|RFImport MULTISITE CUSTOMER: Yamaha Music Malaysia May 2017 - Yamaha Music Malaysia Sdn Bhd - ASC1 2023-01-23 12:08:42.4901|INFO|SERVER|RFImport MULTISITE CUSTOMER: Yamaha Music Malaysia May 2017 - Yamaha Music Malaysia ASC3 2023-01-23 12:08:42.6139|INFO|SERVER|RFImport MULTISITE CUSTOMER: Yamaha Music Malaysia May 2017 - Yamaha Music Malaysia ASC4 - + - JOB: make a license from purchases but not active ready to send / in waiting only for approval - if v7 needs to account for there being a delay sometimes in order completeness