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

@@ -129,30 +129,20 @@ class PostulationController extends Controller
$postulation->details = preg_replace('/\d+/', '', strip_tags($request->details));
$postulation->save();
OneSignal::sendNotificationUsingTags(
OneSignal::sendNotificationToExternalUser(
"Coméntele al Ing. que hay una postulación",
array(
["field" => "tag", "key" => "iChamba_ID", "relation" => "=", "value" => "128"]
),
$url = null,
$data = null,
$buttons = null,
$schedule = null,
$headings = "Admin: hay nueva postulación"
"128",
null, null, null, null,
"Admin: hay nueva postulación"
);
foreach ($suppliers as $supplier) {
if (in_array($category->id, $supplier->categories->pluck('id')->toArray())) {
OneSignal::sendNotificationUsingTags(
OneSignal::sendNotificationToExternalUser(
"Dirígete a la sección de postulaciones 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: hay nueva postulación"
(string) $supplier->user_id,
null, null, null, null,
"Proveedor: hay nueva postulación"
);
// TODO: Configurar WhatsApp cuando esté disponible
@@ -181,16 +171,12 @@ class PostulationController extends Controller
$delay_UTC = Carbon::now()->addMinutes(15)->toString();
OneSignal::sendNotificationUsingTags(
OneSignal::sendNotificationToExternalUser(
"Dirígete a la sección de contratos en la app para ver más detalles",
array(
["field" => "tag", "key" => "iChamba_ID", "relation" => "=", "value" => $user->id]
),
$url = null,
$data = null,
$buttons = null,
$schedule = $delay_UTC,
$headings = "Búsqueda Finalizada"
(string) $user->id,
null, null, null,
$delay_UTC,
"Búsqueda Finalizada"
);
return response()->json([
@@ -231,16 +217,11 @@ class PostulationController extends Controller
if ($time_limit > 0) {
if (in_array($postulation->category_id, $supplier->categories->pluck('id')->toArray())) {
if($supplier->membership == 1) {
OneSignal::sendNotificationUsingTags(
OneSignal::sendNotificationToExternalUser(
"Dirígete a la sección de contratos en la app para ver más detalles",
array(
["field" => "tag", "key" => "iChamba_ID", "relation" => "=", "value" => $postulation->user_id]
),
$url = null,
$data = null,
$buttons = null,
$schedule = null,
$headings = "Un proveedor certificado se ha postulado"
(string) $postulation->user_id,
null, null, null, null,
"Un proveedor certificado se ha postulado"
);
}
// TODO: Configurar WhatsApp cuando esté disponible