Skip to content
Snippets Groups Projects
request.js 9.06 KiB
Newer Older
  • Learn to ignore specific revisions
  • // @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
     */
    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,
    
    Hugo SUBTIL's avatar
    Hugo SUBTIL committed
      userMaxPower,
    
      userMesureDetailles,
    
      searchUser,
      searchServiceSouscrit,
      activateDataCollect,
      stopDataCollect,