this repo has no description
at master 3.9 kB view raw
1<?php 2 3namespace App\Models; 4 5// use Illuminate\Contracts\Auth\MustVerifyEmail; 6use Illuminate\Database\Eloquent\Factories\HasFactory; 7use Illuminate\Foundation\Auth\User as Authenticatable; 8use Illuminate\Notifications\Notifiable; 9use Laravel\Sanctum\HasApiTokens; 10 11/** 12 * @property int $id 13 * @property string $name 14 * @property string $email 15 * @property \Illuminate\Support\Carbon|null $email_verified_at 16 * @property string $password 17 * @property string|null $remember_token 18 * @property \Illuminate\Support\Carbon|null $created_at 19 * @property \Illuminate\Support\Carbon|null $updated_at 20 * @property-read \Illuminate\Notifications\DatabaseNotificationCollection<int, \Illuminate\Notifications\DatabaseNotification> $notifications 21 * @property-read int|null $notifications_count 22 * @method static \Database\Factories\UserFactory factory($count = null, $state = []) 23 * @method static \Illuminate\Database\Eloquent\Builder<static>|User newModelQuery() 24 * @method static \Illuminate\Database\Eloquent\Builder<static>|User newQuery() 25 * @method static \Illuminate\Database\Eloquent\Builder<static>|User query() 26 * @method static \Illuminate\Database\Eloquent\Builder<static>|User whereCreatedAt($value) 27 * @method static \Illuminate\Database\Eloquent\Builder<static>|User whereEmail($value) 28 * @method static \Illuminate\Database\Eloquent\Builder<static>|User whereEmailVerifiedAt($value) 29 * @method static \Illuminate\Database\Eloquent\Builder<static>|User whereId($value) 30 * @method static \Illuminate\Database\Eloquent\Builder<static>|User whereName($value) 31 * @method static \Illuminate\Database\Eloquent\Builder<static>|User wherePassword($value) 32 * @method static \Illuminate\Database\Eloquent\Builder<static>|User whereRememberToken($value) 33 * @method static \Illuminate\Database\Eloquent\Builder<static>|User whereUpdatedAt($value) 34 * @mixin \Eloquent 35 */ 36class User extends Authenticatable 37{ 38 /** @use HasFactory<\Database\Factories\UserFactory> */ 39 use HasFactory, Notifiable, HasApiTokens; 40 41 /** 42 * The attributes that are mass assignable. 43 * 44 * @var list<string> 45 */ 46 protected $fillable = ["firstname", "lastname", "pin", "email", "password"]; 47 48 /** 49 * The attributes that should be hidden for serialization. 50 * 51 * @var list<string> 52 */ 53 protected $hidden = ["password", "remember_token"]; 54 55 /** 56 * Get the attributes that should be cast. 57 * 58 * @return array<string, string> 59 */ 60 protected function casts(): array 61 { 62 return [ 63 "email_verified_at" => "datetime", 64 "password" => "hashed", 65 ]; 66 } 67 68 public function userAccounts() 69 { 70 return $this->hasMany(UserAccount::class); 71 } 72 73 public function userInstitutionKeys() 74 { 75 return $this->hasMany(UserInstitutionKey::class); 76 } 77 78 public function mappedUserInstitutionKeys() 79 { 80 $rawInstitutionKeys = $this->userInstitutionKeys()->with('institution')->get(); 81 82 $keys = []; 83 foreach ($rawInstitutionKeys as $key) { 84 if (!isset($keys[$key->institution->slug])) { 85 $keys[$key->institution->slug] = []; 86 } 87 if (!isset($keys[$key->institution->slug][$key->institution->type])) { 88 $keys[$key->institution->slug][$key->institution->type] = []; 89 } 90 $keys[$key->institution->slug][$key->institution->type][$key->institution->country_code] = $key; 91 } 92 93 return $keys; 94 } 95 96 public function getKeyForInstitution(Institution $institution) 97 { 98 return $this->userInstitutionKeys() 99 ->where("institution_id", $institution->id) 100 ->first(); 101 } 102 103 public function accounts() 104 { 105 return $this->belongsToMany( 106 Account::class, 107 "user_accounts", 108 )->withTimestamps(); 109 } 110}