$notifications * @property-read int|null $notifications_count * @method static \Database\Factories\UserFactory factory($count = null, $state = []) * @method static \Illuminate\Database\Eloquent\Builder|User newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|User newQuery() * @method static \Illuminate\Database\Eloquent\Builder|User query() * @method static \Illuminate\Database\Eloquent\Builder|User whereCreatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|User whereEmail($value) * @method static \Illuminate\Database\Eloquent\Builder|User whereEmailVerifiedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|User whereId($value) * @method static \Illuminate\Database\Eloquent\Builder|User whereName($value) * @method static \Illuminate\Database\Eloquent\Builder|User wherePassword($value) * @method static \Illuminate\Database\Eloquent\Builder|User whereRememberToken($value) * @method static \Illuminate\Database\Eloquent\Builder|User whereUpdatedAt($value) * @mixin \Eloquent */ class User extends Authenticatable { /** @use HasFactory<\Database\Factories\UserFactory> */ use HasFactory, Notifiable, HasApiTokens; /** * The attributes that are mass assignable. * * @var list */ protected $fillable = ["firstname", "lastname", "pin", "email", "password"]; /** * The attributes that should be hidden for serialization. * * @var list */ protected $hidden = ["password", "remember_token"]; /** * Get the attributes that should be cast. * * @return array */ protected function casts(): array { return [ "email_verified_at" => "datetime", "password" => "hashed", ]; } public function userAccounts() { return $this->hasMany(UserAccount::class); } public function userInstitutionKeys() { return $this->hasMany(UserInstitutionKey::class); } public function mappedUserInstitutionKeys() { $rawInstitutionKeys = $this->userInstitutionKeys()->with('institution')->get(); $keys = []; foreach ($rawInstitutionKeys as $key) { if (!isset($keys[$key->institution->slug])) { $keys[$key->institution->slug] = []; } if (!isset($keys[$key->institution->slug][$key->institution->type])) { $keys[$key->institution->slug][$key->institution->type] = []; } $keys[$key->institution->slug][$key->institution->type][$key->institution->country_code] = $key; } return $keys; } public function getKeyForInstitution(Institution $institution) { return $this->userInstitutionKeys() ->where("institution_id", $institution->id) ->first(); } public function accounts() { return $this->belongsToMany( Account::class, "user_accounts", )->withTimestamps(); } }