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
22 changes: 22 additions & 0 deletions resources/queries/listarAlunosPosAtivos.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
SELECT DISTINCT
V.codpes AS codpes,
L.codema AS email,
L.nompes AS nome,
V.codare AS codarea,
C.codcur AS codcur,
NC.nomcur AS nomcur,
V.dtainivin,
V.dtafimvin
FROM VINCULOPESSOAUSP AS V
INNER JOIN AREA AS A
ON A.codare = V.codare
INNER JOIN CURSO AS C
ON C.codcur = A.codcur
INNER JOIN NOMECURSO AS NC
ON C.codcur = NC.codcur
INNER JOIN LOCALIZAPESSOA as L
ON (V.codpes = L.codpes)
WHERE V.tipvin = 'ALUNOPOS'
AND V.sitatl = 'A'
AND L.tipvin = 'ALUNOPOS'
AND V.codfusclgund in (__unidades__)
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__)
10 changes: 10 additions & 0 deletions resources/queries/listarDocentes.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
SELECT DISTINCT
V.*, S.nomset, L.idfpescpq
FROM VINCULOPESSOAUSP V
INNER JOIN SETOR S
ON S.codset = V.codset
LEFT JOIN DIM_PESSOA_XMLUSP L
ON V.codpes = L.codpes
WHERE V.codfusclgund IN (__unidades__)
AND V.tipvin = 'SERVIDOR'
AND ( V.tipfnc = 'Docente' or V.nomcaa = 'Pesquisador' )
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__)
4 changes: 4 additions & 0 deletions resources/queries/listarIntercambistasRecebidos.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
SELECT DISTINCT v.nompes, v.codpes, v.dtainivin, v.dtafimvin, v.numseqpes
FROM VINCULOPESSOAUSP v
WHERE v.tipvin IN ('ALUNOICD', 'ALUNOCONVENIOINT')
AND codfusclgund 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/alunosPosCollection.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 alunosPosCollection extends Collection implements CollectionInterface
{
public function sync(): void
{
$query = $this->getQuery('listarAlunosPosAtivos.sql',
[
'__unidades__' => env('REPLICADO_CODUNDCLG')
]);

$data = ReplicadoDB::fetchAll($query);
// Pegar dados do replicado
$now = new UTCDateTime();
foreach ($data as $aluno) {
$bulk[] = [
'updateOne' => [
['codpes' => (int)$aluno['codpes']],
[
'$set' => [
'nome' => $aluno['nome'],
'email' => $aluno['email'],
'codarea' => $aluno['codarea'],
'codPrograma' => $aluno['codcur'],
'programa' => $aluno['nomcur'],

'dtaInicioVinculo' => $this->DateTime($aluno['dtainivin']),

'updated_at_sync' => $now
]
],
['upsert' => true]
]
];
}

$collection = MongoConnection::getCollection('alunosPos');
if (!empty($bulk)) {
$collection->bulkWrite($bulk);
}

// delete antigos
$collection->deleteMany([
'updated_at_sync' => ['$lt' => $now]
]);
}
}
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]
]);
}
}
64 changes: 64 additions & 0 deletions src/Collections/docentesCollection.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
<?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 docentesCollection extends Collection implements CollectionInterface
{
public function sync(): void
{
$query = $this->getQuery('listarDocentes.sql',
[
'__unidades__' => env('REPLICADO_CODUNDCLG')
]);

$data = ReplicadoDB::fetchAll($query);
// Pegar dados do replicado
$now = new UTCDateTime();
foreach ($data as $docente) {
$bulk[] = [
'updateOne' => [
['codpes' => (int)$docente['codpes']],
[
'$set' => [
'nome' => $docente['nompes'],
'codset' => (int)$docente['codset'],
'departamento' => $docente['nomset'],
'merito' => $docente['tipmer'],
'classe' => $docente['nomabvcla'],
'funcao' => $docente['nomabvfnc'],
'status' => $docente['sitatl'],
'ultimaOcorrencia' => $docente['sitoco'],
'idLattes' => $docente['idfpescpq'],

'dtaInicioAtividade' => $this->DateTime($docente['dtainidctati']),
'dtaFimAtividade' => $this->DateTime($docente['dtafimdctati']),

'dtaInicioVinculo' => $this->DateTime($docente['dtainivin']),
'dtaFimVinculo' => $this->DateTime($docente['dtafimvin']),

'updated_at_sync' => $now
]
],
['upsert' => true]
]
];
}

$collection = MongoConnection::getCollection('docentes');
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]
]);
}
}
54 changes: 54 additions & 0 deletions src/Collections/intercambistasCollection.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
<?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 intercambistasCollection extends Collection implements CollectionInterface
{
public function sync(): void
{
$query = $this->getQuery('listarIntercambistasRecebidos.sql',
[
'__unidades__' => env('REPLICADO_CODUNDCLG')
]);

$data = ReplicadoDB::fetchAll($query);
// Pegar dados do replicado
$now = new UTCDateTime();
foreach ($data as $intercambista) {
$bulk[] = [
'updateOne' => [
['codpesseq' => ($intercambista['codpes'].' '.$intercambista['numseqpes'])],
[
'$set' => [
'nome' => $intercambista['nompes'],
'codpes' => (int)$intercambista['codpes'],
'numseq' => (int)$intercambista['numseqpes'],
'dtaInicioVinculo' => $this->DateTime($intercambista['dtainivin']),
'dtaFimVinculo' => $this->DateTime($intercambista['dtafimvin']),

'updated_at_sync' => $now
]
],
['upsert' => true]
]
];
}

$collection = MongoConnection::getCollection('intercambistas');
if (!empty($bulk)) {
$collection->bulkWrite($bulk);
}

// delete antigos
$collection->deleteMany([
'updated_at_sync' => ['$lt' => $now]
]);
}
}
Loading