Exemplo n.º 1
0
 public function exportPAES($request)
 {
     require_once R3_CLASS_DIR . 'obj.global_result_table.php';
     require_once R3_CLASS_DIR . 'obj.global_plain_table.php';
     $id = empty($request['id']) ? $this->id : (int) $request['id'];
     set_time_limit(5 * 60);
     ini_set('memory_limit', '2G');
     ignore_user_abort(true);
     $db = ezcDbInstance::get();
     $driverInfo = $this->auth->getConfigValue('APPLICATION', 'EXPORT_PAES', array());
     if (!isset($driverInfo[$request['driver']]['driver'])) {
         throw new Exception(_("Invalid driver \"{$request['driver']}\""));
     }
     $exportDriverName = $driverInfo[$request['driver']]['driver'];
     $exportDriver = R3ExportPAES::factory($exportDriverName, $this->auth, isset($driverInfo[$request['driver']]['params']) ? $driverInfo[$request['driver']]['params'] : null);
     $q = $db->createSelectQuery();
     $q->select('*')->from('global_strategy_data')->where("gst_id={$id}");
     $globalStrategyData['general'] = $db->query($q)->fetch(PDO::FETCH_ASSOC);
     $globalStrategyData['general']['gst_reduction_target_text'] = $globalStrategyData['general']['gst_reduction_target_absolute'] ? _('Riduzione assoluta') : _('Riduzione "pro capite"');
     $budgetEuro = $globalStrategyData['general']['gst_budget'] == '' ? '' : '€' . R3NumberFormat($globalStrategyData['general']['gst_budget'], 2, true);
     if ($globalStrategyData['general']['gst_budget_text_1'] != '' && $globalStrategyData['general']['gst_budget'] != '') {
         $globalStrategyData['general']['gst_budget_text_1'] = sprintf('%s - %s', $budgetEuro, $globalStrategyData['general']['gst_budget_text_1']);
     } else {
         $globalStrategyData['general']['gst_budget_text_1'] = $budgetEuro . $globalStrategyData['general']['gst_budget_text_1'];
     }
     if ($globalStrategyData['general']['gst_budget_text_2'] != '' && $globalStrategyData['general']['gst_budget'] != '') {
         $globalStrategyData['general']['gst_budget_text_2'] = sprintf('%s - %s', $budgetEuro, $globalStrategyData['general']['gst_budget_text_2']);
     } else {
         $globalStrategyData['general']['gst_budget_text_2'] = $budgetEuro . $globalStrategyData['general']['gst_budget_text_2'];
     }
     $q = $db->createSelectQuery();
     $q->select('*')->from('global_plain_data')->where("gp_id=" . (int) $globalStrategyData['general']['gp_id']);
     $actionPlanData['general'] = $db->query($q)->fetch(PDO::FETCH_ASSOC);
     if (isset($actionPlanData['general']['gp_approval_date'])) {
         $actionPlanData['general']['gp_approval_date'] = ' ' . SQLDateToStr($actionPlanData['general']['gp_approval_date'], 'd/m/Y');
     }
     // SHEET 2: EMISSION INVENTORY
     $udm_divider = 1000;
     // MWh (in db data are stored in kWh)
     $inventoryTableKinds = array('CONSUMPTION', 'EMISSION', 'ENERGY_PRODUCTION', 'HEATH_PRODUCTION');
     $emissionInventoryData = array();
     for ($i = 1; $i <= 2; $i++) {
         $ge_id = $i == 1 ? $globalStrategyData['general']['ge_id'] : $globalStrategyData['general']['ge_id_2'];
         if ($ge_id != '') {
             $q = $db->createSelectQuery();
             $q->select('*, ge_green_electricity_purchase/1000 AS ge_green_electricity_purchase')->from('global_entry_data')->where('ge_id=' . (int) $ge_id);
             $emissionInventoryData[$i]['general'] = $db->query($q)->fetch(PDO::FETCH_ASSOC);
             $emissionInventoryData[$i]['general']['gst_emission_factor_text'] = $globalStrategyData['general']['gst_emission_factor_type_ipcc'] ? _('Fattori di emissione standard in linea con i principi IPCC') : _('Fattori LCA (valutazione del ciclo di vita)');
             $emissionInventoryData[$i]['general']['gst_emission_unit_text'] = $globalStrategyData['general']['gst_emission_unit_co2'] ? _('Emissioni di CO2') : _('Emissioni equivalenti di CO2');
             foreach ($inventoryTableKinds as $kind) {
                 $emissionInventoryData[$i][$kind]['header'] = R3EcoGisGlobalTableHelper::getParameterList($kind, array('show_udm' => true));
                 $emissionInventoryData[$i][$kind]['rows'] = R3EcoGisGlobalTableHelper::getCategoriesData($ge_id, $kind, $udm_divider);
             }
         }
     }
     $ext = '.' . (isset($driverInfo[$request['driver']]['output_format']) ? $driverInfo[$request['driver']]['output_format'] : 'xlsx');
     $fileName = R3_TMP_DIR . date('YmdHis') . '.' . md5(time()) . $ext;
     $opt = array('GENERAL' => $globalStrategyData, 'ACTION_PLAN' => $actionPlanData);
     for ($i = 1; $i <= 2; $i++) {
         if (isset($emissionInventoryData[$i])) {
             $opt["EMISSION_INVENTORY_{$i}"] = $emissionInventoryData[$i];
         }
     }
     if ($globalStrategyData['general']['gp_id'] != '') {
         $opt['GLOBAL_PLAN'] = R3EcoGisGlobalPlainTableHelper::getData($this->do_id, $globalStrategyData['general']['gp_id']);
     }
     $opt['METADATA'] = array('creator' => $this->auth->getUserName(), 'title' => _('TEMPLATE') . ' - ' . _('POWER BY R3-EcoGIS 2'));
     $opt['SHEET-NAME'] = array('GENERAL' => _('Strategia generale'), 'EMISSION_INVENTORY_1' => _('Inventario base emissioni (1)'), 'EMISSION_INVENTORY_2' => _('Inventario base emissioni (2)'), 'ACTION_PLAN' => _("Piano d'azione SEAP"));
     $opt['logger'] = new R3ExportLogger();
     // Close immediatly the session to allow concurrency session
     session_write_close();
     $exportDriver->export($fileName, R3_SMARTY_TEMPLATE_DIR_DOC . $driverInfo[$request['driver']]['template'], $opt);
     $httpFileName = basename($fileName);
     $url = "getfile.php?type=tmp&file={$httpFileName}&disposition=download&name=PAES_" . date('Y-m-d') . $ext;
     return array('status' => R3_AJAX_NO_ERROR, 'url' => $url);
 }
Exemplo n.º 2
0
 /**
  * Return the data for a single customer 
  */
 public function getData($id = null)
 {
     $lang = R3Locale::getLanguageID();
     $db = ezcDbInstance::get();
     $vlu = array();
     if ($this->act != 'add') {
         $sql = "SELECT mu_type FROM ecogis.global_plain_data WHERE gp_id=" . (int) $this->gp_id;
         $vlu['mu_type'] = $db->query($sql)->fetchColumn();
         $vlu['merge_municipality_data'] = $this->merge_municipality_data;
         $vlu['data'] = R3EcoGisGlobalPlainTableHelper::getData($this->do_id, $this->gp_id, $this->merge_municipality_data);
         $vlu['can_monitoring'] = R3EcoGisGlobalPlainTableHelper::canMonitoring($this->do_id, $this->gp_id);
     }
     $this->data = $vlu;
     // Save the data (prevent multiple sql)
     return $vlu;
 }