feat: profile_photo en contratos activos, notificaciones bilingues en reportes y foto en panel usuarios

- API contratos activos (cliente y proveedor): agrega campo profile_photo (técnico asignado o supplier, null si no tiene)
- Notificaciones push bilingues en comentarios de reporte: "Nueva actividad en tu reporte" / "New activity on your report"
- Moderador en web panel notifica a cliente y proveedor al comentar, con prefijo Moderador/Moderator
- Panel usuarios: columna de foto de perfil entre ID y Nombre

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-23 17:17:14 -06:00
parent 38da1b56ce
commit 0ed98c96ee
40 changed files with 1390 additions and 651 deletions

View File

@@ -56,14 +56,6 @@ Route::group([
Route::match(['get', 'put'], 'update/{id}', 'BanksController@update')->middleware('rolecheck:6');
Route::match(['get', 'post'], 'create', 'BanksController@create')->middleware('rolecheck:6');
});
Route::group([
'prefix' => 'cards'
], function() {
Route::get('/', 'PaymentController@cardsindex')->middleware('rolecheck:6');
Route::delete('delete/{id}', 'PaymentController@destroy')->middleware('superadmin');
//Route::match(['get', 'put'], 'update/{id}', 'PaymentController@update')->middleware('rolecheck:6');
//Route::match(['get', 'post'], 'create', 'PaymentController@create')->middleware('rolecheck:6');
});
Route::group([
'prefix' => 'coupons'
], function() {
@@ -92,10 +84,17 @@ Route::group([
'prefix' => 'payments'
], function() {
Route::get('/', 'PaymentController@index')->middleware('rolecheck:6');
Route::post('generate', 'PaymentController@generate')->middleware('rolecheck:6');
Route::delete('delete/{id}', 'StatusController@destroy')->middleware('superadmin');
Route::match(['get', 'put'], 'update/{id}', 'StatusController@update')->middleware('rolecheck:6');
Route::match(['get', 'post'], 'create', 'StatusController@create')->middleware('rolecheck:6');
});
Route::group([
'prefix' => 'payment-batches'
], function() {
Route::get('/', 'PaymentBatchController@index')->middleware('rolecheck:6');
Route::get('{id}/download', 'PaymentBatchController@download')->middleware('rolecheck:6');
});
Route::group([
'prefix' => 'postulations'
], function() {