feat: ations

This commit is contained in:
2026-05-17 13:28:02 +02:00
parent 1964b60949
commit 2b6a680d22
9 changed files with 302 additions and 18 deletions
+9
View File
@@ -80,6 +80,7 @@ class AuthController extends Controller
{
$user = $request->user();
$data = $request->validated();
$nutritionGoals = $data['nutritionGoals'] ?? null;
if ($request->hasFile('avatar')) {
if ($user->avatar_url) {
@@ -91,6 +92,14 @@ class AuthController extends Controller
}
unset($data['avatar']);
unset($data['nutritionGoals']);
if (is_array($nutritionGoals)) {
$data['daily_calorie_goal'] = $nutritionGoals['calories'];
$data['daily_protein_goal'] = $nutritionGoals['proteins'];
$data['daily_carbs_goal'] = $nutritionGoals['carbs'];
$data['daily_fats_goal'] = $nutritionGoals['fats'];
}
if (! empty($data)) {
$user->update($data);
+9
View File
@@ -15,6 +15,11 @@ class UpdateUserRequest extends FormRequest
{
return [
'avatar' => ['sometimes', 'nullable', 'image', 'max:2048'],
'nutritionGoals' => ['sometimes', 'array'],
'nutritionGoals.calories' => ['required_with:nutritionGoals', 'integer', 'min:0', 'max:100000'],
'nutritionGoals.proteins' => ['required_with:nutritionGoals', 'numeric', 'min:0', 'max:10000'],
'nutritionGoals.carbs' => ['required_with:nutritionGoals', 'numeric', 'min:0', 'max:10000'],
'nutritionGoals.fats' => ['required_with:nutritionGoals', 'numeric', 'min:0', 'max:10000'],
];
}
@@ -22,6 +27,10 @@ class UpdateUserRequest extends FormRequest
{
return [
'avatar.max' => "L'image ne doit pas dépasser 2 Mo.",
'nutritionGoals.calories.integer' => 'Les calories doivent etre un nombre entier.',
'nutritionGoals.*.required_with' => 'Renseigne tous les objectifs nutritionnels.',
'nutritionGoals.*.min' => 'Les objectifs nutritionnels doivent etre positifs.',
'nutritionGoals.*.max' => 'La valeur de cet objectif nutritionnel est trop elevee.',
];
}
}
+6
View File
@@ -20,6 +20,12 @@ class UserResource extends JsonResource
'email' => $this->email,
'avatarUrl' => $this->avatar_url ? asset(Storage::url($this->avatar_url)) : null,
'bio' => $this->bio,
'nutritionGoals' => [
'calories' => (int) $this->daily_calorie_goal,
'proteins' => (float) $this->daily_protein_goal,
'carbs' => (float) $this->daily_carbs_goal,
'fats' => (float) $this->daily_fats_goal,
],
];
}
}