mirror of https://github.com/kcal-app/kcal.git
Handle ingredient deletes
This commit is contained in:
parent
9f180b9b62
commit
acdd89c192
|
|
@ -78,6 +78,7 @@ class RecipeController extends Controller
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
$ingredients[] = [
|
$ingredients[] = [
|
||||||
|
'original_key' => $old['original_key'][$key],
|
||||||
'amount' => $old['amount'][$key],
|
'amount' => $old['amount'][$key],
|
||||||
'unit' => $old['unit'][$key],
|
'unit' => $old['unit'][$key],
|
||||||
'food_id' => $food_id,
|
'food_id' => $food_id,
|
||||||
|
|
@ -87,8 +88,9 @@ class RecipeController extends Controller
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
foreach ($recipe->foodAmounts as $foodAmount) {
|
foreach ($recipe->foodAmounts as $key => $foodAmount) {
|
||||||
$ingredients[] = [
|
$ingredients[] = [
|
||||||
|
'original_key' => $key,
|
||||||
'amount' => $foodAmount->amount_formatted,
|
'amount' => $foodAmount->amount_formatted,
|
||||||
'unit' => $foodAmount->unit,
|
'unit' => $foodAmount->unit,
|
||||||
'food_id' => $foodAmount->food->id,
|
'food_id' => $foodAmount->food->id,
|
||||||
|
|
@ -135,6 +137,7 @@ class RecipeController extends Controller
|
||||||
'ingredients.detail.*' => 'nullable|string',
|
'ingredients.detail.*' => 'nullable|string',
|
||||||
'ingredients.id' => ['required', 'array', new ArrayNotEmpty],
|
'ingredients.id' => ['required', 'array', new ArrayNotEmpty],
|
||||||
'ingredients.id.*' => 'required_with:ingredients.amount.*|nullable|exists:App\Models\Food,id',
|
'ingredients.id.*' => 'required_with:ingredients.amount.*|nullable|exists:App\Models\Food,id',
|
||||||
|
'ingredients.original_key' => 'nullable|array',
|
||||||
'steps' => ['required', 'array', new ArrayNotEmpty],
|
'steps' => ['required', 'array', new ArrayNotEmpty],
|
||||||
'steps.*' => 'nullable|string',
|
'steps.*' => 'nullable|string',
|
||||||
]);
|
]);
|
||||||
|
|
@ -152,11 +155,22 @@ class RecipeController extends Controller
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Delete any removed ingredients.
|
||||||
|
$removed = array_diff($recipe->foodAmounts->keys()->all(), $input['ingredients']['original_key']);
|
||||||
|
foreach ($removed as $removed_key) {
|
||||||
|
$recipe->foodAmounts[$removed_key]->delete();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add/update current ingredients.
|
||||||
$food_amounts = [];
|
$food_amounts = [];
|
||||||
$weight = 0;
|
$weight = 0;
|
||||||
// TODO: Handle removals.
|
|
||||||
foreach (array_filter($input['ingredients']['id']) as $key => $food_id) {
|
foreach (array_filter($input['ingredients']['id']) as $key => $food_id) {
|
||||||
$food_amounts[$key] = $recipe->foodAmounts[$key] ?? new FoodAmount();
|
if (!is_null($input['ingredients']['original_key'][$key])) {
|
||||||
|
$food_amounts[$key] = $recipe->foodAmounts[$input['ingredients']['original_key'][$key]];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$food_amounts[$key] = new FoodAmount();
|
||||||
|
}
|
||||||
$food_amounts[$key]->fill([
|
$food_amounts[$key]->fill([
|
||||||
'amount' => Number::floatFromString($input['ingredients']['amount'][$key]),
|
'amount' => Number::floatFromString($input['ingredients']['amount'][$key]),
|
||||||
'unit' => $input['ingredients']['unit'][$key],
|
'unit' => $input['ingredients']['unit'][$key],
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
<div class="flex flex-row space-x-4 mb-4">
|
<div class="flex flex-row space-x-4 mb-4">
|
||||||
|
<x-inputs.input type="hidden" name="ingredients[original_key][]" :value="$original_key ?? null" />
|
||||||
<x-inputs.input type="text"
|
<x-inputs.input type="text"
|
||||||
name="ingredients[amount][]"
|
name="ingredients[amount][]"
|
||||||
size="5"
|
size="5"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue