Browse Source

Refactor birthday query

pull/45/head
Nafies Luthfi 6 years ago
parent
commit
088e12f86d
  1. 27
      app/Http/Controllers/BirthdayController.php

27
app/Http/Controllers/BirthdayController.php

@ -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;
}
}
Loading…
Cancel
Save