diff --git a/resources/queries/listarDisciplinasDocentes.sql b/resources/queries/listarDisciplinasDocentes.sql new file mode 100644 index 0000000..ca92a3d --- /dev/null +++ b/resources/queries/listarDisciplinasDocentes.sql @@ -0,0 +1,11 @@ +SELECT DISTINCT + S.nomset AS nomset, + V.tipmer AS meritoDocente, + M.codpes AS codpes, + V.nompes AS nompes, + M.coddis AS disciplina, + M.codtur AS turma +FROM MINISTRANTE M +INNER JOIN VINCULOPESSOAUSP V ON V.codpes = M.codpes +INNER JOIN SETOR S ON S.codset = V.codset +WHERE V.codund IN (__unidades__) \ No newline at end of file diff --git a/resources/queries/listarEstagiarios.sql b/resources/queries/listarEstagiarios.sql new file mode 100644 index 0000000..9fb6c40 --- /dev/null +++ b/resources/queries/listarEstagiarios.sql @@ -0,0 +1,5 @@ +SELECT V.codpes, V.nompes, S.nomset, V.dtainivin, V.dtafimvin + from VINCULOPESSOAUSP V + INNER JOIN SETOR S ON V.codset = S.codset +WHERE V.tipvin = 'ESTAGIARIORH' + AND V.codund IN (__unidades__) \ No newline at end of file diff --git a/resources/queries/listarTurmasGraduacaoAtuais.sql b/resources/queries/listarTurmasGraduacaoAtuais.sql new file mode 100644 index 0000000..5ca3601 --- /dev/null +++ b/resources/queries/listarTurmasGraduacaoAtuais.sql @@ -0,0 +1,16 @@ +SELECT DISTINCT TR.coddis, TR.codtur, TR.verdis, D.nomdis, P.nompes, horario = (O.diasmnocp + ' - ' + PH.horent + ' - ' + PH.horsai) FROM TURMAGR TR + LEFT JOIN DISCIPLINAGR D ON + TR.coddis = D.coddis AND TR.verdis = D.verdis + LEFT JOIN MINISTRANTE M ON + TR.codtur = M.codtur AND TR.verdis = M.verdis AND TR.coddis = M.coddis + LEFT JOIN PESSOA P ON + M.codpes = P.codpes + LEFT JOIN OCUPTURMA O ON + TR.codtur = O.codtur AND TR.verdis = O.verdis AND TR.coddis = O.coddis + LEFT JOIN PERIODOHORARIO PH ON + O.codperhor = PH.codperhor + WHERE + TR.codtur LIKE '__semestre__%' + AND TR.verdis = (SELECT MAX(DI.verdis) FROM DISCIPLINAGR AS DI WHERE (DI.coddis = TR.coddis) AND dtaatvdis IS NOT NULL) + AND (D.coddis LIKE '__siglas__%') + \ No newline at end of file diff --git a/src/Collections/Collection.php b/src/Collections/Collection.php index 802d529..bed2db4 100644 --- a/src/Collections/Collection.php +++ b/src/Collections/Collection.php @@ -1,6 +1,7 @@ getQuery('listarDisciplinasDocentes.sql', + [ + '__unidades__' => env('REPLICADO_CODUNDCLG') + ]); + + $data = ReplicadoDB::fetchAll($query); + // Pegar dados do replicado + $now = new UTCDateTime(); + foreach ($data as $row) { + $bulk[] = [ + 'updateOne' => [ + ['cod' => $row['codpes'].$row['turma'].$row['disciplina']], + [ + '$set' => [ + 'nomeDocente' => $row['nompes'], + 'codpes' => (int)$row['codpes'], + 'nomeDepartamento' => $row['nomset'], + 'meritoDocente' => $row['meritoDocente'], + 'turma' => $row['turma'], + 'disciplina' => $row['disciplina'], + 'semestre' => (int)substr($row['turma'],0,5), + + 'updated_at_sync' => $now + ] + ], + ['upsert' => true] + ] + ]; + } + + $collection = MongoConnection::getCollection('disciplinasDocentes'); + if (!empty($bulk)) { + $collection->bulkWrite($bulk); + } + + // delete antigos + $collection->deleteMany([ + 'updated_at_sync' => ['$lt' => $now] + ]); + } +} \ No newline at end of file diff --git a/src/Collections/estagiariosCollection.php b/src/Collections/estagiariosCollection.php new file mode 100644 index 0000000..e041113 --- /dev/null +++ b/src/Collections/estagiariosCollection.php @@ -0,0 +1,53 @@ +getQuery('listarEstagiarios.sql', + [ + '__unidades__' => env('REPLICADO_CODUNDCLG') + ]); + + $data = ReplicadoDB::fetchAll($query); + // Pegar dados do replicado + $now = new UTCDateTime(); + foreach ($data as $estagiario) { + $bulk[] = [ + 'updateOne' => [ + ['codpes' => (int)$estagiario['codpes']], + [ + '$set' => [ + 'nome' => $estagiario['nompes'], + 'setor' => $estagiario['nomset'], + 'dtaInicio' => $this->DateTime($estagiario['dtainivin']), + 'dtaFim' => $this->DateTime($estagiario['dtafimvin']), + + 'updated_at_sync' => $now + ] + ], + ['upsert' => true] + ] + ]; + } + + $collection = MongoConnection::getCollection('estagiarios'); + if (!empty($bulk)) { + $collection->bulkWrite($bulk); + } + + // delete antigos + $collection->deleteMany([ + 'updated_at_sync' => ['$lt' => $now] + ]); + } +} \ No newline at end of file diff --git a/src/Collections/turmasGraduacaoCollection.php b/src/Collections/turmasGraduacaoCollection.php new file mode 100644 index 0000000..0eb3a55 --- /dev/null +++ b/src/Collections/turmasGraduacaoCollection.php @@ -0,0 +1,88 @@ +getQuery('listarTurmasGraduacaoAtuais.sql', + [ + '__semestre__' => date("Y") . (date("m") > 6 ? 2 : 1), + + '__siglas__' => implode("%' OR D.coddis LIKE '",$siglas) + ]); + + $tempTurmas = ReplicadoDB::fetchAll($query); + $turmas =[]; + + //arrumar cada disciplina com um array de horários e um array de professores + + foreach ($tempTurmas as $turma) { + $codtur = $turma['codtur']; + $coddis = $turma['coddis']; + $verdis = $turma['verdis']; + $cod = $codtur. $coddis . $verdis; + if (!isset($turmas[$cod])) { + $turmas[$cod]=[ + 'codtur' => $turma['codtur'], + 'nomdis' => $turma['nomdis'], + 'coddis' => $turma['coddis'], + 'verdis' => $turma['verdis'], + 'nompes' => [], + 'horario' => [] + + ]; + } + if (!empty($turma['nompes']) && !in_array($turma['nompes'], $turmas[$cod]['nompes'])) { + $turmas[$cod]['nompes'][] = $turma['nompes']; + } + + if (!empty($turma['horario']) && !in_array($turma['horario'], $turmas[$cod]['horario'])) { + $turmas[$cod]['horario'][] = $turma['horario']; + } + } + + $now = new UTCDateTime(); + foreach ($turmas as $cod => $turma) { + $bulk[] = [ + 'updateOne' => [ + ['cod' => $cod], + [ + '$set' => [ + 'turma' => $turma['codtur'], + 'nomeDisciplina' => $turma['nomdis'], + 'disciplina' => $turma['coddis'], + 'versao' => $turma['verdis'], + 'docentes' => $turma['nompes'], + 'horario' => $turma['horario'], + + 'updated_at_sync' => $now + ] + ], + ['upsert' => true] + ] + ]; + } + + $collection = MongoConnection::getCollection('turmasGraduacaoAtuais'); + if (!empty($bulk)) { + $collection->bulkWrite($bulk); + } + + // delete antigos + $collection->deleteMany([ + 'updated_at_sync' => ['$lt' => $now] + ]); + } +} \ No newline at end of file