Skip to main content

Black Friday 2025! Only until December 1st: coupon FRIDAY25 for 40% off Yearly/Lifetime membership!

Read more here

officelifehq/officelife

942 stars
2 code files
View officelifehq/officelife on GitHub

app/Helpers/BirthdayHelper.php

Open in GitHub
use Carbon\Carbon;
 
class BirthdayHelper
{
//
public static function isBirthdayInXDays(Carbon $startDate, Carbon $birthdate, int $numberOfDays): bool
{
$future = $startDate->copy()->addDays($numberOfDays);
$birthdate->year = $startDate->year;
 
if ($birthdate->isPast()) {
return false;
}
 
return $birthdate->lessThanOrEqualTo($future) && $future->greaterThanOrEqualTo($startDate);
}
//
}

app/Http/ViewHelpers/Team/TeamShowViewHelper.php

Open in GitHub
use Carbon\Carbon;
use App\Models\Company\Team;
use App\Helpers\BirthdayHelper;
use App\Models\Company\Company;
 
class TeamShowViewHelper
{
//
public static function birthdays(Team $team, Company $company): array
{
$employees = $team->employees()
->whereNotNull('employees.birthdate')
->where('employees.locked', false)
->get();
 
// build the collection of data
$birthdaysCollection = collect([]);
$now = Carbon::now();
 
foreach ($employees as $employee) {
if (! $employee->birthdate) {
continue;
}
 
if (BirthdayHelper::isBirthdayInXDays($now, $employee->birthdate, 30)) {
$birthdaysCollection->push([
'id' => $employee->id,
'url' => route('employees.show', [
'company' => $company,
'employee' => $employee,
]),
'name' => $employee->name,
'avatar' => ImageHelper::getAvatar($employee, 35),
'birthdate' => DateHelper::formatMonthAndDay($employee->birthdate),
'sort_key' => Carbon::createFromDate($now->year, $employee->birthdate->month, $employee->birthdate->day)->format('Y-m-d'),
]);
}
}
 
$birthdaysCollection = $birthdaysCollection->sortBy('sort_key')->values()->all();
 
return $birthdaysCollection;
}
//
}

We'd Love Your Feedback

Tell us what you like or what we can improve

Feel free to share anything you like or dislike about this page or the platform in general.