You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

112 lines
4.7 KiB

<?php
namespace App\Models;
use CodeIgniter\Model;
class Mecanicien extends Model
{
/**
* table name
* @var string
*/
protected $table = 'reparations';
protected $primaryKey = 'reparation_id'; // Primary key of your table
protected $allowedFields = ['user_id', 'produit_id', 'reparation_statut', 'reparation_observation', 'reparation_debut', 'reparation_fin']; // Fields allowed for insert/update
protected $useTimestamps = false; // Set to true if your table has `created_at` and `updated_at` columns
public function createRepation(array $data)
{
return $this->insert($data);
}
public function getReparation(int $id = null)
{
$session = session();
$user = $session->get('user');
if ($user['group_name'] == "SuperAdmin" || $user['group_name'] == "Direction") {
$reparation = $this->select('reparations.reparation_id as reparationsID, reparations.user_id, reparations.reparation_statut, reparations.produit_id, reparations.reparation_observation, reparations.reparation_debut, reparations.reparation_fin, users.*, products.*')
->join('users', 'reparations.user_id = users.id')
->join('products', 'reparations.produit_id = products.id')
->findAll();
} else {
if ($id !== null) {
$reparation = $this->select('reparations.reparation_id as reparationsID, reparations.user_id, reparations.reparation_statut, reparations.produit_id, reparations.reparation_observation, reparations.reparation_debut, reparations.reparation_fin, users.*, products.*')
->join('users', 'reparations.user_id = users.id')
->join('products', 'reparations.produit_id = products.id')
->where('users.id', $id)
->findAll();
} else {
$reparation = [];
}
}
return $reparation;
}
public function getReparationSingle(int $id)
{
$reparation = $this->select('reparations.reparation_id as reparationsID, reparations.user_id, reparations.reparation_statut, reparations.reparation_statut, reparations.produit_id, reparations.reparation_observation, reparations.reparation_debut, reparations.reparation_fin, users.*, products.*')
->join('users', 'reparations.user_id = users.id')
->join('products', 'reparations.produit_id = products.id')
->where('reparations.reparation_id', $id)
->first();
// return $this->where('user_id', $id)->findAll();
return $reparation;
}
public function updateReparation(array $data, int $id)
{
return $this->update($id, $data);
}
public function deleteReparation(int $id)
{
return $this->delete($id);
}
public function getTotalReparationPerStatut(){
return $this->db->table('reparation')
->select('COUNT(*) as total')
->where('reparation_statut', 2)
->get()
->getRow();
}
public function getReparationWithFilters(int $id = null, $startDate = null, $endDate = null, $pvente = null)
{
$session = session();
$user = $session->get('user');
$builder = $this->select('reparations.reparation_id as reparationsID, reparations.user_id, reparations.reparation_statut, reparations.produit_id, reparations.reparation_observation, reparations.reparation_debut, reparations.reparation_fin, users.*, products.*, stores.name as store_name')
->join('users', 'reparations.user_id = users.id')
->join('products', 'reparations.produit_id = products.id')
->join('stores', 'products.store_id = stores.id', 'left'); // ✅ JOINTURE AVEC MAGASINS
// Filtre par utilisateur si pas admin
if ($user['group_name'] != "SuperAdmin" && $user['group_name'] != "Direction" && $user['group_name'] != "DAF") {
$builder->where('users.id', $id);
}
// ✅ APPLIQUER LES FILTRES PAR DATE
if (!empty($startDate) && !empty($endDate)) {
$builder->where('DATE(reparations.reparation_debut) >=', $startDate);
$builder->where('DATE(reparations.reparation_debut) <=', $endDate);
} elseif (!empty($startDate)) {
$builder->where('DATE(reparations.reparation_debut) >=', $startDate);
} elseif (!empty($endDate)) {
$builder->where('DATE(reparations.reparation_debut) <=', $endDate);
}
// ✅ FILTRE PAR POINT DE VENTE
if (!empty($pvente) && $pvente !== 'TOUS') {
$builder->where('stores.name', $pvente);
}
$builder->orderBy('reparations.reparation_debut', 'DESC');
return $builder->findAll();
}
}