MINI MINI MANI MO
<?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