Skip to content
Snippets Groups Projects
request.js 10 KiB
Newer Older
// @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,
  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>
  `
}

Hugo SUBTIL's avatar
Hugo SUBTIL committed
/**
 * Get user max power
 * @param {number} pointId
 * @param {string} appLogin
Hugo SUBTIL's avatar
Hugo SUBTIL committed
 * @param {string} startDt
 * @param {string} endDt
 * @returns {string}
 */
function userMaxPower(pointId, appLogin, startDt, endDt) {
Hugo SUBTIL's avatar
Hugo SUBTIL committed
  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>
Hugo SUBTIL's avatar
Hugo SUBTIL committed
                  <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
 */
Hugo SUBTIL's avatar
Hugo SUBTIL committed
function rechercherPoint(appLogin, name, postalCode, inseeCode, address) {
  log('info', `Query rechercherPoint`)
  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>`
}

/**
 * Return inseeCode given a postalCode
 * @param {string} postalCode
 * @return {string} inseeCode
 */
function getInseeCode(postalCode) {
  //TODO: Implement
  log('info', `Query getInseeCode for postalCode ${postalCode}`)
  throw new Error('Function not implemented.')
}

/**
 *
 */
function createBoConsent() {
  //TODO: Implement
  log('info', `Query createBoConsent`)
  throw new Error('Function not implemented.')
}

/**
 *
 */
function updateBoConsent() {
  //TODO: Implement
  log('info', `Query updateBoConsent`)
  throw new Error('Function not implemented.')
}

/**
 *
 */
function getBoConsent() {
  //TODO: Implement
  log('info', `Query getBoConsent`)
  throw new Error('Function not implemented.')
}
/**
 *
 */
function deleteBoConsent() {
  //TODO: deleteBoConsent
  log('info', `Query createBoConsent`)
  throw new Error('Function not implemented.')
}

module.exports = {
  userTechnicalData,
Hugo SUBTIL's avatar
Hugo SUBTIL committed
  userMaxPower,
  userMesureDetailles,
Hugo SUBTIL's avatar
Hugo SUBTIL committed
  rechercherPoint,
  searchServiceSouscrit,
  activateDataCollect,
  stopDataCollect,
  getInseeCode,
  createBoConsent,
  updateBoConsent,
  getBoConsent,
  deleteBoConsent,