toby/app/Domain/VacationDaysCalculator.php
Adrian Hopek b161981d5a
#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>
2022-02-07 12:29:46 +01:00

43 lines
927 B
PHP

<?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;
}
}