<?php

/****** INIT PAGE ***********/
$GLOBALS['prefixe'] = '../';
$GLOBALS['admin'] = true;
include_once('../conf/conf.php');
if(!$GLOBALS['db_admin']['man']) {
    // CREATION DU DB MANAGER APP
    $GLOBALS['db_admin']['man'] = new dbSqlManager;
    $GLOBALS['db_admin']['man']->setDbConf(
        $GLOBALS['db_admin']['type'],
        $GLOBALS['db_admin']['db'],
        $GLOBALS['db_admin']['user'],
        $GLOBALS['db_admin']['pwd'],
        $GLOBALS['db_admin']['host']
    );
    $r = $GLOBALS['db_admin']['man']->connect();
    if($r!==true) die("ERREUR : impossible de se connecter à la base de donnée '".$GLOBALS['db_admin']['db']."' ! (".$r.")");
}
$GLOBALS['racine'] = 'paniers.php';
$GLOBALS['smarty']->assign('page','paniers');
$GLOBALS['smarty']->assign('secondbar','paniers/paniers_secondbar.tpl');

include_once(FUNCTIONS_DIR_PATH.'functions_paniers_types.php');
include_once(FUNCTIONS_DIR_PATH.'functions_paniers_groupes.php');

$action = false;
if(isset($_REQUEST['action'])) $action = strval( $_REQUEST['action'] );

if(isset($_REQUEST["ref"]) && (int)$_REQUEST["ref"]>0 && $action) {
    $id = intval($_REQUEST["ref"]);
    $infos = getPaniersTypeDatas($id);
    
    switch($action) {
        // AJAX GET DATAS
        case "getDatas": die(json_encode($infos)); break;
        // EDIT
        case "edit": {
            $datas = getPaniersTypeDatasFromRequest();
            die( strval( updatePaniersType($id,$datas) ) );
        } break;
        // DELETE
        case "delete" : die( strval( deletePaniersType($id) ) ); break;
        // DEFAULT
        default: die("NO ACTION");
    }
}

switch($action) {
    /****** GROUPES DE PANIER ***********/
    // ADD GROUPE
    case "add_groupe": {
        $datas = getPaniersGroupeDatasFromRequest();
        die( strval( addPaniersGroupe($datas) ) );
    } break;
    // EDIT GROUPE
    case "edit_groupe": {
        $id = isset($_REQUEST['groupe_ref']) ? intval($_REQUEST['groupe_ref']) : 0;
        if($id>0) {
            $datas = getPaniersGroupeDatasFromRequest();
            die( strval( updatePaniersGroupe($id, $datas) ) );
        }
        else die("ERREUR : aucune référence de groupe transmis...");
    } break;
    // DELETE GROUPE
    case "delete_groupe": {
        $id = isset($_REQUEST['groupe_ref']) ? intval($_REQUEST['groupe_ref']) : 0;
        if($id>0) die( strval( deletePaniersGroupe($id) ) );
        else die("ERREUR : aucune référence de groupe transmis...");
    } break;
    // GROUPES SELECT LIST
    case "groupes_select_list": {
        $GLOBALS['smarty'] -> assign('paniers_groupes_list', getPaniersGroupesList());
        die( $GLOBALS['smarty']->fetch("paniers_groupes/paniers_groupes_select_list.tpl") );
    } break;

    /****** PANIER **********************/
    // ADD
    case "add": {
        $datas = getPaniersTypeDatasFromRequest();
        die( strval( addPaniersType($datas) ) );
    } break;
    // SELECT LIST
    case "select_list": {
        $groupe = (isset($_REQUEST['groupe']) && (int)$_REQUEST['groupe']>0) ? intval($_REQUEST['groupe']) : 0;
        $GLOBALS['smarty'] -> assign('paniers_list', getPaniersTypesList("nom", "ASC", false, $groupe));
        die( $GLOBALS['smarty']->fetch("paniers/paniers_select_list.tpl") );
    } break;
    // DEFAULT - LIST
    default: {
        // GROUPE
        $groupesList = getPaniersGroupesList();
        $groupe = getRequestAndSessionSave("groupe", "paniers_filtre_groupe", "groupe", "int", 0, $groupesList, true);
        
        // SEARCH
        $search = getSearch("paniers_search");
        
        // LIMITS
        $limits = array("start" => 0, "end" => LIST_NB_LIGNES_PAR_PAGE, "nbItemsByPage" => LIST_NB_LIGNES_PAR_PAGE, "max" => getNbPaniersInList($search, $groupe));
        if(isset($_REQUEST['startListAt']) && (int)$_REQUEST['startListAt']>0) {
            $limits['start'] = intval($_REQUEST['startListAt']);
            $limits['end'] = $limits['start'] + $limits['nbItemsByPage'];
            if($limits['end'] > $limits['max']) $limits['end'] = $limits['max'];
        }
        $limits['rest'] = $limits['max'] - $limits['end'];
        $GLOBALS['smarty'] -> assign('list_limits',$limits);
        
        // LIST
        $order = getListOrder('paniers_list_order', 'paniers_list_sens', $allowPaniersTypesListOrder);
        $list = getPaniersTypesList($order["order"], $order["sens"], $search, $groupe, $limits);
        $GLOBALS['smarty'] -> assign('list',$list);
        
        // LIST PART
        if(isset($_REQUEST['startListAt']) && (int)$_REQUEST['startListAt']>0) {
            $limits["list"] = $GLOBALS['smarty']->fetch("paniers/paniers_list_builder.tpl");
            die(json_encode($limits));
        }
        
        // TEMPLATE
        $GLOBALS['template'] = 'paniers/paniers_list.tpl';
        $jsFiles[] = PUBLIC_HTML_ADMIN.'js/paniers.js';

        // REQUIRED LISTS
        $GLOBALS['smarty'] -> assign('paniers_groupes_list', $groupesList);

        /****** DISPLAY PAGE ***********/
        $GLOBALS['smarty']->assign('racine',$GLOBALS['racine']);
        display();
    }
}