<?php

namespace App\Http\Controllers\ct;
 
use App\Models\ArmazemModel;
use App\Models\BaseGestdoc;
use App\Models\Celula;
use App\Models\ConfCaixa;
use App\Models\configModulo;
use App\Models\configuracaoModulo; 
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\EtiquetaFileira;
 
 
 
use App\Models\HistoricoCaixa;
use App\Models\Arrumacao;
use App\Models\ArrumacaoModel;
use App\Models\Caixa;
use App\Models\Checkin; 
use App\Models\DepCliente;
use App\Models\Reserva;
use App\Models\CaixaCheckin;
use App\Models\Etiqueta; 


use Facade\FlareClient\Http\Response;
use App\Http\Controllers\Controller;
use App\Models\Categoria;
use App\Models\Dispositivo; 
use App\Models\Funcionario;
use App\Models\Cliente;
use App\Models\Pessoa;
use App\Models\Sector;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\DB;
use DataTables;


class AdminController extends Controller
{

    public function returnUser(Request $request,$id){
        return view('usuarios.funcionarios.admin.usuarios.devices')->with('idUser',$id);
    }
    public function returnDevices ($id){
        return view('usuarios.funcionarios.admin.usuarios.devices')->with('idUser',$id);
    }
    public function returnConta ($id){
        return view('usuarios.funcionarios.admin.usuarios.usuario')->with('idUser',$id);
    }
    public function returnPerfil ($id){
        return view('usuarios.funcionarios.admin.usuarios.perfil')->with('idUser',$id);
    }
    public function returnPermissoes ($id){
        return view('usuarios.funcionarios.admin.usuarios.permissoes')->with('idUser',$id);
    }
    public function returnHistoricos ($id){
        return view('usuarios.funcionarios.admin.usuarios.historico')->with('idUser',$id);
    }
    public function returnAcessos ($id){
        return view('usuarios.funcionarios.admin.usuarios.acessos')->with('idUser',$id);
    }

    
    public function importDataExcel2(){
        
        $histCx= new HistoricoCaixa();
        $codigoHistorico=0;
        while(true){
            $codigoHistorico = mt_rand();
            $hist=$histCx::where('codigo',$codigoHistorico)->first();
            if($hist){
                
            }else{
                break;
            }
            
        }
        $caixas = DB::connection('mysql2')->table('caixas')->whereNull('deleted_at')->get();
       
        $armazem=4;
        $armz=ArmazemModel::where('id',$armazem)->first();
        $Armazem=$armz->nomearmazem; 
        //dd($caixas);
        $countMysql2=0;
        foreach($caixas as $cx){
                $countMysql2++;
                
            
                $id=$cx->codigo;
                $caixaNum=$cx->numero;
                $cliente=$cx->cliente;
                $estado=$cx->estado;
               
                
                $cli=Cliente::where('numerocliente',$cliente)->first();
                
                if($cli){
                    $dep= new DepCliente();
                    $clienteId=$cli->id;
                    $depart=$dep::where('departamento',"Padrão")->first();
                    $idDep=0;
                    if($depart){
                        $idDep=$depart->id;
                    }else{
                        
                        $dep->departamento="Padrão";
                        $dep->cliente_id=$clienteId;
                        $dep->usuario_id=Auth::id();
                        $dep->save();
                        $idDep=$dep->id;
                    }
                    
                    $reserva = new Reserva();
                    
                        
                        $res=$reserva::where('cliente_id',$clienteId)->where('departamento_id',$idDep)->where('quantcaixas',1)->first();
                        $resId=0;
                        if($res){
                            $resId=$res->id;    
                        }else{
                            
                            $reserva->cliente_id=$clienteId;
                            $reserva->departamento_id=$idDep;
                            $reserva->quantcaixas=1;
                            // $reserva->confcaixa_id=$request->configCaixa_id;
                            $reserva->armazem_id=4;
                            $reserva->usuario_id=Auth::id();
                            $reserva->save();
                            $resId=$reserva->id;
                        }
                      
                        
                        dd($resId);
                        $caixa=new Caixa(); 
                        $cx2=$caixa::where('estado',$estado)->where('idantigo',$id)->where('numerodacaixa',$caixaNum)->first();
                        $idNovoCx=0;
                        
                        if($cx2){
                             
                            $idNovoCx=$cx2->id;
                            
                        } else{
                            
                            $caixa->create(['reserva_id'=> $resId,'estado'=>$estado,'idantigo'=>$id,'numerodacaixa'=>$caixaNum,'usuario_id'=>Auth::id()]);
                            $cax=$caixa::latest()->first();
                            $idNovoCx=$cax->id;
                    
                        }
                        $etiqueta = new Etiqueta();
                       
                        $etiqueta->create(['numerobarcode'=>$id,'caixa_id'=>$idNovoCx,'usuario_id'=>Auth::id()]);
                        $histCx->create(['caixa_id'=>$idNovoCx, 'codigo'=>$codigoHistorico,'acontecimento'=>'Caixa importada no sistama','usuario_id'=>Auth::id()]);
                        
                          
                        //echo "<br>Numero da caixa: ".$cx->numero;
                        //echo " |  Original ID: ".$idNovoCx;
                        //echo "<br>////////////";
                           
                        DB::connection('mysql2')->table('caixas')->where('id', $cx->id)->update(['originalId' => $idNovoCx]);
                        
                }
                
                DB::connection('mysql2')->table('caixas')->where('id', $cx->id)->update(['deleted_at' => '2021-07-01 14:18:49']);
                 
        
       }
       dd($countMysql2);
       //dd();
        //$impLoc = new yoyo();
        AdminController::importLocalizacao();
       
    }
    
    public function importLocalizacao(){
      
                
        $histCx= new HistoricoCaixa();
        $codigoHistorico=0;
        while(true){
            $codigoHistorico = mt_rand();
            $hist=$histCx::where('codigo',$codigoHistorico)->first();
            if($hist){
                
            }else{
                break;
            }
            
        }
        $caixas = DB::connection('mysql2')->table('caixas')->where('estado','Arrumado')->whereNotNull('originalId')->get();
        //dd($caixas);
        $armazem=4;
        $armz=ArmazemModel::where('id',$armazem)->first();
        $Armazem=$armz->nomearmazem; 
        $importacoes=0;
        foreach($caixas as $cx){
            $corredor=$cx->corredor;
            $modulo=$cx->modulo;
            $fileira=$cx->fileira;
            $celula=$cx->celula;
            $originalId=$cx->originalId;
            $arrumacao = new ArrumacaoModel();
            $importacoes++;
        
            $localizacao= Corredor::where('corredores.armazem_id',$armazem)
            ->join('modulos','modulos.corredor_id','=','corredores.id')
            ->join('celulas','celulas.modulo_id','=','modulos.id')
            ->join('filas','filas.celula_id','=','celulas.id')
            ->where('corredores.numerocorredor',$corredor) 
            ->where('modulos.numeromodulo',$modulo)
            ->where('celulas.nivel',$celula)
            ->where('filas.numerofila',$fileira)
            ->select('filas.*')
            ->first();
            
            if($localizacao){
                
                $arr=$arrumacao::where('caixa_id',$originalId)->where('fila_id',$localizacao->id)->first();
                if(!$arr){
                    $arrum = new ArrumacaoModel();
                    $arrum->create(['caixa_id'=>$originalId, 'fila_id'=>$localizacao->id,'usuario_id'=>Auth::id()]);
                    $histCx->create(['caixa_id'=>$originalId, 'codigo'=>$codigoHistorico,'acontecimento'=>'Caixa arrumada com sucesso com a localização:'.$Armazem.'-'.$corredor.'-'.$modulo.'-'.$fileira.'-'.$celula,'usuario_id'=>Auth::id()]);
        
                }
            }else{
                echo "<br>Caixa não arrumada:".$cx->numero;
                echo " |  Localização: ".$Armazem.'-'.$corredor.'-'.$modulo.'-'.$fileira.'-'.$celula; 
                echo "Não encontrada <br>";
                
            }
            
            //DB::connection('mysql2')->table('caixas')->where('id', $cx->id)->update(['deleted_at' => '2021-07-01 14:18:49']);
        } 
       // echo $importacoes." Importações";
        dd();
        /*
        foreach($caixas as $cx){    
          $corredor=$cx->corredor;
          $modulo=$cx->modulo;
          $fileira=$cx->fileira;
          $celula=$cx->celula;
          $arrumacao = new ArrumacaoModel();

            // $fileiraJson
            $crr= Corredor::where('armazem_id',$armazem)->where('numerocorredor',$corredor)->first();
            
            if ($crr){
         
                $mdl=Modulo::where('corredor_id',$crr->id)->where('numeromodulo',$modulo)->first();
            // dd($crr);
                
                if($mdl){
                     
                    $cel=Celula::where('modulo_id',$mdl->id)->where('nivel',$celula)->first();
                    if($cel){
                         
                        //echo "Célula:";
                        //echo $cel;
                        $fil=Fileira::where('celula_id',$cel->id)->where('numerofila',$fileira)->first();
                        
                        if ($fil){
                            
            
                            $filId=$fil->id;
                           /* $arr=$arrumacao::where('caixa_id',$idNovoCx)->get();
                            
                            if($arr){
                                foreach ($arr as $ar){
                                    
                                    $ar->delete();
                                }
                                
                            } */
                                
                            /*$arrumacao->caixa_id=$idNovoCx;
                            $arrumacao->fila_id=$filId;
                            $arrumacao->usuario_id=Auth::id();
                            $arrumacao->save(); 
                            $arrum = new ArrumacaoModel();
                            //$arrum->create(['caixa_id'=>$idNovoCx, 'fila_id'=>$filId,'usuario_id'=>Auth::id()]);
                            //$histCx->create(['caixa_id'=>$idNovoCx, 'codigo'=>$codigoHistorico,'acontecimento'=>'Caixa arrumada com sucesso com a localização:'.$Armazem.'-'.$crr->numerocorredor.'-'.$mdl->numeromodulo.'-'.$fil->numerofila.'-'.$cel->nivel,'usuario_id'=>Auth::id()]);
        

                            
                            
                           //dd($sucesso);
                                 
                            
                        }
                        
                    }
                    
                   
                }
                
            }
                          
        }*/
        
                        
    }
    public function importDataExce_l(){
       dd("Dont move");
       $arrumacao = new ArrumacaoModel();
      // onlyTrashed()->get();
      //withTrashed()->get();
      //SELECT * FROM caixas as cx  WHERE estado='Arrumado' and cx.id not in (SELECT cx.id FROM caixas as cx join arrumacoes as arr on cx.id=arr.caixa_id)
      /*SELECT cx.id as 'Id da caixa',cx.numerodacaixa as 'Número da caixa', usr.name as 'Cliente' FROM caixas as cx join clientes as cl join reservas as rs join users as usr 
on cx.reserva_id=rs.id and rs.cliente_id=cl.id and cl.usuario_id=usr.id
WHERE cx.estado='Arrumado' and cx.id not in (SELECT cx.id FROM caixas as cx join arrumacoes as arr on cx.id=arr.caixa_id)
       $allArr=$arrumacao::get();
       foreach($allArr as $arr){
          $arrum=$arrumacao::where('caixa_id',$arr->caixa_id)->count();
          if($arrum>1){
              echo $arr->caixa_id."Mais de uma caixa | id:".$arr->id;
              $arr2=$arrumacao::where('caixa_id',$arr->caixa_id)->latest()->first();
              echo "Última:".$arr2->id;
              $arr3=$arrumacao::where('caixa_id',$arr->caixa_id)->get();
             foreach($arr3 as $arr3_1){
                 if($arr3_1->id==$arr2->id){
                     
                 }else{
                     $arr3_1->delete();
                 }
             }
              echo "<br><br>";
          }
          
       }*/
       
        $data= array(); 
//array_push($data,[1869,9,6,8,6]);

 
$data2=array();
   
$array2Count=count($data2);


            $sucesso=0;
          
            //array_push($data,[1303150,9499,12,1,8,5]); 
             $histCx= new HistoricoCaixa();
                    $codigoHistorico=0;
                    while(true){
                        $codigoHistorico = mt_rand();
                        $hist=$histCx::where('codigo',$codigoHistorico)->first();
                        if($hist){
                            
                        }else{
                            break;
                        }
                        
                    }
            $rows=count($data); 
            
            $armz=ArmazemModel::where('id',4)->first();
            $Armazem=$armz->nomearmazem;
             
            if($rows>0){
                
                $caixa=new Caixa(); 
                    $arrumacao = new ArrumacaoModel();
       
     
                for($i=0;$i<$rows;$i++){
                    $dados=$data[$i];
                    
                    $cxs=$dados[0];
                    $box=$caixa::join('reservas', 'reservas.id','=','caixas.reserva_id')->where('reservas.cliente_id',15)->where('caixas.numerodacaixa',$cxs)->select("caixas.*")->first();
                    //dd($box);
                   //echo $i."ª Caixa nº".$cxs;
                    $corredor=$dados[1];
                    $modulo=$dados[2];
                    $celula=$dados[4];
                    $fileira=$dados[3];
                    $idNovoCx=$box->id;
                    //dd($box->numerodacaixa);
                    $numIgualCx=0;
                    $pesquisas=0;
                    $estadoArrumacao=0;
                       /*for($j=0;$j<$array2Count;$j++){
                            $dados2=$data2[$j];
                                       
                            if($dados2[1]==$dados[0]){
                                $idNovoCx=$dados2[0];
                                $numIgualCx=$dados2[1];
                            }
                           
                                $pesquisas=$j;
                        }*/
                        //echo " Pesquisa(s) : ".$pesquisas;
                       /* 
                       $arr01=$arrumacao::where('caixa_id',$idNovoCx)->get();
                       if($arr01){
                          
                            foreach ($arr01 as $ar){
                                
                                $ar->delete();
                            }
                                            
                                       
                        }    */ 
                        
                        //if($idNovoCx>0 && $estadoArrumacao==0){
                            echo "Id novo:".$idNovoCx." | Codigo:".$numIgualCx;
                            echo " | Estado Arrumacao:".$estadoArrumacao;
                           $sucesso++;
                            echo "Arrumados :".$sucesso;
                             
                             $crr= Corredor::where('armazem_id',$armz->id)->where('numerocorredor',$corredor)->first();
                            if ($crr){
                                echo "Corredor id:".$crr->numerocorredor;
                                $mdl=Modulo::where('corredor_id',$crr->id)->where('numeromodulo',$modulo)->first();
                                
                                 //dd($mdl);
                                if($mdl){
                                    echo "Modulo id:".$mdl->numeromodulo;
                                    $cel=Celula::where('modulo_id',$mdl->id)->where('nivel',$celula)->first();
                                    if($cel){
                                        echo "Celula id:".$cel->id;
                                        $fil=Fileira::where('celula_id',$cel->id)->where('numerofila',$fileira)->first();
                                        //dd($fil);
                                        if ($fil){
                                        echo "Fileira id:".$fil->id;
                                        
                                            $filId=$fil->id;
                                            $arr=$arrumacao::where('fila_id',$filId)->where('caixa_id',$idNovoCx)->first();
                                            
                                            if(!$arr){
                                                echo "Arrumando";
                                                /*$arrumacao->caixa_id=$idNovoCx;
                                                $arrumacao->fila_id=$filId;
                                                $arrumacao->usuario_id=Auth::id();
                                                $arrumacao->save();*/ 
                                                $arrumacao->create(['caixa_id'=>$idNovoCx, 'fila_id'=>$filId,'usuario_id'=>Auth::id()]);
                                                $histCx->create(['caixa_id'=>$idNovoCx, 'codigo'=>$codigoHistorico,'acontecimento'=>'Caixa importada com sucesso com a localização:'.$Armazem.'-'.$crr->numerocorredor.'-'.$mdl->numeromodulo.'-'.$fil->numerofila.'-'.$cel->nivel,'usuario_id'=>Auth::id()]);
                                                $sucesso++;
                                            }
                                       }
                                    }
                                }
                        
                            }
                        echo "<br>";
                       
                        //}else{
                            // echo "| Não carece de arrumação";
                            
                        //}
                        
                       
                        
                        
               }
                   //dd();
                   
                    
                  
            }
            
       echo "Sucesso:".$sucesso;
    }
    public function novofuncionario(Request $request){


        $nome=$request->nome;
        $sobrenome=$request->sobrenome;
        $email=$request->email;
        $telemovel=$request->telemovel;
        $sector=$request->sector;
        $categoria=$request->categoria;
        $nmec=$request->nmec;

        $Pessoas = new Pessoa();

            $Pessoas->nome = $nome .' '. $sobrenome;
            $Pessoas->telefone = $telemovel ;

        $Pessoas->save();


        $ps=Pessoa::orderBy('id', 'DESC')->first();
        $lastIdPessoa=$ps->id;
        $pass=Hash::make("0000");
        $usuario= new User ();
            $usuario->name='@'.$sobrenome;
            $usuario->avatar="default.jpg";
            $usuario->email = $email;
            $usuario->pessoa_id = $lastIdPessoa;
            $usuario->estado=2;
            $usuario->password=$pass;
        $usuario->save();

        $us=User::orderBy('id', 'DESC')->first();
        $lastIdUser=$us->id;

        $funcionario = new Funcionario ();

        $funcionario->nmec=$nmec;
        $funcionario->categoria_id=$categoria;
        $funcionario->sector_id=$sector;
        $funcionario->user_id=$lastIdUser;

        $funcionario->save();

        return 1;
        
    }
    
    public function listagemfuncionarios(Request $request){
        
        return DataTables::of(Funcionario::get())->addIndexColumn()
            ->addColumn('nome', function($row){
                $user=User::where('id',$row->user_id)->first();
        
                $btn =  $user->getPessoa->nome;
                return $btn;
            })->rawColumns(['nome'])
            ->addColumn('email', function($row){
                $user=User::where('id',$row->user_id)->first();
                $btn = $user->email;
                return $btn;
            })->rawColumns(['email'])
            ->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){
                $nmec=$row->nmec;
                $btn = '<a href="\usuario/admin/funcionarios/usuario/'.$nmec.'" class="edit btn btn-primary btn-sm"><i class="fa fa-eye"></i> Ver mais</a>';
                return $btn;
            })
            ->rawColumns(['acao'])
            ->make(true);
    }
    public function verfuncionario(Request $request, $nmec){

        return view('usuarios.funcionarios.admin.funcionario.funcionario')->with('nmec',$nmec);
    }

    public function editar_foto(Request $request, $id){

        return view('usuarios.funcionarios.admin.funcionario.editar')->with(['id'=>$id,'editar'=>1]);
    }
    public function confirmPass(Request $request){
        $pass=$request->senha;
        $actual=Auth::user();

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

           return 1;

        }else{
            
            return 0;
        }
    }
    public function editar_foto_editar(Request $request, $id){
        $pass=$request->password;
        $actual=Auth::user();

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

            $validatedData = $request->validate([
            'image' => 'required|image|mimes:jpg,png,jpeg,gif,svg|max:2048',
            ]);

            // $name = Hash::make( $request->file('image')->getClientOriginalName()).".". $request->file('image')->getClientOriginalExtension();
            $name=$request->file('image')->hashName();
            $path = $request->file('image')->store('public/img');

            $funcionario=Funcionario::where('id',$id)->first();
            $usuario=$funcionario->getUser;
            $usuario->avatar=$name;
            $usuario->save();

            // dd($name);
            return view('usuarios.funcionarios.admin.funcionario.funcionario')->with('nmec',$funcionario->nmec);

        }else{
            return redirect()->back()->withErrors('erro','A sua senha não está correcta, não foi possível editar este dado');
        }

        // dd( Hash::check($pass, $actual->password));

        // return view('usuarios.funcionarios.admin.funcionario.editar')->with(['id'=>$id,'editar'=>1]);
    }
    public function editar_dados_gerais(Request $request, $id){

        return view('usuarios.funcionarios.admin.funcionario.editar')->with(['id'=>$id,'editar'=>2]);
    }

    public function editar_outros_dados(Request $request, $id){

        return view('usuarios.funcionarios.admin.funcionario.editar')->with(['id'=>$id,'editar'=>3]);
    }

    public function editar_outros_dados_editar(Request $request, $id){

        $pass=$request->password;
        $actual=Auth::user();
        if( Hash::check($pass, $actual->password)){

           $estado=$request->estado;

            $funcionario= Funcionario::where('id',$id)->first();

            $usuario= $funcionario->getUser;
                $usuario->estado = $estado;
            $usuario->save();

            return view('usuarios.funcionarios.admin.funcionario.funcionario')->with('nmec',$funcionario->nmec);

        }else{

            return redirect()->back()->withErrors('erro','A sua senha não está correcta, não foi possível editar este dado');

        }

        // return view('usuarios.funcionarios.admin.funcionario.editar')->with(['id'=>$id,'editar'=>3]);
    }

    public function editar_dados_gerais_editar(Request $request, $id){
        $pass=$request->password;
        $actual=Auth::user();

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

            $nome=$request->nome;
            $sobrenome=$request->sobrenome;
            $email=$request->email;
            $telemovel=$request->telefone;
            $sector=$request->sector;
            $categoria=$request->categoria;
            $nmec=$request->nmec;

            $funcionario= Funcionario::where('id',$id)->first();

                $funcionario->nmec=$nmec;
                $funcionario->categoria_id=$categoria;
                $funcionario->sector_id=$sector;
            $funcionario->save();

            $usuario= $funcionario->getUser;
                $usuario->email = $email;
            $usuario->save();

            $Pessoas = $usuario->getPessoa;

                $Pessoas->nome = $nome .''. $sobrenome;
                $Pessoas->telefone = $telemovel ;

            $Pessoas->save();
            return view('usuarios.funcionarios.admin.funcionario.funcionario')->with('nmec',$nmec);

        }else{

            return redirect()->back()->withErrors('erro','A sua senha não está correcta, não foi possível editar este dado');

        }


        // return 1;
        // return view('usuarios.funcionarios.admin.funcionario.editar')->with(['id'=>$id,'editar'=>3]);
    }


    public function editar_password(Request $request, $id){

        return view('usuarios.funcionarios.admin.funcionario.editar')->with(['id'=>$id,'editar'=>4]);
    }
    public function editar_password_editar(Request $request, $id){


        $pass1=$request->password_nova1;
        $pass=$request->password;
        $actual=Auth::user();

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


            $funcionario=Funcionario::where('id',$id)->first();
            $usuario=$funcionario->getUser;
            $usuario->password=Hash::make($pass1);
            $usuario->save();
            return view('usuarios.funcionarios.admin.funcionario.funcionario')->with('nmec',$funcionario->nmec);



        }else{

            return redirect()->back()->withErrors('erro','A sua senha não está correcta, não foi possível editar este dado');


           }


    }

 


    public function novocliente(Request $request){
        
        $cliente = new cliente();
        $Pessoa = new Pessoa();
        $usuario= new User();
         // nome
        // telemovel
        // email
        // numero
        
        $veri=$Pessoa::where('nome',$request->nome)->first();
        
        if ($veri){
            return "Já existe um cliente com este nome, por favor informe outro nome para o cliente";
        }else{
            
            $veri=$Pessoa::where('telefone',$request->telemovel)->first();
            
            if ($veri){
                return "Alguém já está usando este terminal telefónico, por favor, informe um terminal diferente.";
            }else{
                
                $veri=$usuario::where('email',$request->email)->first();
                if ($veri){
                     return "Já existe um cliente usando este email, por favor informe um email diferente";
                }else{
                    
                    $veri=$cliente::where('numerocliente',$request->numero)->first();
                    
                    if ($veri){
                         return "Já existe um cliente com este número, por favor informe outro número de cliente";
                    }else{
                        
                        $veri=$usuario::where('name',$request->nome2)->first();
                        
                        if ($veri){
                             return "Já existe um cliente com esta abreviatura, por favor informe outra";
                        }else{
                            
    
                            
                            $nome=$request->nome;
                            $numero=$request->numero;
                            $email=$request->email;
                            $telemovel=$request->telemovel;
                            $nome2=$request->nome2;
                            
                            $Pessoa->nome = $nome;
                            $Pessoa->telefone = $telemovel ;
                
                            $Pessoa->save();
                            
                            $pass=Hash::make("123123");
    
                            $usuario->name=$nome2;
                            $usuario->avatar="default.jpg";
                            $usuario->email = $email;
                            $usuario->pessoa_id = $Pessoa->id;
                            $usuario->estado=2;
                            $usuario->password=$pass;
                            $usuario->save();
                    
                    
                            
                            $cliente->numerocliente=$numero; 
                            $cliente->usuario_id=$usuario->id; 
                            $cliente->save();
                            
                            return 1;
                        }
                    }
                }
               
            }
           
        }
        
        
          

      
       
         
        
        
        
    }
    
    
    public function addDepClie(Request $request){
        $dep= new DepCliente();
            $departamento=$request->departamento;
            $clienteId=$request->cliente;
            $dep->departamento=$departamento;
            $dep->localizacao=$request->localizacaoArmazem;
            $dep->orgaosdeestrutura_id=$request->orgao;
            $dep->cliente_id=$clienteId;
            $dep->usuario_id=Auth::id();
            $dep->save();
        return 1;
    }
    
   
    
    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');
    }
     
     
     
    public function show($id)
    
    {   
        
        $idArmazem=$id;
        return view('usuarios.funcionarios.secArmazem.configArmazem.armazens.editar',['idArmazem'=>$idArmazem]);
        
        
    }

      
    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=$armazemObject->id;

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

                    // Cadastrar a quantidade de corredores

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

                        $corredor->create(['numerocorredor'=>$j,'armazem_id'=>$lastIdArmazem,'usuario_id'=>Auth::id()]);
                        
                         

                    }

                     return 1;
                   
                } 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]);
                $celulaId=$celula::max('id');
                
                // dd($celulaId);
                // echo "<br>";
                // echo "Id da célula:".$celulaId;
                // echo "<br>";
                $espacosCaixa->create(['espacoscaixa'=>$quantidadeDeCaixas,'celula_id'=>$celulaId]);

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

                }
                $nivelCelula++;
                // echo $nivelCelula;
            }


            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();
            
            
            $celula->cx_altura=$request->alturas;
            $celula->cx_profundidade=$request->profundidade;
            $celula->save();
            $filas=new Fileira();
            for($i=1;$i<=$request->larguras;$i++){
                 $filas->create(['celula_id'=>$request->id,'numerofila'=>$i]);
            }
            return 1;


         }

         public function editCelula2(Request $request){

            $celula=Celula::where('id',$request->id)->first();
            $fl=new Fileira();
     
            $filas=Fileira::where('celula_id',$request->id)->get();
            $getRows=Fileira::where('celula_id',$request->id)->max('numerofila');
            
            $espacoscaixascelulas=EspacoCaixaModulo::where('celula_id',$request->id)->first();
            
            if($espacoscaixascelulas->espacoscaixa==$request->alturas*$request->larguras*$request->profundidade){
                
               
            }else{
            
                $espacoscaixascelulas->espacoscaixa=$request->alturas*$request->larguras*$request->profundidade;
                $espacoscaixascelulas->save();
                
                // echo "Editou espaços da caixa";
                
            }
            if ($celula->cx_altura==$request->alturas){
                
            }else{
                 $celula->cx_altura=$request->alturas;
                 $celula->save();
                //  echo "Editou ALturas";
            }
            if ($celula->cx_profundidade==$request->profundidade){
                
            }else{
                $celula->cx_profundidade=$request->profundidade;
                $celula->save();
                // echo "Editou profundidade";
            }
            
            
          
                // dd($filas);
            if($filas->count()==$request->larguras){
                return 0;
            }elseif($filas->count()<$request->larguras){
                $qtdAumentar=0;
                $qtdFilasEncontradas=$filas->count();
                $qtdFilasSugeridas=$request->larguras;
                $qtdAumentar=$qtdFilasSugeridas-$qtdFilasEncontradas;
                // echo "Filas encontradas:".$qtdFilasEncontradas;
                // echo "Filas sugeridas:".$qtdFilasSugeridas;
                $lastNumberFila=0;    
                $lastNumberFila=$getRows;
                // $fl->create(['celula_id'=>$request->id,'numerofila'=>$lastNumberFila]);
              
                // dd("Aumentar ".$qtdAumentar);
                for ($i=1; $i<= $qtdAumentar;$i++){
                    $lastNumberFila++;
                
                    $fl->create(['celula_id'=>$request->id,'numerofila'=>$lastNumberFila]);
                
                }
                // 
                return 1;
                
            }else{
               
                return -1;
            }
            //  dd(1);

         
            
            


         }
        
        public function editCelula3(Request $request){
            $ids=$request->ids;
            $alturas=$request->alturas;
            $larguras=$request->larguras;
            $profundidade=$request->profundidade;
            $fl=new Fileira();
            $quantidade=count($ids);
            // dd($ids);
            $numberReturn=0;
            for ($i=0; $i<$quantidade;$i++){
                $id=$ids[$i];
                
                $celula=Celula::where('id',$id)->first();
         
                $filas=Fileira::where('celula_id',$id)->get();
                $getRows=Fileira::where('celula_id',$id)->max('numerofila');
                
                $espacoscaixascelulas=EspacoCaixaModulo::where('celula_id',$id)->first();
                
                if($espacoscaixascelulas->espacoscaixa==$request->alturas*$request->larguras*$request->profundidade){
                    
                   
                }else{
                
                    $espacoscaixascelulas->espacoscaixa=$request->alturas*$request->larguras*$request->profundidade;
                    $espacoscaixascelulas->save();
                    
                    // echo "Editou espaços da caixa";
                    $numberReturn= 2;
                }
                if ($celula->cx_altura==$request->alturas){
                    
                }else{
                     $celula->cx_altura=$request->alturas;
                     $celula->save();
                    //  echo "Editou ALturas";
                    $numberReturn= 3;
                }
                if ($celula->cx_profundidade==$request->profundidade){
                }else{
                    $celula->cx_profundidade=$request->profundidade;
                    $celula->save();
                    // echo "Editou profundidade";
                    $numberReturn= 4;
                }
                
                
              
                    // dd($filas);
                if($filas->count()==$request->larguras){
                    $numberReturn= -5;
                }elseif($filas->count()<$request->larguras){
                    $qtdAumentar=0;
                    $qtdFilasEncontradas=$filas->count();
                    $qtdFilasSugeridas=$request->larguras;
                    $qtdAumentar=$qtdFilasSugeridas-$qtdFilasEncontradas;
                    // echo "Filas encontradas:".$qtdFilasEncontradas;
                    // echo "Filas sugeridas:".$qtdFilasSugeridas;
                    $lastNumberFila=0;    
                    $lastNumberFila=$getRows;
                    // $fl->create(['celula_id'=>$request->id,'numerofila'=>$lastNumberFila]);
                  
                    // dd("Aumentar ".$qtdAumentar);
                    for ($i=1; $i<= $qtdAumentar;$i++){
                        $lastNumberFila++;
                    
                        $fl->create(['celula_id'=>$id,'numerofila'=>$lastNumberFila]);
                    
                    }
                    // 
                    $numberReturn=1;
                    
                }else{
                    $qtdFilasEncontradas=$filas->count();
                    $qtdFilasSugeridas=$request->larguras;
                    $qtdReduzir=$qtdFilasEncontradas-$qtdFilasSugeridas;
                    for ($j=1;$j<=$qtdReduzir;$j++){
                        $filaDelete=Fileira::where('celula_id',$id)->latest();
                        $filaDelete->delete();
                    }
                    $numberReturn=-1;
                }
                
            }
            return $numberReturn;
        }

         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();
            $espacoCaixa1=EspacoCaixaModulo::where('celula_id',$copCel->celula_id)->first();

            // $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=$espacoCaixa1->espacoscaixa;
                $espacoCaixa->celula_id=$request->idCelula;
            $espacoCaixa->save();
            
            
            

            $fileiras=Fileira::where('celula_id',$request->idCelula)->get();
            $countFileiras=$fileiras->count();
            foreach($fileiras as $fil){
                $fil->delete();
            }
            $fileira = new Fileira();
             
           for($cnt=1;$cnt<=$countFileiras;$cnt++){
             

                // $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 importDataNew_newWay(Request $request){
            $data= $request->data;
            //dd($data);
            
            $id=$data[0];
            $caixaNum=$data[1];
            $estado=$data[2];
            $sucesso=0;
            
            $histCx= new HistoricoCaixa();
            $codigoHistorico=0;
            while(true){
                $codigoHistorico = mt_rand();
                $hist=$histCx::where('codigo',$codigoHistorico)->first();
                if($hist){
                    
                }else{
                    break;
                }
                
            }
            
            
           
            $codigo=$request->codigo;
            $armazem=$request->armazem;
            $armz=ArmazemModel::where('id',$armazem)->first();

            $Armazem=$armz->nomearmazem;
            
            
            if($estado=="Arrumado"){
                $corredor=$data[3];
                $modulo=$data[4];
                $fileira=$data[5];
                $celula=$data[6];
            }
            
            $cliente = new Cliente();
            $cli=$cliente::where('numerocliente',$codigo)->first();
           if($cli){
                
                           
                $dep= new DepCliente();
                $clienteId=$cli->id;
                $depart=$dep::where('departamento',"Padrão")->first();
                $idDep=0;
                if($depart){
                    $idDep=$depart->id;
                }else{
                    
                    $dep->departamento="Padrão";
                    $dep->cliente_id=$clienteId;
                    $dep->usuario_id=Auth::id();
                    $dep->save();
                    $idDep=$dep->id;
                }
                
                
                 // Criando uma nova reserva
                        
                   $reserva = new Reserva();
                
                    
                    $res=$reserva::where('cliente_id',$clienteId)->where('departamento_id',$idDep)->where('quantcaixas',1)->first();
                    $resId=0;
                    
                    if($res){
                        $resId=$res->id;    
                    }else{
                        
                        $reserva->cliente_id=$clienteId;
                        $reserva->departamento_id=$idDep;
                        $reserva->quantcaixas=1;
                        // $reserva->confcaixa_id=$request->configCaixa_id;
                        $reserva->armazem_id=$armazem;
                        $reserva->usuario_id=Auth::id();
                        $reserva->save();
                        $resId=$reserva->id;
                    }
                    
                    $caixa=new Caixa(); 
                    $cx=$caixa::where('estado',$estado)->where('idantigo',$id)->where('numerodacaixa',$caixaNum)->first();
                    $idNovoCx=0;
                  
                    
                    if($cx){
                         
                        $idNovoCx=$cx->id;
                    } else{
                        
                        $caixa->create(['reserva_id'=> $resId,'estado'=>$estado,'idantigo'=>$id,'numerodacaixa'=>$caixaNum,'usuario_id'=>Auth::id()]);
                        $cax=$caixa::latest()->first();
                        $idNovoCx=$cax->id;
                    }
                        
                    $etiqueta = new Etiqueta();
                   
                    $etiqueta->create(['numerobarcode'=>$id,'caixa_id'=>$idNovoCx,'usuario_id'=>Auth::id()]);
                    $histCx->create(['caixa_id'=>$idNovoCx, 'codigo'=>$codigoHistorico,'acontecimento'=>'Caixa importada no sistama','usuario_id'=>Auth::id()]);
                    
                    
                    if($estado=="Arrumado"){
                         $arrumacao = new ArrumacaoModel();


 
                        // $fileiraJson
                        $crr= Corredor::where('armazem_id',$armazem)->where('numerocorredor',$corredor)->first();
                        // $celula
                        // $fileira
                        if ($crr){
                     
                            $mdl=Modulo::where('corredor_id',$crr->id)->where('numeromodulo',$modulo)->first();
                        // dd($crr);
                            
                            if($mdl){
                                 
                                $cel=Celula::where('modulo_id',$mdl->id)->where('nivel',$celula)->first();
                                if($cel){
                                     
                                    //echo "Célula:";
                                    //echo $cel;
                                    $fil=Fileira::where('celula_id',$cel->id)->where('numerofila',$fileira)->first();
                                    
                                    if ($fil){
                                        
                        
                                        $filId=$fil->id;
                                        $arr=$arrumacao::where('caixa_id',$idNovoCx)->get();
                                        
                                        if($arr){
                                            foreach ($arr as $ar){
                                                
                                                $ar->delete();
                                            }
                                            
                                        } 
                                            
                                        /*$arrumacao->caixa_id=$idNovoCx;
                                        $arrumacao->fila_id=$filId;
                                        $arrumacao->usuario_id=Auth::id();
                                        $arrumacao->save(); */
                                        $arrum = new ArrumacaoModel();
                                        $arrum->create(['caixa_id'=>$idNovoCx, 'fila_id'=>$filId,'usuario_id'=>Auth::id()]);
                                        $histCx->create(['caixa_id'=>$idNovoCx, 'codigo'=>$codigoHistorico,'acontecimento'=>'Caixa arrumada com sucesso com a localização:'.$Armazem.'-'.$crr->numerocorredor.'-'.$mdl->numeromodulo.'-'.$fil->numerofila.'-'.$cel->nivel,'usuario_id'=>Auth::id()]);
                    

                                        $sucesso++;
                                        
                                       //dd($sucesso);
                                             
                                        
                                    }
                                    
                                }
                                
                               
                            }
                            
                        }
                    }
           }
            
            
            
            return 1;
                
            
        }
        public function importDataNew(){
           $data=array();
         
               
               
        //    array_push($data,[1303150,9499,12,1,8,5]); 
       

// array_push($data,[1834627,763,19,1,3,10]);

           // dd($data);
            // return redirect()->back();
            $histCx= new HistoricoCaixa();
 
            $Armazem="Zango";
            $ArmazemId=4;
         //array_push($data,[1835108,391,18,5,2,2]);
            //$numCliente=10005;
             
            $numCliente=10010;
            $departamento="Padrão";
         

            $count=count($data);
            $sucesso=0;  
            for($i=0;$i<$count;$i++){
                $dados=$data[$i];
                // dd($dados);
                // dd($idCaixa);
               
                $idCaixa=$dados[0];
                $numCaixa=$dados[1];
                $estadoCaixa="Arrumado"; 
                $estadodacaixa="";
                $passar=true;
                 
                $estadodacaixa=$estadoCaixa;
               
                    
                if($estadodacaixa=="Arrumado"){
                    $corredor=$dados[2];
                    $modulo=$dados[3];
                    $fileira=$dados[4];
                    $celula=$dados[5];
                }
                 
                if ($passar){
                    $cliente = new Cliente();
                    $cli=$cliente::where('numerocliente',$numCliente)->first();
                        
                    if($cli){
                         
                        $histCx->create(['caixa_id'=>$idCaixa,'acontecimento'=>'Caixa importada no sistema','usuario_id'=>Auth::id()]);
                        $dep= new DepCliente();
                        $clienteId=$cli->id;
                        $depart=$dep::where('departamento',$departamento)->first();
                        $idDep=0;
                        if($depart){
                            $idDep=$depart->id;
                        }else{
                            
                            $dep->departamento=$departamento;
                            $dep->cliente_id=$clienteId;
                            $dep->usuario_id=Auth::id();
                            $dep->save();
                            $idDep=$dep->id;
                        }
                        
                        
                        // Criando uma nova reserva
                        
                       $reserva = new Reserva();
                    
                        
                        $res=$reserva::where('cliente_id',$clienteId)->where('departamento_id',$idDep)->where('quantcaixas',$count)->first();
                        $resId=0;
                        $histCx->create(['caixa_id'=>$idCaixa,'acontecimento'=>'Reservando a caixa importada','usuario_id'=>Auth::id()]);
                        
                        if($res){
                            $resId=$res->id;    
                        }else{
                            
                            $reserva->cliente_id=$clienteId;
                            $reserva->departamento_id=$idDep;
                            $reserva->quantcaixas=$count;
                            // $reserva->confcaixa_id=$request->configCaixa_id;
                            $reserva->armazem_id=$ArmazemId;
                            $reserva->usuario_id=Auth::id();
                            $reserva->save();
                            $resId=$reserva->id;
                        }
                        
                        $caixa=new Caixa(); 
                        $cx=$caixa::where('estado',$estadoCaixa)->where('idantigo',$idCaixa)->where('numerodacaixa',$numCaixa)->first();
                        $idNovoCx=0;
                      
                        if($cx){
                             
                            $idNovoCx=$cx->id;
                        } else{
                            
                            $caixa->create(['reserva_id'=> $resId,'estado'=>$estadodacaixa,'idantigo'=>$idCaixa,'numerodacaixa'=>$numCaixa,'usuario_id'=>Auth::id()]);
                            $cax=$caixa::latest()->first();
                            $idNovoCx=$cax->id;
                        }
                            
                        $etiqueta = new Etiqueta();
                        $histCx->create(['caixa_id'=>$idCaixa,'acontecimento'=>'Caixa inserida no sistema','usuario_id'=>Auth::id()]); 
                        $etiqueta->create(['numerobarcode'=>$idCaixa,'caixa_id'=>$idNovoCx,'usuario_id'=>Auth::id()]);
                        
                        if ($estadodacaixa=="Entrada"){
                            $sucesso++;
                            $box = $caixa::where('id',$idNovoCx)->first();
                            $box->estado="Entrada";
                            $box->save();
                            
                        }elseif ($estadodacaixa=="Em trânsito"){
                            $sucesso++;
                            $box = $caixa::where('id',$idNovoCx)->first();
                            $box->estado="Em trânsito";
                            $box->save();
                            
                        }elseif($estadodacaixa=="Arrumado"){
                             $arrumacao = new ArrumacaoModel();
                        
                       
                            // $fileiraJson
                            // 
                            $histCx->create(['caixa_id'=>$idCaixa,'acontecimento'=>'Arrumando a caixa','usuario_id'=>Auth::id()]);
                           
                                
                            
                            $crr= Corredor::where('armazem_id',$ArmazemId)->where('numerocorredor',$corredor)->first();
                            // $celula
                            // $fileira
                            if ($crr){
                         
                                $mdl=Modulo::where('corredor_id',$crr->id)->where('numeromodulo',$modulo)->first();
                            // dd($crr);
                                
                                if($mdl){
                                     
                                    $cel=Celula::where('modulo_id',$mdl->id)->where('nivel',$celula)->first();
                                    if($cel){
                                         
                                        echo "Célula:";
                                        echo $cel;
                                        $fil=Fileira::where('celula_id',$cel->id)->where('numerofila',$fileira)->first();
                                        echo "<br>$numCaixa";
                                        echo "Passou:";
                                        echo $fil;
                                        if ($fil){
                                            
                                            $filId=$fil->id;
                                            $arr=$arrumacao::where('fila_id',$filId)->where('caixa_id',$idNovoCx)->first();
                                            
                                            if($arr){
                                                
                                                $arr->delete();
                                                
                                            } 
                                                
                                            $arrumacao->caixa_id=$idNovoCx;
                                            $arrumacao->fila_id=$filId;
                                            $arrumacao->usuario_id=Auth::id();
                                            $arrumacao->save(); 
                                               
                                            
                                            $histCx->create(['caixa_id'=>$idCaixa,'acontecimento'=>'Caixa arrumada com sucesso com a localização:'.$Armazem.'-'.$crr.'-'.$mdl.'-'.$fil.'-'.$cel,'usuario_id'=>Auth::id()]);
                        
                                          
                             
                                            $sucesso++;
                                            echo "Entrou <br>";
                                           
                                                 
                                            
                                        }
                                        
                                    }
                                    
                                   
                                }
                                
                            }
                        }
                        
                    }
                }
            }
           
            return $sucesso;
        
        }
        
        public function importEtiquetas(){
           $data=array();
         
            // array_push($data,[335641,1,4,8,3]);
            
        //   dd($data);
           
            // return redirect()->back();
            // $histCx= new HistoricoCaixa();
 
            $Armazem="Zango";
            $ArmazemId=4;
             
           
            $count=count($data); 
            $sucesso=0;  
            for($i=0;$i<$count;$i++){
                $dados=$data[$i]; 
               
                $etiqueta=$dados[0];
                $corredor=$dados[1];
                $modulo=$dados[2];
                $fileira=$dados[3];
                $celula=$dados[4];
            
                $passar=true;
                 
                 
                if ($passar){
                     
                    $corredor=Corredor::where('numerocorredor',$corredor)->where('armazem_id',$ArmazemId)->first();
                        
                    if($corredor){
                         
                
                         
                        $mdl=Modulo::where('corredor_id',$corredor->id)->where('numeromodulo',$modulo)->first();
                           
                                
                        if($mdl){
                                     
                            $cel=Celula::where('modulo_id',$mdl->id)->where('nivel',$celula)->first();
                            if($cel){
                                         
                                $fil=Fileira::where('celula_id',$cel->id)->where('numerofila',$fileira)->first();
                                          
                                if ($fil){
                                    
                                    $filId=$fil->id;
                                     
                                    $etiqFila=new EtiquetaFileira();
                                    $etiqFila->create(['fileira_id'=>$fil->id,'numerobarcode'=>$etiqueta,'usuario_id'=>Auth::id()]);
                                         
                                    
                                }
                                    
                            }
                       }
                        
                    }
                }
            }
            
            return 1;
        
        }
        
        public function importDataText(Request $request){
            $histCx= new HistoricoCaixa();
 
            $Armazem=$request->Armazem;
            $ArmazemId=4;
          
            $numCliente=10013;
            $departamento="Padrão";
            $Data=$request->Data; 
            // $Corredores=$request->Corredores; 
            // $Modulos=$request->Modulos;
            // $Fileiras=$request->Fileiras;
            // $Celulas=$request->Celulas;
            
            
            dd($Data);
            $count=count($Data);
            $sucesso=0;  
            for($i=0;$i<$count;$i++){
                $dados=$Data[$i];
                $idCaixa=$dados[0];
                // dd($idCaixa);
               
                $numCaixa=$dados[1];
                $estadoCaixa="Destruído"; 
                $estadodacaixa="";
                $passar=true;
                 
                $estadodacaixa="Arrumado";
                $corredor=$dados[3];
                $modulo=$dados[4];
                $celula=$dados[6];
                $fileira=$dados[5];
                 
                if ($passar){
                    
                    $cliente = new Cliente();
                    $cli=$cliente::where('numerocliente',$numCliente)->first();
                        
                    if($cli){
                         
                        $histCx->create(['caixa_id'=>$idCaixa,'acontecimento'=>'Caixa importada no sistema','usuario_id'=>Auth::id()]);
                        $dep= new DepCliente();
                        $clienteId=$cli->id;
                        $depart=$dep::where('departamento',$departamento)->first();
                        $idDep=0;
                        if($depart){
                            $idDep=$depart->id;
                        }else{
                            
                            $dep->departamento=$departamento;
                            $dep->cliente_id=$clienteId;
                            $dep->usuario_id=Auth::id();
                            $dep->save();
                            $idDep=$dep->id;
                        }
                        
                        
                        // Criando uma nova reserva
                        
                       $reserva = new Reserva();
                    
                        
                        $res=$reserva::where('cliente_id',$clienteId)->where('departamento_id',$idDep)->where('quantcaixas',$count)->first();
                        $resId=0;
                        $histCx->create(['caixa_id'=>$idCaixa,'acontecimento'=>'Reservando a caixa importada','usuario_id'=>Auth::id()]);
                        
                        if($res){
                            $resId=$res->id;    
                        }else{
                            
                            $reserva->cliente_id=$clienteId;
                            $reserva->departamento_id=$idDep;
                            $reserva->quantcaixas=$count;
                            // $reserva->confcaixa_id=$request->configCaixa_id;
                            $reserva->armazem_id=$ArmazemId;
                            $reserva->usuario_id=Auth::id();
                            $reserva->save();
                            $resId=$reserva->id;
                        }
                        
                        $caixa=new Caixa(); 
                        $cx=$caixa::where('estado',$estadoCaixa)->where('idantigo',$idCaixa)->where('numerodacaixa',$numCaixa)->first();
                        $idNovoCx=0;
                      
                        if($cx){
                             
                            $idNovoCx=$cx->id;
                        } else{
                            
                            $caixa->create(['reserva_id'=> $resId,'estado'=>$estadodacaixa,'idantigo'=>$idCaixa,'numerodacaixa'=>$numCaixa,'usuario_id'=>Auth::id()]);
                            $cax=$caixa::latest()->first();
                            $idNovoCx=$cax->id;
                        }
                            
                        $etiqueta = new Etiqueta();
                        $histCx->create(['caixa_id'=>$idCaixa,'acontecimento'=>'Caixa inserida no sistema','usuario_id'=>Auth::id()]); 
                        $etiqueta->create(['numerobarcode'=>$idCaixa,'caixa_id'=>$idNovoCx,'usuario_id'=>Auth::id()]);
                        
                            
                            
                         
                        
                        if($estadodacaixa=="Arrumado"){
                             $arrumacao = new ArrumacaoModel();
                        
                       
                            // $fileiraJson
                            // 
                            $histCx->create(['caixa_id'=>$idCaixa,'acontecimento'=>'Arrumando a caixa','usuario_id'=>Auth::id()]);
                           
                            
                            $crr= Corredor::where('armazem_id',$ArmazemId)->where('numerocorredor',$corredor)->first();
                            // 
                            // $celula
                            // $fileira
                            if ($crr){
                         
                                $mdl=Modulo::where('corredor_id',$crr->id)->where('numeromodulo',$modulo)->first();
                                
                                if($mdl){
                                     
                                    $cel=Celula::where('modulo_id',$mdl->id)->where('nivel',$celula)->first();
                                
                                    if($cel){
                                         
                                        $fil=Fileira::where('celula_id',$cel->id)->where('numerofila',$fileira)->first();
                                        if ($fil){
                                            
                                            $filId=$fil->id;
                                            $arr=$arrumacao::where('fila_id',$filId)->where('caixa_id',$idNovoCx)->first();
                                            
                                            if($arr){
                                                
                                                $arr->delete();
                                                
                                            } 
                                                
                                            $arrumacao->caixa_id=$idNovoCx;
                                            $arrumacao->fila_id=$filId;
                                            $arrumacao->usuario_id=Auth::id();
                                            $arrumacao->save(); 
                                               
                                            
                                            $histCx->create(['caixa_id'=>$idCaixa,'acontecimento'=>'Caixa arrumada com sucesso com a localização:'.$Armazem.'-'.$crr.'-'.$mdl.'-'.$fil.'-'.$cel,'usuario_id'=>Auth::id()]);
                        
                                          
                             
                                            $sucesso++;
                                           
                                           
                                                 
                                            
                                        }
                                        
                                    }
                                    
                                   
                                }
                                
                            }
                        }
                        
                    }
                }
            }
            
            return $sucesso;
        }
        public function importDataExcel(Request $request){
            $json= array($request->json); 
            $vector= explode('{',$json[0]);
            $qtd = count($vector);
            $idcx=array();
            $caxas=array();
            $numscli=array();
            $estadosCx=array();
            $departamentosarr=array();
            $corrarr=array();
            $modarr=array();
            $celarr=array();
            $filarr=array();
            $realQtd=0;
            $sucesso=0;
            // echo "<br>\n Quantidade de arquivos:".$qtd;
            
            for($i=1;$i<$qtd;$i++){
                
                $stringGerada=str_replace('}', "", $vector[$i]);
                // Exemplo de string gerada     
                //     "ID.CAIXA": 926357,
                //     "Nº DA CAIXA": "1/VAZIO",
                //     "CLIENTE": "10013-BANCO CAIXA GERAL ANGOLA",
                //     "DEPARTAMENTO": "BANCO CAIXA GERAL TOTTA DE ANGOLA",
                //     "ESTADO": "ARRUMADO",
                //     "LOCALIZAÇÃO": "ARM.ZANGO-9-2-5-4",
                //     "DOCUMENTOS": 4
                // ,
                // Pegar Id da caixa
                $vectorNovoIndividual=explode (':',$stringGerada);
                // dd($vectorNovoIndividual);
                $codigo=$vectorNovoIndividual[2];
                $codigo=explode(',',$codigo);
                // $PP=str_replace('"',"",$codigo[0]);
                $idCaixa=str_replace('"',"",$codigo[0]);;
                // dd($vectorNovoIndividual);
                // var_dump($idCaixa);
                
                
                
                // Pegar numero da caixa
                $codigo=$vectorNovoIndividual[3];
                $codigo=explode(',',$codigo);
                $numeroCaixa=0;
                $numeroCaixa=str_replace('"',"",$codigo[0]);
                $numeroCaixa=explode('/',$numeroCaixa);
                // var_dump($vectorNovoIndividual);
                // var_dump($numeroCaixa[0]);
                $numCaixa=$numeroCaixa[0] ;
                // echo $numCaixa;
                // dd($numCaixa);
                
                // Pegar numero do cliente
                $codigo=$vectorNovoIndividual[3];
                $codigo=explode(',',$codigo);
                $numeroCliente=$codigo[1];
                $numeroCliente=str_replace('"',"",$numeroCliente);
                $numeroCliente=explode('-',$numeroCliente);
                // var_dump( $codigo);
                $numCLi=$numeroCliente[0];
                // dd($numCLi);
                
                
                
                // Pegar departamento
                $codigo=$vectorNovoIndividual[4];
                $codigo=explode(',',$codigo);
                $departamento=$codigo[1];
                $departamento=str_replace('"',"",$departamento);
                //  dd($departamento);
                 
                // Pega estado
                $estCx="";
                $codigo=$vectorNovoIndividual[6];
                $codigo=explode(',',$codigo);
                $estCx=$codigo[0];
                $estCx=str_replace('"',"",$estCx); 
                $estCx=str_replace(']',"",$estCx);
                $estCx=str_replace('[',"",$estCx);
                // echo "<br>Caixa".$numCaixa."Estado:".$estCx."<br>";
                //  var_dump($vectorNovoIndividual[6]);
                 
                 
                // Pegar Localização
                $codigo=$vectorNovoIndividual[6];
                $codigo=explode(',',$codigo);
                $localizacao=array();
                if (count($codigo)==1){
                    
                }else{
                    
                
                    $localizacao=$codigo[1];
                    $localizacao=explode('-',$localizacao);
                }
                
                // var_dump(count($localizacao));
                $loc=0;
                if(count($localizacao)==5){
                    
                    $corredorJson=0;
                    $corredorJson=$localizacao[1];
                    $moduloJson=$localizacao[2];
                    // dd($moduloJson);
                    $fileiraJson=$localizacao[3];
                    $celulaJson=$localizacao[4];
                    $celulaJson=str_replace('"',"",$celulaJson);
                }else{
                    
                    $loc=-1;
                    // dd("A caixa:".$numCaixa." não tem localização");
                    
                }
                
              
                
                
                
                
                
                
                $existenciabox=0;
                
                
                
                foreach($caxas as $cx){
                    if ($cx==$numCaixa){
                        $existenciabox++;
                        // dd($numCaixa);
                    }
                }
                if($existenciabox==0){
                    array_push($caxas, $numCaixa);
                    array_push($idcx, $idCaixa);
                    array_push($numscli, $numCLi);
                    array_push($departamentosarr, $departamento);
                    array_push($estadosCx, $estCx);
                    //  echo "<br>Caixa denovo".$numCaixa."Estado denovo:".$estCx."<br>";
                    if(count($localizacao)==5){
                        
                        array_push($corrarr, $corredorJson);
                        array_push($modarr, $moduloJson);
                        array_push($celarr, $celulaJson);
                        array_push($filarr, $fileiraJson);
                    }
                    
                    // echo $numCaixa;
                }
                
              
              
                
                 
                
            }
            $realQtd=count($caxas);
            // dd($estadosCx);
            $histCx= new HistoricoCaixa();

            for($i=0;$i<$realQtd;$i++){
                  
                $idCaixa=$idcx[$i];
                // dd($idCaixa);
                $numCaixa=$caxas[$i] ;
                $numCLi=$numscli[$i];
                $estadoCaixa=$estadosCx[$i];
                $estadodacaixa="";
                
                $departamento=$departamentosarr[$i];
                // $corredorJson=$corrarr[$i];
                // $moduloJson=$modarr[$i];
                // $celulaJson=$celarr[$i];
                // $fileiraJson=$filarr[$i];
              
                $cliente = new Cliente();
                
                
                $cli=$cliente::where('numerocliente',$numCLi)->first();
                if($cli){
                    $histCx->create(['caixa_id'=>$idCaixa,'acontecimento'=>'Caixa importada no sistema','usuario_id'=>Auth::id()]);
                    
                    $dep= new DepCliente();
                    $clienteId=$cli->id;
                    $depart=$dep::where('departamento',$departamento)->first();
                    $idDep=0;
                    if($depart){
                        $idDep=$depart->id;
                    }else{
                        
                        $dep->departamento=$departamento;
                        $dep->cliente_id=$clienteId;
                        $dep->usuario_id=Auth::id();
                        $dep->save();
                        $idDep=$dep->id;
                    }
                   
                   
                   
                    
                    //Processo:
                    //Reserva
                    //Caixa
                    //Checkin
                    //Arrumação
                    
                    
                    // RESERVA
    
                    
                    $reserva = new Reserva();
                    
                    
                    
                    $res=$reserva::where('cliente_id',$clienteId)->where('departamento_id',$idDep)->where('quantcaixas',$realQtd)->first();
                    $resId=0;
                    $histCx->create(['caixa_id'=>$idCaixa,'acontecimento'=>'Reservando a caixa','usuario_id'=>Auth::id()]);
                    
                    if($res){
                        $resId=$res->id;    
                    }else{
                        
                        $reserva->cliente_id=$clienteId;
                        $reserva->departamento_id=$idDep;
                        $reserva->quantcaixas=$realQtd;
                        // $reserva->confcaixa_id=$request->configCaixa_id;
                        $reserva->armazem_id=$request->armazem;
                        $reserva->usuario_id=Auth::id();
                        $reserva->save();
                        
                        $resId=$reserva->id;
                    }
                    
                    
                    
                    // CAIXAS
                    
                    $numerosCaixaObj=$qtd;
                    $caixa=new Caixa(); 
                    $cx=$caixa::where('reserva_id',$resId)->where('estado','Destruído')->where('idantigo',$idCaixa)->where('numerodacaixa',$numCaixa)->first();
                    $idNovoCx=0;
                    if($cx){
                        $cx->delete();
                        $idNovoCx=$cx->id;
                    } else{
                        
                        $etiqueta = new Etiqueta();
                        $caixa->create(['reserva_id'=> $resId,'estado'=>'Destruído','idantigo'=>$idCaixa,'numerodacaixa'=>$numCaixa ,'usuario_id'=>Auth::id()]);
                        $histCx->create(['caixa_id'=>$idCaixa,'acontecimento'=>'Caixa inserida no sistema','usuario_id'=>Auth::id()]); 
                        $cax=$caixa::latest()->first();
                        $idNovoCx=$cax->id;
                        $etiqueta->create(['numerobarcode'=>$idCaixa,'caixa_id'=>$idNovoCx,'usuario_id'=>Auth::id()]);
                    }
                     
                     
                     
                
                    // ARRUMAÇÃO
                    $estadoCaixa=2;
                    if ($estadoCaixa==1){
                        
                        
                      
                        $arrumacao = new ArrumacaoModel();
                        
                       
                        // $fileiraJson
                        // 
                        $histCx->create(['caixa_id'=>$idCaixa,'acontecimento'=>'Arrumando a caixa','usuario_id'=>Auth::id()]);
                        $corred= new Corredor();
                        $armz =ArmazemModel::where('id',$request->armazem)->first();
                        $crr= $corred::where('armazem_id',$request->armazem)->where('numerocorredor',$corredorJson)->first();
                        if ($crr){
                        //  echo "\n<br>Corredor".$crr->id;
                         
                            
                            $modulo=new Modulo();
                            
                            $mdl=$modulo::where('corredor_id',$crr->id)->where('numeromodulo',$moduloJson)->first();
                            
                            if($mdl){
                                //  echo "\n<br>Modulo".$mdl->id;
                                 
                                 
                                  
                                $cell= new Celula();
                                $cel=$cell::where('modulo_id',$mdl->id)->where('nivel',$celulaJson)->first();
                                
    
                                
                                if($cel){
                                    
                                    // echo "\n<br>Celula".$cel->id;
                                    
                                    
                                    
                                    $fileir= new Fileira();
                                    
                                    $fil= $fileir::where('celula_id',$cel->id)->where('numerofila',$fileiraJson)->first();
                                    if ($fil){
                                    // echo "\n<br>Fileira".$fil->id;
                                    
                                          
                                        $filId=$fil->id;
                                        $arr=$arrumacao::where('fila_id',$filId)->where('caixa_id',$idNovoCx)->first();
                                        
                                        if($arr){
                                            
                                            $arr->delete();
                                            
                                        }
                                            //  $arrumacao->create(['caixa_id'=> $idNovoCx,'fila_id'=>$filId,'usuario_id'=>Auth::id()]);
                                        
                                        $arrumacao->caixa_id=$idNovoCx;
                                        $arrumacao->fila_id=$filId;
                                        $arrumacao->usuario_id=Auth::id();
                                        $arrumacao->save(); 
                                           
                                        
                                       $histCx->create(['caixa_id'=>$idCaixa,'acontecimento'=>'Caixa arrumada com sucesso com a localização:'.$armz->nomearmazem.'-'.$crr.'-'.$mdl.'-'.$fil.'-'.$cel,'usuario_id'=>Auth::id()]);
                    
                                      
                                        $sucesso++;
                                    }else{
                                        
                                        return "Alguma fileira não deve ter sido obtida correctamente, verifique na linha $i do seu excel";
                                   
                                    }
                                    
                                }else{
                                    
                                    return "Alguma célula não deve ter sido obtida correctamente, verifique na linha $i do seu excel";
                                    
                                }
                            }else{
                                 return "Algum módulo não deve ter sido obtido correctamente, verifique na linha $i do seu excel";
                            }
                           
                         
                         
                         
                        }else{
                            return "Algum corredor não deve ter sido obtido correctamente, verifique na linha $i do seu excel";
                        }
                       
                        // echo "\n<br>______________";
                    
                    }
                     
                    
                      
                }else{
                    return "Não foi possível encontrar um cliente com este código";
                }
            
                 
                
            }
        //   var_dump($caxas);
        //   var_dump($idcx);
        //     var_dump($numscli);
        //   var_dump($departamentosarr);
        //   var_dump($corrarr);
        //   var_dump($modarr);
        //     var_dump($celarr);
        //   var_dump($filarr);
            // if($sucesso>0){
            //     return 1;
            // }else{
            //     return 0;
            // }
                return $sucesso;
        }
        
        public function compEtiqCorredor(Request $request){
            
            $etiquetas = array($request->json);
            $corredorEx= new Corredor();
            $fileiras= new Fileira();
            $Modulo = new Modulo();
            $celulaCad = new Celula();
            $etiquetasFilas= new EtiquetaFileira();
            $corredor= $corredorEx::where('id',$request->idCorredor)->first();
            $vector= explode('{',$etiquetas[0]);
            $etq = count($vector);
            $etiquetasSalvas=0;
            $i=0;
            // dd ($etiquetasFilas::get());
            for($i=1;$i<$etq;$i++){
                $stringGerada=str_replace('}', "", $vector[$i]);
                
                // Converter string completa para um vector
                // Ex de string gerada:"__EMPTY": "PP0000335329", "C-M-F-N": "1-1-1-1", "C-M-N-F": "1-1-1-1" ,
                $vectorNovoIndividual=explode (':',$stringGerada);
                
                // Ex de array gerado array(4) { [0]=> string(18) " "__EMPTY"" [1]=> string(34) " "PP0000335329", "C-M-F-N"" [2]=> string(29) " "1-1-1-1", "C-M-N-F"" [3]=> string(21) " "1-1-1-1" , " }
                
                 
                 
                //  Retorno do novo vector individual, a intenção é pegar o id e o código da localização
                // "__EMPTY"
                // "PP0000335329", "C-M-F-N"
                // "1-1-1-1", "C-M-N-F"
                // "1-1-1-1" ,
                
                $codigo=$vectorNovoIndividual[1];
                $codigo=explode(',',$codigo);
                $PP=str_replace('"',"",$codigo[0]);
                // echo $PP ;
                 
                
                $localizacao=$vectorNovoIndividual[3];
                // Exemplo de localização  "1-1-1-1" ,
                // remoção da virgula que compoe a string
                $localizacao=str_replace(',', "", $localizacao);
                // Exemplo de resultado "1-1-1-1"
                // remoção das aspas que compoem a string
                $localizacao=str_replace('"', "", $localizacao);
                $localizacao=str_replace(']', "", $localizacao);
                // echo $localizacao;
                // Gerar vector de localização
                $localizacao = explode('-',$localizacao);
                
          
                // echo $PP;
                // echo "<br>Corredor arquivo:".$localizacao[0];
                // echo "<br>Corredor local:".$corredor->numerocorredor;
                // echo "<br>Modulo:".$localizacao[1];
                // echo "<br>Celula:".$localizacao[2]; 
                // echo "<br>Fileira:".$localizacao[3]; 
                
                if($localizacao[0]==$corredor->numerocorredor){
                //   $etiquetasFilas
                  $idFila=0;
                    $mod=$Modulo::where('corredor_id',$corredor->id)->where('numeromodulo',$localizacao[1])->first();
                     
                    if($mod){
                        
                        $cel=$celulaCad::where('modulo_id',$mod->id)->where('nivel',$localizacao[2])->first();
                   
                        if($cel){
                            
                            $fil=$fileiras::where('celula_id',$cel->id)->where('numerofila',$localizacao[3])->first();
                            // dd($fil);
                            if ($fil){
                                
                                // echo "<br>Id da fileira:"; 
                                // echo $fil->id;
                             
                                // echo "<br> Barcode:";
                                $barcode= $PP;
                                $bcLen=strlen($barcode);
                                // echo $bcLen;
                                
                                $bc=substr($barcode,3,$bcLen-1);
                                // echo $bc;
                                // $fileiras::where('id',)->first();
                                $existentyEtiquetas=$etiquetasFilas::where('fileira_id',$fil->id)->get();
                                if ($existentyEtiquetas){
                                    foreach($existentyEtiquetas as $etExis){
                                        $etExis->delete();
                                    }
                                }
                                $etiquetasFilas->create(['numerobarcode'=>$bc,'fileira_id'=>$fil->id,'usuario_id'=>Auth::id()]);
                                $etiquetasSalvas++;
                            }
                        }
                    }
               
            }
                
            }
            
            if($etiquetasSalvas>0)
                return $etiquetasSalvas;
            else
                return 0;
        }
        public function imprimirEtiquetas(Request $request){
            $etiquetasFilas= new EtiquetaFileira();
            $fileirasIDs=$request->idFileiras;
            $textoEtiqueta=" ";
            $count = count($fileirasIDs);
            $numeroFila=0;
            $codigoBar=0;
            //dd($fileirasIDs);
            for($i=0;$i<$count;$i++){
                
                $verifEt=$etiquetasFilas::where('fileira_id',$fileirasIDs[$i])->first();
                
                //var_dump($verifEt);
                if($verifEt){
                    
                    $fila= Fileira::where('id',$verifEt->fileira_id)->first();
                    //dd($fila);
                    
                    $textoEtiqueta .= "\n\n^XA";
                    $textoEtiqueta .= "\n\n^FO200,30^GFA,3744,3744,26,,::::::::::::gW01C,gW063,gW0818,gV013C8,gV01244,T0gFC013C4,T0gFC01284,T0gFC01248,T0gFC01A68,T0gFC00C1,T0gFC007E,T0gFC,:::::::::::::J07O0FFE01IFJ07FC01IFC0038K01C,I03FEI03IF8FF800IFJ03FCI0FFC01FFJ01FF8,I07FFI03IF8FFI07FFJ03FCI07FC03FF8I03FFC,I0IF8003IF8FFI03FFJ03FCI03FC07FFCI07FFE,001IF8003IF8FEI03FFJ03FCI01FC0IFEI07IF,001IFC003IF8FEI01FFJ03FCI01FC0IFEI0JF,003F9FC003IF8FE0201FFJ03FCI01FC1FEFFI0FE7F,003F0FC003FI0FC0301FFJ07FC0600FC1F83FI0FC3F,003F0FC003FI0FC0701IF80IFC0700FC1F83FI0FC1F8,003F07C003FI0FC0701IF80IFC0700FC1F83FI0FC1F8,003F07C003FI0FC0381IF80IFC0700FC1F83FI0F81F8,003FK03FI0FE01KF80IFC0780FC1F83F001F81F8,003FK03FI0FE00KF80IFC0780FC1F83F001F8,003FK03IF0FE003JF80IFC0780FC1F83F001F8,003FK03IF0FF001JF80IFC0780FC1F83F001F8,003FK03IF0FFI0JF80IFC0780FC1F83F001F8,003F3FC003IF0FF8007IF80IFC0780FC1F83F001F8,003F3FC003IF0FFC003IF80IFC0780FC1F83F001F8,003F3FC003IF0FFE003IF80IFC0780FC1F83F001F8,003F3FC003FI0IF001IF80IFC0780FC1F83F001F8,003F3FC003FI0IFC01IF80IFC0780FC1F83F001F8,003F07C003FI0FE0E01IF80IFC0780FC1F83F001F81F8,003F07C003FI0FC0701IF80IFC0780FC1F83F001F81F8,003F07C003FI0FC0701IF80IFC0700FC1F83FI0FC1F8,:003F0FC003FI0FC0701IF80IFC0700FC1F83FI0FC1F8,003F8FC003IF8FC0301IF80IFCI01FC1FC7FI0FC3F,001IFC003IF8FCI01IF80IFCI01FC1JFI0JF,001IFC003IF8FEI01IF80IFCI01FC0IFEI0JF,001IFC003IF8FEI03IF80IFCI03FC0IFEI07FFE,I0IFC003IF8FFI03IF80IFCI03FC07FFCI03FFE,I07FBC003IF8FFI07IF80IFCI07FC03FF8I01FFC,I01EO0FFC00JF80IFC001FFC00FEK0FF,T0IF07UFC,T0gFC,:::::::::::::::::::::::::::::::::::::,::::::M0FN04,L031CK0808K01J01CM04,L0604K08M01J01C,L0406K08M01J016,L0C003F1F3C7C3F007F1F80320E3F9044823F1F8,L0C00219088C62180C31080220C619044C261108,L083E6190080260808130C023084190I46409,L0C02619E081E40808130C063084090K409E,L0C02600388E24080813I07F884090442440838,L04066I0I826080813I0C1884198442C40808,L06062130I862080C33080C0886198443861908,L039A3B198CDE3B007F1D8080C8378DC41837198,M0E00C0E00210E003006L01882J01C06,gS08,::,::::::::::^FS ";
                    $textoEtiqueta .= "\n\n^CF0,30";
                    // textoEtiqueta += "\n\n^FO10,90^FDBase:{{ $base->base }}.^FS";
                    $textoEtiqueta .= "\n\n^FO10,30^FDArmazem:".$request->armazem."^FS";
                    $textoEtiqueta .= "\n\n^FO10,60^FDCorredor:".$request->corredor."^FS";
                    $textoEtiqueta .= "\n\n^FO10,90^FDModulo:".$request->modulo."^FS";
                    $textoEtiqueta .= "\n\n^FO10,120^FDCelula:".$request->celula."^FS";
                    $textoEtiqueta .= "\n\n^FO10,150^FDFila:".$fila->numerofila."^FS";
                    $textoEtiqueta .= "\n\n^FO10,180^GB700,3,3^FS";
                    $textoEtiqueta .= "\n\n^BY2,3,40";
                    $textoEtiqueta .= "\n\n^FO10,210^BC^FDPP0000".$verifEt->numerobarcode."^FS";
                    // textoEtiqueta += "\n\n^FO10,240^FDPP0000:"+codigo+".^FS";
                    $textoEtiqueta .= "\n\n^XZ";
                    $textoEtiqueta .= "\n\n \n\n \n\n \n\n \n\n ";
                }
            }
            
            return $textoEtiqueta;
            
        }
        public function compEtiquetas(Request $request){
             $etiquetasFilas= new EtiquetaFileira();
             $fileiras= new Fileira();
             
             $codigo=$request->codigo;
             $fileira=$fileiras::where('id',$request->fileira)->first();
            
            $etiqExistente=$etiquetasFilas::where('fileira_id',$fileira->id)->first();
            if($etiqExistente)
            $etiqExistente->delete();
            
            $etiqExistente2=$etiquetasFilas::where('numerobarcode',$codigo)->first();
            if($etiqExistente2)
            $etiqExistente2->delete();
            
             $etiquetasFilas->numerobarcode=$codigo;
             $etiquetasFilas->fileira_id=$fileira->id;
             $etiquetasFilas->usuario_id=Auth::id();
             $etiquetasFilas->save();
             return 1;
        }
        public function configCorredorExcel(Request $request){

            $Modulo = new Modulo();
            $configuracaomodulos= new configuracaoModulo();
            $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=configuracaoModulo::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;
                    //   $idConfiguracaoModulo=1;
                }
                // 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();
               $nFileiras=0;
            //   echo "<br>";
            //   echo"_____________________";
               
            //   echo "Numero de niveis:".$numNiveis;
                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;
                    $celulaNivel=$celulaCad::where('nivel',$j)->where('modulo_id',$moduloId->id)->first();
                    
                    if($celulaNivel==null){
                         
                        $celulaCad->create(['nivel'=>$j,'modulo_id'=>$moduloId->id,'alturam'=>$alturam,'alturacm'=>$alturacm]);
                        $celulaId=$celulaCad::latest()->first();
                    }else{
                        $celulaId=$celulaNivel;
                    }
                    
                    $espacosCaixa->create(['espacoscaixa'=>$dados[0]*$dados[1]*$dados[2],'celula_id'=>$celulaId->id]);
                    $nFileiras+=$dados[0];
                    for ($k=0; $k <$dados[0] ; $k++) {
                        $fil=$fileiras::where('celula_id',$celulaId->id)->where('numerofila',$k)->first();
                        if($fil==null){
                            
                            $fileiras->create(['celula_id'=>$celulaId->id,'numerofila'=>$k]);
                        }
                        
                    }
                    

                }
                    $numCelulas=$celulaCad::where('modulo_id',$moduloId->id)->count();
                    // echo "<br>Numero de módulos:".$i;
                    //  echo "<br>Id do módulo:".$moduloId->id;
                    // echo "<br>Numero de célula:".$numCelulas;
                    // echo "<br>Numero de fileiras".$nFileiras;
                    //   echo "<br>";



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