forked from eatvio/eatvio-infra
55 lines
1.3 KiB
PHP
55 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace App\Livewire\Profile;
|
|
|
|
use App\Models\User;
|
|
use App\Models\UserDetailz;
|
|
use Illuminate\Contracts\View\Factory as ViewFactory;
|
|
use Illuminate\Contracts\View\View;
|
|
use Livewire\Component;
|
|
|
|
class DescriptionForm extends Component
|
|
{
|
|
public string $description = '';
|
|
|
|
public User $user;
|
|
|
|
public function mount(): void
|
|
{
|
|
$this->initDetailzIfNeeded();
|
|
$this->description = $this->user->detailz->additional_info ?? '';
|
|
}
|
|
|
|
public function updatedDescription(mixed $value): void
|
|
{
|
|
$userDetailz = $this->user->detailz;
|
|
|
|
$userDetailz->additional_info = $value;
|
|
$userDetailz->save();
|
|
}
|
|
|
|
public function render(): View|ViewFactory
|
|
{
|
|
return view('livewire.profile.description-form');
|
|
}
|
|
|
|
private function initDetailzIfNeeded(): void
|
|
{
|
|
$curUserDetailez = UserDetailz::firstOrNew(
|
|
['user_id' => $this->user->id],
|
|
[
|
|
'about_alergy' => '',
|
|
'about_taking_pils' => '',
|
|
'about_sport_hobbies' => '',
|
|
'favorite_foods' => '',
|
|
'unfavorite_foods' => '',
|
|
'additional_info' => '',
|
|
]
|
|
);
|
|
|
|
if (! $curUserDetailez->id) {
|
|
$curUserDetailez->save();
|
|
}
|
|
}
|
|
}
|