MINI MINI MANI MO

Path : /var/www/html/sistemas/saplxi/app/Http/Controllers/MCG/
File Upload :
Current File : /var/www/html/sistemas/saplxi/app/Http/Controllers/MCG/SesionesController.php

<?php

namespace App\Http\Controllers\MCG;

use App\Http\Controllers\Controller;
use App\Models\CddDiputadosLxi;
use App\Models\CddSesiones;
use App\Models\TipoSesion;
use App\Models\TipoPeriodo;
use App\Models\TipoRegimen;
use Carbon\Carbon;
use Illuminate\Contracts\Foundation\Application;
use App\Models\CddIntegrantesLXI;
use Illuminate\Http\Request;
use Illuminate\Support\Arr;

class SesionesController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View
     */
    public function index()
    {
        $sesiones = CddSesiones::all();
        return view("Administrador.sesiones.index", compact("sesiones"));
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        $last = CddSesiones::orderBy("sesion", "DESC")->first();
        $last = $last->sesion + 1;
        $an = Arr::pluck(TipoSesion::all(), "valor", "id");
        $periodo = Arr::pluck(TipoPeriodo::all(), "valor", "id");
        $regimen = Arr::pluck(TipoRegimen::all(), "valor", "id");
//        dd($an);
        return view("Administrador.sesiones.create", compact("last", "an", "periodo", "regimen"));

    }

    /**
     * Store a newly created resource in storage.
     *
     * @param \Illuminate\Http\Request $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
//         dd($request->all());
        $params = $this->setValues($request);
        CddSesiones::create($params);
        return redirect()->route("mcg.sesiones.index");
    }

    /**
     * Display the specified resource.
     *
     * @param int $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param int $id
     * @return Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View|\Illuminate\Http\Response
     */
    public function edit($id)
    {
        $an = Arr::pluck(TipoSesion::all(), "valor", "id");
        $periodo = Arr::pluck(TipoPeriodo::all(), "valor", "id");
        $regimen = Arr::pluck(TipoRegimen::all(), "valor", "id");
        $sesion = CddSesiones::find(base64_decode(base64_decode($id)));
        return view("Administrador.sesiones.edit", compact("sesion", "an", "periodo", "regimen"));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param \Illuminate\Http\Request $request
     * @param int $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        $sesion = CddSesiones::find(base64_decode(base64_decode($id)));
        $params = $this->setValues($request);
        if (isset($params["eliminarorden"])) {
            $params["orden"] = null;
        }
        if (isset($params["eliminaracta"])) {
            $params["acta"] = null;
        }
        if (isset($params["eliminarversion"])) {
            $params["version"] = null;
        }
        $sesion->update($params);
        return redirect()->route("mcg.sesiones.index");
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param int $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        $sesion = CddSesiones::find(base64_decode(base64_decode($id)));
//        dd($sesion->asistencias);

        if ($sesion->asistencias) {
            foreach ($sesion->asistencias as $item) {
                $item->delete();
            }
        }
        $sesion->delete();
        return redirect()->back()->with('deleteD', 'ok');
    }

    public function uploadFile($file, $path)
    {
        return $file->storeAs($path, $file->getClientOriginalName());
    }

    public function setValues(Request $request)
    {
        $params = $request->get("sesion");
        $params["date"] = Carbon::createFromFormat("d/m/Y", $params["date"])->format("Y-m-d");
        if ($request->hasFile("orden")) {
            $path = "public/documentos/asuntos/ordenesdeldia";
            $this->uploadFile($request->file("orden"), $path);
            $params["orden"] = $request->file("orden")->getClientOriginalName();
        }

        if ($request->hasFile("acta")) {
            $path = "public/documentos/asuntos/actas";
            $this->uploadFile($request->file("acta"), $path);
            $params["acta"] = $request->file("acta")->getClientOriginalName();
        }

        if ($request->hasFile("version")) {
            $path = "public/documentos/asuntos/versiones";
            $this->uploadFile($request->file("version"), $path);
            $params["version"] = $request->file("version")->getClientOriginalName();
        }
        return $params;
    }

    public function asistencia($id)
    {
        $id = base64_decode(base64_decode($id));
        $dip = CddDiputadosLxi::withTrashed()->get();
        $sesion = CddSesiones::find($id);

        $estatus = [
            1 => "Asistencia",
            2 => "Inasistencia Justificada",
//            3 => "Justificación",
//            4 => "Sin asistencia",
        ];
        if (count($sesion->asistencia)) {
            $diputados = CddDiputadosLxi::whereHas("asistencia", function ($q) use ($id) {
                $q->where("id_sesion", $id);
            })->orderBy("apaterno")->withTrashed()->get();
        } else {
            if ($sesion->tipo_sesion) {
                $comision = CddIntegrantesLXI::select('id_diputado')->where('id_comision', 63)->get()->pluck("id_diputado");
                $diputados = CddDiputadosLxi::where('status', 'activo')->whereIn("id", $comision)->get();
                // dd($diputados);
            } else {
                $diputados = CddDiputadosLxi::orderBy("apaterno")->get();
            }
        }
        return view("Administrador.sesiones.asistencia.edit", compact("diputados", "sesion", "estatus","dip"));
    }

    public function saveAsistencia(Request $request, $id)
    {
        $params = $request->except("_method", "_token");
        $sesion = CddSesiones::find(base64_decode(base64_decode($id)));
        $sesion->asistencias()->delete();
        foreach ($params as $key => $item) {
            // dd($item);
            if (count($item) != 2) {
                $idDiputado = base64_decode(base64_decode($key));
                $dip = CddDiputadosLxi::withTrashed()->find($idDiputado);
                $data = [
                    "id_diputado" => $idDiputado,
                    "asistencia" => $item[0],
                    "legislatura" => "LXI",
                    "partido_id" => $dip->id_partido
                ];
                $sesion->asistencias()->create($data);
            }
        }
        return redirect()->back()->with("asistencia", "ok");
    }
}

OHA YOOOO