<?php

namespace App\Http\Controllers;

use App\Models\Modulo;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use App\Models\Fileira;

class ModuloController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
            $dados=$this->trazerInfoModulo();

            return view('usuarios.funcionarios.secArmazem.configArmazem.modulos.listar',['dados'=>$dados]); 

    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {  
        return view('usuarios.funcionarios.secArmazem.configArmazem.modulos.novo');
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request,)
    {
        $modulo= new Modulo();
        $modulo->numeromodulo=$request->numero_modulo;
        $modulo->larguramodulo=$request->largura_modulo;
        $modulo->alturamodulo=$request->altura_modulo;
        $modulo->areamodulo=($modulo->altura_modulo* $modulo->largura_modulo);
        $modulo->lado_id=$request->lado_id;
        //$modulo->superficie_modulo="22";
        $mouldoCreate=$modulo->save();
        if($mouldoCreate)
                {
                return redirect()->route('us.armazem.conf.Gestmodulo.modulo.index')->with('sucessoModulo','Editado com Sucesso');
                }
      return redirect()->route('modulo.index')->with('falhaModulo','Erro ao cadastrar');
    }



    /**
     * Display the specified resource.
     *
     * @param  \App\Models\Modulo  $modulo
     * @return \Illuminate\Http\Response
     */
    public function show(Modulo $modulo)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  \App\Models\Modulo  $modulo
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {   
        $modulo=$this->listarModulos($id);
        $idModulo=$id;
        return view('usuarios.funcionarios.secArmazem.configArmazem.modulos.editar',['modulo'=>$modulo,'idModulo'=>$idModulo]);
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \App\Models\Modulo  $modulo
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        if($modulo = Modulo::find($id)){
            $modulo->numeromodulo=$request->numero_modulo;
            $modulo->lado_id=$request->lado_id;
            $modulo->alturamodulo=$request->altura_modulo;
            $modulo->larguramodulo=$request->largura_modulo;
            $modulo->areamodulo=($modulo->altura_modulo*$modulo->largura_modulo);
              //$estado='activo';
              //$armazem->estado=$estado;
            $modulo=$modulo->save();
                if($modulo)
                {
                    return redirect()->route('us.armazem.conf.Gestmodulo.modulo.index')->with('sucessoModulo','Editado com Sucesso');
                }
        }  
      return redirect()->back()->with('falhaModulo','Erro ao editar');
    }


    /**
     * Remove the specified resource from storage.
     *
     * @param  \App\Models\Modulo  $modulo
     * @return \Illuminate\Http\Response
     */
    public function destroy($id,Request $request)
    {
        if($modulo = Modulo::find($id)){
            $pass=$request->password;
            $actual=Auth::user();
                if(Hash::check($pass, $actual->password)){
                    $modulo->delete();
                    return redirect()->route('us.armazem.conf.Gestmodulo.modulo.index')->with('sucessoModulo','Eliminado  com Sucesso');
                }
        }
        return redirect()->back()->with('falhaModulo','A sua senha não está correcta, não foi possível Eliminar este dado');
    }

    public function preeencherLado(){
    
        if (isset($_GET['corredor_id'])) {
            $id_corredor = $_GET['corredor_id'];
            $dados = "";
            $dados = DB::table('corredores')
                            ->join('ladocorredores','ladocorredores.corredor_id','=','corredores.id')
                            ->where('corredores.id', $id_corredor)
                            ->select('ladocorredores.id','ladocorredores.ladocorredor')->get();

            if ($dados->isEmpty()) {
                $testes['success'] = false;
                $valors = "Nenhum lado disponivel";
                echo "<option value='" . $valors . "'>" . $valors . "</option>";
                return;
            }
            $testes['success'] = true;
            $i=1;
            foreach ($dados as $dado) {
                    if($i==1)
                    echo "<option value='0'>Selecione Um Corredor</option>";
                    $i++;
                echo "<option value='" . $dado->id . "'>" . $dado->ladocorredor . "</option>";
            
            }
            return;
       
        }
        $testes['success'] = false;
        $valors = "Nenhum lado disponivel";
        echo "<option value='" . $valors . "'>" . $valors . "</option>";
        return;


    }

    public function preeencherCorredor()
    {
    
        if (isset($_GET['andar_id'])) {
            $andar_id = $_GET['andar_id'];
            $dados = "";
            $dados = DB::table('corredores')
                            ->join('andares','andares.id','=','corredores.andar_id')
                            ->where('andares.id', $andar_id)
                            ->select('corredores.id','corredores.numerocorredor')->get();

            if ($dados->isEmpty()) {
                $testes['success'] = false;
                $valors = "Nenhum Corredor disponivel";
                echo "<option value='" . $valors . "'>" . $valors . "</option>";
                return;
            }
            $testes['success'] = true;
            $i=1;
            foreach ($dados as $dado) {
                if($i==1)
                echo "<option value='0'>Selecione Um Corredor</option>";
                $i++;
                echo "<option value='" . $dado->id . "'> Corredor" . $dado->numerocorredor . "</option>";

            }
            return;
       
        }
        $testes['success'] = false;
        $valors = "Nenhum Corredor disponivel";
        echo "<option value='" . $valors . "'>" . $valors . "</option>";
        return;

    }
    public function preeencherModulo(){
    
        if (isset($_GET['lado_corredor'])) {
            $lado_corredor = $_GET['lado_corredor'];
            $dados = "";
            $dados = DB::table('ladocorredores')
                            ->join('modulos','modulos.lado_id','=','ladocorredores.id')
                            ->where('ladocorredores.id', $lado_corredor)
                            ->select('modulos.id','modulos.numeromodulo')->get();

            if ($dados->isEmpty()) {
                $testes['success'] = false;
                $valors = "Nenhum Módulo disponivel";
                echo "<option value='" . $valors . "'>" . $valors . "</option>";
                return;
            }
            $testes['success'] = true;
            $i=1;
            foreach ($dados as $dado) {
                if($i==1)
                echo "<option value='0'>Selecione o Modulo </option>";
                $i++;
                echo "<option value='" . $dado->id . "'>" . $dado->numeromodulo . "</option>";

            }
            return;
       
        }
        $testes['success'] = false;
        $valors = "Nenhum orientação disponivel";
        echo "<option value='" . $valors . "'>" . $valors . "</option>";
        return;


    }
    public function preeencherFileira(){
    
        if (isset($_GET['prateleira'])) {
            $prateleira = $_GET['prateleira'];
            $dados = "";
            $dados = DB::table('prateleiras')
                            ->join('fileiras','fileiras.prateleira_id','=','prateleiras.id')
                            ->where('prateleiras.id', $prateleira)
                            ->select('fileiras.id','fileiras.numerofileira')->get();

            if ($dados->isEmpty()) {
                $testes['success'] = false;
                $valors = "Nenhuma Fileira disponivel";
                echo "<option value='" . $valors . "'>" . $valors . "</option>";
                return;
            }
            $testes['success'] = true;
            $i=1;
            foreach ($dados as $dado) {
                if($i==1)
                echo "<option value='0'>Selecione a Fileira </option>";
                $i++;
                echo "<option value='" . $dado->id . "'>" . $dado->numerofileira . "</option>";

            }
            return;
       
        }
        $testes['success'] = false;
        $valors = "Nenhuma fileira disponivel";
        echo "<option value='" . $valors . "'>" . $valors . "</option>";
        return;


    }
      
    public function preeencherAndar(){
    
        if (isset($_GET['armazem_id'])) {
            $armazem_id = $_GET['armazem_id'];
            $dados = "";
            $dados = DB::table('armazens')
                            ->join('corredores','corredores.armazem_id','=','armazens.id')
                            ->join('andares','andares.id','=','corredores.andar_id')
                            ->where('armazens.id', $armazem_id)
                            ->select('andares.id','andares.andar')->get();

            if ($dados->isEmpty()) {
                $testes['success'] = false;
                $valors = "Nenhum andar disponivel";
                echo "<option value='" . $valors . "'>" . $valors . "</option>";
                return;
            }
            $testes['success'] = true;
            $i=1;
            foreach ($dados as $dado) {
                if($i==1)
                echo "<option value='0'> Selecione o Andar </option>";
                $i++;
                echo "<option value='" . $dado->id . "'>" . $dado->andar . "</option>";

            }
            return;
       
        
        }
        $testes['success'] = false;
        $valors = "Nenhum andar disponivel";
        echo "<option value='" . $valors . "'>" . $valors . "</option>";
        return;


    }


        public function preeencherPrateleira(){
    
            if (isset($_GET['modulo'])) {
                $modulo = $_GET['modulo'];
                $dados = "";
                $dados = DB::table('prateleiras')
                                ->join('modulos','modulos.id','=','prateleiras.modulo_id')
                                ->where('modulos.id', $modulo)
                                ->select('prateleiras.id','prateleiras.numeroprateleira')->get();
    
                if ($dados->isEmpty()) {
                    $testes['success'] = false;
                    $valors = "Nenhum Prateleira disponivel";
                    echo "<option value='" . $valors . "'>" . $valors . "</option>";
                    return;
                }
                $testes['success'] = true;
                $i=1;
                foreach ($dados as $dado) {
                    if($i==1)
                    echo "<option value='0'> Selecione a Prateleira </option>";
                    $i++;
                    echo "<option value='" . $dado->id . "'>" . $dado->numeroprateleira . "</option>";
    
                }
                return;
           
            
            }
            $testes['success'] = false;
            $valors = "Nenhuma prateleira disponivel";
            echo "<option value='" . $valors . "'>" . $valors . "</option>";
            return;
    
    
        }

        public function preeencherPosicao(){
    
            if (isset($_GET['fileira'])) {
                $fileira = $_GET['fileira'];
                $dados = "";
                $dados = Fileira::where('id',$fileira)->select('posicaofileira','id')->get();
    
                if ($dados->isEmpty()) {
                    $testes['success'] = false;
                    $valors = "Nenhuma posição disponivel";
                    echo "<option value='" . $valors . "'>" . $valors . "</option>";
                    return;
                }
                $testes['success'] = true;
                $i=1;
                foreach ($dados as $dado) {
                    if($i==1)
                    echo "<option value='0'> Selecione a posição </option>";
                    $i++;
                    echo "<option value='" . $dado->id . "'>" . $dado->posicaofileira . "</option>";
    
                }
                return;
           
            
            }
            $testes['success'] = false;
            $valors = "Nenhuma Posição disponivel";
            echo "<option value='" . $valors . "'>" . $valors . "</option>";
            return;
    
    
        }
        
    
        public function trazerInfoModulo(){

            $dados=DB::table('armazens')
                    ->join('corredores','corredores.armazem_id','=','armazens.id')
                    ->join('andares','andares.id','=','corredores.andar_id')
                    ->join('ladocorredores','ladocorredores.corredor_id','=','corredores.id')
                    ->join('modulos','modulos.lado_id','=','ladocorredores.id')
                    ->select('modulos.*','ladocorredores.ladocorredor','armazens.nomearmazen',
                        'corredores.numerocorredor','andares.andar')->get();
        return $dados;
        }
        public function listarModulos($id){
                $dados=DB::table('corredores')
                            ->join('armazens','armazens.id','=','corredores.armazem_id')
                            ->join('andares','andares.id','=','corredores.andar_id')
                            ->join('users','users.id','=','corredores.usuario_id')
                            ->join('ladocorredores','ladocorredores.corredor_id','=','corredores.id')
                            ->join('modulos','modulos.lado_id','=','ladocorredores.id')
                            ->where('modulos.id',$id)
                            ->select('modulos.*','corredores.andar_id','corredores.numerocorredor','corredores.armazem_id',
                            'armazens.nomearmazen','andares.andar','ladocorredores.ladocorredor','ladocorredores.corredor_id')->distinct()->get();
                return $dados;
        
            }
        









    
        
}
