diff --git a/server/AyaNova/Controllers/CustomerNotifySubscriptionController.cs b/server/AyaNova/Controllers/CustomerNotifySubscriptionController.cs
index 98ae7ac6..7c89b897 100644
--- a/server/AyaNova/Controllers/CustomerNotifySubscriptionController.cs
+++ b/server/AyaNova/Controllers/CustomerNotifySubscriptionController.cs
@@ -127,17 +127,61 @@ namespace AyaNova.Api.Controllers
return NoContent();
}
+ ///
+ /// get a list of which customers will potentially receive a notification based on tags
+ ///
+ ///
+ /// From route path
+ ///
+ [HttpPost("who")]
+ public async Task GetWho([FromBody] List customerTags, ApiVersion apiVersion)
+ {
+ if (!serverState.IsOpen)
+ return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason));
+ if (!Authorized.HasCreateRole(HttpContext.Items, AyaType.CustomerNotifySubscription))
+ return StatusCode(403, new ApiNotAuthorizedResponse());
+ if (!ModelState.IsValid)
+ return BadRequest(new ApiErrorResponse(ModelState));
+
+ string custTagsWhere = DataList.DataListSqlFilterCriteriaBuilder.KPITagFilterToSqlCriteria("acustomer.tags", customerTags, false);
+
+
+ List ret = new List();
+ using (var cmd = ct.Database.GetDbConnection().CreateCommand())
+ {
+ await ct.Database.OpenConnectionAsync();
+ cmd.CommandText = $"select id, name, emailaddress from acustomer where active=true {custTagsWhere} order by name";
+ using (var dr = await cmd.ExecuteReaderAsync())
+ {
+ while (dr.Read())
+ {
+ ret.Add(new CustomerNotifySubscriptionWhoRecord(dr.GetInt64(0), dr.GetString(1), dr.GetString(2) ));
+ }
+ }
+ }
+
+ // WHERE ARRAY['red','green'::varchar(255)] <@ tags
+ //array1.All(i => array2.Contains(i)) array1 <@ array2
+ //https://www.npgsql.org/efcore/mapping/array.html
+ // var ret = await ct.Customer.Where(z => z.Active == true && (customerTags.All(i => z.Tags.Contains(i)))).Select(c => new CustomerNotifySubscriptionWhoRecord(c.Id, c.Name, c.EmailAddress)).ToListAsync();
+ return Ok(ApiOkResponse.Response(ret));
+ }
+
+ private record CustomerNotifySubscriptionWhoRecord(long Id, string Name, string EmailAddress);
+
///
/// Get Subscription list
///
/// User's notification subscription list
[HttpGet("list")]
- public async Task GetQueue()
+ public async Task GetList()
{
if (!serverState.IsOpen)
return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason));
+ if (!Authorized.HasModifyRole(HttpContext.Items, AyaType.CustomerNotifySubscription))
+ return StatusCode(403, new ApiNotAuthorizedResponse());
var subs = await ct.CustomerNotifySubscription.AsNoTracking().ToListAsync();
diff --git a/server/AyaNova/resource/de.json b/server/AyaNova/resource/de.json
index ed1dd0f0..b9ed7db4 100644
--- a/server/AyaNova/resource/de.json
+++ b/server/AyaNova/resource/de.json
@@ -1303,6 +1303,7 @@
"WarrantyExpires": "Gültig bis",
"WebAddress": "Webadresse",
"Welcome": "Willkommen in AyaNova",
+ "WhoWillBeNotified":"Wer wird benachrichtigt?",
"WorkOrder": "Arbeitsauftrag",
"WorkOrderAge": "Age",
"WorkOrderCloseByDate": "Fertigstellungsdatum",
diff --git a/server/AyaNova/resource/en.json b/server/AyaNova/resource/en.json
index 2fe9d9c8..c480d997 100644
--- a/server/AyaNova/resource/en.json
+++ b/server/AyaNova/resource/en.json
@@ -1303,6 +1303,7 @@
"WarrantyExpires": "Valid until",
"WebAddress": "Web Address",
"Welcome": "Welcome to AyaNova",
+ "WhoWillBeNotified":"Who will be notified?",
"WorkOrder": "Work order",
"WorkOrderAge": "Age",
"WorkOrderCloseByDate": "Date to be completed",
diff --git a/server/AyaNova/resource/es.json b/server/AyaNova/resource/es.json
index 463b42ae..de6072f6 100644
--- a/server/AyaNova/resource/es.json
+++ b/server/AyaNova/resource/es.json
@@ -1303,6 +1303,7 @@
"WarrantyExpires": "Válido hasta",
"WebAddress": "Dirección web",
"Welcome": "Bienvenido a AyaNova",
+ "WhoWillBeNotified":"¿Quién será notificado?",
"WorkOrder": "Orden de trabajo",
"WorkOrderAge": "Age",
"WorkOrderCloseByDate": "Fecha para completar",
diff --git a/server/AyaNova/resource/fr.json b/server/AyaNova/resource/fr.json
index 80f921ee..e867742e 100644
--- a/server/AyaNova/resource/fr.json
+++ b/server/AyaNova/resource/fr.json
@@ -1303,6 +1303,7 @@
"WarrantyExpires": "Valable jusque",
"WebAddress": "Adresse Web",
"Welcome": "Bienvenue chez AyaNova",
+ "WhoWillBeNotified":"Qui sera notifié ?",
"WorkOrder": "Bon de travail",
"WorkOrderAge": "Age",
"WorkOrderCloseByDate": "Date à compléter",