Files
eatvio-infra/app/Http/Controllers/DiaryController.php

89 lines
2.3 KiB
PHP
Executable File

<?php
namespace App\Http\Controllers;
use App\Models\Diary;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\View\View;
class DiaryController extends Controller
{
public function index(): RedirectResponse
{
/* return view('diary.index'); */
$curDiary = $this->getCurrentDiary();
/* dd($curDiary); */
return redirect()->route('diary.edit', $curDiary);
}
public function store(Request $request): void
{
dd($request);
}
public function show(Diary $diary): View
{
/* $curDiary = Diary::find($id); */
$daysCount = Diary::where('user_id', auth()->id())->count();
return view('diary.show', ['curDiary' => $diary, 'daysCount' => $daysCount]);
}
public function edit(int $id): View
{
$curDiary = Diary::find($id);
$daysCount = Diary::where('user_id', auth()->id())->count();
return view(
'diary.index',
[
'diaryId' => $id,
'curDiary' => $curDiary,
'daysCount' => $daysCount,
]
);
}
public function update(Request $request, int $id): RedirectResponse
{
/* dd($request, $id, $request->input()); */
$curDiary = Diary::find($id);
$curDiary->wakeup = $request->input('wakeup');
$curDiary->retire = $request->input('retire');
$curDiary->comment = $request->input('comment') ?? '';
$curDiary->closed = true;
$curDiary->save();
return redirect()->route('diary.show', $id);
}
private function getCurrentDiary(): Diary
{
$curUserId = Auth::id();
$curDiary = Diary::userToDayItem($curUserId)->first();
if (! is_null($curDiary)) {
return $curDiary;
}
return $this->newDiary($curUserId);
}
private function newDiary(int $curUserId): Diary
{
$curDiary = new Diary();
$curDiary->date = now()->setTimezone('3')->format('Y-m-d');
$curDiary->wakeup = '06:30';
$curDiary->retire = '22:30';
$curDiary->user_id = $curUserId;
$curDiary->closed = (int) false;
$curDiary->comment = '';
$curDiary->save();
return $curDiary;
}
}