Comence con las vistas. El modelo de agenda está practicamente terminado

This commit is contained in:
Lucho
2026-03-25 13:51:02 -03:00
parent 6c2c300d6e
commit 25f4b73b68
29 changed files with 3267 additions and 319 deletions
+53 -8
View File
@@ -6,6 +6,8 @@ use App\Models\Profesional;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use App\Http\Controllers\LogSeguridadController;
class ProfesionalController extends Controller
{
/**
@@ -22,21 +24,54 @@ class ProfesionalController extends Controller
], 200);
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request): JsonResponse
{
$payload = $request->only((new Profesional())->getFillable());
$profesional = Profesional::create($payload);
public function store(Request $request): JsonResponse
{
// 1. Validamos los datos de entrada
$validated = $request->validate([
'inicio' => 'required|date_format:Y-m-d H:i:s',
'correo' => 'nullable|email|max:255',
'nombrecompleto' => 'nullable|string|max:255',
'descripcion' => 'required|string',
'cliente_id' => 'nullable|exists:clientes,id',
'estadoturno_id' => 'required|exists:estadosturnos,id',
'agenda_id' => 'required|exists:agendas,id',
'profesional_id' => 'required|exists:profesionales,id',
'servicio_id' => 'required|exists:servicios,id',
'modalidad_id' => 'required|exists:modalidades,id',
]);
// 2. Verificamos si el profesional ya tiene un turno en ese "inicio"
$existeTurno = Turno::where('profesional_id', $validated['profesional_id'])
->where('inicio', $validated['inicio'])
->whereIn('estadoturno_id', [1, 2]) // 1: Pendiente, 2: Confirmado
->exists();
if ($existeTurno) {
return response()->json([
'success' => true,
'data' => $profesional,
'message' => 'Registro creado correctamente',
], 201);
'success' => false,
'message' => 'Horario no disponible.',
], 422); // Error de validación lógica
}
$turno = Turno::create($validated);
// 3. Registramos el evento en el log de seguridad
$personaId = auth()->check() ? auth()->user()->persona->id : null;
LogSeguridadController::registrarAccion('Creacion de turno ID: ' . $turno->id, 'Profesional', 17, $personaId);
return response()->json([
'success' => true,
'data' => $turno,
'message' => 'Turno agendado correctamente para el ' . $turno->inicio->format('d/m/Y H:i'),
], 201);
}
/**
* Display the specified resource.
*/
@@ -76,4 +111,14 @@ class ProfesionalController extends Controller
'message' => 'Registro eliminado correctamente',
], 200);
}
public function aceptarFormulario(Formulario $formulario): JsonResponse
{
$turno->update(['estadoturno_id' => 2]);
return response()->json([
'success' => true,
'message' => 'Turno aceptado correctamente',
], 200);
}
}