Skip to content
Snippets Groups Projects
Commit 220b5b64 authored by Yoan VALLET's avatar Yoan VALLET
Browse files

creat montly report service

parent b4f41dfa
Branches
Tags
3 merge requests!103Support,!102Dev,!83Features/113 bilan mensuel
......@@ -22,9 +22,9 @@
}
},
"services": {
"monthlySummary": {
"monthlyReport": {
"type": "node",
"file": "monthlySummary.js",
"file": "monthlyReport.js",
"trigger": "@cron 0 0 * * * *"
}
},
......
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)
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
}
......
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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment