<?php

namespace App\Http\Controllers;

use App\Models\Corredor;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Auth;
use App\Models\LadoCorredor;
use Illuminate\Support\Facades\Hash;

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

        return view('usuarios.funcionarios.secArmazem.configArmazem.corredores.listar',['corredor'=>$corredor]);
    }

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

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $corredor = new Corredor();
            $corredor->numerocorredor=$request->numero_corredor;
            $corredor->armazem_id=$request->armazem_id;
            $corredor->comprimentocorredor=$request->comprimento;
            $corredor->andar_id=$request->andar_id;
              //$estado='activo';
              //$armazem->estado=$estado;
            $corredor->usuario_id=Auth::user()->id;
            $corredor=$corredor->save();
            if($corredor)
             {
                $id=DB::table('corredores')->select('id')->max('id');
                $corredor_id=$id;
                $lados=[];
                $lado=['esquerdo','direito'];
                    $i=1;
                 while($i<=2){
                    array_push($lados,['ladocorredor'=>$lado[$i-1], 
                                        'corredor_id'=>$corredor_id,
                                        'created_at'=>date('Y:m:d H:i:s'),
                                        'updated_at'=>date('Y:m:d H:i:s'),
                                        ]);
                    LadoCorredor::insert($lados[$i-1]);
                $i++;
                } 
                return redirect()->route('us.armazem.conf.Gestcorredor.corredor.index')->with('sucessoCorredor','cadastrado com Sucesso');
            }
        
        return redirect()->route('us.armazem.conf.Gestcorredor.corredor.index')->with('falhaCorredor','Erro ao cadastrar');
    }

    /**
     * Display the specified resource.
     *
     * @param  \App\Models\Corredor  $corredor
     * @return \Illuminate\Http\Response
     */
    public function show($id)

    {   if( $corredor=Corredor::find($id) ){
        $corredores=$this->trazerinfoEditar($id);
            return view('usuarios.funcionarios.secArmazem.configArmazem.corredores.editar',['corredores'=>$corredores,'idcorredor'=>$id]);
        }
    }

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

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \App\Models\Corredor  $corredor
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request,$id)
    {       
        if($corredor = Corredor::find($id)){
            $corredor->numerocorredor=$request->numero_corredor;
            $corredor->armazem_id=$request->armazem_id;
            $corredor->comprimentocorredor=$request->comprimento;
            $corredor->andar_id=$request->andar_id;
              //$estado='activo';
              //$armazem->estado=$estado;
            $corredor->usuario_id=Auth::user()->id;
            $corredor=$corredor->save();
                if($corredor)
                {
                return redirect()->route('us.armazem.conf.Gestcorredor.corredor.index')->with('sucessoCorredor','Editado com Sucesso');
                }
        }  
      return redirect()->route('us.armazem.conf.Gestcorredor.corredor.index')->with('falhaCorredor','Erro ao cadastrar');
    }

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

    private function trazerInfoCorredores(){
        $dados=DB::table('corredores')
                    ->join('armazens','armazens.id','=','corredores.armazem_id')
                    ->join('basesgestdocs','basesgestdocs.id','=','armazens.base_id')
                    ->join('andares','andares.id','=','corredores.andar_id')
                    ->join('users','users.id','=','corredores.usuario_id')
                    ->select('corredores.*','armazens.nomearmazen','andares.andar')->distinct()->get();
        return $dados;

    }
    private function trazerinfoEditar($id){
        $dados=DB::table('corredores')
                    ->join('armazens','armazens.id','=','corredores.armazem_id')
                    ->join('basesgestdocs','basesgestdocs.id','=','armazens.base_id')
                    ->join('andares','andares.id','=','corredores.andar_id')
                    ->join('users','users.id','=','corredores.usuario_id')
                    ->join('ladocorredores','ladocorredores.corredor_id','=','corredores.id')
                    ->where('corredores.id',$id)
                    ->select('corredores.*','armazens.nomearmazen',
                                'andares.andar')->distinct()->get();
        return $dados;

    }
    
}
