abdaf809f8
Auto Tag Develop / tag (push) Has been cancelled
| Numéro du ticket | Titre du ticket | |------------------|-----------------| | | | ## Description de la PR ## Modification du .env ## Check list - [x] Pas de régression - [x] TU/TI/TF rédigée - [x] TU/TI/TF OK - [x] CHANGELOG modifié Reviewed-on: #19 Co-authored-by: tristan <tristan@yuno.malio.fr> Co-committed-by: tristan <tristan@yuno.malio.fr>
28 lines
688 B
PHP
28 lines
688 B
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Service\Exercise;
|
|
|
|
use DateTimeImmutable;
|
|
|
|
final readonly class ExerciseYearResolver
|
|
{
|
|
/**
|
|
* Convert a date to its leave/RTT exercise year.
|
|
*
|
|
* - Forfait: calendar year (Jan→Dec) — returns $date.Y.
|
|
* - Non-forfait: leave year (Juin N-1 → Mai N) — returns $date.Y+1 if month >= 6, else $date.Y.
|
|
*/
|
|
public function forDate(DateTimeImmutable $date, bool $isForfait = false): int
|
|
{
|
|
if ($isForfait) {
|
|
return (int) $date->format('Y');
|
|
}
|
|
|
|
return (int) $date->format('n') >= 6
|
|
? (int) $date->format('Y') + 1
|
|
: (int) $date->format('Y');
|
|
}
|
|
}
|