name_prefix)) { $arr[] = $this->name_prefix; } $arr[] = $this->name; if (!empty($this->name_suffix)) { $arr[] = $this->name_suffix; } return implode(' ', $arr); } public function addresses() { return $this->morphMany(Address::class, 'addressable'); } public function currentAddress() { return $this->belongsTo(Address::class, 'main_address_id')->withDefault([ 'text' => '', ]); } public function domicileAddress() { return $this->belongsTo(Address::class, 'main_address_id'); } public function metas() { return $this->morphMany(Meta::class, 'metaable'); } public function owner() { return $this->belongsTo(User::class, 'owner_user_id'); } public function files() { return $this->morphMany(File::class, 'fileable'); } public function avatar() { return $this->morphOne(File::class, 'fileable')->where('type', 'avatar')->latestOfMany(); } public function families() { return $this->belongsToMany(Person::class, 'family_relations', 'owner_id', 'person_id')->withPivot(['relation_with_owner']); } public function familyOwner() { return $this->hasOne(Family::class, 'person_id'); } public function user() { return $this->hasOne(User::class, 'person_id'); } public function practitioner() { return $this->hasOne(Practitioner::class, 'person_id'); } public function appointmentParticipantables() { return $this->morphMany(AppointmentParticipant::class, 'participantable'); } public function member() { return $this->hasOne(Member::class); } public function setGenderAttribute($value) { if ($value == "M" || $value == "L") { return $this->attributes['gender'] = "male"; } else if ($value == "F" || $value == "P") { return $this->attributes['gender'] = "female"; } else { return $this->attributes['gender'] = $value; } } public function getGenderAttribute() { if ($this->attributes['gender'] == "male" || $this->attributes['gender'] == "L") { return "male"; } else if ($this->attributes['gender'] == "female" || $this->attributes['gender'] == "P") { return "female"; } else { return "other"; } } }