first commit

This commit is contained in:
2026-02-18 19:54:52 +07:00
commit 8e070562cb
101 changed files with 13462 additions and 0 deletions

View File

@@ -0,0 +1,110 @@
<?php
declare(strict_types=1);
namespace App\Http\Controllers;
use App\Contracts\TaskServiceInterface;
use App\Http\Requests\IndexTaskRequest;
use App\Http\Requests\StoreTaskRequest;
use App\Http\Requests\UpdateTaskRequest;
use App\Http\Resources\TaskResource;
use App\Models\Task;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Response;
use Throwable;
class TaskController extends Controller
{
public function __construct(private readonly TaskServiceInterface $service)
{
}
/**
* Display a listing of the resource.
*/
public function index(IndexTaskRequest $request): JsonResponse
{
try {
$tasks = $this->service->list($request);
return TaskResource::collection($tasks)->response();
} catch (Throwable $e) {
return response()->json([
'error' => 'Service unavailable',
'message' => $e->getMessage(),
], 503);
}
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*/
public function store(StoreTaskRequest $request): JsonResponse
{
try {
$task = $this->service->create($request->validated());
return new TaskResource($task->load('tags'))
->response()
->setStatusCode(201);
} catch (Throwable $e) {
return response()->json([
'error' => 'Service unavailable',
'message' => $e->getMessage(),
], 503);
}
}
/**
* Display the specified resource.
*/
public function show(Task $task): JsonResponse
{
$task = $this->service->show($task);
return new TaskResource($task->load('tags'))->response();
}
/**
* Show the form for editing the specified resource.
*/
public function edit(Task $task)
{
//
}
/**
* Update the specified resource in storage.
*/
public function update(UpdateTaskRequest $request, Task $task): JsonResponse
{
try {
$task = $this->service->update($task, $request->validated());
return new TaskResource($task->load('tags'))->response();
} catch (Throwable $e) {
return response()->json([
'error' => 'Service unavailable',
'message' => $e->getMessage(),
], 503);
}
}
/**
* Remove the specified resource from storage.
*/
public function destroy(Task $task): Response
{
$this->service->delete($task);
return response()->noContent();
}
}