|
Server IP : 10.128.40.6 / Your IP : 216.73.217.20 Web Server : Apache System : Linux webd006.cluster128.gra.hosting.ovh.net 5.15.206-ovh-vps-grsec-zfs-classid #1 SMP Fri May 15 02:41:25 UTC 2026 x86_64 User : logmcpe ( 111175) PHP Version : 7.3.33 Disable Function : _dyuweyrj4,_dyuweyrj4r,dl MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON Directory (0755) : /home/logmcpe/www/TEST/../TMCPRO/pages/feuillesroute/../ |
| [ Home ] | [ C0mmand ] | [ Upload File ] |
|---|
<?php
namespace App;
use App\DataTypes\DayWork;
class Repository
{
private $databaseWrapper;
public function __construct(DatabaseWrapper $databaseWrapper)
{
$this->databaseWrapper = $databaseWrapper;
}
public function getDayAvailable(): array
{
$mapDayOfWeek = [
'monday' => 1,
'tuesday' => 2,
'wednesday' => 3,
'thursday' => 4,
'friday' => 5,
'saturday' => 6,
'sunday' => 7,
];
$data = [];
// $stmt = $this->databaseWrapper->run("SELECT salarie_id, day_availability, heure_deb, heure_fin FROM disponibilite");
$stmt = $this->databaseWrapper->run("SELECT e.salarie_id, day_availability, heure_deb, heure_fin FROM disponibilite e , salarie s where e.salarie_id = s.salarie_id and salarie_statut = '1' ");
while ($row = $stmt->fetch()) {
$row['day_of_week_number'] = $mapDayOfWeek[$row['day_availability']];
$data[$row['salarie_id']][$row['day_of_week_number']][] = $row;
}
return $data;
}
public function formatPrestation($stmt): array
{
$data_prestation_jour = [];
while ($row = $stmt->fetch()) {
$data_prestation_jour[$row['salarie_id']][$row['date']][] = $row;
}
return $data_prestation_jour;
}
public function formatAbsence($stmt): array
{
$data_absence = [];
$skip_days = [];
while ($row = $stmt->fetch()) {
// if($row['salarie_id']==3228){
// echo "<pre>";
// print_r($row) ;
// echo "</pre>";
// echo " start_date ==>".$row['start_date']."<br>" ;
// echo " end_date ==>".$row['end_date']."<br>" ;
if ($row['start_date'] == $row['end_date']) {
$data_absence[$row['salarie_id']][$row['start_date']][] = [$row['start_time'], $row['end_time']];
} else {
$data_absence[$row['salarie_id']][$row['start_date']][] = [$row['start_time'], '24:00:00'];
$data_absence[$row['salarie_id']][$row['end_date']][] = ['00:00:00', $row['end_time']];
$nextDay = date("Y-m-d", strtotime($row['start_date']));
$lastDay = date("Y-m-d", strtotime($row['end_date'] . "+1 day"));
// echo "==========>".$nextDay."<br/>" ;
$start_timestamp = strtotime($nextDay);
$end_timestamp = strtotime($lastDay);
if ($row['end_date'] != $nextDay) {
for ($timestamp = $start_timestamp; $timestamp <= $end_timestamp; $timestamp += 86400) {
$skip_days[$row['salarie_id']][] = date('Y-m-d', $timestamp);
}
if (isset($skip_days[$row['salarie_id']]) && $skip_days[$row['salarie_id']]) {
array_pop($skip_days[$row['salarie_id']]);
}
}
}
// }
}
return [$data_absence, $skip_days];
}
public function getDataByDate(string $startDate, string $endDate): array
{
$stmt = $this->databaseWrapper->run("SELECT prestation_jour_id, date_jour as `date`, salarie_id ,heure_debut,heure_fin,duree FROM prestation_jour WHERE `date_jour` >= ? AND `date_jour` < ? ORDER BY heure_debut ASC", [$startDate, $endDate]);
return $this->formatPrestation($stmt);
}
public function getAbsenceByDate(string $startDate, string $endDate, ?array $userIds = null): array
{
// $startDate = "20231101" ;
// $endDate = "20231201" ;
if ($userIds) {
$userIdsImploded = implode(',', $userIds);
$stmt = $this->databaseWrapper->run("SELECT salarie_id, start_absence, end_absence, DATE(start_absence) as start_date, DATE(end_absence) as end_date, TIME(start_absence) as start_time, TIME(end_absence) as end_time FROM salarie_absence WHERE `salarie_absence_date_debut` <= ? AND `salarie_absence_date_fin` >= ? AND salarie_id IN (?) ORDER BY salarie_absence_date_debut ASC", [$endDate, $startDate, $userIdsImploded]);
} else {
$stmt = $this->databaseWrapper->run("SELECT salarie_id, start_absence, end_absence, DATE(start_absence) as start_date, DATE(end_absence) as end_date, TIME(start_absence) as start_time, TIME(end_absence) as end_time FROM salarie_absence WHERE `salarie_absence_date_debut` <= ? AND `salarie_absence_date_fin` >= ? ORDER BY salarie_absence_date_debut ASC", [$endDate, $startDate]);
}
// echo "<pre>" ;
// print_r($this->formatAbsence($stmt)) ;
// echo "</pre>" ;
return $this->formatAbsence($stmt);
}
public function getDataByDateAndEtablis(string $startDate, string $endDate, int $etablissementId): array
{
$stmt = $this->databaseWrapper->run("SELECT prestation_jour_id, date_jour as `date`, salarie_id ,heure_debut,heure_fin,duree FROM prestation_jour WHERE `date_jour` >= ? AND `date_jour` < ? AND etablissement_id = ? ORDER BY heure_debut ASC", [$startDate, $endDate, $etablissementId]);
return $this->formatPrestation($stmt);
}
public function getEtablissements(): array
{
return $this->databaseWrapper->run("SELECT * FROM etablissement")->fetchAll();
}
}