Files
eatvio-infra/app/Services/Auth/RegisterService.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;
}
}