Comence con las vistas. El modelo de agenda está practicamente terminado
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user