From 6d16a17fbcbbee91886196ad2009f3c6885ff354 Mon Sep 17 00:00:00 2001 From: Hugo Nouts <hnouts@grandlyon.com> Date: Mon, 13 Jul 2020 16:02:27 +0200 Subject: [PATCH] todo spec e2e test --- src/targets/services/monthlySummary.js | 61 ++++++++++++++++++++++++++ src/targets/services/service.js | 22 ++++++++++ 2 files changed, 83 insertions(+) create mode 100644 src/targets/services/service.js diff --git a/src/targets/services/monthlySummary.js b/src/targets/services/monthlySummary.js index e69de29bb..a4d8dd6e5 100644 --- a/src/targets/services/monthlySummary.js +++ b/src/targets/services/monthlySummary.js @@ -0,0 +1,61 @@ +import moment from 'moment-timezone' +import { ENEDIS_DAY_DOCTYPE, GRDF_DAY_DOCTYPE, EGL_DAY_DOCTYPE } from 'doctypes' +import logger from 'cozy-logger' +import { sumBy } from 'lodash' +import { runService } from './service' + +moment.tz.setDefault('Europe/Paris') +const log = logger.namespace('monthly_summary') + +// Get last month limits +const getPeriod = () => { + const end = moment().startOf('month') + + const start = end + .clone() + .subtract(1, 'month') + .startOf('month') + + end = start.clone().endOf('month') + return { start, end } +} + +const fetchConsumptionsForPeriod = period => { + return ENEDIS_DAY_DOCTYPE.queryAll({ + date: { + $gte: period.start, + $lt: period.end, + }, + }) +} + +const getMeanOnPeriod = (consumptions, period) => { + const end = moment(period.end) + const start = moment(period.start) + + const nbdays = end.diff(start, 'days') + + const total = Math.abs( + sumBy(consumptions, consumptions => consumptions.value) + ) + const mean = total / nbdays + + return mean +} + +const monthlySummaryStats = async () => { + log('info', 'Fetching datas...') + + const period = getPeriod() + const consumptions = await fetchConsumptionsForPeriod(period) + const meanConsumptions = getMeanOnPeriod(consumptions, period) + + log( + 'info', + `${consumptions.length} consumptions between ${period.start} and ${period.end}` + ) + + //create doctype ecran stats +} + +runService(monthlySummaryStats) diff --git a/src/targets/services/service.js b/src/targets/services/service.js new file mode 100644 index 000000000..cfc55f898 --- /dev/null +++ b/src/targets/services/service.js @@ -0,0 +1,22 @@ +import CozyClient from 'cozy-client' +import { schema } from 'doctypes' +import { Document } from 'cozy-doctypes' + +// TODO Check to use CozyClient.fromEnv +export const runService = service => { + const data = root.dataset + const protocol = window.location ? window.location.protocol : 'https:' + + const client = new CozyClient({ + uri: `${protocol}//${data.cozyDomain}`, + token: data.cozyToken, + schema, + }) + Document.registerClient(client) + + return service({ client }).catch(e => { + // eslint-disable-next-line no-console + console.error(e) + process.exit(1) + }) +} -- GitLab