From 682c13a09986bc543386214c98fb0bdfe34b07fa Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Mon, 20 Sep 2021 17:56:50 +0000 Subject: [PATCH] --- .vscode/launch.json | 2 +- .../AyaNova/Controllers/ScheduleController.cs | 24 +++++++++++++++++++ server/AyaNova/DataList/ReviewDataList.cs | 10 ++++---- server/AyaNova/biz/ReviewBiz.cs | 8 +++---- server/AyaNova/models/Review.cs | 4 ++-- server/AyaNova/resource/de.json | 2 +- server/AyaNova/resource/en.json | 2 +- server/AyaNova/resource/es.json | 2 +- server/AyaNova/resource/fr.json | 2 +- server/AyaNova/util/AySchema.cs | 4 ++-- 10 files changed, 42 insertions(+), 18 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index f92c39ec..976f60e9 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -52,7 +52,7 @@ "AYANOVA_FOLDER_USER_FILES": "c:\\temp\\RavenTestData\\userfiles", "AYANOVA_FOLDER_BACKUP_FILES": "c:\\temp\\RavenTestData\\backupfiles", "AYANOVA_FOLDER_TEMPORARY_SERVER_FILES": "c:\\temp\\RavenTestData\\tempfiles", - "AYANOVA_SERVER_TEST_MODE": "false", + "AYANOVA_SERVER_TEST_MODE": "true", "AYANOVA_SERVER_TEST_MODE_SEEDLEVEL": "small", "AYANOVA_SERVER_TEST_MODE_TZ_OFFSET": "-7", "AYANOVA_BACKUP_PG_DUMP_PATH": "C:\\data\\code\\postgres_13\\bin\\" diff --git a/server/AyaNova/Controllers/ScheduleController.cs b/server/AyaNova/Controllers/ScheduleController.cs index 5f988c36..de35c19c 100644 --- a/server/AyaNova/Controllers/ScheduleController.cs +++ b/server/AyaNova/Controllers/ScheduleController.cs @@ -87,6 +87,12 @@ namespace AyaNova.Api.Controllers r.AddRange(await ct.Reminder.Where(x => ViewStart <= x.StopDate && x.StartDate <= ViewEnd).Select(x => MakeReminderSchedItem(x, p)).ToListAsync()); } + + //REVIEWS + if (p.Reviews) + { + r.AddRange(await ct.Review.Where(x => ViewStart <= x.ReviewDate && x.ReviewDate <= ViewEnd).Select(x => MakeReviewSchedItem(x, p)).ToListAsync()); + } return Ok(ApiOkResponse.Response(r)); } @@ -172,6 +178,23 @@ namespace AyaNova.Api.Controllers s.Editable = true;//personal reminders are always editable return s; } + + private static PersonalScheduleListItem MakeReviewSchedItem(Review v, PersonalScheduleParams p) + { + var s = new PersonalScheduleListItem(); + s.Id = v.Id; + s.Color = p.Dark ? "white" : "black"; + s.TextColor = TextColor(s.Color); + s.Start = (DateTime)v.ReviewDate; + s.End = (DateTime)v.ReviewDate.AddMinutes(30);//just something to show in schedule as not supporting all day or unscheduled type stuff + s.Type = AyaType.Review; + s.Name = v.Name; + s.Editable = v.CompletedDate == null;//not completed yet so can still be changed + return s; + } + + + private static string ColorFromWOItem(ViewSchedulePersonalWorkOrder v, PersonalScheduleParams p) { switch (p.ColorSource) @@ -229,6 +252,7 @@ namespace AyaNova.Api.Controllers public bool WorkOrders { get; set; } public bool Reviews { get; set; } public bool Reminders { get; set; } + public bool Dark { get; set; }//indicate if Client is set to dark mode or not, used for colorless types to display as black or white } public class PersonalScheduleListItem diff --git a/server/AyaNova/DataList/ReviewDataList.cs b/server/AyaNova/DataList/ReviewDataList.cs index 5558b94d..d6805c23 100644 --- a/server/AyaNova/DataList/ReviewDataList.cs +++ b/server/AyaNova/DataList/ReviewDataList.cs @@ -15,8 +15,8 @@ namespace AyaNova.DataList + "left join auser uassby on (areview.assignedbyuserid=uassby.id)"; var RoleSet = BizRoles.GetRoleSet(DefaultListAType); AllowedRoles = RoleSet.ReadFullRecord | RoleSet.Change; - DefaultColumns = new List() { "ReviewCompletedDate", "ReviewDueDate", "ReviewName", "Object", "AyaType", "ReviewNotes", "ReviewUserId" }; - DefaultSortBy = new Dictionary() { { "ReviewCompletedDate", "-" }, { "ReviewDueDate", "+" } }; + DefaultColumns = new List() { "ReviewCompletedDate", "ReviewDate", "ReviewName", "Object", "AyaType", "ReviewNotes", "ReviewUserId" }; + DefaultSortBy = new Dictionary() { { "ReviewCompletedDate", "-" }, { "ReviewDate", "+" } }; FieldDefinitions = new List(); FieldDefinitions.Add(new DataListFieldDefinition @@ -60,10 +60,10 @@ namespace AyaNova.DataList FieldDefinitions.Add(new DataListFieldDefinition { - TKey = "ReviewDueDate", - FieldKey = "ReviewDueDate", + TKey = "ReviewDate", + FieldKey = "ReviewDate", UiFieldDataType = (int)UiFieldDataType.DateTime, - SqlValueColumnName = "areview.duedate" + SqlValueColumnName = "areview.reviewdate" }); FieldDefinitions.Add(new DataListFieldDefinition diff --git a/server/AyaNova/biz/ReviewBiz.cs b/server/AyaNova/biz/ReviewBiz.cs index 929530bb..15efc252 100644 --- a/server/AyaNova/biz/ReviewBiz.cs +++ b/server/AyaNova/biz/ReviewBiz.cs @@ -250,7 +250,7 @@ namespace AyaNova.Biz if ( (currentObj.Name != proposedObj.Name) || (currentObj.Notes != proposedObj.Notes) || - (currentObj.DueDate != proposedObj.DueDate) || + (currentObj.ReviewDate != proposedObj.ReviewDate) || (currentObj.UserId != proposedObj.UserId) || (currentObj.AssignedByUserId != proposedObj.AssignedByUserId)) { @@ -503,7 +503,7 @@ namespace AyaNova.Biz var r = (Review)proposedObj; //it not completed yet and not overdue already (which could indicate an import or something) - if (r.CompletedDate == null && r.DueDate > DateTime.UtcNow) + if (r.CompletedDate == null && r.ReviewDate > DateTime.UtcNow) { //Notify user await NotifyEventHelper.EnsureDefaultInAppUserNotificationSubscriptionExists(r.UserId, ct); @@ -520,7 +520,7 @@ namespace AyaNova.Biz AyaType = AyaType.Review, NotifySubscriptionId = sub.Id, Name = $"{eventNameTranslated} - {proposedObj.Name}", - EventDate = r.DueDate + EventDate = r.ReviewDate }; await ct.NotifyEvent.AddAsync(n); log.LogDebug($"Adding NotifyEvent: [{n.ToString()}]"); @@ -545,7 +545,7 @@ namespace AyaNova.Biz AyaType = AyaType.Review, NotifySubscriptionId = sub.Id, Name = $"{eventNameTranslated} - {proposedObj.Name}", - EventDate = r.DueDate + EventDate = r.ReviewDate }; await ct.NotifyEvent.AddAsync(n); log.LogDebug($"Adding NotifyEvent: [{n.ToString()}]"); diff --git a/server/AyaNova/models/Review.cs b/server/AyaNova/models/Review.cs index e505bb14..a9ba9fb2 100644 --- a/server/AyaNova/models/Review.cs +++ b/server/AyaNova/models/Review.cs @@ -24,7 +24,7 @@ namespace AyaNova.Models public List Tags { get; set; } [Required] - public DateTime DueDate { get; set; } + public DateTime ReviewDate { get; set; } public DateTime? CompletedDate { get; set; } public string CompletionNotes { get; set; } [Required] @@ -46,7 +46,7 @@ namespace AyaNova.Models { get { - return (DueDate > DateTime.UtcNow); + return (ReviewDate > DateTime.UtcNow); } } diff --git a/server/AyaNova/resource/de.json b/server/AyaNova/resource/de.json index 6b721fa0..87d0efde 100644 --- a/server/AyaNova/resource/de.json +++ b/server/AyaNova/resource/de.json @@ -1747,7 +1747,7 @@ "ReviewOverDue": "Überfällig", "ReviewName": "Name", "ReviewNotes": "Notizen", - "ReviewDueDate": "Geburtstermin", + "ReviewDate": "Überprüfungsdatum", "ReviewCompletedDate": "Fertigstellungstermin", "ReviewCompletionNotes": "Abschlussnotizen", "ReviewUserId": "Zugewiesen an", diff --git a/server/AyaNova/resource/en.json b/server/AyaNova/resource/en.json index 002704b3..0221702a 100644 --- a/server/AyaNova/resource/en.json +++ b/server/AyaNova/resource/en.json @@ -1747,7 +1747,7 @@ "ReviewOverDue": "Overdue", "ReviewName": "Name", "ReviewNotes": "Notes", - "ReviewDueDate": "Due date", + "ReviewDate": "Review date", "ReviewCompletedDate": "Completed date", "ReviewCompletionNotes": "Completion notes", "ReviewUserId": "Assigned to", diff --git a/server/AyaNova/resource/es.json b/server/AyaNova/resource/es.json index 9531c71f..c953d890 100644 --- a/server/AyaNova/resource/es.json +++ b/server/AyaNova/resource/es.json @@ -1747,7 +1747,7 @@ "ReviewOverDue": "Atrasado", "ReviewName": "Nombre", "ReviewNotes": "Notas", - "ReviewDueDate": "Fecha de vencimiento", + "ReviewDate": "Fecha de revisión", "ReviewCompletedDate": "Fecha completada", "ReviewCompletionNotes": "Notas de finalización", "ReviewUserId": "Asignado a", diff --git a/server/AyaNova/resource/fr.json b/server/AyaNova/resource/fr.json index fd8d71db..3164562e 100644 --- a/server/AyaNova/resource/fr.json +++ b/server/AyaNova/resource/fr.json @@ -1747,7 +1747,7 @@ "ReviewOverDue": "Overdue", "ReviewName": "Nom", "ReviewNotes": "Remarques", - "ReviewDueDate": "Date d'échéance", + "ReviewDate": "Date de révision", "ReviewCompletedDate": "Date de fin", "ReviewCompletionNotes": "Notes d'achèvement", "ReviewUserId": "Assigné à", diff --git a/server/AyaNova/util/AySchema.cs b/server/AyaNova/util/AySchema.cs index 648231b2..b642a60f 100644 --- a/server/AyaNova/util/AySchema.cs +++ b/server/AyaNova/util/AySchema.cs @@ -559,12 +559,12 @@ $BODY$ LANGUAGE PLPGSQL STABLE"); //REVIEW await ExecQueryAsync("CREATE TABLE areview (id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name TEXT NOT NULL, " + "notes TEXT, wiki TEXT, customfields TEXT, tags VARCHAR(255) ARRAY, " - + "duedate TIMESTAMP NOT NULL, completeddate TIMESTAMP NULL, completionnotes TEXT, userid BIGINT NOT NULL REFERENCES auser(id), " + + "reviewdate TIMESTAMP NOT NULL, completeddate TIMESTAMP NULL, completionnotes TEXT, userid BIGINT NOT NULL REFERENCES auser(id), " + "assignedbyuserid BIGINT NOT NULL REFERENCES auser(id), atype INTEGER NOT NULL, objectid BIGINT NOT NULL)"); await ExecQueryAsync("CREATE INDEX idx_areview_objectid_atype ON areview (objectid, atype );"); await ExecQueryAsync("CREATE INDEX idx_areview_userid ON areview (userid);"); - await ExecQueryAsync("CREATE INDEX idx_areview_duedate ON areview (duedate);"); + await ExecQueryAsync("CREATE INDEX idx_areview_reviewdate ON areview (reviewdate);"); await ExecQueryAsync("CREATE INDEX idx_areview_completeddate ON areview (completeddate);"); // //SERVICE BANK