|
|
|
@ -3,27 +3,28 @@ |
|
|
|
namespace App\Http\Controllers; |
|
|
|
|
|
|
|
use App\User; |
|
|
|
use Carbon\Carbon; |
|
|
|
use Illuminate\Support\Facades\DB; |
|
|
|
|
|
|
|
class BirthdayController extends Controller |
|
|
|
{ |
|
|
|
public function index() |
|
|
|
{ |
|
|
|
$userBirthdayQuery = User::whereNotNull('dob') |
|
|
|
->select('users.name', |
|
|
|
'users.dob', |
|
|
|
'users.id as user_id' |
|
|
|
); |
|
|
|
$users = $this->getUpcomingBirthdays(); |
|
|
|
|
|
|
|
return view('birthdays.index', compact('users')); |
|
|
|
} |
|
|
|
|
|
|
|
$currentMonth = Carbon::now()->format('m'); |
|
|
|
$nextMonth = Carbon::now()->addMonth()->format('m'); |
|
|
|
$userBirthdayQuery->whereIn(DB::raw("month(dob)"), [$currentMonth, $nextMonth]); |
|
|
|
private function getUpcomingBirthdays() |
|
|
|
{ |
|
|
|
$birthdayDateRaw = "concat(YEAR(CURDATE()), '-', RIGHT(dob, 5)) as birthday_date"; |
|
|
|
|
|
|
|
$userBirthdayQuery = User::whereNotNull('dob') |
|
|
|
->select('users.name', 'users.dob', 'users.id as user_id', DB::raw($birthdayDateRaw)) |
|
|
|
->orderBy('birthday_date', 'asc') |
|
|
|
->havingBetween('birthday_date', [today()->format('Y-m-d'), today()->addDays(60)->format('Y-m-d')]); |
|
|
|
|
|
|
|
$users = $userBirthdayQuery->get()->filter(function ($user) { |
|
|
|
return $user->birthday_remaining < 60 && $user->birthday_remaining >= 0; |
|
|
|
})->sortBy('birthday_remaining'); |
|
|
|
$users = $userBirthdayQuery->get(); |
|
|
|
|
|
|
|
return view('birthdays.index', compact('users', 'currentMonth', 'nextMonth')); |
|
|
|
return $users; |
|
|
|
} |
|
|
|
} |