From d5466d0f5f89f990842085efc7c2e29085b296b9 Mon Sep 17 00:00:00 2001
From: Hugo SUBTIL <ext.sopra.husubtil@grandlyon.com>
Date: Wed, 15 Sep 2021 08:44:22 +0000
Subject: [PATCH] feat(dacc): add protection on dacc sending. Data is sent only
 in case of user consent.

---
 src/enum/dacc.enum.ts                         |  2 +-
 src/targets/services/aggregatorUsageEvents.ts | 14 +++++++++++++-
 2 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/src/enum/dacc.enum.ts b/src/enum/dacc.enum.ts
index 3a77a3a19..ed189b78c 100644
--- a/src/enum/dacc.enum.ts
+++ b/src/enum/dacc.enum.ts
@@ -10,5 +10,5 @@ export enum DaccEvent {
   EVENT_DURATION = 'event-duration',
   QUIZ_STARS = 'quiz-stars',
   SUMMARY_SUBSCRIPTION_MONTHLY = 'summary-subscription-monthly',
-  ELECTRICITY_HALF_HOUR_DATA = 'electricity-half-hour-data',
+  FLUID_DATA_GRANULARITY = 'fluid-data-granularity-monthly',
 }
diff --git a/src/targets/services/aggregatorUsageEvents.ts b/src/targets/services/aggregatorUsageEvents.ts
index ef3bb1124..7ce143995 100644
--- a/src/targets/services/aggregatorUsageEvents.ts
+++ b/src/targets/services/aggregatorUsageEvents.ts
@@ -18,6 +18,7 @@ import { UsageEventProperties } from 'enum/usageEventProperties.enum'
 import ChallengeService from 'services/challenge.service'
 import { UserChallengeState } from 'enum/userChallenge.enum'
 import ProfileTypeEntityService from 'services/profileTypeEntity.service'
+import TermsService from 'services/terms.service'
 
 const log = logger.namespace('aggregatorUsageEvents')
 
@@ -596,7 +597,11 @@ const sendHalfHourConsumption = async (client: Client) => {
 
   const halfHourConsumption: Indicator = {
     createdBy: 'ecolyo',
-    measureName: DaccEvent.ELECTRICITY_HALF_HOUR_DATA,
+    measureName: DaccEvent.FLUID_DATA_GRANULARITY,
+    // eslint-disable-next-line @typescript-eslint/camelcase
+    group1: { fluid_type: 'electricity' },
+    // eslint-disable-next-line @typescript-eslint/camelcase
+    group2: { granularity: 'half_hour' },
     startDate: DateTime.local()
       .setZone('utc', {
         keepLocalTime: true,
@@ -920,6 +925,13 @@ const AggregatorUsageEvents = async ({
   client,
 }: AggregatorUsageEventsProps) => {
   log('info', 'Launch service')
+  log('info', 'Dacc consent validation...')
+  const termService = new TermsService(client)
+  if (!(await termService.getLastTerm())) {
+    log('info', 'Exit: no consent available')
+    return
+  }
+
   const events: UsageEvent[] = await UsageEventService.getEvents(client, {
     aggregated: false,
     eventDate: {
-- 
GitLab