<?php

////////////////////////////////////////////////////////////////////////
// CONTRATS - TYPES ////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////

// LIST

$allowContratsTypesListOrder = array(
    'ref' => "réf.",
    'groupe' => "groupe",
    'nom' => "nom",
    'frequence' => "fréquence",
    'panier_type' => "type de panier",
    'nb_panier' => 'nb. de panier',
    'prix_total' => 'prix total'
);

function getNbContratsTypesInList($filtres=array()) {
    $sql = getCountContratsTypesListSelectBaseSQL()." WHERE ".CONTRATS_TYPES_TABLE.".`del`=0";
    $sql = buildContratsTypesListFiltresSQL($sql, $filtres);
    $r = $GLOBALS['db_admin']['man']->select($sql, 1);
    if(!$r['erreur']) return intval($r['datas']['nb']);
    else {
        $er = "</br>sql: ".$sql."</br>error: ".getReadableVar($r['erreur']);
        return "Une erreur est survenue durant du nombre d'item dans la liste !".$er;
    }
}

function getContratsTypesList($order='id',$sens='ASC', $filtres=array(), $limits=false) {
    $list = array();
    
    $sql = getContratsTypesTableSelectBaseSQL()." WHERE ".CONTRATS_TYPES_TABLE.".`del`=0";
    
    // FILTRES
    $sql = buildContratsTypesListFiltresSQL($sql, $filtres);
    
    // ORDRE
    $sql.=" ORDER BY ";
    
    if($order=='ref') $sql .= CONTRATS_TYPES_TABLE.".`ref`";
    else if($order=='groupe') $sql .= PANIERS_GROUPES_TABLE.".`nom`";
    else if($order=='nom') $sql .= CONTRATS_TYPES_TABLE.".`nom`";
    else if($order=='frequence') $sql .= CONTRATS_TYPES_TABLE.".`frequence`";
    else if($order=='panier_type') $sql .= PANIER_TYPES_TABLE.".`nom`";
    else if($order=='nb_panier') $sql .= CONTRATS_TYPES_TABLE.".`nb_panier`";
    else if($order=='prix_total') $sql .= CONTRATS_TYPES_TABLE.".`prix_total`";
    else $sql .= CONTRATS_TYPES_TABLE.".`nom`";
    
    // SENS
    if($sens=='DESC') $sql .= ' DESC';
    else $sql .= ' ASC';
    
    // LIMITS
    if(is_array($limits)) $sql .= " LIMIT ".$limits['start'].", ".$limits['nbItemsByPage'];
    
    $r = $GLOBALS['db_admin']['man']->select($sql);

    if(!$r['erreur']) {
        foreach($r['datas'] as $i) {
            $i["frequence_print"] = CONTRATS_FREQUENCES[$i["frequence"]];
            $list[$i['ref']] = $i;
        }
    }
    else {
        $er = "</br>sql: ".$sql."</br>error: ".getReadableVar($r['erreur']);
        $GLOBALS['errors'][] = "Une erreur est survenue durant la récupération de la liste des types de contrats dans le base de données !".$er;
    }
    
    return $list;
}

// GET DATAS

function getContratsTypeDatas($id) {
    $i = array();
    
    $sql = getContratsTypesTableSelectBaseSQL()." WHERE ".CONTRATS_TYPES_TABLE.".`ref`=".intval($id);
    
    $r = $GLOBALS['db_admin']['man']->select($sql,1);

    if(!$r['erreur']) {
        $i = $r['datas'];
        $i["frequence_print"] = CONTRATS_FREQUENCES[$i["frequence"]];
    }
    else {
        $er = "</br>sql: ".$sql."</br>error: ".getReadableVar($r['erreur']);
        $GLOBALS['errors'][] = "Une erreur est survenue durant la récupération des informations du type de contrats dans le base de données !".$er;
    }
    
    return $i;
}

// ADD / UPDATE DATAS

function getContratsTypeDatasFromRequest() { return getRequestTableDatas(CONTRATS_TYPES_TABLE_STRUCT); }

function addContratsType($datas) {
    return addDatasInTable(
        $GLOBALS['db_admin']['man'],    // DB MANAGER
        CONTRATS_TYPES_TABLE,           // TABLE NAME
        CONTRATS_TYPES_TABLE_STRUCT,    // TABLE STRUCTURE
        $datas,                         // DATAS
        "du type de contrat"            // ERROR STRING
    );
}

function updateContratsType($id, $datas) { 
    return updateDatasInTable(
        $GLOBALS['db_admin']['man'],    // DB MANAGER
        CONTRATS_TYPES_TABLE,           // TABLE NAME
        CONTRATS_TYPES_TABLE_STRUCT,    // TABLE STRUCTURE
        $id,                            // ID
        $datas,                         // DATAS
        "au type de contrat",           // NULL STRING
        "du type de contrat"            // ERROR STRING
    );
}

function deleteContratsType($id) {
    return deleteItemInTable(
        $GLOBALS['db_admin']['man'],    // DB MANAGER
        CONTRATS_TYPES_TABLE,           // TABLE NAME
        $id,                            // ID
        "du type de contrat"            // ERROR STRING
    );
}

function eraseContratsType($id) {
    return eraseItemInTable(
        $GLOBALS['db_admin']['man'],    // DB MANAGER
        CONTRATS_TYPES_TABLE,           // TABLE NAME
        $id,                            // ID
        "du type de contrat"            // ERROR STRING
    );
}

// LINKED CONTRATS

function updateContratsTypeLinks($id) {
    $datas = getContratsTypeDatas($id);
    if(!is_array($datas)) return $datas;
    
    // UNLINK CONTRATS
    $sql = "UPDATE ".CONTRATS_TABLE." SET `type`=NULL WHERE `type`=".intval($id)
          ." AND (`groupe`!=".$datas["groupe_ref"]
          ." OR `frequence`!='".$datas["frequence"]."'"
          ." OR `panier_type`!=".$datas["panier_type_ref"]
          ." OR `nb_paniers`!=".$datas["nb_paniers"].")";
    
    $r = $GLOBALS['db_admin']['man']->execSql($sql);
    if(!$r || $r['erreur']!=false) {
        $er = "</br>sql: ".$r['sql']."</br>result: ".getReadableVar($r['result'])."</br>error: ".getReadableVar($r['erreur']);
        return "ERREUR : Une erreur est survenue durant la mise à jour des contrats liés dans la base de données ! ".$er;
    }
    
    // LINK CUSTOM
    $sql = "UPDATE ".CONTRATS_TABLE." SET `type`=".intval($id)." WHERE `type` IS NULL"
          ." AND `groupe`=".$datas["groupe_ref"]
          ." AND `frequence`='".$datas["frequence"]."'"
          ." AND `panier_type`=".$datas["panier_type_ref"]
          ." AND `nb_paniers`=".$datas["nb_paniers"];
    
    $r = $GLOBALS['db_admin']['man']->execSql($sql);
    if(!$r || $r['erreur']!=false) {
        $er = "</br>sql: ".$r['sql']."</br>result: ".getReadableVar($r['result'])."</br>error: ".getReadableVar($r['erreur']);
        return "ERREUR : Une erreur est survenue durant la mise à jour des contrats liés dans la base de données ! ".$er;
    }
    
    return 1;
}