periodo['start'])->format('Y-m-d'); $endDate = Carbon::createFromFormat('d/m/Y', request()->periodo['end'])->format('Y-m-d'); return DB::table('administracao_papel_permissao_historico') ->select([ 'administracao_papel_permissao_historico.created_at AS historico_data_hora', 'administracao_papel.nome AS papel_nome', 'administracao_modulo.nome AS modulo_nome', 'administracao_funcionalidade.nome AS funcionalidade_nome', 'administracao_crud_acao.nome AS crud_acao_nome', 'administracao_historico_acao.nome AS acao_nome', 'cadastro_cidadao_responsavel.nome AS usuario_responsavel_nome', ]) ->join('administracao_papel', 'administracao_papel.id', 'administracao_papel_permissao_historico.papel_id') ->join('administracao_permissao', 'administracao_permissao.id', 'administracao_papel_permissao_historico.permissao_id') ->join('administracao_funcionalidade', 'administracao_funcionalidade.id', 'administracao_permissao.funcionalidade_id') ->join('administracao_modulo', 'administracao_modulo.id', 'administracao_funcionalidade.modulo_id') ->join('administracao_crud_acao', 'administracao_crud_acao.id', 'administracao_permissao.crud_acao_id') ->join('administracao_historico_acao', 'administracao_historico_acao.id', 'administracao_papel_permissao_historico.acao_id') ->leftJoin('cadastro_lotacao AS cadastro_lotacao_responsavel', 'cadastro_lotacao_responsavel.id', 'administracao_papel_permissao_historico.created_lotacao_id') ->leftJoin('cadastro_usuario AS cadastro_usuario_responsavel', 'cadastro_usuario_responsavel.id', 'cadastro_lotacao_responsavel.usuario_id') ->leftJoin('cadastro_cidadao AS cadastro_cidadao_responsavel', 'cadastro_cidadao_responsavel.id', 'cadastro_usuario_responsavel.cidadao_id') ->whereRaw("CAST(administracao_papel_permissao_historico.created_at AS DATE) >= '" . $startDate . "'") ->whereRaw("CAST(administracao_papel_permissao_historico.created_at AS DATE) <= '" . $endDate . "'") ->when(request()->papel_id, fn ($query) => $query->where('administracao_papel.id', request()->papel_id)) ->when(request()->modulo_id, fn ($query) => $query->where('administracao_modulo.id', request()->modulo_id)) ->when(request()->funcionalidade_id, fn ($query) => $query->where('administracao_funcionalidade.id', request()->funcionalidade_id)) ->when(request()->crud_acao_id, fn ($query) => $query->where('administracao_crud_acao.id', request()->crud_acao_id)) ->when(request()->acao_id, fn ($query) => $query->where('administracao_historico_acao.id', request()->acao_id)) ->when(request()->usuario_responsavel_id, fn ($query) => $query->where('cadastro_usuario_responsavel.id', request()->usuario_responsavel_id)) ->get(); } public static function create() { return [ 'additionals' => self::getAdditionals(), 'form' => self::getForm(), 'model' => self::getModel(), ]; } public static function list() { switch (request()->get('listar')) { case 'papeis': return [ 'papeis' => self::getPapeis(), 'modulos' => self::getModulos(), 'funcionalidades' => self::getFuncionalidades(), 'crud_acoes' => self::getCrudAcoes(), 'acoes' => self::getAcoes(), ]; break; case 'modulos': return [ 'modulos' => self::getModulos(), 'funcionalidades' => self::getFuncionalidades(), 'crud_acoes' => self::getCrudAcoes(), 'acoes' => self::getAcoes(), ]; break; case 'funcionalidades': return [ 'funcionalidades' => self::getFuncionalidades(), 'crud_acoes' => self::getCrudAcoes(), 'acoes' => self::getAcoes(), ]; break; case 'crud-acoes': return [ 'crud_acoes' => self::getCrudAcoes(), 'acoes' => self::getAcoes(), ]; break; case 'acoes': return [ 'acoes' => self::getAcoes(), ]; break; } } public static function autocompleteUsuarioResponsavel() { return DB::table('cadastro_usuario') ->select([ 'cadastro_usuario.id', 'cadastro_cidadao.nome', ]) ->join('cadastro_cidadao', 'cadastro_cidadao.id', 'cadastro_usuario.cidadao_id') ->whereExists(function ($query) { $startDate = Carbon::createFromFormat('d/m/Y', request()->periodo['start'])->format('Y-m-d'); $endDate = Carbon::createFromFormat('d/m/Y', request()->periodo['end'])->format('Y-m-d'); $query->select(DB::raw(1)) ->from('administracao_papel_permissao_historico') ->join('cadastro_lotacao AS cadastro_lotacao_responsavel', 'cadastro_lotacao_responsavel.id', 'administracao_papel_permissao_historico.created_lotacao_id') ->join('administracao_permissao', 'administracao_permissao.id', 'administracao_papel_permissao_historico.permissao_id') ->join('administracao_funcionalidade', 'administracao_funcionalidade.id', 'administracao_permissao.funcionalidade_id') ->whereRaw("CAST(administracao_papel_permissao_historico.created_at AS DATE) >= '" . $startDate . "'") ->whereRaw("CAST(administracao_papel_permissao_historico.created_at AS DATE) <= '" . $endDate . "'") ->when(request()->papel_id, fn ($query) => $query->where('administracao_papel_permissao_historico.papel_id', request()->papel_id)) ->when(request()->modulo_id, fn ($query) => $query->where('administracao_funcionalidade.modulo_id', request()->modulo_id)) ->when(request()->funcionalidade_id, fn ($query) => $query->where('administracao_permissao.funcionalidade_id', request()->funcionalidade_id)) ->when(request()->crud_acao_id, fn ($query) => $query->where('administracao_permissao.crud_acao_id', request()->crud_acao_id)) ->when(request()->acao_id, fn ($query) => $query->where('administracao_papel_permissao_historico.acao_id', request()->acao_id)) ->whereColumn('cadastro_lotacao_responsavel.usuario_id', 'cadastro_usuario.id'); }); } public static function getPrintData() { $papel = Papel::find(request()->papel_id); $modulo = Modulo::find(request()->modulo_id); $funcionalidade = Funcionalidade::find(request()->funcionalidade_id); $crudAcao = CrudAcao::find(request()->crud_acao_id); $historicoAcao = HistoricoAcao::find(request()->acao_id); $usuarioResponsavel = Usuario::find(request()->usuario_responsavel['id']); return [ 'start_date' => request()->periodo['start'], 'end_date' => request()->periodo['end'], 'papel_nome' => $papel->nome ?? 'Todos', 'modulo_nome' => $modulo->nome ?? 'Todos', 'funcionalidade_nome' => $funcionalidade->nome ?? 'Todas', 'crud_acao_nome' => $crudAcao->nome ?? 'Todas', 'historico_acao_nome' => $historicoAcao->nome ?? 'Todas', 'usuario_responsavel_nome' => $usuarioResponsavel->cidadao->nome ?? 'Todos', 'columns' => collect(request()->get('selected_columns')), 'itens' => self::index(), ]; } private static function getAdditionals() { return [ 'data_atual' => Carbon::now()->format('d/m/Y'), ]; } private static function getForm() { return [ 'papeis' => [], 'modulos' => [], 'funcionalidades' => [], 'crud_acoes' => [], 'acoes' => [], ]; } private static function getModel() { return [ 'periodo' => [ 'start' => null, 'end' => null, ], 'papel_id' => null, 'modulo_id' => null, 'funcionalidade_id' => null, 'crud_acao_id' => null, 'acao_id' => null, 'usuario_responsavel' => [ 'id' => null, 'nome' => null, ], ]; } private static function getPapeis() { return DB::table('administracao_papel') ->select([ 'administracao_papel.id', 'administracao_papel.nome', ]) ->whereExists(function ($query) { $startDate = Carbon::createFromFormat('d/m/Y', request()->periodo['start'])->format('Y-m-d'); $endDate = Carbon::createFromFormat('d/m/Y', request()->periodo['end'])->format('Y-m-d'); $query->select(DB::raw(1)) ->from('administracao_papel_permissao_historico') ->whereRaw("CAST(administracao_papel_permissao_historico.created_at AS DATE) >= '" . $startDate . "'") ->whereRaw("CAST(administracao_papel_permissao_historico.created_at AS DATE) <= '" . $endDate . "'") ->whereColumn('administracao_papel_permissao_historico.papel_id', 'administracao_papel.id'); }) ->orderBy('administracao_papel.nome') ->get(); } private static function getModulos() { return DB::table('administracao_modulo') ->select([ 'administracao_modulo.id', 'administracao_modulo.nome', ]) ->whereExists(function ($query) { $startDate = Carbon::createFromFormat('d/m/Y', request()->periodo['start'])->format('Y-m-d'); $endDate = Carbon::createFromFormat('d/m/Y', request()->periodo['end'])->format('Y-m-d'); $query->select(DB::raw(1)) ->from('administracao_papel_permissao_historico') ->join('administracao_permissao', 'administracao_permissao.id', 'administracao_papel_permissao_historico.permissao_id') ->join('administracao_funcionalidade', 'administracao_funcionalidade.id', 'administracao_permissao.funcionalidade_id') ->whereRaw("CAST(administracao_papel_permissao_historico.created_at AS DATE) >= '" . $startDate . "'") ->whereRaw("CAST(administracao_papel_permissao_historico.created_at AS DATE) <= '" . $endDate . "'") ->when(request()->papel_id, fn ($query) => $query->where('administracao_papel_permissao_historico.papel_id', request()->papel_id)) ->whereColumn('administracao_funcionalidade.modulo_id', 'administracao_modulo.id'); }) ->orderBy('administracao_modulo.nome') ->get(); } private static function getFuncionalidades() { return DB::table('administracao_funcionalidade') ->select([ 'administracao_funcionalidade.id', 'administracao_funcionalidade.nome', ]) ->whereExists(function ($query) { $startDate = Carbon::createFromFormat('d/m/Y', request()->periodo['start'])->format('Y-m-d'); $endDate = Carbon::createFromFormat('d/m/Y', request()->periodo['end'])->format('Y-m-d'); $query->select(DB::raw(1)) ->from('administracao_papel_permissao_historico') ->join('administracao_permissao', 'administracao_permissao.id', 'administracao_papel_permissao_historico.permissao_id') ->whereRaw("CAST(administracao_papel_permissao_historico.created_at AS DATE) >= '" . $startDate . "'") ->whereRaw("CAST(administracao_papel_permissao_historico.created_at AS DATE) <= '" . $endDate . "'") ->when(request()->papel_id, fn ($query) => $query->where('administracao_papel_permissao_historico.papel_id', request()->papel_id)) ->whereColumn('administracao_permissao.funcionalidade_id', 'administracao_funcionalidade.id'); }) ->when(request()->modulo_id, fn ($query) => $query->where('administracao_funcionalidade.modulo_id', request()->modulo_id)) ->orderBy('administracao_funcionalidade.nome') ->get(); } private static function getCrudAcoes() { return DB::table('administracao_crud_acao') ->select([ 'administracao_crud_acao.id', 'administracao_crud_acao.nome', ]) ->whereExists(function ($query) { $startDate = Carbon::createFromFormat('d/m/Y', request()->periodo['start'])->format('Y-m-d'); $endDate = Carbon::createFromFormat('d/m/Y', request()->periodo['end'])->format('Y-m-d'); $query->select(DB::raw(1)) ->from('administracao_papel_permissao_historico') ->join('administracao_permissao', 'administracao_permissao.id', 'administracao_papel_permissao_historico.permissao_id') ->join('administracao_funcionalidade', 'administracao_funcionalidade.id', 'administracao_permissao.funcionalidade_id') ->whereRaw("CAST(administracao_papel_permissao_historico.created_at AS DATE) >= '" . $startDate . "'") ->whereRaw("CAST(administracao_papel_permissao_historico.created_at AS DATE) <= '" . $endDate . "'") ->when(request()->papel_id, fn ($query) => $query->where('administracao_papel_permissao_historico.papel_id', request()->papel_id)) ->when(request()->modulo_id, fn ($query) => $query->where('administracao_funcionalidade.modulo_id', request()->modulo_id)) ->when(request()->funcionalidade_id, fn ($query) => $query->where('administracao_permissao.funcionalidade_id', request()->funcionalidade_id)) ->whereColumn('administracao_permissao.crud_acao_id', 'administracao_crud_acao.id'); }) ->orderBy('administracao_crud_acao.nome') ->get(); } private static function getAcoes() { return DB::table('administracao_historico_acao') ->select([ 'administracao_historico_acao.id', 'administracao_historico_acao.nome', ]) ->whereExists(function ($query) { $startDate = Carbon::createFromFormat('d/m/Y', request()->periodo['start'])->format('Y-m-d'); $endDate = Carbon::createFromFormat('d/m/Y', request()->periodo['end'])->format('Y-m-d'); $query->select(DB::raw(1)) ->from('administracao_papel_permissao_historico') ->join('administracao_permissao', 'administracao_permissao.id', 'administracao_papel_permissao_historico.permissao_id') ->join('administracao_funcionalidade', 'administracao_funcionalidade.id', 'administracao_permissao.funcionalidade_id') ->whereRaw("CAST(administracao_papel_permissao_historico.created_at AS DATE) >= '" . $startDate . "'") ->whereRaw("CAST(administracao_papel_permissao_historico.created_at AS DATE) <= '" . $endDate . "'") ->when(request()->papel_id, fn ($query) => $query->where('administracao_papel_permissao_historico.papel_id', request()->papel_id)) ->when(request()->modulo_id, fn ($query) => $query->where('administracao_funcionalidade.modulo_id', request()->modulo_id)) ->when(request()->funcionalidade_id, fn ($query) => $query->where('administracao_permissao.funcionalidade_id', request()->funcionalidade_id)) ->when(request()->crud_acao_id, fn ($query) => $query->where('administracao_permissao.crud_acao_id', request()->crud_acao_id)) ->whereColumn('administracao_papel_permissao_historico.acao_id', 'administracao_historico_acao.id'); }) ->orderBy('administracao_historico_acao.nome') ->get(); } }