Primer commit proyecto Laravel

This commit is contained in:
2026-02-05 11:10:09 -06:00
commit e4559106d4
2153 changed files with 210301 additions and 0 deletions
+83
View File
@@ -0,0 +1,83 @@
<?php
namespace App\Http\Controllers;
use App\Models\Area;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Spatie\Permission\Models\Role;
class AreaController extends Controller
{
public function __construct() {
$this->middleware('can:area.index')->only('index','show');
$this->middleware('can:area.create')->only('create','store');
$this->middleware('can:area.edit')->only('edit','update');
$this->middleware('can:area.destroy')->only('destroy');
}
public function index()
{
$areas = Area::all();
return view('area.index',compact('areas'));
}
public function create()
{
$roles = Role::all();
return view('area.create',compact('roles'));
}
public function store(Request $request)
{
$request->validate([
'name'=>'required'
]);
$area = Area::create($request->except(['roles']));
$area->areas()->sync($request->roles);
return redirect()->route('area.edit',$area)->with('info','El área se creo correctamente');
}
public function show(area $area)
{
return view('area.show',compact('area'));
}
public function edit(area $area)
{
$roles = Role::all();
return view('area.edit',compact('area','roles'));
}
public function update(Request $request, area $area)
{
$request->validate([
'name'=>'required'
]);
$area->update($request->except(['roles']));
$area->areas()->sync($request->roles);
return redirect()->route('area.edit',$area)->with('info','El área se actualizo correctamente');
}
public function destroy(area $area)
{
$area->areas()->detach();
$area->delete();
session()->flash('swal',[
'icon'=>'success',
'title'=>'Eliminado!',
'text'=>'Se ha eliminado el registro correctamente'
]);
return redirect()->route('area.index');
}
}
+63
View File
@@ -0,0 +1,63 @@
<?php
namespace App\Http\Controllers;
use App\Models\Campan;
use Illuminate\View\View;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
class CampanController extends Controller
{
public function __construct() {
$this->middleware('can:campan.index')->only('index','show');
$this->middleware('can:campan.create')->only('create','store');
$this->middleware('can:campan.edit')->only('edit','update');
$this->middleware('can:campan.destroy')->only('destroy');
}
public function index(): View
{
$campans = Campan::all();
return view('campan.index',compact('campans'));
}
public function create(): View
{
return view('campan.create');
}
public function store(Request $request)
{
$campan = Campan::create($request->all());
return redirect()->route('campan.edit',compact('campan'))->with('info','Se creó la campaña correctamente');
}
public function edit(Campan $campan)
{
return view('campan.edit',compact('campan'));
}
public function update(Request $request,Campan $campan)
{
$campan ->update($request->all());
return redirect()->route('campan.edit',compact('campan'))->with('info','Se modificó la campaña correctamente');
}
public function show(Campan $campan)
{
return view('campan.show',compact('campan'));
}
public function destroy(Campan $campan)
{
$campan ->delete();
session()->flash('swal',[
'icon'=>'success',
'title'=>'Eliminado!',
'text'=>'Se ha eliminado el registro correctamente'
]);
return redirect()->route('campan.index');
}
}
@@ -0,0 +1,71 @@
<?php
namespace App\Http\Controllers;
use App\Models\Carrera;
use App\Models\Nivel;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
class CarreraController extends Controller
{
public function __construct() {
$this->middleware('can:carrera.index')->only('index','show');
$this->middleware('can:carrera.create')->only('create','store');
$this->middleware('can:carrera.edit')->only('edit','update');
$this->middleware('can:carrera.destroy')->only('destroy');
}
public function index()
{
$carreras=Carrera::all();
return view('carrera.index',compact('carreras'));
}
public function create()
{
$nivels=Nivel::where('status','=','1')->get();
return view('carrera.create',compact('nivels'));
}
public function store(Request $request,Carrera $carrera)
{
$carrera= Carrera::create($request->all());
return redirect()->route('carrera.edit',compact('carrera'))->with('info','Se creo la carrera correctamente');
}
public function show(Carrera $carrera)
{
return view('carrera.show',compact('carrera'));
}
public function edit(Carrera $carrera)
{
$nivels=Nivel::where('status','=','1')->get();
return view('carrera.edit',compact('carrera','nivels'));
}
public function update(Request $request,Carrera $carrera)
{
$carrera->update($request->all());
$nivels=Nivel::all();
return redirect()->route('carrera.edit',compact('carrera','nivels'))->with('info','Se editó la carrera correctamente');
}
public function destroy(Carrera $carrera)
{
$carrera->carreraMaterial()->detach();
$carrera->delete();
session()->flash('swal',[
'icon'=>'success',
'title'=>'Eliminado!',
'text'=>'Se ha eliminado el registro correctamente'
]);
return redirect()->route('carrera.index');
}
}
+114
View File
@@ -0,0 +1,114 @@
<?php
namespace App\Http\Controllers;
use App\Models\Concepto;
use App\Models\Plane;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Illuminate\View\View;
use function Symfony\Component\Clock\now;
class ConceptoController extends Controller
{
public function __construct() {
$this->middleware('can:concepto.index')->only('index','show');
$this->middleware('can:concepto.create')->only('create','store');
$this->middleware('can:concepto.edit')->only('edit','update');
$this->middleware('can:concepto.destroy')->only('destroy');
}
public function index(): View
{
$conceptos = Concepto::where('tipo','=','3')->get();
return view('concepto.index',compact('conceptos'));
}
public function create(): View
{
return view('concepto.create');
}
public function store(Request $request)
{
if($request->plane != 0){
$concepto =Concepto::create($request->except(['plane']));
$concepto->planConceptos()->sync($request->plane);
$plane= Plane::where('id','=',$request->plane)->first();
return redirect()->route('plane.edit',compact('plane'))->with('info','Se anexó el concepto');
}else{
$concepto =Concepto::create([
'name' => $request->name,
'fecha_pago' => date('Y-m-d'),
'monto' => 0,
'recargo' => 0,
'tipo' => 3
]);
return redirect()->route('concepto.edit',compact('concepto'))->with('info','Se creó el concepto');
}
}
public function edit(Concepto $concepto)
{
return view('concepto.edit',compact('concepto'));
}
public function update(Request $request,Concepto $concepto)
{
if($request->plane != 0 ){
$concepto->update($request->except(['plane']));
$concepto->planConceptos()->sync($request->plane);
$plane= Plane::where('id','=',$request->plane)->first();
return redirect()->route('plane.edit',compact('plane'))->with('info','Se modificó el concepto');
}else{
$concepto->update([
'name' => $request->name,
'fecha_pago' => date('Y-m-d'),
'monto' => 0,
'recargo' => 0,
'tipo' => 3
]);
return redirect()->route('concepto.edit',compact('concepto'))->with('info','Se modificó el concepto');
}
}
public function show(Concepto $concepto )
{
return view('concepto.show',compact('concepto'));
}
public function destroy(Concepto $concepto,Request $request)
{
if($request->plane != 0){
$plane=$request->plane;
$concepto->planConceptos()->detach();
$concepto->delete();
session()->flash('swal',[
'icon'=>'success',
'title'=>'Eliminado!',
'text'=>'Se ha eliminado el registro correctamente'
]);
return redirect()->route('plane.edit',compact('plane'));
}else{
$concepto->delete();
session()->flash('swal',[
'icon'=>'success',
'title'=>'Eliminado!',
'text'=>'Se ha eliminado el registro correctamente'
]);
return redirect()->route('concepto.index');
}
}
}
+8
View File
@@ -0,0 +1,8 @@
<?php
namespace App\Http\Controllers;
abstract class Controller
{
//
}
@@ -0,0 +1,63 @@
<?php
namespace App\Http\Controllers;
use App\Models\Duration;
use Illuminate\Http\Request;
use Illuminate\View\View;
use Illuminate\Routing\Controller;
class DurationController extends Controller
{
public function __construct() {
$this->middleware('can:duration.index')->only('index','show');
$this->middleware('can:duration.create')->only('create','store');
$this->middleware('can:duration.edit')->only('edit','update');
$this->middleware('can:duration.destroy')->only('destroy');
}
public function index(): View
{
$durations = Duration::all();
return view('duration.index',compact('durations'));
}
public function create(): View
{
return view('duration.create');
}
public function store(Request $request)
{
$duration =Duration::create($request->all());
return redirect()->route('duration.edit',compact('duration'))->with('info','Se creó la duración correctamente');
}
public function edit(Duration $duration )
{
return view('duration.edit',compact('duration'));
}
public function update(Request $request,Duration $duration )
{
$duration ->update($request->all());
return redirect()->route('duration.edit',compact('duration'))->with('info','Se modificó la duración correctamente');
}
public function show(Duration $duration )
{
return view('duration.show',compact('duration'));
}
public function destroy(Duration $duration )
{
$duration ->delete();
session()->flash('swal',[
'icon'=>'success',
'title'=>'Eliminado!',
'text'=>'Se ha eliminado el registro correctamente'
]);
return redirect()->route('duration.index');
}
}
@@ -0,0 +1,45 @@
<?php
namespace App\Http\Controllers;
use App\Models\Carrera;
use App\Models\Material;
use Illuminate\Http\Request;
class MaterialController extends Controller
{
public function store(Request $request)
{
$material =Material::create($request->except(['carrera']));
$material->carreraMaterial()->sync($request->carrera);
$carrera= Carrera::where('id','=',$request->carrera)->first();
return redirect()->route('carrera.edit',compact('carrera'))->with('infoMaterial','Se anexó el material');
}
public function update(Request $request,Material $material)
{
$material->update($request->except(['carrera']));
$material->carreraMaterial()->sync($request->carrera);
$carrera= Carrera::where('id','=',$request->carrera)->first();
return redirect()->route('carrera.edit',compact('carrera'))->with('infoMaterial','Se modificó el material');
}
public function destroy(Material $material,Request $request)
{
$carrera=$request->carrera;
$material->carreraMaterial()->detach();
$material->delete();
session()->flash('swal',[
'icon'=>'success',
'title'=>'Eliminado!',
'text'=>'Se ha eliminado el registro correctamente'
]);
return redirect()->route('carrera.edit',compact('carrera'));
}
}
+71
View File
@@ -0,0 +1,71 @@
<?php
namespace App\Http\Controllers;
use App\Models\Medio;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
class MedioController extends Controller
{
public function __construct() {
$this->middleware('can:medio.index')->only('index','show');
$this->middleware('can:medio.create')->only('create','store');
$this->middleware('can:medio.edit')->only('edit','update');
$this->middleware('can:medio.destroy')->only('destroy');
}
public function index()
{
$medios = Medio::all();
return view('medio.index',compact('medios'));
}
public function create()
{
return view('medio.create');
}
public function store(Request $request)
{
$request->validate([
'name'=>'required'
]);
$medio = Medio::create($request->all());
return redirect()->route('medio.edit',$medio)->with('info','El medio se creo correctamente');
}
public function show(Medio $medio)
{
return view('medio.show',compact('medio'));
}
public function edit(Medio $medio)
{
return view('medio.edit',compact('medio'));
}
public function update(Request $request, Medio $medio)
{
$medio->update($request->all());
return redirect()->route('medio.edit',$medio)->with('info','El medio se actualizo correctamente');
}
public function destroy(Medio $medio)
{
$medio->delete();
session()->flash('swal',[
'icon'=>'success',
'title'=>'Eliminado!',
'text'=>'Se ha eliminado el registro correctamente'
]);
return redirect()->route('medio.index');
}
}
+67
View File
@@ -0,0 +1,67 @@
<?php
namespace App\Http\Controllers;
use App\Models\Nivel;
use App\Models\Plantel;
use Illuminate\View\View;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
class NivelController extends Controller
{
public function __construct() {
$this->middleware('can:nivel.index')->only('index','show');
$this->middleware('can:nivel.create')->only('create','store');
$this->middleware('can:nivel.edit')->only('edit','update');
$this->middleware('can:nivel.destroy')->only('destroy');
}
public function index(): View
{
$plantels = Plantel::where('status','=','1')->get();
$nivels = Nivel::all();
return view('nivel.index',compact('nivels','plantels'));
}
public function create(): View
{$plantels = Plantel::where('status','=','1')->get();
return view('nivel.create',compact('plantels'));
}
public function store(Request $request)
{
$nivel = Nivel ::create($request->except(['plantels']));
$nivel->nivelPlantel()->sync($request->plantels);
return redirect()->route('nivel.edit',compact('nivel'))->with('info','Se creó el nivel correctamente');
}
public function edit(Nivel $nivel)
{
$plantels = Plantel::where('status','=','1')->get();
return view('nivel.edit',compact('nivel','plantels'));
}
public function update(Request $request,Nivel $nivel )
{
$nivel ->update($request->except(['plantels']));
$nivel->nivelPlantel()->sync($request->plantels);
return redirect()->route('nivel.edit',compact('nivel'))->with('info','Se modificó el nivel correctamente');
}
public function show(Nivel $nivel )
{
return view('nivel.show',compact('nivel'));
}
public function destroy(Nivel $nivel )
{
$nivel ->delete();
session()->flash('swal',[
'icon'=>'success',
'title'=>'Eliminado!',
'text'=>'Se ha eliminado el registro correctamente'
]);
return redirect()->route('nivel.index');
}
}
+63
View File
@@ -0,0 +1,63 @@
<?php
namespace App\Http\Controllers;
use App\Models\Note;
use Illuminate\View\View;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Illuminate\Support\Facades\Auth;
class NoteController extends Controller
{
public function __construct() {
$this->middleware('can:note.index')->only('index','show');
$this->middleware('can:note.create')->only('create','store');
$this->middleware('can:note.edit')->only('edit','update');
$this->middleware('can:note.destroy')->only('destroy');
}
public function index(): View
{
$notes = Note::all();
return view('note.index',compact('notes'));
}
public function create(): View
{
return view('note.create');
}
public function store(Request $request)
{
$user = Auth::user();
$request['user_id']=$user->id;
$note= Note::create($request->all());
return redirect()->route('note.index',compact('note'))->with('info','Se creó la nota correctamente');
}
public function edit(Note $note)
{
return view('note.edit',compact('note'));
}
public function update(Request $request,Note $note)
{
$note->update($request->all());
return redirect()->route('note.edit',compact('note'))->with('info','Se creó la nota correctamente');
}
public function show(Note $note)
{
return view('note.show',compact('note'));
}
public function destroy(Note $note)
{
$note->delete();
return redirect()->route('note.index');
}
}
+28
View File
@@ -0,0 +1,28 @@
<?php
namespace App\Http\Controllers;
use App\Models\Pago;
use App\Models\Concepto;
use Illuminate\Routing\Controller;
use Illuminate\Support\Facades\Auth;
class PagoController extends Controller
{
// public function __construct() {
// $this->middleware('can:user.index')->only('index');
// }
public function index()
{
$user = Auth::user();
$prospectoId = $user->prospectos()->value('prospectos.id');
$pagos = Pago::where('user_id', $prospectoId)->get();
$nombres = Concepto::where('tipo', '3')->get();
return view('pago.index',compact('pagos','nombres'));
}
}
@@ -0,0 +1,86 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Spatie\Permission\Guard;
use Illuminate\Support\Facades\Artisan;
use Spatie\Permission\Models\Permission;
use Illuminate\Routing\Controller;
class PermissionController extends Controller
{
public function __construct() {
$this->middleware('can:permission.index')->only('index','show');
$this->middleware('can:permission.create')->only('create','store');
$this->middleware('can:permission.edit')->only('edit','update');
$this->middleware('can:permission.destroy')->only('destroy');
}
public function index()
{
$permissions = Permission::all();
return view('permission.index',compact('permissions'));
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
return view('permission.create');
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request)
{
try {
$request['guard_name'] ??= Guard::getDefaultName(static::class);
$permission= Permission::create($request->all());
Artisan::call('cache:clear');
return redirect()->route('permission.edit',compact('permission'))->with('info', 'Permiso creado exitosamente.');
} catch (\Throwable $th) {
return redirect()->route('permission.create')->with('info', 'Falta algun dato o el permiso ya se encuentra creado.');
}
}
public function show(Permission $permission)
{
return view('permission.show',compact('permission'));
}
/**
* Show the form for editing the specified resource.
*/
public function edit(Permission $permission)
{
return view('permission.edit',compact('permission'));
}
public function update(Request $request, Permission $permission)
{
$permission->update($request->all());
return redirect()->route('permission.edit',compact('permission'))->with('info','Se modificó el permiso correctamente');
}
public function destroy(Permission $permission)
{
$permission->delete();
session()->flash('swal',[
'icon'=>'success',
'title'=>'Eliminado!',
'text'=>'Se ha eliminado el registro correctamente'
]);
return redirect()->route('permission.index');
}
}
+91
View File
@@ -0,0 +1,91 @@
<?php
namespace App\Http\Controllers;
use App\Models\Duration;
use App\Models\Plan;
use App\Models\Plantel;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
class PlanController extends Controller
{
public function __construct() {
$this->middleware('can:plan.index')->only('index','show');
$this->middleware('can:plan.create')->only('create','store');
$this->middleware('can:plan.edit')->only('edit','update');
$this->middleware('can:plan.destroy')->only('destroy');
}
public function index()
{
$plans = Plan::all();
return view('plan.index',compact('plans'));
}
public function create()
{
$plantels = Plantel::where('status','=','1')->get();
$durations = Duration::all();
return view('plan.create',compact('plantels','durations'));
}
public function store(Request $request)
{
$request->validate([
'name'=>'required'
]);
// dd($request);
$plan = Plan::create($request->except(['plantels']));
$plan->planesPlantel()->sync($request->plantels);
return redirect()->route('plan.edit',$plan)->with('info','El plan se creo correctamente');
}
public function show(Plan $plan)
{
return view('plan.show',compact('plan'));
}
public function edit(Plan $plan)
{
$plantels = Plantel::where('status','=','1')->get();
$durations = Duration::all();
return view('plan.edit',compact('plantels','durations','plan'));
}
public function update(Request $request, Plan $plan)
{
$request->validate([
'name'=>'required'
]);
$plan->update($request->except(['plantels']));
$plan->planesPlantel()->sync($request->plantels);
return redirect()->route('plan.edit',$plan)->with('info','El plan se actualizo correctamente');
}
public function destroy(Plan $plan)
{
$plan->planesPlantel()->detach();
$plan->delete();
session()->flash('swal',[
'icon'=>'success',
'title'=>'Eliminado!',
'text'=>'Se ha eliminado el registro correctamente'
]);
return redirect()->route('plan.index');
}
}
+86
View File
@@ -0,0 +1,86 @@
<?php
namespace App\Http\Controllers;
use App\Models\Plane;
use App\Models\Plantel;
use App\Models\Concepto;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
class PlaneController extends Controller
{
public function __construct() {
$this->middleware('can:plane.index')->only('index','show');
$this->middleware('can:plane.create')->only('create','store');
$this->middleware('can:plane.edit')->only('edit','update');
$this->middleware('can:plane.destroy')->only('destroy');
}
public function index()
{
$planes=Plane::all();
return view('plane.index',compact('planes'));
}
public function create()
{
$plantels=Plantel::where('status','=','1')->get();
return view('plane.create',compact('plantels'));
}
public function store(Request $request)
{
$request->validate([
'name'=>'required'
]);
$plane = Plane::create($request->all());
return redirect()->route('plane.edit',$plane)->with('info','El plan se creo correctamente');
}
public function show(Plane $plane)
{
return view('plane.show',compact('plane'));
}
public function edit(Plane $plane)
{ $planConceptos = $plane->conceptos;
$plantels = Plantel::where('status','=','1')->get();
$conceptos = Concepto::where('tipo','=','3')->get();
return view('plane.edit',compact('plane','plantels','conceptos','planConceptos'));
}
public function update(Request $request,Plane $plane)
{
$request->validate([
'name'=>'required'
]);
$plane->update($request->except(['plantels']));
$plane->planPlantel()->sync($request->plantels);
return redirect()->route('plane.edit',$plane)->with('info','El plan se actualizo correctamente');
}
public function destroy(Plane $plane)
{
$plane->planPlantel()->detach();
$plane->delete();
session()->flash('swal',[
'icon'=>'success',
'title'=>'Eliminado!',
'text'=>'Se ha eliminado el registro correctamente'
]);
return redirect()->route('plane.index');
}
}
@@ -0,0 +1,72 @@
<?php
namespace App\Http\Controllers;
use App\Models\Plantel;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
class PlantelController extends Controller
{
public function __construct() {
$this->middleware('can:plantel.index')->only('index','show');
$this->middleware('can:plantel.create')->only('create','store');
$this->middleware('can:plantel.edit')->only('edit','update');
$this->middleware('can:plantel.destroy')->only('destroy');
}
public function index()
{
$plantels = Plantel::all();
return view('plantel.index',compact('plantels'));
}
public function create()
{
return view('plantel.create');
}
public function store(Request $request)
{
$request->validate([
'name'=>'required'
]);
$plantel = Plantel::create($request->all());
return redirect()->route('plantel.edit',$plantel)->with('info','El plantel se creo correctamente');
}
public function show(Plantel $plantel)
{
return view('plantel.show',compact('plantel'));
}
public function edit(Plantel $plantel)
{
return view('plantel.edit',compact('plantel'));
}
public function update(Request $request, Plantel $plantel)
{
$plantel->update($request->all());
return redirect()->route('plantel.edit',$plantel)->with('info','El plantel se actualizo correctamente');
}
public function destroy(Plantel $plantel)
{
$plantel->delete();
session()->flash('swal',[
'icon'=>'success',
'title'=>'Eliminado!',
'text'=>'Se ha eliminado el registro correctamente'
]);
return redirect()->route('plantel.index');
}
}
@@ -0,0 +1,61 @@
<?php
namespace App\Http\Controllers;
use App\Models\User;
use App\Models\Nivel;
use App\Models\Prospecto;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Illuminate\Support\Facades\Auth;
use Spatie\Permission\Models\Permission;
class ProspectoController extends Controller
{
public function __construct() {
$this->middleware('can:prospecto.index')->only('index','show');
$this->middleware('can:prospecto.create')->only('create','store');
$this->middleware('can:prospecto.edit')->only('edit','update');
$this->middleware('can:prospecto.destroy')->only('destroy');
}
public function index()
{
$user = Auth::user();
$prospectos = User::with(['prospectos' => function ($query) use ($user) {
$query->where('usuario_registro', $user->id);
}])
->whereHas('prospectos', function ($query) use ($user) {
$query->where('usuario_registro', $user->id);
})
->get();
return view('prospecto.index', compact('prospectos'));
}
public function destroy(Prospecto $prospecto)
{
$user = $prospecto->prospectos()->first();
if ($user) {
$user->roles()->detach();
$user->plantelUsuarios()->detach();
$prospecto->prospectos()->detach($user->id);
$user->delete();
}
$prospecto->delete();
session()->flash('swal',[
'icon'=>'success',
'title'=>'Eliminado!',
'text'=>'Se ha eliminado el registro correctamente'
]);
return redirect()->route('prospecto.index');
}
}
+84
View File
@@ -0,0 +1,84 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Spatie\Permission\Models\Permission;
use Spatie\Permission\Models\Role;
use Illuminate\Routing\Controller;
class RoleController extends Controller
{
public function __construct() {
$this->middleware('can:role.index')->only('index','show');
$this->middleware('can:role.create')->only('create','store');
$this->middleware('can:role.edit')->only('edit','update');
$this->middleware('can:role.destroy')->only('destroy');
}
public function index()
{
$roles = Role::all();
return view('role.index',compact('roles'));
}
public function create()
{
$permissions = Permission::all();
return view('role.create',compact('permissions'));
}
public function store(Request $request)
{
$request->validate([
'name'=>'required'
]);
$role = Role::create($request->all());
$role->permissions()->sync($request->permissions);
return redirect()->route('role.edit',$role)->with('info','El rol se creo correctamente');
}
public function show(Role $role)
{
return view('role.show',compact('role'));
}
public function edit(Role $role)
{
$permissions = Permission::all();
return view('role.edit',compact('role','permissions'));
}
public function update(Request $request, Role $role)
{
$request->validate([
'name'=>'required'
]);
$role->update($request->all());
$role->permissions()->sync($request->permissions);
return redirect()->route('role.edit',$role)->with('info','El rol se actualizo correctamente');
}
public function destroy(Role $role)
{
$role->delete();
session()->flash('swal',[
'icon'=>'success',
'title'=>'Eliminado!',
'text'=>'Se ha eliminado el registro correctamente'
]);
return redirect()->route('role.index');
}
}
+59
View File
@@ -0,0 +1,59 @@
<?php
namespace App\Http\Controllers;
use App\Models\Concepto;
use App\Models\Pago;
use Stripe\Stripe;
use Stripe\Checkout\Session;
class StripeController extends Controller
{
public function pagar(Pago $pago)
{
$concepto = Concepto::where('id', $pago->concepto)->first();
Stripe::setApiKey(config('services.stripe.secret'));
$session = Session::create([
'mode' => 'payment',
'line_items' => [[
'price_data' => [
'currency' => 'mxn',
'product_data' => [
'name' => $concepto->name,
],
'unit_amount' => $pago->monto * 100,
],
'quantity' => 1,
]],
'success_url' => route('pagar.show',1),
'cancel_url' => route('pagar.show',0),
'metadata' => [
'pago_id' => $pago->id,
],
]);
return redirect()->away($session->url);
}
public function show($status)
{
if ($status == 1) {
session()->flash('swal', [
'icon' => 'success',
'title' => 'Pago en proceso',
'text' => 'Estamos validando tu pago'
]);
} else {
session()->flash('swal', [
'icon' => 'error',
'title' => 'Pago cancelado',
'text' => 'No se realizó ningún cargo'
]);
}
return redirect()->route('pago.index');
}
}
@@ -0,0 +1,44 @@
<?php
namespace App\Http\Controllers;
use App\Models\Pago;
use Illuminate\Http\Request;
use Stripe\Webhook;
use Stripe\Exception\SignatureVerificationException;
class StripeWebhookController extends Controller
{
public function handle(Request $request)
{
$payload = $request->getContent();
$signature = $request->header('Stripe-Signature');
$secret = config('services.stripe.webhook_secret');
try {
$event = Webhook::constructEvent(
$payload,
$signature,
$secret
);
} catch (SignatureVerificationException $e) {
return response('Firma inválida', 400);
}
// 👉 Evento que nos importa
if ($event->type === 'checkout.session.completed') {
$session = $event->data->object;
$pagoId = $session->metadata->pago_id ?? null;
if ($pagoId) {
Pago::where('id', $pagoId)->update([
'estado' => 'pagado',
]);
}
}
return response('OK', 200);
}
}
+64
View File
@@ -0,0 +1,64 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class TicketController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index()
{
//
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*/
public function show(string $id)
{
//
}
/**
* Show the form for editing the specified resource.
*/
public function edit(string $id)
{
//
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, string $id)
{
//
}
/**
* Remove the specified resource from storage.
*/
public function destroy(string $id)
{
//
}
}
+76
View File
@@ -0,0 +1,76 @@
<?php
namespace App\Http\Controllers;
use App\Models\Turno;
use App\Models\Plantel;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
class TurnoController extends Controller
{
public function __construct() {
$this->middleware('can:turno.index')->only('index','show');
$this->middleware('can:turno.create')->only('create','store');
$this->middleware('can:turno.edit')->only('edit','update');
$this->middleware('can:turno.destroy')->only('destroy');
}
public function index()
{
$turnos = Turno::all();
return view('turno.index',compact('turnos'));
}
public function create()
{
$plantels = Plantel::where('status','=','1')->get();
return view('turno.create',compact('plantels'));
}
public function store(Request $request)
{
$request->validate([
'name'=>'required'
]);
$turno = Turno::create($request->except(['plantels']));
$turno->turnoPlantel()->sync($request->plantels);
return redirect()->route('turno.edit',$turno)->with('info','El turno se creo correctamente');
}
public function show(Turno $turno)
{
return view('turno.show',compact('turno'));
}
public function edit(Turno $turno)
{
$plantels = Plantel::where('status','=','1')->get();
return view('turno.edit',compact('turno','plantels'));
}
public function update(Request $request, Turno $turno)
{
$turno->update($request->except(['plantels']));
$turno->turnoPlantel()->sync($request->plantels);
return redirect()->route('turno.edit',$turno)->with('info','El turno se actualizo correctamente');
}
public function destroy(Turno $turno)
{
$turno->delete();
session()->flash('swal',[
'icon'=>'success',
'title'=>'Eliminado!',
'text'=>'Se ha eliminado el registro correctamente'
]);
return redirect()->route('turno.index');
}
}
+85
View File
@@ -0,0 +1,85 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Routing\Controller;
use App\Models\Plantel;
use App\Models\User;
use Illuminate\Http\Request;
use Spatie\Permission\Models\Role;
class UserController extends Controller
{
public function __construct() {
$this->middleware('can:user.index')->only('index','show');
$this->middleware('can:user.create')->only('create','store');
$this->middleware('can:user.edit')->only('edit','update');
$this->middleware('can:user.destroy')->only('destroy');
}
public function index()
{
$plantels=Plantel::all();
$users=User::with('roles')->get();
return view('user.index',compact('users','plantels'));
}
public function create()
{
$plantels = Plantel::where('status','=','1')->get();
$roles= Role::all();
return view('user.create',compact('roles','plantels'));
}
public function store(Request $request,User $user)
{
$user= User::create($request->except(['plantels']));
$user->roles()->sync($request->roles);
$user->plantelUsuarios()->sync($request->plantels);
return redirect()->route('user.edit',compact('user'))->with('info','Se creó el usuario correctamente');
}
public function show(User $user)
{
return view('user.show',compact('user'));
}
public function edit(User $user)
{
$plantels=Plantel::all();
$roles= Role::all();
return view('user.edit',compact('user','roles','plantels'));
}
public function update(Request $request, User $user)
{
$user->update($request->except(['plantels']));
$user->roles()->sync($request->roles);
$user->plantelUsuarios()->sync($request->plantels);
return redirect()->route('user.edit',compact('user'))->with('info','Se modifico el usuario correctamente');
}
public function destroy(User $user)
{
$user->plantelUsuarios()->detach();
$user->delete();
session()->flash('swal',[
'icon'=>'success',
'title'=>'Eliminado!',
'text'=>'Se ha eliminado el registro correctamente'
]);
return redirect()->route('user.index');
}
public function profile(){
return view('profile.show');
}
}