<?php

////////////////////////////////////////////////////////////////////////
// LEGUMES /////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////

// LIST

$allowLegumesListOrder = array(
    'ref' => "réf.",
    'nom' => "nom",
    'tarif' => "tarif",
    'date' => "date"
);

function getNbLegumesInList($search=false) {
    $sql = getCountLegumesListSelectBaseSQL()." WHERE ".LEGUMES_TABLE.".`del`=0";
    $sql = buildSqlSearch($sql, $search, buildLegumesListSearchSQL);
    $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 getLegumesList($order='nom',$sens='ASC', $search=false, $limits=false) {
    $list = array();
    
    $sql = getLegumesTableSelectBaseSQL()." WHERE ".LEGUMES_TABLE.".`del`=0";
    
    // SEARCH
    $sql = buildSqlSearch($sql, $search, buildLegumesListSearchSQL);
    
    // ORDRE
    $sql.=" ORDER BY ";
    
    if($order=='ref') $sql .= LEGUMES_TABLE.".`ref`";
    else if($order=='nom') $sql .= LEGUMES_TABLE.".`nom`";
    else if($order=='tarif') $sql .= LEGUMES_TARIFS_TABLE.".`prix`";
    else if($order=='date') $sql .= LEGUMES_TARIFS_TABLE.".`date`";
    else $sql .= LEGUMES_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["tarif_print"] = $i["tarif_prix"]." €/".$i["tarif_unite"];
            $i["tarif_date_print"] = formatDate($i["tarif_date"], "mysql_date", "print_date");
            
            $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 légumes dans le base de données !".$er;
    }
    
    return $list;
}

function getLegumesAutocompleteList() {
    $list = array();
    
    $term = trim($_REQUEST['search']); // get user autocomplete input
    $term = preg_replace('/\s+/', ' ', $term); // replace multiple spaces by one
    $parts = explode(' ', $term);
    
    $sql = getLegumesTableSelectBaseSQL()." WHERE ".LEGUMES_TABLE.".`del`=0";
    foreach($parts as $p) $sql .= " AND (".buildLegumesListSearchSQL($p).")";
    
    $r = $GLOBALS['db_admin']['man']->select($sql);
    
    if(!$r['erreur']) {
        foreach($r['datas'] as $l) {
            $row = array(
                "id" => $l['ref'],
                "value" => $l['nom'],
                "label" => $l['nom'],
                
                "ref" => $l['ref'],
                "tarif_ref" => $l['tarif_ref'],
                "tarif_prix" => $l['tarif_prix'],
                "tarif_unite" => $l['tarif_unite']
            );
            array_push($list, $row);
        }
        
        $a_json = apply_highlight($list, $parts); // highlight search parts
    }
    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 légumes !".$er;
    }
    return $list;
}

// GET DATAS

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

    if(!$r['erreur']) {
        $i = $r['datas'];
        
        $i["tarif_print"] = $i["tarif_prix"]." €/".$i["tarif_unite"];
        $i["tarif_date_print"] = formatDate($i["tarif_date"], "mysql_date", "print_date");
        
        $i["historique_tarif"] = getLegumeTarifHistorique($id, $i["tarif_ref"]);
    }
    else {
        $er = "</br>sql: ".$sql."</br>error: ".getReadableVar($r['erreur']);
        $GLOBALS['errors'][] = "Une erreur est survenue durant la récupération des informations du légume dans le base de données !".$er;
    }
    
    return $i;
}

// ADD / UPDATE DATAS

function getLegumeDatasFromRequest() { 
    $datas = getRequestTableDatas(LEGUMES_TABLE_STRUCT);
    
    // NEW TARIF
    if(isset($_REQUEST["tarif_ref"]) && $_REQUEST["tarif_ref"] == "new" && isset($_REQUEST["tarif_prix"]) && isset($_REQUEST["tarif_unite"])) {
        $date = formatDate('', 'mysql_date');
        if(isset($_REQUEST["tarif_date"])) $date = checkDateFormat($_REQUEST["tarif_date"], 'mysql_date', "now");
        $datas["new_tarif"] = array(
            "prix" => floatval($_REQUEST["tarif_prix"]),
            "unite" => in_array($_REQUEST["tarif_unite"], LEGUMES_TARIFS_UNITES) ? $_REQUEST["tarif_unite"] : "kg",
            "date" => $date
        );
    }
    
    return $datas;
}

function addLegume($datas) {
    return addDatasInTable(
        $GLOBALS['db_admin']['man'],    // DB MANAGER
        LEGUMES_TABLE,                  // TABLE NAME
        LEGUMES_TABLE_STRUCT,           // TABLE STRUCTURE
        $datas,                         // DATAS
        "du légume"                     // ERROR STRING
    );
}

function updateLegume($id, $datas) { 
    return updateDatasInTable(
        $GLOBALS['db_admin']['man'],    // DB MANAGER
        LEGUMES_TABLE,                  // TABLE NAME
        LEGUMES_TABLE_STRUCT,           // TABLE STRUCTURE
        $id,                            // ID
        $datas,                         // DATAS
        "au légume",                    // NULL STRING
        "du légume"                     // ERROR STRING
    );
}

function deleteLegume($id) {
    return deleteItemInTable(
        $GLOBALS['db_admin']['man'],    // DB MANAGER
        LEGUMES_TABLE,                  // TABLE NAME
        $id,                            // ID
        "du légume"                     // ERROR STRING
    );
}

function eraseLegume($id) {
    return eraseItemInTable(
        $GLOBALS['db_admin']['man'],    // DB MANAGER
        LEGUMES_TABLE,                  // TABLE NAME
        $id,                            // ID
        "du légume"                     // ERROR STRING
    );
}

////////////////////////////////////////////////////////////////////////
// LEGUMES - TARIFS ////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////

function getLegumeTarifs($legume) {
    $list = array();
    
    
    
    return $list;
}

function getLegumeTarif($legume, $groupe) {
    $i = array();
    
    $sql = getLegumesTarifsTableSelectBaseSQL()
        ." WHERE ".LEGUMES_TARIFS_TABLE.".`legume`=".intval($legume);
    
    if($groupe>0) $sql .= " AND ".LEGUMES_TARIFS_TABLE.".`groupe`=".intval($groupe);
    else $sql .= " AND ".LEGUMES_TARIFS_TABLE.".`groupe` IS NULL";
        
    $r = $GLOBALS['db_admin']['man']->select($sql,1);

    if(!$r['erreur']) {
        $i = $r['datas'];
        
        $i["tarif_print"] = $i["tarif_prix"]." €/".$i["tarif_unite"];
        $i["tarif_date_print"] = formatDate($i["tarif_date"], "mysql_date", "print_date");
    }
    else {
        $er = "</br>sql: ".$sql."</br>error: ".getReadableVar($r['erreur']);
        $GLOBALS['errors'][] = "Une erreur est survenue durant la récupération des informations du légume dans le base de données !".$er;
    }
    
    return $i;
    
}

function addLegumeTarif($datas) {
    return addDatasInTable(
        $GLOBALS['db_admin']['man'],    // DB MANAGER
        LEGUMES_TARIFS_TABLE,           // TABLE NAME
        LEGUMES_TARIFS_TABLE_STRUCT,    // TABLE STRUCTURE
        $datas,                         // DATAS
        "du tarif"                      // ERROR STRING
    );
}

function deleteLegumeTarif($id) {
    return deleteItemInTable(
        $GLOBALS['db_admin']['man'],    // DB MANAGER
        LEGUMES_TARIFS_TABLE,           // TABLE NAME
        $id,                            // ID
        "du tarif"                      // ERROR STRING
    );
}

function getLegumeTarifHistorique($id, $current = 0) {
    $list = array();
    
    $sql = getLegumesTarifsTableSelectBaseSQL()
        ." WHERE ".LEGUMES_TARIFS_TABLE.".legume=".intval($id)
        ." AND ".LEGUMES_TARIFS_TABLE.".del=0";
    
    // ORDRE
    $sql.=" ORDER BY ".LEGUMES_TARIFS_TABLE.".date DESC";
    
    $r = $GLOBALS['db_admin']['man']->select($sql);

    if(!$r['erreur']) {
        $last_date = "";
        foreach($r['datas'] as $i) {            
            $i["tarif_print"] = $i["tarif_prix"]." €/".$i["tarif_unite"];
            $i["tarif_date_print"] = formatDate($i["tarif_date"], "mysql_date", "print_date");
            $i["tarif_end_date"] = ($last_date!="") ? $last_date : NULL;
            $i["tarif_end_date_print"] = ($last_date!="") ? formatDate($last_date, "mysql_date", "print_date") : NULL;
            
            $i["tarif_periode"] = (is_null($i["tarif_end_date"]) ? "depuis le " : "du ").$i["tarif_date_print"];
            if(!is_null($i["tarif_end_date"])) $id["tarif_periode"] .= " au ".$i["tarif_end_date_print"];
            
            if($i['ref'] != $current) $list[] = $i;
            
            $last_date = $i["tarif_date"];
        }
    }
    else {
        $er = "</br>sql: ".$sql."</br>error: ".getReadableVar($r['erreur']);
        $GLOBALS['errors'][] = "Une erreur est survenue durant la récupération de l'historique de tarif du légume dans le base de données !".$er;
    }
    
    return $list;
}