Commit 1744856a authored by alekeyrivas's avatar alekeyrivas
Browse files

Vista create lista falta guardar, editar y eliminar

parent f6d35097
Loading
Loading
Loading
Loading
+108 −0
Original line number Diff line number Diff line
<?php

namespace App\Http\Controllers;

use App\Models\Instituciones;
use App\Models\Subgrupo;
use Illuminate\Http\Request;

class InstitucionesController extends Controller
{
    public function index()
    {
        $instituciones = Instituciones::all();
        return view('adminGen.instituciones.index', compact('instituciones'));
    }

    public function create()
    {
        $subgrupos = Subgrupo::all();
        return view('adminGen.instituciones.create', compact('subgrupos'));
    }

    public function store(Request $request)
    {
        $validatedData = $request->validate([
            'nombre' => 'required|string|max:255',
            'RFC' => 'nullable|string|max:13',
            'aniversario' => 'nullable|date',
            'observaciones' => 'nullable|string',
            'subgrupo_id' => 'nullable|integer',
            'imagen' => 'nullable|image|mimes:jpeg,png,jpg,gif|max:2048',
            'domicilio' => 'nullable|string|max:255',
            'codigo_postal' => 'nullable|string|max:10',
            'localidad' => 'nullable|string|max:255',
            'prefijo' => 'nullable|string|max:10',
            'lada' => 'nullable|string|max:5',
            'numero' => 'nullable|string|max:15',
            'tipo' => 'nullable|string',
            'estatus' => 'nullable|boolean',
            'ext' => 'nullable|string|max:10',
            'observaciones' => 'nullable|string',
            'ID_radio' => 'nullable|string|max:50',
            'nombre' => 'nullable|string|max:255',
            'link' => 'nullable|url',
            'tipo' => 'nullable|string',
        ]);

        // Handle file upload if there is any
        if ($request->hasFile('imagen')) {
            $imagePath = $request->file('imagen')->store('imagenes', 'public');
            $validatedData['imagen'] = $imagePath;
        }

        $institucion = Institucion::create($validatedData);

        // Guardar los teléfonos
        foreach ($request->prefijo as $index => $prefijo) {
            Telefono::create([
                'institucion_id' => $institucion->id,
                'prefijo' => $prefijo,
                'lada' => $request->lada[$index],
                'numero' => $request->numero[$index],
                'tipo' => $request->tipo[$index],
                'estatus' => $request->estatus[$index],
                'ext' => $request->ext[$index],
                'observaciones' => $request->telefono_observaciones[$index],
                'ID_radio' => $request->ID_radio[$index],
            ]);
        }

        // Guardar las redes sociales
        foreach ($request->red_nombre as $index => $red_nombre) {
            RedSocial::create([
                'institucion_id' => $institucion->id,
                'nombre' => $red_nombre,
                'link' => $request->link[$index],
                'tipo' => $request->red_tipo[$index],
            ]);
        }

        return redirect()->route('instituciones.index')->with('success', 'Institución creada exitosamente');
    } 

    public function edit($id)
    {
        $institucion = Instituciones::findOrFail($id);
        $subgrupos = Subgrupo::all();
        return view('adminGen.instituciones.edit', compact('institucion', 'subgrupos'));
    }

    public function update(Request $request, $id)
    {
        $institucion = Instituciones::findOrFail($id);
        $data = $request->all();
        if ($request->hasFile('imagen')) {
            $data['imagen'] = $request->file('imagen')->store('imagenes', 'public');
        }
        $institucion->update($data);
        return redirect()->route('instituciones.index');
    }

    public function destroy($id)
    {
        $institucion = Instituciones::findOrFail($id);
        $institucion->delete();
        return redirect()->route('instituciones.index');
    }
}
+75 −0
Original line number Diff line number Diff line
<?php

namespace App\Http\Controllers;

use App\Models\RedSocialInst;
use App\Models\Institucion;
use Illuminate\Http\Request;

class RedSocialInstController extends Controller
{
    public function index()
    {
        $redesSociales = RedSocialInst::with('institucion')->get();
        return view('redes_sociales.index', compact('redesSociales'));
    }

    public function create()
    {
        $instituciones = Institucion::all();
        return view('redes_sociales.create', compact('instituciones'));
    }


    public function store(Request $request)
    {
        $data = $request->all();

        $redSocial = new RedSocialInst([
            'nombre' => $request->nombre,
            'link' => $request->link,
            'tipo' => $request->tipo,
            'instituciones_id' => $request->instituciones_id
        ]);

        $redSocial->save();

        return redirect()->route('instituciones.create')->with('success', 'Red social creada exitosamente.');
    }

    public function show($id)
    {
        $institucion = Institucion::findOrFail($id);
        $redesSociales = $institucion->redesSociales;
    
        return view('instituciones.show', compact('institucion', 'redesSociales'));
    }
    

    public function edit(RedSocialInst $redSocial)
    {
        $instituciones = Institucion::all();
        return view('redes_sociales.edit', compact('redSocial', 'instituciones'));
    }

    public function update(Request $request, RedSocialInst $redSocial)
    {
        $request->validate([
            'nombre' => 'required|string|max:255',
            'link' => 'required|url|max:255',
            'tipo' => 'required|string|max:255',
            'instituciones_id' => 'nullable|exists:instituciones,id'
        ]);

        $redSocial->update($request->all());

        return redirect()->route('redes_sociales.index')->with('success', 'Red social actualizada exitosamente.');
    }

    public function destroy(RedSocialInst $redSocial)
    {
        $redSocial->delete();

        return redirect()->route('redes_sociales.index')->with('success', 'Red social eliminada exitosamente.');
    }
}
+29 −0
Original line number Diff line number Diff line
<?php

namespace App\Http\Controllers;

use App\Models\TelefonoInst;
use Illuminate\Http\Request;

class TelefonoInstController extends Controller
{
    public function store(Request $request)
    {
        $validatedData = $request->validate([
            'prefijo' => 'required|integer',
            'lada' => 'required|integer',
            'numero' => 'required|integer',
            'tipo' => 'required|string|max:255',
            'estatus' => 'required|boolean',
            'ext' => 'nullable|integer',
            'observaciones' => 'nullable|string|max:255',
            'ID_radio' => 'nullable|string|max:255',
            'instituciones_id' => 'required|exists:instituciones,id'
        ]);

        TelefonoInst::create($validatedData);

        return redirect()->back()->with('success', 'Teléfono creado con éxito');
    }
}
+38 −0
Original line number Diff line number Diff line
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Instituciones extends Model
{
    use HasFactory;

    protected $fillable = [
        'imagen', 
        'nombre', 
        'RFC', 
        'domicilio', 
        'codigo_postal', 
        'localidad', 
        'aniversario', 
        'observaciones', 
        'subgrupo_id'
    ];

    public function subgrupo()
    {
        return $this->belongsTo(Subgrupo::class);
    }

    public function redesSociales()
    {
        return $this->hasMany(RedesSocialesInst::class, 'instituciones_id');
    }

    public function telefonos()
    {
        return $this->hasMany(TelefonoInst::class, 'instituciones_id');
    }
}
+23 −0
Original line number Diff line number Diff line
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class RedSocialInst extends Model
{
    use HasFactory;

    protected $fillable = [
        'nombre',
        'link',
        'tipo',
        'instituciones_id'
    ];

    public function institucion()
    {
        return $this->belongsTo(Institucion::class, 'instituciones_id');
    }
}
 No newline at end of file
Loading