Files
mareike/app/Models/User.php

126 lines
3.1 KiB
PHP

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
/**
* @property int $id
* @property string $username
* @property string $local_group
* @property string $firstname
* @property string $nickname
* @property string $lastname
* @property string $membership_id
* @property string $address_1
* @property string $address_2
* @property string $postcode
* @property string $city
* @property string $email
* @property string $phone
* @property string $birthday
* @property string $medications
* @property string $allergies
* @property string $intolerances
* @property string $eating_habits
* @property string $swimming_permission
* @property string $first_aid_permission
* @property string $bank_account_owner
* @property string $bank_account_iban
* @property string $password
* @property boolean $active
* @property string $user_role_main
* @property string $user_role_local_group
* @property string $activation_token
* @property string $activation_token_expires_at
*/
class User extends Authenticatable
{
use Notifiable;
/**
* The attributes that are mass assignable.
*
* @var list<string>
*/
protected $fillable = [
'user_role_main',
'user_role_local_group',
'activation_token',
'activation_token_expires_at',
'username',
'local_group',
'firstname',
'nickname',
'lastname',
'membership_id',
'address_1',
'address_2',
'postcode',
'city',
'email',
'phone',
'birthday',
'medications',
'allergies',
'intolerances',
'eating_habits',
'swimming_permission',
'first_aid_permission',
'$bank_account_owner',
'bank_account_iban',
'password',
'active',
];
/**
* The attributes that should be hidden for serialization.
*
* @var list<string>
*/
protected $hidden = [
'remember_token',
];
/**
* Get the attributes that should be cast.
*
* @return array<string, string>
*/
protected function casts(): array
{
return [
'password' => 'hashed',
];
}
public function getOfficialName() : string {
return sprintf('%1$s %2$s', $this->firstname, $this->lastname);
}
public function getFullname() : string {
return sprintf('%1$1s %2$s %3$s',
$this->firstname,
$this->lastname,
$this->nickname !== null ? '(' . $this->nickname . ')' : '',
)
|>trim(...);
}
public function getNicename() : string {
return $this->nickname ?? $this->firstname;
}
public function localGroup() : Tenant {
return $this->belongsTo(Tenant::class, 'local_group', 'slug')->first();
}
public function costUnits()
{
return $this->belongsToMany(CostUnit::class, 'cost_unit_treasurers', 'user_id', 'cost_unit_id')
->withTimestamps();
}
}