app/Http/Controllers/FrequenciaController.php
/**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
Display a listing of the resource.
@return \Illuminate\Http\Response
Display a listing of the resource . @return \ Illuminate \ Http \ Response
public function index(Request $request)
    {
        $mesAnoFrequencia = '05/2021';
        $mesFrequencia = 5;
        $anoFrequencia = 2021;
        $ultimaLotacao = 222;
        if ($request->session()->has('unidadeId')) {
            $request->session()->put('unidadeId', $ultimaLotacao);
        } else {
            $request->session()->put('unidadeId', $ultimaLotacao);
        }
        $lotacaoId = $request->session()->get('unidadeId');
        $pessoasLotadas = DB::connection('mysql_rh')->table('lotacoes')
        ->where(function ($query) {
            $query->whereMonth('a_partir_de_ini','<=', 5)
                  ->whereYear('a_partir_de_ini','<=',2021);
                })
            ->where(function ($query2) {
                $query2->where(function ($query2){
                    $query2->whereMonth('a_partir_de_fim','>=', 5)
                    ->whereYear('a_partir_de_fim','>=', 2021);
                });
                  $query2->orWhere(function ($query3){
                    $query3->whereNull('a_partir_de_fim');
                });
                  ;
                })
                ->where('unidade_id', $ultimaLotacao)
                ->leftJoin('pessoas', 'pessoas.id', '=', 'lotacoes.pessoa_id')
                ->orderBy('pessoas.nome')
                ->get();
                $listaPessoasDias = array();
                foreach ($pessoasLotadas as $pessoaLotada ) {
                    $ini = $pessoaLotada->a_partir_de_ini;
                    $fim = $pessoaLotada->a_partir_de_fim;
                    $exercico = $pessoaLotada->exercicio_ini;
                    if(
                        (int)date('Y', strtotime($pessoaLotada->a_partir_de_ini)) < $mesFrequencia
                        ||
                        ((int)date('Y', strtotime($pessoaLotada->a_partir_de_ini)) == $anoFrequencia && (int)date('m', strtotime($pessoaLotada->a_partir_de_ini)) < $mesFrequencia )
                      )
                    {
                        $ini = date($anoFrequencia . '-' . $mesFrequencia  . '-01');
                    }
                    if(
                        (int)date('Y', strtotime($pessoaLotada->a_partir_de_fim)) > $anoFrequencia
                        ||
                         ((int)date('Y', strtotime($pessoaLotada->a_partir_de_fim)) == $anoFrequencia
                         &&
                         (int)date('m', strtotime($pessoaLotada->a_partir_de_fim)) > $mesFrequencia )
                        ||
                        $pessoaLotada->a_partir_de_fim == null
                      )
                    {
                        $fim = date($anoFrequencia . '-' . $mesFrequencia . '-' . date('t', strtotime($ini))  );
                    }
                    $first = $ini ;
                    $last = $fim ;
                    $step = '+1 day';
                    $output_format = 'Y-m-d' ;
                    $dates = array();
                    $current = strtotime($first);
                    $last = strtotime($last);
                    $dias = array();
                    while( $current <= $last ) {
                        $dates[] = date($output_format, $current);
                        $current = strtotime($step, $current);
                    }
                    $listaPessoasDias[] = ["pessoa_id" => $pessoaLotada->pessoa_id, "dias" => $dates];
                }
                $ultima = 0;
                $listaPessoasPeriodo[] = array();
                $diasUsuario =  array();
                $i = count($listaPessoasDias);
                foreach ($listaPessoasDias as $pessoaDias) {
                    $next = !!(--$i);
                    if($ultima == 0 )
                    {
                        $diasUsuario = $pessoaDias["dias"];
                        if ($next) {
                        }else
                        {
                            $listaPessoasPeriodo[] = ['pessoa_id' => $pessoaDias['pessoa_id'] ,'dias' => $pessoaDias["dias"]];
                        }
                    }
                    else if($ultima == $pessoaDias['pessoa_id'])
                    {
                        $diasUsuario = array_merge( $diasUsuario, $pessoaDias["dias"]);
                        if ($next) {
                        }else
                        {
                            $listaPessoasPeriodo[]= ['pessoa_id' => $ultima, 'dias' => $diasUsuario];
                        }
                    } else
                    {
                        if ($next) {
                            $listaPessoasPeriodo[]= ['pessoa_id' => $ultima, 'dias' => $diasUsuario];
                        }else
                        {
                            $listaPessoasPeriodo[]= ['pessoa_id' => $ultima, 'dias' => $diasUsuario];
                            $listaPessoasPeriodo[]= ['pessoa_id' => $pessoaDias['pessoa_id'] ,'dias' => $pessoaDias["dias"]];
                        }
                    }
                    $ultima = $pessoaDias['pessoa_id'];
                }
        $frequencias = DB::connection('mysql_freq')->table('frequencias')
        ->whereIn('frequencias.pessoa_id', array_column($listaPessoasPeriodo,"pessoa_id"))
        ->select('frequencias.*', 'rh.pessoas.nome','rh.matriculas.matricula')
        ->leftJoin('rh.pessoas','pessoas.id','frequencias.pessoa_id')
        ->leftJoin('rh.matriculas','matriculas.pessoa_id','pessoas.id')
        ->get()
        ;
                $x = '';
                foreach ($listaPessoasPeriodo as $pessoaPeriodo) {
                    if(!empty($pessoaPeriodo)){
                        foreach ($frequencias as $frequencia) {
                            if(!empty($frequencia) && in_array($pessoaPeriodo['pessoa_id'], $frequencia))
                            {
                                $x += 'Contem: ' . $pessoaPeriodo['pessoa_id'] . '|';
                            }
                        }
                    }
                }
                dd($x);
        return view('frequencias.index',compact('frequencias', 'listaPessoasPeriodo',  'mesAnoFrequencia') );
    }
public function index ( Request $ request ) { $ mesAnoFrequencia = '05/2021' ; $ mesFrequencia = 5 ; $ anoFrequencia = 2021 ; $ ultimaLotacao = 222 ; if ( $ request -> session ( ) -> has ( 'unidadeId' ) ) { $ request -> session ( ) -> put ( 'unidadeId' , $ ultimaLotacao ) ; } else { $ request -> session ( ) -> put ( 'unidadeId' , $ ultimaLotacao ) ; } $ lotacaoId = $ request -> session ( ) -> get ( 'unidadeId' ) ; $ pessoasLotadas = DB :: connection ( 'mysql_rh' ) -> table ( 'lotacoes' ) -> where ( function ( $ query ) { $ query -> whereMonth ( 'a_partir_de_ini' , '<=' , 5 ) -> whereYear ( 'a_partir_de_ini' , '<=' , 2021 ) ; } ) -> where ( function ( $ query2 ) { $ query2 -> where ( function ( $ query2 ) { $ query2 -> whereMonth ( 'a_partir_de_fim' , '>=' , 5 ) -> whereYear ( 'a_partir_de_fim' , '>=' , 2021 ) ; } ) ; $ query2 -> orWhere ( function ( $ query3 ) { $ query3 -> whereNull ( 'a_partir_de_fim' ) ; } ) ; ; } ) -> where ( 'unidade_id' , $ ultimaLotacao ) -> leftJoin ( 'pessoas' , 'pessoas.id' , '=' , 'lotacoes.pessoa_id' ) -> orderBy ( 'pessoas.nome' ) -> get ( ) ; $ listaPessoasDias = array ( ) ; foreach ( $ pessoasLotadas as $ pessoaLotada ) { $ ini = $ pessoaLotada -> a_partir_de_ini ; $ fim = $ pessoaLotada -> a_partir_de_fim ; $ exercico = $ pessoaLotada -> exercicio_ini ; if ( ( int ) date ( 'Y' , strtotime ( $ pessoaLotada -> a_partir_de_ini ) ) < $ mesFrequencia || ( ( int ) date ( 'Y' , strtotime ( $ pessoaLotada -> a_partir_de_ini ) ) == $ anoFrequencia && ( int ) date ( 'm' , strtotime ( $ pessoaLotada -> a_partir_de_ini ) ) < $ mesFrequencia ) ) { $ ini = date ( $ anoFrequencia . '-' . $ mesFrequencia . '-01' ) ; } if ( ( int ) date ( 'Y' , strtotime ( $ pessoaLotada -> a_partir_de_fim ) ) > $ anoFrequencia || ( ( int ) date ( 'Y' , strtotime ( $ pessoaLotada -> a_partir_de_fim ) ) == $ anoFrequencia && ( int ) date ( 'm' , strtotime ( $ pessoaLotada -> a_partir_de_fim ) ) > $ mesFrequencia ) || $ pessoaLotada -> a_partir_de_fim == null ) { $ fim = date ( $ anoFrequencia . '-' . $ mesFrequencia . '-' . date ( 't' , strtotime ( $ ini ) ) ) ; } $ first = $ ini ; $ last = $ fim ; $ step = '+1 day' ; $ output_format = 'Y-m-d' ; $ dates = array ( ) ; $ current = strtotime ( $ first ) ; $ last = strtotime ( $ last ) ; $ dias = array ( ) ; while ( $ current <= $ last ) { $ dates [ ] = date ( $ output_format , $ current ) ; $ current = strtotime ( $ step , $ current ) ; } $ listaPessoasDias [ ] = [ " pessoa_id " => $ pessoaLotada -> pessoa_id , " dias " => $ dates ] ; } $ ultima = 0 ; $ listaPessoasPeriodo [ ] = array ( ) ; $ diasUsuario = array ( ) ; $ i = count ( $ listaPessoasDias ) ; foreach ( $ listaPessoasDias as $ pessoaDias ) { $ next = ! ! ( -- $ i ) ; if ( $ ultima == 0 ) { $ diasUsuario = $ pessoaDias [ " dias " ] ; if ( $ next ) { } else { $ listaPessoasPeriodo [ ] = [ 'pessoa_id' => $ pessoaDias [ 'pessoa_id' ] , 'dias' => $ pessoaDias [ " dias " ] ] ; } } else if ( $ ultima == $ pessoaDias [ 'pessoa_id' ] ) { $ diasUsuario = array_merge ( $ diasUsuario , $ pessoaDias [ " dias " ] ) ; if ( $ next ) { } else { $ listaPessoasPeriodo [ ] = [ 'pessoa_id' => $ ultima , 'dias' => $ diasUsuario ] ; } } else { if ( $ next ) { $ listaPessoasPeriodo [ ] = [ 'pessoa_id' => $ ultima , 'dias' => $ diasUsuario ] ; } else { $ listaPessoasPeriodo [ ] = [ 'pessoa_id' => $ ultima , 'dias' => $ diasUsuario ] ; $ listaPessoasPeriodo [ ] = [ 'pessoa_id' => $ pessoaDias [ 'pessoa_id' ] , 'dias' => $ pessoaDias [ " dias " ] ] ; } } $ ultima = $ pessoaDias [ 'pessoa_id' ] ; } $ frequencias = DB :: connection ( 'mysql_freq' ) -> table ( 'frequencias' ) -> whereIn ( 'frequencias.pessoa_id' , array_column ( $ listaPessoasPeriodo , " pessoa_id " ) ) -> select ( 'frequencias.*' , 'rh.pessoas.nome' , 'rh.matriculas.matricula' ) -> leftJoin ( 'rh.pessoas' , 'pessoas.id' , 'frequencias.pessoa_id' ) -> leftJoin ( 'rh.matriculas' , 'matriculas.pessoa_id' , 'pessoas.id' ) -> get ( ) ; $ x = '' ; foreach ( $ listaPessoasPeriodo as $ pessoaPeriodo ) { if ( ! empty ( $ pessoaPeriodo ) ) { foreach ( $ frequencias as $ frequencia ) { if ( ! empty ( $ frequencia ) && in_array ( $ pessoaPeriodo [ 'pessoa_id' ] , $ frequencia ) ) { $ x += 'Contem: ' . $ pessoaPeriodo [ 'pessoa_id' ] . '|' ; } } } } dd ( $ x ) ; return view ( 'frequencias.index' , compact ( 'frequencias' , 'listaPessoasPeriodo' , 'mesAnoFrequencia' ) ) ; }
Display a listing of the resource.
Display a listing of the resource .
//INFO-PROV: substituir por informações dinamicas //fim INFO-PROV // Verifica se existe a sessão // $lotacao = $request->session()->get('unidadeId'); //  dd($request->session()->get('unidadeId')); // dd($request->session()->has('unidadeId')); // dd($lotacao); /*
            CONSULTA TODAS PESSOAS QUE ESTÃO LOTADAS NO SETOR
          ** SETOR  INFORMADO
          ** MES/ANO INFORMADO
        */ // ->toSql(); //FOR-EACH PESSOASLOTADAS // dd($pessoaLotada ); // $pessoaLotada->a_partir_de_ini = "2021-04-03"; // dd($mesFrequencia); // dd(date('m', strtotime($pessoaLotada->a_partir_de_ini))); // dd(((int)date('m', strtotime($pessoaLotada->a_partir_de_ini)) < (int)$mesFrequencia )); // $anoFrequencia . '-' . $mesFrequencia . '-' . '01'; // dd($ini); // dd((date('m',$pessoaLotada->a_partir_de_fim) < $mesFrequencia )); // date('Y-m-t', strtotime($query_date)) // $anoFrequencia . '-' . $mesFrequencia . '-' . '01'; /*
                    ** TRANSFORMA O PERIODO DA LOTACAO EM ARRAY COM DIA-DIA DO PERIODO LOTADOS.
                    */ // $dias[] = date('d', strtotime($current)); //FIM FOR-EACH PESSOASLOTADAS /*
                ** TRANSFORMAR O ARRAY DE PESSOAS/DIAS PERIODO EM APENAS UM RESULTADO POR PESSOA
                */ # code... // $listaPessoasPeriodo[]= ['pessoa_id' => $ultima, 'dias' => $diasUsuario]; // dd($diasUsuario ); // dd($diasUsuario); //FIM TRANSFORMAR O ARRAY DE PESSOAS/DIAS PERIODO EM APENAS UM RESULTADO POR PESSOA // dd($listaPessoasDias); // dd($listaPessoasPeriodo ); // dd(array_column($listaPessoasPeriodo,"pessoa_id")); // dd(array_column($listaPessoasPeriodo,"pessoa_id")); // dd($frequencias); // dd($frequencias); # code... // dd($pessoaPeriodo['pessoa_id']);