Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions resources/queries/listarDisciplinasDocentes.sql
Original file line number Diff line number Diff line change
@@ -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__)
5 changes: 5 additions & 0 deletions resources/queries/listarEstagiarios.sql
Original file line number Diff line number Diff line change
@@ -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__)
16 changes: 16 additions & 0 deletions resources/queries/listarTurmasGraduacaoAtuais.sql
Original file line number Diff line number Diff line change
@@ -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__%')

6 changes: 6 additions & 0 deletions src/Collections/Collection.php
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
<?php

namespace Uspdev\Replicado2MongoDB\Collections;
use MongoDB\BSON\UTCDateTime;

abstract class Collection
{
Expand All @@ -26,4 +27,9 @@ protected function getQuery(string $filename, array $replaces = []): string

return $query;
}
// Converte uma string com uma data em um objeto DateTime utilizável pelo MongoDB
protected function DateTime($str){
if (is_null($str)) return NULL;
return new UTCDateTime(strtotime($str)*1000);
}
}
56 changes: 56 additions & 0 deletions src/Collections/disciplinasDocentesCollection.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
<?php

namespace Uspdev\Replicado2MongoDB\Collections;

use DateTime;
use Uspdev\Replicado2MongoDB\Contracts\CollectionInterface;
use MongoDB\BSON\UTCDateTime;

use Uspdev\Replicado2MongoDB\Database\MongoConnection;
use Uspdev\Replicado\DB as ReplicadoDB;

class disciplinasDocentesCollection extends Collection implements CollectionInterface
{
public function sync(): void
{
$query = $this->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]
]);
}
}
53 changes: 53 additions & 0 deletions src/Collections/estagiariosCollection.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
<?php

namespace Uspdev\Replicado2MongoDB\Collections;

use DateTime;
use Uspdev\Replicado2MongoDB\Contracts\CollectionInterface;
use MongoDB\BSON\UTCDateTime;

use Uspdev\Replicado2MongoDB\Database\MongoConnection;
use Uspdev\Replicado\DB as ReplicadoDB;

class estagiariosCollection extends Collection implements CollectionInterface
{
public function sync(): void
{
$query = $this->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]
]);
}
}
88 changes: 88 additions & 0 deletions src/Collections/turmasGraduacaoCollection.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
<?php

namespace Uspdev\Replicado2MongoDB\Collections;

use DateTime;
use Uspdev\Replicado2MongoDB\Contracts\CollectionInterface;
use MongoDB\BSON\UTCDateTime;

use Uspdev\Replicado2MongoDB\Database\MongoConnection;
use Uspdev\Replicado\DB as ReplicadoDB;

class turmasGraduacaoCollection extends Collection implements CollectionInterface
{
public function sync(): void
{

$siglas = explode(',',env('SIGLAS_DEPARTAMENTOS'));

$query = $this->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]
]);
}
}