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

<?php

namespace App\Http\Controllers\MCG;

use App\Http\Controllers\Controller;
use App\Imports\ImportVotacion;
use App\Models\Banner;
use App\Models\BienMueble;
use App\Models\CddDiputadosLxi;
use App\Models\CddIniciativas;
use App\Models\CddIntegrantesLXI;
use App\Models\CddComisiones;
use App\Models\Decretos;
use App\Models\DocumentosInformativos;
use App\Models\VotacionDecretos;
use Carbon\Carbon;
use Carbon\Traits\Date;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
use Maatwebsite\Excel\Facades\Excel;
use Illuminate\Support\Arr;

class IniciativasController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $tipo = "Iniciativa";

        $iniciativas = CddIniciativas::select("id", "folio", "iniciativa", "presentada", "autor", "comisiones", "documento", "nombre_decreto", "decreto", "fecha_decreto", "status")
            ->with("votacion")
            ->with("favor")
            ->with("contra")
            ->with("abstencion")
            ->with("sinRegistro")->orderBy("folio", "DESC")->where('categoria', 'Iniciativa')
            ->get();

        //dd(json_decode($iniciativas[1]->comisiones));
        return view("Administrador.iniciativas.index", compact("iniciativas", "tipo"));
    }

    public function puntodeacuerdo()
    {
        $tipo = "Punto de Acuerdo";

        $iniciativas = CddIniciativas::select("id", "folio", "iniciativa", "presentada", "autor", "comisiones", "documento", "nombre_acuerdo", "acuerdo", "fecha_acuerdo")
            ->with("votacion")
            ->with("favor")
            ->with("contra")
            ->with("abstencion")
            ->with("sinRegistro")->orderBy("folio", "DESC")->where('categoria', 'Punto de Acuerdo')
            ->get();
        return view("Administrador.iniciativas.index", compact("iniciativas", "tipo"));


    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create(Request $request)
    {
        $ruta = explode('/', url()->previous());
        $comisiones = Arr::pluck(CddComisiones::all(), "nombre", "id");
        //dd($comisiones);

        if ($ruta[4] == "iniciativas") {
            $tipo = "Iniciativa";
        } else {
            $tipo = "Punto de Acuerdo";
        }
        $consecutivo = $this->getConsecutivo($tipo);
        return view("Administrador.iniciativas.create", compact("consecutivo", "tipo", "comisiones"));
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param \Illuminate\Http\Request $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {

        $file = $request->file('documento');


        $comisiones = json_decode($request->get("comisionesTema")[0]);
        $arr = [];
        foreach ($comisiones as $value) {
            array_push($arr, $value->comision);
        }
        $comisiones = json_encode($arr);
        $params = $request->get("iniciativa");
        $params["status"] = "En estudio";
        $params["dictamen"] = "";
        $params["num_decreto"] = "";
        $params["decreto"] = "";
        $params["acuerdo"] = "";

        if ($file) {
            $this->uploadFile($file);
            $params["documento"] = $file->getClientOriginalName();
        }

        $params["comisiones"] = $comisiones;
        // $params["folio"] = $consecutivo;
        $params["presentada"] = Carbon::createFromFormat("d/m/Y", $params["presentada"])->format("Y-m-d");
        CddIniciativas::create($params);
        if ($params["categoria"] == "Iniciativa") {
            return redirect()->route("mcg.iniciativas.index");
        } else {
            return redirect()->route("mcg.puntoacuerdo");
        }
    }

    /**
     * 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)
    {
        $ruta = explode('/', url()->previous());
        $comisiones = Arr::pluck(CddComisiones::all(), "nombre", "id");
        //dd($comisiones);

        if ($ruta[4] == "iniciativas") {
            $tipo = "Iniciativa";
        } else {
            $tipo = "Punto de Acuerdo";
        }
        $iniciativa = CddIniciativas::find(base64_decode(base64_decode($id)));
//        dd($iniciativa->decretos);
        $comisiones = Arr::pluck(CddComisiones::all(), "nombre", "id");
//        dd($comisiones);
        $estatus = [
            "En estudio" => "En estudio",
            "Aprobada" => "Aprobada",
            "Precluida" => "Precluida",
            "Retirada" => "Retirada",
            "Desaprobada" => "Desaprobada",
            "Aprobada/En estudio" => "Aprobada/En estudio",
            "Desaprobada/En estudio" => "Desaprobada/En estudio",
            "Aprobada/Mandada al congreso" => "Aprobada/Mandada al congreso",
        ];

        if ($ruta[4] == "iniciativas") {
            return view("Administrador.iniciativas.editar.edit", compact("iniciativa", "estatus", "comisiones", "tipo"));
        } else {
            return view("Administrador.iniciativas.edit", compact("iniciativa", "estatus", "comisiones", "tipo"));
        }


    }

    /**
     * Update the specified resource in storage.
     *
     * @param \Illuminate\Http\Request $request
     * @param int $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        $iniciativa = CddIniciativas::find(base64_decode(base64_decode($id)));
        $comisiones = json_decode($request->get("comisionesTema")[0]);
        $arr = [];
        foreach ($comisiones as $value) {
            array_push($arr, $value->comision);
        }
        $comisiones = json_encode($arr);
        $params = $request->get("iniciativa");
        $params["comisiones"] = $comisiones;

        if (!empty($request->file('documento'))) {
            $file = $request->file('documento');
            $this->deleteFile($iniciativa->documento);
            $this->uploadFile($file);
            $params["documento"] = $file->getClientOriginalName();
        }

        if (!empty($request->file('decreto'))) {
            $file = $request->file('decreto');
            $this->uploadFile($file);
//            dd($file);
            if ($params["categoria"] == "Iniciativa") {
                if ($iniciativa->decreto !== "") {
                    $this->deleteFile($iniciativa->decreto);
                }
                $params["decreto"] = $file->getClientOriginalName();

            } else {
                if ($iniciativa->acuerdo !== "") {
                    $this->deleteFile($iniciativa->acuerdo);
                }
                $params["acuerdo"] = $file->getClientOriginalName();
            }

        }
        if ($params["categoria"] == "Iniciativa") {
            if (isset($params["num_decreto"])) {
                $params["fecha_decreto"] = Carbon::createFromFormat("d/m/Y", $params["fecha_decreto"])->format("Y-m-d");
            } else {
                $params["fecha_decreto"] = " ";
            }
        } else {
            if (isset($params["nombre_decreto"])) {
                $params["fecha_acuerdo"] = Carbon::createFromFormat("d/m/Y", $params["fecha_decreto"])->format("Y-m-d");
            } else {
                $params["fecha_acuerdo"] = " ";
            }
            $params["nombre_acuerdo"] = $params["nombre_decreto"];
            unset($params["decreto"], $params["fecha_decreto"], $params["num_decreto"], $params["nombre_decreto"]);
        }
        $params["presentada"] = Carbon::createFromFormat("d/m/Y", $params["presentada"])->format("Y-m-d");
        if (isset($params["eliminar"])) {
            $params["decreto"] = null;
            $params["acuerdo"] = null;
        }
        $iniciativa->update($params);
        if ($params["categoria"] == "Iniciativa") {
            return redirect()->route("mcg.iniciativas.index");
        } else {
            return redirect()->route("mcg.puntoacuerdo");
        }
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param int $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        CddIniciativas::find(base64_decode(base64_decode($id)))->delete();
        return redirect()->back()->with("delete", "ok");
    }

    public function getConsecutivo($tipo)
    {
        $consecutivo = CddIniciativas::orderBy("folio", "DESC")->where("categoria", $tipo)->first();
        return $consecutivo->folio + 1;
    }

    public function uploadFile($file)
    {
        return $file->storeAs(
            'public/documentos/asuntos/iniciativas',
            $file->getClientOriginalName()
        );
    }

    public function deleteFile($path)
    {
        return Storage::delete($path);
    }

    public function votacion($id, $tipo)
    {

        $id = base64_decode(base64_decode($id));
        $iniciativa = CddIniciativas::find($id);
        $sentidos = [
            1 => "A favor",
            2 => "En contra",
            3 => "Abstención",
            4 => "Ausente",
        ];
        $decretos = $iniciativa->decretos;
//        dd($decretos);
        $dip = CddDiputadosLxi::withTrashed()->get();
        if (count($iniciativa->votacion)) {
            $diputados = CddDiputadosLxi::whereHas("votacion", function ($q) use ($id) {
                $q->where("id_iniciativa", $id);
            })->orderBy("apaterno")->withTrashed()->get();
        } else {
            if ($iniciativa->tipo_iniciativa == 1) {
                $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.iniciativas.votacion.create", compact("diputados", "decretos","iniciativa", "sentidos", "dip", "tipo"));


    }

    public function saveVotacion(Request $request, $id)
    {

        $params = $request->except("_method", "_token");
        $tipo =  $params["tipo"];
        unset($params["tipo"]);
        $iniciativa = CddIniciativas::find(base64_decode(base64_decode($id)));

        if($tipo == 0){
            $iniciativa->votacion()->delete();
            foreach ($params as $key => $item) {

                if (count($item) != 2) {

                    $idDiputado = base64_decode(base64_decode($key));
                    $diputado = CddDiputadosLxi::whereId($idDiputado)->withTrashed()->first();

                    $data = [
                        "id_diputado" => $idDiputado,
                        "id_partido" => $diputado->partido->id,
                        "voto" => $item[0]
                    ];
                    $iniciativa->votacion()->create($data);
                }




            }

        }else{

            $iniciativa->decretos()->where("id",$tipo)->first()->votacionDecreto()->delete();
            foreach ($params as $key => $item) {

                if (count($item) != 2) {

                    $idDiputado = base64_decode(base64_decode($key));
                    $diputado = CddDiputadosLxi::whereId($idDiputado)->withTrashed()->first();
                    $data = [
                        "id_decretos" => $tipo,
                        "id_diputado" => $idDiputado,
                        "voto" => $item[0]
                    ];
                    VotacionDecretos::create($data);

                }

            }

        }
        return redirect()->back()->with("votacion", "ok");
    }

    public function import(Request $request, $id)
    {
        if ($request->has("tipo")) {
            $tipo = "Punto de Acuerdo";
        } else {
            $tipo = "Iniciativa";
        }
        Excel::import(new ImportVotacion($tipo), $request->file('excel'));
        $theArray = Excel::toArray([], $request->file('excel'));
        $iniciativa = CddIniciativas::where('folio', $theArray[0][0][1])->where('categoria', $tipo)->first();
//        dd($iniciativa->id);
        $id = base64_encode(base64_encode($iniciativa->id));
//        $result = [];
//
//
//        unset($theArray[0][0]);
//        foreach ($theArray[0] as $key => $item) {
//
//            $bien = BienMueble::where("numero_inventario", $item[1])->first();
//            if ($bien) {
//                $result[] = [
//                    $key,
//                    $bien->numero_inventario,
//                    $bien->nombre_bien,
//                    $bien->enajenacion == 0 ? $bien->condicion->valor : "Baja",
//                    isset($bien->ServidorBien->last()->detailServidor) ? $bien->ServidorBien->last()->detailServidor->Nombre : $bien->ServidorBien->last()->rfc
//                ];
//            }
//        }
//        $date = Carbon::now()->format("d_m_Y_h_I_s");
//        return redirect()->back()->with("success", "success");

        return redirect()->route('mcg.votacion', $id);
    }

    public function deleteVotacion($id)
    {
        $iniciativa = CddIniciativas::find(base64_decode(base64_decode($id)));
        if (count($iniciativa->votacion)) {
            $iniciativa->votacion()->delete();
        }
        return redirect()->back()->with("dleteVotacion", "ok");
    }

    public function documento()
    {
        $tipo = [
            1 => "sesion",
            2 => "Iniciativa",
            3 => "punto de acuerdo",
            4 => "Acuerdo",
            5 => "Decretro",
            6 => "minutas",
        ];
        return view("Administrador.iniciativas.documento", compact("tipo"));
//        dd("holi");
    }

    public function savedocu(Request $request)
    {
//        dd($request["documento"]["documento"]);
        $params = $request->get("iniciativa");
        $exis = DocumentosInformativos::where("tipo", $params["tipo"])->first();
        $request["documento"]["documento"]->storeAs("public/documentos/informativos", $request["documento"]["documento"]->getClientOriginalName());
        $documentoPath = "public/documentos/informativos/" . $request["documento"]["documento"]->getClientOriginalName();
        if ($exis) {
            $doc = $exis->update([
                "tipo" => $params["tipo"],
                "path" => $request["documento"]["documento"]->getClientOriginalName(),
            ]);
        } else {
            $doc = DocumentosInformativos::create([
                "tipo" => $params["tipo"],
                "path" => $request["documento"]["documento"]->getClientOriginalName(),
            ]);
        }
        return redirect()->back()->with('ok', 'ok');
    }

    public function saveIniciativa(Request $request, $id)
    {
//         dd($request->all());
        $iniciativa = CddIniciativas::find($id);
        $arr = [];
        $comisiones = json_decode($request->comisiones);

        foreach ($comisiones as $value) {
            array_push($arr, $value->comision);
        }

//        dd($arr);
        $comisiones = json_encode($arr);
//        $params = $request->get("iniciativa");
//        $params["comisiones"] = $comisiones;

        if (!empty($request->file('iniciati'))) {
            $file = $request->file('iniciati');
            $this->deleteFile($iniciativa->documento);
            $this->uploadFile($file);
            $nombreini = $file->getClientOriginalName();
        }else{
            $nombreini = $iniciativa->documento;
        }

        $inici = $iniciativa->update([
            "tipo_iniciativa" => $request->tipo_iniciativa,
            "folio" => $request->folio,
            "autor" => $request->autor,
            "iniciativa" => $request->iniciativa,
            "presentada" => Carbon::createFromFormat("d/m/Y", $request->fecha_presentada)->format("Y-m-d"),
            "comisiones" => $comisiones,
            "status" => $request->estatus,
            "documento" => $nombreini,
        ]);
//        dd($request->tipo_iniciativa);
//        if($iniciativa->decretos){
//            $iniciativa->decretos()->delete();
//        }
        $decretos = json_decode($request->decre);
        foreach ($decretos as $key => $value) {
//dd($value);
            $decreto = Decretos::where('num_decreto', $value->numero)->where('id_iniciativa',$iniciativa->id)->first();

            if(!$decreto){
                $item = $request->documentodecre[$value->control];
                $file = $item;
                $this->deleteFile($item);
                $file->storeAs('public/documentos/asuntos/decretos',$file->getClientOriginalName());
                $nombredec = $file->getClientOriginalName();
                $fechadec = Carbon::createFromFormat("d/m/Y", $value->fecha)->format("Y-m-d");
//                dd($fechadec);
                $decreto = Decretos::create([
                    "num_decreto" => $value->numero,
                    "fecha_decreto" => $fechadec,
                    "nombre_decreto" => $value->nombre,
                    "decreto" => $file->getClientOriginalName(),
                    "id_iniciativa" => $iniciativa->id,
                ]);
            }

        }

//        dd($inici);

//        if (!empty($request->file('decreto'))) {
//            $file = $request->file('decreto');
//            $this->uploadFile($file);
////            dd($file);
//            if ($params["categoria"] == "Iniciativa") {
//                if ($iniciativa->decreto !== "") {
//                    $this->deleteFile($iniciativa->decreto);
//                }
//                $params["decreto"] = $file->getClientOriginalName();
//
//            } else {
//                if ($iniciativa->acuerdo !== "") {
//                    $this->deleteFile($iniciativa->acuerdo);
//                }
//                $params["acuerdo"] = $file->getClientOriginalName();
//            }
//
//        }
//        if ($params["categoria"] == "Iniciativa") {
//            if (isset($params["num_decreto"])) {
//                $params["fecha_decreto"] = Carbon::createFromFormat("d/m/Y", $params["fecha_decreto"])->format("Y-m-d");
//            } else {
//                $params["fecha_decreto"] = " ";
//            }
//        } else {
//            if (isset($params["nombre_decreto"])) {
//                $params["fecha_acuerdo"] = Carbon::createFromFormat("d/m/Y", $params["fecha_decreto"])->format("Y-m-d");
//            } else {
//                $params["fecha_acuerdo"] = " ";
//            }
//            $params["nombre_acuerdo"] = $params["nombre_decreto"];
//            unset($params["decreto"], $params["fecha_decreto"], $params["num_decreto"], $params["nombre_decreto"]);
//        }
//        $params["presentada"] = Carbon::createFromFormat("d/m/Y", $params["presentada"])->format("Y-m-d");
//        if (isset($params["eliminar"])) {
//            $params["decreto"] = null;
//            $params["acuerdo"] = null;
//        }
//        $iniciativa->update($params);
        if ($iniciativa->categoria == "Iniciativa") {
            return "200";
        } else {
            return "202";
        }


    }

    public function eliminarDecreto($iddec, $idin){
        $decreto = Decretos::where('num_decreto', $iddec)->where('id_iniciativa',$idin)->first();

        if($decreto){
            $decreto->delete();
        }

    }
}

OHA YOOOO