Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.
 
 
 

419 righe
17 KiB

<?php
require_once ROOT . "lib/classes/IDataClass.php";
/**
* Description of DomandaContratti
*
* @author Anselmo
*/
class DomandaContratti extends DataClass {
const TABLE_NAME = "DOMANDA_CONTRATTI";
const SEQ_NAME = "DOMANDA_CONTRATTI_ID_SEQ";
const FNZ_SLOTCONTRATTI = "FNSLOTCONTRATTI";
public $ID = 0;
public $ID_DOMANDA = 0;
public $COMUNE = "";
public $PROVINCIA = "";
public $INDIRIZZO = "";
public $CIVICO = "";
public $SCALA = "";
public $PIANO = "";
public $CONTRATTO_DAL = null;
public $CONTRATTO_AL = null;
public $CANONE_ANNUO = 0;
public $COMUNE_AE = "";
public $PROVINCIA_AE = "";
public $DATA_AE = null;
public $NUMERO_AE = "";
public $SERIE_AE = "";
public $IMMOBILE_PROPRIETARIO = "";
public $IMMOBILE_CF = "";
public $IMMOBILE_NCEU = "";
public $IMMOBILE_FOGLIO = "";
public $IMMOBILE_PARTICELLA = "";
public $IMMOBILE_SUBALTERNO = "";
public $IMMOBILE_F23 = 0;
public $CONIUGI_SEPARATI = "";
public $SFRATTO_ESECUTIVO = 0;
public $SFRATTO_ESECUTIVO_NUMERO = "";
public $SFRATTO_ESECUTIVO_DATA = null;
public $CONTRATTO_CF = '';
public function __construct($src = null) {
global $con;
if ($src == null) {
return;
}
if (is_array($src)) {
if (isset($src['ID']) && $src['ID'] > 0) {
$this->_loadAndFillObject($src['ID'], self::TABLE_NAME, $src);
} else {
$this->_loadByRow($src, $stripSlashes);
}
} elseif (intval($src)) {
$sql = "SELECT * FROM " . self::TABLE_NAME . " WHERE ID = :id";
$query = $con->prepare($sql);
$query->bindParam(":id", $src);
try {
$query->execute();
$it = $query->fetchAll(PDO::FETCH_ASSOC);
Utils::FillObjectFromRow($this, $it[0]);
} catch (Exception $exc) {
$exc->getMessage();
}
}
}
/**
*
* @param type $filter
* @return type
*/
public static function Count($filter = null) {
return parent::_count(self::TABLE_NAME, $filter);
}
public static function LoadDataTable($searchQuery = "", $searchArray = array(), $columnName = array(), $columnSortOrder = array(), $start = 0, $offset = 0) {
return parent::_loadDataTable(self::TABLE_NAME, $searchQuery, $searchArray, $columnName, $columnSortOrder, $start, $offset);
}
/**
*
* @global type $con
* @global type $LoggedAccount
* @param type $id_domanda
* @return type array
*/
public static function load($id_domanda = 0) {
global $con, $LoggedAccount;
$rows = array();
if (intval($id_domanda) > 0) {
$sql = "SELECT * FROM " . self::TABLE_NAME . " WHERE ID_DOMANDA=:id_domanda ORDER BY ID_DOMANDA ASC ";
$query = $con->prepare($sql);
$query->bindParam(":id_domanda", $id_domanda);
try {
$query->execute();
$rows = $query->fetchAll(PDO::FETCH_ASSOC);
} catch (Exception $exc) {
$exc->getMessage();
}
}
return $rows;
}
public static function checkVerificaDatiPreSalvataggio() {
global $LoggedAccount;
$domanda = Domanda::loadDomandaFromAccount();
$_POST['ID'] = intval(Utils::get_filter_int_POST('ID'));
$_POST['ID_DOMANDA'] = $domanda->ID;
$_POST['COMUNE'] = Utils::get_filter_string_POST('COMUNE');
$_POST['PROVINCIA'] = Utils::get_filter_string_POST('PROVINCIA');
$_POST['INDIRIZZO'] = Utils::get_filter_string_POST('INDIRIZZO');
$_POST['CIVICO'] = Utils::get_filter_string_POST('CIVICO');
$_POST['SCALA'] = Utils::get_filter_string_POST('SCALA');
$_POST['PIANO'] = Utils::get_filter_string_POST('PIANO');
$_POST['CONTRATTO_DAL'] = Utils::get_filter_string_POST('CONTRATTO_DAL');
$_POST['CONTRATTO_AL'] = Utils::get_filter_string_POST('CONTRATTO_AL');
$_POST['CANONE_ANNUO'] = Utils::get_filter_string_POST('CANONE_ANNUO');
$_POST['IMMOBILE_F23'] = Utils::get_filter_string_POST('IMMOBILE_F23');
$_POST['SFRATTO_ESECUTIVO'] = Utils::get_filter_string_POST('SFRATTO_ESECUTIVO');
$_POST['SFRATTO_ESECUTIVO'] = (strtolower($_POST['SFRATTO_ESECUTIVO']) == 'on' ? 1 : 0);
if (isset($_POST['SFRATTO_ESECUTIVO_NUMERO'])) {
$_POST['SFRATTO_ESECUTIVO_NUMERO'] = Utils::get_filter_string_POST('SFRATTO_ESECUTIVO_NUMERO');
}else{
$_POST['SFRATTO_ESECUTIVO_NUMERO'] = "";
}
if (isset($_POST['SFRATTO_ESECUTIVO_DATA'])) {
$_POST['SFRATTO_ESECUTIVO_DATA'] = Utils::get_filter_string_POST('SFRATTO_ESECUTIVO_DATA');
} else {
$_POST['SFRATTO_ESECUTIVO_DATA'] = "";
}
$_POST['COMUNE_AE'] = Utils::get_filter_string_POST('COMUNE_AE');
$_POST['PROVINCIA_AE'] = Utils::get_filter_string_POST('PROVINCIA_AE');
$_POST['DATA_AE'] = Utils::get_filter_string_POST('DATA_AE');
$_POST['NUMERO_AE'] = Utils::get_filter_string_POST('NUMERO_AE');
$_POST['SERIE_AE'] = Utils::get_filter_string_POST('SERIE_AE');
$_POST['IMMOBILE_PROPRIETARIO'] = Utils::get_filter_string_POST('IMMOBILE_PROPRIETARIO');
$_POST['IMMOBILE_CF'] = Utils::get_filter_string_POST('IMMOBILE_CF');
$_POST['IMMOBILE_NCEU'] = Utils::get_filter_string_POST('IMMOBILE_NCEU');
$_POST['IMMOBILE_FOGLIO'] = Utils::get_filter_string_POST('IMMOBILE_FOGLIO');
$_POST['IMMOBILE_PARTICELLA'] = Utils::get_filter_string_POST('IMMOBILE_PARTICELLA');
$_POST['IMMOBILE_SUBALTERNO'] = Utils::get_filter_string_POST('IMMOBILE_SUBALTERNO');
$_POST['CONIUGI_SEPARATI'] = Utils::get_filter_string_POST('CONIUGI_SEPARATI');
$_POST['CONIUGI_SEPARATI'] = (strtolower($_POST['CONIUGI_SEPARATI']) == 'on' ? 1 : 0);
$_POST['CONTRATTO_CF'] = Utils::get_filter_string_POST('CONTRATTO_CF');
}
public function checkDatiPreSave() {
global $LoggedAccount;
$response = array();
$controllValidita = true;
$dati_mancanti = '';
if (trim($this->COMUNE) == '') {
$controllValidita = false;
$dati_mancanti .= " <br><b>Il comune dell'appartamento</b><br> ";
}
if (trim($this->PROVINCIA) == '') {
$controllValidita = false;
$dati_mancanti .= " <br><b>La provincia dell'appartamento</b><br> ";
}
if (trim($this->INDIRIZZO) == '') {
$controllValidita = false;
$dati_mancanti .= " <br><b>Il campo indirizzo</b><br> ";
}
if (trim($this->CONTRATTO_DAL) == '') {
$controllValidita = false;
$dati_mancanti .= " <br><b>Il campo data decorrenza del contratto</b><br> ";
}
if (trim($this->CONTRATTO_AL) == '') {
$controllValidita = false;
$dati_mancanti .= " <br><b>Il campo data termine del contratto</b><br>";
}
if (floatval($this->CANONE_ANNUO) <= 0) {
$controllValidita = false;
$dati_mancanti .= " <br><b>Il campo canone annuo deve essere maggiore di zero</b><br>";
}
if (trim($this->COMUNE_AE) == '') {
$controllValidita = false;
$dati_mancanti .= " <br><b>Il campo del comune dell'Agenzia delle entrate</b><br> ";
}
if (trim($this->PROVINCIA_AE) == '') {
$controllValidita = false;
$dati_mancanti .= " <br><b>Il campo dell provincia dell'Agenzia delle entrate</b><br> ";
}
if (trim($this->DATA_AE) == '') {
$controllValidita = false;
$dati_mancanti .= " <br><b>Il campo data di registrazione del contratto</b><br> ";
}
if (trim($this->DATA_AE) != '') {
$checkAE = Date::checkSaveDate($this->DATA_AE, "", "", true);
if ($checkAE['esito'] != 1) {
$controllValidita = false;
$dati_mancanti .= "Controllo data A.E.: " . $checkAE['erroreDescrizione'] . "<br>";
}
}
if (trim($this->NUMERO_AE) == '') {
$controllValidita = false;
$dati_mancanti .= " <br><b>Il campo numero di registrazione del contratto</b><br> ";
}
if (trim($this->SERIE_AE) == '') {
$controllValidita = false;
$dati_mancanti .= " <br><b>Il campo serie di registrazione del contratto</b><br> ";
}
if (trim($this->IMMOBILE_PROPRIETARIO) == '') {
$controllValidita = false;
$dati_mancanti .= " <br><b>Il campo proprietario dell'immobile</b><br> ";
}
if (trim($this->IMMOBILE_CF) == '' || (strlen(trim($this->IMMOBILE_CF)) != MIN_IMMOBILE_CF && strlen(trim($this->IMMOBILE_CF)) != MAX_IMMOBILE_CF )) {
$controllValidita = false;
$dati_mancanti .= " <br><b>Il campo codice fiscale del proprietario dell'immobile</b><br> ";
}
if (CONTROLLO_FORMATTAZIONE_CF && strlen(trim($this->IMMOBILE_CF)) == MAX_IMMOBILE_CF && !Utils::ControlloCodiceFiscale(trim($this->IMMOBILE_CF))) {
$controllValidita = false;
$dati_mancanti .= " <br><b>Codice fiscale del proprietario dell'immobile non valido</b><br> ";
}
if (trim($this->IMMOBILE_CF) == $LoggedAccount->CODICE_FISCALE) {
$controllValidita = false;
$dati_mancanti .= " <br><b>Il codice fiscale dell'intestatario del contratto è lo stesso dell'utente che sta presentando la domanda</b><br> ";
}
if (trim($this->IMMOBILE_NCEU) == '') {
$controllValidita = false;
$dati_mancanti .= " <br><b>Il campo Comune NCEU dell'immobile</b><br> ";
}
if (trim($this->IMMOBILE_FOGLIO) == '') {
$controllValidita = false;
$dati_mancanti .= " <br><b>Il campo Foglio dell'immobile</b><br> ";
}
if (trim($this->IMMOBILE_PARTICELLA) == '') {
$controllValidita = false;
$dati_mancanti .= " <br><b>Il campo Particella dell'immobile</b><br> ";
}
if (trim($this->IMMOBILE_SUBALTERNO) == '') {
$controllValidita = false;
$dati_mancanti .= " <br><b>Il campo Subalterno dell'immobile</b><br> ";
}
if (intval($this->SFRATTO_ESECUTIVO) == 1 && trim($this->SFRATTO_ESECUTIVO_NUMERO) == '') {
$controllValidita = false;
$dati_mancanti .= " <br><b>Il campo Numero sentenza</b><br>";
}
if (intval($this->SFRATTO_ESECUTIVO) == 1 && trim($this->SFRATTO_ESECUTIVO_DATA) == '') {
$controllValidita = false;
$dati_mancanti .= " <br><b>Il campo Data sentenza</b><br>";
}
$checkContratto = Date::checkSaveDate($this->CONTRATTO_DAL, $this->CONTRATTO_AL);
if ($checkContratto['esito'] != 1) {
$controllValidita = false;
$dati_mancanti .= "Controllo date contratto: " . $checkContratto['erroreDescrizione'] . "<br>";
}
if (trim($this->CONTRATTO_CF) == '' || strlen(trim($this->CONTRATTO_CF)) < MIN_CF || strlen(trim($this->CONTRATTO_CF)) > MAX_CF ) {
$controllValidita = false;
$dati_mancanti .= " <br><b>Il campo codice fiscale dell'intestatario del contratto</b><br> ";
}
if (CONTROLLO_FORMATTAZIONE_CF && !Utils::ControlloCodiceFiscale(trim($this->CONTRATTO_CF))) {
$controllValidita = false;
$dati_mancanti .= " <br><b>Codice fiscale dell'intestatario del contratto non valido</b><br> ";
}
if (trim($this->CONTRATTO_CF) != $LoggedAccount->CODICE_FISCALE) {
$controllValidita = false;
$dati_mancanti .= " <br><b>Il codice fiscale dell'intestatario del contratto è diverso del codice fiscale dell'utente che sta presentando la domanda</b><br> ";
}
$this->CANONE_ANNUO= str_replace(",", ".", $this->CANONE_ANNUO);
/* $checkAE1 = Date::checkSaveDate($this->CONTRATTO_DAL, $this->DATA_AE);
if ($checkAE1['esito'] != 1) {
$controllValidita = false;
if ($checkAE1['errorePersonalizzato'] == 1) {
$dati_mancanti .= "Data decorrenza contratto dal ".date("d/m/Y", strtotime($this->CONTRATTO_DAL)).", Data registrazione A.E. ".date("d/m/Y", strtotime($this->DATA_AE))."<br>";
} else {
$dati_mancanti .= "Controllo date A.E. 1: " . $checkAE1['erroreDescrizione'] . "<br>";
}
}
$checkAE2 = Date::checkSaveDate($this->DATA_AE, $this->CONTRATTO_AL);
if ($checkAE2['esito'] != 1) {
$controllValidita = false;
if($checkAE2['errorePersonalizzato']==1){
$dati_mancanti .= "Data registrazione A.E. ".date("d/m/Y", strtotime($this->DATA_AE)).", data fine contratto locazione. ".date("d/m/Y", strtotime($this->CONTRATTO_AL))."<br>";
}else{
$dati_mancanti .= "Controllo date A.E. 2: " . $checkAE2['erroreDescrizione'] . "<br>";
}
} */
if (trim($this->SFRATTO_ESECUTIVO_DATA) != "") {
$checkSfratto = Date::checkSaveDate($this->CONTRATTO_DAL, $this->SFRATTO_ESECUTIVO_DATA);
if ($checkSfratto['esito'] != 1) {
$controllValidita = false;
$dati_mancanti .= "Controllo data sfratto: " . $checkSfratto['erroreDescrizione'] . "<br>";
}
}
if ($this->CONIUGI_SEPARATI == 0) {
$fileDelete = new Allegati();
$resF = $fileDelete->DeleteDocumentiBando($this->ID_DOMANDA, ID_FILE_CONIUGI_SEPARATI);
if ($resF['esito'] != 1) {
$controllValidita = false;
$dati_mancanti .= "Allegato coniugi separati: " . $resF['erroreDescrizione'] . "<br>";
}
}
if ($this->IMMOBILE_F23 == 1) {
$fileDelete = new Allegati();
$resF = $fileDelete->DeleteDocumentiBando($this->ID_DOMANDA, ID_FILE_IMMOBILE_F23);
if ($resF['esito'] != 1) {
$controllValidita = false;
$dati_mancanti .= "Allegato modulo f23: " . $resF['erroreDescrizione'] . "<br>";
}
}
$this->CONTRATTO_DAL = Date::dateOracleDate($this->CONTRATTO_DAL, 'd-M-y');
$this->CONTRATTO_AL = Date::dateOracleDate($this->CONTRATTO_AL, 'd-M-y');
$this->DATA_AE = Date::dateOracleDate($this->DATA_AE, 'd-M-y');
$this->SFRATTO_ESECUTIVO_DATA = (trim($this->SFRATTO_ESECUTIVO_DATA) != "" ? Date::dateOracleDate($this->SFRATTO_ESECUTIVO_DATA, 'd-M-y') : null);
$response['checkDati'] = $controllValidita;
$response['txt_dati_mancanti'] = $dati_mancanti;
return $response;
}
public function isErasable() {
global $LoggedAccount;
$response = false;
$domanda = Domanda::loadDomandaFromAccount();
if ($this->ID_DOMANDA == $domanda->ID) {
$response = true;
}
return $response;
}
/**
*
* @global type $con
* @global type $LoggedAccount
* @return type
*/
public function Save() {
global $con, $LoggedAccount;
$vars = get_object_vars($this);
$sql = Utils::prepareQuery(self::TABLE_NAME, $vars);
$queryabi = $con->prepare($sql);
foreach ($vars as $k => $v) {
if ($k == "ID" && $v == 0) {
continue;
}
$queryabi->bindValue(":" . $k, $v);
}
try {
$it = parent::_Save($queryabi);
} catch (Exception $exc) {
$it['erroreDescrizione'] = $exc->getMessage();
}
return $it;
}
public function Delete() {
return parent::_Delete(self::TABLE_NAME, "ID = " . $this->ID);
}
public function DeleteAll() {
return parent::_Delete(self::TABLE_NAME, "ID_DOMANDA = " . $this->ID_DOMANDA);
}
public function Parse(&$record, $campo = "") {
array_push($record, array("Campo" => $campo, "Valore" => $this->$campo));
}
public function VerificaSlotTemporale() {
global $con;
$response = Utils::initDefaultResponse();
$response['erroreDescrizione'] = 'Il periodo di contratto inserito si sovrappone con altri periodi già inseriti';
$from = new DateTime(MIN_DATA_CONTRIBUTO);
$to = new DateTime(MAX_DATA_CONTRIBUTO);
if ($this->SFRATTO_ESECUTIVO == 1 && !empty($this->SFRATTO_ESECUTIVO_DATA)) {
$d_sfratto = new DateTime($this->SFRATTO_ESECUTIVO_DATA);
$d_al = new DateTime($this->CONTRATTO_AL);
$out = ($d_sfratto < $d_al ? $d_sfratto : $d_al);
} else {
$out = new DateTime($this->CONTRATTO_AL);
}
$in = new DateTime($this->CONTRATTO_DAL);
if ($in <= $to && $from <= $out) {
$sql = "SELECT " . self::FNZ_SLOTCONTRATTI . "('" . $this->ID . "','" . $this->ID_DOMANDA . "', '" . $this->CONTRATTO_DAL . "', '" . $out->format('d-M-y') . "') AS COUNT FROM DUAL";
$query = $con->prepare($sql);
try {
$query->execute();
$res = $query->fetch(PDO::FETCH_ASSOC);
} catch (Exception $exc) {
$exc->getMessage();
}
if (intval($res['COUNT']) <= 0) {
$response['esito'] = 1;
}
} else {
$response['esito'] = -999;
$response['erroreDescrizione'] = "Le date del contratto devono ricadere nel periodo richiesto dal bando";
}
return $response;
}
}