refactor: moved user eligibility check

Additionally, deprecated the ApplicationEligibility middleware
This commit is contained in:
Miguel Nogueira 2022-09-01 23:14:13 +01:00
parent 43e6859366
commit b96a20a0a9
No known key found for this signature in database
GPG Key ID: 3C6A7E29AF26D370
2 changed files with 23 additions and 6 deletions

View File

@ -22,6 +22,7 @@
namespace App\Http\Middleware; namespace App\Http\Middleware;
use App\Application; use App\Application;
use App\User;
use Carbon\Carbon; use Carbon\Carbon;
use Closure; use Closure;
use Exception; use Exception;
@ -35,6 +36,8 @@ class ApplicationEligibility
/** /**
* Handle an incoming request. * Handle an incoming request.
* *
* @deprecated Deprecated in 0.9.0
* @see User::isEligible()
* @param Request $request * @param Request $request
* @param Closure $next * @param Closure $next
* @return mixed * @return mixed

View File

@ -29,7 +29,10 @@ use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable; use Illuminate\Notifications\Notifiable;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Crypt; use Illuminate\Support\Facades\Crypt;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\View;
use Mpociot\Teamwork\Traits\UserHasTeams; use Mpociot\Teamwork\Traits\UserHasTeams;
use Spatie\Permission\Traits\HasRoles; use Spatie\Permission\Traits\HasRoles;
@ -116,7 +119,23 @@ class User extends Authenticatable implements MustVerifyEmail
return $this->hasMany('App\Absence', 'requesterID'); return $this->hasMany('App\Absence', 'requesterID');
} }
// UTILITY LOGIC
public function isEligible(): bool {
$eligible = false;
$lastApplication = Application::where('applicantUserID', $this->id)->latest()->first();
if (is_null($lastApplication)) {
$eligible = true;
}
if ($lastApplication->created_at->diffInMonths(now()) > 1 && in_array($lastApplication->applicationStatus, ['DENIED', 'APPROVED'])) {
$eligible = true;
}
return $eligible;
}
public function isVerified(): bool { public function isVerified(): bool {
return !is_null($this->email_verified_at); return !is_null($this->email_verified_at);
@ -173,9 +192,4 @@ class User extends Authenticatable implements MustVerifyEmail
return !is_null($this->discord_token) && !is_null($this->discord_refresh_token); return !is_null($this->discord_token) && !is_null($this->discord_refresh_token);
} }
public function routeNotificationForSlack($notification)
{
return config('slack.webhook.integrationURL');
}
} }