Untitled

mail@pastecode.io avatar
unknown
plain_text
a year ago
5.8 kB
0
Indexable
Never
<?php

namespace App\Http\Controllers;

use App\Models\Eventos;
use App\Models\EventosRegistros;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Auth;

date_default_timezone_set('America/Mexico_City');
class EventosController extends Controller
{

    public function lista_api(Request $request){
        if($request->ajax()){
            return datatables()->eloquent(Eventos::query())
            ->addColumn('Fecha', function ($row) {

                $Fecha = $row->created_at;

                return $Fecha;
            })
            ->addColumn('btn', function ($row) {

                $User = User::find(Auth::user()->id);

                if($row->habilitado == 0){
                    $actionBtn = "<div class='btn-group btn-group-sm' role='group'>";

                    if($User->hasPermissionTo('per.eventos.editar')){
                        $actionBtn = $actionBtn . "<a href='" . route('eventos.editar', ['idEventos' => $row->id]) . "' class='btn btn-primary'>Editar</a>";
                    }

                    if($User->hasPermissionTo('per.eventos.desactivar')){
                        $actionBtn = $actionBtn . "<a href='" . route('eventos.desactivar', ['idEventos' => $row->id]) . "' class='btn btn-danger'>Desactivar</a>";
                    }

                    $actionBtn = $actionBtn . "</div>";
                }else{
                    $actionBtn = "<div class='btn-group btn-group-sm' role='group'>";

                    if($User->hasPermissionTo('per.eventos.editar')){
                        $actionBtn = $actionBtn . "<a href='" . route('eventos.editar', ['idEventos' => $row->id]) . "' class='btn btn-primary'>Editar</a>";
                    }

                    if($User->hasPermissionTo('per.eventos.activar')){
                        $actionBtn = $actionBtn . "<a href='" . route('eventos.activar', ['idEventos' => $row->id]) . "' class='btn btn-info'>Activar</a>";
                    }

                    $actionBtn = $actionBtn . "</div>";
                }

                return $actionBtn;
            })
            ->rawColumns(['btn', 'Fecha'])
            ->toJson();
        }

        return redirect()->route('eventos.lista');
    }

    public function lista(){
        return view('eventos.lista');
    }

    public function nuevo(){
        return view('eventos.crear');
    }

    public function nuevo_post(Request $request){

        $request->validate([
            'Nombre' => 'required|string|max:255',
            'Descripcion' => 'required',
            'DefinirEventoPaga' => 'required|numeric',
        ], [
            'Nombre.required' => 'El nombre es requerido.',
            'Nombre.max' => 'El nombre debe contener máximo 255 carácteres.',
            'Descripcion.required' => 'La descripción es requerida.',
            'DefinirEventoPaga.required' => 'Debe elegir si es un evento de paga o gratuito.',
        ]);

        $FechaHoraActual = date("Y-m-d H:i:s");

        $TokenParaEncryp = $request->Nombre.' | '.$FechaHoraActual;
        $TokenRefenciaCrudo = Hash::make($TokenParaEncryp);
        $TokenRefencia = preg_replace('([^A-Za-z0-9 \._\-@])', '', $TokenRefenciaCrudo);

        $EventoNuevo = Eventos::create([
            'nombre' => $request->Nombre,
            'descripcion' => $request->Descripcion,
            'referencia' => $TokenRefencia,
            'registros' => 0,
            'habilitado' => 0,
            'pago' => $request->AgendarMismoHorario,
        ]);

        return redirect()->route('eventos.lista')->with('mensaje', 'Evento creado.');

    }

    public function editar(int $idEventos){
        $info['Evento'] = Eventos::find($idEventos);

        if(!$info['Evento']){
            return redirect()->route('eventos.lista')->with('mensaje', 'El evento no existe.');
        }

        return view('eventos.editar', $info);
    }

    public function editar_post(Request $request, int $idEventos){
        $request->validate([
            'Nombre' => 'required|string|max:255',
            'Descripcion' => 'required',
        ], [
            'Nombre.required' => 'El nombre es requerido.',
            'Nombre.max' => 'El nombre debe contener máximo 255 carácteres.',
            'Descripcion.required' => 'La descripción es requerida.',
        ]);

        $ActualizarEvento = Eventos::find($idEventos);

        $ActualizarEvento->update([
            'nombre' => $request->Nombre,
            'descripcion' => $request->Descripcion,
        ]);

        return redirect()->route('eventos.editar', ['idEventos' => $idEventos])->with('mensaje', 'Evento actualizado.');

    }

    public function desactivar(int $idEventos){
        $ActualizarEvento = Eventos::find($idEventos);

        if(!$ActualizarEvento){
            return redirect()->route('eventos.lista')->with('mensaje', 'El evento no existe.');
        }

        $ActualizarEvento->update([
            'habilitado' => 1,
        ]);

        $ActualizarEventosRegistros = EventosRegistros::where('eventos_id', '=', $ActualizarEvento->id)->update(['habilitado' => 1]);

        return redirect()->route('eventos.lista')->with('mensaje', 'Evento desactivado.');
    }

    public function activar(int $idEventos){
        $ActualizarEvento = Eventos::find($idEventos);

        if(!$ActualizarEvento){
            return redirect()->route('eventos.lista')->with('mensaje', 'El evento no existe.');
        }

        $ActualizarEvento->update([
            'habilitado' => 0,
        ]);

        return redirect()->route('eventos.lista')->with('mensaje', 'Evento activado.');
    }

}