avance solo de la vista del formulario y validaciones del negocio

This commit is contained in:
Jose Sanchez
2023-08-22 16:58:22 -04:00
parent 534a66ff0b
commit abd8354e71
5 changed files with 96 additions and 31 deletions

View File

@@ -3,6 +3,7 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\Mail\VerificationEmail; use App\Mail\VerificationEmail;
use App\Models\Category;
use App\Models\Shop; use App\Models\Shop;
use App\Models\User; use App\Models\User;
use Illuminate\Http\Request; use Illuminate\Http\Request;
@@ -23,7 +24,10 @@ class TypeBusinessController extends Controller
*/ */
public function index() public function index()
{ {
return view('frontend.registro-comercio.views.business.index');
$categories = Category::all();
return view('frontend.registro-comercio.views.business.index', compact('categories'));
} }
@@ -47,41 +51,45 @@ class TypeBusinessController extends Controller
{ {
// Validación de los campos de registro // Validación de los campos de registro
$validator = Validator::make($request->all(), [ $validator = Validator::make($request->all(), [
'email' => ['required', 'string', 'email', 'max:255', 'unique:'.User::class], '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()], '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) { 'g-recaptcha-response' => ['required', function ($attribute, $value, $fail) {
$recaptcha = new Recaptcha(env('RECAPTCHA_SECRET_KEY')); $recaptcha = new Recaptcha(env('RECAPTCHA_SECRET_KEY'));
$recaptcha->verify($value); $recaptcha->verify($value);
}], }],
]); ]);
if ($validator->fails()) { // if ($validator->fails()) {
// Si la validación falla, puedes redirigir o devolver una respuesta con los errores // // Si la validación falla, puedes redirigir o devolver una respuesta con los errores
return redirect()->back()->withErrors($validator)->withInput(); // return redirect()->back()->withErrors($validator)->withInput();
} // }
$confirmation_code = Str::random(25); // $confirmation_code = Str::random(25);
$user = new User(); // $user = new User();
$user->email = $request->input('email'); // $user->email = $request->input('email');
$user->password = Hash::make($request->input('password')); // $user->password = Hash::make($request->input('password'));
$user->user_type = 'seller'; // $user->user_type = 'seller';
$user->confirmation_code = $confirmation_code; // $user->confirmation_code = $confirmation_code;
$user->save(); // $user->save();
Mail::to($user->email)->send(new VerificationEmail($user)); // Mail::to($user->email)->send(new VerificationEmail($user));
// Intentar iniciar sesión automáticamente // // Intentar iniciar sesión automáticamente
if (Auth::attempt($request->only('email', 'password'))) { // if (Auth::attempt($request->only('email', 'password'))) {
if (Auth::user()->email_verified_at) { // if (Auth::user()->email_verified_at) {
// La cuenta está verificada, redirige a la página deseada // // La cuenta está verificada, redirige a la página deseada
return redirect()->route('shop.view.signup.complete'); // return redirect()->route('shop.view.signup.complete');
} else { // } else {
// La cuenta no está verificada, redirige a la página de verificación de correo electrónico // // La cuenta no está verificada, redirige a la página de verificación de correo electrónico
return redirect()->route('shop.view.email.verification'); // return redirect()->route('shop.view.email.verification');
} // }
} // }
} }
/** /**

View File

@@ -196,10 +196,10 @@ a {
a, a,
a:hover, a:hover,
a:focus { a:focus {
text-decoration: none; /* text-decoration: none;
display: inline-block; display: inline-block;
color: inherit; color: inherit;
outline: none; outline: none; */
} }
textarea { textarea {

View File

@@ -586,7 +586,7 @@
font-weight: 700; font-weight: 700;
color: #1c2437; color: #1c2437;
font-family: "Roboto", sans-serif; font-family: "Roboto", sans-serif;
text-transform: uppercase; /* text-transform: uppercase; */
} }
.ugf-content form .form-group .form-control { .ugf-content form .form-group .form-control {
height: 60px; height: 60px;

View File

@@ -170,7 +170,7 @@ return [
'minute' => 'minuto', 'minute' => 'minuto',
'mobile' => 'móvil', 'mobile' => 'móvil',
'month' => 'mes', 'month' => 'mes',
'name' => 'Nombre', 'name' => 'nombre',
'password' => 'contraseña', 'password' => 'contraseña',
'password_confirmation' => 'confirmación de la contraseña', 'password_confirmation' => 'confirmación de la contraseña',
'phone' => 'teléfono', 'phone' => 'teléfono',
@@ -234,7 +234,8 @@ return [
'nfc_amount' => 'Cantidad de comprobantes', 'nfc_amount' => 'Cantidad de comprobantes',
'nfc_next' => 'Próximo NFC a emitir', 'nfc_next' => 'Próximo NFC a emitir',
'nfc_select' => 'Estado de NFC', 'nfc_select' => 'Estado de NFC',
'g-recaptcha-response' => 'reCAPTCHA' 'g-recaptcha-response' => 'reCAPTCHA',
'categories_id' => 'categoría'
], ],
]; ];

View File

@@ -218,6 +218,10 @@
<div class="container"> <div class="container">
<div class="form-row col-md-9"> <div class="form-row col-md-9">
<h5>Perfil de usuario</h5>
<div class="border border-vertical mb-4"></div>
<div class="form-group mb-4"> <div class="form-group mb-4">
<label for="email" id="emailLabel">Correo Electrónico</label> <label for="email" id="emailLabel">Correo Electrónico</label>
<input type="email" name="email" id="email" placeholder="{{ __('Email') }}" class="form-control email @error('email') is-invalid @enderror" value="{{ old('email') }}"> <input type="email" name="email" id="email" placeholder="{{ __('Email') }}" class="form-control email @error('email') is-invalid @enderror" value="{{ old('email') }}">
@@ -237,12 +241,64 @@
<div class="form-group mb-4"> <div class="form-group mb-4">
<label for="password_confirmation">Repetir Contraseña</label> <label for="password_confirmation">Repetir Contraseña</label>
<input type="password" name="password_confirmation" id="password_confirmation" placeholder="{{ __('Confirm Password') }}" class="form-control @error('password_confirmation') is-invalid @enderror"> <input type="password" name="password_confirmation" id="password_confirmation" placeholder="{{ __('Confirm Password') }}" class="form-control @error('password_confirmation') is-invalid @enderror">
@error('password_confirmation') @error('password_confirmation')
<div class="invalid-feedback">{{ $message }}</div> <div class="invalid-feedback">{{ $message }}</div>
@enderror @enderror
</div> </div>
<h5>Datos del negocio</h5>
<div class="border border-vertical mb-4"></div>
<!-- Aquí va el título "Datos de negocio" -->
<div class="form-group mb-4">
<label for="categories_id" id="categoryLabel">Categoría del negocio</label>
<select name="categories_id" class="form-control @error('categories_id') is-invalid @enderror" id="categories_id">
<option value="" {{ old('categories_id') == '' ? 'selected' : '' }}>Seleccione una categoría</option>
@foreach ($categories as $category)
<option value="{{ $category->value }}" {{ old('categories_id', optional($category->value)) == $category->value ? 'selected' : '' }}>{{ $category->name }}</option>
@endforeach
</select>
@error('categories_id')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
</div>
<div class="form-group mb-4">
<label for="name" id="nameLabel">Nombre de la tienda</label>
<input type="text" name="name" id="name" placeholder="Nombre" class="form-control name @error('name') is-invalid @enderror" value="{{ old('name') }}">
@error('name')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
</div>
<div class="form-group mb-4">
<label for="address" id="addressLabel">Dirección</label>
<input type="text" name="address" id="address" placeholder="Dirección" class="form-control address @error('address') is-invalid @enderror" value="{{ old('address') }}">
@error('address')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
</div>
<div class="form-group mb-4">
<div class="form-check">
<input class="form-check-input @error('terms') is-invalid @enderror" type="checkbox" name="terms" id="terms" value="1" {{ old('terms') ? 'checked' : '' }}>
<label>
Estoy de acuerdo con la <a href="{{ route('terms') }}" target="_blank">Términos y Condiciones</a>, <a href="{{ route('returnpolicy') }}" target="_blank">Política de Devoluciones</a> & <a href="{{ route('privacypolicy') }}" target="_blank">Política de Privacidad</a>
</label>
</div>
@if ($errors->has('terms'))
{{ $errors->first('terms') }}
<p style="font-size: 80%;" class="text-danger">{{ $errors->first('terms') }}</p>
@endif
</div>
<div class="form-group mb-4"> <div class="form-group mb-4">
<div class="g-recaptcha" data-sitekey="{{ env('RECAPTCHA_SITE_KEY') }}"></div> <div class="g-recaptcha" data-sitekey="{{ env('RECAPTCHA_SITE_KEY') }}"></div>
@@ -273,7 +329,7 @@
<div class="form-group mb-4"> <div class="form-group mb-4">
<label for="inputMail" id="phoneLabel">Teléfono</label> <label for="inputMail" id="phoneLabel">Teléfono</label>
<input type="number" placeholder="Teléfono" class="form-control phone" required> <input type="number" placeholder="Teléfono" class="form-control phone" required>
<a id="emailLink" style="text-decoration: underline; margin-left: 250px;" href="#">Utilice el correo electrónico en su lugar</a> <a id="emailLink" style="text-decoration: underline;" href="#">Utilice el correo electrónico en su lugar</a>
</div> </div>
<div class="form-group mb-4"> <div class="form-group mb-4">