Fix búsqueda en tiempo real, paginación, OneSignal, bancos/categorías y vistas auth

- ajaxcrud.js: fix race condition en búsqueda, abort de requests en vuelo
- Layout: mover @yield('js') después de app.js para corregir orden de carga
- Paginación: useBootstrapFour() + eliminar wrappers <ul> duplicados en 17 vistas
- OneSignal: migrar de UserTag iChamba_ID a ExternalId en controladores
- API: agregar endpoint GET /api/banks y campos rfc/bank/bank_account/fee en hero()
- Seeders: BanksSeeder (239 bancos) y CategoriesSeeder (100 categorías)
- Auth views: corregir padding/scroll en register, login, password reset

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-16 21:21:44 -06:00
parent fb5caeab6e
commit b34622b289
71 changed files with 3303 additions and 1576 deletions

View File

@@ -357,16 +357,11 @@ class ContractController extends Controller
Postulations::destroy($request->postulation_id);
//Notify the suppliers that they have been hired
OneSignal::sendNotificationUsingTags(
OneSignal::sendNotificationToExternalUser(
"Dirígete a la sección de postulaciones contratadas en la app para ver más detalles",
array(
["field" => "tag", "key" => "iChamba_ID", "relation" => "=", "value" => $supplier->user_id]
),
$url = null,
$data = null,
$buttons = null,
$schedule = null,
$headings = "Proveedor: has sido contratado"
(string) $supplier->user_id,
null, null, null, null,
"Proveedor: has sido contratado"
);
// TODO: Configurar WhatsApp cuando esté disponible
// Whatsapp::send($supplier->user->phone, Messages\TemplateMessage::create()
@@ -377,16 +372,12 @@ class ContractController extends Controller
// ])));
//Schedule a notification for the suppliers about their appointment
OneSignal::sendNotificationUsingTags(
OneSignal::sendNotificationToExternalUser(
"Tienes un servicio en " . $contract->address . " hoy en 30 minutos. Dirígete a la sección de postulaciones contratados para más detalles",
array(
["field" => "tag", "key" => "iChamba_ID", "relation" => "=", "value" => $supplier->user_id]
),
$url = null,
$data = null,
$buttons = null,
$schedule = $delay_UTC,
$headings = "Proveedor, no olvides tu cita de hoy"
(string) $supplier->user_id,
null, null, null,
$delay_UTC,
"Proveedor, no olvides tu cita de hoy"
);
// TODO: Configurar WhatsApp cuando esté disponible
// Whatsapp::send($supplier->user->phone, Messages\TemplateMessage::create()
@@ -398,16 +389,12 @@ class ContractController extends Controller
//Schedule a notification for the users about their appointment
OneSignal::sendNotificationUsingTags(
OneSignal::sendNotificationToExternalUser(
"Tienes un servicio agendado hoy en " . $contract->address . " en 30 minutos. Dirígete a la sección de contratos confirmados para más detalles",
array(
["field" => "tag", "key" => "iChamba_ID", "relation" => "=", "value" => $user->id]
),
$url = null,
$data = null,
$buttons = null,
$schedule = $delay_UTC,
$headings = $user->name . ", no olvides tu cita de hoy"
(string) $user->id,
null, null, null,
$delay_UTC,
$user->name . ", no olvides tu cita de hoy"
);
// TODO: Configurar WhatsApp cuando esté disponible
// Whatsapp::send($user->phone, Messages\TemplateMessage::create()
@@ -497,16 +484,11 @@ class ContractController extends Controller
Postulations::destroy($request->postulation_id);
//Notify the suppliers that they have been hired
OneSignal::sendNotificationUsingTags(
OneSignal::sendNotificationToExternalUser(
"Dirígete a la sección de postulaciones contratadas en la app para ver más detalles",
array(
["field" => "tag", "key" => "iChamba_ID", "relation" => "=", "value" => $supplier->user_id]
),
$url = null,
$data = null,
$buttons = null,
$schedule = null,
$headings = "Proveedor: has sido contratado"
(string) $supplier->user_id,
null, null, null, null,
"Proveedor: has sido contratado"
);
// TODO: Configurar WhatsApp cuando esté disponible
// Whatsapp::send($supplier->user->phone, Messages\TemplateMessage::create()
@@ -517,16 +499,12 @@ class ContractController extends Controller
// ])));
//Schedule a notification for the suppliers about their appointment
OneSignal::sendNotificationUsingTags(
OneSignal::sendNotificationToExternalUser(
"Tienes un servicio en " . $contract->address . " hoy en 30 minutos. Dirígete a la sección de postulaciones contratados para más detalles",
array(
["field" => "tag", "key" => "iChamba_ID", "relation" => "=", "value" => $supplier->user_id]
),
$url = null,
$data = null,
$buttons = null,
$schedule = $delay_UTC,
$headings = "Proveedor, no olvides tu cita de hoy"
(string) $supplier->user_id,
null, null, null,
$delay_UTC,
"Proveedor, no olvides tu cita de hoy"
);
// TODO: Configurar WhatsApp cuando esté disponible
// Whatsapp::send($supplier->user->phone, Messages\TemplateMessage::create()
@@ -538,16 +516,12 @@ class ContractController extends Controller
//Schedule a notification for the users about their appointment
OneSignal::sendNotificationUsingTags(
OneSignal::sendNotificationToExternalUser(
"Tienes un servicio agendado hoy en " . $contract->address . " en 30 minutos. Dirígete a la sección de contratos confirmados para más detalles",
array(
["field" => "tag", "key" => "iChamba_ID", "relation" => "=", "value" => $user->id]
),
$url = null,
$data = null,
$buttons = null,
$schedule = $delay_UTC,
$headings = $user->name . ", no olvides tu cita de hoy"
(string) $user->id,
null, null, null,
$delay_UTC,
$user->name . ", no olvides tu cita de hoy"
);
// TODO: Configurar WhatsApp cuando esté disponible
// Whatsapp::send($user->phone, Messages\TemplateMessage::create()
@@ -786,16 +760,11 @@ class ContractController extends Controller
CurrentContracts::destroy($request->contract_id);
OneSignal::sendNotificationUsingTags(
OneSignal::sendNotificationToExternalUser(
"El servicio en " . $fcontract->address . " el día " . substr($fcontract->appointment, 0, 10) . "ha sido cancelado. Dírigeta a la sección de servicios contratados para más detalles",
array(
["field" => "tag", "key" => "iChamba_ID", "relation" => "=", "value" => $supplier->user_id]
),
$url = null,
$data = null,
$buttons = null,
$schedule = null,
$headings = "Proveedor: un servicio ha sido cancelado"
(string) $supplier->user_id,
null, null, null, null,
"Proveedor: un servicio ha sido cancelado"
);
return response()->json([
@@ -867,16 +836,11 @@ class ContractController extends Controller
$payment->status_id = null;
$payment->save();
OneSignal::sendNotificationUsingTags(
OneSignal::sendNotificationToExternalUser(
"El servicio en " . $fcontract->address . " el día " . substr($fcontract->appointment, 0, 10) . " ha sido iniciado. Dírigeta a la sección de servicios contratados para más detalles",
array(
["field" => "tag", "key" => "iChamba_ID", "relation" => "=", "value" => $fcontract->user_id]
),
$url = null,
$data = null,
$buttons = null,
$schedule = null,
$headings = "Usuario: el proveedor ha iniciado el servicio"
(string) $fcontract->user_id,
null, null, null, null,
"Usuario: el proveedor ha iniciado el servicio"
);
return response()->json([