109 lines
2.9 KiB
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',
|
|
]);
|
|
}
|
|
}
|