From 5e111b437a739fbee4d7226d8179c65be5e598d5 Mon Sep 17 00:00:00 2001 From: Jose Sanchez <54992061+93jose93@users.noreply.github.com> Date: Wed, 23 Aug 2023 15:35:52 -0400 Subject: [PATCH] avance del registro de negocio con google mapas --- .env | 3 + .../Controllers/TypeBusinessController.php | 174 ++++++++++++------ .../views/business/index.blade.php | 140 +++++++++++++- .../views/email-verification.blade.php | 36 +++- .../views/signup-complete.blade.php | 4 +- routes/web.php | 4 +- .../Auth/Middleware/EnsureEmailIsVerified.php | 10 +- 7 files changed, 290 insertions(+), 81 deletions(-) diff --git a/.env b/.env index 7b629cea..530bd669 100644 --- a/.env +++ b/.env @@ -156,3 +156,6 @@ MAILGUN_SECRET="" RECAPTCHA_SITE_KEY=6Le0OJsnAAAAALJsc4xJaNot1HfSmHpYgJYDzTYT RECAPTCHA_SECRET_KEY=6Le0OJsnAAAAAIVMI3KwkxeLsrhI8GF7BjRX9S + +GOOGLE_MAPS_API_KEY=AIzaSyClSVgBcIeXFcWA0Rt-6z6OWoJHrJPl-tI + diff --git a/app/Http/Controllers/TypeBusinessController.php b/app/Http/Controllers/TypeBusinessController.php index c7d77165..3c1efed6 100644 --- a/app/Http/Controllers/TypeBusinessController.php +++ b/app/Http/Controllers/TypeBusinessController.php @@ -4,6 +4,7 @@ namespace App\Http\Controllers; use App\Mail\VerificationEmail; use App\Models\Category; +use App\Models\CategoryTranslation; use App\Models\Shop; use App\Models\User; use Illuminate\Http\Request; @@ -25,9 +26,12 @@ class TypeBusinessController extends Controller public function index() { - $categories = Category::all(); + $categories = CategoryTranslation::all(); - return view('frontend.registro-comercio.views.business.index', compact('categories')); + $apiKey = env('GOOGLE_MAPS_API_KEY'); + + + return view('frontend.registro-comercio.views.business.index', compact('categories', 'apiKey')); } @@ -47,49 +51,97 @@ class TypeBusinessController extends Controller * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ - public function store(Request $request, User $user) + public function store(Request $request, User $user, Shop $shop) { + + // Validación de los campos de registro - $validator = Validator::make($request->all(), [ + // $validator = Validator::make($request->all(), [ + // 'name' => ['required'], + // 'address' => ['required'], + // 'categories_id' => ['required'], + // 'email' => ['required', 'string', 'email', 'max:255', 'unique:'.User::class, 'regex:/^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+.(com|do|net|com.do)$/'], + // 'password' => ['required', 'confirmed', Password::defaults()], + // 'terms' => ['required'], // Agrega esta línea para hacer el campo 'terms' requerido + // 'g-recaptcha-response' => ['required', function ($attribute, $value, $fail) { + // $recaptcha = new Recaptcha(env('RECAPTCHA_SECRET_KEY')); + // $recaptcha->verify($value); + // }], + // ]); + + $validator = Validator::make($request->all(), [ 'name' => ['required'], 'address' => ['required'], 'categories_id' => ['required'], - 'email' => ['required', 'string', 'email', 'max:255', 'unique:'.User::class, 'regex:/^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+.(com|do|net|com.do)$/'], + 'email' => [ + 'required', + 'string', + 'email', + 'max:255', + 'unique:'.User::class, + //VALIDA EL TIPO DE extencion del dominio permitido + 'regex:/^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+.(com|do|net|com.do)$/', + //valida si el correo existe, a traves de los dns + //La función filter_var($value, FILTER_VALIDATE_EMAIL) verifica si la cadena de correo electrónico es una dirección de correo electrónico válida según el filtro FILTER_VALIDATE_EMAIL de PHP. + //La función checkdnsrr($domain, 'MX') verifica si el dominio del correo electrónico tiene registros MX en el sistema de nombres de dominio (DNS). Esto se hace utilizando la función checkdnsrr de PHP con el tipo de registro 'MX'. + //Los tipos de registro DNS válidos son: 'A', 'MX', 'NS', 'SOA', 'PTR', 'CNAME', 'AAAA', 'A6', 'SRV', 'NAPTR', 'TXT', 'ANY'. + function ($attribute, $value, $fail) { + $domain = explode('@', $value)[1]; + if (!filter_var($value, FILTER_VALIDATE_EMAIL) || !checkdnsrr($domain, 'MX')) { + $fail('El correo electrónico no existe.'); + } + }, + ], 'password' => ['required', 'confirmed', Password::defaults()], - 'terms' => ['required'], // Agrega esta línea para hacer el campo 'terms' requerido - 'g-recaptcha-response' => ['required', function ($attribute, $value, $fail) { - $recaptcha = new Recaptcha(env('RECAPTCHA_SECRET_KEY')); - $recaptcha->verify($value); - }], + 'terms' => ['required'], + 'g-recaptcha-response' => [ + 'required', + function ($attribute, $value, $fail) { + $recaptcha = new Recaptcha(env('RECAPTCHA_SECRET_KEY')); + $recaptcha->verify($value); + }, + ], ]); - // if ($validator->fails()) { - // // Si la validación falla, puedes redirigir o devolver una respuesta con los errores - // return redirect()->back()->withErrors($validator)->withInput(); - // } + if ($validator->fails()) { + // Si la validación falla, puedes redirigir o devolver una respuesta con los errores + return redirect()->back()->withErrors($validator)->withInput(); + } - // $confirmation_code = Str::random(25); + $confirmation_code = Str::random(25); - // $user = new User(); - // $user->email = $request->input('email'); - // $user->password = Hash::make($request->input('password')); - // $user->user_type = 'seller'; - // $user->confirmation_code = $confirmation_code; - // $user->save(); + $user = new User(); + $user->email = $request->input('email'); + $user->password = Hash::make($request->input('password')); + $user->user_type = 'seller'; + $user->confirmation_code = $confirmation_code; + $user->category_translation_id = $request->input('categories_id'); + $user->save(); + + // Guardar los campos en el modelo Shop + $shop->user_id = $user->id; + $shop->name = $request->name; + $shop->address = $request->address; + $shop->delivery_pickup_latitude = $request->latitude; + $shop->delivery_pickup_longitude = $request->longitude; + // Aquí puedes guardar otros campos si los tienes + + // Guardar el modelo Shop en la base de datos + $shop->save(); - // Mail::to($user->email)->send(new VerificationEmail($user)); + Mail::to($user->email)->send(new VerificationEmail($user)); - // // Intentar iniciar sesión automáticamente - // if (Auth::attempt($request->only('email', 'password'))) { - // if (Auth::user()->email_verified_at) { - // // La cuenta está verificada, redirige a la página deseada - // return redirect()->route('shop.view.signup.complete'); - // } else { - // // La cuenta no está verificada, redirige a la página de verificación de correo electrónico - // return redirect()->route('shop.view.email.verification'); - // } - // } + // Intentar iniciar sesión automáticamente + if (Auth::attempt($request->only('email', 'password'))) { + if (Auth::user()->email_verified_at) { + // La cuenta está verificada, redirige a la página deseada + return redirect()->route('seller.dashboard'); + } else { + // La cuenta no está verificada, redirige a la página de verificación de correo electrónico + return redirect()->route('shop.view.email.verification'); + } + } } /** @@ -137,41 +189,41 @@ class TypeBusinessController extends Controller // } - public function business_complete_index() - { - $user = auth()->user(); + // public function business_complete_index() + // { + // $user = auth()->user(); - return view('frontend.registro-comercio.views.business.business_complete', compact('user')); - } + // return view('frontend.registro-comercio.views.business.business_complete', compact('user')); + // } - public function business_complete_store(Request $request, Shop $shop) - { - // Validación de los campos - $validator = Validator::make($request->all(), [ - 'name' => ['required'], - 'address' => ['required'], - ]); + // public function business_complete_store(Request $request, Shop $shop) + // { + // // Validación de los campos + // $validator = Validator::make($request->all(), [ + // 'name' => ['required'], + // 'address' => ['required'], + // ]); - // Si la validación falla, puedes redirigir de vuelta con los errores - if ($validator->fails()) { - return redirect()->back()->withErrors($validator)->withInput(); - } + // // Si la validación falla, puedes redirigir de vuelta con los errores + // if ($validator->fails()) { + // return redirect()->back()->withErrors($validator)->withInput(); + // } - // Guardar los campos en el modelo Shop - $shop->user_id = $request->user()->id; - $shop->name = $request->name; - $shop->address = $request->address; - // Aquí puedes guardar otros campos si los tienes + // // Guardar los campos en el modelo Shop + // $shop->user_id = $request->user()->id; + // $shop->name = $request->name; + // $shop->address = $request->address; + // // Aquí puedes guardar otros campos si los tienes - // Guardar el modelo Shop en la base de datos - $shop->save(); + // // Guardar el modelo Shop en la base de datos + // $shop->save(); - // Marcar el campo "shop_verified_at" como verificado en el modelo User - $request->user()->shop_verified_at = now(); // Puedes usar la función "now()" para establecer la fecha y hora actual + // // Marcar el campo "shop_verified_at" como verificado en el modelo User + // $request->user()->shop_verified_at = now(); // Puedes usar la función "now()" para establecer la fecha y hora actual - // Guardar el modelo User en la base de datos - $request->user()->save(); + // // Guardar el modelo User en la base de datos + // $request->user()->save(); - return redirect()->route('seller.dashboard'); - } + // return redirect()->route('seller.dashboard'); + // } } diff --git a/resources/views/frontend/registro-comercio/views/business/index.blade.php b/resources/views/frontend/registro-comercio/views/business/index.blade.php index 96888e1c..9fef0364 100644 --- a/resources/views/frontend/registro-comercio/views/business/index.blade.php +++ b/resources/views/frontend/registro-comercio/views/business/index.blade.php @@ -164,6 +164,10 @@ } + + + + @@ -254,11 +258,12 @@
+ @error('categories_id')
{{ $message }}
@enderror @@ -274,14 +279,47 @@
-
+ {{--
@error('address')
{{ $message }}
@enderror +
--}} + + + +
+ + + + + + @if ($errors->has('address')) +

{{ $errors->first('address') }}

+ @endif + + + +
+ + +
+ + + +
+ +
+
@@ -291,10 +329,7 @@
@if ($errors->has('terms')) - - {{ $errors->first('terms') }} -

{{ $errors->first('terms') }}

- +

{{ $errors->first('terms') }}

@endif
@@ -385,8 +420,8 @@ {{-- --}} - + {{-- --}} @@ -419,3 +454,90 @@ }); + + \ No newline at end of file diff --git a/resources/views/frontend/registro-comercio/views/email-verification.blade.php b/resources/views/frontend/registro-comercio/views/email-verification.blade.php index 47349661..71277402 100644 --- a/resources/views/frontend/registro-comercio/views/email-verification.blade.php +++ b/resources/views/frontend/registro-comercio/views/email-verification.blade.php @@ -78,7 +78,7 @@ Correo verificado correctamente.
- @if($user->user_type == 'customer') + {{-- @if($user->user_type == 'customer') @elseif($user->user_type == 'repair') + @endif --}} + + + @if(auth()->check()) // Verifica si el usuario está autenticado + @if($user->user_type == 'customer') + + @elseif($user->user_type == 'seller') + + @elseif($user->user_type == 'repair') + + @endif + @else + @endif + @endif diff --git a/resources/views/frontend/registro-comercio/views/signup-complete.blade.php b/resources/views/frontend/registro-comercio/views/signup-complete.blade.php index c9e87c22..07167e62 100644 --- a/resources/views/frontend/registro-comercio/views/signup-complete.blade.php +++ b/resources/views/frontend/registro-comercio/views/signup-complete.blade.php @@ -96,13 +96,13 @@ @elseif($user->user_type == 'seller') @elseif($user->user_type == 'repair') @endif diff --git a/routes/web.php b/routes/web.php index 10f15a63..7c7fff3c 100644 --- a/routes/web.php +++ b/routes/web.php @@ -110,8 +110,8 @@ Route::prefix('register')->group(function () { // Route::put('register/business/{id}', [TypeBusinessController::class, 'update'])->name('register.business.update'); // Route::delete('register/business/{id}', [TypeBusinessController::class, 'destroy'])->name('register.business.destroy'); - Route::get('business_complete', [TypeBusinessController::class, 'business_complete_index'])->name('register.business.business_complete_index'); - Route::post('business_store', [TypeBusinessController::class, 'business_complete_store'])->name('register.business.business_complete_store'); + // Route::get('business_complete', [TypeBusinessController::class, 'business_complete_index'])->name('register.business.business_complete_index'); + // Route::post('business_store', [TypeBusinessController::class, 'business_complete_store'])->name('register.business.business_complete_store'); }); //esto es para registrar a los usuario de tipo TALLER diff --git a/vendor/laravel/framework/src/Illuminate/Auth/Middleware/EnsureEmailIsVerified.php b/vendor/laravel/framework/src/Illuminate/Auth/Middleware/EnsureEmailIsVerified.php index 90d33433..e83e85e7 100644 --- a/vendor/laravel/framework/src/Illuminate/Auth/Middleware/EnsureEmailIsVerified.php +++ b/vendor/laravel/framework/src/Illuminate/Auth/Middleware/EnsureEmailIsVerified.php @@ -43,11 +43,13 @@ class EnsureEmailIsVerified return redirect()->route('shop.view.email.verification'); } elseif ($user && $user->user_type == 'repair' && !$user->email_verified_at) { return redirect()->route('shop.view.email.verification'); - } elseif ($user && $user->user_type == 'seller' && $user->email_verified_at && !$user->shop_verified_at) { - return redirect()->route('register.business.business_complete_index'); - } elseif ($user && $user->user_type == 'repair' && $user->email_verified_at && !$user->shop_verified_at) { - return redirect()->route('register.workshop.workshop_complete_index'); } + + // elseif ($user && $user->user_type == 'seller' && $user->email_verified_at && !$user->shop_verified_at) { + // return redirect()->route('register.business.business_complete_index'); + // } elseif ($user && $user->user_type == 'repair' && $user->email_verified_at && !$user->shop_verified_at) { + // return redirect()->route('register.workshop.workshop_complete_index'); + // } return $next($request); }