diff --git a/docs/8.0/ayanova/docs/form-home-notify-subscriptions.md b/docs/8.0/ayanova/docs/form-home-notify-subscriptions.md index 005df3a5..be1f5b8a 100644 --- a/docs/8.0/ayanova/docs/form-home-notify-subscriptions.md +++ b/docs/8.0/ayanova/docs/form-home-notify-subscriptions.md @@ -103,5 +103,7 @@ There are no settings adjustable for in app General notifications, however Users | GeneralNotification | Any general notification including direct text notifications between users (built in but provided for email alternative delivery) | | ServerOperationsProblem | Any timely and serious issue related to internal AyaNova Server operations requiring attention | | QuoteStatusAge | A Quote has been sitting at the selected status for longer than the selected time frame | - +| CopyOfCustomerNotification | Copy of any notification sent to Customer for AyaNova User. Filterable by Customer Tag | +| WorkorderCreatedForCustomer | Customer notification sent when a service type work order is created for them | +| WorkorderFinishedFollowUp | Customer and User notification sent after selected duration has passed since workorder set to a "Finished" type of status | diff --git a/server/AyaNova/Controllers/EnumListController.cs b/server/AyaNova/Controllers/EnumListController.cs index e63155b9..5a53d15d 100644 --- a/server/AyaNova/Controllers/EnumListController.cs +++ b/server/AyaNova/Controllers/EnumListController.cs @@ -319,6 +319,9 @@ namespace AyaNova.Api.Controllers TranslationKeysToFetch.Add("NotifyEventUnitMeterReadingMultipleExceeded"); TranslationKeysToFetch.Add("NotifyEventServerOperationsProblem"); TranslationKeysToFetch.Add("NotifyEventGeneralNotification"); + TranslationKeysToFetch.Add("NotifyEventCopyOfCustomerNotification"); + TranslationKeysToFetch.Add("NotifyEventWorkorderCreatedForCustomer"); + TranslationKeysToFetch.Add("NotifyEventWorkorderFinishedFollowUp"); var LT = await TranslationBiz.GetSubsetStaticAsync(TranslationKeysToFetch, translationId); @@ -352,6 +355,10 @@ namespace AyaNova.Api.Controllers ReturnList.Add(new NameIdItem() { Name = LT["NotifyEventServerOperationsProblem"], Id = (long)NotifyEventType.ServerOperationsProblem }); ReturnList.Add(new NameIdItem() { Name = LT["NotifyEventGeneralNotification"], Id = (long)NotifyEventType.GeneralNotification }); + ReturnList.Add(new NameIdItem() { Name = LT["NotifyEventCopyOfCustomerNotification"], Id = (long)NotifyEventType.CopyOfCustomerNotification }); + ReturnList.Add(new NameIdItem() { Name = LT["NotifyEventWorkorderCreatedForCustomer"], Id = (long)NotifyEventType.WorkorderCreatedForCustomer }); + ReturnList.Add(new NameIdItem() { Name = LT["NotifyEventWorkorderFinishedFollowUp"], Id = (long)NotifyEventType.WorkorderFinishedFollowUp }); + } else if (keyNameInLowerCase == StringUtil.TrimTypeName(typeof(NotifyDeliveryMethod).ToString()).ToLowerInvariant()) { diff --git a/server/AyaNova/biz/NotifyEventProcessor.cs b/server/AyaNova/biz/NotifyEventProcessor.cs index 60e6977f..45bf65e2 100644 --- a/server/AyaNova/biz/NotifyEventProcessor.cs +++ b/server/AyaNova/biz/NotifyEventProcessor.cs @@ -194,7 +194,7 @@ namespace AyaNova.Biz //OutsideServiceReceived https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/892 //PartRequestReceived https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/892 //CustomerServiceImminent ALSO CopyOfCustomerNotification - //WorkorderCreatedForCustomer (conditional ID sb customer id) ALSO CopyOfCustomerNotification + //WorkorderCreatedForCustomer (conditional ID sb customer id) ALSO CopyOfCustomerNotification https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/3398 //PartRequested https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/892 //WorkorderTotalExceedsThreshold @@ -202,12 +202,12 @@ namespace AyaNova.Biz } break; case AyaType.Quote: - //QuoteStatusChange [USER, CUSTOMER] / ALSO CopyOfCustomerNotification + //QuoteStatusChange [USER, CUSTOMER] / ALSO CopyOfCustomerNotification https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/3398 //QuoteStatusAge break; case AyaType.Contract: - //ContractExpiring [CUSTOMER/USER] - //CopyOfCustomerNotification + //ContractExpiring [CUSTOMER/USER] / ALSO CopyOfCustomerNotification https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/3398 + break; case AyaType.Reminder: //ReminderImminent @@ -253,7 +253,7 @@ namespace AyaNova.Biz //------------------------------------------ //ObjectCreated // - // [USER for any type, CUSTOMER for workorder only] / if customer then CopyOfCustomerNotification + // [USER for any type, CUSTOMER for workorder only] / if customer then CopyOfCustomerNotification https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/3398 { var subs = await ct.NotifySubscription.Where(z => z.EventType == NotifyEventType.ObjectCreated && z.AyaType == newObject.AyaType).ToListAsync(); foreach (var sub in subs) @@ -288,7 +288,7 @@ namespace AyaNova.Biz //AyaTypes with their own special notification related events case AyaType.WorkOrder: { - //WorkorderStatusChange [USER, CUSTOMER BOTH] / CopyOfCustomerNotification + //WorkorderStatusChange [USER, CUSTOMER BOTH] / CopyOfCustomerNotification https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/3398 // { throw new System.NotImplementedException("Awaiting workorder object completion"); @@ -330,22 +330,22 @@ namespace AyaNova.Biz //ScheduledOnWorkorderImminent (DELTE OLD) //https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/892 //WorkorderFinishStatusOverdue (DELETE OLD) - //WorkorderFinished [USER, CUSTOMER] ALSO CopyOfCustomerNotification applies here + //WorkorderFinished [USER, CUSTOMER] ALSO CopyOfCustomerNotification applies here https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/3398 //OutsideServiceOverdue (ALSO DELETE OLD) //OutsideServiceReceived //PartRequestReceived - //CustomerServiceImminent (ALSO DELETE OLD) / ALSO CopyOfCustomerNotification + //CustomerServiceImminent (ALSO DELETE OLD) / ALSO CopyOfCustomerNotification https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/3398 //PartRequested //https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/892 //WorkorderTotalExceedsThreshold //WorkorderStatusAge (ALSO DELETE OLD) //https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/1137 - //WorkorderFinishedFollowUp (uses AGE after finished status) [USER, CUSTOMER] ALSO CopyOfCustomerNotification applies here + //WorkorderFinishedFollowUp (uses AGE after finished status) [USER, CUSTOMER] ALSO CopyOfCustomerNotification https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/3398 } break; case AyaType.Quote: - //QuoteStatusChange + //QuoteStatusChange [USER, CUSTOMER] ALSO CopyOfCustomerNotification https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/3398 //QuoteStatusAge (DELETE OLD) break; case AyaType.Contract: @@ -364,9 +364,9 @@ namespace AyaNova.Biz // In saving code it just checks to see if it has crossed the multiple threshold, i.e. calculate the old multiple, calculate the new multiple if over then send notification immediate. break; case AyaType.CustomerServiceRequest: - //CSRAccepted (DELETE OLD might have changed from one to the other) [CUSTOMER] - //CSRRejected (DELETE OLD might have changed from one to the other) [CUSTOMER] - //CopyOfCustomerNotification + //CSRAccepted (DELETE OLD might have changed from one to the other) [CUSTOMER] ALSO CopyOfCustomerNotification https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/3398 + //CSRRejected (DELETE OLD might have changed from one to the other) [CUSTOMER] ALSO CopyOfCustomerNotification https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/3398 + break; case AyaType.ServiceBank: //ServiceBankDepleted https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/472 diff --git a/server/AyaNova/resource/de.json b/server/AyaNova/resource/de.json index 694f5fa7..4298a111 100644 --- a/server/AyaNova/resource/de.json +++ b/server/AyaNova/resource/de.json @@ -1893,6 +1893,9 @@ "NotifyDeliveryMethodSMTP": "An E-Mail-Adresse liefern", "NotifyEventObjectAge": "Objektalter seit der Erstellung", "NotifyEventServerOperationsProblem": "Problem mit dem Serverbetrieb", + "NotifyEventCopyOfCustomerNotification": "Kopie der Kundenbenachrichtigung", + "NotifyEventWorkorderCreatedForCustomer": "Arbeitsauftrag für Kunden erstellt", + "NotifyEventWorkorderFinishedFollowUp": "Arbeitsauftrag beendet Follow-up", "Duration": "Dauer", "Notifications": "Benachrichtigungen", "NotifyMailSecurityNone": "Keiner", diff --git a/server/AyaNova/resource/en.json b/server/AyaNova/resource/en.json index 8173e2c0..f2fd726d 100644 --- a/server/AyaNova/resource/en.json +++ b/server/AyaNova/resource/en.json @@ -1893,6 +1893,9 @@ "NotifyDeliveryMethodSMTP": "Deliver to email address", "NotifyEventObjectAge": "Object age since created", "NotifyEventServerOperationsProblem": "Server operations problem", + "NotifyEventCopyOfCustomerNotification": "Copy of Customer notification", + "NotifyEventWorkorderCreatedForCustomer": "Work order created for Customer", + "NotifyEventWorkorderFinishedFollowUp": "Work order finished follow up", "Duration": "Duration", "Notifications": "Notifications", "NotifyMailSecurityNone": "None", diff --git a/server/AyaNova/resource/es.json b/server/AyaNova/resource/es.json index 0a008370..3ceb4ba1 100644 --- a/server/AyaNova/resource/es.json +++ b/server/AyaNova/resource/es.json @@ -1893,6 +1893,9 @@ "NotifyDeliveryMethodSMTP": "Entregar a la dirección de correo electrónico", "NotifyEventObjectAge": "Edad del objeto desde su creación", "NotifyEventServerOperationsProblem": "Problema de operaciones del servidor", + "NotifyEventCopyOfCustomerNotification": "Copia de la notificación al cliente", + "NotifyEventWorkorderCreatedForCustomer": "Orden de trabajo creada para la Cliente", + "NotifyEventWorkorderFinishedFollowUp": "Orden de trabajo finalizada seguimiento", "Duration": "Duración", "Notifications": "Notificaciones", "NotifyMailSecurityNone": "Ninguna", diff --git a/server/AyaNova/resource/fr.json b/server/AyaNova/resource/fr.json index 339d110c..c1daacd9 100644 --- a/server/AyaNova/resource/fr.json +++ b/server/AyaNova/resource/fr.json @@ -1893,6 +1893,9 @@ "NotifyDeliveryMethodSMTP": "Livrer à l'adresse e-mail", "NotifyEventObjectAge": "Âge de l'objet depuis sa création", "NotifyEventServerOperationsProblem": "Problème de fonctionnement du serveur", + "NotifyEventCopyOfCustomerNotification": "Copie de la notification client", + "NotifyEventWorkorderCreatedForCustomer": "Bon de travail créé pour le client", + "NotifyEventWorkorderFinishedFollowUp": "Suivi de l'ordre de travail terminé", "Duration": "Durée", "Notifications": "Notifications", "NotifyMailSecurityNone": "Aucun",