This commit is contained in:
2020-07-09 23:28:13 +00:00
parent edb3b28750
commit c1784f85ae
4 changed files with 54 additions and 6 deletions

View File

@@ -21,12 +21,14 @@
BACKEND TODO / SYSTEM FOR RAVEN
TODO: need a utility that can hash any adhoc collection of fields to work with various notify related objects
(NOT RELIABLE UNFORTUNATELY, JUST CHECK MULTIPLE FIELDS INSTEAD)
TODO: Never creates a duplicate APP or EMAIL notify, so checks in history log before sending
TODO: HASH (NOT RELIABLE UNFORTUNATELY, JUST CHECK MULTIPLE FIELDS INSTEAD) uniquely identifies a notification delivery and it's logged with the history so before a new delivery is sent it's compared to the delivery log and if it was sent
in the last 90 days then it skips it. This will avoid duplicated emails or runaway notifies etc.
Hash needs to be unique to the destination user, teh source object and the event type exactly, if there is any difference then it should not hash the same
TODO: check before any thing that might create a dupe
todo: have removed the old v7 SMTP retry deliveries for simplification
instead, it will now act as if this is always set to true
Probe email server first if can't contact then skip smtp delivers (same as v7 when this setting true)
New: will make every effort to err on the side of assuming delivery happened in any issue during delivery
This will be one way to ensure it doesn't pile on the emails because of some spurious issue that actually delivered but it seemed like it might not have
User will be able to go into notifyevent table adn remove any items they don't want delivered in case of issue
TODO: import v7 needs to create users for each contact and set their default for deliveries of notifications based on old region and send notification setting
Make a case for this and or implement it with this work so it doesn't get lost

View File

@@ -0,0 +1,21 @@
namespace AyaNova.Biz
{
/// <summary>
/// All AyaNova smtp notification connection security
///
/// </summary>
public enum NotifyMailSecurity : int
{
None = 0,
StartTls = 1,
SSLTLS=3
//NEW ITEMS REQUIRE translation KEYS
}
}//eons

View File

@@ -0,0 +1,22 @@
using System;
using AyaNova.Biz;
namespace AyaNova.Models
{
public class GlobalOpsNotificationSettings
{
public long Id { get; set; }//this is always 1 as there is only ever one single global Ops object
public uint Concurrency { get; set; }
public bool Active { get; set; }
public string SmtpServerAddress { get; set; }
public string SmtpAccount { get; set; }
public string SmtpPassword { get; set; }
public NotifyMailSecurity ConnectionSecurity { get; set; }
public int SmtpServerPort { get; set; }
public string NotifyFromAddress { get; set; }
public GlobalOpsNotificationSettings()
{
Active = true;
}
}
}

View File

@@ -236,6 +236,9 @@ namespace AyaNova.Util
await ExecQueryAsync("CREATE TABLE aglobalopsbackupsettings (id integer NOT NULL PRIMARY KEY, active bool not null, " +
"backuptime timestamp, backupsetstokeep int, backupattachments bool)");
await ExecQueryAsync("CREATE TABLE aglobalopsnotificationsettings (id integer NOT NULL PRIMARY KEY, active bool not null, " +
"backuptime timestamp, backupsetstokeep int, backupattachments bool)");
//create aevent biz event log table
await ExecQueryAsync("CREATE TABLE aevent (id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, created timestamp not null, userid bigint not null," +
"ayid bigint not null, ayatype integer not null, ayevent integer not null, textra varchar(255))");