From f043390a3102a1b0b224366b309e7d581f9d8b2f Mon Sep 17 00:00:00 2001 From: Diego Oliveira da Silva Date: Thu, 16 Jun 2022 23:58:59 -0300 Subject: [PATCH] adicionando patter Repository na API Conceito --- .../Controllers/ConceitoControllerApi.php | 58 +++++++++++++++---- .../ConceitoRepositoryInterface.php | 12 ++++ app/Providers/RepositoryServiceProvider.php | 30 ++++++++++ app/Repositories/ConceitoRepository.php | 33 +++++++++++ config/app.php | 1 + 5 files changed, 122 insertions(+), 12 deletions(-) create mode 100644 app/Interfaces/ConceitoRepositoryInterface.php create mode 100644 app/Providers/RepositoryServiceProvider.php create mode 100644 app/Repositories/ConceitoRepository.php diff --git a/app/Http/Controllers/ConceitoControllerApi.php b/app/Http/Controllers/ConceitoControllerApi.php index 5e00a9d..70739ac 100644 --- a/app/Http/Controllers/ConceitoControllerApi.php +++ b/app/Http/Controllers/ConceitoControllerApi.php @@ -4,36 +4,70 @@ use Illuminate\Http\Request; use App\Models\Conceito; +use App\Interfaces\ConceitoRepositoryInterface; +use Illuminate\Http\JsonResponse; +use Illuminate\Http\Response; class ConceitoControllerApi extends Controller { - public function index() + private ConceitoRepositoryInterface $conceitoRepository; + + public function __construct(ConceitoRepositoryInterface $conceitoRepository) + { + $this->conceitoRepository = $conceitoRepository; + } + + public function index(): JsonResponse { - return Conceito::all(); + return response()->json([ + 'data' => $this->conceitoRepository->getAllConceitos() + ]); } - public function store(Request $request) + public function store(Request $request): JsonResponse { - Conceito::create($request->all()); + + $conceitoDetails = $request->only([ + 'nome', + 'descricao', + 'user_id' + ]); + + return response()->json([ + 'data' => $this->conceitoRepository->createConceito($conceitoDetails) + ], + Response::HTTP_CREATED + ); } - public function show($id) + public function show($id): JsonResponse { - return Conceito::find($id); + $conceitoId = $id; + return response()->json([ + 'data' => $this->conceitoRepository->getConceitoById($conceitoId) + ]); } - public function update(Request $request, $id) + public function update(Request $request, $id): JsonResponse { - $conceito = Conceito::find($id); - $conceito->update($request->all()); + $conceitoId = $id; + $conceitoDetails = $request->only([ + 'nome', + 'descricao', + ]); + + return response()->json([ + 'data' => $this->conceitoRepository->updateConceito($conceitoId,$conceitoDetails) + ]); } - public function destroy($id) + public function destroy($id): JsonResponse { - $conceito = Conceito::find($id); - $conceito->delete(); + $conceitoId = $id; + $this->conceitoRepository->deleteConceito($conceitoId); + return response()->json(null,Response::HTTP_NO_CONTENT); } } diff --git a/app/Interfaces/ConceitoRepositoryInterface.php b/app/Interfaces/ConceitoRepositoryInterface.php new file mode 100644 index 0000000..bd06bb5 --- /dev/null +++ b/app/Interfaces/ConceitoRepositoryInterface.php @@ -0,0 +1,12 @@ +app->bind(ConceitoRepositoryInterface::class,ConceitoRepository::class); + } + + /** + * Bootstrap services. + * + * @return void + */ + public function boot() + { + // + } +} diff --git a/app/Repositories/ConceitoRepository.php b/app/Repositories/ConceitoRepository.php new file mode 100644 index 0000000..68a44b1 --- /dev/null +++ b/app/Repositories/ConceitoRepository.php @@ -0,0 +1,33 @@ +update($newDetails); + } +} \ No newline at end of file diff --git a/config/app.php b/config/app.php index f478128..b45d860 100644 --- a/config/app.php +++ b/config/app.php @@ -181,6 +181,7 @@ Illuminate\Translation\TranslationServiceProvider::class, Illuminate\Validation\ValidationServiceProvider::class, Illuminate\View\ViewServiceProvider::class, + App\PRoviders\RepositoryServiceProvider::class, /* * Package Service Providers...