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

@@ -9,212 +9,154 @@ use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Str;
use Socialite;
use Route;
use Config;
use Kreait\Laravel\Firebase\Facades\Firebase;
class AuthController extends Controller
{
public function login(Request $request) {
public function login(Request $request)
{
$request->validate([
'email' => 'required|string|email',
'email' => 'required|string|email',
'password' => 'required|string',
//'remember_me' => 'boolean'
]);
$credentials = request(['email', 'password']);
if(!Auth::attempt($credentials))
return response()->json([
'message' => 'Unauthorized'
], 401);
$user = $request->user();
if (!Auth::attempt($request->only('email', 'password'))) {
return response()->json(['message' => 'Unauthorized'], 401);
}
$user = $request->user();
$tokenResult = $user->createToken('Personal Access Token');
$token = $tokenResult->token;
if ($request->remember_me)
$token->expires_at = Carbon::now()->addWeeks(1);
$token->save();
if ($request->remember_me) {
$tokenResult->token->expires_at = Carbon::now()->addWeeks(1);
$tokenResult->token->save();
}
return response()->json([
'access_token' => $tokenResult->accessToken,
'token_type' => 'Bearer',
'expires_at' => Carbon::parse(
$tokenResult->token->expires_at
)->toDateTimeString(),
'userid' => $user->id,
'role' => $user->role_id,
'verified' => $user->phone_verified_at,
'reported' => $user->reported
'token_type' => 'Bearer',
'expires_at' => Carbon::parse($tokenResult->token->expires_at)->toDateTimeString(),
'userid' => $user->id,
'role' => $user->role_id,
'verified' => $user->phone_verified_at,
'reported' => $user->reported,
]);
}
public function fb(Request $request)
public function firebase(Request $request)
{
$params = [
'grant_type' => 'social',
'client_id' => '2', // it should be password grant client
'client_secret' => config('app.secret'),
'provider' => 'facebook',
'access_token' => $request->access_token // access token from provider
];
$request->validate(['firebase_token' => 'required|string']);
$requestToken = Request::create("/oauth/token", "POST", $params);
$response = app()->handle($requestToken);
$json = json_decode($response->content(), true);
$user = User::where('social_id', $request->social_id) -> first();
$frontend = json_encode([
'token_type' => $json['token_type'],
'expires_at' => $json['expires_in'],
'access_token' => $json['access_token'],
'userid' => $user->id,
'role' => $user->role_id,
'verified' => $user->phone_verified_at,
'reported' => $user->reported
]);
return $frontend;
try {
$verifiedToken = Firebase::auth()->verifyIdToken($request->firebase_token);
} catch (\Throwable $e) {
return response()->json(['message' => 'Token de Firebase inválido'], 401);
}
$uid = $verifiedToken->claims()->get('sub');
$email = $verifiedToken->claims()->get('email');
$name = $verifiedToken->claims()->get('name') ?? 'Usuario';
// Buscar por firebase uid primero, luego por email para hacer merge si ya existía cuenta
$user = User::where('social_id', 'firebase|' . $uid)->first();
if (!$user && $email) {
$user = User::where('email', $email)->first();
}
if ($user) {
// Vincular uid de Firebase si aún no lo tiene (merge de cuenta existente)
if (!$user->social_id) {
$user->social_id = 'firebase|' . $uid;
$user->save();
}
} else {
$user = User::create([
'name' => $name,
'email' => $email,
'social_id'=> 'firebase|' . $uid,
'role_id' => 1,
'password' => null,
]);
}
$tokenResult = $user->createToken('Firebase Token');
return response()->json([
'access_token' => $tokenResult->accessToken,
'token_type' => 'Bearer',
'expires_at' => Carbon::parse($tokenResult->token->expires_at)->toDateTimeString(),
'userid' => $user->id,
'role' => $user->role_id,
'verified' => $user->phone_verified_at,
'reported' => $user->reported,
]);
}
public function google(Request $request)
{
$params = [
'grant_type' => 'social',
'client_id' => '2', // it should be password grant client
'client_secret' => config('app.secret'),
'provider' => 'google',
'access_token' => $request->access_token // access token from provider
];
$requestToken = Request::create("/oauth/token", "POST", $params);
$response = app()->handle($requestToken);
$json = json_decode($response->content(), true);
$user = User::where('social_id', $request->social_id) -> first();
$frontend = json_encode([
'token_type' => $json['token_type'],
'expires_at' => $json['expires_in'],
'access_token' => $json['access_token'],
'userid' => $user->id,
'role' => $user->role_id,
'verified' => $user->phone_verified_at,
'reported' => $user->reported
]);
return $frontend;
}
public function apple(Request $request)
{
$params = [
'grant_type' => 'social',
'client_id' => '2', // it should be password grant client
'client_secret' => config('app.secret'),
'provider' => 'apple',
'access_token' => $request->access_token // access token from provider
];
$requestToken = Request::create("/oauth/token", "POST", $params);
$response = app()->handle($requestToken);
$json = json_decode($response->content(), true);
$user = User::where('social_id', $request->social_id) -> first();
$frontend = json_encode([
'token_type' => $json['token_type'],
'expires_at' => $json['expires_in'],
'access_token' => $json['access_token'],
'userid' => $user->id,
'role' => $user->role_id,
'verified' => $user->phone_verified_at,
'reported' => $user->reported
]);
return $frontend;
}
public function register(Request $request)
{
$rules = [
'name' => 'required|string|regex:/(^[a-zA-Z\s ÑñÁáÉéÍíÓóÚúÜü]+$)+/',
'email' => 'required|string|email|unique:users',
'phone' => 'required|numeric',
$validator = Validator::make($request->all(), [
'name' => 'required|string|regex:/(^[a-zA-Z\s ÑñÁáÉéÍíÓóÚúÜü]+$)+/',
'email' => 'required|string|email|unique:users',
'phone' => 'required|numeric',
'password' => 'required|string',
'secret' => 'required|string'
];
$messages = [
'email.unique' => 'Correo electronico ya registrado',
];
$validator = Validator::make($request->all(), $rules, $messages);
'secret' => 'required|string',
], [
'email.unique' => 'Correo electrónico ya registrado',
]);
if ($validator->fails()) {
return response()->json([
'message' => $validator->messages()->first()
], 422);
return response()->json(['message' => $validator->messages()->first()], 422);
}
if ($request->secret == config('app.pass')) {
/**$verify = new Verify_accounts;
$verify->name = $request->name;
$verify->email = $request->email;
$verify->password = bcrypt($request->password);
$verify->token = Str::random(70);
$verify->save(); */
$user = new User;
$user->name = $request->name;
$user->email = $request->email;
$user->phone = $request->phone;
$user->password = bcrypt($request->password);
$user->role_id = "1";
$user->save();
return response()->json([
'message' => 'Successfully created user!'
], 201);
} else {
return response()->json([
'message' => 'Unauthorized request'
], 401);
if ($request->secret !== config('app.pass')) {
return response()->json(['message' => 'Unauthorized request'], 401);
}
$user = User::create([
'name' => $request->name,
'email' => $request->email,
'phone' => $request->phone,
'password' => bcrypt($request->password),
'role_id' => 1,
]);
return response()->json(['message' => 'Successfully created user!'], 201);
}
public function logout(Request $request)
{
$request->user()->token()->revoke();
return response()->json([
'message' => 'Successfully logged out'
]);
$request->user()->currentAccessToken()->revoke();
return response()->json(['message' => 'Successfully logged out']);
}
/**
* Get the authenticated User
*
* @return [json] user object
*/
public function user(Request $request)
{
return response()->json($request->user());
}
public function checkemail($token)
{
$verifyUser = Verify_accounts::where('token', $token)->first();
$user = new User;
$user->name = $verifyUser->name;
$user->email = $verifyUser->email;
$user->password = $verifyUser->password;
$user->role_id = "1";
$user->save();
Verify_accounts::destroy($verifyUser->id);
}
public function verify(Request $request)
{
$user = $request->user();
$user = $request->user();
$user->phone = $request->phone;
$user->phone_verified_at = now();
$user->save();
$user->phone = $request->phone;
$user->phone_verified_at = date("Y-m-d H:i:s");
return response()->json(['message' => 'Successfully updated']);
}
$user->save();
public function checkemail($token)
{
$verifyUser = Verify_accounts::where('token', $token)->firstOrFail();
return response()->json([
'message' => 'Successfully updated'
]);
User::create([
'name' => $verifyUser->name,
'email' => $verifyUser->email,
'password' => $verifyUser->password,
'role_id' => 1,
]);
Verify_accounts::destroy($verifyUser->id);
}
}

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([

View File

@@ -137,16 +137,11 @@ class NoHomeController extends Controller
if (Carbon::now()->diffInMinutes($contract->appointment, false) < 10) {
return response()->json($contract);
} else {
OneSignal::sendNotificationUsingTags(
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",
array(
["field" => "tag", "key" => "iChamba_ID", "relation" => "=", "value" => $client->id]
),
$url = null,
$data = null,
$buttons = null,
$schedule = null,
$headings = $client->name . ", tu proveedor del servicio ha llegado"
(string) $client->id,
null, null, null, null,
$client->name . ", tu proveedor del servicio ha llegado"
);
return response()->json([
//'message' => 'Por favor espere a los 10 minutos de tolerancia de la hora acordada'
@@ -232,16 +227,11 @@ class NoHomeController extends Controller
'message' => 'Ausencia registrada con éxito, nos comunicaremos con usted por correo electrónico en caso de alguna circunstancia'
]);
} else {
OneSignal::sendNotificationUsingTags(
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",
array(
["field" => "tag", "key" => "iChamba_ID", "relation" => "=", "value" => $client->id]
),
$url = null,
$data = null,
$buttons = null,
$schedule = null,
$headings = $client->name . ", tu proveedor del servicio ha llegado"
(string) $client->id,
null, null, null, null,
$client->name . ", tu proveedor del servicio ha llegado"
);
return response()->json([
'order' => 'wait',

View File

@@ -4,6 +4,7 @@ namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Illuminate\Pagination\LengthAwarePaginator;
use Carbon\Carbon;
use App\Models\User;
use App\Models\Suppliers;
@@ -25,32 +26,71 @@ class PaymentController extends Controller
public function index(Request $request)
{
//
$request->session()->put('search', $request
->has('search') ? strip_tags($request->get('search')) : ($request->session()
->has('search') ? strip_tags($request->session()->get('search')) : ''));
$dateFrom = $request->has('date_from') ? strip_tags($request->get('date_from')) : $request->session()->get('pay_date_from', '');
$dateTo = $request->has('date_to') ? strip_tags($request->get('date_to')) : $request->session()->get('pay_date_to', '');
$request->session()->put('field', $request
->has('field') ? strip_tags($request->get('field')) : ($request->session()
->has('field') ? strip_tags($request->session()->get('field')) : 'id'));
if ($request->has('date_from')) $request->session()->put('pay_date_from', $dateFrom);
if ($request->has('date_to')) $request->session()->put('pay_date_to', $dateTo);
$request->session()->put('sort', $request
->has('sort') ? strip_tags($request->get('sort')) : ($request->session()
->has('sort') ? strip_tags($request->session()->get('sort')) : 'asc'));
$contracts = FinishedContracts::with(['suppliers.user', 'suppliers.banks'])
->where('status_id', 3)
->where('paid', false)
->where('transaction_id', '!=', 'NO APPLY')
->when($dateFrom, fn($q) => $q->whereDate('appointment', '>=', $dateFrom))
->when($dateTo, fn($q) => $q->whereDate('appointment', '<=', $dateTo))
->get();
//$headers = $request->get('header') != '' ? $request->get('header') : -1;
$field = in_array($request->input('field'), ['company_name', 'email', 'rfc_curp', 'clabe', 'bank', 'contract_count', 'total_amount', 'total_revenue', 'total_iva', 'total_isr', 'total_fee'])
? $request->input('field')
: 'total_amount';
$sort = $request->input('sort', 'desc') === 'asc' ? 'asc' : 'desc';
$payments = new FinishedContracts();
$payments = $payments->where('status_id', 3)->where('paid', false)->where('transaction_id', '!=', 'NO APPLY')
->orderBy(strip_tags($request->session()->get('field')), strip_tags($request->session()->get('sort')))
->paginate(10);
$grouped = $contracts->groupBy('supplier_id')->map(function ($group) {
$first = $group->first();
return (object) [
'suppliers' => $first->suppliers,
'contract_count' => $group->count(),
'total_amount' => $group->sum('amount'),
'total_revenue' => $group->sum('revenue'),
'total_iva' => $group->sum('IVA'),
'total_isr' => $group->sum('ISR'),
'total_fee' => $group->sum('ichamba_fee'),
];
})->values();
$sortCallbacks = [
'company_name' => fn($r) => optional($r->suppliers)->company_name,
'email' => fn($r) => optional(optional($r->suppliers)->user)->email,
'rfc_curp' => fn($r) => optional($r->suppliers)->RFC ?: optional($r->suppliers)->CURP,
'clabe' => fn($r) => optional($r->suppliers)->clabe,
'bank' => fn($r) => optional(optional($r->suppliers)->banks)->name,
'contract_count' => fn($r) => $r->contract_count,
'total_amount' => fn($r) => $r->total_amount,
'total_revenue' => fn($r) => $r->total_revenue,
'total_iva' => fn($r) => $r->total_iva,
'total_isr' => fn($r) => $r->total_isr,
'total_fee' => fn($r) => $r->total_fee,
];
$grouped = $sort === 'asc'
? $grouped->sortBy($sortCallbacks[$field])->values()
: $grouped->sortByDesc($sortCallbacks[$field])->values();
$perPage = 15;
$page = $request->input('page', 1);
$payments = new LengthAwarePaginator(
$grouped->slice(($page - 1) * $perPage, $perPage)->values(),
$grouped->count(),
$perPage,
$page,
['path' => $request->url(), 'query' => $request->query()]
);
if ($request->ajax()) {
return view('payments.index', compact('payments'));
} else {
return view('payments.ajax', compact('payments'));
}
return view('payments.index', compact('payments', 'dateFrom', 'dateTo'));
} else {
return view('payments.ajax', compact('payments', 'dateFrom', 'dateTo'));
}
}
public function cardsindex(Request $request)

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

View File

@@ -367,8 +367,12 @@ class SupplierController extends Controller
if ($supplier->location) {
$rules = [
'name' => 'required|string',
'rfc' => 'nullable|string',
'categories' => 'required|string',
'tags' => 'nullable|string',
'bank' => 'nullable|numeric',
'bank_account' => 'nullable|string',
'fee' => 'nullable|numeric',
'address' => 'string',
'lat' => 'numeric|nullable',
'lng' => 'numeric|nullable',
@@ -411,8 +415,12 @@ class SupplierController extends Controller
} else {
$rules = [
'name' => 'required|string',
'rfc' => 'nullable|string',
'categories' => 'required|string',
'tags' => 'nullable|string',
'bank' => 'nullable|numeric',
'bank_account' => 'nullable|string',
'fee' => 'nullable|numeric',
'address' => 'required|string',
'lat' => 'required|numeric',
'lng' => 'required|numeric',
@@ -423,8 +431,12 @@ class SupplierController extends Controller
} else {
$rules = [
'name' => 'required|string',
'rfc' => 'nullable|string',
'categories' => 'required|string',
'tags' => 'nullable|string',
'bank' => 'nullable|numeric',
'bank_account' => 'nullable|string',
'fee' => 'nullable|numeric',
'address' => 'required|string',
'lat' => 'required|numeric',
'lng' => 'required|numeric',
@@ -537,7 +549,10 @@ class SupplierController extends Controller
$supplier->regimen = $request->taxes_id;
*/
$supplier->minimun_fee = 150;
$supplier->RFC = strip_tags($request->rfc);
$supplier->clabe = strip_tags($request->bank_account);
$supplier->bank_id = $request->bank;
$supplier->minimun_fee = $request->fee ?? 150;
$supplier->address = strip_tags($request->address);
if($request->reference_options != 5) {
$supplier->references = strip_tags($request->reference_options);
@@ -595,7 +610,10 @@ class SupplierController extends Controller
$supplier->regimen = $request->taxes_id;
*/
$supplier->minimun_fee = 150;
$supplier->RFC = strip_tags($request->rfc);
$supplier->clabe = strip_tags($request->bank_account);
$supplier->bank_id = $request->bank;
$supplier->minimun_fee = $request->fee ?? 150;
$supplier->address = strip_tags($request->address);
if($request->reference_options != 5) {
$supplier->references = strip_tags($request->reference_options);

View File

@@ -36,6 +36,7 @@ class Kernel extends HttpKernel
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
\App\Http\Middleware\ClearSearchOnSectionChange::class,
],
'api' => [

View File

@@ -0,0 +1,23 @@
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
class ClearSearchOnSectionChange
{
public function handle(Request $request, Closure $next)
{
$section = explode('/', trim($request->path(), '/'))[0];
$lastSection = $request->session()->get('_last_section');
if ($lastSection && $lastSection !== $section) {
$request->session()->forget(['search', 'field', 'sort']);
}
$request->session()->put('_last_section', $section);
return $next($request);
}
}

View File

@@ -19,7 +19,7 @@ class Cors
'https://jobhero.consultoria-as.com',
'https://jobhero-api.consultoria-as.com',
'capacitor://localhost',
'http://localhost:8100'
'http://localhost:4200'
];
$origin = $request->server('HTTP_ORIGIN');