Add formatted days attribute to Goal

This commit is contained in:
Christopher C. Wells 2021-05-15 11:17:30 -07:00 committed by Christopher Charbonneau Wells
parent b21f483af2
commit 77b06c62b1
13 changed files with 39 additions and 3 deletions

View File

@ -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!");

View File

@ -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,

View File

@ -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,

View File

@ -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,

View File

@ -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,

View File

@ -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,

View File

@ -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,

View File

@ -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,

View File

@ -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,

View File

@ -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,

View File

@ -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.
*

View File

@ -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)) {

View File

@ -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
{