pageTitle;
$session = session();
$user_id = $session->get('user');
$data['id'] = $user_id['id'];
$data['user_role'] = $user_id['group_name'];
$Products = new Products();
$Users = new Users();
$Stores = new Stores();
$data['moto'] = $Products->getActiveProductData();
$data['users'] = $Users->getUsers();
$data['stores'] = $Stores->getActiveStore();
return $this->render_template('mecanicien/index', $data);
}
public function fetchmecanicienSingle($id)
{
if ($id) {
$Mecanicien = new Mecanicien();
$data = $Mecanicien->getReparationSingle($id);
echo json_encode($data);
}
}
/**
* ✅ MODIFIÉ : Utilise mecanic_id au lieu de store_id
*/
public function fetchMecanicien()
{
$Mecanicien = new Mecanicien();
$session = session();
$user_id = $session->get('user');
// ✅ RÉCUPÉRER LES PARAMÈTRES DE FILTRE
$startDate = $this->request->getGet('startDate');
$endDate = $this->request->getGet('endDate');
$mecanicId = $this->request->getGet('mecanic_id'); // ✅ CHANGÉ: store_id → mecanic_id
log_message('debug', '=== FILTRES RÉPARATIONS ===');
log_message('debug', 'startDate: ' . ($startDate ?? 'vide'));
log_message('debug', 'endDate: ' . ($endDate ?? 'vide'));
log_message('debug', 'mecanic_id: ' . ($mecanicId ?? 'vide'));
$data['id'] = $user_id['id'];
// ✅ UTILISER LA MÉTHODE AVEC FILTRES (mecanicId au lieu de storeId)
$reparation = $Mecanicien->getReparationWithFilters($data['id'], $startDate, $endDate, $mecanicId);
$result = ['data' => []];
foreach ($reparation as $key => $repa) {
$buttons = '';
if (in_array('updateMecanicien', $this->permission)) {
$buttons .= '';
}
if (in_array('deleteMecanicien', $this->permission)) {
$buttons .= ' ';
}
$image = '
';
$produit = $repa['name'] . ' (' . $repa['sku'] . ')';
$status = '';
if ($repa['reparation_statut'] == 1) {
$status = 'En cours';
} elseif ($repa['reparation_statut'] == 2) {
$status = 'Réparer';
} else {
$status = 'Non réparer';
}
$username = $repa['firstname'] . ' ' . $repa['lastname'];
$observation = $repa['reparation_observation'];
$date_debut = date("d/m/Y", strtotime($repa['reparation_debut']));
$date_fin = date("d/m/Y", strtotime($repa['reparation_fin']));
$storeName = $repa['store_name'] ?? 'N/A';
$result['data'][$key] = [
$image,
$produit,
$username, // Index 2 - Mécanicien
$storeName, // Index 3 - Magasin
$status, // Index 4 - Statut (utilisé pour les stats)
$observation,
$date_debut,
$date_fin,
$buttons
];
}
log_message('debug', '📊 Nombre de réparations trouvées: ' . count($result['data']));
return $this->response->setJSON($result);
}
public function create()
{
$this->verifyRole('createMecanicien');
$response = [];
$data = [];
$validation = \Config\Services::validation();
$validation->setRules([
'motos' => 'required',
'mecano' => 'required',
'statut' => 'required',
'observation' => 'required',
'date_debut' => 'required',
'date_fin' => 'required',
]);
$validationData = [
'motos' => $this->request->getPost('motos'),
'mecano' => $this->request->getPost('mecano'),
'statut' => $this->request->getPost('statut'),
'observation' => $this->request->getPost('observation'),
'date_debut' => $this->request->getPost('date_debut'),
'date_fin' => $this->request->getPost('date_fin'),
];
if ($validation->run($validationData)) {
$productModel = new \App\Models\Products();
$product = $productModel->find($this->request->getPost('motos'));
$storeId = $product['store_id'] ?? null;
$data = [
'user_id' => $this->request->getPost('mecano'),
'produit_id' => $this->request->getPost('motos'),
'reparation_observation' => $this->request->getPost('observation'),
'reparation_statut' => $this->request->getPost('statut'),
'reparation_debut' => $this->request->getPost('date_debut'),
'reparation_fin' => $this->request->getPost('date_fin'),
'store_id' => $storeId,
];
$Mecanicien = new Mecanicien();
if ($Mecanicien->createRepation($data)) {
$response['success'] = true;
$response['messages'] = 'Créé avec succès';
} else {
$response['success'] = false;
$response['messages'] = 'Erreur de base de données';
}
} else {
$response['success'] = false;
$response['messages'] = $validation->getErrors();
}
return $this->response->setJSON($response);
}
public function delete()
{
$this->verifyRole('deleteMecanicien');
$response = [];
$reparation_id = $this->request->getPost('reparation_id');
if ($reparation_id) {
$Mecanicien = new Mecanicien();
if ($Mecanicien->delete($reparation_id)) {
$response['success'] = true;
$response['messages'] = "Supprimé avec succès";
} else {
$response['success'] = false;
$response['messages'] = "Erreur dans la base de données lors de la suppression";
}
} else {
$response['success'] = false;
$response['messages'] = "Référez à nouveau la page !!";
}
return $this->response->setJSON($response);
}
public function update(int $id)
{
$this->verifyRole('updateMecanicien');
$response = [];
if ($id) {
$validation = \Config\Services::validation();
$validation->setRules([
'motos' => 'required',
'mecano' => 'required',
'statut' => 'required',
'observation' => 'required',
'date_debut' => 'required',
'date_fin' => 'required',
]);
$validationData = [
'motos' => $this->request->getPost('motos'),
'mecano' => $this->request->getPost('mecano'),
'statut' => $this->request->getPost('statut'),
'observation' => $this->request->getPost('observation'),
'date_debut' => $this->request->getPost('date_debut'),
'date_fin' => $this->request->getPost('date_fin'),
];
$Mecanicien = new Mecanicien();
if ($validation->run($validationData)) {
$productModel = new \App\Models\Products();
$product = $productModel->find($this->request->getPost('motos'));
$storeId = $product['store_id'] ?? null;
$data = [
'user_id' => $this->request->getPost('mecano'),
'produit_id' => $this->request->getPost('motos'),
'reparation_statut' => (int) $this->request->getPost('statut'),
'reparation_observation' => $this->request->getPost('observation'),
'reparation_debut' => $this->request->getPost('date_debut'),
'reparation_fin' => $this->request->getPost('date_fin'),
'store_id' => $storeId,
];
if ($Mecanicien->updateReparation($data, $id)) {
$response['success'] = true;
$response['messages'] = 'Mise à jour réussie';
} else {
$response['success'] = false;
$response['messages'] = 'Erreur dans la base de données';
}
} else {
$response['success'] = false;
$response['messages'] = $validation->getErrors();
}
} else {
$response['success'] = false;
$response['messages'] = 'Erreur, veuillez actualiser la page à nouveau !!';
}
return $this->response->setJSON($response);
}
/**
* ✅ MODIFIÉ : Utilise mecanic_id au lieu de pvente
*/
public function fetchMecanicienPerformances()
{
$Mecanicien = new Mecanicien();
$session = session();
$users = $session->get('user');
// ✅ RÉCUPÉRER LES PARAMÈTRES DE FILTRE
$startDate = $this->request->getGet('startDate');
$endDate = $this->request->getGet('endDate');
$mecanicId = $this->request->getGet('mecanic_id'); // ✅ CHANGÉ: pvente → mecanic_id
log_message('debug', '=== FILTRES PERFORMANCES MÉCANICIEN ===');
log_message('debug', 'startDate: ' . ($startDate ?? 'vide'));
log_message('debug', 'endDate: ' . ($endDate ?? 'vide'));
log_message('debug', 'mecanic_id: ' . ($mecanicId ?? 'vide'));
$data['id'] = $users['id'];
// ✅ PASSER LES FILTRES AU MODÈLE (mecanicId au lieu de pvente)
$reparation = $Mecanicien->getReparationWithFilters($data['id'], $startDate, $endDate, $mecanicId);
$result = ['data' => []];
if($users['group_name'] == "SuperAdmin" || $users['group_name'] == "Direction" || $users['group_name'] == "DAF"){
foreach ($reparation as $key => $repa) {
$image = '
';
$produit = esc($repa['name']);
$first_name = esc($repa['firstname']);
$last_name = esc($repa['lastname']);
$user_name = $first_name . ' ' . $last_name;
$date_debut = date("d/m/Y", strtotime($repa['reparation_debut']));
$date_fin = date("d/m/Y", strtotime($repa['reparation_fin']));
$storeName = $repa['store_name'] ?? 'N/A';
$result['data'][$key] = [
$user_name,
$image,
$produit,
$repa['sku'],
$storeName,
$date_debut,
$date_fin,
];
}
} else {
foreach ($reparation as $key => $repa) {
$image = '
';
$produit = $repa['name'];
$username = $repa['username'];
$date_debut = date("d/m/Y", strtotime($repa['reparation_debut']));
$date_fin = date("d/m/Y", strtotime($repa['reparation_fin']));
$storeName = $repa['store_name'] ?? 'N/A';
$result['data'][$key] = [
$image,
$produit,
$repa['sku'],
$storeName,
$date_debut,
$date_fin,
];
}
}
log_message('debug', '📊 Nombre de réparations (performances) trouvées: ' . count($result['data']));
return $this->response->setJSON($result);
}
}