diff --git a/manifest.webapp b/manifest.webapp index 319d3ed43d06b492c87fc9e0a31708f91931da1d..c1ed56e532c97025d59d628998a3066ec93fcde7 100644 --- a/manifest.webapp +++ b/manifest.webapp @@ -22,9 +22,9 @@ } }, "services": { - "monthlySummary": { + "monthlyReport": { "type": "node", - "file": "monthlySummary.js", + "file": "monthlyReport.js", "trigger": "@cron 0 0 * * * *" } }, diff --git a/src/targets/services/monthlyReport.js b/src/targets/services/monthlyReport.js new file mode 100644 index 0000000000000000000000000000000000000000..8286f7e9459ac29eb2771ae1195b2b92cf7932cf --- /dev/null +++ b/src/targets/services/monthlyReport.js @@ -0,0 +1,30 @@ +import logger from 'cozy-logger' +import { runService } from './service' + +const log = logger.namespace('report') + +const monthlyReport = async () => { + log('info', 'Fetching data for mail...') + + log('info', 'Sneding mail...') + + const FEEDBACK_EMAIL = 'ecolyo@grandlyon.com' + + const mailContent = 'TEST' + + const mailData = { + mode: 'from', + to: [{ name: 'Support', email: FEEDBACK_EMAIL }], + subject: '[Ecolyo] - Votre bilan mensuel', + parts: [{ type: 'text/plain', body: mailContent }], + } + try { + const jobCollection = client.collection('io.cozy.jobs') + await jobCollection.create('sendmail', mailData) + } catch (e) { + // eslint-disable-next-line no-console + console.error(e) + } +} + +runService(monthlyReport) diff --git a/src/targets/services/monthlySummary.js b/src/targets/services/monthlySummary.js index 10000734b1d83f2ccba2eb48c3f9a3f5cb5471cc..dd7cb50d21300e397bfe6d690160b3915e39114a 100644 --- a/src/targets/services/monthlySummary.js +++ b/src/targets/services/monthlySummary.js @@ -1,78 +1,78 @@ import moment from 'moment-timezone' -import { ENEDIS_DAY_DOCTYPE, GRDF_DAY_DOCTYPE, EGL_DAY_DOCTYPE } from 'doctypes' +// import { ENEDIS_DAY_DOCTYPE, GRDF_DAY_DOCTYPE, EGL_DAY_DOCTYPE } from 'doctypes' import logger from 'cozy-logger' -import { sumBy } from 'lodash' +// 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 getPeriod = () => { +// const end = moment().startOf('month') - const start = end - .clone() - .subtract(1, 'month') - .startOf('month') +// const start = end +// .clone() +// .subtract(1, 'month') +// .startOf('month') - end = start.clone().endOf('month') - return { start, end } -} +// end = start.clone().endOf('month') +// return { start, end } +// } -const fetchConsumptionsForPeriod = period => { - return ENEDIS_DAY_DOCTYPE.queryAll({ - date: { - $gte: period.start, - $lt: period.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 getMeanOnPeriod = (consumptions, period) => { +// const end = moment(period.end) +// const start = moment(period.start) - const nbdays = end.diff(start, 'days') +// const nbdays = end.diff(start, 'days') - const total = Math.abs( - sumBy(consumptions, consumptions => consumptions.value) - ) - const mean = total / nbdays +// const total = Math.abs( +// sumBy(consumptions, consumptions => consumptions.value) +// ) +// const mean = total / nbdays - return mean -} +// return mean +// } const monthlySummaryStats = async () => { log('info', 'Fetching datas...') - const period = getPeriod() - const consumptions = await fetchConsumptionsForPeriod(period) - const meanConsumptions = getMeanOnPeriod(consumptions, period) - - const FEEDBACK_EMAIL = 'ecolyo@grandlyon.com' - - const mailContent = 'TEST' - - const mailData = { - mode: 'from', - to: [{ name: 'Support', email: FEEDBACK_EMAIL }], - subject: '[Ecolyo] - Votre bilan mensuel', - parts: [{ type: 'text/plain', body: mailContent }], - } - try { - const jobCollection = client.collection('io.cozy.jobs') - await jobCollection.create('sendmail', mailData) - } catch (e) { - // eslint-disable-next-line no-console - console.error(e) - setError(t('feedback.error_sending')) - } - - log( - 'info', - `${consumptions.length} consumptions between ${period.start} and ${period.end}` - ) + // const period = getPeriod() + // const consumptions = await fetchConsumptionsForPeriod(period) + // const meanConsumptions = getMeanOnPeriod(consumptions, period) + + // const FEEDBACK_EMAIL = 'ecolyo@grandlyon.com' + + // const mailContent = 'TEST' + + // const mailData = { + // mode: 'from', + // to: [{ name: 'Support', email: FEEDBACK_EMAIL }], + // subject: '[Ecolyo] - Votre bilan mensuel', + // parts: [{ type: 'text/plain', body: mailContent }], + // } + // try { + // const jobCollection = client.collection('io.cozy.jobs') + // await jobCollection.create('sendmail', mailData) + // } catch (e) { + // // eslint-disable-next-line no-console + // console.error(e) + // setError(t('feedback.error_sending')) + // } + + // log( + // 'info', + // `${consumptions.length} consumptions between ${period.start} and ${period.end}` + // ) //create doctype ecran stats } diff --git a/src/targets/services/service.js b/src/targets/services/service.js index cfc55f898818f5b8bc564db758ec1900d3c1f3b1..4443dacc35351cfcf0089d2502c2189e6ada7562 100644 --- a/src/targets/services/service.js +++ b/src/targets/services/service.js @@ -1,18 +1,25 @@ +import fetch from 'node-fetch' +global.fetch = fetch + import CozyClient from 'cozy-client' import { schema } from 'doctypes' -import { Document } from 'cozy-doctypes' + +const assertEnvVar = varName => { + if (!process.env[varName]) { + throw new Error(`${varName} environment variable is not set`) + } +} // TODO Check to use CozyClient.fromEnv export const runService = service => { - const data = root.dataset - const protocol = window.location ? window.location.protocol : 'https:' + assertEnvVar('COZY_URL') + assertEnvVar('COZY_CREDENTIALS') const client = new CozyClient({ - uri: `${protocol}//${data.cozyDomain}`, - token: data.cozyToken, + uri: process.env.COZY_URL.trim(), schema, + token: process.env.COZY_CREDENTIALS.trim(), }) - Document.registerClient(client) return service({ client }).catch(e => { // eslint-disable-next-line no-console