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.
 
 
 

222 righe
8.9 KiB

<?php
require_once "IDataClass.php";
/**
* Description of Graduatoria
*
* @author Anselmo
*/
class Graduatoria extends DataClass {
const TABLE_NAME = "GRADUATORIA";
const SEQ_NAME = "GRADUATORIA_ID_SEQ";
const VIEW_NAME = "VIEWGRADUATORIA";
const SP_NAME = "SPPUBBLICAGRADUATORIE";
public $ID = 0;
public $ID_DOMANDA = 0;
public $CODICE_FISCALE = '';
public $PUNTEGGIO_TRIENNIO = 0;
public $PUNTEGGIO_MATURITA = 0;
public $PUNTEGGIO_TITOLI = 0;
public $PUNTEGGIO_ESAME_FINALE = 0;
public $ETA = 0;
public $PUNTEGGIO = 0;
public $POSIZIONE = 0;
public $TIPO = 0;
public $DATA_GENERAZIONE = '';
public $DATA_VALIDAZIONE = '';
public $CANCELLATO = 0;
public $CATEGORIA = '';
public $CATEGORIA_PERSONALE = '';
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)) {
$this->_loadById($src, self::TABLE_NAME, true);
}
}
public static function Count($filter = null) {
return parent::_count(self::TABLE_NAME, $filter);
}
/**
* Restituisce l'elenco delle istanze inserite in graduatoria
* @global type $con
* @param type $personale
* @param type $posizione_economica
* @param type $tipo
* @return type array();
*/
public static function loadGraduatoria($personale = '', $posizione_economica='', $tipo = TIPO_GRADUATORIA_PROVVISORIA) {
global $con;
$response = array();
if (!empty($personale) && !empty($posizione_economica) && !empty($tipo)) {
$sql = "SELECT * FROM ".self::TABLE_NAME." WHERE CATEGORIA_PERSONALE = :personale AND CATEGORIA = :posizione_economica AND CANCELLATO = 0 AND TIPO = :tipo";
$query = $con->prepare($sql);
$query->bindParam(':personale', $personale);
$query->bindParam(':posizione_economica', $posizione_economica);
$query->bindParam(':tipo', $tipo);
try {
$query->execute();
$response = $query->fetch(PDO::FETCH_ASSOC);
} catch (Exception $exc) {
$exc->getMessage();
}
}
return $response;
}
/**
* Get data graduatoria
* @global type $con
* @param type $personale
* @param type $posizione_economica
* @param type $tipo
* @return type
*/
public static function GetDataGraduatoria($personale = '', $posizione_economica='', $tipo = TIPO_GRADUATORIA_PROVVISORIA) {
global $con;
$response = array();
if (!empty($personale) && !empty($posizione_economica) && !empty($tipo)) {
if($tipo == TIPO_GRADUATORIA_DEFINITIVA){
$data_select = "DATA_VALIDAZIONE";
}else{
$data_select = "DATA_GENERAZIONE";
}
$sql = "SELECT MAX(".$data_select.") AS DATA_GRADUATORIA FROM ".self::TABLE_NAME." WHERE CATEGORIA_PERSONALE = :personale AND CATEGORIA = :posizione_economica AND CANCELLATO = 0 AND TIPO = :tipo "
. " GROUP BY CATEGORIA_PERSONALE, CATEGORIA, CANCELLATO , TIPO";
$query = $con->prepare($sql);
$query->bindParam(':personale', $personale);
$query->bindParam(':posizione_economica', $posizione_economica);
$query->bindParam(':tipo', $tipo);
try {
$query->execute();
$response = $query->fetch(PDO::FETCH_ASSOC);
} catch (Exception $exc) {
$exc->getMessage();
}
}
return $response;
}
/**
* Genera le graduatorie partendo dalla relativa vista
* @global type $con
* @param type $personale
* @param type $posizione_economica
* @param type $tipo
*/
public function GeneraGraduaoria($personale = '', $posizione_economica='', $tipo='') {
global $con;
$response = Utils::initDefaultResponse();
if (!empty($personale) && !empty($posizione_economica) && !empty($tipo)) {
$sql = "CALL " . self::SP_NAME . " (?,?,?)";
$query = $con->prepare($sql);
$query->bindParam(1, $personale);
$query->bindParam(2, $posizione_economica);
$query->bindParam(3, $tipo);
try {
if ($query->execute()) {
$response['esito'] = 1;
}
} catch (Exception $exc) {
$response['descrizioneErrore'] = $exc->getMessage();
}
}
return $response;
}
/**
* Genera la graduatoria provvisoria passando la tipologia del personale e la posizione economica
* @param type $personale
* @param type $posizione_economica
* @return type
*/
public static function GeneraGraduaorieProvvisoria($personale = '', $posizione_economica = '') {
$graduatoria = new Graduatoria();
return $graduatoria->GeneraGraduaoria($personale, $posizione_economica, TIPO_GRADUATORIA_PROVVISORIA);
}
/**
* Genera la graduatoria definitiva passando la tipologia del personale e la posizione economica
* @param type $personale
* @param type $posizione_economica
* @return type
*/
public static function GeneraGraduaorieDefinitiva($personale = '', $posizione_economica = '') {
$response = Utils::initDefaultResponse();
$graduatoria = new Graduatoria();
$res = $graduatoria->ControllaGraduatoriaDefinitiva($personale, $posizione_economica);
if($res['esito']==1 && intval($res['count'])==0){
$response = $graduatoria->GeneraGraduaoria($personale, $posizione_economica, TIPO_GRADUATORIA_DEFINITIVA);
}else{
$response['descrizioneErrore'] = 'Esiste già una graduatoria definitiva per la categoria '.$personale.' e posizione econominca '.$posizione_economica.'!';
}
return $response;
}
public function ControllaGenerazioneGraduatoria($personale = '', $posizione_economica='', $tipo=''){
$response = Utils::initDefaultResponse();
if (!empty($personale) && !empty($posizione_economica) && !empty($tipo)) {
$filter = " CATEGORIA_PERSONALE = '".trim($personale)."' AND CATEGORIA = '".$posizione_economica."' AND CANCELLATO = 0 AND TIPO = ".intval($tipo);
$response['esito'] = 1;
$response['count'] = $this->Count($filter);
}
return $response;
}
/**
* Controlla la presenza di graduatorie provvisorie per la categoria e la posizione economica di riferimento
* @param type $personale
* @param type $posizione_economica
* @return type count domande
*/
public static function ControllaGraduatoriaProvvisoria($personale = '', $posizione_economica = ''){
$response = Utils::initDefaultResponse();
$graduatoria = new Graduatoria();
$response = $graduatoria->ControllaGraduatoriaDefinitiva($personale, $posizione_economica);
if($response['count'] <=0){
$response = $graduatoria->ControllaGenerazioneGraduatoria($personale, $posizione_economica, TIPO_GRADUATORIA_PROVVISORIA);
}
return $response;
}
/**
* Controlla la presenza di graduatorie definitive per la categoria e la posizione economica di riferimento
* @param type $personale
* @param type $posizione_economica
* @return type count domande
*/
public static function ControllaGraduatoriaDefinitiva($personale = '', $posizione_economica = ''){
$graduatoria = new Graduatoria();
return $graduatoria->ControllaGenerazioneGraduatoria($personale, $posizione_economica, TIPO_GRADUATORIA_DEFINITIVA);
}
public function LoadDataTableCustom($searchQuery = "", $searchArray = array(), $columnName = array(), $columnSortOrder = array(), $start = 0, $offset = 0) {
$select = "G.*,D.NUMERO_PROTOCOLLO, D.DATA_PROTOCOLLO";
return parent::_loadDataTableEx($select, self::TABLE_NAME . " G INNER JOIN " . Domanda::TABLE_NAME . " D ON D.ID = G.ID_DOMANDA ", $searchQuery, $searchArray, $columnName, $columnSortOrder, $start, $offset, false);
}
public static function LoadDataTable($searchQuery = "", $searchArray = array(), $columnName = array(), $columnSortOrder = array(), $start = 0, $offset = 0, $totCount = false) {
return parent::_loadDataTable(self::TABLE_NAME, $searchQuery, $searchArray, $columnName, $columnSortOrder, $start, $offset, $totCount);
}
}