mirror of https://github.com/kcal-app/kcal.git
Remove Goal `from` and `to` attributes
This commit is contained in:
parent
3ae6c6ef13
commit
153611e66d
|
@ -59,6 +59,7 @@ class GoalController extends Controller
|
||||||
public function update(UpdateGoalRequest $request, Goal $goal): RedirectResponse
|
public function update(UpdateGoalRequest $request, Goal $goal): RedirectResponse
|
||||||
{
|
{
|
||||||
$attributes = $request->validated();
|
$attributes = $request->validated();
|
||||||
|
$attributes['days'] = array_sum($attributes['days']);
|
||||||
$goal->fill($attributes)->user()->associate(Auth::user());
|
$goal->fill($attributes)->user()->associate(Auth::user());
|
||||||
$goal->save();
|
$goal->save();
|
||||||
session()->flash('message', "Goal updated!");
|
session()->flash('message', "Goal updated!");
|
||||||
|
|
|
@ -14,11 +14,15 @@ class UpdateGoalRequest extends FormRequest
|
||||||
public function rules(): array
|
public function rules(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'from' => ['nullable', 'date'],
|
|
||||||
'to' => ['nullable', 'date'],
|
|
||||||
'frequency' => ['required', 'string'],
|
|
||||||
'name' => ['required', 'string'],
|
'name' => ['required', 'string'],
|
||||||
'goal' => ['required', 'numeric', 'min:0'],
|
'days' => ['nullable', 'array'],
|
||||||
|
'days.*' => ['nullable', 'numeric', 'min:0', 'max:64'],
|
||||||
|
'calories' => ['nullable', 'numeric', 'min:0'],
|
||||||
|
'fat' => ['nullable', 'numeric', 'min:0'],
|
||||||
|
'cholesterol' => ['nullable', 'numeric', 'min:0'],
|
||||||
|
'sodium' => ['nullable', 'numeric', 'min:0'],
|
||||||
|
'carbohydrates' => ['nullable', 'numeric', 'min:0'],
|
||||||
|
'protein' => ['nullable', 'numeric', 'min:0'],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@ class GoalAdapter extends AdapterBase
|
||||||
/**
|
/**
|
||||||
* {@inheritdoc}
|
* {@inheritdoc}
|
||||||
*/
|
*/
|
||||||
protected $defaultSort = ['-from', '-to'];
|
protected $defaultSort = ['-name'];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
|
|
|
@ -26,11 +26,14 @@ class GoalSchema extends SchemaProvider
|
||||||
public function getAttributes($resource): array
|
public function getAttributes($resource): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'frequency' => $resource->frequency,
|
|
||||||
'from' => $resource->from,
|
|
||||||
'goal' => $resource->goal,
|
|
||||||
'name' => $resource->name,
|
'name' => $resource->name,
|
||||||
'to' => $resource->to,
|
'days' => $resource->days,
|
||||||
|
'calories' => $resource->calories,
|
||||||
|
'carbohydrates' => $resource->carbohydrates,
|
||||||
|
'cholesterol' => $resource->cholesterol,
|
||||||
|
'fat' => $resource->fat,
|
||||||
|
'protein' => $resource->protein,
|
||||||
|
'sodium' => $resource->sodium,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,8 +12,6 @@ use Illuminate\Support\Collection;
|
||||||
*
|
*
|
||||||
* @property int $id
|
* @property int $id
|
||||||
* @property int $user_id
|
* @property int $user_id
|
||||||
* @property \datetime|null $from
|
|
||||||
* @property \datetime|null $to
|
|
||||||
* @property int $days
|
* @property int $days
|
||||||
* @property string $name
|
* @property string $name
|
||||||
* @property \Illuminate\Support\Carbon|null $created_at
|
* @property \Illuminate\Support\Carbon|null $created_at
|
||||||
|
@ -54,8 +52,6 @@ final class Goal extends Model
|
||||||
*/
|
*/
|
||||||
protected $fillable = [
|
protected $fillable = [
|
||||||
'name',
|
'name',
|
||||||
'from',
|
|
||||||
'to',
|
|
||||||
// Bitwise field: mon=1, tue=2, wed=4, thu=8, fri=16, sat=32, sun=64.
|
// Bitwise field: mon=1, tue=2, wed=4, thu=8, fri=16, sat=32, sun=64.
|
||||||
'days',
|
'days',
|
||||||
'calories',
|
'calories',
|
||||||
|
@ -70,8 +66,6 @@ final class Goal extends Model
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
protected $casts = [
|
protected $casts = [
|
||||||
'from' => 'datetime:Y-m-d',
|
|
||||||
'to' => 'datetime:Y-m-d',
|
|
||||||
'days' => 'int',
|
'days' => 'int',
|
||||||
'calories' => 'float',
|
'calories' => 'float',
|
||||||
'carbohydrates' => 'float',
|
'carbohydrates' => 'float',
|
||||||
|
|
|
@ -16,14 +16,14 @@ class RefactorGoalsTable extends Migration
|
||||||
{
|
{
|
||||||
DB::table('goals')->truncate();
|
DB::table('goals')->truncate();
|
||||||
Schema::table('goals', function (Blueprint $table) {
|
Schema::table('goals', function (Blueprint $table) {
|
||||||
$table->unsignedTinyInteger('days')->default(127)->after('to');
|
$table->unsignedTinyInteger('days')->default(127)->after('name');
|
||||||
$table->unsignedFloat('calories')->nullable()->after('name');
|
$table->unsignedFloat('calories')->nullable()->after('days');
|
||||||
$table->unsignedFloat('fat')->nullable()->after('calories');
|
$table->unsignedFloat('fat')->nullable()->after('calories');
|
||||||
$table->unsignedFloat('cholesterol')->nullable()->after('fat');
|
$table->unsignedFloat('cholesterol')->nullable()->after('fat');
|
||||||
$table->unsignedFloat('sodium')->nullable()->after('cholesterol');
|
$table->unsignedFloat('sodium')->nullable()->after('cholesterol');
|
||||||
$table->unsignedFloat('carbohydrates')->nullable()->after('sodium');
|
$table->unsignedFloat('carbohydrates')->nullable()->after('sodium');
|
||||||
$table->unsignedFloat('protein')->nullable()->after('carbohydrates');
|
$table->unsignedFloat('protein')->nullable()->after('carbohydrates');
|
||||||
$table->dropColumn(['frequency', 'goal']);
|
$table->dropColumn(['frequency', 'from', 'goal', 'to']);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -36,8 +36,10 @@ class RefactorGoalsTable extends Migration
|
||||||
{
|
{
|
||||||
DB::table('goals')->truncate();
|
DB::table('goals')->truncate();
|
||||||
Schema::table('goals', function (Blueprint $table) {
|
Schema::table('goals', function (Blueprint $table) {
|
||||||
$table->string('frequency')->nullable()->after('to');
|
$table->date('from')->nullable();
|
||||||
$table->unsignedFloat('goal')->nullable()->after('name');
|
$table->date('to')->nullable();
|
||||||
|
$table->string('frequency')->nullable();
|
||||||
|
$table->unsignedFloat('goal')->nullable();
|
||||||
$table->dropColumn(['days', 'calories', 'fat', 'cholesterol', 'sodium', 'carbohydrates', 'protein']);
|
$table->dropColumn(['days', 'calories', 'fat', 'cholesterol', 'sodium', 'carbohydrates', 'protein']);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,26 +21,6 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex flex-col space-y-4 md:flex-row md:space-x-4 md:space-y-0">
|
<div class="flex flex-col space-y-4 md:flex-row md:space-x-4 md:space-y-0">
|
||||||
<!-- From -->
|
|
||||||
<div class="flex-auto">
|
|
||||||
<x-inputs.label for="from" value="From"/>
|
|
||||||
<x-inputs.input name="from"
|
|
||||||
type="date"
|
|
||||||
class="block w-full"
|
|
||||||
:value="old('from', $goal->from?->toDateString())"
|
|
||||||
:hasError="$errors->has('from')" />
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- To -->
|
|
||||||
<div class="flex-auto">
|
|
||||||
<x-inputs.label for="to" value="To"/>
|
|
||||||
<x-inputs.input name="to"
|
|
||||||
type="date"
|
|
||||||
class="block w-full"
|
|
||||||
:value="old('to', $goal->to?->toDateString())"
|
|
||||||
:hasError="$errors->has('to')" />
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Days of the week -->
|
<!-- Days of the week -->
|
||||||
<fieldset class="flex-auto">
|
<fieldset class="flex-auto">
|
||||||
<legend class="block font-medium text-sm text-gray-700">Days of the week</legend>
|
<legend class="block font-medium text-sm text-gray-700">Days of the week</legend>
|
||||||
|
|
|
@ -12,8 +12,6 @@
|
||||||
<thead>
|
<thead>
|
||||||
<tr class="bg-gray-200 text-gray-600 uppercase text-sm leading-normal">
|
<tr class="bg-gray-200 text-gray-600 uppercase text-sm leading-normal">
|
||||||
<th class="py-3 px-6 text-left">Name</th>
|
<th class="py-3 px-6 text-left">Name</th>
|
||||||
<th class="py-3 px-6 text-left">From</th>
|
|
||||||
<th class="py-3 px-6 text-left">To</th>
|
|
||||||
<th class="py-3 px-6 text-left">Days of Week</th>
|
<th class="py-3 px-6 text-left">Days of Week</th>
|
||||||
<th class="py-3 px-6 text-left">Goals</th>
|
<th class="py-3 px-6 text-left">Goals</th>
|
||||||
<th class="py-3 px-6 text-left"> </th>
|
<th class="py-3 px-6 text-left"> </th>
|
||||||
|
@ -23,8 +21,6 @@
|
||||||
@foreach($goals as $goal)
|
@foreach($goals as $goal)
|
||||||
<tr class="border-b border-gray-200">
|
<tr class="border-b border-gray-200">
|
||||||
<td class="py-3 px-6">{{ $goal->name }}</td>
|
<td class="py-3 px-6">{{ $goal->name }}</td>
|
||||||
<td class="py-3 px-6">{{ $goal->from }}</td>
|
|
||||||
<td class="py-3 px-6">{{ $goal->to }}</td>
|
|
||||||
<td class="py-3 px-6">{{ $goal->days }}</td>
|
<td class="py-3 px-6">{{ $goal->days }}</td>
|
||||||
<td class="py-3 px-6">
|
<td class="py-3 px-6">
|
||||||
Calories: {{ $goal->calories }}<br />
|
Calories: {{ $goal->calories }}<br />
|
||||||
|
|
|
@ -19,15 +19,6 @@
|
||||||
</h1>
|
</h1>
|
||||||
</x-slot>
|
</x-slot>
|
||||||
<div class="grid grid-cols-2 gap-y-1 gap-x-3 max-w-md inline-grid">
|
<div class="grid grid-cols-2 gap-y-1 gap-x-3 max-w-md inline-grid">
|
||||||
<div class="font-bold">From</div>
|
@todo Add data!
|
||||||
<div>{{ $goal->from?->toDateString() ?? 'Any' }}</div>
|
|
||||||
<div class="font-bold">To</div>
|
|
||||||
<div>{{ $goal->to?->toDateString() ?? 'Any' }}</div>
|
|
||||||
<div class="font-bold">Frequency</div>
|
|
||||||
<div>{{ \Illuminate\Support\Str::ucfirst($frequencyOptions[$goal->frequency]['label']) }}</div>
|
|
||||||
<div class="font-bold">Trackable</div>
|
|
||||||
<div>{{ \Illuminate\Support\Str::ucfirst($nameOptions[$goal->name]['label']) }}</div>
|
|
||||||
<div class="font-bold">Goal</div>
|
|
||||||
<div>{{ $goal->goal }}{{ $nameOptions[$goal->name]['unit'] }}</div>
|
|
||||||
</div>
|
</div>
|
||||||
</x-app-layout>
|
</x-app-layout>
|
||||||
|
|
Loading…
Reference in New Issue