Fix envío reset password con notificación directa
This commit is contained in:
@@ -3,72 +3,122 @@
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\Horario;
|
||||
use Illuminate\Routing\Controller;
|
||||
use App\Models\User;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Routing\Controller;
|
||||
|
||||
class HorarioController extends Controller
|
||||
{
|
||||
|
||||
public function __construct() {
|
||||
$this->middleware('can:areacode.index')->only('index','show');
|
||||
$this->middleware('can:areacode.create')->only('create','store');
|
||||
$this->middleware('can:areacode.edit')->only('edit','update');
|
||||
$this->middleware('can:areacode.destroy')->only('destroy');
|
||||
$this->middleware('can:horario.index')->only('index','show');
|
||||
$this->middleware('can:horario.create')->only('create','store');
|
||||
$this->middleware('can:horario.edit')->only('edit','update');
|
||||
$this->middleware('can:horario.destroy')->only('destroy');
|
||||
}
|
||||
public function index()
|
||||
{
|
||||
$areacodes = Horario::all();
|
||||
return view('areacode.index',compact('areacodes'));
|
||||
$usuarios = User::with(['roles'])->has('horarios')->get();
|
||||
|
||||
return view('horario.index',compact('usuarios'));
|
||||
}
|
||||
|
||||
public function create()
|
||||
{
|
||||
return view('areacode.create');
|
||||
$usuarios = User::where('code','!=','0')->get();
|
||||
|
||||
$inicioSemana = Carbon::now()->startOfWeek();
|
||||
|
||||
$dias = [];
|
||||
for ($i = 0; $i < 7; $i++) {
|
||||
// Clonamos la fecha de inicio y sumamos los días necesarios
|
||||
$dias[] = $inicioSemana->copy()->addDays($i);
|
||||
}
|
||||
|
||||
return view('horario.create',compact('usuarios','dias'));
|
||||
}
|
||||
|
||||
public function store(Request $request)
|
||||
{
|
||||
$request->validate([
|
||||
'name'=>'required'
|
||||
]);
|
||||
|
||||
$areacode = AreaCode::create($request->all());
|
||||
foreach($request->horarios as $h){
|
||||
|
||||
return redirect()->route('areacode.edit',$areacode)->with('info','El código se creo correctamente');
|
||||
$horario = Horario::create([
|
||||
'user_id'=>$request->user_id,
|
||||
'dia'=>$h['dia'],
|
||||
'entrada'=>$h['entrada'],
|
||||
'comidas'=>$h['comida_salida'],
|
||||
'comidar'=>$h['comida_regreso'],
|
||||
'salida'=>$h['salida'],
|
||||
'status'=>$h['activo'] ?? 0,
|
||||
]);
|
||||
}
|
||||
|
||||
return redirect()->route('horario.edit',$request->user_id)->with('info','El horario se creo correctamente');
|
||||
}
|
||||
|
||||
public function edit(User $user)
|
||||
{
|
||||
$user->load('horarios');
|
||||
|
||||
$usuarios = User::where('code','!=','0')->get();
|
||||
|
||||
// Generar semana actual
|
||||
$inicioSemana = Carbon::now()->startOfWeek();
|
||||
|
||||
$dias = [];
|
||||
for ($i = 0; $i < 7; $i++) {
|
||||
$dias[] = $inicioSemana->copy()->addDays($i);
|
||||
}
|
||||
|
||||
// Normalizar dias en minusculas
|
||||
$horarios = $user->horarios->keyBy(function($item){
|
||||
return strtolower($item->dia);
|
||||
});
|
||||
|
||||
return view('horario.edit', compact('user','usuarios','dias','horarios'));
|
||||
}
|
||||
|
||||
|
||||
public function update(Request $request, User $user)
|
||||
{
|
||||
foreach ($request->horarios as $h) {
|
||||
|
||||
Horario::updateOrCreate(
|
||||
[
|
||||
'user_id' => $user->id,
|
||||
'dia' => strtolower($h['dia']),
|
||||
],
|
||||
[
|
||||
'entrada' => $h['entrada'] ?? null,
|
||||
'comidas' => $h['comida_salida'] ?? null,
|
||||
'comidar' => $h['comida_regreso'] ?? null,
|
||||
'salida' => $h['salida'] ?? null,
|
||||
'status' => $h['activo'] ?? 0,
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
return redirect()
|
||||
->route('horario.edit', $user->id)
|
||||
->with('info','Horario actualizado correctamente');
|
||||
}
|
||||
|
||||
public function show(Horario $horario)
|
||||
{
|
||||
return view('areacode.show',compact('areacode'));
|
||||
|
||||
return view('horario.show',compact('areacode'));
|
||||
}
|
||||
|
||||
|
||||
public function edit(Horario $horario)
|
||||
{
|
||||
return view('areacode.edit',compact('areacode'));
|
||||
}
|
||||
|
||||
|
||||
public function update(Request $request, Horario $horario)
|
||||
{
|
||||
$request->validate([
|
||||
'name'=>'required'
|
||||
]);
|
||||
|
||||
$areacode->update($request->all());
|
||||
return redirect()->route('areacode.edit',$areacode)->with('info','El código se actualizo correctamente');
|
||||
}
|
||||
|
||||
|
||||
public function destroy(Horario $horario)
|
||||
{
|
||||
$areacode->delete();
|
||||
session()->flash('swal',[
|
||||
'icon'=>'success',
|
||||
'title'=>'Eliminado!',
|
||||
'text'=>'Se ha eliminado el registro correctamente'
|
||||
]);
|
||||
return redirect()->route('areacode.index');
|
||||
// $areacode->delete();
|
||||
// session()->flash('swal',[
|
||||
// 'icon'=>'success',
|
||||
// 'title'=>'Eliminado!',
|
||||
// 'text'=>'Se ha eliminado el registro correctamente'
|
||||
// ]);
|
||||
// return redirect()->route('horario.index');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,11 +3,15 @@
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\AreaCode;
|
||||
use App\Models\User;
|
||||
use App\Models\Plantel;
|
||||
use App\Models\User;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Routing\Controller;
|
||||
use Illuminate\Support\Facades\Password;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
use Illuminate\Support\Str;
|
||||
use Spatie\Permission\Models\Role;
|
||||
use Illuminate\Auth\Notifications\ResetPassword;
|
||||
|
||||
class UserController extends Controller
|
||||
{
|
||||
@@ -21,9 +25,8 @@ class UserController extends Controller
|
||||
|
||||
public function index()
|
||||
{
|
||||
$plantels=Plantel::all();
|
||||
$users=User::with('roles')->get();
|
||||
return view('user.index',compact('users','plantels'));
|
||||
$users=User::with(['roles','plantelUsuarios'])->get();
|
||||
return view('user.index',compact('users'));
|
||||
}
|
||||
|
||||
|
||||
@@ -35,13 +38,27 @@ class UserController extends Controller
|
||||
return view('user.create',compact('roles','plantels','codigos'));
|
||||
}
|
||||
|
||||
public function store(Request $request,User $user)
|
||||
public function store(Request $request)
|
||||
{
|
||||
$user= User::create($request->except(['plantels']));
|
||||
$passwordTemporal = Str::random(12);
|
||||
|
||||
$user = User::create([
|
||||
'name' => $request->name,
|
||||
'email' => $request->email,
|
||||
'telefono' => $request->telefono ?? null,
|
||||
'direccion' => $request->direccion ?? null,
|
||||
'code' => $request->code ?? null,
|
||||
'status' => $request->status,
|
||||
'password' => Hash::make($passwordTemporal),
|
||||
]);
|
||||
|
||||
$user->roles()->sync($request->roles);
|
||||
|
||||
$user->plantelUsuarios()->sync($request->plantels);
|
||||
|
||||
$token = Password::createToken($user);
|
||||
$user->notify(new ResetPassword($token));
|
||||
|
||||
return redirect()->route('user.edit',compact('user'))->with('info','Se creó el usuario correctamente');
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
<?php
|
||||
|
||||
namespace App\Mail;
|
||||
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Mail\Mailable;
|
||||
use Illuminate\Mail\Mailables\Content;
|
||||
use Illuminate\Mail\Mailables\Envelope;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
use Illuminate\Mail\Mailables\Address;
|
||||
|
||||
class UserCreated extends Mailable
|
||||
{
|
||||
use Queueable, SerializesModels;
|
||||
|
||||
/**
|
||||
* Create a new message instance.
|
||||
*/
|
||||
public function __construct(public $user)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the message envelope.
|
||||
*/
|
||||
public function envelope(): Envelope
|
||||
{
|
||||
return new Envelope(
|
||||
subject: 'Example Mail',
|
||||
from: new Address(
|
||||
config('mail.from.address'),
|
||||
config('mail.from.name')
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the message content definition.
|
||||
*/
|
||||
public function content(): Content
|
||||
{
|
||||
return new Content(
|
||||
view: 'view.name',
|
||||
);
|
||||
}
|
||||
|
||||
public function attachments(): array
|
||||
{
|
||||
return [];
|
||||
}
|
||||
}
|
||||
@@ -2,11 +2,18 @@
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use App\Models\User;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
|
||||
class Horario extends Model
|
||||
{
|
||||
protected $guarded = [];
|
||||
|
||||
public $timestamps = false;
|
||||
|
||||
public function user(): BelongsTo
|
||||
{
|
||||
return $this->belongsTo(User::class);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -69,6 +69,11 @@ class User extends Authenticatable
|
||||
return $this->hasMany(Note::class);
|
||||
}
|
||||
|
||||
public function horarios() : HasMany
|
||||
{
|
||||
return $this->hasMany(Horario::class);
|
||||
}
|
||||
|
||||
public function codes() : HasMany
|
||||
{
|
||||
return $this->hasMany(Code::class);
|
||||
|
||||
Reference in New Issue
Block a user