Set default meals during migration

This commit is contained in:
Christopher C. Wells 2021-05-29 12:58:08 -07:00
parent be6485372d
commit eca41e89db
4 changed files with 26 additions and 3 deletions

View File

@ -9,6 +9,7 @@ use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Illuminate\Support\Carbon;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Auth;
use Spatie\MediaLibrary\HasMedia;
use Spatie\MediaLibrary\InteractsWithMedia;
@ -89,6 +90,22 @@ final class User extends Authenticatable implements HasMedia
'meals' => AsCollection::class,
];
/**
* Get the default meals structure.
*/
public static function getDefaultMeals(): Collection {
$meals = new Collection();
for ($i = 0; $i <= 7; $i++) {
$meals->add([
'value' => $i,
'label' => 'Meal ' . ($i + 1),
'weight' => $i,
'active' => $i < 3,
]);
}
return $meals;
}
/**
* @inheritdoc
*/

View File

@ -1,5 +1,6 @@
<?php
use App\Models\User;
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
@ -16,6 +17,11 @@ class AddMealsToUsersTable extends Migration
Schema::table('users', function (Blueprint $table) {
$table->json('meals')->nullable()->after('name');
});
User::each(function (User $user) {
$user->meals = User::getDefaultMeals();
$user->save();
});
}
/**

2
public/css/app.css vendored

File diff suppressed because one or more lines are too long

View File

@ -135,12 +135,12 @@
</section>
</div>
<div class="w-full sm:w-3/5 md:w-2/3 lg:w-3/4 flex flex-col space-y-4">
@foreach(\Illuminate\Support\Facades\Auth::user()->meals as $meal)
@foreach(\Illuminate\Support\Facades\Auth::user()->meals->where('active')->sortBy('weight') as $meal)
<div>
<h3 class="font-semibold text-lg text-gray-800">
<div class="flex items-center">
<div>{{ $meal['label'] }}</div>
<div class="ml-2 w-full"><hr/></div>
<div class="ml-2 flex-grow"><hr/></div>
</div>
<span class="text-sm text-gray-500">
@foreach(\App\Support\Nutrients::all()->sortBy('weight') as $nutrient)