// @ts-check const { log } = require('cozy-konnector-libs') /** * Query SGE in order to get info * @param {number} pointId * @param {string} appLogin * @param {string} startDt * @param {string} endDt * @returns {string} */ function userMesureDetailles( pointId, appLogin, startDt, endDt, mesureType = 'ENERGIE', unit = 'EA' ) { log( 'info', `Query data ${mesureType}/${unit} between ${startDt} and ${endDt}` ) return `<?xml version='1.0' encoding='utf-8'?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v2="http://www.enedis.fr/sge/b2b/services/consultationmesuresdetaillees/v2.0" xmlns:v1="http://www.enedis.fr/sge/b2b/technique/v1.0"> <soapenv:Header/> <soapenv:Body> <v2:consulterMesuresDetaillees> <demande> <initiateurLogin>${appLogin}</initiateurLogin> <pointId>${pointId}</pointId> <mesuresTypeCode>${mesureType}</mesuresTypeCode> <grandeurPhysique>${unit}</grandeurPhysique> <soutirage>true</soutirage> <injection>false</injection> <dateDebut>${startDt}</dateDebut> <dateFin>${endDt}</dateFin> <mesuresCorrigees>false</mesuresCorrigees> <accordClient>true</accordClient> </demande> </v2:consulterMesuresDetaillees> </soapenv:Body> </soapenv:Envelope> ` } /** * Get user technical data * @param {number} pointId * @param {string} appLogin * @returns {string} */ function userTechnicalData(pointId, appLogin) { log('info', `Query userMesureDetailles`) return `<?xml version='1.0' encoding='utf-8'?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v2="http://www.enedis.fr/sge/b2b/services/consulterdonneestechniquescontractuelles/v1.0" xmlns:v1="http://www.enedis.fr/sge/b2b/technique/v1.0"> <soapenv:Header/> <soapenv:Body> <v2:consulterDonneesTechniquesContractuelles> <pointId>${pointId}</pointId> <loginUtilisateur>${appLogin}</loginUtilisateur> <autorisationClient>true</autorisationClient> </v2:consulterDonneesTechniquesContractuelles> </soapenv:Body> </soapenv:Envelope> ` } /** * Get user max power * @param {number} pointId * @param {string} appLogin * @param {string} startDt * @param {string} endDt * @returns {string} */ function userMaxPower(pointId, appLogin, startDt, endDt) { log('info', `Query userMesureDetailles`) return `<?xml version='1.0' encoding='utf-8'?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v2="http://www.enedis.fr/sge/b2b/services/consultationmesuresdetaillees/v2.0" xmlns:v1="http://www.enedis.fr/sge/b2b/technique/v1.0"> <soapenv:Header/> <soapenv:Body> <v2:consulterMesuresDetaillees> <demande> <initiateurLogin>${appLogin}</initiateurLogin> <pointId>${pointId}</pointId> <mesuresTypeCode>PMAX</mesuresTypeCode> <grandeurPhysique>PMA</grandeurPhysique> <soutirage>true</soutirage> <injection>false</injection> <dateDebut>${startDt}</dateDebut> <dateFin>${endDt}</dateFin> <mesuresPas>P1D</mesuresPas> <mesuresCorrigees>false</mesuresCorrigees> <accordClient>true</accordClient> </demande> </v2:consulterMesuresDetaillees> </soapenv:Body> </soapenv:Envelope> ` } /** * Use rechercherPoint to find user PDL if exist * @param {string} name * @param {string} postalCode * @param {string} address * @returns {string} PDL */ function searchUser(appLogin, name, postalCode, inseeCode, address) { log('info', `Query searchUser`) return `<?xml version='1.0' encoding='utf-8'?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v2="http://www.enedis.fr/sge/b2b/services/rechercherpoint/v2.0" xmlns:v1="http://www.enedis.fr/sge/b2b/technique/v1.0"> <soapenv:Header/> <soapenv:Body> <v2:rechercherPoint> <criteres> <adresseInstallation> <numeroEtNomVoie>${address}</numeroEtNomVoie> <codePostal>${postalCode}</codePostal> <codeInseeCommune>${inseeCode}</codeInseeCommune> </adresseInstallation> <nomClientFinalOuDenominationSociale>${name}</nomClientFinalOuDenominationSociale> <rechercheHorsPerimetre>true</rechercheHorsPerimetre> </criteres> <loginUtilisateur>${appLogin}</loginUtilisateur> </v2:rechercherPoint> </soapenv:Body> </soapenv:Envelope>` } /** * Search if user as a service * @param {string} appLogin * @param {string} contractId * @param {string} pointId * @returns {*} */ function searchServiceSouscrit(appLogin, contractId, pointId) { log('info', `Query activateDataCollect`) return `<?xml version='1.0' encoding='utf-8'?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v2="http://www.enedis.fr/sge/b2b/rechercherservicessouscritsmesures/v1.0" xmlns:v1="http://www.enedis.fr/sge/b2b/technique/v1.0"> <soapenv:Header/> <soapenv:Body> <v2:rechercherServicesSouscritsMesures> <criteres> <pointId>${pointId}</pointId> <contratId>${contractId}</contratId> </criteres> <loginUtilisateur>${appLogin}</loginUtilisateur> </v2:rechercherServicesSouscritsMesures> </soapenv:Body> </soapenv:Envelope>` } /** * Activate half hour data collect for user * @param {string} appLogin * @param {string} contractId * @param {string} pointId * @param {string} name * @param {string} startDate * @param {string} endDate * @returns {*} */ function activateDataCollect( appLogin, contractId, pointId, name, startDate, endDate ) { log('info', `Query activateDataCollect`) return `<?xml version='1.0' encoding='utf-8'?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v2="http://www.enedis.fr/sge/b2b/commandercollectepublicationmesures/v3.0" xmlns:v1="http://www.enedis.fr/sge/b2b/technique/v1.0"> <soapenv:Header/> <soapenv:Body> <v2:commanderCollectePublicationMesures> <demande> <donneesGenerales> <objetCode>AME</objetCode> <pointId>${pointId}</pointId> <initiateurLogin>${appLogin}</initiateurLogin> <contratId>${contractId}</contratId> </donneesGenerales> <accesMesures> <dateDebut>${startDate}</dateDebut> <dateFin>${endDate}</dateFin> <declarationAccordClient> <accord>true</accord> <personnePhysique> <nom>${name}</nom> </personnePhysique> </declarationAccordClient> <mesuresTypeCode>CDC</mesuresTypeCode> <soutirage>true</soutirage> <injection>false</injection> <mesuresPas>PT30M</mesuresPas> <mesuresCorrigees>false</mesuresCorrigees> <transmissionRecurrente>true</transmissionRecurrente> <periodiciteTransmission>P1D</periodiciteTransmission> </accesMesures> </demande> </v2:commanderCollectePublicationMesures> </soapenv:Body> </soapenv:Envelope>` } /** * * @param {string} appLogin * @param {string} contractId * @param {string} pointId * @param {string} serviceSouscritId * @returns {*} */ function stopDataCollect(appLogin, contractId, pointId, serviceSouscritId) { log('info', `Query stopDataCollect`) return `<?xml version='1.0' encoding='utf-8'?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v2="http://www.enedis.fr/sge/b2b/commanderarretservicesouscritmesures/v1.0" xmlns:v1="http://www.enedis.fr/sge/b2b/technique/v1.0"> <soapenv:Header/> <soapenv:Body> <v2:commanderArretServiceSouscritMesures> <demande> <donneesGenerales> <objetCode>ASS</objetCode> <pointId>${pointId}</pointId> <initiateurLogin>${appLogin}</initiateurLogin> <contratId>${contractId}</contratId> </donneesGenerales> <arretServiceSouscrit> <serviceSouscritId>${serviceSouscritId}</serviceSouscritId> </arretServiceSouscrit> </demande> </v2:commanderArretServiceSouscritMesures> </soapenv:Body> </soapenv:Envelope>` } module.exports = { userTechnicalData, userMaxPower, userMesureDetailles, searchUser, searchServiceSouscrit, activateDataCollect, stopDataCollect, }