Fix envío reset password con notificación directa

This commit is contained in:
2026-02-25 09:29:43 -06:00
parent 2533af98c8
commit 969360c1ed
17 changed files with 512 additions and 67 deletions
+89 -39
View File
@@ -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');
}
}
+23 -6
View File
@@ -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');
}