40 lines
1.3 KiB
PHP
40 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Actions\AcceptWeeklyReviewAdjustment;
|
|
use App\Http\Resources\NutritionPlanResource;
|
|
use App\Http\Resources\WeeklyReviewResource;
|
|
use App\Models\WeeklyReview;
|
|
use App\Services\WeeklyReviewService;
|
|
use Illuminate\Http\JsonResponse;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Http\Resources\Json\AnonymousResourceCollection;
|
|
|
|
class WeeklyReviewController extends Controller
|
|
{
|
|
public function index(Request $request): AnonymousResourceCollection
|
|
{
|
|
return WeeklyReviewResource::collection(
|
|
$request->user()->weeklyReviews()->latest('period_start')->limit(52)->get()
|
|
);
|
|
}
|
|
|
|
public function current(Request $request, WeeklyReviewService $weeklyReviewService): JsonResponse
|
|
{
|
|
return (new WeeklyReviewResource($weeklyReviewService->generate($request->user())))
|
|
->response()
|
|
->setStatusCode(200);
|
|
}
|
|
|
|
public function accept(
|
|
Request $request,
|
|
WeeklyReview $weeklyReview,
|
|
AcceptWeeklyReviewAdjustment $acceptWeeklyReviewAdjustment,
|
|
): NutritionPlanResource {
|
|
abort_unless($weeklyReview->user_id === $request->user()->getKey(), 404);
|
|
|
|
return new NutritionPlanResource($acceptWeeklyReviewAdjustment->execute($weeklyReview));
|
|
}
|
|
}
|