/** * 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')); } }
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')); } }
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)); } }
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; } }
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(); }
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')); } }
/** * 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})"); } }
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')); } }
/** * 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})"); } }
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')); } } }
/** * 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})"); } }
/** * 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)); }
/** * 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']}')"); } }