feat: API de reportes, fix distancia espacial y protección OneSignal

- GET/POST /api/contracts/reports y /api/postulations/reports
- GET/POST /api/contracts/reports/{id}/comments con verificación de autoría
- Fix distancia withinDistanceTo: 0.5 grados → 5000 metros (SRID 4326)
- Fix FK Report::finishedcontracts() → contract_id
- Wrap todas las llamadas OneSignal en try/catch para evitar crashes
- Chat UI de comentarios: burbujas por rol, botón veredicto fijo, estilos
- Botón veredicto movido de reports/index a reports/comments
- Ruta POST veredict y restructura reports/{id}/comments en web

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-18 21:04:14 -06:00
parent 185da1edbb
commit 38da1b56ce
12 changed files with 521 additions and 359 deletions

View File

@@ -137,12 +137,14 @@ class NoHomeController extends Controller
if (Carbon::now()->diffInMinutes($contract->appointment, false) < 10) {
return response()->json($contract);
} else {
OneSignal::sendNotificationToExternalUser(
"El proveedor para el servicio en " . $contract->address . " ha llegado. Dírigeta a la sección de contratos confirmados para más detalles",
(string) $client->id,
null, null, null, null,
$client->name . ", tu proveedor del servicio ha llegado"
);
try {
OneSignal::sendNotificationToExternalUser(
"El proveedor para el servicio en " . $contract->address . " ha llegado. Dírigeta a la sección de contratos confirmados para más detalles",
(string) $client->id,
null, null, null, null,
$client->name . ", tu proveedor del servicio ha llegado"
);
} catch (\Exception $e) {}
return response()->json([
//'message' => 'Por favor espere a los 10 minutos de tolerancia de la hora acordada'
'message' => 'wait'
@@ -227,12 +229,14 @@ class NoHomeController extends Controller
'message' => 'Ausencia registrada con éxito, nos comunicaremos con usted por correo electrónico en caso de alguna circunstancia'
]);
} else {
OneSignal::sendNotificationToExternalUser(
"El proveedor para el servicio en " . $ccontract->address . " ha llegado. Dírigeta a la sección de contratos confirmados para más detalles",
(string) $client->id,
null, null, null, null,
$client->name . ", tu proveedor del servicio ha llegado"
);
try {
OneSignal::sendNotificationToExternalUser(
"El proveedor para el servicio en " . $ccontract->address . " ha llegado. Dírigeta a la sección de contratos confirmados para más detalles",
(string) $client->id,
null, null, null, null,
$client->name . ", tu proveedor del servicio ha llegado"
);
} catch (\Exception $e) {}
return response()->json([
'order' => 'wait',
'message' => 'Por favor espere a los 10 minutos de tolerancia de la hora acordada'