This commit is contained in:
2021-09-20 17:56:50 +00:00
parent 14e0a06e6d
commit 682c13a099
10 changed files with 42 additions and 18 deletions

2
.vscode/launch.json vendored
View File

@@ -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\\"

View File

@@ -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

View File

@@ -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<string>() { "ReviewCompletedDate", "ReviewDueDate", "ReviewName", "Object", "AyaType", "ReviewNotes", "ReviewUserId" };
DefaultSortBy = new Dictionary<string, string>() { { "ReviewCompletedDate", "-" }, { "ReviewDueDate", "+" } };
DefaultColumns = new List<string>() { "ReviewCompletedDate", "ReviewDate", "ReviewName", "Object", "AyaType", "ReviewNotes", "ReviewUserId" };
DefaultSortBy = new Dictionary<string, string>() { { "ReviewCompletedDate", "-" }, { "ReviewDate", "+" } };
FieldDefinitions = new List<DataListFieldDefinition>();
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

View File

@@ -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()}]");

View File

@@ -24,7 +24,7 @@ namespace AyaNova.Models
public List<string> 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);
}
}

View File

@@ -1747,7 +1747,7 @@
"ReviewOverDue": "Überfällig",
"ReviewName": "Name",
"ReviewNotes": "Notizen",
"ReviewDueDate": "Geburtstermin",
"ReviewDate": "Überprüfungsdatum",
"ReviewCompletedDate": "Fertigstellungstermin",
"ReviewCompletionNotes": "Abschlussnotizen",
"ReviewUserId": "Zugewiesen an",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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é à",

View File

@@ -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