<?php

namespace App\Http\Controllers;

use App\modulos;
use App\aplicacion;
use App\formularios;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use Illuminate\Http\Request;

class modulosController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index($app = null)
    {
        $modulos = modulos::ModulosLista();
        if($app != null) {
            $modulos = modulos::ModulosPorApp($app);
        }
        $aplicaciones = aplicacion::all();
        $Allmodulos = modulos::all();
        return view('admin.modulos.modulos',[
            'modulos'          => $modulos,
            'aplicaciones'     => $aplicaciones,
            'Allmodulos' => $Allmodulos
        ]);
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */

     public function countForms($idModule) {
        $Allmodulos = modulos::all();
        $AllModulosDecode = json_decode($Allmodulos);
        return DB::table('formularios')->where('modulo_id', '=', $idModule)->count();
     }
     public function modulosByApp($id) {
         return modulos::ModulosPorApp($id);
     }
    public function create()
    {
        $aplicaciones = aplicacion::all();
        return view('admin.modulos.agregarModulo',[
            'aplicaciones'=>$aplicaciones
        ]);
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        if( empty($request['nombre']) == null) {
            modulos::create([
                'nombre' => $request['nombre'],
                'Descripcion' => $request['Descripcion'],
                'aplicacion_id' => $request['aplicacion']
            ]);
            return redirect('modulos');
            
        }
        return redirect('error');
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        $aplicaciones = aplicacion::all();
        $modulos = modulos::find($id);
        $modulos2 = DB::table('modulos')
            ->join('aplicacion','aplicacion.id','modulos.aplicacion_id')
            ->where('modulos.id',$id)
            ->select('modulos.*','aplicacion.nombre as app_name')
            ->first();
        if(!$modulos) {
            return redirect('error');
        }
        $formularios = DB::table('formularios')->where('modulo_id', '=', $modulos->id)->get();
        return view('admin.modulos.modulo',[
            'modulo'=>$modulos2,
            'aplicaciones' => $aplicaciones,
            'formularios' => $formularios
         ]);
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        if(Auth::user()->role=='admin'){
            $modulos = modulos::find($id);
            $modulos->nombre =$request->nombre;
            $modulos->Descripcion =$request->Descripcion;
            $modulos->aplicacion_id =$request->aplicacion;
            $modulos->update();
        }
        return redirect('modulo/'.$id);
    }

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