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