<?php
//_________________________________________________________________________________
//Récupération de la fonction
$reqFunction = getQueries("api_info_functions", array("idInfoFunction" => encrypt_decrypt("decrypt", rawurldecode($_GET['element']), $key_user, $iv_user)));
if(!$reqFunction['count'])
redirect("index.php?page_slug=api_functions");
$function = $reqFunction['result'][0];
//_________________________________________________________________________________
//_________________________________________________________________________________
//Récupération de l'éditeur
$reqEditor = getQueries("nx_users", array("idUser" => $function['user_id']));
$editor = $reqEditor['result'][0];
//_________________________________________________________________________________
//_________________________________________________________________________________
//Récupération des paramètres
$reqParameters = getQueries("api_infos_functions_parameters", array('infoFunction_id' => $function['idInfoFunction']));
$parameters = $reqParameters['result'];
//_________________________________________________________________________________
//_________________________________________________________________________________
//Récupération des types de champ par défaut
$reqSetting2 = getQueries("nx_settings", array('setting_uniqid' => "6253e2a6e43a7"));
$settingJson2 = $reqSetting2['result'][0];
$settings2 = json_decode($settingJson2['setting_json'], true);
//_________________________________________________________________________________
//_________________________________________________________________________________
//Mise à jour de la fonction
if(isset($_POST['update-function'])) {
//Quel layout ?
$form = array('info_function_description' => htmlspecialchars($_POST['info_function_description']),
'user_id' => $user -> getUserId());
$selector = array('idInfoFunction' => $function['idInfoFunction']);
$flag = dbRowUpdate2("api_info_functions", $form, $selector);
if($flag) {
itsLog(array('log_table' => "api_info_functions",
'log_operation' => "Mise à jour de la fonction",
'log_request' => json_encode($form),
'log_response' => json_encode($flag),
'log_selector' => json_encode($selector),
'log_color' => "success",
'log_display' => 1,
'log_timeout' => 5000,
'id_log' => $icon['idIcon'],
'user_id' => $user -> getUserId()
));
} else {
itsLog(array('log_table' => "api_info_functions",
'log_operation' => "Erreur durant la mise à jour de la fonction",
'log_request' => json_encode($form),
'log_response' => json_encode($flag),
'log_selector' => json_encode($selector),
'log_color' => "danger",
'log_display' => 1,
'log_timeout' => 5000,
'id_log' => $icon['idIcon'],
'user_id' => $user -> getUserId()
));
}
//Refresh
redirect($_SERVER['REQUEST_URI']);
}
//_________________________________________________________________________________
//_________________________________________________________________________________
//Ajouter des paramètres d'entrées
if(isset($_POST['update-parameters-in'])) {
//_________________________________________________________________________________
//CREATION DES PARAMETRES
$parameters = array();
foreach($_POST['parameters_in'] as $parameterPOST) {
//Génère le nom du paramètre
$parameterName = generateName(array('type' => "parameterName",
'value' => $parameterPOST['info_function_parameter_name']));
$parameter = array("info_function_parameter_uniqid" => uniqid(),
"info_function_parameter_name" => $parameterName,
"info_function_parameter_description" => $parameterPOST['info_function_parameter_name'],
"info_function_parameter_type" => htmlspecialchars($parameterPOST['info_function_parameter_type']),
"info_function_parameter_mandatory" => htmlspecialchars($parameterPOST['info_function_parameter_mandatory']),
"info_function_parameter_target" => "in",
"infoFunction_id" => $function['idInfoFunction'],
'function_uniqid' => $function['info_function_uniqid'],
"user_id" => $user -> getUserId()
);
array_push($parameters, $parameter);
}
//D'autre paramètres par défauts doivent être créés
/*
foreach($settings['parameters'] as $parameter) {
array_push($parameters, $parameter);
}*/
foreach($parameters as $parameter) {
$flag = dbRowInsert2("api_infos_functions_parameters", $parameter);
if($flag) {
$idParameter = getLastId("api_infos_functions_parameters", 'idInfoFunctionParameter');
itsLog(array('log_table' => "api_infos_functions_parameters",
'log_operation' => "Ajout d'un paramètre",
'log_request' => json_encode($parameter),
'log_response' => json_encode($flag),
'log_selector' => json_encode(array()),
'log_color' => "success",
'log_display' => 1,
'log_timeout' => 5000,
'id_log' => $idParameter,
'user_id' => $user -> getUserId()
));
} else {
itsLog(array('log_table' => "api_infos_functions_parameters",
'log_operation' => "Erreur durant l'ajout d'un paramètre",
'log_request' => json_encode($parameter),
'log_response' => json_encode($flag),
'log_selector' => json_encode(array()),
'log_color' => "danger",
'log_display' => 1,
'log_timeout' => 5000,
'id_log' => $function['idInfoFunction'],
'user_id' => $user -> getUserId()
));
}
}
//_________________________________________________________________________________
//Refresh
redirect($_SERVER['REQUEST_URI']);
}
//_________________________________________________________________________________
//_________________________________________________________________________________
//Ajouter des paramètres de sorties
if(isset($_POST['update-parameters-out'])) {
//_________________________________________________________________________________
//CREATION DES PARAMETRES
$parameters = array();
foreach($_POST['parameters_out'] as $parameterPOST) {
//Génère le nom du paramètre
$parameterName = generateName(array('type' => "parameterName",
'value' => $parameterPOST['info_function_parameter_name']));
$parameter = array("info_function_parameter_uniqid" => uniqid(),
"info_function_parameter_name" => $parameterName,
"info_function_parameter_description" => $parameterPOST['info_function_parameter_name'],
"info_function_parameter_type" => htmlspecialchars($parameterPOST['info_function_parameter_type']),
"info_function_parameter_mandatory" => htmlspecialchars($parameterPOST['info_function_parameter_mandatory']),
"info_function_parameter_target" => "out",
"infoFunction_id" => $function['idInfoFunction'],
'function_uniqid' => $function['info_function_uniqid'],
"user_id" => $user -> getUserId()
);
array_push($parameters, $parameter);
}
//D'autre paramètres par défauts doivent être créés
/*
foreach($settings['parameters'] as $parameter) {
array_push($parameters, $parameter);
}*/
foreach($parameters as $parameter) {
$flag = dbRowInsert2("api_infos_functions_parameters", $parameter);
if($flag) {
$idParameter = getLastId("api_infos_functions_parameters", 'idInfoFunctionParameter');
itsLog(array('log_table' => "api_infos_functions_parameters",
'log_operation' => "Ajout d'un paramètre",
'log_request' => json_encode($parameter),
'log_response' => json_encode($flag),
'log_selector' => json_encode(array()),
'log_color' => "success",
'log_display' => 1,
'log_timeout' => 5000,
'id_log' => $idParameter,
'user_id' => $user -> getUserId()
));
} else {
itsLog(array('log_table' => "api_infos_functions_parameters",
'log_operation' => "Erreur durant l'ajout d'un paramètre",
'log_request' => json_encode($parameter),
'log_response' => json_encode($flag),
'log_selector' => json_encode(array()),
'log_color' => "danger",
'log_display' => 1,
'log_timeout' => 5000,
'id_log' => $function['idInfoFunction'],
'user_id' => $user -> getUserId()
));
}
}
//_________________________________________________________________________________
//Refresh
redirect($_SERVER['REQUEST_URI']);
}
//_________________________________________________________________________________
//_________________________________________________________________________________
//Supprimer des paramètres
if(isset($_POST['delete-parameters'])) {
//Mise à jour des données de base
$parametersToRemove = $_POST['parameters'];
foreach($parametersToRemove as $parameterToRemove) {
//Suppression des paramètres de la fonction
$form = "idInfoFunctionParameter = " . $parameterToRemove;
$response = dbRowDelete('api_infos_functions_parameters', $form);
if( $response ) {
itsLog(array('log_table' => "api_infos_functions_parameters",
'log_operation' => "Paramètre supprimé",
'log_request' => json_encode(array($form)),
'log_response' => json_encode($response),
'log_color' => "success",
'log_display' => 1,
'log_timeout' => 5000,
'id_log' => $parameterToRemove,
'user_id' => $user -> getUserId()
));
} else {
itsLog(array('log_table' => "api_infos_functions_parameters",
'log_operation' => "Erreur dans la suppression du paramètre",
'log_request' => json_encode(array($form)),
'log_response' => json_encode($response),
'log_color' => "danger",
'log_display' => 1,
'log_timeout' => 5000,
'id_log' => $parameterToRemove,
'user_id' => $user -> getUserId()
));
}
}
//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::Layout-->
<div class="d-flex flex-column flex-xl-row">
<!--begin::Sidebar-->
<div class="flex-column flex-lg-row-auto w-100 w-xl-350px mb-10">
<!--begin::Card-->
<div class="card mb-5 mb-xl-8">
<!--begin::Card body-->
<div class="card-body">
<!--begin::Summary-->
<!--begin::User Info-->
<div class="d-flex flex-center flex-column py-5">
<!--begin::Name-->
<span class="fs-3 text-gray-800 fw-bolder mb-3"><?= $function['info_function_name']."()"?></span>
<!--end::Name-->
</div>
<!--end::User Info-->
<!--end::Summary-->
<!--begin::Details toggle-->
<div class="d-flex flex-stack fs-4 py-3">
<div class="fw-bolder rotate collapsible" data-bs-toggle="collapse" href="#kt_user_view_details" role="button" aria-expanded="false" aria-controls="kt_user_view_details">Détails
<span class="ms-2 rotate-180">
<!--begin::Svg Icon | path: icons/duotune/arrows/arr072.svg-->
<span class="svg-icon svg-icon-3">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
<path d="M11.4343 12.7344L7.25 8.55005C6.83579 8.13583 6.16421 8.13584 5.75 8.55005C5.33579 8.96426 5.33579 9.63583 5.75 10.05L11.2929 15.5929C11.6834 15.9835 12.3166 15.9835 12.7071 15.5929L18.25 10.05C18.6642 9.63584 18.6642 8.96426 18.25 8.55005C17.8358 8.13584 17.1642 8.13584 16.75 8.55005L12.5657 12.7344C12.2533 13.0468 11.7467 13.0468 11.4343 12.7344Z" fill="black" />
</svg>
</span>
<!--end::Svg Icon-->
</span></div>
</div>
<!--end::Details toggle-->
<div class="separator"></div>
<!--begin::Details content-->
<div id="kt_user_view_details" class="collapse show">
<div class="pb-5 fs-6">
<!--begin::Details item-->
<div class="fw-bolder mt-5">Identifiant de la fonction</div>
<div class="text-gray-600">ID-<?= $function['idInfoFunction']?></div>
<!--begin::Details item-->
<!--begin::Details item-->
<div class="fw-bolder mt-5">Fonction</div>
<div class="text-gray-600">
<?= $function['info_function_name']."()"?>
</div>
<!--begin::Details item-->
<!--begin::Details item-->
<div class="fw-bolder mt-5">Description</div>
<div class="text-gray-600">
<?= $function['info_function_description']?>
</div>
<!--begin::Details item-->
<!--begin::Details item-->
<div class="fw-bolder mt-5">Créateur</div>
<div class="text-gray-600"><?= encrypt_decrypt("decrypt", $editor['user_firstname'], $key_user, $iv_user) . " " . encrypt_decrypt("decrypt", $editor['user_lastname'], $key_user, $iv_user)?></div>
<!--begin::Details item-->
</div>
</div>
<!--end::Details content-->
</div>
<!--end::Card body-->
</div>
<!--end::Card-->
</div>
<!--end::Sidebar-->
<!--begin::Content-->
<div class="flex-lg-row-fluid ms-lg-15">
<!--begin:::Tabs-->
<ul class="nav nav-custom nav-tabs nav-line-tabs nav-line-tabs-2x border-0 fs-4 fw-bold mb-8">
<!--begin:::Tab item-->
<li class="nav-item">
<a class="nav-link text-active-primary pb-4 active" data-bs-toggle="tab" href="#tab_parameters_in">Entrée(s)</a>
</li>
<!--end:::Tab item-->
<!--begin:::Tab item-->
<li class="nav-item">
<a class="nav-link text-active-primary pb-4" data-bs-toggle="tab" href="#tab_parameters_out">Sortie(s)</a>
</li>
<!--end:::Tab item-->
<!--begin:::Tab item-->
<li class="nav-item">
<a class="nav-link text-active-primary pb-4" data-bs-toggle="tab" href="#edit">Modifier</a>
</li>
<!--end:::Tab item-->
<!--begin:::Tab item-->
<li class="nav-item ms-auto">
<!--begin::Action menu-->
<a href="#" class="btn btn-primary ps-7" data-kt-menu-trigger="click" data-kt-menu-attach="parent" data-kt-menu-placement="bottom-end">Actions
<!--begin::Svg Icon | path: icons/duotune/arrows/arr072.svg-->
<span class="svg-icon svg-icon-2 me-0">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
<path d="M11.4343 12.7344L7.25 8.55005C6.83579 8.13583 6.16421 8.13584 5.75 8.55005C5.33579 8.96426 5.33579 9.63583 5.75 10.05L11.2929 15.5929C11.6834 15.9835 12.3166 15.9835 12.7071 15.5929L18.25 10.05C18.6642 9.63584 18.6642 8.96426 18.25 8.55005C17.8358 8.13584 17.1642 8.13584 16.75 8.55005L12.5657 12.7344C12.2533 13.0468 11.7467 13.0468 11.4343 12.7344Z" fill="black" />
</svg>
</span>
<!--end::Svg Icon--></a>
<!--begin::Menu-->
<div class="menu menu-sub menu-sub-dropdown menu-column menu-rounded menu-gray-800 menu-state-bg-light-primary fw-bold py-4 w-250px fs-6" data-kt-menu="true">
<!--begin::Menu item-->
<div class="menu-item px-5">
<div class="menu-content text-muted pb-2 px-5 fs-7 text-uppercase">Fonction</div>
</div>
<!--end::Menu item-->
<!--begin::Menu item-->
<div class="menu-item px-5">
<a href="#" class="menu-link text-danger px-5" data-action="delete" data-id="<?= encrypt_decrypt("encrypt", $function['info_function_uniqid'], $key_user, $iv_user)?>" data-method="custom" data-element="<?= encrypt_decrypt("encrypt", "function", $key_user, $iv_user)?>">Supprimer la fonction</a>
</div>
<!--end::Menu item-->
</div>
<!--end::Menu-->
<!--end::Menu-->
</li>
<!--end:::Tab item-->
</ul>
<!--end:::Tabs-->
<!--begin:::Tab content-->
<div class="tab-content" id="myTabContent">
<!--begin:::Tab pane-->
<div class="tab-pane fade show active" id="tab_parameters_in" role="tabpanel">
<form method="post" action="">
<!--begin::Card-->
<div class="card card-flush mb-6 mb-xl-9">
<!--begin::Card body-->
<div class="card-body border-top p-9">
<!--begin::Input group-->
<div class="fv-row mb-10" id="section_parameters_in">
<!--begin::Repeater-->
<div id="parameters_in">
<!--begin::Form group-->
<div class="form-group">
<div data-repeater-list="parameters_in">
<div data-repeater-item="" class="form-group row mb-5">
<div class="col-md-4">
<label class="form-label">Nom API :</label>
<input type="text" class="form-control mb-2 mb-md-0" placeholder="Ex: Prénom" name="info_function_parameter_name" />
</div>
<div class="col-md-3">
<label class="form-label">Type de donnée:</label>
<select class="form-select" data-kt-repeater="select2" data-placeholder="Choisir un type" name="info_function_parameter_type">
<option>Choisir</option>
<?php
foreach($settings2['field_type'] as $value => $option) {
echo '<option value="'.$value.'">'.$option.'</option>';
}
?>
</select>
</div>
<div class="col-md-3">
<label class="form-label">Obligatoire:</label>
<select class="form-select" data-kt-repeater="select2" data-placeholder="Choisir" name="info_function_parameter_mandatory">
<option value="0" selected>Non</option>
<option value="1">Oui</option>
</select>
</div>
<div class="col-md-2">
<a href="javascript:;" data-repeater-delete="" class="btn btn-sm btn-light-danger mt-3 mt-md-9">
<i class="la la-trash-o fs-3"></i></a>
</div>
</div>
</div>
</div>
<!--end::Form group-->
<!--begin::Form group-->
<div class="form-group">
<a href="javascript:;" data-repeater-create="" class="btn btn-light-primary">
<i class="la la-plus"></i>Ajouter</a>
</div>
<!--end::Form group-->
</div>
<!--end::Repeater-->
</div>
<!--end::Input group-->
</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-parameters-in">Ajouter</button>
</div>
<!--end::Actions-->
</div>
</form>
<!--end::Card-->
<!--begin::Card-->
<div class="card mb-6 mb-xl-9">
<!--begin::Card header-->
<div class="card-header border-0 cursor-pointer" role="button" data-bs-toggle="collapse" data-bs-target="#list_parametres_in" aria-expanded="true" aria-controls="tables">
<div class="card-title m-0">
<h3 class="fw-bolder m-0">Liste des paramètres</h3>
</div>
</div>
<!--begin::Card header-->
<!--begin::Content-->
<div id="list_parametres_in" class="collapse show">
<!--begin::Form-->
<form class="form" action="" method="post">
<!--begin::Card body-->
<div class="card-body border-top px-9 py-9">
<?php
foreach($parameters as $parameter) {
if($parameter['info_function_parameter_target'] == "out")
continue;
?>
<!--begin::Option-->
<label class="form-check form-check-custom form-check-solid align-items-start">
<!--begin::Input-->
<input class="form-check-input me-3" type="checkbox" name="parameters[]" value="<?= $parameter['idInfoFunctionParameter']?>" />
<!--end::Input-->
<!--begin::Label-->
<span class="form-check-label d-flex flex-column align-items-start">
<span class="fw-bolder fs-5 mb-0"><?= $parameter['info_function_parameter_description']?></span>
<span class="text-muted fs-6"><?= $parameter['info_function_parameter_name'] . ' [ '.(($parameter['info_function_parameter_mandatory'] == 1) ? "*" : "" ).''.$parameter['info_function_parameter_type'].' ]'?></span>
</span>
<!--end::Label-->
</label>
<!--end::Option-->
<!--begin::Option-->
<div class="separator separator-dashed my-6"></div>
<!--end::Option-->
<?php
}
?>
</div>
<!--end::Card body-->
<!--begin::Card footer-->
<div class="card-footer d-flex justify-content-end py-6 px-9">
<button class="btn btn-danger px-6" type="submit" name="delete-parameters">Supprimer les paramètres sélectionnés</button>
</div>
<!--end::Card footer-->
</form>
<!--end::Form-->
</div>
<!--end::Content-->
</div>
<!--end::Card-->
</div>
<!--end:::Tab pane-->
<!--begin:::Tab pane-->
<div class="tab-pane fade" id="tab_parameters_out" role="tabpanel">
<form method="post" action="">
<!--begin::Card-->
<div class="card card-flush mb-6 mb-xl-9">
<!--begin::Card body-->
<div class="card-body border-top p-9">
<!--begin::Input group-->
<div class="fv-row mb-10" id="section_parameters_out">
<!--begin::Repeater-->
<div id="parameters_out">
<!--begin::Form group-->
<div class="form-group">
<div data-repeater-list="parameters_out">
<div data-repeater-item="" class="form-group row mb-5">
<div class="col-md-4">
<label class="form-label">Nom API :</label>
<input type="text" class="form-control mb-2 mb-md-0" placeholder="Ex: Prénom" name="info_function_parameter_name" />
</div>
<div class="col-md-3">
<label class="form-label">Type de donnée:</label>
<select class="form-select" data-kt-repeater2="select2" data-placeholder="Choisir un type" name="info_function_parameter_type">
<option>Choisir</option>
<?php
foreach($settings2['field_type'] as $value => $option) {
echo '<option value="'.$value.'">'.$option.'</option>';
}
?>
</select>
</div>
<div class="col-md-3">
<label class="form-label">Obligatoire:</label>
<select class="form-select" data-kt-repeater2="select2" data-placeholder="Choisir" name="info_function_parameter_mandatory">
<option value="0" selected>Non</option>
<option value="1">Oui</option>
</select>
</div>
<div class="col-md-2">
<a href="javascript:;" data-repeater-delete="" class="btn btn-sm btn-light-danger mt-3 mt-md-9">
<i class="la la-trash-o fs-3"></i></a>
</div>
</div>
</div>
</div>
<!--end::Form group-->
<!--begin::Form group-->
<div class="form-group">
<a href="javascript:;" data-repeater-create="" class="btn btn-light-primary">
<i class="la la-plus"></i>Ajouter</a>
</div>
<!--end::Form group-->
</div>
<!--end::Repeater-->
</div>
<!--end::Input group-->
</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-parameters-out">Ajouter</button>
</div>
<!--end::Actions-->
</div>
<!--end::Card-->
<!--begin::Card-->
<div class="card mb-6 mb-xl-9">
<!--begin::Card header-->
<div class="card-header border-0 cursor-pointer" role="button" data-bs-toggle="collapse" data-bs-target="#list_parametres_out" aria-expanded="true" aria-controls="tables">
<div class="card-title m-0">
<h3 class="fw-bolder m-0">Liste des paramètres</h3>
</div>
</div>
<!--begin::Card header-->
<!--begin::Content-->
<div id="list_parametres_out" class="collapse show">
<!--begin::Form-->
<form class="form" action="" method="post">
<!--begin::Card body-->
<div class="card-body border-top px-9 py-9">
<?php
foreach($parameters as $parameter) {
if($parameter['info_function_parameter_target'] == "in")
continue;
?>
<!--begin::Option-->
<label class="form-check form-check-custom form-check-solid align-items-start">
<!--begin::Input-->
<input class="form-check-input me-3" type="checkbox" name="parameters[]" value="<?= $parameter['idInfoFunctionParameter']?>" />
<!--end::Input-->
<!--begin::Label-->
<span class="form-check-label d-flex flex-column align-items-start">
<span class="fw-bolder fs-5 mb-0"><?= $parameter['info_function_parameter_description']?></span>
<span class="text-muted fs-6"><?= $parameter['info_function_parameter_name'] . ' [ '.(($parameter['info_function_parameter_mandatory'] == 1) ? "*" : "" ).''.$parameter['info_function_parameter_type'].' ]'?></span>
</span>
<!--end::Label-->
</label>
<!--end::Option-->
<!--begin::Option-->
<div class="separator separator-dashed my-6"></div>
<!--end::Option-->
<?php
}
?>
</div>
<!--end::Card body-->
<!--begin::Card footer-->
<div class="card-footer d-flex justify-content-end py-6 px-9">
<button class="btn btn-danger px-6" type="submit" name="delete-parameters">Supprimer les paramètres sélectionnés</button>
</div>
<!--end::Card footer-->
</form>
<!--end::Form-->
</div>
<!--end::Content-->
</div>
<!--end::Card-->
</form>
</div>
<!--end:::Tab pane-->
<!--begin:::Tab pane-->
<div class="tab-pane fade" id="edit" role="tabpanel">
<form method="post" action="">
<!--begin::Card-->
<div class="card card-flush mb-6 mb-xl-9">
<!--begin::Card body-->
<div class="card-body border-top p-9">
<!--begin::Input group-->
<div class="row mb-6">
<!--begin::Label-->
<label class="col-lg-4 col-form-label required fw-bold fs-6">Description</label>
<!--end::Label-->
<!--begin::Col-->
<div class="col-lg-8 fv-row">
<textarea class="form-control form-control-lg form-control-solid" name="info_function_description"><?= $function['info_function_description']?></textarea>
</div>
<!--end::Col-->
</div>
<!--end::Input group-->
</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-function">Enregistrer</button>
</div>
<!--end::Actions-->
</div>
<!--end::Card-->
</form>
</div>
<!--end:::Tab pane-->
</div>
<!--end:::Tab content-->
</div>
<!--end::Content-->
</div>
<!--end::Layout-->
</div>
<!--end::Container-->
</div>