<?php

namespace App\Http\Controllers;

use Illuminate\Support\Facades\DB;
use Illuminate\Http\Request;
use App\Models\Armazen;
use App\Models\ArmazemModel;
use App\Models\BaseGestdoc;
use App\Models\Celula;
use App\Models\ConfCaixa;
use App\Models\configModulo;
use App\Models\ConfiguracaoCorredor;
use App\Models\CopiaConfigCelula;
use App\Models\Corredor;
use App\Models\EspacoCaixaModulo;
use App\Models\Fileira;
use App\Models\Modulo;
use App\Models\User;
use Facade\FlareClient\Http\Response;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Yajra\DataTables\DataTables;

class ConfArmazemController extends Controller
{

        //metodod dashborad
        public function index()
        {   $armazem=$this->trazerArmazem();
            return view('usuarios.funcionarios.secArmazem.configArmazem.armazens.listar',['armazem'=>$armazem]);
        }



          /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $armazem=Armazen::where('nomearmazem',$request->nome_armazem)->select('id')->get();

        if(!$armazem->isEmpty() ){
            $store['success']=false;
            $store['message']='Este Armazem já Existe';
            return json_encode($store);
        }

        $armazem=new Armazen();
        $armazem->nomearmazem=$request->nome_armazem;
        $armazem->larguraarmazem=$request->largura_armazem;
        $armazem->alturaarmazem=$request->altura_armazem;
        $armazem->base_id=$request->base_id;
        $armazem->numerocorredores=$request->numero_corredores;
        $armazem->numeroandares=$request->numero_andares;
        $estado='activo';
        $armazem->estado=$estado;
        $armazem->usuario_id=Auth::user()->id;
            if($armazem->save()){
                $store['success']=true;
                $store['message']='good';
                return json_encode($store);
            }
            $store['success']=false;
            $store['message']='Erro ao cadastrar';
            return json_encode($store);
    }
    public function sucessoConCaixa(){
        return redirect()->route('us.armazem.conf.arm.armazem.index')->with('sucessoArmazem','Cadastrado com Sucesso');
    }
    public function sucessoConCaixaUpdate(){
        return redirect()->route('us.armazem.conf.arm.armazem.index')->with('sucessoArmazem','Editado com Sucesso');
    }
    /**
     * Display the specified resource.
     *
     * @param  \App\Models\Caixa  $caixa
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {   $idArmazem=$id;
        return view('usuarios.funcionarios.secArmazem.configArmazem.armazens.editar',['idArmazem'=>$idArmazem]);
    }

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

    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \App\Models\Caixa  $caixa
     * @return \Illuminate\Http\Response
     */
    public function update($id,Request $request)
    {
        $nomeProprio=Armazen::where('nomearmazem',$request->nome_armazem)->where('id','!=',$id)->select('id')->get();
        foreach($nomeProprio as $nomeIgual){
            if($nomeIgual->nomearmazem === $request->nome_armazem){
            $update['success']=false;
            $update['message']='Este Armazem já Existe';
            return json_encode($update);
        }
    }
        if($armazem=Armazen::find($id)){
            $armazem->nomearmazem=$request->nome_armazem;
            $armazem->larguraarmazem=$request->largura_armazem;
            $armazem->alturaarmazem=$request->altura_armazem;
            $armazem->base_id=$request->base_id;
            $armazem->numerocorredores=$request->numero_corredores;
            $armazem->numeroandares=$request->numero_andares;
            $estado='activo';
            $armazem->estado=$estado;
            $armazem->usuario_id=Auth::user()->id;
                if($armazem->save()){
                    $update['success']=true;
                    $update['message']='good';
                    return json_encode($update);
                }
            }
                $update['success']=false;
                $update['message']='Erro ao cadastrar';
                return json_encode($update);
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  \App\Models\Caixa  $caixa
     * @return \Illuminate\Http\Response
     */
    // public function destroy(Caixa $caixa)
    // {

    // }














        //metodo que permite cadastrar
        public function cadastrar(Request $request)
        {
            $armazem=new Armazen();
            $armazem->n=$request->nome_armazem;
            $armazem->larguraarmazem=$request->largura_armazem;
            $armazem->alturaarmazem=$request->altura_armazem;
            $armazem->base_id=$request->base_id;
            $armazem->numerocorredores=$request->numero_corredores;
            $armazem->numeroandares=$request->numero_andares;
            $estado='activo';
            $armazem->estado=$estado;
            $armazem->usuario_id=Auth::user()->id;

            if($armazem->save())
                return redirect()->route('us.armazem.conf.arm.listar')->with('sucessoArmazem','Cadastrado com Sucesso');


        }


        //metodod permite editar
        public function editar(Request $request,$id ,Armazen $armazem)
        {
            if($armazem = Armazen::find($id))
            {   $armazem->nome_armazem=$request->nome_armazem;
                $armazem->altura_armazem=$request->altura_armazem;
                $armazem->largura_armazem=$request->largura_armazem;
                $armazem->base_id=$request->base_id;
                $armazem->numero_corredores=$request->numero_corredores;
                $armazem->numero_andares=$request->numero_andares;
                $estado='activo';
                $armazem->estado=$estado;
                $armazem->usuario_id=Auth::user()->id;
                if($armazem->save())
                {
                    return redirect()->route('us.armazem.conf.arm.listar')->with('sucessoArmazem','Editado com Sucesso');
                }
            }
            return redirect()->route('us.armazem.conf.arm.listar')->with('falha','Erro ao cadastrar');
        }

        //permite eliminar
        public function eliminar($id,Request $request)
        {

            if($armazem = Armazen::find($id))
                $pass=$request->password;
                $actual=Auth::user();
                if(Hash::check($pass, $actual->password)){
                    $estado='eliminado';
                    $armazem->estado=$estado;
                    if($armazem->save())
                    {
                        $armazem->delete();
                    return redirect()->route('us.armazem.conf.arm.listar')->with('sucessoArmazem','Eliminado com Sucesso');
                    }
                }
                return redirect()->back()->with('sucessoArmazem','A sua senha não está correcta, não foi possível editar este dado');
        }

        public static function  trazerArmazem(){
            $dados=DB::table('armazens')
                        ->join('basesgestdocs','basesgestdocs.id','=','armazens.base_id')
                        ->join('users','users.id','=','armazens.usuario_id')
                        ->where('armazens.estado','activo')
                        ->select('armazens.id','armazens.nomearmazem','basesgestdocs.base',
                                 'armazens.numerocorredores','armazens.numeroandares' )->get();
                return $dados;

        }

        public static function informacaoArmazem($id){
            $dados=DB::table('armazens')
                        ->join('basesgestdocs','basesgestdocs.id','=','armazens.base_id')
                        ->join('users','users.id','=','armazens.usuario_id')
                        ->where('armazens.id',$id)
                        ->where('armazens.estado','activo')
                        ->select('armazens.*','basesgestdocs.base','users.*')->distinct()->get();
                return $dados;

        }




        // _______________________________________________________________________________

        // Funções adicionadas por Gelson Camilo

        // ARMAZÉM
        public function addArmazem(Request $request){


            $armz= ArmazemModel::where('nomearmazem',$request->armazem)->first();
            // var_dump($armz);
            if ($armz==null){
                // Cadastrar novo armazem
                try {
                    $armazemObject = new ArmazemModel();

                    $armazemObject->nomearmazem=$request->armazem;
                    $armazemObject->numerocorredores=$request->corredores;
                    $armazemObject->base_id=$request->base;
                    $armazemObject->usuario_id=Auth::id();

                    $armazemObject->save();
                    $lastIdArmazem=ArmazemModel::latest('id')->first();

                    $corredor = new Corredor();
                    $numerodevezes=$request->corredores ;
                    $i=0;
                    $corredorLastn=$corredor::where('armazem_id',$request->armazem_id)->max('numerocorredor');
                    $ultimoNumeroCorredor=$corredorLastn+1;

                    // Cadastrar a quantidade de corredores

                    while(true){
                        $i++;
                        // $corredor->configuracao_id=$request->config_id;
                        // $corredor->=$request->armazem_id;
                        // $corredor->usuario_id=Auth::id();

                        $corredor->create(['numerocorredor'=>$ultimoNumeroCorredor,'armazem_id'=>$lastIdArmazem->id,'usuario_id'=>Auth::id()]);
                        $ultimoNumeroCorredor++;
                        if ($i>=$numerodevezes){
                            break;
                        }

                    }


                    return  $lastIdArmazem->id;
                } catch (\Throwable $th) {
                    return $th;
                }

            }else{
                if($armz->count()<=1){
                    // Cadastrar novo armazem
                    $armazemObject = new ArmazemModel();

                    $armazemObject->nomearmazem=$request->armazem;
                    $armazemObject->numerocorredores=$request->corredores;
                    $armazemObject->base_id=$request->base;
                    $armazemObject->usuario_id=Auth::id();


                    $armazemObject->save();
                    $lastIdArmazem=ArmazemModel::latest('id')->first();
                    return  $lastIdArmazem->id;
                }else{
                    return 0;
                }
            }
        }
        public function getarmrow(Request $request)
        {
            $armazem=ArmazemModel::where('id',$request->id)->first();
            $row="
            <tr class=\"\">

                <th>". $armazem->id ."</th>
                <th>". $armazem->nomearmazem ."</th>
                <th>". $armazem->created_at ."</th>
                <th><a class=\"btn btn-outline-primary btn-sm\" href=".  route('us.armazem.conf.arm.verarmazem',[$request->base,$armazem->id]) ."> <i class=\"fa fa-eye\"></i> Abrir</a></th>

            </tr>

            ";
            return $row;

        }
        public function getArmazens(Request $request){

            $armazem= \App\Models\ArmazemModel::orderBy('id','DESC')->first();


                echo "
                <div class=\"item armazemDrop p-3 rounded border overflow-hidden\" style=\"background:linear-gradient(#eee,#ddd)\">

                <a href=\"\" class=\"rounded-circle w-100 text-center\">

                <i class=\"fa  fa-warehouse\"></i>
                <br>    ".substr($armazem->nomearmazem,0,4)."
                </a>
                </div>
                ";


                // Verificar se existe algum armazem com o mesmo nome

        }

        public function getArmazensDataTableEspecificBase(Request $request,$id){
            return DataTables::of(ArmazemModel::where('base_id',1)->get())->addIndexColumn()
            ->addColumn('base', function($row){
                $base=BaseGestdoc::where('id',$row->base_id)->first();
                return $base->base;
            })
            ->rawColumns(['base'])
            ->addColumn('cod', function($row){
                $cod= substr($row->nomearmazem,0,4);

                return $cod;
            })->rawColumns(['cod'])
            // ->addColumn('sector', function($row){
            //     $sector=Sector::where('id',$row->sector_id)->first();
            //     $btn = $sector->sector;
            //     return $btn;
            // })->rawColumns(['sector'])
            // ->addColumn('categoria', function($row){
            //     $categoria=Categoria::where('id',$row->categoria_id)->first();
            //     $btn = $categoria->categoria;
            //     return $btn;
            // })->rawColumns(['categoria'])
            ->addColumn('acao', function($row){

                $btn = '<a href="../../armconf/armazem/'.$row->id.'" class="edit btn btn-outline-info border-0 rounded-0 shadow btn-sm"><i class="fa fa-eye"></i></a>';
                return $btn;
            })
            ->rawColumns(['acao'])
            ->make(true);



        }
        public function getArmazensDataTable(Request $request){

            return DataTables::of(ArmazemModel::get())->addIndexColumn()
            ->addColumn('base', function($row){
                $base=BaseGestdoc::where('id',$row->base_id)->first();
                return $base->base;
            })
            ->rawColumns(['base'])
            ->addColumn('cod', function($row){
                $cod= substr($row->nomearmazem,0,4);

                return $cod;
            })->rawColumns(['cod'])
            // ->addColumn('sector', function($row){
            //     $sector=Sector::where('id',$row->sector_id)->first();
            //     $btn = $sector->sector;
            //     return $btn;
            // })->rawColumns(['sector'])
            // ->addColumn('categoria', function($row){
            //     $categoria=Categoria::where('id',$row->categoria_id)->first();
            //     $btn = $categoria->categoria;
            //     return $btn;
            // })->rawColumns(['categoria'])
            ->addColumn('acao', function($row){

                $btn = '<a href="../armconf/armazem/'.$row->id.'" class="edit btn btn-outline-info border-0 rounded-0 shadow btn-sm"><i class="fa fa-eye"></i></a>';
                return $btn;
            })
            ->rawColumns(['acao'])
            ->make(true);



        }



        public function deleteArmazem(Request $request){
            $actual=Auth::user();

            if (Hash::check($request->password, $actual->password))
            {

                $armazem=ArmazemModel::where('id',$request->id)->first();

                $armazem->estado=2;

                $armazem->save();

                $armazem->delete();
            //     return 1;
                return 1;
            }
            else{
                return 0;

            }
        }


        public function addCoreArmazem(Request $request){


                $armazem=ArmazemModel::where('id',$request->id)->first();

                $armazem->cor_tema=$request->codigoCor;

                $armazem->save();

                echo 1;
        }

        public function editArmazem(Request $request, $cod){
            $armazem=ArmazemModel::where('id',$request->idArm)->first();
            if($cod==1){


                $armazem->nomearmazem=$request->nomearmazem;
                $armazem->base_id=$request->idBase;


            }
            elseif($cod==2){


                $armazem->numerocorredores =$request->idNumeroCorredores;
                $armazem->numeroandares=$request->idNumeroAndares;

            }
            elseif($cod==3){


                $armazem->alturam=$request->alturam;
                $armazem->alturacm=$request->alturacm;
                $armazem->larguram=$request->larguram;
                $armazem->larguracm=$request->larguracm;
                $armazem->profundidadem=$request->profundidadem;
                $armazem->profundidadecm=$request->profundidadecm;


            }
            $armazem->save();

            return 1;


        }

        // CORREDORES
        public function addCorredores(Request $request){


            // Verificar se existe algum armazem com o mesmo nome

           $armz= ArmazemModel::where('armazem',$request->armazem)->count();

           if($armz<=0){

               // Cadastrar novo armazem
               $armazemObject = new ArmazemModel();

                    $armazemObject->armazem=$request->armazem;
                    $armazemObject->base_id=$request->base_id;
                    $armazemObject->usuario_id=Auth::id();


                    $armazemObject->save();
                echo  Auth::id();

            }else{
                echo 0;
            }
        }

        // Cadastrar configuração de corredores
        public function addConfiguracao (Request $request ){

            $config = new ConfiguracaoCorredor();

                $config->nomeconfiguracao=$request->nomeconfig;
                $config->numeroandares=$request->idNumeroAndares;
                $config->numeromodulo=$request->idNumeroCorredoresModulos;
                // $config->larguracorredor=$request->idLarguraCorredor;
                // $config->comprimentocorredor=$request->idCumprimentoCorredor;
                $config->base_id=$request->base_id;
                $config->usuario_id=$request->usuario_id;

            $config->save();
            echo 1;
        }
        public function editarConfiguracao (Request $request ){

            $config = ConfiguracaoCorredor::where('base_id',$request->base_id)->first();

                $config->nomeconfiguracao=$request->nomeconfig;
                $config->numeroandares=$request->idNumeroAndares;
                $config->numeromodulo=$request->idNumeroCorredoresModulos;
                // $config->larguracorredor=$request->idLarguraCorredor;
                // $config->comprimentocorredor=$request->idCumprimentoCorredor;
                $config->base_id=$request->base_id;
                // $config->usuario_id=$;

            $config->save();
            echo 1;
        }



        public  function cadastrarNovoCorredor (Request $request){

            $corredor = new Corredor();
            $configuracao = new ConfiguracaoCorredor();
            $modulo = new Modulo();


            $numerodevezes=$request->qtdVezes ;
            $i=0;
            $corredorLastn=$corredor::where('armazem_id',$request->armazem_id)->max('numerocorredor');
            $ultimoNumeroCorredor=$corredorLastn+1;
            // dd($ultimoNumeroCorredor);

            while(true){
                $i++;
                // $corredor->configuracao_id=$request->config_id;
                // $corredor->=$request->armazem_id;
                // $corredor->usuario_id=Auth::id();
                if ($request->config_id==0){

                    $corredor->create(['numerocorredor'=>$ultimoNumeroCorredor,'armazem_id'=>$request->armazem_id,'usuario_id'=>Auth::id()]);
                }
                else{

                    $corredor->create(['numerocorredor'=>$ultimoNumeroCorredor,'configuracao_id'=>$request->config_id,'armazem_id'=>$request->armazem_id,'usuario_id'=>Auth::id()]);

                    $lastIdCorredor=$corredor::latest()->first();
                    $conf=$configuracao::where('id',$request->config_id)->first();
                    $numeroModuloLast=$modulo::where('corredor_id',$lastIdCorredor->id)->latest()->first();


                    if ($numeroModuloLast) {


                        $lastNumberModulo=$numeroModuloLast->numeromodulo;


                    }else{
                        $lastNumberModulo=0;

                    }
                    // dd($lastNumberModulo);

                    for ($i=1; $i <= $conf->numeromodulo ; $i++) {

                        $lastNumberModulo++;

                        $modulo->create(['numeromodulo'=>$i-1,'corredor_id'=>$lastIdCorredor->id,'usuario_id'=>Auth::id()]);
                    }



                }
                if ($i>=$numerodevezes){
                    break;
                }
                $ultimoNumeroCorredor++;
            }




            return 1;
            //
            //
            //
            //
            // echo $request->qtdVezes;

        }



        // MODULOS
        public function addModulo(Request $request){


            // Verificar se existe algum armazem com o mesmo nome

           $armz= ArmazemModel::where('armazem',$request->armazem)->count();

           if($armz<=0){

               // Cadastrar novo armazem
               $armazemObject = new ArmazemModel();

                    $armazemObject->armazem=$request->armazem;
                    $armazemObject->base_id=$request->base_id;
                    $armazemObject->usuario_id=Auth::id();


                    $armazemObject->save();
                echo  Auth::id();

            }else{
                echo 0;
            }
        }





        public function addConfiguracaoModuloCorredor(Request $request){

            $configModulo = new ConfigModulo();


            $configModulo->alturamodulom=$request->alturam;
            $configModulo->alturamodulocm=$request->alturacm;
            $configModulo->larguramodulom=$request->larguram;
            $configModulo->larguramodulocm=$request->larguracm;
            $configModulo->base_id=$request->base_id;
            $configModulo->usuario_id=Auth::id();

            $configModulo->save();

            return 1;

        }


        public function addModuloNovoCorredor(Request $request){

           $numerodevezes=$request->numeroVezes;
           $modulo = new Modulo();
           $celula = new Celula();

        //    $modulo->quantidadecelulas=$request->niveisConfigModulo;
        //    $modulo->configuracaomodulos_id=$request->congiguracao_id;
        //    $modulo->corredor_id=$request->corredor_id;


            for ($i=1; $i <= $numerodevezes ; $i++) {

                $modulo->create(['quantidadecelulas'=>$request->niveisConfigModulo,'configuracaomodulos_id'=>$request->congiguracao_id,'corredor_id'=>$request->corredor_id,'usuario_id'=>Auth::id()]);
                $lastIdModulo=$modulo::latest()->first();
                $celulaIdLastLevel= $celula::where('modulo_id',$lastIdModulo->id)->latest()->first();
                $lastNivelCelula=0;
                if($celulaIdLastLevel){
                    $lastNivelCelula=$celulaIdLastLevel->nivel;
                }
                for ($i=1; $i <=$request->niveisConfigModulo ; $i++) {

                    $lastNivelCelula++;

                    $celula->create(['nivel'=>$lastNivelCelula,'modulo_id'=>$lastIdModulo->id]);
                    // echo "<br>Nivel:".$lastNivelCelula."<br> Modulo".$lastIdModulo->id."<br>";
                }


            }




            return 1;

        }




        // CÉLULAS


        public function addCelulaIndividual(Request $request){
            $celula = new Celula();
            $espacosCaixa= new EspacoCaixaModulo();
            $fileiras= new Fileira();


            $nivelCelula=$request->nivelCelulaCad;
            $quantidadeDeCaixas=$request->LargurasConfigModulo*$request->ProfundidadesConfigModulo*$request->AlturasConfigModulo;


            for ($i=1; $i <=$request->quantCelulas ; $i++) {
                $celula->create(['nivel'=>$nivelCelula,'modulo_id'=>$request->modulo_id]);
                $nivelCelula++;
                $celulaId=$celula::latest()->first();

                $espacosCaixa->create(['espacoscaixa'=>$quantidadeDeCaixas,'celula_id'=>$celulaId->id]);

                for ($j=1; $j <=$request->LargurasConfigModulo ; $j++) {
                    $fileiras->create(['celula_id'=>$celulaId->id,'numerofila'=>$j]);

                }
            }


            return 1;

        }

        public function celulaSubir1Nivel(Request $request){

            $numerodevezes=$request->numeroVezes;
            $modulo = new Modulo();

             return 1;

         }
         public function celulaSubirTopo(Request $request){

            // $niv=$request->niv;
            $niv=11;
            $mod_id=36;
            // $mod_id=$request->mod_id;

            $celula1 = Celula::where('nivel',$niv)->where('modulo_id',$mod_id)->first();
            if($celula1){
                $celula1->nivel=0;
                $celula1->save();

            }


            $primeira_celula = Celula::where('nivel',1)->where('modulo_id',$mod_id)->first();

            if($primeira_celula){
                $primeira_celula->nivel=$niv;
                $primeira_celula->save();

            }


            $celula3 = Celula::where('nivel',0)->where('modulo_id',$mod_id)->first();
            if($celula3){
                $celula3->nivel=1;
                $celula3->save();

            }

            return 1;

         }

         public function editCelula(Request $request){

            $celula=Celula::where('id',$request->id)->first();

                $espacoscaixascelulas=new EspacoCaixaModulo();
                    $espacoscaixascelulas->espacoscaixa=$request->alturas*$request->larguras*$request->profundidade;
                    $espacoscaixascelulas->celula_id=$request->id;
                $espacoscaixascelulas->save();



                $filas=new Fileira();
                    $filas->celula_id=$request->id;
                    $filas->numerofila=$request->larguras;
                $filas->save();

            return 1;


         }

         public function editCelula2(Request $request){

            // $celula=Celula::where('id',$request->id)->first();

            $espacoscaixascelulas=EspacoCaixaModulo::where('celula_id',$request->id)->first();
                    $espacoscaixascelulas->espacoscaixa=$request->alturas*$request->larguras*$request->profundidade;
            //         $espacoscaixascelulas->celula_id=$request->id;
            $espacoscaixascelulas->save();



            $filas=Fileira::where('celula_id',$request->id)->first();
            //         $filas->celula_id=$request->id;
                $filas->numerofila=$request->larguras;
            $filas->save();

            return 1;


         }


         public function copyCelConfig(Request $request){
            $copCel=CopiaConfigCelula::where('celula_id',$request->idCelula)->first();
            if($copCel){


                $copCel->delete();

            }
            $copiaCel= new CopiaConfigCelula();
            $copiaCel->celula_id=$request->idCelula;
            $copiaCel->titulo=$request->titulo;
            $copiaCel->user_id=Auth::id();
            $copiaCel->save();

            return 1 ;

         }

         public function pastCelConfig(Request $request){

            $copCel=CopiaConfigCelula::where('id',$request->idCopiaCelula)->first();
            $espacoCaixa=EspacoCaixaModulo::where('celula_id',$copCel->celula_id)->first();

            dd($espacoCaixa->espacoscaixa);
            // $celula=Celula::where('id',$request->idCelula)->first();
            // idCelula
            // idCopiaCelula

            $espacoCaixa=EspacoCaixaModulo::where('celula_id',$request->idCelula)->first();
            if($espacoCaixa){
                $espacoCaixa->delete();
            }

            $espacoCaixa=new EspacoCaixaModulo();
                $espacoCaixa->espacoscaixa=$espacoCaixa->espacoscaixa;
                $espacoCaixa->celula_id=$request->idCelula;
            $espacoCaixa->save();



            $fileira = new Fileira();
            // $caixa= ConfCaixa::where('id',$idCaixa)->first();

            // for ($i=1; $i <= $copCel->getCelula->getFilas->count() ; $i++) {

            foreach($copCel->getCelula->getFilas as $fila){

                // $fileira->create(['larguram'=>12,'larguracm'=> 12,'celula_id'=>10]);
                $fileira->create(['larguram'=>$fila->larguram,'larguracm'=> $fila->larguracm,'celula_id'=>$request->idCelula]);
                // echo $request->idCelula;

            }
        //    }

            // dd($copCel->getCelula->getEspacoCaixa->espacoscaixa);
            return 1 ;
         }

         public function celulaDescerUltimo(Request $request){

            $niv=$request->niv;
            $ultimoNivel=$request->ultimoNivel;
            $mod_id=$request->mod_id;

            $celula1 = Celula::where('nivel',$niv)->where('modulo_id',$mod_id)->first();
            $celula1->nivel=0;
            $celula1->save();

            $ultima_celula = Celula::where('nivel',$ultimoNivel)->where('modulo_id',$mod_id)->first();
            $ultima_celula->nivel=$niv;
            $ultima_celula->save();

            $celula3 = Celula::where('nivel',0)->where('modulo_id',$mod_id)->first();
            $celula3->nivel=$ultimoNivel;
            $celula3->save();


            return 1;

         }

         public function celulaDescer1Nivel(Request $request){

            $numerodevezes=$request->numeroVezes;
            $modulo = new Modulo();

             return 1;

         }


         public function celulaGetInfoCadFileiras(Request $request){

            $caixa= ConfCaixa::where('id',$request->idCaixa)->first();

            $data[] = array("larguracaixam" => $caixa->larguracaixam,
                "larguracaixacm" => $caixa->larguracaixacm,
                "alturacaixam" => $caixa->alturacaixam,
                "alturacaixacm" => $caixa->alturacaixacm,
                "profundidadecaixam" => $caixa->profundidadecaixam,
                "profundidadecaixacm" => $caixa->profundidadecaixacm,
            );

            return json_encode($data);

         }



        public function addFileiraAndEspacoCaixa(Request $request){
            $idCaixa=$request->tipoCaixa;
            $qtdFileiras=$request->qtdFileiras;
            $qtdFileiras=$request->qtdFileiras;
            $qtdCaixas=$request->qtdCaixas;
            $celula_id=$request->celula_id;

            $celula = Celula::where('id',$celula_id)->first();
            $celula->tipocaixasugestao_id=$idCaixa;
            $celula->save();

            $espacosCaixa=new EspacoCaixaModulo();
            $espacosCaixa->espacoscaixa= $qtdCaixas;
            $espacosCaixa->celula_id=$celula_id;
            $espacosCaixa->save();

            $fileira = new Fileira();
            $caixa= ConfCaixa::where('id',$idCaixa)->first();

            for ($i=1; $i <= $qtdFileiras ; $i++) {

                $fileira->create(['larguram'=>$caixa->larguracaixam,'larguracm'=> $caixa->larguracaixacm,'celula_id'=>$celula_id]);

           }

            return 1;
        }

        // FILEIRAS
        public function addFileira(Request $request){


        }




        // CAIXAS
        public function addTipoCaixa(Request $request){


            // Verificar se existe algum armazem com o mesmo nome

            $tipoCaixa = new ConfCaixa();

                $tipoCaixa->tipocaixa=$request->tipocaixa;
                $tipoCaixa->alturacaixam=$request->alturacaixam;
                $tipoCaixa->alturacaixacm=$request->alturacaixacm;

                $tipoCaixa->larguracaixam=$request->larguracaixam;
                $tipoCaixa->larguracaixacm=$request->larguracaixacm;

                $tipoCaixa->profundidadecaixam=$request->profundidadecaixam;
                $tipoCaixa->profundidadecaixacm=$request->profundidadecaixacm;

                $tipoCaixa->usuario_id=Auth::id();


            $tipoCaixa->save();
            echo  1;


        }

        public function deleteCorredor(Request $request){
            $actual=Auth::user();

            if (Hash::check($request->pass, $actual->password))
            {

                $corredor= \App\Models\Corredor::where('id',$request->corredor)->first();

                $corredor->delete();
            //     return 1;
                return 1;
            }
            else{
                return 0;

            }
        }
        public function configCorredorExcel(Request $request){

            $Modulo = new Modulo();
            $configuracaomodulos= new configModulo();
            $celulaCad = new Celula();
            $espacosCaixa= new EspacoCaixaModulo();
            $confCorredor= new ConfiguracaoCorredor();
            $corredorEx= new Corredor();
            $fileiras= new Fileira();


            $json=$request->json;
            $qtdModulos=count($json[2]);
            $qtdNiveis=count($json)-2;
            $idBase=$request->idBase;
            $niveisPorCelula=0;
            $idCorredor=$request->idCorredor;
            $data=[];

            $dataM1=$request->dataM1;
            $dataM2=$request->dataM2;
            $dataM3=$request->dataM3;
            $dataM4=$request->dataM4;
            $dataM5=$request->dataM5;
            $dataM6=$request->dataM6;
            $dataM7=$request->dataM7;
            $dataM8=$request->dataM8;
            $dataM9=$request->dataM9;
            $dataM10=$request->dataM10;


            $corredor= Corredor::where('id',$idCorredor)->first();

            // echo "Quantidade de módulos:".$qtdModulos;
            $dados1=explode("-",$dataM1[1]);
            // echo ($dados1[1]);

            // echo "\nQtd Níveis $qtdNiveis \n";
            // echo count($json);
            // echo "<br>Quantidade de módulos:".$qtdModulos-2;

            $larguraCorredor = $json[0]['__EMPTY_2'];

            $verifica= $confCorredor::where('numeromodulo',$qtdModulos-2)->first();
            $idConfCorr=0;
            if ($verifica) {
                $idConfCorr=$verifica;
            }else{
                $confCorredor->numeromodulo=$qtdModulos-2;
                $confCorredor->nomeconfiguracao="configuração".rand(10,10000);
                $confCorredor->base_id = $idBase;
                $confCorredor->usuario_id =Auth::id();
                $confCorredor->save();

                $idConfCorr=$confCorredor::latest()->first();
            }
            $corr=$corredorEx::where('id',$idCorredor)->first();
            // echo $corr->configuracao_id;
            $corr->configuracao_id=$idConfCorr->id;
            $corr->save();

            // echo $corr->configuracao_id;


            for ($i=2; $i <$qtdModulos ; $i++) {
                $empty="__EMPTY_$i";
                $modulo = $json[2][$empty];
                $numNiveis=0;

                // Percorrer vector de quantidade de níveis

                $empty="__EMPTY_$i";
                $largura = $json[1][$empty];

                $larguram=0;
                $larguracm=0;
                // echo "Número do módulo:".$modNum;
                // Cálculos para converter a largura do módulo, de cm para m
                if ($largura<100) {
                    $larguram=0;
                    $larguracm=$largura;
                }else{
                    $lg=$largura/100;
                    $larguram=floor($lg);
                    $larguracm=$lg-$larguram;
                }
                $idConfiguracaoModulo=0;
                // Cadastrando a configuração da Largura do módulo
                $confiMod=configModulo::where('larguramodulom',$larguram)->where('larguramodulocm',$larguracm)->first();

                // dd($confiMod);

                if($confiMod){
                    // Verificando cofiguração já existente
                    $idConfiguracaoModulo=$confiMod->id;
                }else{
                    // Cadastro efectivamente
                    $configuracaomodulos->larguramodulom=$larguram;
                    $configuracaomodulos->larguramodulocm=$larguracm;
                    $configuracaomodulos->base_id=$idBase;
                    $configuracaomodulos->usuario_id=Auth::id();
                    $configuracaomodulos->save();

                    $lastId=$configuracaomodulos::latest()->first();
                    $idConfiguracaoModulo=$lastId->id;
                }
                // echo "Id da configuração:".$idConfiguracaoModulo;
                // echo "<br>";
                // echo "Largura Metros:".$larguram;
                // echo "Largura Centímetros:".$larguracm;
                // echo "<br>";
                // Modulo 1
                $dados=0;
                if ($i==2) {
                    $dados=explode("-",$dataM1[1]);
                    $numNiveis=count($dataM1);
                }
                // Modulo 2
                elseif ($i==3) {
                    $dados=explode("-",$dataM2[1]);
                    $numNiveis=count($dataM2);
                }
                // Modulo 3

                elseif ($i==4) {
                    $dados=explode("-",$dataM3[1]);
                    $numNiveis=count($dataM3);
                }
                // Modulo 4

                elseif ($i==5) {
                    $dados=explode("-",$dataM4[1]);
                    $numNiveis=count($dataM4);
                }
                // Modulo 5

                elseif ($i==6) {
                    $dados=explode("-",$dataM5[1]);
                    $numNiveis=count($dataM5);
                }
                // Modulo 6

                elseif ($i==7) {
                    $dados=explode("-",$dataM6[1]);
                    $numNiveis=count($dataM6);
                }
                // Modulo 7

                elseif ($i==8) {
                    $dados=explode("-",$dataM7[1]);
                    $numNiveis=count($dataM7);
                }
                // Modulo 8

                elseif ($i==9) {
                    $dados=explode("-",$dataM8[1]);
                    $numNiveis=count($dataM8);
                }
                // Modulo 9

                elseif ($i==10) {
                    $dados=explode("-",$dataM9[1]);
                    $numNiveis=count($dataM9);
                }
                // Modulo 10

                elseif($i==11){
                    $dados=explode("-",$dataM10[1]);
                    $numNiveis=count($dataM10);
                }

                $Modulo->create(['numeromodulo'=>$i-1,'corredor_id'=>$idCorredor,'quantidadecelulas'=>$numNiveis,'configuracaomodulos_id'=>$idConfiguracaoModulo,'usuario_id'=>Auth::id()]);

                $moduloId=$Modulo::latest()->first();
                for ($j=1; $j <=$numNiveis ; $j++) {
                    // echo "Acessando o nível:".$j;
                    $altura = $json[$j+2]["__EMPTY_1"];
                    // echo $altura;
                    $alturam=0;
                    $alturacm=0;
                     // Cálculos para converter a altura da célula, de cm para m


                    if ($altura<100) {
                        $alturam=0;
                        $alturacm=$altura;
                    }else{
                        $lg=$altura/100;
                        $alturam=floor($lg);
                        $alturacm=$lg-$alturam;
                    }
                    // echo "Olá";
                    // echo $moduloId->id;
                    $celulaCad->create(['nivel'=>$j,'modulo_id'=>$moduloId->id,'alturam'=>$alturam,'alturacm'=>$alturacm]);
                    $celulaId=$celulaCad::latest()->first();
                    $espacosCaixa->create(['espacoscaixa'=>$dados[0]*$dados[1]*$dados[2],'celula_id'=>$celulaId->id]);
                    for ($k=0; $k <$dados[0] ; $k++) {
                        $fileiras->create(['celula_id'=>$celulaId->id,'numerofila'=>$k]);
                    }

                }



            }
            return 1;
            //  dd($json);
            //  dd(count($json[1]));
        }
}
