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

@@ -126,9 +126,10 @@ Route::group([
], function() {
Route::get('/', 'ReportController@index')->middleware('rolecheck:6');
Route::delete('delete/{id}', 'ReportController@destroy')->middleware('superadmin');
Route::get('comments/{id}/{contract_id}', 'ReportCommentController@index')->middleware('rolecheck:6');
Route::delete('comments/delete/{id}/{contract_id}', 'ReportCommentController@destroy')->middleware('superadmin');
Route::get('veredict/{id}', 'ReportController@veredict')->middleware('rolecheck:6');
Route::get('{id}/comments', 'ReportCommentController@index')->middleware('rolecheck:6');
Route::post('{id}/comments', 'ReportCommentController@store')->middleware('rolecheck:6');
Route::delete('{id}/comments/{comment_id}', 'ReportCommentController@destroy')->middleware('superadmin');
Route::match(['get', 'post'], 'veredict/{id}', 'ReportController@veredict')->middleware('rolecheck:6');
//Route::match(['get', 'post'], 'create', 'CouponController@create')->middleware('rolecheck:6');
});
});