forked from eatvio/eatvio-infra
54 lines
1.7 KiB
PHP
54 lines
1.7 KiB
PHP
<?php
|
|
|
|
namespace App\Services\Auth;
|
|
|
|
use App\Http\Requests\Auth\RegisterRequest;
|
|
use App\Models\CircumferenceMeasure;
|
|
use App\Models\User;
|
|
use App\Models\UserDetailz;
|
|
use Illuminate\Support\Facades\Hash;
|
|
|
|
/**
|
|
* Class RegisterService.
|
|
*/
|
|
class RegisterService
|
|
{
|
|
public function registerCommand(RegisterRequest $request): void
|
|
{
|
|
$newUser = User::create([
|
|
'name' => $request->first_name,
|
|
'email' => $request->email,
|
|
'password' => Hash::make($request->password),
|
|
]);
|
|
|
|
UserDetailz::create($this->buildUserDetailz($request, $newUser));
|
|
|
|
CircumferenceMeasure::create([
|
|
'user_id' => $newUser->id,
|
|
'chest_circumference' => $request->chest_circumference,
|
|
'waist_circumference' => $request->waist_circumference,
|
|
'hip_circumference' => $request->hip_circumference,
|
|
]);
|
|
}
|
|
|
|
private function buildUserDetailz(RegisterRequest $request, User $newUser): array
|
|
{
|
|
$userDetailzData = [];
|
|
|
|
$fields = [
|
|
'first_name', 'last_name', 'birthdate', 'gender', 'country', 'city', 'lang', 'weight', 'height',
|
|
'chest_circumference', 'waist_circumference', 'hip_circumference', 'blood_pressure_up', 'blood_pressure_down',
|
|
'has_hypo', 'has_hyper', 'about_alergy', 'about_taking_pils', 'about_sport_hobbies', 'favorite_foods',
|
|
'unfavorite_foods', 'additional_info', 'is_mood_fillable', 'is_bedtime_fillable',
|
|
];
|
|
|
|
foreach ($fields as $field) {
|
|
$userDetailzData[$field] = $request->{$field};
|
|
}
|
|
|
|
$userDetailzData['user_id'] = $newUser->id;
|
|
|
|
return $userDetailzData;
|
|
}
|
|
}
|