This commit is contained in:
2
.vscode/launch.json
vendored
2
.vscode/launch.json
vendored
@@ -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\\"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()}]");
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1747,7 +1747,7 @@
|
||||
"ReviewOverDue": "Überfällig",
|
||||
"ReviewName": "Name",
|
||||
"ReviewNotes": "Notizen",
|
||||
"ReviewDueDate": "Geburtstermin",
|
||||
"ReviewDate": "Überprüfungsdatum",
|
||||
"ReviewCompletedDate": "Fertigstellungstermin",
|
||||
"ReviewCompletionNotes": "Abschlussnotizen",
|
||||
"ReviewUserId": "Zugewiesen an",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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é à",
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user