Esempio n. 1
0
 /**
  * Return the UDM
  * @param array $request    the request
  * @return array            the result data
  */
 public function confirmDeleteMeter($request)
 {
     $db = ezcDbInstance::get();
     $id = forceInteger($request['id'], 0, false, '.');
     $name = $db->query("SELECT em_serial FROM energy_meter WHERE em_id={$id}")->fetchColumn();
     $devices = $db->query("SELECT COUNT(*) FROM device WHERE em_id={$id}")->fetchColumn();
     $consumptions = $db->query("SELECT COUNT(*) FROM consumption WHERE em_id={$id}")->fetchColumn();
     if ($devices == 0 && $consumptions == 0) {
         return array('status' => R3_AJAX_NO_ERROR, 'confirm' => sprintf(_('Sei sicuro di voler cancellare il contatore "%s"?'), $name));
     } else {
         return array('status' => R3_AJAX_NO_ERROR, 'alert' => _('Impossibile cancellare il contatore poichè vi sono degli impianti e/o dei consumi adesso legati'));
     }
 }
Esempio n. 2
0
 public function askDelBuilding($request)
 {
     $db = ezcDbInstance::get();
     $lang = R3Locale::getLanguageID();
     $id = forceInteger($request['id'], 0, false, '.');
     $name = $db->query("SELECT bu_name_{$lang} FROM building WHERE bu_id={$id}")->fetchColumn();
     $hasEnergyMeter = R3EcoGisHelper::hasEnergyMeter('BUILDING', $id);
     $hasDocument = R3EcoGisHelper::hasDocument('BUILDING', $id);
     if (!$hasEnergyMeter && !$hasDocument && $this->tryDeleteData($id)) {
         return array('status' => R3_AJAX_NO_ERROR, 'confirm' => sprintf(_("Sei sicuro di voler cancellare l'edificio \"%s\"?"), $name));
     } else {
         return array('status' => R3_AJAX_NO_ERROR, 'alert' => _('Impossibile cancellare questo edificio poichè vi sono dei dati ad esso legati'));
     }
 }
Esempio n. 3
0
 public function askDelUtility($request)
 {
     $db = ezcDbInstance::get();
     $lang = R3Locale::getLanguageID();
     $id = forceInteger($request['id'], 0, false, '.');
     $sql = "SELECT COUNT(*)\r\n                FROM utility_product up\r\n                INNER JOIN energy_meter em ON em.up_id=up.up_id\r\n                WHERE us_id={$id}";
     if ($db->query($sql)->fetchColumn() > 0) {
         return array('status' => R3_AJAX_NO_ERROR, 'alert' => _('Impossibile cancellare questo produttore di servizi poichè vi sono dei dati ad esso legati'));
     } else {
         $name = $db->query("SELECT us_name_{$lang} FROM utility_supplier WHERE us_id={$id}")->fetchColumn();
         return array('status' => R3_AJAX_NO_ERROR, 'confirm' => sprintf(_("Sei sicuro di voler cancellare il produttore di servizi \"%s\"?"), $name));
     }
 }
Esempio n. 4
0
 public function prepareFieldValue($act, $key, $value, $type, $size = null, $default = null)
 {
     $db = ezcDbInstance::get();
     switch ($type) {
         case 'real':
         case 'double':
         case 'number':
         case 'float':
             if ((string) $value == '') {
                 return $this->null2text($default);
             }
             if (!is_numeric($value)) {
                 $value = forceFloat($value, null, '.');
             }
             return (string) $value;
         case 'year':
         case 'integer':
             if ((string) $value == '') {
                 return $this->null2text($default);
             }
             if (!is_numeric($value)) {
                 $value = forceInteger($value);
             }
             return (string) $value;
         case 'boolean':
             if ($value == '') {
                 return 'FALSE';
             }
             return strtoupper(substr($value, 0, 1)) == 'T' || $value == 1 || $value === true ? 'TRUE' : 'FALSE';
         case 'lookup':
         case 'domain':
             if ((string) $value == '') {
                 return $this->null2text($default);
             }
             return $value;
         case 'date':
             if ($value == '') {
                 return $this->null2text($default);
             }
             return $db->quote(forceISODate($value, null, 'ISO'));
         case 'string':
         case 'color':
         case 'text':
         case 'memo':
             if ($value == '') {
                 return $this->null2text($default, true, true);
             }
             if ($size > 0) {
                 return $db->quote(mb_substr($value, 0, $size));
             }
             return $db->quote($value);
         case 'geometry':
             if ($value == '') {
                 return $this->null2text($default);
             }
             return $db->quote($value);
         default:
             return $value;
     }
 }
Esempio n. 5
0
 public function askDelGlobalPlainGauge($request)
 {
     $db = ezcDbInstance::get();
     $lang = R3Locale::getLanguageID();
     $id = forceInteger($request['id'], 0, false, '.');
     $name = $db->query("SELECT gpg_name_{$lang} FROM ecogis.global_plain_gauge WHERE gpg_id={$id}")->fetchColumn();
     if ($this->tryDeleteData($id)) {
         return array('status' => R3_AJAX_NO_ERROR, 'confirm' => sprintf(_("Sei sicuro di voler cancellare l'indicatore \"%s\"?"), $name));
     } else {
         return array('status' => R3_AJAX_NO_ERROR, 'alert' => _('Impossibile cancellare questa voce dal catalogo azioni poichè vi sono dei dati ad esso legati'));
     }
     $name = $db->query("SELECT ac_name_{$lang} FROM action_catalog WHERE ac_id={$id}")->fetchColumn();
 }
Esempio n. 6
0
 public function askDelGlobalResult($request)
 {
     $db = ezcDbInstance::get();
     $lang = R3Locale::getLanguageID();
     $id = forceInteger($request['id'], 0, false, '.');
     $name = $db->query("SELECT ge_name_{$lang} FROM global_entry WHERE ge_id={$id}")->fetchColumn();
     if ($this->tryDeleteData($id)) {
         return array('status' => R3_AJAX_NO_ERROR, 'confirm' => sprintf(_("Sei sicuro di voler cancellare l'inventario emissioni \"%s\"?"), $name));
     } else {
         return array('status' => R3_AJAX_NO_ERROR, 'alert' => _('Impossibile cancellare questo inventario emissioni poichè vi sono dei dati ad esso legati'));
     }
 }
Esempio n. 7
0
 /**
  * Ajax request to submit data
  * @param array $request   the request
  * @return array           ajax format status
  */
 public function submitFormData($request)
 {
     global $dbini, $dsn, $mdb2, $languages;
     if ($this->act == 'del') {
         $id = $this->deleteCustomer($request);
         return array('status' => R3_AJAX_NO_ERROR, 'js' => "submitFormDataDoneCustomer({$id})");
     }
     $errors = array();
     $errors = $this->checkFormData($request, $errors);
     if ($request['municipality'] == '') {
         $errors['municipality'] = array('CUSTOM_ERROR' => _("Almeno un comune deve essere selezionato"));
     }
     $catalog = R3DbCatalog::factory('pgsql', $mdb2);
     $data = $catalog->getUserData();
     if (count($errors) > 0) {
         return $this->getAjaxErrorResult($errors);
     } else {
         if ($request['cus_srid'] == '') {
             $request['cus_srid'] = 4326;
         }
         $db = ezcDbInstance::get();
         $do_id = R3EcoGisCustomerHelper::createDomain($request['dn_name'], $request['dn_name_alias']);
         R3EcoGisCustomerHelper::createCustomer($do_id, $request);
         R3EcoGisCustomerHelper::createUser($do_id, $request);
         R3EcoGisCustomerHelper::setMunicipality($do_id, explode(',', $request['municipality']));
         $dataPath = R3_UPLOAD_DATA_DIR . strtolower($request['dn_name']);
         $dataLogoPath = $dataPath . '/logo';
         $dataStylePath = $dataPath . '/style';
         $dataJSPath = $dataPath . '/js';
         if (!file_exists($dataPath)) {
             if (!@mkdir($dataPath)) {
                 throw new Exception("Can't create path {$dataPath}");
             }
         }
         if (!file_exists($dataLogoPath)) {
             if (!@mkdir($dataLogoPath)) {
                 throw new Exception("Can't create path {$dataLogoPath}");
             }
         }
         if (!file_exists($dataStylePath)) {
             if (!@mkdir($dataStylePath)) {
                 throw new Exception("Can't create path {$dataStylePath}");
             }
         }
         if (!file_exists($dataJSPath)) {
             if (!@mkdir($dataJSPath)) {
                 throw new Exception("Can't create path {$dataJSPath}");
             }
         }
         R3EcoGisCustomerHelper::saveImages($request['dn_name'], $request);
         R3EcoGisCustomerHelper::saveCSS($request['dn_name'], $request);
         if ($request['consumption_end_year'] > 0 && $request['consumption_start_year'] > 0) {
             $viewOpt = array('totYears' => $request['consumption_end_year'] - $request['consumption_start_year'] + 1);
         } else {
             $viewOpt = array('totYears' => 100);
         }
         $schema = R3EcoGisHelper::getGeoSchema($do_id);
         //'geo_' . strtolower($request['dn_name']);
         R3EcoGisCustomerHelper::createSchema($schema, $dsn['dbuser']);
         R3EcoGisCustomerHelper::createViews($schema, $dsn['dbuser'], $request['cus_srid'], $do_id, $viewOpt);
         R3EcoGisCustomerHelper::setLoggerTrigger();
         R3EcoGisCustomerHelper::grantTables($schema, $dsn['dbuser']);
         R3EcoGisCustomerHelper::applyConsumptionInterval($request['consumption_start_year'], $request['consumption_end_year']);
         if (R3_AUTO_POPULATE_GEOMETRY_COLUMNS && !isset($request['skip_geometry_check'])) {
             R3EcoGisCustomerHelper::populateGeometryColumns(R3_DB_SCHEMA);
             R3EcoGisCustomerHelper::populateGeometryColumns($schema);
         }
         R3EcoGisCustomerHelper::copyEnergySource($do_id);
         if ($this->isMultiDomain()) {
             R3EcoGisCustomerHelper::copySettings('SYSTEM', $request['dn_name']);
         }
         if ($this->act == 'add') {
             $sql = "INSERT INTO auth.settings (do_id, app_id, se_section, se_param, se_value, se_descr, se_type, se_type_ext, se_private, se_order)\r\n                        SELECT DISTINCT (SELECT do_id FROM auth.domains_name WHERE dn_type='N' and dn_name='{$request['dn_name']}'), s.app_id, se_section, se_param, se_value, se_descr, se_type, se_type_ext, se_private, se_order\r\n                        FROM auth.settings s\r\n                        INNER JOIN auth.domains_name dn on s.do_id=dn.do_id and dn_type='N' AND dn_name='{$request['do_template']}'\r\n                        INNER JOIN auth.applications app on s.app_id=app.app_id AND app_code='" . APPLICATION_CODE . "'\r\n                        WHERE us_id IS NULL \r\n                        ORDER BY se_section, se_param";
             $db->exec($sql);
         }
         //Salva dati nuovo ente (DBINI)
         $gridSize = forceInteger($request['do_grid_size'], 0, false, '.');
         if ($this->auth->getConfigValueFor($request['dn_name'], APPLICATION_CODE, null, 'APPLICATION', 'STAT_GRID_SIZE', 0) != $gridSize) {
             $this->create_grid(array('do_id' => $do_id, 'sg_size' => $request['do_grid_size']));
         }
         $dbini2 = clone $dbini;
         $dbini2->setDomainName($request['dn_name']);
         $dbini2->setValue('APPLICATION', 'NUM_LANGUAGES', $request['app_language']);
         $dbini2->setValue('APPLICATION', 'CATASTRAL_TYPE', $request['app_cat_type']);
         $dbini2->setValue('APPLICATION', 'BUILDING_CODE_TYPE', $request['do_building_code_type']);
         $dbini2->setValue('APPLICATION', 'BUILDING_CODE_REQUIRED', $request['do_building_code_required']);
         $dbini2->setValue('APPLICATION', 'CALCULATE_GLOBAL_PLAIN_TOTALS', $request['do_calculate_global_plain_totals']);
         $dbini2->setValue('APPLICATION', 'BUILDING_CODE_UNIQUE', $request['do_building_code_unique']);
         $dbini2->setValue('APPLICATION', 'BUILDING_EXTRA_DESCR', $request['do_building_extra_descr']);
         $dbini2->setValue('APPLICATION', 'PUBLIC_CSS_URL', $request['do_public_css_url']);
         $dbini2->setValue('APPLICATION', 'ENABLE_PUBLIC_SITE', $request['do_public_site']);
         $dbini2->setValue('APPLICATION', 'STAT_GRID_SIZE', $gridSize > 0 ? $gridSize : null);
         $dbini2->setValue('APPLICATION', 'BUILDING_SHOW_ID', $request['do_building_show_id']);
         $dbini2->setValue('APPLICATION', 'BUILDING_YEAR_TYPE', $request['do_build_year_type']);
         $dbini2->setValue('APPLICATION', 'BUILDING_RESTRUCTURE_YEAR_TYPE', $request['do_build_restructure_year_type']);
         $dbini2->setValue('APPLICATION', 'BUILDING_MUNICIPALITY_MODE', $request['do_municipality_mode']);
         $dbini2->setValue('APPLICATION', 'BUILDING_FRACTION_MODE', $request['do_fraction_mode']);
         $dbini2->setValue('APPLICATION', 'BUILDING_STREET_MODE', $request['do_street_mode']);
         $dbini2->setValue('APPLICATION', 'BUILDING_CATASTRAL_MODE', $request['do_catastral_mode']);
         $dbini2->setValue('APPLICATION', 'CONSUMPTION_START_YEAR', $request['consumption_start_year']);
         $dbini2->setValue('APPLICATION', 'CONSUMPTION_END_YEAR', $request['consumption_end_year']);
         if ($request['app_language'] == 1) {
             $dbini2->setValue('APPLICATION', 'LANG_NAME_SHORT_1', '');
             $dbini2->setValue('APPLICATION', 'LANG_NAME_SHORT_2', '');
         } else {
             $dbini2->setValue('APPLICATION', 'LANG_NAME_SHORT_1', sprintf(' (%s)', $languages[1]));
             $dbini2->setValue('APPLICATION', 'LANG_NAME_SHORT_2', sprintf(' (%s)', $languages[2]));
         }
         $dbini2->setValue('APPLICATION', 'LANG_NAME_SHORT_3', ' (en)');
         // Gisclient settings
         $dbini2->setValue('GISCLIENT', 'PROJECT', $request['do_gc_project']);
         $dbini2->setValue('GISCLIENT', 'MAPSET', $request['do_gc_mapset']);
         $dbini2->setValue('GISCLIENT', 'HAS_STREETVIEW', $request['do_gc_streeview']);
         $dbini2->setValue('GISCLIENT', 'HAS_QUICK_SEARCH', $request['do_gc_quick_search']);
         $dbini2->setValue('GISCLIENT', 'DIGITIZE_HAS_SELECTION', $request['do_gc_digitize_has_selection']);
         $dbini2->setValue('GISCLIENT', 'DIGITIZE_HAS_EDITING', $request['do_gc_digitize_has_editing']);
         if (R3_AUTO_SAVE_DATABASE_VERSION) {
             R3EcoGisCustomerHelper::updateDatabaseVersion(DATABASE_VERSION);
             // Setup database version
         }
         $id = 0;
         R3EcoGisEventNotifier::notifyDataChanged($this, array('data_changed' => true));
         return array('status' => R3_AJAX_NO_ERROR, 'js' => "submitFormDataDoneCustomer({$id})");
     }
 }
Esempio n. 8
0
 public function askDelActionCatalog($request)
 {
     $db = ezcDbInstance::get();
     $lang = R3Locale::getLanguageID();
     $id = forceInteger($request['id'], 0, false, '.');
     $name = $db->query("SELECT ac_name_{$lang} FROM action_catalog WHERE ac_id={$id}")->fetchColumn();
     $sql = "select count(acd_id) from ecogis.action_catalog_dependencies where ac_related_id=" . $db->quote($id, PDO::PARAM_INT);
     $num = $db->query($sql)->fetchColumn(0);
     if ($num > 0) {
         return array('status' => R3_AJAX_NO_ERROR, 'alert' => _("Impossibile cancellare questa voce dal catalogo azioni poichè è un'azione correlata ad un'altra azione"));
     }
     if ($this->tryDeleteData($id)) {
         return array('status' => R3_AJAX_NO_ERROR, 'confirm' => sprintf(_("Sei sicuro di voler cancellare la voce \"%s\" dal catalogo azioni?"), $name));
     } else {
         return array('status' => R3_AJAX_NO_ERROR, 'alert' => _('Impossibile cancellare questa voce dal catalogo azioni poichè vi sono dei dati ad esso legati'));
     }
 }
Esempio n. 9
0
 /**
  * Ajax request to submit data
  * @param array $request   the request
  * @return array           ajax format status
  */
 public function submitFormData($request)
 {
     $errors = array();
     if (isset($_FILES['doc_file'])) {
         if (is_array($_FILES['doc_file']['name'])) {
             // Consider only the first file
             $files = array('name' => $_FILES['doc_file']['name'][0], 'type' => $_FILES['doc_file']['type'][0], 'tmp_name' => $_FILES['doc_file']['tmp_name'][0], 'error' => $_FILES['doc_file']['error'][0], 'size' => $_FILES['doc_file']['size'][0]);
         } else {
             $files = array('name' => $_FILES['doc_file']['name'], 'type' => $_FILES['doc_file']['type'], 'tmp_name' => $_FILES['doc_file']['tmp_name'], 'error' => $_FILES['doc_file']['error'], 'size' => $_FILES['doc_file']['size']);
         }
     } else {
         $files = array('name' => null, 'type' => null, 'tmp_name' => null, 'error' => UPLOAD_ERR_NO_FILE, 'size' => null);
     }
     $request['doc_id'] = forceInteger($request['id'], 0, false, '.');
     $request['type'] = strtoupper($request['type']);
     // Foreign key
     $file_info = $this->getDocFileInfo($request['doc_id']);
     if ($this->act == 'mod') {
         // Rimuove il campo: Evita lo spostamento di oggetti da una tipologia ad un altra
         $this->removeField('doc_object_id');
     } else {
         if (in_array($request['type'], array('BUILDING', 'BUILDING_PHOTO', 'BUILDING_THERMOGRAPHY', 'BUILDING_LABEL'))) {
             // Check foreign key per edifici
             $this->setFieldAttrib('doc_object_id', array('lookup' => array('table' => 'building', 'field' => 'bu_id')));
         } else {
             if (in_array($request['type'], array('STREET_LIGHTING'))) {
                 // Check foreign key per illuminazione pubblica
                 $this->setFieldAttrib('doc_object_id', array('lookup' => array('table' => 'street_lighting', 'field' => 'sl_id')));
             } else {
                 if (in_array($request['type'], array('GLOBAL_ENTRY'))) {
                     // Check foreign key per illuminazione pubblica
                     $this->setFieldAttrib('doc_object_id', array('lookup' => array('table' => 'global_entry', 'field' => 'ge_id')));
                 } else {
                     if (in_array($request['type'], array('GLOBAL_PLAIN'))) {
                         // Check foreign key per illuminazione pubblica
                         $this->setFieldAttrib('doc_object_id', array('lookup' => array('table' => 'global_plain', 'field' => 'gp_id')));
                     }
                 }
             }
         }
     }
     if ($files['error'] == 0) {
         $request['doc_file'] = $files['name'];
     }
     if ($this->act != 'del') {
         if ($this->act == 'add') {
             $request['doct_id'] = R3EcoGisHelper::getDocumentTypeIdByCode($request['type']);
         } else {
             $request['doct_id'] = R3EcoGisHelper::getDocumentTypeByDocumentId($request['doc_id']);
         }
         $errors = $this->checkFormData($request);
     }
     if (count($errors) > 0) {
         return $this->getAjaxErrorResult($errors);
     } else {
         $db = ezcDbInstance::get();
         $db->beginTransaction();
         if ($files['error'] == 0) {
             if ($this->hasVirus($files['tmp_name']) === true) {
                 // Verifica la presenza di un virus nel file da caricare
                 return array('status' => R3_AJAX_NO_ERROR, 'js' => "submitFormDataDocumentVirusError()");
             }
             if ($file_info !== false) {
                 //Remove the old file (Replacement)
                 $this->removeOldFile($file_info['doc_file'], 'document', '', $file_info['doc_file_id']);
             }
             $new_id = $this->getDocFileId($request['doc_id']);
             $request['doc_file_id'] = $new_id;
             $this->addFile($request['doc_file'], 'document', '', $request['doc_file_id'], $files['tmp_name']);
         } else {
             if ($this->act == 'del') {
                 $this->removeOldFile($file_info['doc_file'], 'document', '', $file_info['doc_file_id']);
             } else {
                 // Keey the old values
                 $request['doc_file'] = $file_info['doc_file'];
                 $request['doc_file_id'] = $file_info['doc_file_id'];
             }
         }
         $id = $this->applyData($request);
         $db->commit();
         R3EcoGisEventNotifier::notifyDataChanged($this, array('data_changed' => true));
         return array('status' => R3_AJAX_NO_ERROR, 'js' => "submitFormDataDoneDocument({$id})");
     }
 }
Esempio n. 10
0
 public function askDelESU($request)
 {
     $db = ezcDbInstance::get();
     $lang = R3Locale::getLanguageID();
     $id = forceInteger($request['id'], 0, false, '.');
     $data = $db->query("SELECT es_name_{$lang} AS es_name, udm_name_{$lang} AS udm_name, mu_id FROM energy_source_udm_data WHERE esu_id={$id}")->fetch(PDO::FETCH_ASSOC);
     if ($request['type'] == 'MUNICIPALITY') {
         $mu_name = R3EcoGisHelper::getMunicipalityName($data['mu_id']);
         return array('status' => R3_AJAX_NO_ERROR, 'confirm' => sprintf(_("Sei sicuro di voler cancellare il fattore di conversione \"%s (%s)\" e ripristinare il valore standard per i consumi già inseriti nel comune di \"%s\"?"), $data['es_name'], $data['udm_name'], $mu_name));
     } else {
         if ($this->tryDeleteData($id)) {
             return array('status' => R3_AJAX_NO_ERROR, 'confirm' => sprintf(_("Sei sicuro di voler cancellare il fattore di conversione \"%s (%s)\"?"), $data['es_name'], $data['udm_name']));
         } else {
             return array('status' => R3_AJAX_NO_ERROR, 'alert' => _('Impossibile cancellare questo fattore di conversione poichè vi sono dei dati ad esso legati'));
         }
     }
 }
Esempio n. 11
0
 /**
  * Ajax request to submit data
  * @param array $request   the request
  * @return array           ajax format status
  */
 public function submitFormData($request)
 {
     $db = ezcDbInstance::get();
     $errors = array();
     $request['sw_id'] = forceInteger($request['id'], 0, false, '.');
     if ($this->act != 'del') {
         $errors = $this->checkFormData($request, $errors);
         $request['mu_id'] = $this->checkFormDataForMunicipality($request, $errors);
         if ($request['mu_id'] != '' && !$this->municipalityHasCitizen($request['mu_id'])) {
             $errors['mu_id'] = array('CUSTOM_ERROR' => _('Impostare nei parametri principali gli abitanti al 2020'));
         }
         for ($i = 1; $i <= 2; $i++) {
             $citizen = $this->getInventoryCitizen($request['mu_id'], $i);
             if ($request['mu_id'] != '' && $citizen !== false && !($citizen > 0)) {
                 $errors['mu_id'] = array('CUSTOM_ERROR' => sprintf(_("Impostare il numero di abitanti nell'inventario %d"), $i));
             }
         }
     }
     if (count($errors) > 0) {
         return $this->getAjaxErrorResult($errors);
     } else {
         ignore_user_abort(true);
         $db->beginTransaction();
         $request['sw_alternative_simulation'] = $this->alternativeSimulation ? 'T' : 'F';
         // Force simulation parameter
         $id = $this->applyData($request);
         if ($this->act == 'del') {
             $this->updateSimulationWork($id);
         } else {
             // Save checked actions
             $this->updateSimulationWork($id, explodeInt($request['ac_id_list']), explodeInt($request['ac_perc_list']));
             // Save cache data
             $this->updateCacheSimulationData($id);
         }
         if (isset($request['generate_paes']) && $request['generate_paes'] == 'T') {
             $gp_id = R3EcoGisSimulationHelper::generatePAESFromSimulation($id);
         } else {
             $gp_id = 0;
         }
         $db->commit();
         return array('status' => R3_AJAX_NO_ERROR, 'js' => "submitFormDataDoneSimulation({$id}, {$gp_id})");
     }
 }
Esempio n. 12
0
 /**
  * Return the UDM
  * @param array $request    the request
  * @return array            the result data
  */
 public function confirmDeleteGlobalConsumptionRow($request)
 {
     $db = ezcDbInstance::get();
     $lang = R3Locale::getLanguageID();
     $id = forceInteger($request['id'], 0, false, '.');
     $name = $db->query("SELECT gs_name_{$lang} FROM global_subcategory WHERE gs_id={$id}")->fetchColumn();
     return array('status' => R3_AJAX_NO_ERROR, 'confirm' => sprintf(_('Sei sicuro di voler cancellare la riga "%s"?'), $name));
 }
Esempio n. 13
0
 /**
  * Ajax request to submit data
  * @param array $request   the request
  * @return array           ajax format status
  */
 public function submitFormData($request)
 {
     $request = array_merge(array('insert_type' => 'free', 'reinsert' => ''), $request);
     $db = ezcDbInstance::get();
     $data = array();
     $errors = array();
     if ($request['kind'] == 'street_lighting' && $this->act == 'add') {
         // Valore finto per bypassare controlli automatici
         $request['em_id'] = '-1';
     }
     $checkDate = false;
     if ($this->act != 'del') {
         switch ($request['insert_type']) {
             case 'free':
                 $checkDate = true;
                 $data[] = array('act' => $request['act'], 'co_start_date' => forceISODate($request['co_start_date_free']), 'co_end_date' => forceISODate($request['co_end_date_free']), 'co_value' => forceFloat($request['co_value_free'], null, '.'), 'co_bill' => forceFloat($request['co_bill_free'], null, '.'), 'co_bill_is_calculated' => 'F', 'em_id' => $request['em_id'], 'co_id' => forceInteger($request['id'], 0, false, '.'));
                 break;
             case 'month':
                 for ($i = 0; $i < 12; $i++) {
                     if ($request['co_start_date_month'][$i] != '' && $request['co_end_date_month'][$i] != '' && $request['co_value_month'][$i] != '' && $request['co_bill_month'][$i] != '') {
                         $data[] = array('act' => $request['act'], 'co_start_date' => forceISODate($request['co_start_date_month'][$i]), 'co_end_date' => forceISODate($request['co_end_date_month'][$i]), 'co_value' => forceFloat($request['co_value_month'][$i], null, '.'), 'co_bill' => forceFloat($request['co_bill_month'][$i], null, '.'), 'co_bill_is_calculated' => 'F', 'em_id' => $request['em_id']);
                     }
                 }
                 if (count($data) == 0) {
                     $errors['dummy'] = array('CUSTOM_ERROR' => _('Impossibile salvare. Nessun dato valido inserito'));
                 }
                 break;
             case 'year':
                 $data[] = array('act' => $request['act'], 'co_start_date' => forceISODate($request['co_start_date_year']), 'co_end_date' => forceISODate($request['co_end_date_year']), 'co_value' => forceFloat($request['co_value_year'], null, '.'), 'co_bill' => forceFloat($request['co_bill_year'], null, '.'), 'co_bill_is_calculated' => 'F', 'em_id' => $request['em_id']);
                 break;
         }
         foreach ($data as $values) {
             $errors = $this->checkFormData($values, $errors);
         }
         if ($checkDate) {
             // Verifica data inserimento per bollette singole
             if (forceISODate($request['co_start_date_free']) > forceISODate($request['co_end_date_free'])) {
                 $errors['co_end_date_bis'] = array('CUSTOM_ERROR' => _("La data di fine periodo precedenta a quella di inizio"));
             }
         }
     }
     if (count($errors) > 0) {
         return $this->getAjaxErrorResult($errors);
     } else {
         if ($this->act == 'del') {
             $request['co_id'] = forceInteger($request['id'], 0, false, '.');
             if ($request['kind'] == 'street_lighting') {
                 // Ricavo contatore finto per cancellazione
                 $db->beginTransaction();
                 $em_id = $db->query("SELECT em_id FROM consumption WHERE co_id={$request['co_id']}")->fetchColumn();
                 $id = $this->applyData($request);
                 if ($db->query("SELECT COUNT(*) FROM consumption WHERE em_id={$em_id}")->fetchColumn() == 0) {
                     $db->exec("DELETE FROM energy_meter WHERE em_id={$em_id}");
                 }
                 $db->commit();
             } else {
                 $id = $this->applyData($request);
             }
         } else {
             $db->beginTransaction();
             if ($request['kind'] == 'street_lighting' && $this->act == 'add') {
                 $em_id = R3EcoGisHelper::getDummyEnergyMeter('STREET_LIGHTING', $request['sl_id']);
                 if ($em_id == '') {
                     // Aggiungo contatore finto per tratto stradale
                     $electricityData = $this->getElectricityUDMData($_SESSION['do_id']);
                     $em_id = R3EcoGisHelper::addDummyEnergyMeter(array('esu_id' => $electricityData['esu_id'], 'em_object_id' => $request['sl_id']), 'STREET_LIGHTING');
                 }
                 $data[0]['em_id'] = $em_id;
             }
             $id = array();
             foreach ($data as $values) {
                 $id[] = $this->applyData($values);
             }
             $db->commit();
         }
         R3EcoGisEventNotifier::notifyDataChanged($this, array('data_changed' => true));
         return array('status' => R3_AJAX_NO_ERROR, 'js' => "submitFormDataDoneConsumption(" . json_encode($id) . ", '{$request['reinsert']}')");
     }
 }