<?php
//_________________________________________________________________________________
//Zone de récupération des données de cette commande
$commandId = encrypt_decrypt("decrypt", rawurldecode($_GET['element']), $key_user, $iv_user);
$reqCommand = getQueries('api_commands', array('idCommand' => $commandId));
$command = $reqCommand['result'][0];
//Récupération des tables de la commande
$reqTables = getQueries("api_commands_tables LEFT JOIN api_infos_tables ON api_commands_tables.table_id = api_infos_tables.idInfoTable",
array("command_id" => $commandId));
$tables = $reqTables['result'];
//LAYOUT DES COLONNES
//Toutes les colonnes que le layout possède actuellement
$reqColumns = getQueries('api_commands_layout_out_table', array('command_id' => $commandId, 'ORDER BY' => 'layout_out_table_order'));
$columnsOwns = $reqColumns['result'];
//_________________________________________________________________________________
//_________________________________________________________________________________
//Création d'une page
if(isset($_POST['update-columns'])) {
//Commence l'ordre à 10
$order = 10;
//Suppression des layouts actuels
dbRowDelete('api_commands_layout_out_table', 'command_id = '.$commandId);
//Parcours du POST
foreach ($_POST as $key => $value) {
if(strpos($key, "column_") !== false) {
//Pour chaque colonne, on récupère son id et son nom de modèle
$idColumn = substr($key, strpos($key, "_") + 1);
//Données du formulaire
$form = array('column_id' => $idColumn,
'layout_out_table_order' => $order,
'layout_out_table_name' => $value,
'command_id' => $commandId,
'user_id' => $user -> getUserId());
$flag = dbRowInsert2("api_commands_layout_out_table", $form);
if( $flag ) {
itsLog(array('log_table' => "api_commands_layout_out_table",
'log_operation' => "Ajout d'une colonne dans un modèle de sortie",
'log_request' => json_encode($form),
'log_response' => json_encode($flag),
'log_color' => "success",
'log_display' => 1,
'log_timeout' => 5000,
'id_log' => getLastId("api_commands_layout_out_table", 'idApiCommandLayoutOutTable'),
'user_id' => $user -> getUserId()
));
} else {
itsLog(array('log_table' => "api_commands_layout_out_table",
'log_operation' => "Erreur durant l'ajout d'une colonne dans un modèle de sortie",
'log_request' => json_encode($form),
'log_response' => json_encode($flag),
'log_color' => "danger",
'log_display' => 1,
'log_timeout' => 5000,
'user_id' => $user -> getUserId()
));
}
//Incrémentation de 10 de l'ordre
$order = $order + 10;
}
}
//Refresh
redirect($_SERVER['REQUEST_URI']);
}
//_________________________________________________________________________________
?>
<div class="content d-flex flex-column flex-column-fluid" id="kt_content">
<!--begin::Container-->
<div class="container-xxl" id="kt_content_container">
<!--begin::Card-->
<div class="card pt-4 mb-6 mb-xl-9">
<!--begin::Card header-->
<div class="card-header border-0">
<!--begin::Card title-->
<div class="card-title">
<h2>Personnalisation du modèle d'affichage</h2>
</div>
<!--end::Card title-->
</div>
<!--end::Card header-->
<!--begin::Card body-->
<div class="card-body pt-0 pb-5">
<!--begin::Row-->
<div class="row">
<!--begin::Col-->
<div class="col-lg-4">
<!--begin::Card-->
<div class="card card-bordered">
<!--begin::Card header-->
<div class="card-header">
<div class="card-title">
<h3 class="card-label">Colonnes disponibles</h3>
</div>
</div>
<!--end::Card header-->
<!--begin::Card body-->
<div class="card-body">
<form method="post" action="">
<!--begin::Colonnes-->
<?php
foreach($tables as $table) {
//LAYOUT DES COLONNES
$reqAllColumns = getQueries('api_commands_columns LEFT JOIN api_infos_tables_columns ON api_commands_columns.column_id = api_infos_tables_columns.idInfoTableColumn', array('api_infos_tables_columns.infoTable_id' => $table['idInfoTable'], "api_commands_columns.command_id" => $commandId));
$allItems = $reqAllColumns['result'];
//Toutes les colonnes que le layout possède actuellement
$reqColumns = getQueries('api_commands_layout_out_table LEFT JOIN api_commands_columns ON api_commands_layout_out_table.column_id = api_commands_columns.column_id',
array('api_commands_layout_out_table.command_id' => $commandId, 'ORDER BY' => 'layout_out_table_order'));
$itemsOwns = $reqColumns['result'];
//var_dump($itemsOwns);
//Préparation de l'array des items non acquis
//Petit modification de format pour l'array des items acquis
$arrayEarnedItems = array();
foreach($itemsOwns as $itemInfo) {
$arrayEarnedItems[$itemInfo['idCommandColumn']] = $itemInfo['column_id'];
}
//Pareil pour l'array de toutes les items
$arrayAllItems = array();
foreach($allItems as $itemInfo) {
$arrayAllItems[$itemInfo['idCommandColumn']] = $itemInfo['column_id'];
}
//Item non acquis = tous les items - items acquis
foreach($arrayAllItems as $key => $value) {
if(keyExist($key, $arrayEarnedItems)) {
//l'id de l'item se trouve déjà dans l'array des items acquis, on supprime donc cet index
unset($arrayAllItems[$key]);
}
}
?>
<!--begin::Card header-->
<div class="card-header border-0 cursor-pointer" role="button" data-bs-toggle="collapse" data-bs-target="#columns_<?= $table['idInfoTable']?>" aria-expanded="true" aria-controls="columns_<?= $table['idInfoTable']?>">
<h3 class="card-label"><?= $table['info_table_description']?></h3>>
</div>
<!--begin::Card header-->
<div id="columns_<?= $table['idInfoTable']?>" class="collapse">
<!--begin::Row-->
<div class="row row-cols-1 g-10 min-h-200px draggable-zone">
<?php
foreach($arrayAllItems as $idLayoutColumn => $idColumn) {
//Récupération des données de cet item
$reqColumn = getQueries("api_infos_tables_columns", array('idInfoTableColumn' => $idColumn));
$column = $reqColumn['result'][0];
?>
<!--begin::Col-->
<div class="col draggable">
<!--begin::Card-->
<div class="card bg-light-success">
<div class="card-header">
<div class="card-title">
<h5 class="card-label"><?= $column['info_table_column_description']?></h5>
</div>
<div class="card-toolbar">
<a href="#" class="btn btn-icon btn-hover-light-primary draggable-handle">
<!--begin::Svg Icon | path: icons/duotune/abstract/abs015.svg-->
<span class="svg-icon svg-icon-2x">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
<path d="M21 7H3C2.4 7 2 6.6 2 6V4C2 3.4 2.4 3 3 3H21C21.6 3 22 3.4 22 4V6C22 6.6 21.6 7 21 7Z" fill="black" />
<path opacity="0.3" d="M21 14H3C2.4 14 2 13.6 2 13V11C2 10.4 2.4 10 3 10H21C21.6 10 22 10.4 22 11V13C22 13.6 21.6 14 21 14ZM22 20V18C22 17.4 21.6 17 21 17H3C2.4 17 2 17.4 2 18V20C2 20.6 2.4 21 3 21H21C21.6 21 22 20.6 22 20Z" fill="black" />
</svg>
</span>
<!--end::Svg Icon-->
</a>
</div>
</div>
<div class="card-body">
<input type="text" name="column_<?= $column['idInfoTableColumn']?>" class="form-control form-control-solid mb-3 mb-lg-0" value="<?= $column['info_table_column_description']?>"/>
</div>
</div>
<!--end::Card-->
</div>
<!--end::Col-->
<?php
}
?>
</div>
<!--end::Row-->
</div>
<?php
}
?>
</form>
</div>
<!--end::Card body-->
</div>
<!--end::Card-->
</div>
<!--end::Col-->
<!--begin::Col-->
<div class="col-lg-8">
<form method="post" action="">
<!--begin::Card-->
<div class="card card-bordered">
<!--begin::Card header-->
<div class="card-header">
<div class="card-title">
<h3 class="card-label">Affichage du tableau</h3>
</div>
</div>
<!--end::Card header-->
<!--begin::Card body-->
<div class="card-body">
<!--begin::Row-->
<div class="row row-cols-1 g-10 min-h-200px draggable-zone">
<?php
foreach($columnsOwns as $columnOwn) {
//Récupération des données de cet item
$reqColumn = getQueries("api_infos_tables_columns LEFT JOIN api_commands_layout_out_table ON api_infos_tables_columns.idInfoTableColumn = api_commands_layout_out_table.column_id", array('idInfoTableColumn' => $columnOwn['column_id']));
$column = $reqColumn['result'][0];?>
<!--begin::Col-->
<div class="col draggable">
<!--begin::Card-->
<div class="card bg-light-info">
<div class="card-header">
<div class="card-title">
<h5 class="card-label"><?= $column['info_table_column_description']?></h5>
</div>
<div class="card-toolbar">
<a href="#" class="btn btn-icon btn-hover-light-primary draggable-handle">
<!--begin::Svg Icon | path: icons/duotune/abstract/abs015.svg-->
<span class="svg-icon svg-icon-2x">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
<path d="M21 7H3C2.4 7 2 6.6 2 6V4C2 3.4 2.4 3 3 3H21C21.6 3 22 3.4 22 4V6C22 6.6 21.6 7 21 7Z" fill="black" />
<path opacity="0.3" d="M21 14H3C2.4 14 2 13.6 2 13V11C2 10.4 2.4 10 3 10H21C21.6 10 22 10.4 22 11V13C22 13.6 21.6 14 21 14ZM22 20V18C22 17.4 21.6 17 21 17H3C2.4 17 2 17.4 2 18V20C2 20.6 2.4 21 3 21H21C21.6 21 22 20.6 22 20Z" fill="black" />
</svg>
</span>
<!--end::Svg Icon-->
</a>
</div>
</div>
<div class="card-body">
<input type="text" name="column_<?= $column['idInfoTableColumn']?>" class="form-control form-control-solid mb-3 mb-lg-0" value="<?= $column['layout_out_table_name']?>"/>
</div>
</div>
<!--end::Card-->
</div>
<!--end::Col-->
<?php
}
?>
</div>
<!--end::Row-->
</div>
<!--end::Card body-->
<!--begin::Actions-->
<div class="card-footer d-flex justify-content-end py-6 px-9">
<button type="submit" class="btn btn-primary" name="update-columns">Enregistrer</button>
</div>
<!--end::Actions-->
</div>
<!--end::Card-->
</form>
</div>
<!--end::Col-->
</div>
</div>
<!--end::Card body-->
</div>
<!--end::Card-->
</div>
<!--end::Container-->
</div>