diff --git a/app/Http/Controllers/GoalController.php b/app/Http/Controllers/GoalController.php index f6a88a2..a714a4e 100644 --- a/app/Http/Controllers/GoalController.php +++ b/app/Http/Controllers/GoalController.php @@ -59,7 +59,9 @@ class GoalController extends Controller public function update(UpdateGoalRequest $request, Goal $goal): RedirectResponse { $attributes = $request->validated(); - $attributes['days'] = array_sum($attributes['days']); + if (isset($attributes['days'])) { + $attributes['days'] = array_sum($attributes['days']); + } $goal->fill($attributes)->user()->associate(Auth::user()); $goal->save(); session()->flash('message', "Goal updated!"); diff --git a/app/JsonApi/Schemas/FoodSchema.php b/app/JsonApi/Schemas/FoodSchema.php index 9336d58..3749b90 100644 --- a/app/JsonApi/Schemas/FoodSchema.php +++ b/app/JsonApi/Schemas/FoodSchema.php @@ -25,6 +25,7 @@ class FoodSchema extends SchemaProvider */ public function getAttributes($resource): array { + /** @var \App\Models\Food $resource */ return [ 'slug' => $resource->slug, 'name' => $resource->name, diff --git a/app/JsonApi/Schemas/GoalSchema.php b/app/JsonApi/Schemas/GoalSchema.php index f2bd9ec..282df10 100644 --- a/app/JsonApi/Schemas/GoalSchema.php +++ b/app/JsonApi/Schemas/GoalSchema.php @@ -29,6 +29,7 @@ class GoalSchema extends SchemaProvider return [ 'name' => $resource->name, 'days' => $resource->days, + 'daysFormatted' => $resource->days_formatted, 'calories' => $resource->calories, 'carbohydrates' => $resource->carbohydrates, 'cholesterol' => $resource->cholesterol, diff --git a/app/JsonApi/Schemas/IngredientAmountSchema.php b/app/JsonApi/Schemas/IngredientAmountSchema.php index 1e14527..4a8624d 100644 --- a/app/JsonApi/Schemas/IngredientAmountSchema.php +++ b/app/JsonApi/Schemas/IngredientAmountSchema.php @@ -25,6 +25,7 @@ class IngredientAmountSchema extends SchemaProvider */ public function getAttributes($resource): array { + /** @var \App\Models\IngredientAmount $resource */ return [ 'amount' => $resource->amount, 'amountFormatted' => $resource->amount_formatted, diff --git a/app/JsonApi/Schemas/JournalEntrySchema.php b/app/JsonApi/Schemas/JournalEntrySchema.php index 792d920..3c7acee 100644 --- a/app/JsonApi/Schemas/JournalEntrySchema.php +++ b/app/JsonApi/Schemas/JournalEntrySchema.php @@ -25,6 +25,7 @@ class JournalEntrySchema extends SchemaProvider */ public function getAttributes($resource): array { + /** @var \App\Models\JournalEntry $resource */ return [ 'calories' => $resource->calories, 'carbohydrates' => $resource->carbohydrates, diff --git a/app/JsonApi/Schemas/RecipeSchema.php b/app/JsonApi/Schemas/RecipeSchema.php index a57b27d..4a9935d 100644 --- a/app/JsonApi/Schemas/RecipeSchema.php +++ b/app/JsonApi/Schemas/RecipeSchema.php @@ -25,6 +25,7 @@ class RecipeSchema extends SchemaProvider */ public function getAttributes($resource): array { + /** @var \App\Models\Recipe $resource */ return [ 'slug' => $resource->slug, 'name' => $resource->name, diff --git a/app/JsonApi/Schemas/RecipeSeparatorSchema.php b/app/JsonApi/Schemas/RecipeSeparatorSchema.php index 626cb7d..daf14e6 100644 --- a/app/JsonApi/Schemas/RecipeSeparatorSchema.php +++ b/app/JsonApi/Schemas/RecipeSeparatorSchema.php @@ -25,6 +25,7 @@ class RecipeSeparatorSchema extends SchemaProvider */ public function getAttributes($resource): array { + /** @var \App\Models\RecipeSeparator $resource */ return [ 'container' => $resource->container, 'weight' => $resource->weight, diff --git a/app/JsonApi/Schemas/RecipeStepSchema.php b/app/JsonApi/Schemas/RecipeStepSchema.php index 1c856ff..28d127b 100644 --- a/app/JsonApi/Schemas/RecipeStepSchema.php +++ b/app/JsonApi/Schemas/RecipeStepSchema.php @@ -25,6 +25,7 @@ class RecipeStepSchema extends SchemaProvider */ public function getAttributes($resource): array { + /** @var \App\Models\RecipeStep $resource */ return [ 'number' => $resource->number, 'step' => $resource->step, diff --git a/app/JsonApi/Schemas/TagSchema.php b/app/JsonApi/Schemas/TagSchema.php index 89f82e4..3476ff1 100644 --- a/app/JsonApi/Schemas/TagSchema.php +++ b/app/JsonApi/Schemas/TagSchema.php @@ -25,6 +25,7 @@ class TagSchema extends SchemaProvider */ public function getAttributes($resource): array { + /** @var \App\Models\Tag $resource */ return [ 'name' => $resource->name, 'slug' => $resource->slug, diff --git a/app/JsonApi/Schemas/UserSchema.php b/app/JsonApi/Schemas/UserSchema.php index 74c2501..71b528e 100644 --- a/app/JsonApi/Schemas/UserSchema.php +++ b/app/JsonApi/Schemas/UserSchema.php @@ -25,6 +25,7 @@ class UserSchema extends SchemaProvider */ public function getAttributes($resource): array { + /** @var \App\Models\User $resource */ return [ 'username' => $resource->username, 'name' => $resource->name, diff --git a/app/Models/Goal.php b/app/Models/Goal.php index 73b59cf..1d52576 100644 --- a/app/Models/Goal.php +++ b/app/Models/Goal.php @@ -42,6 +42,7 @@ use Illuminate\Support\Collection; * @method static \Illuminate\Database\Eloquent\Builder|Goal whereUpdatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|Goal whereUserId($value) * @mixin \Eloquent + * @property-read array $days_formatted */ final class Goal extends Model { @@ -75,6 +76,31 @@ final class Goal extends Model 'sodium' => 'float', ]; + /** + * @inheritdoc + */ + protected $appends = [ + 'days_formatted', + ]; + + /** + * Get the days for the goals as strings in array keyed by dow. + */ + public function getDaysFormattedAttribute(): array { + $days = []; + if (empty($this->days)) { + return $days; + } + + self::days()->each(function ($day) use (&$days) { + if (($this->days & $day['value']) != 0) { + $days[$day['dow']] = $day['label']; + } + }); + + return $days; + } + /** * Get all supported days and metadata. * diff --git a/app/Models/IngredientAmount.php b/app/Models/IngredientAmount.php index 58762fc..a64eccd 100644 --- a/app/Models/IngredientAmount.php +++ b/app/Models/IngredientAmount.php @@ -150,8 +150,6 @@ final class IngredientAmount extends Model * @param array $parameters * * @return mixed - * - * @noinspection PhpMissingParamTypeInspection */ public function __call($method, $parameters): mixed { if (in_array($method, $this->nutrientMethods)) { diff --git a/app/Models/JournalDate.php b/app/Models/JournalDate.php index 1013383..d35f54e 100644 --- a/app/Models/JournalDate.php +++ b/app/Models/JournalDate.php @@ -27,6 +27,7 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo; * @method static \Illuminate\Database\Eloquent\Builder|JournalDate whereUpdatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|JournalDate whereUserId($value) * @mixin \Eloquent + * @method static \Database\Factories\JournalDateFactory factory(...$parameters) */ final class JournalDate extends Model {