Fix envío reset password con notificación directa
This commit is contained in:
@@ -3,72 +3,122 @@
|
|||||||
namespace App\Http\Controllers;
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
use App\Models\Horario;
|
use App\Models\Horario;
|
||||||
use Illuminate\Routing\Controller;
|
use App\Models\User;
|
||||||
|
use Carbon\Carbon;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Routing\Controller;
|
||||||
|
|
||||||
class HorarioController extends Controller
|
class HorarioController extends Controller
|
||||||
{
|
{
|
||||||
|
|
||||||
public function __construct() {
|
public function __construct() {
|
||||||
$this->middleware('can:areacode.index')->only('index','show');
|
$this->middleware('can:horario.index')->only('index','show');
|
||||||
$this->middleware('can:areacode.create')->only('create','store');
|
$this->middleware('can:horario.create')->only('create','store');
|
||||||
$this->middleware('can:areacode.edit')->only('edit','update');
|
$this->middleware('can:horario.edit')->only('edit','update');
|
||||||
$this->middleware('can:areacode.destroy')->only('destroy');
|
$this->middleware('can:horario.destroy')->only('destroy');
|
||||||
}
|
}
|
||||||
public function index()
|
public function index()
|
||||||
{
|
{
|
||||||
$areacodes = Horario::all();
|
$usuarios = User::with(['roles'])->has('horarios')->get();
|
||||||
return view('areacode.index',compact('areacodes'));
|
|
||||||
|
return view('horario.index',compact('usuarios'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function create()
|
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)
|
public function store(Request $request)
|
||||||
{
|
{
|
||||||
$request->validate([
|
|
||||||
'name'=>'required'
|
foreach($request->horarios as $h){
|
||||||
|
|
||||||
|
$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,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$areacode = AreaCode::create($request->all());
|
|
||||||
|
|
||||||
return redirect()->route('areacode.edit',$areacode)->with('info','El código se creo correctamente');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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)
|
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)
|
public function destroy(Horario $horario)
|
||||||
{
|
{
|
||||||
$areacode->delete();
|
// $areacode->delete();
|
||||||
session()->flash('swal',[
|
// session()->flash('swal',[
|
||||||
'icon'=>'success',
|
// 'icon'=>'success',
|
||||||
'title'=>'Eliminado!',
|
// 'title'=>'Eliminado!',
|
||||||
'text'=>'Se ha eliminado el registro correctamente'
|
// 'text'=>'Se ha eliminado el registro correctamente'
|
||||||
]);
|
// ]);
|
||||||
return redirect()->route('areacode.index');
|
// return redirect()->route('horario.index');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,11 +3,15 @@
|
|||||||
namespace App\Http\Controllers;
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
use App\Models\AreaCode;
|
use App\Models\AreaCode;
|
||||||
use App\Models\User;
|
|
||||||
use App\Models\Plantel;
|
use App\Models\Plantel;
|
||||||
|
use App\Models\User;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Routing\Controller;
|
use Illuminate\Routing\Controller;
|
||||||
|
use Illuminate\Support\Facades\Password;
|
||||||
|
use Illuminate\Support\Facades\Hash;
|
||||||
|
use Illuminate\Support\Str;
|
||||||
use Spatie\Permission\Models\Role;
|
use Spatie\Permission\Models\Role;
|
||||||
|
use Illuminate\Auth\Notifications\ResetPassword;
|
||||||
|
|
||||||
class UserController extends Controller
|
class UserController extends Controller
|
||||||
{
|
{
|
||||||
@@ -21,9 +25,8 @@ class UserController extends Controller
|
|||||||
|
|
||||||
public function index()
|
public function index()
|
||||||
{
|
{
|
||||||
$plantels=Plantel::all();
|
$users=User::with(['roles','plantelUsuarios'])->get();
|
||||||
$users=User::with('roles')->get();
|
return view('user.index',compact('users'));
|
||||||
return view('user.index',compact('users','plantels'));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -35,13 +38,27 @@ class UserController extends Controller
|
|||||||
return view('user.create',compact('roles','plantels','codigos'));
|
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->roles()->sync($request->roles);
|
||||||
|
|
||||||
$user->plantelUsuarios()->sync($request->plantels);
|
$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');
|
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;
|
namespace App\Models;
|
||||||
|
|
||||||
|
use App\Models\User;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||||
|
|
||||||
class Horario extends Model
|
class Horario extends Model
|
||||||
{
|
{
|
||||||
protected $guarded = [];
|
protected $guarded = [];
|
||||||
|
|
||||||
public $timestamps = false;
|
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);
|
return $this->hasMany(Note::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function horarios() : HasMany
|
||||||
|
{
|
||||||
|
return $this->hasMany(Horario::class);
|
||||||
|
}
|
||||||
|
|
||||||
public function codes() : HasMany
|
public function codes() : HasMany
|
||||||
{
|
{
|
||||||
return $this->hasMany(Code::class);
|
return $this->hasMany(Code::class);
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ return new class extends Migration
|
|||||||
$table->string('telefono',20)->nullable()->unique();
|
$table->string('telefono',20)->nullable()->unique();
|
||||||
$table->string('direccion')->nullable();
|
$table->string('direccion')->nullable();
|
||||||
$table->string('password');
|
$table->string('password');
|
||||||
$table->string('code')->nullable();
|
$table->string('code')->default(0);
|
||||||
$table->boolean('status');
|
$table->boolean('status');
|
||||||
$table->rememberToken();
|
$table->rememberToken();
|
||||||
$table->foreignId('current_team_id')->nullable();
|
$table->foreignId('current_team_id')->nullable();
|
||||||
|
|||||||
@@ -6,19 +6,21 @@ use Illuminate\Support\Facades\Schema;
|
|||||||
|
|
||||||
return new class extends Migration
|
return new class extends Migration
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* Run the migrations.
|
|
||||||
*/
|
|
||||||
public function up(): void
|
public function up(): void
|
||||||
{
|
{
|
||||||
Schema::create('horarios', function (Blueprint $table) {
|
Schema::create('horarios', function (Blueprint $table) {
|
||||||
$table->id();
|
$table->id();
|
||||||
|
$table->unsignedBigInteger('user_id');
|
||||||
|
$table->string('dia');
|
||||||
|
$table->time('entrada')->nullable();
|
||||||
|
$table->time('comidas')->nullable();
|
||||||
|
$table->time('comidar')->nullable();
|
||||||
|
$table->time('salida')->nullable();
|
||||||
|
$table->boolean('status');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Reverse the migrations.
|
|
||||||
*/
|
|
||||||
public function down(): void
|
public function down(): void
|
||||||
{
|
{
|
||||||
Schema::dropIfExists('horarios');
|
Schema::dropIfExists('horarios');
|
||||||
|
|||||||
@@ -121,5 +121,10 @@ class RoleSeeder extends Seeder
|
|||||||
Permission::create(['name'=>'mail.edit','description'=>'Editar mail'])->syncRoles([$role1]);
|
Permission::create(['name'=>'mail.edit','description'=>'Editar mail'])->syncRoles([$role1]);
|
||||||
Permission::create(['name'=>'mail.destroy','description'=>'Eliminar mail'])->syncRoles([$role1]);
|
Permission::create(['name'=>'mail.destroy','description'=>'Eliminar mail'])->syncRoles([$role1]);
|
||||||
|
|
||||||
|
Permission::create(['name'=>'horario.index','description'=>'Ver horario'])->syncRoles([$role1]);
|
||||||
|
Permission::create(['name'=>'horario.create','description'=>'Crear horario'])->syncRoles([$role1]);
|
||||||
|
Permission::create(['name'=>'horario.edit','description'=>'Editar horario'])->syncRoles([$role1]);
|
||||||
|
Permission::create(['name'=>'horario.destroy','description'=>'Eliminar horario'])->syncRoles([$role1]);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,27 +13,27 @@ class UserSeeder extends Seeder
|
|||||||
*/
|
*/
|
||||||
public function run(): void
|
public function run(): void
|
||||||
{
|
{
|
||||||
$user1= User::create([
|
// $user1= User::create([
|
||||||
'name'=>'Luis Fernando Pérez',
|
// 'name'=>'Luis Fernando Pérez',
|
||||||
'email'=>'fernandoestrp@outlook.es',
|
// 'email'=>'fernandoestrp@outlook.es',
|
||||||
'direccion'=>'Zacatenco mz 21 lt 2 san francisco cuautliquixca',
|
// 'direccion'=>'Zacatenco mz 21 lt 2 san francisco cuautliquixca',
|
||||||
'telefono'=>'5636287759',
|
// 'telefono'=>'5636287759',
|
||||||
'password' => bcrypt('6686'),
|
// 'password' => bcrypt('6686'),
|
||||||
'code'=>1,
|
// 'code'=>1,
|
||||||
'status'=>1
|
// 'status'=>1
|
||||||
])->assignRole('Admin');
|
// ])->assignRole('Admin');
|
||||||
|
|
||||||
$user1->plantelUsuarios()->sync(1);
|
// $user1->plantelUsuarios()->sync(1);
|
||||||
|
|
||||||
$user2= User::create([
|
$user2= User::create([
|
||||||
'name'=>'Antonio Azulito Real Luna',
|
'name'=>'Antonio Azulito Real Luna',
|
||||||
'email'=>'reydelfin@gmail.com',
|
'email'=>'reydelfin@gmail.com',
|
||||||
'direccion'=>'Zacatenco mz 21 lt 2 san francisco cuautliquixca',
|
'direccion'=>'Zacatenco mz 21 lt 2 san francisco cuautliquixca',
|
||||||
'telefono'=>'5636287758',
|
'telefono'=>'5636287758',
|
||||||
'password' => bcrypt('2000'),
|
'password' => bcrypt('6686'),
|
||||||
'code'=>1,
|
'code'=>1,
|
||||||
'status'=>1
|
'status'=>1
|
||||||
])->assignRole('Promotor');
|
])->assignRole('Admin');
|
||||||
$user2->plantelUsuarios()->sync([1,2,3]);
|
$user2->plantelUsuarios()->sync([1,2,3]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,83 @@
|
|||||||
|
@extends('layouts.landing')
|
||||||
|
|
||||||
|
@section('title',"Crear")
|
||||||
|
|
||||||
|
@section('content')
|
||||||
|
|
||||||
|
<div class="container-fluid">
|
||||||
|
<div class="card shadow mb-4">
|
||||||
|
<div class="card-header py-3">
|
||||||
|
<h6 class="m-0 font-weight-bold text-primary">Crear Nota</h6>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card-body">
|
||||||
|
<a href="{{route('horario.index')}}">Regresar</a>
|
||||||
|
<form action="{{route('horario.store')}}" method="POST">
|
||||||
|
@csrf
|
||||||
|
<div class="mb-3">
|
||||||
|
<label for="user_id">Seleccionar Colaborador</label>
|
||||||
|
<select class="form-control" name="user_id" id="user_id">
|
||||||
|
@foreach ($usuarios as $user)
|
||||||
|
<option value="{{ $user->id }}">{{ $user->name }}</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@foreach ($dias as $index => $dia)
|
||||||
|
<div class="mb-3 row">
|
||||||
|
|
||||||
|
<div class="col-md-3">
|
||||||
|
<label class="small">Día</label>
|
||||||
|
<input class="form-control"
|
||||||
|
name="horarios[{{$index}}][dia]"
|
||||||
|
value="{{ $dia->translatedFormat('l') }}"
|
||||||
|
readonly>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-8">
|
||||||
|
<div class="row">
|
||||||
|
|
||||||
|
<div class="col-md-3">
|
||||||
|
<label class="small">Entrada</label>
|
||||||
|
<input class="form-control" type="time"
|
||||||
|
name="horarios[{{$index}}][entrada]">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-3">
|
||||||
|
<label class="small">Comida salida</label>
|
||||||
|
<input class="form-control" type="time"
|
||||||
|
name="horarios[{{$index}}][comida_salida]">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-3">
|
||||||
|
<label class="small">Comida regreso</label>
|
||||||
|
<input class="form-control" type="time"
|
||||||
|
name="horarios[{{$index}}][comida_regreso]">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-3">
|
||||||
|
<label class="small">Salida</label>
|
||||||
|
<input class="form-control" type="time"
|
||||||
|
name="horarios[{{$index}}][salida]">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-1">
|
||||||
|
<input type="checkbox"
|
||||||
|
name="horarios[{{$index}}][activo]"
|
||||||
|
value="1">
|
||||||
|
<label class="small pt-5">Activo</label>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
@endforeach
|
||||||
|
<input class="btn btn-primary" type="submit" value="Create">
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@endsection
|
||||||
@@ -0,0 +1,98 @@
|
|||||||
|
@extends('layouts.landing')
|
||||||
|
|
||||||
|
@section('title',"Edit")
|
||||||
|
|
||||||
|
@section('content')
|
||||||
|
|
||||||
|
<div class="container-fluid">
|
||||||
|
<div class="card shadow mb-4">
|
||||||
|
<div class="card-header py-3">
|
||||||
|
<h6 class="m-0 font-weight-bold text-primary">Editar nota</h6>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card-body">
|
||||||
|
<a href="{{route('horario.index')}}">Regresar</a>
|
||||||
|
<form action="{{ route('horario.update', $user->id) }}" method="POST">
|
||||||
|
@csrf
|
||||||
|
@method('PUT')
|
||||||
|
|
||||||
|
<div class="mb-3">
|
||||||
|
<label for="user_id">Seleccionar Colaborador</label>
|
||||||
|
<select class="form-control" name="user_id" id="user_id">
|
||||||
|
@foreach ($usuarios as $usuario)
|
||||||
|
<option value="{{ $usuario->id }}"
|
||||||
|
{{ $usuario->id == $user->id ? 'selected' : '' }}>
|
||||||
|
{{ $usuario->name }}
|
||||||
|
</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@foreach ($dias as $index => $dia)
|
||||||
|
|
||||||
|
@php
|
||||||
|
$nombreDia = strtolower($dia->translatedFormat('l'));
|
||||||
|
$horario = $horarios[$nombreDia] ?? null;
|
||||||
|
@endphp
|
||||||
|
|
||||||
|
<div class="mb-3 row">
|
||||||
|
|
||||||
|
<div class="col-md-3">
|
||||||
|
<label class="small">Día</label>
|
||||||
|
<input class="form-control"
|
||||||
|
name="horarios[{{$index}}][dia]"
|
||||||
|
value="{{ $nombreDia }}"
|
||||||
|
readonly>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-2">
|
||||||
|
<label class="small">Entrada</label>
|
||||||
|
<input class="form-control"
|
||||||
|
type="time"
|
||||||
|
name="horarios[{{$index}}][entrada]"
|
||||||
|
value="{{ $horario->entrada ?? '' }}">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-2">
|
||||||
|
<label class="small">Comida salida</label>
|
||||||
|
<input class="form-control"
|
||||||
|
type="time"
|
||||||
|
name="horarios[{{$index}}][comida_salida]"
|
||||||
|
value="{{ $horario->comidas ?? '' }}">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-2">
|
||||||
|
<label class="small">Comida regreso</label>
|
||||||
|
<input class="form-control"
|
||||||
|
type="time"
|
||||||
|
name="horarios[{{$index}}][comida_regreso]"
|
||||||
|
value="{{ $horario->comidar ?? '' }}">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-2">
|
||||||
|
<label class="small">Salida</label>
|
||||||
|
<input class="form-control"
|
||||||
|
type="time"
|
||||||
|
name="horarios[{{$index}}][salida]"
|
||||||
|
value="{{ $horario->salida ?? '' }}">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-1">
|
||||||
|
<input type="checkbox"
|
||||||
|
name="horarios[{{$index}}][activo]"
|
||||||
|
value="1"
|
||||||
|
{{ isset($horario) && $horario->status ? 'checked' : '' }}>
|
||||||
|
<label class="small">Activo</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@endforeach
|
||||||
|
|
||||||
|
<input class="btn btn-primary" type="submit" value="Update">
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@endsection
|
||||||
@@ -0,0 +1,84 @@
|
|||||||
|
@extends('layouts.landing')
|
||||||
|
|
||||||
|
@section('head')
|
||||||
|
@include('layouts._partials.tablaStyle')
|
||||||
|
@endsection
|
||||||
|
@section('title',"Inicio")
|
||||||
|
|
||||||
|
@section('content')
|
||||||
|
|
||||||
|
<div class="container-fluid">
|
||||||
|
<div class="card shadow mb-4">
|
||||||
|
<div class="card-header py-3">
|
||||||
|
<div class="d-sm-flex align-items-center justify-content-between">
|
||||||
|
<h6 class="m-0 font-weight-bold text-primary">Horarios</h6>
|
||||||
|
@can('horario.create')
|
||||||
|
<a href="{{route('horario.create')}}" class="d-sm-inline-block btn btn-sm btn-primary shadow-sm"><i class="fas fa-download fa-sm text-white-50"></i> Asignnar horarios a colaborador</a>
|
||||||
|
@endcan
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card-body">
|
||||||
|
<div class="container-fluid">
|
||||||
|
|
||||||
|
<table id="tcont" class="table table-striped table-bordered nowrap table-hover" style="width:100%;">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Id</th>
|
||||||
|
<th>Colaborador</th>
|
||||||
|
<th>Campus</th>
|
||||||
|
<th>Opciones</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
@forelse ($usuarios as $usuario)
|
||||||
|
<tr style="width:100%">
|
||||||
|
|
||||||
|
<td>{{$usuario->id}}</td>
|
||||||
|
<td><a href="{{route('horario.show',$usuario->id)}}">{{$usuario->name}}</a></td>
|
||||||
|
<td>
|
||||||
|
@forelse($usuario->plantelUsuarios as $plantel)
|
||||||
|
<span class="badge bg-primary text-white">
|
||||||
|
{{ $plantel->name }}
|
||||||
|
</span>
|
||||||
|
@empty
|
||||||
|
<span class="text-muted">Sin plantel</span>
|
||||||
|
@endforelse
|
||||||
|
</td>
|
||||||
|
<td class="row mx-auto">
|
||||||
|
@can('horario.edit')
|
||||||
|
<div class="col-sm-6 col-md-6"><a class="btn btn-primary" href="{{route('horario.edit',$usuario->id)}}">Edit</a></div>
|
||||||
|
@endcan
|
||||||
|
|
||||||
|
@can('horario.destroy')
|
||||||
|
<div class="col-sm-6 col-md-6">
|
||||||
|
<form action="{{route('horario.destroy',$usuario->id)}}" method="POST">
|
||||||
|
@csrf
|
||||||
|
@method('DELETE')
|
||||||
|
<input type="submit" value="DELETE" class="btn btn-danger">
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
@endcan
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
@empty
|
||||||
|
<p>Sin horarios cargados.</p>
|
||||||
|
@endforelse
|
||||||
|
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@endsection
|
||||||
|
|
||||||
|
|
||||||
|
@section('scripts')
|
||||||
|
@include('layouts._partials.tablaScript')
|
||||||
|
@endsection
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
@extends('layouts.landing')
|
||||||
|
|
||||||
|
@section('title',"show")
|
||||||
|
|
||||||
|
@section('content')
|
||||||
|
|
||||||
|
<div class="container-fluid">
|
||||||
|
<div class="card shadow mb-4">
|
||||||
|
<div class="card-header py-3">
|
||||||
|
<div class="d-sm-flex align-items-center justify-content-between">
|
||||||
|
<h6 class="m-0 font-weight-bold text-primary">Datos de la nota</h6>
|
||||||
|
<a href="{{route('note.index')}}" class="d-sm-inline-block btn btn-sm btn-primary shadow-sm"><i class="fas fa-download fa-sm text-white-50"></i> Regresar</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card-body">
|
||||||
|
<h1>{{$note->title}}</h1>
|
||||||
|
<p>{{$note->description}}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@endsection
|
||||||
@@ -35,11 +35,11 @@
|
|||||||
<label class="small mb-1">Dirección</label>
|
<label class="small mb-1">Dirección</label>
|
||||||
<input class="form-control" name="direccion">
|
<input class="form-control" name="direccion">
|
||||||
</div>
|
</div>
|
||||||
|
{{--
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<label class="small mb-1">Contraseña</label>
|
<label class="small mb-1">Contraseña</label>
|
||||||
<input class="form-control" name="password">
|
<input class="form-control" name="password">
|
||||||
</div>
|
</div> --}}
|
||||||
|
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
@foreach ($plantels as $plantel)
|
@foreach ($plantels as $plantel)
|
||||||
@@ -74,7 +74,7 @@
|
|||||||
|
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<label for="status">Seleccionar código</label>
|
<label for="status">Seleccionar código</label>
|
||||||
<select class="form-control" name="codigo" id="codigo">
|
<select class="form-control" name="code" id="code">
|
||||||
<option value="0">Selecciona un código....</option>
|
<option value="0">Selecciona un código....</option>
|
||||||
@foreach ($codigos as $codigo)
|
@foreach ($codigos as $codigo)
|
||||||
<option value="{{ $codigo->id }}">{{ $codigo->name}}</option>
|
<option value="{{ $codigo->id }}">{{ $codigo->name}}</option>
|
||||||
|
|||||||
@@ -26,6 +26,7 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<th>Id</th>
|
<th>Id</th>
|
||||||
<th>Nombre</th>
|
<th>Nombre</th>
|
||||||
|
<th>Campus</th>
|
||||||
<th>Rol</th>
|
<th>Rol</th>
|
||||||
<th>Correo</th>
|
<th>Correo</th>
|
||||||
<th>Status</th>
|
<th>Status</th>
|
||||||
@@ -37,6 +38,16 @@
|
|||||||
<tr style="width:100%">
|
<tr style="width:100%">
|
||||||
<td>{{$user->id}}</td>
|
<td>{{$user->id}}</td>
|
||||||
<td><a href="{{route('user.show',$user->id)}}">{{$user->name}}</a></td>
|
<td><a href="{{route('user.show',$user->id)}}">{{$user->name}}</a></td>
|
||||||
|
|
||||||
|
<td>
|
||||||
|
@forelse($user->plantelUsuarios as $plantel)
|
||||||
|
<span class="badge bg-primary text-white">
|
||||||
|
{{ $plantel->name }}
|
||||||
|
</span>
|
||||||
|
@empty
|
||||||
|
<span class="text-muted">Sin plantel</span>
|
||||||
|
@endforelse
|
||||||
|
</td>
|
||||||
<td>
|
<td>
|
||||||
@forelse($user->roles as $rol)
|
@forelse($user->roles as $rol)
|
||||||
<span class="badge bg-primary text-white">
|
<span class="badge bg-primary text-white">
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ use App\Http\Controllers\CarreraController;
|
|||||||
use App\Http\Controllers\CodeController;
|
use App\Http\Controllers\CodeController;
|
||||||
use App\Http\Controllers\ConceptoController;
|
use App\Http\Controllers\ConceptoController;
|
||||||
use App\Http\Controllers\DurationController;
|
use App\Http\Controllers\DurationController;
|
||||||
|
use App\Http\Controllers\HorarioController;
|
||||||
use App\Http\Controllers\MailController;
|
use App\Http\Controllers\MailController;
|
||||||
use App\Http\Controllers\MaterialController;
|
use App\Http\Controllers\MaterialController;
|
||||||
use App\Http\Controllers\MedioController;
|
use App\Http\Controllers\MedioController;
|
||||||
@@ -46,6 +47,13 @@ Route::middleware(['auth:sanctum',config('jetstream.auth_session'),'verified',
|
|||||||
Route::resource('/code',CodeController::class);
|
Route::resource('/code',CodeController::class);
|
||||||
Route::resource('/concepto',ConceptoController::class);
|
Route::resource('/concepto',ConceptoController::class);
|
||||||
Route::resource('/duration',DurationController::class);
|
Route::resource('/duration',DurationController::class);
|
||||||
|
Route::get('/horario', [HorarioController::class, 'index'])->name('horario.index');
|
||||||
|
Route::get('/horario/create', [HorarioController::class, 'create'])->name('horario.create');
|
||||||
|
Route::post('/horario', [HorarioController::class, 'store'])->name('horario.store');
|
||||||
|
Route::get('/horario/{user}', [HorarioController::class, 'show'])->name('horario.show');
|
||||||
|
Route::get('/horario/{user}/edit', [HorarioController::class, 'edit'])->name('horario.edit');
|
||||||
|
Route::put('/horario/{user}', [HorarioController::class, 'update'])->name('horario.update');
|
||||||
|
Route::delete('/horario/{user}', [HorarioController::class, 'destroy'])->name('horario.destroy');
|
||||||
Route::resource('/material',MaterialController::class);
|
Route::resource('/material',MaterialController::class);
|
||||||
Route::resource('/medio',MedioController::class);
|
Route::resource('/medio',MedioController::class);
|
||||||
Route::resource('/nivel',NivelController::class);
|
Route::resource('/nivel',NivelController::class);
|
||||||
|
|||||||
Reference in New Issue
Block a user