#36 - validate vacation request (#47)

* #36 - wip

* #36 - wip

* #36 - wip

* #36 - added some translations

* #36 - fix

* #36 - fix

Co-authored-by: EwelinaLasowy <ewelina.lasowy@blumilk.pl>
This commit is contained in:
Adrian Hopek
2022-02-07 12:29:46 +01:00
committed by GitHub
parent 41c769d4ab
commit b161981d5a
28 changed files with 387 additions and 130 deletions

View File

@@ -0,0 +1,42 @@
<?php
declare(strict_types=1);
namespace Toby\Domain;
use Carbon\CarbonInterface;
use Carbon\CarbonPeriod;
use Illuminate\Support\Collection;
use Toby\Eloquent\Models\YearPeriod;
class VacationDaysCalculator
{
public function calculateDays(YearPeriod $yearPeriod, CarbonInterface $from, CarbonInterface $to): Collection
{
$period = CarbonPeriod::create($from, $to);
$holidays = $yearPeriod->holidays()->pluck("date");
$validDays = collect();
foreach ($period as $day) {
if ($this->passes($day, $holidays)) {
$validDays->add($day);
}
}
return $validDays;
}
protected function passes(CarbonInterface $day, Collection $holidays): bool
{
if ($day->isWeekend()) {
return false;
}
if ($holidays->contains($day)) {
return false;
}
return true;
}
}