- Se agregó autorización basada en permisos en múltiples Requests. - Nuevos Requests para motivos de cancelación y tags con validación y autorización. - Se añadieron métodos de roles al modelo User (isDeveloper, isAdmin, isPrimary). - Se actualizó el acceso a Telescope usando validación por roles. - Mejora en el manejo de excepciones de autorización. - Actualización de RoleSeeder con nuevas convenciones de permisos. - Actualización de dependencias (composer.lock).
121 lines
3.3 KiB
PHP
121 lines
3.3 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;
|
|
use Illuminate\Routing\Controllers\HasMiddleware;
|
|
|
|
/**
|
|
* Descripción
|
|
*/
|
|
class CatalogController extends Controller implements HasMiddleware
|
|
{
|
|
/**
|
|
* Middleware
|
|
*/
|
|
public static function middleware(): array
|
|
{
|
|
return [
|
|
self::can('catalogs.cancellation_reasons.index', ['index']),
|
|
self::can('catalogs.cancellation_reasons.show', ['show']),
|
|
self::can('catalogs.cancellation_reasons.destroy', ['destroy']),
|
|
];
|
|
}
|
|
|
|
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',
|
|
]);
|
|
}
|
|
}
|