AnonSec Team
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  ]

Current File : /home/logmcpe/www/TEST/../TMCPRO/pages/feuillesroute/../Repository.php
<?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();
    }
}

AnonSec - 2021