public function loginUsuario($tipoLogin = 0, $pk_usuario = 0, $cod_autenticacao = 0, $ano_letivo = 0, $cod_atendente = 0) { try { // Se for do tipo de autenticação extra (facebook, por exemplo) if ($tipoLogin == 1) { $sqlUsuario = new SqlUsuario(); $sqlUsuario = $sqlUsuario->validarLoginExtra($this, $pk_usuario, $cod_autenticacao, $cod_atendente); } elseif ($tipoLogin == 2) { $sqlUsuario = new SqlUsuario(); $sqlUsuario = $sqlUsuario->validarDependente($pk_usuario, $cod_autenticacao); } else { $sqlUsuario = new SqlUsuario(); $sqlUsuario = $sqlUsuario->validarLogin($this); } $_SESSION['pk_usuario'] = $sqlUsuario[0]['pk_usuario']; // Se logou, contabiliza a visita e cria uma sessão com a pk do usuário if (count($sqlUsuario) > 0) { if ($cod_autenticacao != 1) { $sqlContabiliza = new SqlUsuario(); $sqlContabiliza->contabiliza_login($sqlUsuario[0]['pk_usuario']); } } // Se o resultado da consulta retornar uma array e esta for diferente de vazio if (is_array($sqlUsuario) && !empty($sqlUsuario)) { $i = 0; // Cria uma array para armazenar os tipos de usuário aos quais o usuário se enquadra $arrTipoUsuario = array(); foreach ($sqlUsuario as $value) { // Se estiver no primeiro loop seta os dados do usuário if ($i == 0) { $this->set_idUsuario($value['pk_usuario']); $this->set_idUsuarioTipoVin($value['pk_usuario_tipo_vin']); $this->set_nome($value['nome']); $this->set_email($value['email']); $this->set_login($value['login']); $this->set_data_nasc($value['data_nasc']); $this->set_data_cadastro($value['data_cadastro']); $this->set_acessos($value['acessos']); $this->set_ultimoacesso($value['ultimoacesso']); $this->set_sexo($value['sexo']); $this->_senha = null; } // Como um mesmo usuário pode ser cadastrado em mais de um tipo de usuário, setamos os tipos em array $arrTipoUsuario[$i] = new TipoUsuario(); $arrTipoUsuario[$i]->set_idTipoUsuario($value['pk_tipo_usuario']); $arrTipoUsuario[$i]->set_nome($value['nome_tipo_usuario']); $arrTipoUsuario[$i]->set_tema($value['tema']); // Se for aluno if ($value['pk_tipo_usuario'] == 6) { // Verifica se existem outros cadastros do mesmo aluno $sqlAutenticacaoAluno = new SqlUsuario(); $sqlAutenticacaoAluno = $sqlAutenticacaoAluno->usuarioAutenticacaoAluno($value['pk_usuario']); $i3 = 0; $arrUsuarioAutenticacaoAluno = array(); foreach ($sqlAutenticacaoAluno as $row) { $arrUsuarioAutenticacaoAluno[$i3] = new AutenticacaoExtra(); $arrUsuarioAutenticacaoAluno[$i3]->set_pk_turma($row['pk_turma']); $arrUsuarioAutenticacaoAluno[$i3]->set_turma_nome($row['turma_nome']); $arrUsuarioAutenticacaoAluno[$i3]->set_fk_usuario($row['fk_usuario']); $arrUsuarioAutenticacaoAluno[$i3]->set_cod_autenticacao($row['cod_autenticacao']); $i3++; } // Busca os dados da(s) turma(s) do aluno $sqlAlunoTurmas = new SqlUsuario(); $sqlAlunoTurmas = $sqlAlunoTurmas->usuarioAlunoTurmas($value['pk_usuario'], $ano_letivo); $i2 = 0; // Cria uma array com os dados da(s) turma(s) do aluno para ser inserida nas personalizações mais adiante $arrUsuarioAlunoTurmas = array(); foreach ($sqlAlunoTurmas as $row) { $arrUsuarioAlunoTurmas[$i2] = new Turmas(); $arrUsuarioAlunoTurmas[$i2]->set_pk_turma($row['pk_turma']); $arrUsuarioAlunoTurmas[$i2]->set_turma_nome($row['turma_nome']); $arrUsuarioAlunoTurmas[$i2]->set_tmacod($row['tmacod']); $arrUsuarioAlunoTurmas[$i2]->set_fk_serie($row['fk_serie']); $arrUsuarioAlunoTurmas[$i2]->set_fk_unidade($row['fk_unidade']); $arrUsuarioAlunoTurmas[$i2]->set_ano_letivo($row['ano']); $arrUsuarioAlunoTurmas[$i2]->set_pk_usuario_aluno($row['pk_usuario_aluno']); $i2++; } // Cria uma nova instância da classe SqlUsuario e busca os dados específicos na tabela 'usuario_aluno' $sqlAluno = new SqlUsuario(); $sqlAluno = $sqlAluno->usuarioAluno($value['pk_usuario'], $ano_letivo); // se a(s) turma(s) foram desabilitadas, redireciona para a página de login. if (count($sqlAluno) == 0) { redirect(base_url()); break; } // Cria uma array com os dados encontrados e seta-os no objeto 'UsuarioPersonalizacoes', o qual está atrelado a objeto 'TipoUsuario', que está atrelado ao objeto 'Usuario' $i1 = 0; $arrUsuarioAluno = array(); foreach ($sqlAluno as $row) { $arrUsuarioAluno[$i1] = new UsuarioPersonalizacoes(); $arrUsuarioAluno[$i1]->set_pk_usuario_aluno($row['pk_usuario_aluno']); $arrUsuarioAluno[$i1]->set_matricula($row['matricula']); $arrUsuarioAluno[$i1]->set_ano_mat($row['ano_mat']); $arrUsuarioAluno[$i1]->set_data_mat($row['data_mat']); $arrUsuarioAluno[$i1]->set_turmas($arrUsuarioAlunoTurmas); $arrUsuarioAluno[$i1]->set_autenticacao($arrUsuarioAutenticacaoAluno); $i1++; } // Seta a array criada nas personalizações $arrTipoUsuario[$i]->set_personalizacoes($arrUsuarioAluno); // Cria uma array para preencher a classe de aluno ativo $i1 = 0; $arrUsuarioAluno = array(); foreach ($sqlAluno as $row) { $arrUsuarioAluno[$i1] = new AlunoAtivo(); $arrUsuarioAluno[$i1]->set_pk_usuario($row['fk_usuario']); $arrUsuarioAluno[$i1]->set_nome($row['nome']); $arrUsuarioAluno[$i1]->set_pk_usuario_aluno($row['pk_usuario_aluno']); $arrUsuarioAluno[$i1]->set_matricula($row['matricula']); $arrUsuarioAluno[$i1]->set_ano_mat($row['ano_mat']); $arrUsuarioAluno[$i1]->set_pk_turma($row['fk_turma']); $arrUsuarioAluno[$i1]->set_turma_nome($row['turma_nome']); $arrUsuarioAluno[$i1]->set_tmacod($row['tmacod']); $arrUsuarioAluno[$i1]->set_pk_serie($row['fk_serie']); $arrUsuarioAluno[$i1]->set_pk_unidade($row['fk_unidade']); $i1++; } $arrTipoUsuario[$i]->set_alunoAtivo($arrUsuarioAluno); } // Se for administrador if ($value['pk_tipo_usuario'] == 1) { // Busca as turmas relacionadas ao usuário para serem inseridas nas personalizações mais adiante $sqlUsuarioTurmas = new SqlUsuario(); $sqlUsuarioTurmas = $sqlUsuarioTurmas->usuarioTurmasAdmin($ano_letivo); $i6 = 0; $arrUsuarioTurmas = array(); foreach ($sqlUsuarioTurmas['registros'] as $row) { $arrUsuarioTurmas[$i6] = new Turmas(); $arrUsuarioTurmas[$i6]->set_pk_turma($row['pk_turma']); $arrUsuarioTurmas[$i6]->set_turma_nome($row['turma_nome']); $arrUsuarioTurmas[$i6]->set_tmacod($row['tmacod']); $arrUsuarioTurmas[$i6]->set_fk_serie($row['fk_serie']); $arrUsuarioTurmas[$i6]->set_fk_unidade($row['fk_unidade']); $i6++; } $sqlUnidades = new SqlUsuario(); $sqlUnidades = $sqlUnidades->usuarioUnidades($value['pk_usuario'], 0); $i4 = 0; $arrUsuarioUnidades = array(); foreach ($sqlUnidades['registros'] as $row) { $arrUsuarioUnidades[$i4] = new Unidades(); $arrUsuarioUnidades[$i4]->set_unidade($row['fk_unidade']); $i4++; } // Inclui as turmas e unidades na classe Usuario personalizacoes $arrUsuarioPersonalizacoes = array(); $arrUsuarioPersonalizacoes[1] = new UsuarioPersonalizacoes(); $arrUsuarioPersonalizacoes[1]->set_turmas($arrUsuarioTurmas); $arrUsuarioPersonalizacoes[1]->set_unidades($arrUsuarioUnidades); // Seta a array criada nas personalizações $arrTipoUsuario[$i]->set_personalizacoes($arrUsuarioPersonalizacoes); } // Se for gestor if ($value['pk_tipo_usuario'] == 2) { // Busca as turmas vinculadas ao tipo de usuário para serem inseridas nas personalizações mais adiante $sqlUsuarioTurmas = new SqlUsuario(); $sqlUsuarioTurmas = $sqlUsuarioTurmas->usuarioTurmas($value['pk_usuario_tipo_vin'], $value['pk_tipo_usuario'], $ano_letivo); $i6 = 0; $arrUsuarioTurmas = array(); foreach ($sqlUsuarioTurmas['registros'] as $row) { $arrUsuarioTurmas[$i6] = new Turmas(); $arrUsuarioTurmas[$i6]->set_pk_turma($row['pk_turma']); $arrUsuarioTurmas[$i6]->set_turma_nome($row['turma_nome']); $arrUsuarioTurmas[$i6]->set_tmacod($row['tmacod']); $arrUsuarioTurmas[$i6]->set_fk_serie($row['fk_serie']); $arrUsuarioTurmas[$i6]->set_fk_unidade($row['fk_unidade']); $i6++; } $sqlUnidades = new SqlUsuario(); $sqlUnidades = $sqlUnidades->usuarioUnidades($value['pk_usuario'], $value['pk_tipo_usuario']); $i4 = 0; $arrUsuarioUnidades = array(); foreach ($sqlUnidades['registros'] as $row) { $arrUsuarioUnidades[$i4] = new Unidades(); $arrUsuarioUnidades[$i4]->set_unidade($row['fk_unidade']); $i4++; } // Inclui as turmas e unidades na classe Usuario personalizacoes $arrUsuarioPersonalizacoes = array(); $arrUsuarioPersonalizacoes[1] = new UsuarioPersonalizacoes(); $arrUsuarioPersonalizacoes[1]->set_turmas($arrUsuarioTurmas); $arrUsuarioPersonalizacoes[1]->set_unidades($arrUsuarioUnidades); // Seta a array criada nas personalizações $arrTipoUsuario[$i]->set_personalizacoes($arrUsuarioPersonalizacoes); } // Se for coordenador if ($value['pk_tipo_usuario'] == 3) { // Busca as turmas $sqlUsuarioTurmas = new SqlUsuario(); $sqlUsuarioTurmas = $sqlUsuarioTurmas->usuarioTurmas($value['pk_usuario_tipo_vin'], $value['pk_tipo_usuario'], $ano_letivo); $i6 = 0; // Cria uma array com os dados da(s) turma(s) do aluno para ser inserida nas personalizações mais adiante $arrUsuarioTurmas = array(); foreach ($sqlUsuarioTurmas['registros'] as $row) { $arrUsuarioTurmas[$i6] = new Turmas(); $arrUsuarioTurmas[$i6]->set_pk_turma($row['pk_turma']); $arrUsuarioTurmas[$i6]->set_turma_nome($row['turma_nome']); $arrUsuarioTurmas[$i6]->set_tmacod($row['tmacod']); $arrUsuarioTurmas[$i6]->set_fk_serie($row['fk_serie']); $arrUsuarioTurmas[$i6]->set_fk_unidade($row['fk_unidade']); $i6++; } // Cria uma nova instância da classe SqlUsuario e busca os dados específicos na tabela 'usuario_coordenador' $sqlCoordenador = new SqlUsuario(); $sqlCoordenador = $sqlCoordenador->usuarioCoordenador($value['pk_usuario']); $_SESSION['tipo_coordenador'] = $sqlCoordenador[0]['tipo']; // Cria uma array com os dados encontrados e seta-os no objeto 'UsuarioPersonalizacoes', o qual está atrelado a objeto 'TipoUsuario', que está atrelado ao objeto 'Usuario' $arrUsuarioCoordenador = array(); foreach ($sqlCoordenador as $row) { $pk_usuario_coordenador = $row['pk_usuario_coordenador']; } $sqlUnidades = new SqlUsuario(); $sqlUnidades = $sqlUnidades->usuarioUnidades($value['pk_usuario'], $value['pk_tipo_usuario']); $i4 = 0; $arrUsuarioUnidades = array(); foreach ($sqlUnidades['registros'] as $row) { $arrUsuarioUnidades[$i4] = new Unidades(); $arrUsuarioUnidades[$i4]->set_unidade($row['fk_unidade']); $i4++; } $sqlCoordenacoes = new SqlUsuario(); $sqlCoordenacoes = $sqlCoordenacoes->usuarioCoordenacoes($value['pk_usuario'], $value['pk_tipo_usuario']); $i4 = 0; $arrUsuarioCoordenacoes = array(); foreach ($sqlCoordenacoes['registros'] as $row) { $arrUsuarioCoordenacoes[$i4] = new Coordenacoes(); $arrUsuarioCoordenacoes[$i4]->set_pk_coordenacao($row['pk_coordenacao']); $arrUsuarioCoordenacoes[$i4]->set_coordenacao_nome($row['coordenacao_nome']); $arrUsuarioCoordenacoes[$i4]->set_fk_unidade($row['fk_unidade']); $i4++; } $arrUsuarioCoordenador[1] = new UsuarioPersonalizacoes(); $arrUsuarioCoordenador[1]->set_pk_usuario_coordenador($pk_usuario_coordenador); $arrUsuarioCoordenador[1]->set_turmas($arrUsuarioTurmas); $arrUsuarioCoordenador[1]->set_unidades($arrUsuarioUnidades); $arrUsuarioCoordenador[1]->set_coordenacoes($arrUsuarioCoordenacoes); // Seta a array criada nas personalizações $arrTipoUsuario[$i]->set_personalizacoes($arrUsuarioCoordenador); } // Se for responsável if ($value['pk_tipo_usuario'] == 11) { // Cria uma nova instância da classe SqlUsuario e busca os dados específicos na tabela 'usuario_responsavel' $sqlResponsavel = new SqlUsuario(); $sqlResponsavel = $sqlResponsavel->usuarioResponsavel($value['pk_usuario']); foreach ($sqlResponsavel as $row) { $pk_usuario_responsavel = $row['pk_usuario_responsavel']; } // Busca os dependentes relacionados ao responsável $sqlDependentes = new SqlUsuario(); $sqlDependentes = $sqlDependentes->usuarioDependentes($pk_usuario_responsavel, $ano_letivo); // se não encontrou depentendetes no ano letivo atual, procura no ano seguinte if ($sqlDependentes['total'] == 0) { $ano_proximo = (int) $ano_letivo + 1; // Busca os dependentes relacionados ao responsável $sqlDependentes = new SqlUsuario(); $sqlDependentes = $sqlDependentes->usuarioDependentes($pk_usuario_responsavel, $ano_proximo); } $i4 = 0; $arrUsuarioDependentes = array(); foreach ($sqlDependentes['registros'] as $row) { $arrUsuarioDependentes[$i4] = new Dependentes(); $arrUsuarioDependentes[$i4]->set_dep_pk_usuario($row['pk_usuario']); $arrUsuarioDependentes[$i4]->set_dep_nome($row['nome']); $arrUsuarioDependentes[$i4]->set_dep_pk_usuario_aluno($row['pk_usuario_aluno']); $arrUsuarioDependentes[$i4]->set_dep_matricula($row['matricula']); $arrUsuarioDependentes[$i4]->set_dep_ano($row['ano_mat']); $arrUsuarioDependentes[$i4]->set_dep_pk_turma($row['pk_turma']); $arrUsuarioDependentes[$i4]->set_dep_turma_nome($row['turma_nome']); $arrUsuarioDependentes[$i4]->set_dep_tmacod($row['tmacod']); $arrUsuarioDependentes[$i4]->set_dep_pk_serie($row['fk_serie']); $arrUsuarioDependentes[$i4]->set_dep_pk_unidade($row['fk_unidade']); $arrUsuarioDependentes[$i4]->set_dep_status_matricula($row['status_matricula']); $i4++; } // Cria uma array com os dados encontrados e seta-os no objeto 'UsuarioPersonalizacoes', o qual está atrelado a objeto 'TipoUsuario', que está atrelado ao objeto 'Usuario' $i4 = 0; $arrUsuarioResponsavel = array(); foreach ($sqlResponsavel as $row) { $arrUsuarioResponsavel[$i4] = new UsuarioPersonalizacoes(); $arrUsuarioResponsavel[$i4]->set_pk_usuario_responsavel($row['pk_usuario_responsavel']); $arrUsuarioResponsavel[$i4]->set_dependentes($arrUsuarioDependentes); $i4++; } // Seta a array criada nas personalizações $arrTipoUsuario[$i]->set_personalizacoes($arrUsuarioResponsavel); } // Se for professor if ($value['pk_tipo_usuario'] == 15) { // pega a pk_usuario_professor $sqlProfessor = new SqlUsuario(); $sqlProfessor = $sqlProfessor->usuarioProfessor($value['pk_usuario']); $pk_usuario_professor = $sqlProfessor[0]['pk_usuario_professor']; // busca a pk_usuario_professor nos vículos de matéria e serie $sqlMaterias = new SqlGrade(); $result = $sqlMaterias->listar_materias_serie_professor($pk_usuario_professor, $ano_letivo); $i5 = 0; $arrUsuarioProfessorMaterias = array(); foreach ($result['registros'] as $row) { $arrUsuarioProfessorMaterias[$i5] = new MateriasVin(); $arrUsuarioProfessorMaterias[$i5]->set_pk_materia_vin($row['fk_materia_vin']); $arrUsuarioProfessorMaterias[$i5]->set_materia_nome($row['materia_nome']); $arrUsuarioProfessorMaterias[$i5]->set_serie_nome($row['serie_nome']); $arrUsuarioProfessorMaterias[$i5]->set_pk_serie($row['fk_serie']); $arrUsuarioProfessorMaterias[$i5]->set_pk_materia($row['fk_materia']); $arrUsuarioProfessorMaterias[$i5]->set_pk_materia_mae($row['fk_materia_mae']); $i5++; } // Busca as turmas nas quais o professor está vinculado $sqlUsuarioTurmas = new SqlUsuario(); $sqlUsuarioTurmas = $sqlUsuarioTurmas->usuarioTurmasProfessor($pk_usuario_professor, $ano_letivo); $i6 = 0; // Cria uma array com os dados da(s) turma(s) do aluno para ser inserida nas personalizações mais adiante $arrUsuarioTurmas = array(); foreach ($sqlUsuarioTurmas['registros'] as $row) { $arrUsuarioTurmas[$i6] = new Turmas(); $arrUsuarioTurmas[$i6]->set_pk_turma($row['pk_turma']); $arrUsuarioTurmas[$i6]->set_turma_nome($row['turma_nome']); $arrUsuarioTurmas[$i6]->set_tmacod($row['tmacod']); $arrUsuarioTurmas[$i6]->set_fk_serie($row['fk_serie']); $arrUsuarioTurmas[$i6]->set_fk_unidade($row['fk_unidade']); $i6++; } // Cria uma array com as séries do professor $arrUsuarioSeries = array(); $i7 = 0; $_SESSION['distinct_serie'] = ''; foreach ($sqlUsuarioTurmas['registros'] as $row) { if ($row['fk_serie'] != $_SESSION['distinct_serie']) { $arrUsuarioSeries[$i7] = new Series(); $arrUsuarioSeries[$i7]->set_pk_serie($row['fk_serie']); $i7++; } $_SESSION['distinct_serie'] = $row['fk_serie']; } // Cria uma array com as unidades do professor $arrUsuarioUnidades = array(); $i8 = 0; $_SESSION['distinct_unidade'] = ''; foreach ($sqlUsuarioTurmas['registros'] as $row) { if ($row['fk_unidade'] != $_SESSION['distinct_unidade']) { $arrUsuarioUnidades[$i8] = new Unidades(); $arrUsuarioUnidades[$i8]->set_unidade($row['fk_unidade']); $i8++; } $_SESSION['distinct_unidade'] = $row['fk_unidade']; } // Seta as personalizações do usuário professor $arrUsuarioProfessor[0] = new UsuarioPersonalizacoes(); $arrUsuarioProfessor[0]->set_pk_usuario_professor($pk_usuario_professor); $arrUsuarioProfessor[0]->set_materias_vin($arrUsuarioProfessorMaterias); $arrUsuarioProfessor[0]->set_turmas($arrUsuarioTurmas); $arrUsuarioProfessor[0]->set_series($arrUsuarioSeries); $arrUsuarioProfessor[0]->set_unidades($arrUsuarioUnidades); // Seta as personalizações no objeto Usuário $arrTipoUsuario[$i]->set_personalizacoes($arrUsuarioProfessor); } // Se for atendente if ($value['pk_tipo_usuario'] == 18) { $sqlAtendente = new SqlUsuario(); $result = $sqlAtendente->usuarioAtendenteUnidade($value['pk_usuario']); $arrUsuarioUnidades = array(); $i10 = 0; foreach ($result['registros'] as $row) { $arrUsuarioUnidades[$i10] = new Unidades(); $arrUsuarioUnidades[$i10]->set_unidade($row['fk_unidade']); $i10++; } $arrUsuarioAtendente[0] = new UsuarioPersonalizacoes(); $arrUsuarioAtendente[0]->set_unidades($arrUsuarioUnidades); // Seta as personalizações no objeto Usuário $arrTipoUsuario[$i]->set_personalizacoes($arrUsuarioAtendente); } // Se for tesoureira if ($value['pk_tipo_usuario'] == 19) { // Busca as turmas $sqlUsuarioTurmas = new SqlUsuario(); $sqlUsuarioTurmas = $sqlUsuarioTurmas->usuarioTurmas($value['pk_usuario_tipo_vin'], $value['pk_tipo_usuario'], $ano_letivo); $i12 = 0; // Cria uma array com os dados da(s) turma(s) do aluno para ser inserida nas personalizações mais adiante $arrUsuarioTurmas = array(); foreach ($sqlUsuarioTurmas['registros'] as $row) { $arrUsuarioTurmas[$i12] = new Turmas(); $arrUsuarioTurmas[$i12]->set_pk_turma($row['pk_turma']); $arrUsuarioTurmas[$i12]->set_turma_nome($row['turma_nome']); $arrUsuarioTurmas[$i12]->set_tmacod($row['tmacod']); $arrUsuarioTurmas[$i12]->set_fk_serie($row['fk_serie']); $arrUsuarioTurmas[$i12]->set_fk_unidade($row['fk_unidade']); $i12++; } $sqlAtendente = new SqlUsuario(); $result = $sqlAtendente->usuarioTesourariaUnidade($value['pk_usuario']); $arrUsuarioUnidades = array(); $i11 = 0; foreach ($result['registros'] as $row) { $arrUsuarioUnidades[$i11] = new Unidades(); $arrUsuarioUnidades[$i11]->set_unidade($row['fk_unidade']); $i11++; } $arrUsuarioAtendente[0] = new UsuarioPersonalizacoes(); $arrUsuarioAtendente[0]->set_unidades($arrUsuarioUnidades); $arrUsuarioAtendente[0]->set_turmas($arrUsuarioTurmas); // Seta as personalizações no objeto Usuário $arrTipoUsuario[$i]->set_personalizacoes($arrUsuarioAtendente); } $i++; } // Seta a array com os tipos de usuário $this->set_tipoUsuario($arrTipoUsuario); return $this; } return false; } catch (Exception $e) { // var_dump($e); // die(); throw new Exception($e->getMessage()); } }