repuve-backend-v1/app/Http/Controllers/Repuve/CatalogController.php

109 lines
2.9 KiB
PHP

<?php
namespace App\Http\Controllers\Repuve;
/**
* @copyright (c) 2025 Notsoweb Software (https://notsoweb.com) - All Rights Reserved
*/
use App\Http\Controllers\Controller;
use App\Http\Requests\Repuve\CatalogCancellationReasonStoreRequest;
use App\Http\Requests\Repuve\CatalogCancellationReasonUpdateRequest;
use App\Models\CatalogCancellationReason;
use Illuminate\Http\Request;
use Notsoweb\ApiResponse\Enums\ApiResponse;
/**
* Descripción
*/
class CatalogController extends Controller
{
public function index(Request $request)
{
$type = $request->query('type');
$query = CatalogCancellationReason::query();
if ($type === 'cancelacion') {
$query->forCancellation();
} elseif ($type === 'sustitucion') {
$query->forSubstitution();
} else {
$query->orderBy('id');
}
$reasons = $query->get(['id', 'code', 'name', 'description', 'applies_to']);
return ApiResponse::OK->response([
'message' => 'Razones de cancelación obtenidas exitosamente',
'data' => $reasons,
]);
}
public function show($id)
{
$reason = CatalogCancellationReason::find($id);
if (!$reason) {
return ApiResponse::NOT_FOUND->response([
'message' => 'Razón de cancelación no encontrada',
]);
}
return ApiResponse::OK->response([
'message' => 'Razón de cancelación obtenida exitosamente',
'data' => $reason,
]);
}
public function store(CatalogCancellationReasonStoreRequest $request)
{
$validated = $request->validated();
$reason = CatalogCancellationReason::create($validated);
return ApiResponse::CREATED->response([
'message' => 'Razón de cancelación creada exitosamente',
'data' => $reason,
]);
}
public function update(CatalogCancellationReasonUpdateRequest $request, $id)
{
$reason = CatalogCancellationReason::find($id);
if (!$reason) {
return ApiResponse::NOT_FOUND->response([
'message' => 'Razón de cancelación no encontrada',
]);
}
$validated = $request->validated();
$reason->update($validated);
return ApiResponse::OK->response([
'message' => 'Razón de cancelación actualizada exitosamente',
'data' => $reason,
]);
}
public function destroy($id)
{
$reason = CatalogCancellationReason::find($id);
if (!$reason) {
return ApiResponse::NOT_FOUND->response([
'message' => 'Razón de cancelación no encontrada',
]);
}
$reason->delete();
return ApiResponse::OK->response([
'message' => 'Razón de cancelación eliminada exitosamente',
]);
}
}