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/ComisionesController.php

<?php

namespace App\Http\Controllers\MCG;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Arr;
use App\Models\CddSesionComision;
use App\Models\CddComisiones;
use App\Models\CddSesiones;
use App\Models\CddDiputadosLxi;
use App\Models\CddIntegrantesLXI;
use App\Models\CddTemasSesionComision;
use App\Models\CddIniciativas;
use App\Models\CddSubtemas;
use App\Models\TipoSesion;
use App\Models\TipoPeriodo;
use Illuminate\Support\Facades\Storage;

class ComisionesController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $eventoComision = CddSesionComision::orderBy('sesion', 'DESC')->get();

        return view("Administrador.comisiones.index", compact("eventoComision"));
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        $last = CddSesionComision::orderBy("sesion", "DESC")->first();
        if($last){
            $last = $last->sesion + 1;
        }else{
            $last = 1;
        }

        $comisiones = Arr::pluck(CddComisiones::all(), "nombre", "id" );
        $iniciativas = Arr::pluck(CddIniciativas::where('categoria','Iniciativa')->get(), "iniciativa", "id" );
        $puntosAcuerdos = Arr::pluck(CddIniciativas::where('categoria','Punto de Acuerdo')->get(), "iniciativa", "id" );
        $an = Arr::pluck(TipoSesion::all(), "valor", "id" );
        $periodo = Arr::pluck(TipoPeriodo::all(), "valor", "id" );

        return view("Administrador.comisiones.create", compact("last", "comisiones", "iniciativas", "an", "periodo", "puntosAcuerdos"));
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //dd($request->all(), 'store');
        $comisiones = $request->comisiones;
        $item = $request->comision;
        $request_temas = $request->comisionesTema;
        $temas = json_decode($request_temas[0]);
        //dd($temas);

        if ($request->hasFile("orden")) {
            $file = $request->file("orden");
            $nombre = $file->getClientOriginalName();
            $path = "public/documentos/SesionComision/ordenes";
            $file->storeAs($path, $nombre);
            $item["orden"] = $request->file("orden")->getClientOriginalName();

        }
        if ($request->hasFile("acta")) {
            $file = $request->file("acta");
            $nombre = $file->getClientOriginalName();
            $path = "public/documentos/SesionComision/actas";
            $file->storeAs($path, $nombre);
            $item["acta"] = $request->file("acta")->getClientOriginalName();

        }
        if ($request->hasFile("version")) {
            $file = $request->file("version");
            $nombre = $file->getClientOriginalName();
            $path = "public/documentos/SesionComision/versiones";
            $file->storeAs($path, $nombre);
            $item["version"] = $request->file("version")->getClientOriginalName();

        }
        if(count($comisiones) > 1){
            $item["id_comision"] = json_encode($comisiones);
            $item["comision_unida"] = 1;


        }else{
            $item["id_comision"] = $comisiones[0];
            $item["comision_unida"] = 0;

        }
        $evento = CddSesionComision::create($item);
        foreach ($temas as $value) {
            $temaSC = CddTemasSesionComision::create([
                "legislatura" => $evento->legislatura,
                "id_sesiones_comision" => $evento->id,
                "tema" => $value->tema,
                "tipo" => $value->tipo,
                "created_at" => now(),
                "updated_at" => now(),
            ]);
            if(count($value->subtema)){
                foreach ($value->subtema as $data) {
                    CddSubtemas::create([
                        "id_tema" => $temaSC->id,
                        "subtema" => $data
                    ]);
                }

            }

        }


        return redirect()->route("mcg.comisiones.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 \Illuminate\Http\Response
     */
    public function edit($id)
    {
        $id = base64_decode(base64_decode($id));
        $comision = CddSesionComision::find($id);
        $comisiones = Arr::pluck(CddComisiones::all(), "nombre", "id" );
        $iniciativas = Arr::pluck(CddIniciativas::where('categoria','Iniciativa')->get(), "iniciativa", "id" );
        $puntosAcuerdos = Arr::pluck(CddIniciativas::where('categoria','Punto de Acuerdo')->get(), "iniciativa", "id" );
        $last = CddSesiones::orderBy("sesion", "DESC")->first();
        $last = $last->sesion + 1;
        $temas = $comision->temas;
        $an = Arr::pluck(TipoSesion::all(), "valor", "id" );
        $periodo = Arr::pluck(TipoPeriodo::all(), "valor", "id" );
        /*foreach ($comision->temas as $value) {
            $temas[] = $value->tema;

        }
        json_encode($temas);*/
        //dd($temas[1]->subTemas);
        return view('Administrador.comisiones.edit', compact('comision', 'comisiones', 'last', 'temas', 'iniciativas', 'an', 'periodo', 'puntosAcuerdos'));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {

        $id = base64_decode(base64_decode($id));
        $comision = CddSesionComision::find($id);
        $comisiones = $request->comisiones;
        $item = $request->comision;
        $request_temas = $request->comisionesTema;

//        foreach ($comision->temas as $value) {
//           $value->subTemas()->delete();
//        }
//        $temasAnterior = $comision->temas()->delete();
//        $comision->votaciones()->delete();
        $temas = json_decode($request_temas[0]);
        //dd($temas);
        if ($request->hasFile("orden")) {
            Storage::disk('public')->delete('documentos/SesionComision/ordenes/'.$comision->orden);
            $file = $request->file("orden");
            $nombre = $file->getClientOriginalName();
            $path = "public/documentos/SesionComision/ordenes";
            $file->storeAs($path, $nombre);
            $item["orden"] = $request->file("orden")->getClientOriginalName();

        }
        if ($request->hasFile("acta")) {
            Storage::disk('public')->delete('documentos/SesionComision/ordenes/'.$comision->acta);
            $file = $request->file("acta");
            $nombre = $file->getClientOriginalName();
            $path = "public/documentos/SesionComision/actas";
            $file->storeAs($path, $nombre);
            $item["acta"] = $request->file("acta")->getClientOriginalName();

        }
        if ($request->hasFile("version")) {
            Storage::disk('public')->delete('documentos/SesionComision/ordenes/'.$comision->version);
            $file = $request->file("version");
            $nombre = $file->getClientOriginalName();
            $path = "public/documentos/SesionComision/versiones";
            $file->storeAs($path, $nombre);
            $item["version"] = $request->file("version")->getClientOriginalName();

        }

        if(count($comisiones) > 1){
            $item["id_comision"] = json_encode($comisiones);
            $item["comision_unida"] = 1;


        }else{
            $item["id_comision"] = $comisiones[0];
            $item["comision_unida"] = 0;

        }

        $comision->update($item);
        /*foreach ($temas as $value) {
            $temaSC = CddTemasSesionComision::create([
                "legislatura" => $comision->legislatura,
                "id_sesiones_comision" => $comision->id,
                "tema" => $value->tema,
                "tipo" => $value->tipo,
                "created_at" => now(),
                "updated_at" => now(),
            ]);
            if(count($value->subtema)){
                foreach ($value->subtema as $data) {
                    CddSubtemas::create([
                        "id_tema" => $temaSC->id,
                        "subtema" => $data
                    ]);
                }

            }
        }*/

        return redirect()->route("mcg.comisiones.index");
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {

        $id = base64_decode(base64_decode($id));
        $comision = CddSesionComision::find($id);
        foreach ($comision->temas as $value) {
            $value->subTemas()->delete();
        }
        $comision->temas()->delete();
        $comision->asistencias()->delete();
        $comision->votaciones()->delete();
        $comision->delete();

        return redirect()->route("mcg.comisiones.index");
    }

    public function asistencia($id)
    {
        $id = base64_decode(base64_decode($id));
        $comision = CddSesionComision::find($id);

        $estatus = [
            1 => "Asistencia",
            2 => "Inasistencia",
            3 => "Justificación",
        ];
        if($comision->comision_unida){

            $idcomisiones =  json_decode($comision->id_comision);
            if(count($comision->asistencias)){
                foreach ($idcomisiones as $value) {
                    $presidente = $comision->asistencias()->where('id_comision', $value)->where('cargo','=','Presidente')->first();
                    $secretario = $comision->asistencias()->where('id_comision', $value)->where('cargo','=','Secretario')->first();
                    $prosecretario = $comision->asistencias()->where('id_comision', $value)->where('cargo','=','Prosecretario')->first();
                    $integrantes = $comision->asistencias()->where('id_comision', $value)->where('cargo','=','Miembro')->orderBy('id', 'ASC')->get();
                    $integrantes->prepend($prosecretario);
                    $integrantes->prepend($secretario);
                    $integrantes->prepend($presidente);

                    $diputados[$value] =  $integrantes;
                    //
                }

            }else{
                foreach ($idcomisiones as $value) {

                    $presidente = CddIntegrantesLXI::where('id_comision', $value)->where('cargo','=','Presidente')->first();
                    $secretario = CddIntegrantesLXI::where('id_comision', $value)->where('cargo','=','Secretario')->first();
                    $prosecretario = CddIntegrantesLXI::where('id_comision', $value)->where('cargo','=','Prosecretario')->first();
                    $integrantes = CddIntegrantesLXI::where('id_comision', $value)->where('cargo','=','Miembro')->orderBy('id', 'ASC')->get();
                    $integrantes->prepend($prosecretario);
                    $integrantes->prepend($secretario);
                    $integrantes->prepend($presidente);
                    $diputados[$value] = $integrantes;
                }
            }


            $comisionesAsis = CddComisiones::whereIn("id", $idcomisiones)->get();

        }else{

            if(count($comision->asistencias)){

                $presidente = $comision->asistencias()->where('id_comision', $comision->id_comision)->where('cargo','=','Presidente')->first();
                $secretario = $comision->asistencias()->where('id_comision', $comision->id_comision)->where('cargo','=','Secretario')->first();
                $prosecretario = $comision->asistencias()->where('id_comision', $comision->id_comision)->where('cargo','=','Prosecretario')->first();
                $integrantes = $comision->asistencias()->where('id_comision', $comision->id_comision)->where('cargo','=','Miembro')->orderBy('id', 'ASC')->get();
                $integrantes->prepend($prosecretario);
                $integrantes->prepend($secretario);
                $integrantes->prepend($presidente);
                //$diputados[$value] =  CddDiputadosLxi::whereIn("id", $asistenciasDip )->withTrashed()->get();
                $diputados[$comision->id_comision] =  $integrantes;
                //dd($diputados);
            }else{
                $presidente = CddIntegrantesLXI::where('id_comision', $comision->id_comision)->where('cargo','=','Presidente')->first();
                $secretario = CddIntegrantesLXI::where('id_comision', $comision->id_comision)->where('cargo','=','Secretario')->first();
                $prosecretario = CddIntegrantesLXI::where('id_comision', $comision->id_comision)->where('cargo','=','Prosecretario')->first();
                $integrantes = CddIntegrantesLXI::where('id_comision', $comision->id_comision)->where('cargo','=','Miembro')->orderBy('id', 'ASC')->get();
                $integrantes->prepend($prosecretario);
                $integrantes->prepend($secretario);
                $integrantes->prepend($presidente);

                //$diputados[$comision->id_comision] = CddDiputadosLxi::where('status', 'activo')->whereIn("id", $integrantes->pluck('id_diputado') )->withTrashed()->get();
                $diputados[$comision->id_comision] = $integrantes;
            }

            $comisionesAsis = CddComisiones::where('id',$comision->id_comision)->get();

        }
        $dip = CddDiputadosLxi::withTrashed()->get();

        //dd($diputados);
        return view("Administrador.comisiones.asistencia.edit", compact("diputados", "comision", "estatus", "dip", "comisionesAsis"));
    }

    public function saveAsistencia(Request $request, $id)
    {
        $data = $request->except("_method", "_token");

        $comision = CddSesionComision::find(base64_decode(base64_decode($id)));
        $comision->asistencias()->delete();
        $eliminados = [];

        foreach ($data as $key => $item) {
            $idDiputado = base64_decode(base64_decode($key));

            foreach ($item as $key => $value) {

                if(substr($value,0,2) === "0-"){
                    $comS = substr($value,2);
                    unset($item[$key]);
                    $eliminados[$idDiputado] = $comS;
                    //array_push($eliminados, $comS);

                }

            }
            $votos = array_chunk($item, 3);

            foreach ($votos as $datos) {

                $clave = array_search($datos[1], $eliminados);
                $dipKey = array_key_exists($idDiputado, $eliminados);
                if($clave == false && $dipKey == false || $clave == false && $dipKey == true){

                    $data = [
                        "id_diputado" => $idDiputado,
                        "asistencia" => $datos[0],
                        "legislatura" => "LXII",
                        "id_comision" => $datos[1],
                        "cargo" => $datos[2]
                    ];

                    $comision->asistencias()->create($data);

                }

            }
            $eliminados = [];

        }

        return redirect()->route("mcg.comisiones.index");
    }

    public function comisionesUnidas($id)
    {

        $comision = CddSesionComision::find($id);
        $idcomisiones =  json_decode($comision->id_comision);
        $comisiones = CddComisiones::whereIn("id", $idcomisiones)->get();
        $nombre = [];
        foreach ($comisiones as $item) {
            $nombre[] = $item->nombre;
        }
        return $nombre;
    }

    public function votaciones($id,$control)
    {
        $id = base64_decode(base64_decode($id));
        $control = base64_decode(base64_decode($control));
        $separada = explode('/', $control);
        $comision = CddSesionComision::find($id);
        $temas = $comision->temas;
        $subtemas =  CddSubtemas::where('id_tema',$control)->get();
        $control = $separada;

        $estatus = [
            1 => "Favor",
            2 => "Contra",
            3 => "Abstencion",
            4 => "Sin registro",
        ];
        //dd($control);
        if($control[0] != 0){

            if($comision->comision_unida){
                $idcomisiones =  json_decode($comision->id_comision);

                foreach ($idcomisiones as $value) {
                    //$asistenciasDip = $comision->asistencias()->where('asistencia',1)->where('id_comision',$value)->get();
                    $presidente = $comision->asistencias()->where('asistencia',1)->where('id_comision',$value)->where('cargo','=','Presidente')->first();
                    $secretario = $comision->asistencias()->where('asistencia',1)->where('id_comision',$value)->where('cargo','=','Secretario')->first();
                    $prosecretario = $comision->asistencias()->where('asistencia',1)->where('id_comision',$value)->where('cargo','=','Prosecretario')->first();
                    $integrantes = $comision->asistencias()->where('asistencia',1)->where('id_comision',$value)->where('cargo','=','Miembro')->orderBy('id', 'ASC')->get();
                    $integrantes->prepend($prosecretario);
                    $integrantes->prepend($secretario);
                    $integrantes->prepend($presidente);
                    //$diputados[$value] =  CddDiputadosLxi::whereIn("id", $asistenciasDip )->withTrashed()->get();
                    $diputados[$value] =  $integrantes;

                }

            }else{
                $asistenciasDip = $comision->asistencias()->where('asistencia',1)->get()->pluck('id_diputado');
                $diputados[$comision->id_comision] =  CddDiputadosLxi::whereIn("id", $asistenciasDip )->withTrashed()->get();

                // $asistenciasDip = $comision->asistencias()->where('asistencia',1)->where('id_comision',$value)->get();
                $presidente = $comision->asistencias()->where('asistencia',1)->where('cargo','=','Presidente')->first();
                $secretario = $comision->asistencias()->where('asistencia',1)->where('cargo','=','Secretario')->first();
                $prosecretario = $comision->asistencias()->where('asistencia',1)->where('cargo','=','Prosecretario')->first();
                $integrantes = $comision->asistencias()->where('asistencia',1)->where('cargo','=','Miembro')->orderBy('id', 'ASC')->get();
                $integrantes->prepend($prosecretario);
                $integrantes->prepend($secretario);
                $integrantes->prepend($presidente);
                //$diputados[$value] =  CddDiputadosLxi::whereIn("id", $asistenciasDip )->withTrashed()->get();
                $diputados[$comision->id_comision] =  $integrantes;
            }



        }else{
            $diputados = [];

        }

        return view("Administrador.comisiones.votaciones.tema", compact("comision", "temas", "diputados", "estatus", "control", "subtemas"));
    }

    public function saveVotaciones(Request $request, $id)
    {
        //dd($request->all());
        $data = $request->except("_method", "_token");
        $comision = CddSesionComision::find(base64_decode(base64_decode($id)));
        $tipo = $data["tipo"];
        unset($data["tipo"]);
        //dd($data);
        foreach ($data as $key => $item) {
            $idDiputado = base64_decode(base64_decode($key));
            $votos = array_chunk($item, 4);

            foreach ($votos as $datos) {
                $votos = $comision->votaciones()->where("id_diputado", $idDiputado)->where('id_comision',$datos[1])->where('tema',$datos[3])->first();
                $data = [
                    "id_diputado" => $idDiputado,
                    "voto" => $datos[0],
                    "legislatura" => "LXII",
                    "tema" => $datos[3],
                    "id_comision" => $datos[1],
                    "tipo_tema" => $tipo
                ];

                if (!$votos) {
                    $comision->votaciones()->create($data);
                } else {
                    $votos->update($data);

                }
            }


        }

        return redirect()->route("mcg.comisiones.index");
    }

    public function ComisionNombre($com)
    {
        $comision = CddComisiones::find($com);
        if(!$comision){
            dd($com);
        }

        return $comision->nombre;


    }

    public function ComisionUnidaNombre($comision)
    {
        $comision = CddSesionComision::find($comision);
        if($comision->comision_unida == 0){
            return  $comision->comision->nombre;

        }else{
            $llaves = json_decode($comision->id_comision);
            foreach($llaves as $item){
                $comision = CddComisiones::find($item);
                $nombre[] = $comision->nombre;
            }

            return $nombre;
        }

    }

    public function getDiputado($id)
    {
        $diputado = CddDiputadosLxi::withTrashed()->with('partido')->get()->find($id);
        //dd($diputado);
        return $diputado;

    }

    public function deleteReunionAsistencia($id)
    {
        $id = base64_decode(base64_decode($id));
        $comision = CddSesionComision::find($id);
        $comision->asistencias()->forceDelete();
        $comision->votaciones()->forceDelete();

        return redirect()->route("mcg.comisiones.index");
    }

    public function savetemaE(Request $request){

        $evento = CddSesionComision::find($request->idSesion);
        if($request->create == 1){
            $temaSC = CddTemasSesionComision::create([
                "legislatura" => $evento->legislatura,
                "id_sesiones_comision" => $evento->id,
                "tema" => $request->tema,
                "tipo" => $request->tipo,
                "created_at" => now(),
                "updated_at" => now(),
            ]);
            if($request->subtema){
                foreach ($request->subtema as $data) {
                    CddSubtemas::create([
                        "id_tema" => $temaSC->id,
                        "subtema" => $data
                    ]);
                }

            }


        }else{

            $temaSCE = CddTemasSesionComision::where('id_sesiones_comision',$evento->id)->where('tema', $request->tema)->where('tipo', $request->tipo)->first();
            CddSubtemas::where('id_tema', $temaSCE->id)->delete();
            $temaSCE->delete();

        }


        return  response()->json(['status' => '200']);
    }
}

OHA YOOOO