Commit da04908354e53e3d886b860351dbab2201d6e1d4

Authored by Eder Soares
2 parents d01959b6 9acd7287
Exists in 2.8 and in 6 other branches 2.2, 2.3, 2.4, 2.5, 2.6, 2.7

Merge branch 'master' into community-patch-2019-11-08

Showing 46 changed files with 1690 additions and 247 deletions   Show diff stats
.env.example
... ... @@ -57,8 +57,7 @@ GOOGLE_TAG_MANAGER=
57 57  
58 58 FILESYSTEM_DRIVER=local
59 59  
60   -AWS_KEY=
61   -AWS_SECRET=
  60 +AWS_ACCESS_KEY_ID=
  61 +AWS_SECRET_ACCESS_KEY=
62 62 AWS_DEFAULT_REGION=
63 63 AWS_BUCKET=
64   -AWS_URL=
... ...
app/Extensions/Application.php 0 → 100644
... ... @@ -0,0 +1,11 @@
  1 +<?php
  2 +
  3 +namespace App\Extensions;
  4 +
  5 +use EderSoares\Laravel\PlugAndPlay\Foundation\PlugAndPlayPackages;
  6 +use Illuminate\Foundation\Application as LaravelApplication;
  7 +
  8 +class Application extends LaravelApplication
  9 +{
  10 + use PlugAndPlayPackages;
  11 +}
... ...
app/Http/Controllers/BackupController.php 0 → 100644
... ... @@ -0,0 +1,17 @@
  1 +<?php
  2 +
  3 +namespace App\Http\Controllers;
  4 +
  5 +use App\Services\BackupUrlPresigner;
  6 +use Illuminate\Http\Request;
  7 +use Redirect;
  8 +
  9 +class BackupController extends Controller
  10 +{
  11 + public function download(Request $request, BackupUrlPresigner $backupUrlPresigner)
  12 + {
  13 + $presignedUrl = $backupUrlPresigner->getPresignedUrl($request->url);
  14 +
  15 + return Redirect::away($presignedUrl);
  16 + }
  17 +}
... ...
app/Http/Kernel.php
... ... @@ -21,6 +21,7 @@ class Kernel extends HttpKernel
21 21 \App\Http\Middleware\TrustProxies::class,
22 22 \App\Http\Middleware\ChangeAppName::class,
23 23 \App\Http\Middleware\ConnectTenantDatabase::class,
  24 + \App\Http\Middleware\LoadSettings::class,
24 25 ];
25 26  
26 27 /**
... ... @@ -38,12 +39,12 @@ class Kernel extends HttpKernel
38 39 // \App\Http\Middleware\VerifyCsrfToken::class,
39 40 \Illuminate\Routing\Middleware\SubstituteBindings::class,
40 41 \App\Http\Middleware\SetLayoutVariables::class,
41   - \App\Http\Middleware\LoadSettings::class,
42 42 ],
43 43  
44 44 'api' => [
45 45 'throttle:60,1',
46 46 'bindings',
  47 + \Barryvdh\Cors\HandleCors::class
47 48 ],
48 49 ];
49 50  
... ...
app/Models/LegacyAddress.php 0 → 100644
... ... @@ -0,0 +1,54 @@
  1 +<?php
  2 +
  3 +namespace App\Models;
  4 +
  5 +use Illuminate\Database\Eloquent\Model;
  6 +
  7 +class LegacyAddress extends Model
  8 +{
  9 + /**
  10 + * @var string
  11 + */
  12 + protected $table = 'public.logradouro';
  13 +
  14 + /**
  15 + * @var string
  16 + */
  17 + protected $primaryKey = 'idlog';
  18 +
  19 + /**
  20 + * @var array
  21 + */
  22 + protected $fillable = [
  23 + 'idtlog',
  24 + 'nome',
  25 + 'idmun',
  26 + 'geom',
  27 + 'ident_oficial',
  28 + 'idpes_rev',
  29 + 'data_rev',
  30 + 'origem_gravacao',
  31 + 'idpes_cad',
  32 + 'data_cad',
  33 + 'operacao',
  34 + ];
  35 +
  36 + /**
  37 + * @var bool
  38 + */
  39 + public $timestamps = false;
  40 +
  41 + /**
  42 + * @inheritDoc
  43 + */
  44 + protected static function boot()
  45 + {
  46 + parent::boot();
  47 +
  48 + static::creating(function ($model) {
  49 + $model->origem_gravacao = 'M';
  50 + $model->data_cad = now();
  51 + $model->operacao = 'I';
  52 + });
  53 + }
  54 +}
... ...
app/Models/LegacyCity.php 0 → 100644
... ... @@ -0,0 +1,69 @@
  1 +<?php
  2 +
  3 +namespace App\Models;
  4 +
  5 +use Illuminate\Database\Eloquent\Model;
  6 +use Illuminate\Database\Eloquent\Relations\HasMany;
  7 +
  8 +class LegacyCity extends Model
  9 +{
  10 + /**
  11 + * @var string
  12 + */
  13 + protected $table = 'public.municipio';
  14 +
  15 + /**
  16 + * @var string
  17 + */
  18 + protected $primaryKey = 'idmun';
  19 +
  20 + /**
  21 + * @var array
  22 + */
  23 + protected $fillable = [
  24 + 'idmun',
  25 + 'nome',
  26 + 'sigla_uf',
  27 + 'area_km2',
  28 + 'idmreg',
  29 + 'idasmun',
  30 + 'cod_ibge',
  31 + 'geom',
  32 + 'tipo',
  33 + 'idmun_pai',
  34 + 'idpes_rev',
  35 + 'idpes_cad',
  36 + 'data_rev',
  37 + 'data_cad',
  38 + 'origem_gravacao',
  39 + 'operacao',
  40 + 'nome_limpo',
  41 + ];
  42 +
  43 + /**
  44 + * @var bool
  45 + */
  46 + public $timestamps = false;
  47 +
  48 + /**
  49 + * @inheritDoc
  50 + */
  51 + protected static function boot()
  52 + {
  53 + parent::boot();
  54 +
  55 + static::creating(function ($model) {
  56 + $model->origem_gravacao = 'M';
  57 + $model->data_cad = now();
  58 + $model->operacao = 'I';
  59 + });
  60 + }
  61 +
  62 + /**
  63 + * @return HasMany
  64 + */
  65 + public function districts()
  66 + {
  67 + return $this->hasMany(LegacyDistrict::class, 'idmun', 'idmun');
  68 + }
  69 +}
... ...
app/Models/LegacyDistrict.php 0 → 100644
... ... @@ -0,0 +1,57 @@
  1 +<?php
  2 +
  3 +namespace App\Models;
  4 +
  5 +use Illuminate\Database\Eloquent\Model;
  6 +
  7 +class LegacyDistrict extends Model
  8 +{
  9 + /**
  10 + * @var string
  11 + */
  12 + protected $table = 'public.distrito';
  13 +
  14 + /**
  15 + * @var string
  16 + */
  17 + protected $primaryKey = 'iddis';
  18 +
  19 + /**
  20 + * @var array
  21 + */
  22 + protected $fillable = [
  23 + 'idmun',
  24 + 'geom',
  25 + 'iddis',
  26 + 'nome',
  27 + 'cod_ibge',
  28 + 'idpes_rev',
  29 + 'data_rev',
  30 + 'origem_gravacao',
  31 + 'idpes_cad',
  32 + 'data_cad',
  33 + 'operacao',
  34 + ];
  35 +
  36 + /**
  37 + * @var bool
  38 + */
  39 + public $timestamps = false;
  40 +
  41 + /**
  42 + * @inheritDoc
  43 + */
  44 + protected static function boot()
  45 + {
  46 + parent::boot();
  47 +
  48 + static::creating(function ($model) {
  49 + $district = LegacyDistrict::query()->whereKey($model->idmun)->first();
  50 +
  51 + $model->origem_gravacao = 'M';
  52 + $model->data_cad = now();
  53 + $model->operacao = 'I';
  54 + $model->iddis = $district->getKey();
  55 + });
  56 + }
  57 +}
... ...
app/Models/LegacyExternalAddress.php 0 → 100644
... ... @@ -0,0 +1,65 @@
  1 +<?php
  2 +
  3 +namespace App\Models;
  4 +
  5 +use Illuminate\Database\Eloquent\Model;
  6 +
  7 +class LegacyExternalAddress extends Model
  8 +{
  9 + /**
  10 + * @var string
  11 + */
  12 + protected $table = 'cadastro.endereco_externo';
  13 +
  14 + /**
  15 + * @var string
  16 + */
  17 + protected $primaryKey = 'idpes';
  18 +
  19 + /**
  20 + * @var array
  21 + */
  22 + protected $fillable = [
  23 + 'idpes',
  24 + 'tipo',
  25 + 'idtlog',
  26 + 'logradouro',
  27 + 'numero',
  28 + 'letra',
  29 + 'complemento',
  30 + 'bairro',
  31 + 'cep',
  32 + 'cidade',
  33 + 'sigla_uf',
  34 + 'reside_desde',
  35 + 'idpes_rev',
  36 + 'data_rev',
  37 + 'origem_gravacao',
  38 + 'idpes_cad',
  39 + 'data_cad',
  40 + 'operacao',
  41 + 'bloco',
  42 + 'andar',
  43 + 'apartamento',
  44 + 'zona_localizacao',
  45 + ];
  46 +
  47 + /**
  48 + * @var bool
  49 + */
  50 + public $timestamps = false;
  51 +
  52 + /**
  53 + * @inheritDoc
  54 + */
  55 + protected static function boot()
  56 + {
  57 + parent::boot();
  58 +
  59 + static::creating(function ($model) {
  60 + $model->data_cad = now();
  61 + $model->origem_gravacao = 'M';
  62 + $model->operacao = 'I';
  63 + });
  64 + }
  65 +}
... ...
app/Models/LegacyGrade.php 0 → 100644
... ... @@ -0,0 +1,71 @@
  1 +<?php
  2 +
  3 +namespace App\Models;
  4 +
  5 +use Illuminate\Database\Eloquent\Model;
  6 +use Illuminate\Database\Eloquent\Relations\BelongsTo;
  7 +use Illuminate\Database\Eloquent\Relations\BelongsToMany;
  8 +
  9 +class LegacyGrade extends Model
  10 +{
  11 + /**
  12 + * @var string
  13 + */
  14 + protected $table = 'pmieducar.serie';
  15 +
  16 + /**
  17 + * @var string
  18 + */
  19 + protected $primaryKey = 'cod_serie';
  20 +
  21 + /**
  22 + * @var array
  23 + */
  24 + protected $fillable = [
  25 + 'nm_serie', 'ref_usuario_cad', 'ref_cod_curso', 'etapa_curso', 'carga_horaria', 'data_cadastro',
  26 + ];
  27 +
  28 + /**
  29 + * @var bool
  30 + */
  31 + public $timestamps = false;
  32 +
  33 + /**
  34 + * @return string
  35 + */
  36 + public function getNameAttribute()
  37 + {
  38 + return $this->nm_serie;
  39 + }
  40 +
  41 + /**
  42 + * @return int
  43 + */
  44 + public function getCourseIdAttribute()
  45 + {
  46 + return $this->ref_cod_curso;
  47 + }
  48 +
  49 + /**
  50 + * @return BelongsToMany
  51 + */
  52 + public function evaluationRules()
  53 + {
  54 + return $this->belongsToMany(
  55 + LegacyEvaluationRule::class,
  56 + 'modules.regra_avaliacao_serie_ano',
  57 + 'serie_id',
  58 + 'regra_avaliacao_id'
  59 + )->withPivot('ano_letivo', 'regra_avaliacao_diferenciada_id');
  60 + }
  61 +
  62 + /**
  63 + * Relacionamento com o curso.
  64 + *
  65 + * @return BelongsTo
  66 + */
  67 + public function course()
  68 + {
  69 + return $this->belongsTo(LegacyCourse::class, 'ref_cod_curso');
  70 + }
  71 +}
... ...
app/Models/LegacyIndividual.php
... ... @@ -2,6 +2,7 @@
2 2  
3 3 namespace App\Models;
4 4  
  5 +use Illuminate\Database\Eloquent\Relations\BelongsTo;
5 6 use Prettus\Repository\Contracts\Transformable;
6 7 use Prettus\Repository\Traits\TransformableTrait;
7 8  
... ... @@ -28,11 +29,97 @@ class LegacyIndividual extends EloquentBaseModel implements Transformable
28 29 * @var array
29 30 */
30 31 protected $fillable = [
31   - 'idpes', 'data_cad', 'operacao', 'origem_gravacao',
  32 + 'idpes',
  33 + 'data_nasc',
  34 + 'sexo',
  35 + 'idpes_mae',
  36 + 'idpes_pai',
  37 + 'idpes_responsavel',
  38 + 'idesco',
  39 + 'ideciv',
  40 + 'idpes_con',
  41 + 'data_uniao',
  42 + 'data_obito',
  43 + 'nacionalidade',
  44 + 'idpais_estrangeiro',
  45 + 'data_chegada_brasil',
  46 + 'idmun_nascimento',
  47 + 'ultima_empresa',
  48 + 'idocup',
  49 + 'nome_mae',
  50 + 'nome_pai',
  51 + 'nome_conjuge',
  52 + 'nome_responsavel',
  53 + 'justificativa_provisorio',
  54 + 'idpes_rev',
  55 + 'data_rev',
  56 + 'origem_gravacao',
  57 + 'idpes_cad',
  58 + 'data_cad',
  59 + 'operacao',
  60 + 'ref_cod_sistema',
  61 + 'cpf',
  62 + 'ref_cod_religiao',
  63 + 'nis_pis_pasep',
  64 + 'sus',
  65 + 'ocupacao',
  66 + 'empresa',
  67 + 'pessoa_contato',
  68 + 'renda_mensal',
  69 + 'data_admissao',
  70 + 'ddd_telefone_empresa',
  71 + 'telefone_empresa',
  72 + 'falecido',
  73 + 'ativo',
  74 + 'ref_usuario_exc',
  75 + 'data_exclusao',
  76 + 'zona_localizacao_censo',
  77 + 'tipo_trabalho',
  78 + 'local_trabalho',
  79 + 'horario_inicial_trabalho',
  80 + 'horario_final_trabalho',
  81 + 'nome_social',
  82 + 'pais_residencia',
  83 + 'localizacao_diferenciada',
32 84 ];
33 85  
34 86 /**
35 87 * @var bool
36 88 */
37 89 public $timestamps = false;
  90 +
  91 + /**
  92 + * @inheritDoc
  93 + */
  94 + protected static function boot()
  95 + {
  96 + parent::boot();
  97 +
  98 + static::creating(function ($model) {
  99 + $model->data_cad = now();
  100 + $model->origem_gravacao = 'M';
  101 + $model->operacao = 'I';
  102 + });
  103 + }
  104 +
  105 + /**
  106 + * @return BelongsTo
  107 + */
  108 + public function person()
  109 + {
  110 + return $this->belongsTo(LegacyPerson::class, 'idpes', 'idpes');
  111 + }
  112 +
  113 + /**
  114 + * @param string $cpf
  115 + *
  116 + * @return $this
  117 + */
  118 + public static function findByCpf($cpf)
  119 + {
  120 + $cpf = preg_replace('/[^0-9]/', '', $cpf);
  121 + $cpf = intval($cpf);
  122 +
  123 + return static::query()->where('cpf', $cpf)->first();
  124 + }
38 125 }
... ...
app/Models/LegacyLevel.php
... ... @@ -2,66 +2,12 @@
2 2  
3 3 namespace App\Models;
4 4  
5   -use Illuminate\Database\Eloquent\Model;
6   -use Illuminate\Database\Eloquent\Relations\BelongsTo;
7   -
8   -class LegacyLevel extends Model
  5 +/**
  6 + * @deprecated
  7 + *
  8 + * @see LegacyGrade
  9 + */
  10 +class LegacyLevel extends LegacyGrade
9 11 {
10   - /**
11   - * @var string
12   - */
13   - protected $table = 'pmieducar.serie';
14   -
15   - /**
16   - * @var string
17   - */
18   - protected $primaryKey = 'cod_serie';
19   -
20   - /**
21   - * @var array
22   - */
23   - protected $fillable = [
24   - 'nm_serie', 'ref_usuario_cad', 'ref_cod_curso', 'etapa_curso', 'carga_horaria', 'data_cadastro',
25   - ];
26   -
27   - /**
28   - * @var bool
29   - */
30   - public $timestamps = false;
31   -
32   - /**
33   - * @return string
34   - */
35   - public function getNameAttribute()
36   - {
37   - return $this->nm_serie;
38   - }
39   -
40   - public function getCourseIdAttribute()
41   - {
42   - return $this->ref_cod_curso;
43   - }
44   -
45   - /**
46   - * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
47   - */
48   - public function evaluationRules()
49   - {
50   - return $this->belongsToMany(
51   - LegacyEvaluationRule::class,
52   - 'modules.regra_avaliacao_serie_ano',
53   - 'serie_id',
54   - 'regra_avaliacao_id'
55   - )->withPivot('ano_letivo', 'regra_avaliacao_diferenciada_id');
56   - }
57 12  
58   - /**
59   - * Relacionamento com o curso.
60   - *
61   - * @return BelongsTo
62   - */
63   - public function course()
64   - {
65   - return $this->belongsTo(LegacyCourse::class, 'ref_cod_curso');
66   - }
67 13 }
... ...
app/Models/LegacyMaritalStatus.php 0 → 100644
... ... @@ -0,0 +1,30 @@
  1 +<?php
  2 +
  3 +namespace App\Models;
  4 +
  5 +use Illuminate\Database\Eloquent\Model;
  6 +
  7 +class LegacyMaritalStatus extends Model
  8 +{
  9 + /**
  10 + * @var string
  11 + */
  12 + protected $table = 'cadastro.estado_civil';
  13 +
  14 + /**
  15 + * @var string
  16 + */
  17 + protected $primaryKey = 'ideciv';
  18 +
  19 + /**
  20 + * @var array
  21 + */
  22 + protected $fillable = [
  23 + 'descricao',
  24 + ];
  25 +
  26 + /**
  27 + * @var bool
  28 + */
  29 + public $timestamps = false;
  30 +}
... ...
app/Models/LegacyNeighborhood.php 0 → 100644
... ... @@ -0,0 +1,56 @@
  1 +<?php
  2 +
  3 +namespace App\Models;
  4 +
  5 +use Illuminate\Database\Eloquent\Model;
  6 +
  7 +class LegacyNeighborhood extends Model
  8 +{
  9 + /**
  10 + * @var string
  11 + */
  12 + protected $table = 'public.bairro';
  13 +
  14 + /**
  15 + * @var string
  16 + */
  17 + protected $primaryKey = 'idbai';
  18 +
  19 + /**
  20 + * @var array
  21 + */
  22 + protected $fillable = [
  23 + 'idmun',
  24 + 'geom',
  25 + 'idbai',
  26 + 'nome',
  27 + 'idpes_rev',
  28 + 'data_rev',
  29 + 'origem_gravacao',
  30 + 'idpes_cad',
  31 + 'data_cad',
  32 + 'operacao',
  33 + 'zona_localizacao',
  34 + 'iddis',
  35 + 'idsetorbai',
  36 + ];
  37 +
  38 + /**
  39 + * @var bool
  40 + */
  41 + public $timestamps = false;
  42 +
  43 + /**
  44 + * @inheritDoc
  45 + */
  46 + protected static function boot()
  47 + {
  48 + parent::boot();
  49 +
  50 + static::creating(function ($model) {
  51 + $model->origem_gravacao = 'M';
  52 + $model->data_cad = now();
  53 + $model->operacao = 'I';
  54 + });
  55 + }
  56 +}
... ...
app/Models/LegacyPeriod.php 0 → 100644
... ... @@ -0,0 +1,33 @@
  1 +<?php
  2 +
  3 +namespace App\Models;
  4 +
  5 +use Illuminate\Database\Eloquent\Model;
  6 +
  7 +class LegacyPeriod extends Model
  8 +{
  9 + /**
  10 + * @var string
  11 + */
  12 + protected $table = 'pmieducar.turma_turno';
  13 +
  14 + /**
  15 + * @var array
  16 + */
  17 + protected $fillable = [
  18 + 'nome', 'ativo',
  19 + ];
  20 +
  21 + /**
  22 + * @var bool
  23 + */
  24 + public $timestamps = false;
  25 +
  26 + /**
  27 + * @return string
  28 + */
  29 + public function getNameAttribute()
  30 + {
  31 + return $this->nome;
  32 + }
  33 +}
... ...
app/Models/LegacyPerson.php
... ... @@ -35,6 +35,21 @@ class LegacyPerson extends EloquentBaseModel implements Transformable
35 35 public $timestamps = false;
36 36  
37 37 /**
  38 + * @inheritDoc
  39 + */
  40 + protected static function boot()
  41 + {
  42 + parent::boot();
  43 +
  44 + static::creating(function ($model) {
  45 + $model->data_cad = now();
  46 + $model->situacao = 'I';
  47 + $model->origem_gravacao = 'M';
  48 + $model->operacao = 'I';
  49 + });
  50 + }
  51 +
  52 + /**
38 53 * @return string
39 54 */
40 55 public function getNameAttribute()
... ...
app/Models/LegacyPersonAddress.php 0 → 100644
... ... @@ -0,0 +1,62 @@
  1 +<?php
  2 +
  3 +namespace App\Models;
  4 +
  5 +use Illuminate\Database\Eloquent\Model;
  6 +
  7 +class LegacyPersonAddress extends Model
  8 +{
  9 + /**
  10 + * @var string
  11 + */
  12 + protected $table = 'cadastro.endereco_pessoa';
  13 +
  14 + /**
  15 + * @var string
  16 + */
  17 + protected $primaryKey = 'idpes';
  18 +
  19 + /**
  20 + * @var array
  21 + */
  22 + protected $fillable = [
  23 + 'idpes',
  24 + 'tipo',
  25 + 'cep',
  26 + 'idlog',
  27 + 'numero',
  28 + 'letra',
  29 + 'complemento',
  30 + 'reside_desde',
  31 + 'idbai',
  32 + 'idpes_rev',
  33 + 'data_rev',
  34 + 'origem_gravacao',
  35 + 'idpes_cad',
  36 + 'data_cad',
  37 + 'operacao',
  38 + 'bloco',
  39 + 'andar',
  40 + 'apartamento',
  41 + 'observacoes',
  42 + ];
  43 +
  44 + /**
  45 + * @var bool
  46 + */
  47 + public $timestamps = false;
  48 +
  49 + /**
  50 + * @inheritDoc
  51 + */
  52 + protected static function boot()
  53 + {
  54 + parent::boot();
  55 +
  56 + static::creating(function ($model) {
  57 + $model->origem_gravacao = 'M';
  58 + $model->data_cad = now();
  59 + $model->operacao = 'I';
  60 + });
  61 + }
  62 +}
... ...
app/Models/LegacyPhone.php 0 → 100644
... ... @@ -0,0 +1,53 @@
  1 +<?php
  2 +
  3 +namespace App\Models;
  4 +
  5 +use Illuminate\Database\Eloquent\Model;
  6 +
  7 +class LegacyPhone extends Model
  8 +{
  9 + /**
  10 + * @var string
  11 + */
  12 + protected $table = 'cadastro.fone_pessoa';
  13 +
  14 + /**
  15 + * @var string
  16 + */
  17 + protected $primaryKey = 'idpes';
  18 +
  19 + /**
  20 + * @var array
  21 + */
  22 + protected $fillable = [
  23 + 'idpes',
  24 + 'tipo',
  25 + 'ddd',
  26 + 'fone',
  27 + 'idpes_rev',
  28 + 'data_rev',
  29 + 'origem_gravacao',
  30 + 'idpes_cad',
  31 + 'data_cad',
  32 + 'operacao',
  33 + ];
  34 +
  35 + /**
  36 + * @var bool
  37 + */
  38 + public $timestamps = false;
  39 +
  40 + /**
  41 + * @inheritDoc
  42 + */
  43 + protected static function boot()
  44 + {
  45 + parent::boot();
  46 +
  47 + static::creating(function ($model) {
  48 + $model->origem_gravacao = 'M';
  49 + $model->data_cad = now();
  50 + $model->operacao = 'I';
  51 + });
  52 + }
  53 +}
... ...
app/Models/LegacyPostalCodeAddress.php 0 → 100644
... ... @@ -0,0 +1,53 @@
  1 +<?php
  2 +
  3 +namespace App\Models;
  4 +
  5 +use Illuminate\Database\Eloquent\Model;
  6 +
  7 +class LegacyPostalCodeAddress extends Model
  8 +{
  9 + /**
  10 + * @var string
  11 + */
  12 + protected $table = 'urbano.cep_logradouro';
  13 +
  14 + /**
  15 + * @var string
  16 + */
  17 + protected $primaryKey = 'idlog';
  18 +
  19 + /**
  20 + * @var array
  21 + */
  22 + protected $fillable = [
  23 + 'cep',
  24 + 'idlog',
  25 + 'nroini',
  26 + 'nrofin',
  27 + 'idpes_rev',
  28 + 'data_rev',
  29 + 'origem_gravacao',
  30 + 'idpes_cad',
  31 + 'data_cad',
  32 + 'operacao',
  33 + ];
  34 +
  35 + /**
  36 + * @var bool
  37 + */
  38 + public $timestamps = false;
  39 +
  40 + /**
  41 + * @inheritDoc
  42 + */
  43 + protected static function boot()
  44 + {
  45 + parent::boot();
  46 +
  47 + static::creating(function ($model) {
  48 + $model->origem_gravacao = 'M';
  49 + $model->data_cad = now();
  50 + $model->operacao = 'I';
  51 + });
  52 + }
  53 +}
... ...
app/Models/LegacyPostalCodeAddressNeighborhood.php 0 → 100644
... ... @@ -0,0 +1,52 @@
  1 +<?php
  2 +
  3 +namespace App\Models;
  4 +
  5 +use Illuminate\Database\Eloquent\Model;
  6 +
  7 +class LegacyPostalCodeAddressNeighborhood extends Model
  8 +{
  9 + /**
  10 + * @var string
  11 + */
  12 + protected $table = 'urbano.cep_logradouro_bairro';
  13 +
  14 + /**
  15 + * @var string
  16 + */
  17 + protected $primaryKey = 'idlog';
  18 +
  19 + /**
  20 + * @var array
  21 + */
  22 + protected $fillable = [
  23 + 'idlog',
  24 + 'cep',
  25 + 'idbai',
  26 + 'idpes_rev',
  27 + 'data_rev',
  28 + 'origem_gravacao',
  29 + 'idpes_cad',
  30 + 'data_cad',
  31 + 'operacao',
  32 + ];
  33 +
  34 + /**
  35 + * @var bool
  36 + */
  37 + public $timestamps = false;
  38 +
  39 + /**
  40 + * @inheritDoc
  41 + */
  42 + protected static function boot()
  43 + {
  44 + parent::boot();
  45 +
  46 + static::creating(function ($model) {
  47 + $model->origem_gravacao = 'M';
  48 + $model->data_cad = now();
  49 + $model->operacao = 'I';
  50 + });
  51 + }
  52 +}
... ...
app/Models/LegacySchool.php
... ... @@ -5,6 +5,7 @@ namespace App\Models;
5 5 use Illuminate\Database\Eloquent\Model;
6 6 use Illuminate\Database\Eloquent\Relations\BelongsTo;
7 7 use Illuminate\Database\Eloquent\Relations\BelongsToMany;
  8 +use Illuminate\Database\Eloquent\Relations\HasMany;
8 9 use Illuminate\Support\Facades\DB;
9 10  
10 11 /**
... ... @@ -92,4 +93,25 @@ class LegacySchool extends Model
92 93 {
93 94 return DB::selectOne('SELECT relatorio.get_nome_escola(:escola) AS nome', ['escola' => $this->id])->nome;
94 95 }
  96 +
  97 + /**
  98 + * @return BelongsToMany
  99 + */
  100 + public function grades()
  101 + {
  102 + return $this->belongsToMany(
  103 + LegacyLevel::class,
  104 + 'pmieducar.escola_serie',
  105 + 'ref_cod_escola',
  106 + 'ref_cod_serie'
  107 + )->withPivot('ativo', 'anos_letivos');
  108 + }
  109 +
  110 + /**
  111 + * @return HasMany
  112 + */
  113 + public function schoolClasses()
  114 + {
  115 + return $this->hasMany(LegacySchoolClass::class, 'ref_ref_cod_escola');
  116 + }
95 117 }
... ...
app/Models/LegacyStudent.php
... ... @@ -21,7 +21,7 @@ class LegacyStudent extends Model
21 21 * @var array
22 22 */
23 23 protected $fillable = [
24   - 'ref_idpes', 'data_cadastro',
  24 + 'ref_idpes', 'data_cadastro', 'tipo_responsavel',
25 25 ];
26 26  
27 27 /**
... ... @@ -30,6 +30,26 @@ class LegacyStudent extends Model
30 30 public $timestamps = false;
31 31  
32 32 /**
  33 + * @inheritDoc
  34 + */
  35 + protected static function boot()
  36 + {
  37 + parent::boot();
  38 +
  39 + static::creating(function ($model) {
  40 + $model->data_cadastro = now();
  41 + });
  42 + }
  43 +
  44 + /**
  45 + * @return BelongsTo
  46 + */
  47 + public function individual()
  48 + {
  49 + return $this->belongsTo(LegacyIndividual::class, 'ref_idpes');
  50 + }
  51 +
  52 + /**
33 53 * @return BelongsTo
34 54 */
35 55 public function person()
... ...
app/Models/LegacyVacancyReservationCandidate.php 0 → 100644
... ... @@ -0,0 +1,84 @@
  1 +<?php
  2 +
  3 +namespace App\Models;
  4 +
  5 +use Illuminate\Database\Eloquent\Model;
  6 +use Illuminate\Database\Eloquent\Relations\BelongsTo;
  7 +
  8 +class LegacyVacancyReservationCandidate extends Model
  9 +{
  10 + /**
  11 + * @var string
  12 + */
  13 + protected $table = 'pmieducar.candidato_reserva_vaga';
  14 +
  15 + /**
  16 + * @var string
  17 + */
  18 + protected $primaryKey = 'cod_candidato_reserva_vaga';
  19 +
  20 + /**
  21 + * @var array
  22 + */
  23 + protected $fillable = [
  24 + 'ano_letivo',
  25 + 'data_solicitacao',
  26 + 'ref_cod_aluno',
  27 + 'ref_cod_serie',
  28 + 'ref_cod_turno',
  29 + 'ref_cod_pessoa_cad',
  30 + 'data_cad',
  31 + 'data_update',
  32 + 'ref_cod_matricula',
  33 + 'situacao',
  34 + 'data_situacao',
  35 + 'motivo',
  36 + 'ref_cod_escola',
  37 + 'quantidade_membros',
  38 + 'mae_fez_pre_natal',
  39 + 'membros_trabalham',
  40 + 'hora_solicitacao',
  41 + ];
  42 +
  43 + /**
  44 + * @var bool
  45 + */
  46 + public $timestamps = false;
  47 +
  48 + /**
  49 + * @inheritDoc
  50 + */
  51 + protected static function boot()
  52 + {
  53 + parent::boot();
  54 +
  55 + static::creating(function ($model) {
  56 + $model->data_situacao = now()->format('Y-m-d');
  57 + $model->hora_solicitacao = now()->format('H:i:s');
  58 + });
  59 + }
  60 +
  61 + /**
  62 + * @return BelongsTo
  63 + */
  64 + public function grade()
  65 + {
  66 + return $this->belongsTo(LegacyGrade::class, 'ref_cod_serie');
  67 + }
  68 +
  69 + /**
  70 + * @return BelongsTo
  71 + */
  72 + public function period()
  73 + {
  74 + return $this->belongsTo(LegacyPeriod::class, 'ref_cod_turno');
  75 + }
  76 +
  77 + /**
  78 + * @return BelongsTo
  79 + */
  80 + public function school()
  81 + {
  82 + return $this->belongsTo(LegacySchool::class, 'ref_cod_escola');
  83 + }
  84 +}
... ...
app/Process.php
... ... @@ -15,9 +15,11 @@ class Process
15 15  
16 16 const CONSULTAS = 9998890;
17 17  
  18 + const REGISTRATIONS = 578;
18 19 const ENROLLMENT_HISTORY = 1001;
19 20 const ATTENDED_CANDIDATE = 1002;
20 21 const BACK_TO_QUEUE = 1003;
  22 + const RECLASSIFY_REGISTRATION = 1004;
21 23 const UNDO_STUDENT_UNIFICATION = 2001;
22 24 const EXEMPTION_LIST = 2002;
23 25 }
... ...
app/Services/BackupUrlPresigner.php 0 → 100644
... ... @@ -0,0 +1,18 @@
  1 +<?php
  2 +
  3 +namespace App\Services;
  4 +
  5 +use Exception;
  6 +
  7 +class BackupUrlPresigner
  8 +{
  9 + public function getPresignedUrl(string $url) : string
  10 + {
  11 + switch (config('filesystems.cloud')) {
  12 + case 's3':
  13 + return (new S3BackupUrlPresigner())->getPresignedUrl($url);
  14 + default:
  15 + throw new Exception('Method BackupUrlPresigner::getPresignedUrl() not implemented for cloud filesystem: '. config('filesystems.cloud'));
  16 + }
  17 + }
  18 +}
... ...
app/Services/S3BackupUrlPresigner.php 0 → 100644
... ... @@ -0,0 +1,57 @@
  1 +<?php
  2 +
  3 +namespace App\Services;
  4 +
  5 +use Aws\Credentials\Credentials;
  6 +use Aws\S3\S3Client;
  7 +use Exception;
  8 +use Storage;
  9 +
  10 +class S3BackupUrlPresigner
  11 +{
  12 + public function getPresignedUrl(string $url) : string
  13 + {
  14 + $s3Client = $this->getClient($url);
  15 +
  16 + $command = $s3Client->getCommand('GetObject', [
  17 + 'Bucket' => $this->getBucketFromUrl($url),
  18 + 'Key' => $this->getKeyFromUrl($url),
  19 + ]);
  20 +
  21 + $request = $s3Client->createPresignedRequest($command, '+10 minutes');
  22 +
  23 + return (string) $request->getURI();
  24 + }
  25 +
  26 + private function getClient(string $url) : S3Client
  27 + {
  28 + $clientParameters = [
  29 + 'version' => 'latest',
  30 + 'region' => $this->getRegionFromUrl($url),
  31 + 'http' => [
  32 + 'connect_timeout' => 5
  33 + ],
  34 + ];
  35 +
  36 + if (config('filesystems.disks.s3.key') && config('filesystems.disks.s3.secret')) {
  37 + $clientParameters['credentials'] = new Credentials(config('filesystems.disks.s3.key'), config('filesystems.disks.s3.secret'));
  38 + }
  39 +
  40 + return new S3Client($clientParameters);
  41 + }
  42 +
  43 + private function getBucketFromUrl(string $url) : string
  44 + {
  45 + return explode('/', $url)[3];
  46 + }
  47 +
  48 + private function getKeyFromUrl(string $url) : string
  49 + {
  50 + return implode('/', array_slice(explode('/', $url), 4));
  51 + }
  52 +
  53 + private function getRegionFromUrl(string $url) : string
  54 + {
  55 + return substr(explode('.', explode('//', $url)[1])[0], 3);
  56 + }
  57 +}
... ...
app/Services/iDiarioService.php
... ... @@ -55,10 +55,14 @@ class iDiarioService
55 55 *
56 56 * @return bool
57 57 */
58   - public function getStepActivityByUnit(int $unitId, int $step): bool
  58 + public function getStepActivityByUnit(int $unitId, int $year, int $step): bool
59 59 {
60 60 try {
61   - $response = $this->get('/api/v2/step_activity', ['unity_id' => $unitId, 'step_number' => $step]);
  61 + $response = $this->get('/api/v2/step_activity', [
  62 + 'unity_id' => $unitId,
  63 + 'year' => $year,
  64 + 'step_number' => $step
  65 + ]);
62 66 $body = trim((string)$response->getBody());
63 67  
64 68 if ($body === 'true') {
... ... @@ -77,10 +81,14 @@ class iDiarioService
77 81 *
78 82 * @return bool
79 83 */
80   - public function getStepActivityByClassroom(int $classroomId, int $step): bool
  84 + public function getStepActivityByClassroom(int $classroomId, int $year, int $step): bool
81 85 {
82 86 try {
83   - $response = $this->get('/api/v2/step_activity', ['classroom_id' => $classroomId, 'step_number' => $step]);
  87 + $response = $this->get('/api/v2/step_activity', [
  88 + 'classroom_id' => $classroomId,
  89 + 'year' => $year,
  90 + 'step_number' => $step
  91 + ]);
84 92 $body = trim((string)$response->getBody());
85 93  
86 94 if ($body === 'true') {
... ...
bootstrap/app.php
... ... @@ -11,7 +11,7 @@
11 11 |
12 12 */
13 13  
14   -$app = new Illuminate\Foundation\Application(
  14 +$app = new App\Extensions\Application(
15 15 $_ENV['APP_BASE_PATH'] ?? dirname(__DIR__)
16 16 );
17 17  
... ...
composer.json
... ... @@ -14,24 +14,27 @@
14 14 "ext-gd": "*",
15 15 "ext-json": "*",
16 16 "ext-pgsql": "*",
  17 + "aws/aws-sdk-php-laravel": "^3.4",
  18 + "barryvdh/laravel-cors": "^0.11.4",
17 19 "cocur/slugify": "^3.1",
18 20 "composer/semver": "^1.4",
19 21 "cossou/jasperphp": "^2.7",
20 22 "doctrine/dbal": "^2.9",
  23 + "edersoares/laravel-plug-and-play": "^1.0",
21 24 "fideloper/proxy": "^4.0",
22 25 "google/recaptcha": "^1.2",
23 26 "guzzlehttp/guzzle": "^6.3",
24 27 "honeybadger-io/honeybadger-laravel": "^1.4",
25 28 "laravel/framework": "5.8.*",
26 29 "laravel/tinker": "^1.0",
  30 + "league/flysystem-aws-s3-v3": "~1.0",
  31 + "league/flysystem-cached-adapter": "~1.0",
27 32 "maatwebsite/excel": "^3.1",
28 33 "phpoffice/phpspreadsheet": "^1.6",
29 34 "predis/predis": "^1.1",
30 35 "prettus/l5-repository": "^2.6",
31 36 "swiftmailer/swiftmailer": "^6.1",
32   - "tooleks/laravel-asset-version": "^1.0",
33   - "league/flysystem-aws-s3-v3": "~1.0",
34   - "league/flysystem-cached-adapter": "~1.0"
  37 + "tooleks/laravel-asset-version": "^1.0"
35 38 },
36 39 "require-dev": {
37 40 "barryvdh/laravel-debugbar": "^3.2",
... ... @@ -81,6 +84,11 @@
81 84 "laravel/telescope",
82 85 "barryvdh/laravel-debugbar"
83 86 ]
  87 + },
  88 + "merge-plugin": {
  89 + "include": [
  90 + "packages/*/*/composer.json"
  91 + ]
84 92 }
85 93 },
86 94 "scripts": {
... ...
composer.lock
... ... @@ -4,20 +4,72 @@
4 4 "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
5 5 "This file is @generated automatically"
6 6 ],
7   - "content-hash": "67141df1d8ac1c6225bdf16215518566",
  7 + "content-hash": "723270812ec0d482a57df66262869817",
8 8 "packages": [
9 9 {
  10 + "name": "asm89/stack-cors",
  11 + "version": "1.2.0",
  12 + "source": {
  13 + "type": "git",
  14 + "url": "https://github.com/asm89/stack-cors.git",
  15 + "reference": "c163e2b614550aedcf71165db2473d936abbced6"
  16 + },
  17 + "dist": {
  18 + "type": "zip",
  19 + "url": "https://api.github.com/repos/asm89/stack-cors/zipball/c163e2b614550aedcf71165db2473d936abbced6",
  20 + "reference": "c163e2b614550aedcf71165db2473d936abbced6",
  21 + "shasum": ""
  22 + },
  23 + "require": {
  24 + "php": ">=5.5.9",
  25 + "symfony/http-foundation": "~2.7|~3.0|~4.0",
  26 + "symfony/http-kernel": "~2.7|~3.0|~4.0"
  27 + },
  28 + "require-dev": {
  29 + "phpunit/phpunit": "^5.0 || ^4.8.10",
  30 + "squizlabs/php_codesniffer": "^2.3"
  31 + },
  32 + "type": "library",
  33 + "extra": {
  34 + "branch-alias": {
  35 + "dev-master": "1.2-dev"
  36 + }
  37 + },
  38 + "autoload": {
  39 + "psr-4": {
  40 + "Asm89\\Stack\\": "src/Asm89/Stack/"
  41 + }
  42 + },
  43 + "notification-url": "https://packagist.org/downloads/",
  44 + "license": [
  45 + "MIT"
  46 + ],
  47 + "authors": [
  48 + {
  49 + "name": "Alexander",
  50 + "email": "iam.asm89@gmail.com"
  51 + }
  52 + ],
  53 + "description": "Cross-origin resource sharing library and stack middleware",
  54 + "homepage": "https://github.com/asm89/stack-cors",
  55 + "keywords": [
  56 + "cors",
  57 + "stack"
  58 + ],
  59 + "time": "2017-12-20T14:37:45+00:00"
  60 + },
  61 + {
10 62 "name": "aws/aws-sdk-php",
11   - "version": "3.112.28",
  63 + "version": "3.115.0",
12 64 "source": {
13 65 "type": "git",
14 66 "url": "https://github.com/aws/aws-sdk-php.git",
15   - "reference": "dabae6df3fd53b470da8806d641d05dbb66859da"
  67 + "reference": "c705a740705bdfb7c23394a3a92adb2fe13fe149"
16 68 },
17 69 "dist": {
18 70 "type": "zip",
19   - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/dabae6df3fd53b470da8806d641d05dbb66859da",
20   - "reference": "dabae6df3fd53b470da8806d641d05dbb66859da",
  71 + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/c705a740705bdfb7c23394a3a92adb2fe13fe149",
  72 + "reference": "c705a740705bdfb7c23394a3a92adb2fe13fe149",
21 73 "shasum": ""
22 74 },
23 75 "require": {
... ... @@ -87,7 +139,136 @@
87 139 "s3",
88 140 "sdk"
89 141 ],
90   - "time": "2019-10-24T18:14:24+00:00"
  142 + "time": "2019-11-07T19:27:35+00:00"
  143 + },
  144 + {
  145 + "name": "aws/aws-sdk-php-laravel",
  146 + "version": "3.4.0",
  147 + "source": {
  148 + "type": "git",
  149 + "url": "https://github.com/aws/aws-sdk-php-laravel.git",
  150 + "reference": "90f72efd7ec85c1141b397079112f58e0ca0143b"
  151 + },
  152 + "dist": {
  153 + "type": "zip",
  154 + "url": "https://api.github.com/repos/aws/aws-sdk-php-laravel/zipball/90f72efd7ec85c1141b397079112f58e0ca0143b",
  155 + "reference": "90f72efd7ec85c1141b397079112f58e0ca0143b",
  156 + "shasum": ""
  157 + },
  158 + "require": {
  159 + "aws/aws-sdk-php": "~3.0",
  160 + "illuminate/support": "~5.1|~6.0",
  161 + "php": ">=5.5.9"
  162 + },
  163 + "require-dev": {
  164 + "phpunit/phpunit": "~4.0|~5.0",
  165 + "vlucas/phpdotenv": "~2.0|~3.0"
  166 + },
  167 + "suggest": {
  168 + "laravel/framework": "To test the Laravel bindings",
  169 + "laravel/lumen-framework": "To test the Lumen bindings"
  170 + },
  171 + "type": "library",
  172 + "extra": {
  173 + "laravel": {
  174 + "providers": [
  175 + "Aws\\Laravel\\AwsServiceProvider"
  176 + ],
  177 + "aliases": {
  178 + "AWS": "Aws\\Laravel\\AwsFacade"
  179 + }
  180 + }
  181 + },
  182 + "autoload": {
  183 + "psr-4": {
  184 + "Aws\\Laravel\\": "src/"
  185 + }
  186 + },
  187 + "notification-url": "https://packagist.org/downloads/",
  188 + "license": [
  189 + "Apache-2.0"
  190 + ],
  191 + "authors": [
  192 + {
  193 + "name": "Amazon Web Services",
  194 + "homepage": "http://aws.amazon.com"
  195 + }
  196 + ],
  197 + "description": "A simple Laravel 5 service provider for including the AWS SDK for PHP.",
  198 + "homepage": "http://aws.amazon.com/sdkforphp2",
  199 + "keywords": [
  200 + "amazon",
  201 + "aws",
  202 + "dynamodb",
  203 + "ec2",
  204 + "laravel",
  205 + "laravel 5",
  206 + "s3",
  207 + "sdk"
  208 + ],
  209 + "time": "2019-09-09T21:00:25+00:00"
  210 + },
  211 + {
  212 + "name": "barryvdh/laravel-cors",
  213 + "version": "v0.11.4",
  214 + "source": {
  215 + "type": "git",
  216 + "url": "https://github.com/barryvdh/laravel-cors.git",
  217 + "reference": "03492f1a3bc74a05de23f93b94ac7cc5c173eec9"
  218 + },
  219 + "dist": {
  220 + "type": "zip",
  221 + "url": "https://api.github.com/repos/barryvdh/laravel-cors/zipball/03492f1a3bc74a05de23f93b94ac7cc5c173eec9",
  222 + "reference": "03492f1a3bc74a05de23f93b94ac7cc5c173eec9",
  223 + "shasum": ""
  224 + },
  225 + "require": {
  226 + "asm89/stack-cors": "^1.2",
  227 + "illuminate/support": "^5.5|^6",
  228 + "php": ">=7",
  229 + "symfony/http-foundation": "^3.1|^4",
  230 + "symfony/http-kernel": "^3.1|^4"
  231 + },
  232 + "require-dev": {
  233 + "laravel/framework": "^5.5",
  234 + "orchestra/testbench": "3.3.x|3.4.x|3.5.x|3.6.x|3.7.x",
  235 + "phpunit/phpunit": "^4.8|^5.2|^7.0",
  236 + "squizlabs/php_codesniffer": "^2.3"
  237 + },
  238 + "type": "library",
  239 + "extra": {
  240 + "branch-alias": {
  241 + "dev-master": "0.11-dev"
  242 + },
  243 + "laravel": {
  244 + "providers": [
  245 + "Barryvdh\\Cors\\ServiceProvider"
  246 + ]
  247 + }
  248 + },
  249 + "autoload": {
  250 + "psr-4": {
  251 + "Barryvdh\\Cors\\": "src/"
  252 + }
  253 + },
  254 + "notification-url": "https://packagist.org/downloads/",
  255 + "license": [
  256 + "MIT"
  257 + ],
  258 + "authors": [
  259 + {
  260 + "name": "Barry vd. Heuvel",
  261 + "email": "barryvdh@gmail.com"
  262 + }
  263 + ],
  264 + "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application",
  265 + "keywords": [
  266 + "api",
  267 + "cors",
  268 + "crossdomain",
  269 + "laravel"
  270 + ],
  271 + "time": "2019-08-28T11:27:11+00:00"
91 272 },
92 273 {
93 274 "name": "cocur/slugify",
... ... @@ -292,16 +473,16 @@
292 473 },
293 474 {
294 475 "name": "doctrine/cache",
295   - "version": "v1.8.0",
  476 + "version": "v1.8.1",
296 477 "source": {
297 478 "type": "git",
298 479 "url": "https://github.com/doctrine/cache.git",
299   - "reference": "d768d58baee9a4862ca783840eca1b9add7a7f57"
  480 + "reference": "d4374ae95b36062d02ef310100ed33d78738d76c"
300 481 },
301 482 "dist": {
302 483 "type": "zip",
303   - "url": "https://api.github.com/repos/doctrine/cache/zipball/d768d58baee9a4862ca783840eca1b9add7a7f57",
304   - "reference": "d768d58baee9a4862ca783840eca1b9add7a7f57",
  484 + "url": "https://api.github.com/repos/doctrine/cache/zipball/d4374ae95b36062d02ef310100ed33d78738d76c",
  485 + "reference": "d4374ae95b36062d02ef310100ed33d78738d76c",
305 486 "shasum": ""
306 487 },
307 488 "require": {
... ... @@ -337,6 +518,10 @@
337 518 ],
338 519 "authors": [
339 520 {
  521 + "name": "Guilherme Blanco",
  522 + "email": "guilhermeblanco@gmail.com"
  523 + },
  524 + {
340 525 "name": "Roman Borschel",
341 526 "email": "roman@code-factory.org"
342 527 },
... ... @@ -345,10 +530,6 @@
345 530 "email": "kontakt@beberlei.de"
346 531 },
347 532 {
348   - "name": "Guilherme Blanco",
349   - "email": "guilhermeblanco@gmail.com"
350   - },
351   - {
352 533 "name": "Jonathan Wage",
353 534 "email": "jonwage@gmail.com"
354 535 },
... ... @@ -363,35 +544,34 @@
363 544 "cache",
364 545 "caching"
365 546 ],
366   - "time": "2018-08-21T18:01:43+00:00"
  547 + "time": "2019-10-28T09:31:32+00:00"
367 548 },
368 549 {
369 550 "name": "doctrine/dbal",
370   - "version": "v2.9.2",
  551 + "version": "v2.10.0",
371 552 "source": {
372 553 "type": "git",
373 554 "url": "https://github.com/doctrine/dbal.git",
374   - "reference": "22800bd651c1d8d2a9719e2a3dc46d5108ebfcc9"
  555 + "reference": "0c9a646775ef549eb0a213a4f9bd4381d9b4d934"
375 556 },
376 557 "dist": {
377 558 "type": "zip",
378   - "url": "https://api.github.com/repos/doctrine/dbal/zipball/22800bd651c1d8d2a9719e2a3dc46d5108ebfcc9",
379   - "reference": "22800bd651c1d8d2a9719e2a3dc46d5108ebfcc9",
  559 + "url": "https://api.github.com/repos/doctrine/dbal/zipball/0c9a646775ef549eb0a213a4f9bd4381d9b4d934",
  560 + "reference": "0c9a646775ef549eb0a213a4f9bd4381d9b4d934",
380 561 "shasum": ""
381 562 },
382 563 "require": {
383 564 "doctrine/cache": "^1.0",
384 565 "doctrine/event-manager": "^1.0",
385 566 "ext-pdo": "*",
386   - "php": "^7.1"
  567 + "php": "^7.2"
387 568 },
388 569 "require-dev": {
389   - "doctrine/coding-standard": "^5.0",
390   - "jetbrains/phpstorm-stubs": "^2018.1.2",
391   - "phpstan/phpstan": "^0.10.1",
392   - "phpunit/phpunit": "^7.4",
393   - "symfony/console": "^2.0.5|^3.0|^4.0",
394   - "symfony/phpunit-bridge": "^3.4.5|^4.0.5"
  570 + "doctrine/coding-standard": "^6.0",
  571 + "jetbrains/phpstorm-stubs": "^2019.1",
  572 + "phpstan/phpstan": "^0.11.3",
  573 + "phpunit/phpunit": "^8.4.1",
  574 + "symfony/console": "^2.0.5|^3.0|^4.0|^5.0"
395 575 },
396 576 "suggest": {
397 577 "symfony/console": "For helpful console commands such as SQL execution and import of files."
... ... @@ -402,7 +582,7 @@
402 582 "type": "library",
403 583 "extra": {
404 584 "branch-alias": {
405   - "dev-master": "2.9.x-dev",
  585 + "dev-master": "2.10.x-dev",
406 586 "dev-develop": "3.0.x-dev"
407 587 }
408 588 },
... ... @@ -417,6 +597,10 @@
417 597 ],
418 598 "authors": [
419 599 {
  600 + "name": "Guilherme Blanco",
  601 + "email": "guilhermeblanco@gmail.com"
  602 + },
  603 + {
420 604 "name": "Roman Borschel",
421 605 "email": "roman@code-factory.org"
422 606 },
... ... @@ -425,10 +609,6 @@
425 609 "email": "kontakt@beberlei.de"
426 610 },
427 611 {
428   - "name": "Guilherme Blanco",
429   - "email": "guilhermeblanco@gmail.com"
430   - },
431   - {
432 612 "name": "Jonathan Wage",
433 613 "email": "jonwage@gmail.com"
434 614 }
... ... @@ -438,14 +618,25 @@
438 618 "keywords": [
439 619 "abstraction",
440 620 "database",
  621 + "db2",
441 622 "dbal",
  623 + "mariadb",
  624 + "mssql",
442 625 "mysql",
443   - "persistence",
  626 + "oci8",
  627 + "oracle",
  628 + "pdo",
444 629 "pgsql",
445   - "php",
446   - "queryobject"
447   - ],
448   - "time": "2018-12-31T03:27:51+00:00"
  630 + "postgresql",
  631 + "queryobject",
  632 + "sasql",
  633 + "sql",
  634 + "sqlanywhere",
  635 + "sqlite",
  636 + "sqlserver",
  637 + "sqlsrv"
  638 + ],
  639 + "time": "2019-11-03T16:50:43+00:00"
449 640 },
450 641 {
451 642 "name": "doctrine/event-manager",
... ... @@ -705,6 +896,57 @@
705 896 "time": "2019-03-31T00:38:28+00:00"
706 897 },
707 898 {
  899 + "name": "edersoares/laravel-plug-and-play",
  900 + "version": "1.0.0",
  901 + "source": {
  902 + "type": "git",
  903 + "url": "https://github.com/edersoares/laravel-plug-and-play.git",
  904 + "reference": "80e07938a0cc06e4dbf79a7cd0d533109cd31c70"
  905 + },
  906 + "dist": {
  907 + "type": "zip",
  908 + "url": "https://api.github.com/repos/edersoares/laravel-plug-and-play/zipball/80e07938a0cc06e4dbf79a7cd0d533109cd31c70",
  909 + "reference": "80e07938a0cc06e4dbf79a7cd0d533109cd31c70",
  910 + "shasum": ""
  911 + },
  912 + "require": {
  913 + "composer-plugin-api": "^1.1",
  914 + "ext-json": "*",
  915 + "laravel/framework": "~5.5|~6",
  916 + "php": ">=7.0.0",
  917 + "wikimedia/composer-merge-plugin": "^1.4"
  918 + },
  919 + "type": "composer-plugin",
  920 + "extra": {
  921 + "branch-alias": [],
  922 + "class": "Wikimedia\\Composer\\MergePlugin",
  923 + "laravel": {
  924 + "providers": [
  925 + "EderSoares\\Laravel\\PlugAndPlay\\PlugAndPlayServiceProvider"
  926 + ]
  927 + }
  928 + },
  929 + "autoload": {
  930 + "psr-4": {
  931 + "EderSoares\\Laravel\\PlugAndPlay\\": "src/"
  932 + }
  933 + },
  934 + "notification-url": "https://packagist.org/downloads/",
  935 + "license": [
  936 + "MIT"
  937 + ],
  938 + "authors": [
  939 + {
  940 + "name": "Eder Soares",
  941 + "email": "edersoares@me.com",
  942 + "homepage": "https://edersoares.me",
  943 + "role": "Developer"
  944 + }
  945 + ],
  946 + "description": "Plug and play packages in Laravel",
  947 + "time": "2019-10-22T02:54:46+00:00"
  948 + },
  949 + {
708 950 "name": "egulias/email-validator",
709 951 "version": "2.1.11",
710 952 "source": {
... ... @@ -2066,16 +2308,16 @@
2066 2308 },
2067 2309 {
2068 2310 "name": "nesbot/carbon",
2069   - "version": "2.25.3",
  2311 + "version": "2.26.0",
2070 2312 "source": {
2071 2313 "type": "git",
2072 2314 "url": "https://github.com/briannesbitt/Carbon.git",
2073   - "reference": "d07636581795383e2fea2d711212d30f941f2039"
  2315 + "reference": "e01ecc0b71168febb52ae1fdc1cfcc95428e604e"
2074 2316 },
2075 2317 "dist": {
2076 2318 "type": "zip",
2077   - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/d07636581795383e2fea2d711212d30f941f2039",
2078   - "reference": "d07636581795383e2fea2d711212d30f941f2039",
  2319 + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/e01ecc0b71168febb52ae1fdc1cfcc95428e604e",
  2320 + "reference": "e01ecc0b71168febb52ae1fdc1cfcc95428e604e",
2079 2321 "shasum": ""
2080 2322 },
2081 2323 "require": {
... ... @@ -2129,20 +2371,20 @@
2129 2371 "datetime",
2130 2372 "time"
2131 2373 ],
2132   - "time": "2019-10-20T11:05:44+00:00"
  2374 + "time": "2019-10-21T21:32:25+00:00"
2133 2375 },
2134 2376 {
2135 2377 "name": "nikic/php-parser",
2136   - "version": "v4.2.4",
  2378 + "version": "v4.3.0",
2137 2379 "source": {
2138 2380 "type": "git",
2139 2381 "url": "https://github.com/nikic/PHP-Parser.git",
2140   - "reference": "97e59c7a16464196a8b9c77c47df68e4a39a45c4"
  2382 + "reference": "9a9981c347c5c49d6dfe5cf826bb882b824080dc"
2141 2383 },
2142 2384 "dist": {
2143 2385 "type": "zip",
2144   - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/97e59c7a16464196a8b9c77c47df68e4a39a45c4",
2145   - "reference": "97e59c7a16464196a8b9c77c47df68e4a39a45c4",
  2386 + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/9a9981c347c5c49d6dfe5cf826bb882b824080dc",
  2387 + "reference": "9a9981c347c5c49d6dfe5cf826bb882b824080dc",
2146 2388 "shasum": ""
2147 2389 },
2148 2390 "require": {
... ... @@ -2150,6 +2392,7 @@
2150 2392 "php": ">=7.0"
2151 2393 },
2152 2394 "require-dev": {
  2395 + "ircmaxell/php-yacc": "0.0.5",
2153 2396 "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0"
2154 2397 },
2155 2398 "bin": [
... ... @@ -2158,7 +2401,7 @@
2158 2401 "type": "library",
2159 2402 "extra": {
2160 2403 "branch-alias": {
2161   - "dev-master": "4.2-dev"
  2404 + "dev-master": "4.3-dev"
2162 2405 }
2163 2406 },
2164 2407 "autoload": {
... ... @@ -2180,7 +2423,7 @@
2180 2423 "parser",
2181 2424 "php"
2182 2425 ],
2183   - "time": "2019-09-01T07:51:21+00:00"
  2426 + "time": "2019-11-08T13:50:10+00:00"
2184 2427 },
2185 2428 {
2186 2429 "name": "opis/closure",
... ... @@ -2383,28 +2626,28 @@
2383 2626 },
2384 2627 {
2385 2628 "name": "phpoption/phpoption",
2386   - "version": "1.5.0",
  2629 + "version": "1.5.2",
2387 2630 "source": {
2388 2631 "type": "git",
2389 2632 "url": "https://github.com/schmittjoh/php-option.git",
2390   - "reference": "94e644f7d2051a5f0fcf77d81605f152eecff0ed"
  2633 + "reference": "2ba2586380f8d2b44ad1b9feb61c371020b27793"
2391 2634 },
2392 2635 "dist": {
2393 2636 "type": "zip",
2394   - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/94e644f7d2051a5f0fcf77d81605f152eecff0ed",
2395   - "reference": "94e644f7d2051a5f0fcf77d81605f152eecff0ed",
  2637 + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/2ba2586380f8d2b44ad1b9feb61c371020b27793",
  2638 + "reference": "2ba2586380f8d2b44ad1b9feb61c371020b27793",
2396 2639 "shasum": ""
2397 2640 },
2398 2641 "require": {
2399 2642 "php": ">=5.3.0"
2400 2643 },
2401 2644 "require-dev": {
2402   - "phpunit/phpunit": "4.7.*"
  2645 + "phpunit/phpunit": "^4.7|^5.0"
2403 2646 },
2404 2647 "type": "library",
2405 2648 "extra": {
2406 2649 "branch-alias": {
2407   - "dev-master": "1.3-dev"
  2650 + "dev-master": "1.5-dev"
2408 2651 }
2409 2652 },
2410 2653 "autoload": {
... ... @@ -2414,7 +2657,7 @@
2414 2657 },
2415 2658 "notification-url": "https://packagist.org/downloads/",
2416 2659 "license": [
2417   - "Apache2"
  2660 + "Apache-2.0"
2418 2661 ],
2419 2662 "authors": [
2420 2663 {
... ... @@ -2429,7 +2672,7 @@
2429 2672 "php",
2430 2673 "type"
2431 2674 ],
2432   - "time": "2015-07-25T16:39:46+00:00"
  2675 + "time": "2019-11-06T22:27:00+00:00"
2433 2676 },
2434 2677 {
2435 2678 "name": "predis/predis",
... ... @@ -2736,16 +2979,16 @@
2736 2979 },
2737 2980 {
2738 2981 "name": "psr/log",
2739   - "version": "1.1.1",
  2982 + "version": "1.1.2",
2740 2983 "source": {
2741 2984 "type": "git",
2742 2985 "url": "https://github.com/php-fig/log.git",
2743   - "reference": "bf73deb2b3b896a9d9c75f3f0d88185d2faa27e2"
  2986 + "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801"
2744 2987 },
2745 2988 "dist": {
2746 2989 "type": "zip",
2747   - "url": "https://api.github.com/repos/php-fig/log/zipball/bf73deb2b3b896a9d9c75f3f0d88185d2faa27e2",
2748   - "reference": "bf73deb2b3b896a9d9c75f3f0d88185d2faa27e2",
  2990 + "url": "https://api.github.com/repos/php-fig/log/zipball/446d54b4cb6bf489fc9d75f55843658e6f25d801",
  2991 + "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801",
2749 2992 "shasum": ""
2750 2993 },
2751 2994 "require": {
... ... @@ -2779,7 +3022,7 @@
2779 3022 "psr",
2780 3023 "psr-3"
2781 3024 ],
2782   - "time": "2019-10-25T08:06:51+00:00"
  3025 + "time": "2019-11-01T11:05:21+00:00"
2783 3026 },
2784 3027 {
2785 3028 "name": "psr/simple-cache",
... ... @@ -3139,16 +3382,16 @@
3139 3382 },
3140 3383 {
3141 3384 "name": "symfony/console",
3142   - "version": "v4.3.5",
  3385 + "version": "v4.3.6",
3143 3386 "source": {
3144 3387 "type": "git",
3145 3388 "url": "https://github.com/symfony/console.git",
3146   - "reference": "929ddf360d401b958f611d44e726094ab46a7369"
  3389 + "reference": "136c4bd62ea871d00843d1bc0316de4c4a84bb78"
3147 3390 },
3148 3391 "dist": {
3149 3392 "type": "zip",
3150   - "url": "https://api.github.com/repos/symfony/console/zipball/929ddf360d401b958f611d44e726094ab46a7369",
3151   - "reference": "929ddf360d401b958f611d44e726094ab46a7369",
  3393 + "url": "https://api.github.com/repos/symfony/console/zipball/136c4bd62ea871d00843d1bc0316de4c4a84bb78",
  3394 + "reference": "136c4bd62ea871d00843d1bc0316de4c4a84bb78",
3152 3395 "shasum": ""
3153 3396 },
3154 3397 "require": {
... ... @@ -3210,11 +3453,11 @@
3210 3453 ],
3211 3454 "description": "Symfony Console Component",
3212 3455 "homepage": "https://symfony.com",
3213   - "time": "2019-10-07T12:36:49+00:00"
  3456 + "time": "2019-10-30T12:58:49+00:00"
3214 3457 },
3215 3458 {
3216 3459 "name": "symfony/css-selector",
3217   - "version": "v4.3.5",
  3460 + "version": "v4.3.6",
3218 3461 "source": {
3219 3462 "type": "git",
3220 3463 "url": "https://github.com/symfony/css-selector.git",
... ... @@ -3267,16 +3510,16 @@
3267 3510 },
3268 3511 {
3269 3512 "name": "symfony/debug",
3270   - "version": "v4.3.5",
  3513 + "version": "v4.3.6",
3271 3514 "source": {
3272 3515 "type": "git",
3273 3516 "url": "https://github.com/symfony/debug.git",
3274   - "reference": "cc5c1efd0edfcfd10b354750594a46b3dd2afbbe"
  3517 + "reference": "5ea9c3e01989a86ceaa0283f21234b12deadf5e2"
3275 3518 },
3276 3519 "dist": {
3277 3520 "type": "zip",
3278   - "url": "https://api.github.com/repos/symfony/debug/zipball/cc5c1efd0edfcfd10b354750594a46b3dd2afbbe",
3279   - "reference": "cc5c1efd0edfcfd10b354750594a46b3dd2afbbe",
  3521 + "url": "https://api.github.com/repos/symfony/debug/zipball/5ea9c3e01989a86ceaa0283f21234b12deadf5e2",
  3522 + "reference": "5ea9c3e01989a86ceaa0283f21234b12deadf5e2",
3280 3523 "shasum": ""
3281 3524 },
3282 3525 "require": {
... ... @@ -3319,11 +3562,11 @@
3319 3562 ],
3320 3563 "description": "Symfony Debug Component",
3321 3564 "homepage": "https://symfony.com",
3322   - "time": "2019-09-19T15:51:53+00:00"
  3565 + "time": "2019-10-28T17:07:32+00:00"
3323 3566 },
3324 3567 {
3325 3568 "name": "symfony/event-dispatcher",
3326   - "version": "v4.3.5",
  3569 + "version": "v4.3.6",
3327 3570 "source": {
3328 3571 "type": "git",
3329 3572 "url": "https://github.com/symfony/event-dispatcher.git",
... ... @@ -3451,16 +3694,16 @@
3451 3694 },
3452 3695 {
3453 3696 "name": "symfony/finder",
3454   - "version": "v4.3.5",
  3697 + "version": "v4.3.6",
3455 3698 "source": {
3456 3699 "type": "git",
3457 3700 "url": "https://github.com/symfony/finder.git",
3458   - "reference": "5e575faa95548d0586f6bedaeabec259714e44d1"
  3701 + "reference": "72a068f77e317ae77c0a0495236ad292cfb5ce6f"
3459 3702 },
3460 3703 "dist": {
3461 3704 "type": "zip",
3462   - "url": "https://api.github.com/repos/symfony/finder/zipball/5e575faa95548d0586f6bedaeabec259714e44d1",
3463   - "reference": "5e575faa95548d0586f6bedaeabec259714e44d1",
  3705 + "url": "https://api.github.com/repos/symfony/finder/zipball/72a068f77e317ae77c0a0495236ad292cfb5ce6f",
  3706 + "reference": "72a068f77e317ae77c0a0495236ad292cfb5ce6f",
3464 3707 "shasum": ""
3465 3708 },
3466 3709 "require": {
... ... @@ -3496,20 +3739,20 @@
3496 3739 ],
3497 3740 "description": "Symfony Finder Component",
3498 3741 "homepage": "https://symfony.com",
3499   - "time": "2019-09-16T11:29:48+00:00"
  3742 + "time": "2019-10-30T12:53:54+00:00"
3500 3743 },
3501 3744 {
3502 3745 "name": "symfony/http-foundation",
3503   - "version": "v4.3.5",
  3746 + "version": "v4.3.6",
3504 3747 "source": {
3505 3748 "type": "git",
3506 3749 "url": "https://github.com/symfony/http-foundation.git",
3507   - "reference": "76590ced16d4674780863471bae10452b79210a5"
  3750 + "reference": "38f63e471cda9d37ac06e76d14c5ea2ec5887051"
3508 3751 },
3509 3752 "dist": {
3510 3753 "type": "zip",
3511   - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/76590ced16d4674780863471bae10452b79210a5",
3512   - "reference": "76590ced16d4674780863471bae10452b79210a5",
  3754 + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/38f63e471cda9d37ac06e76d14c5ea2ec5887051",
  3755 + "reference": "38f63e471cda9d37ac06e76d14c5ea2ec5887051",
3513 3756 "shasum": ""
3514 3757 },
3515 3758 "require": {
... ... @@ -3551,20 +3794,20 @@
3551 3794 ],
3552 3795 "description": "Symfony HttpFoundation Component",
3553 3796 "homepage": "https://symfony.com",
3554   - "time": "2019-10-04T19:48:13+00:00"
  3797 + "time": "2019-10-30T12:58:49+00:00"
3555 3798 },
3556 3799 {
3557 3800 "name": "symfony/http-kernel",
3558   - "version": "v4.3.5",
  3801 + "version": "v4.3.6",
3559 3802 "source": {
3560 3803 "type": "git",
3561 3804 "url": "https://github.com/symfony/http-kernel.git",
3562   - "reference": "5f08141850932e8019c01d8988bf3ed6367d2991"
  3805 + "reference": "56acfda9e734e8715b3b0e6859cdb4f5b28757bf"
3563 3806 },
3564 3807 "dist": {
3565 3808 "type": "zip",
3566   - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/5f08141850932e8019c01d8988bf3ed6367d2991",
3567   - "reference": "5f08141850932e8019c01d8988bf3ed6367d2991",
  3809 + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/56acfda9e734e8715b3b0e6859cdb4f5b28757bf",
  3810 + "reference": "56acfda9e734e8715b3b0e6859cdb4f5b28757bf",
3568 3811 "shasum": ""
3569 3812 },
3570 3813 "require": {
... ... @@ -3643,20 +3886,20 @@
3643 3886 ],
3644 3887 "description": "Symfony HttpKernel Component",
3645 3888 "homepage": "https://symfony.com",
3646   - "time": "2019-10-07T15:06:41+00:00"
  3889 + "time": "2019-11-01T10:00:03+00:00"
3647 3890 },
3648 3891 {
3649 3892 "name": "symfony/mime",
3650   - "version": "v4.3.5",
  3893 + "version": "v4.3.6",
3651 3894 "source": {
3652 3895 "type": "git",
3653 3896 "url": "https://github.com/symfony/mime.git",
3654   - "reference": "32f71570547b91879fdbd9cf50317d556ae86916"
  3897 + "reference": "3c0e197529da6e59b217615ba8ee7604df88b551"
3655 3898 },
3656 3899 "dist": {
3657 3900 "type": "zip",
3658   - "url": "https://api.github.com/repos/symfony/mime/zipball/32f71570547b91879fdbd9cf50317d556ae86916",
3659   - "reference": "32f71570547b91879fdbd9cf50317d556ae86916",
  3901 + "url": "https://api.github.com/repos/symfony/mime/zipball/3c0e197529da6e59b217615ba8ee7604df88b551",
  3902 + "reference": "3c0e197529da6e59b217615ba8ee7604df88b551",
3660 3903 "shasum": ""
3661 3904 },
3662 3905 "require": {
... ... @@ -3702,7 +3945,7 @@
3702 3945 "mime",
3703 3946 "mime-type"
3704 3947 ],
3705   - "time": "2019-09-19T17:00:15+00:00"
  3948 + "time": "2019-10-30T12:58:49+00:00"
3706 3949 },
3707 3950 {
3708 3951 "name": "symfony/polyfill-ctype",
... ... @@ -4057,16 +4300,16 @@
4057 4300 },
4058 4301 {
4059 4302 "name": "symfony/process",
4060   - "version": "v4.3.5",
  4303 + "version": "v4.3.6",
4061 4304 "source": {
4062 4305 "type": "git",
4063 4306 "url": "https://github.com/symfony/process.git",
4064   - "reference": "50556892f3cc47d4200bfd1075314139c4c9ff4b"
  4307 + "reference": "3b2e0cb029afbb0395034509291f21191d1a4db0"
4065 4308 },
4066 4309 "dist": {
4067 4310 "type": "zip",
4068   - "url": "https://api.github.com/repos/symfony/process/zipball/50556892f3cc47d4200bfd1075314139c4c9ff4b",
4069   - "reference": "50556892f3cc47d4200bfd1075314139c4c9ff4b",
  4311 + "url": "https://api.github.com/repos/symfony/process/zipball/3b2e0cb029afbb0395034509291f21191d1a4db0",
  4312 + "reference": "3b2e0cb029afbb0395034509291f21191d1a4db0",
4070 4313 "shasum": ""
4071 4314 },
4072 4315 "require": {
... ... @@ -4102,20 +4345,20 @@
4102 4345 ],
4103 4346 "description": "Symfony Process Component",
4104 4347 "homepage": "https://symfony.com",
4105   - "time": "2019-09-26T21:17:10+00:00"
  4348 + "time": "2019-10-28T17:07:32+00:00"
4106 4349 },
4107 4350 {
4108 4351 "name": "symfony/routing",
4109   - "version": "v4.3.5",
  4352 + "version": "v4.3.6",
4110 4353 "source": {
4111 4354 "type": "git",
4112 4355 "url": "https://github.com/symfony/routing.git",
4113   - "reference": "3b174ef04fe66696524efad1e5f7a6c663d822ea"
  4356 + "reference": "63a9920cc86fcc745e5ea254e362f02b615290b9"
4114 4357 },
4115 4358 "dist": {
4116 4359 "type": "zip",
4117   - "url": "https://api.github.com/repos/symfony/routing/zipball/3b174ef04fe66696524efad1e5f7a6c663d822ea",
4118   - "reference": "3b174ef04fe66696524efad1e5f7a6c663d822ea",
  4360 + "url": "https://api.github.com/repos/symfony/routing/zipball/63a9920cc86fcc745e5ea254e362f02b615290b9",
  4361 + "reference": "63a9920cc86fcc745e5ea254e362f02b615290b9",
4119 4362 "shasum": ""
4120 4363 },
4121 4364 "require": {
... ... @@ -4178,7 +4421,7 @@
4178 4421 "uri",
4179 4422 "url"
4180 4423 ],
4181   - "time": "2019-10-04T20:57:10+00:00"
  4424 + "time": "2019-10-30T12:58:49+00:00"
4182 4425 },
4183 4426 {
4184 4427 "name": "symfony/service-contracts",
... ... @@ -4240,16 +4483,16 @@
4240 4483 },
4241 4484 {
4242 4485 "name": "symfony/translation",
4243   - "version": "v4.3.5",
  4486 + "version": "v4.3.6",
4244 4487 "source": {
4245 4488 "type": "git",
4246 4489 "url": "https://github.com/symfony/translation.git",
4247   - "reference": "fe6193b066c457c144333c06aaa869a2d42a167f"
  4490 + "reference": "a3aa590ce944afb3434d7a55f81b00927144d5ec"
4248 4491 },
4249 4492 "dist": {
4250 4493 "type": "zip",
4251   - "url": "https://api.github.com/repos/symfony/translation/zipball/fe6193b066c457c144333c06aaa869a2d42a167f",
4252   - "reference": "fe6193b066c457c144333c06aaa869a2d42a167f",
  4494 + "url": "https://api.github.com/repos/symfony/translation/zipball/a3aa590ce944afb3434d7a55f81b00927144d5ec",
  4495 + "reference": "a3aa590ce944afb3434d7a55f81b00927144d5ec",
4253 4496 "shasum": ""
4254 4497 },
4255 4498 "require": {
... ... @@ -4312,7 +4555,7 @@
4312 4555 ],
4313 4556 "description": "Symfony Translation Component",
4314 4557 "homepage": "https://symfony.com",
4315   - "time": "2019-09-27T14:37:39+00:00"
  4558 + "time": "2019-10-30T12:53:54+00:00"
4316 4559 },
4317 4560 {
4318 4561 "name": "symfony/translation-contracts",
... ... @@ -4373,16 +4616,16 @@
4373 4616 },
4374 4617 {
4375 4618 "name": "symfony/var-dumper",
4376   - "version": "v4.3.5",
  4619 + "version": "v4.3.6",
4377 4620 "source": {
4378 4621 "type": "git",
4379 4622 "url": "https://github.com/symfony/var-dumper.git",
4380   - "reference": "bde8957fc415fdc6964f33916a3755737744ff05"
  4623 + "reference": "ea4940845535c85ff5c505e13b3205b0076d07bf"
4381 4624 },
4382 4625 "dist": {
4383 4626 "type": "zip",
4384   - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/bde8957fc415fdc6964f33916a3755737744ff05",
4385   - "reference": "bde8957fc415fdc6964f33916a3755737744ff05",
  4627 + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/ea4940845535c85ff5c505e13b3205b0076d07bf",
  4628 + "reference": "ea4940845535c85ff5c505e13b3205b0076d07bf",
4386 4629 "shasum": ""
4387 4630 },
4388 4631 "require": {
... ... @@ -4445,7 +4688,7 @@
4445 4688 "debug",
4446 4689 "dump"
4447 4690 ],
4448   - "time": "2019-10-04T19:48:13+00:00"
  4691 + "time": "2019-10-13T12:02:04+00:00"
4449 4692 },
4450 4693 {
4451 4694 "name": "tijsverkoyen/css-to-inline-styles",
... ... @@ -4603,6 +4846,55 @@
4603 4846 "environment"
4604 4847 ],
4605 4848 "time": "2019-09-10T21:37:39+00:00"
  4849 + },
  4850 + {
  4851 + "name": "wikimedia/composer-merge-plugin",
  4852 + "version": "v1.4.1",
  4853 + "source": {
  4854 + "type": "git",
  4855 + "url": "https://github.com/wikimedia/composer-merge-plugin.git",
  4856 + "reference": "81c6ac72a24a67383419c7eb9aa2b3437f2ab100"
  4857 + },
  4858 + "dist": {
  4859 + "type": "zip",
  4860 + "url": "https://api.github.com/repos/wikimedia/composer-merge-plugin/zipball/81c6ac72a24a67383419c7eb9aa2b3437f2ab100",
  4861 + "reference": "81c6ac72a24a67383419c7eb9aa2b3437f2ab100",
  4862 + "shasum": ""
  4863 + },
  4864 + "require": {
  4865 + "composer-plugin-api": "^1.0",
  4866 + "php": ">=5.3.2"
  4867 + },
  4868 + "require-dev": {
  4869 + "composer/composer": "~1.0.0",
  4870 + "jakub-onderka/php-parallel-lint": "~0.8",
  4871 + "phpunit/phpunit": "~4.8|~5.0",
  4872 + "squizlabs/php_codesniffer": "~2.1.0"
  4873 + },
  4874 + "type": "composer-plugin",
  4875 + "extra": {
  4876 + "branch-alias": {
  4877 + "dev-master": "1.3.x-dev"
  4878 + },
  4879 + "class": "Wikimedia\\Composer\\MergePlugin"
  4880 + },
  4881 + "autoload": {
  4882 + "psr-4": {
  4883 + "Wikimedia\\Composer\\": "src/"
  4884 + }
  4885 + },
  4886 + "notification-url": "https://packagist.org/downloads/",
  4887 + "license": [
  4888 + "MIT"
  4889 + ],
  4890 + "authors": [
  4891 + {
  4892 + "name": "Bryan Davis",
  4893 + "email": "bd808@wikimedia.org"
  4894 + }
  4895 + ],
  4896 + "description": "Composer plugin to merge multiple composer.json files",
  4897 + "time": "2017-04-25T02:31:25+00:00"
4606 4898 }
4607 4899 ],
4608 4900 "packages-dev": [
... ... @@ -4737,24 +5029,24 @@
4737 5029 },
4738 5030 {
4739 5031 "name": "composer/xdebug-handler",
4740   - "version": "1.3.3",
  5032 + "version": "1.4.0",
4741 5033 "source": {
4742 5034 "type": "git",
4743 5035 "url": "https://github.com/composer/xdebug-handler.git",
4744   - "reference": "46867cbf8ca9fb8d60c506895449eb799db1184f"
  5036 + "reference": "cbe23383749496fe0f373345208b79568e4bc248"
4745 5037 },
4746 5038 "dist": {
4747 5039 "type": "zip",
4748   - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/46867cbf8ca9fb8d60c506895449eb799db1184f",
4749   - "reference": "46867cbf8ca9fb8d60c506895449eb799db1184f",
  5040 + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/cbe23383749496fe0f373345208b79568e4bc248",
  5041 + "reference": "cbe23383749496fe0f373345208b79568e4bc248",
4750 5042 "shasum": ""
4751 5043 },
4752 5044 "require": {
4753   - "php": "^5.3.2 || ^7.0",
  5045 + "php": "^5.3.2 || ^7.0 || ^8.0",
4754 5046 "psr/log": "^1.0"
4755 5047 },
4756 5048 "require-dev": {
4757   - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5"
  5049 + "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8"
4758 5050 },
4759 5051 "type": "library",
4760 5052 "autoload": {
... ... @@ -4772,12 +5064,12 @@
4772 5064 "email": "john-stevenson@blueyonder.co.uk"
4773 5065 }
4774 5066 ],
4775   - "description": "Restarts a process without xdebug.",
  5067 + "description": "Restarts a process without Xdebug.",
4776 5068 "keywords": [
4777 5069 "Xdebug",
4778 5070 "performance"
4779 5071 ],
4780   - "time": "2019-05-27T17:52:04+00:00"
  5072 + "time": "2019-11-06T16:40:04+00:00"
4781 5073 },
4782 5074 {
4783 5075 "name": "doctrine/annotations",
... ... @@ -5026,16 +5318,16 @@
5026 5318 },
5027 5319 {
5028 5320 "name": "friendsofphp/php-cs-fixer",
5029   - "version": "v2.15.3",
  5321 + "version": "v2.16.0",
5030 5322 "source": {
5031 5323 "type": "git",
5032 5324 "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git",
5033   - "reference": "705490b0f282f21017d73561e9498d2b622ee34c"
  5325 + "reference": "ceaff36bee1ed3f1bbbedca36d2528c0826c336d"
5034 5326 },
5035 5327 "dist": {
5036 5328 "type": "zip",
5037   - "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/705490b0f282f21017d73561e9498d2b622ee34c",
5038   - "reference": "705490b0f282f21017d73561e9498d2b622ee34c",
  5329 + "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/ceaff36bee1ed3f1bbbedca36d2528c0826c336d",
  5330 + "reference": "ceaff36bee1ed3f1bbbedca36d2528c0826c336d",
5039 5331 "shasum": ""
5040 5332 },
5041 5333 "require": {
... ... @@ -5111,7 +5403,7 @@
5111 5403 }
5112 5404 ],
5113 5405 "description": "A tool to automatically fix PHP code style",
5114   - "time": "2019-08-31T12:51:54+00:00"
  5406 + "time": "2019-11-03T13:31:09+00:00"
5115 5407 },
5116 5408 {
5117 5409 "name": "fzaninotto/faker",
... ... @@ -5213,20 +5505,21 @@
5213 5505 },
5214 5506 {
5215 5507 "name": "laravel/dusk",
5216   - "version": "v5.5.2",
  5508 + "version": "v5.6.0",
5217 5509 "source": {
5218 5510 "type": "git",
5219 5511 "url": "https://github.com/laravel/dusk.git",
5220   - "reference": "aed755282a13a9b36d26854a0105d519aa22fec9"
  5512 + "reference": "db4f8d75b7c9acf88ef1712e9ccf51c15540934d"
5221 5513 },
5222 5514 "dist": {
5223 5515 "type": "zip",
5224   - "url": "https://api.github.com/repos/laravel/dusk/zipball/aed755282a13a9b36d26854a0105d519aa22fec9",
5225   - "reference": "aed755282a13a9b36d26854a0105d519aa22fec9",
  5516 + "url": "https://api.github.com/repos/laravel/dusk/zipball/db4f8d75b7c9acf88ef1712e9ccf51c15540934d",
  5517 + "reference": "db4f8d75b7c9acf88ef1712e9ccf51c15540934d",
5226 5518 "shasum": ""
5227 5519 },
5228 5520 "require": {
5229 5521 "ext-json": "*",
  5522 + "ext-pcntl": "*",
5230 5523 "ext-zip": "*",
5231 5524 "facebook/webdriver": "^1.7",
5232 5525 "illuminate/console": "~5.7.0|~5.8.0|^6.0|^7.0",
... ... @@ -5274,7 +5567,7 @@
5274 5567 "testing",
5275 5568 "webdriver"
5276 5569 ],
5277   - "time": "2019-09-24T20:30:07+00:00"
  5570 + "time": "2019-10-29T15:58:57+00:00"
5278 5571 },
5279 5572 {
5280 5573 "name": "laravel/telescope",
... ... @@ -6245,16 +6538,16 @@
6245 6538 },
6246 6539 {
6247 6540 "name": "phpunit/phpunit",
6248   - "version": "7.5.16",
  6541 + "version": "7.5.17",
6249 6542 "source": {
6250 6543 "type": "git",
6251 6544 "url": "https://github.com/sebastianbergmann/phpunit.git",
6252   - "reference": "316afa6888d2562e04aeb67ea7f2017a0eb41661"
  6545 + "reference": "4c92a15296e58191a4cd74cff3b34fc8e374174a"
6253 6546 },
6254 6547 "dist": {
6255 6548 "type": "zip",
6256   - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/316afa6888d2562e04aeb67ea7f2017a0eb41661",
6257   - "reference": "316afa6888d2562e04aeb67ea7f2017a0eb41661",
  6549 + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/4c92a15296e58191a4cd74cff3b34fc8e374174a",
  6550 + "reference": "4c92a15296e58191a4cd74cff3b34fc8e374174a",
6258 6551 "shasum": ""
6259 6552 },
6260 6553 "require": {
... ... @@ -6325,7 +6618,7 @@
6325 6618 "testing",
6326 6619 "xunit"
6327 6620 ],
6328   - "time": "2019-09-14T09:08:39+00:00"
  6621 + "time": "2019-10-28T10:37:36+00:00"
6329 6622 },
6330 6623 {
6331 6624 "name": "sebastian/code-unit-reverse-lookup",
... ... @@ -6895,7 +7188,7 @@
6895 7188 },
6896 7189 {
6897 7190 "name": "symfony/filesystem",
6898   - "version": "v4.3.5",
  7191 + "version": "v4.3.6",
6899 7192 "source": {
6900 7193 "type": "git",
6901 7194 "url": "https://github.com/symfony/filesystem.git",
... ... @@ -6945,16 +7238,16 @@
6945 7238 },
6946 7239 {
6947 7240 "name": "symfony/options-resolver",
6948   - "version": "v4.3.5",
  7241 + "version": "v4.3.6",
6949 7242 "source": {
6950 7243 "type": "git",
6951 7244 "url": "https://github.com/symfony/options-resolver.git",
6952   - "reference": "81c2e120522a42f623233968244baebd6b36cb6a"
  7245 + "reference": "f46c7fc8e207bd8a2188f54f8738f232533765a4"
6953 7246 },
6954 7247 "dist": {
6955 7248 "type": "zip",
6956   - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/81c2e120522a42f623233968244baebd6b36cb6a",
6957   - "reference": "81c2e120522a42f623233968244baebd6b36cb6a",
  7249 + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/f46c7fc8e207bd8a2188f54f8738f232533765a4",
  7250 + "reference": "f46c7fc8e207bd8a2188f54f8738f232533765a4",
6958 7251 "shasum": ""
6959 7252 },
6960 7253 "require": {
... ... @@ -6995,7 +7288,7 @@
6995 7288 "configuration",
6996 7289 "options"
6997 7290 ],
6998   - "time": "2019-08-08T09:29:19+00:00"
  7291 + "time": "2019-10-28T20:59:01+00:00"
6999 7292 },
7000 7293 {
7001 7294 "name": "symfony/polyfill-php70",
... ... @@ -7058,7 +7351,7 @@
7058 7351 },
7059 7352 {
7060 7353 "name": "symfony/stopwatch",
7061   - "version": "v4.3.5",
  7354 + "version": "v4.3.6",
7062 7355 "source": {
7063 7356 "type": "git",
7064 7357 "url": "https://github.com/symfony/stopwatch.git",
... ...
database/migrations/2019_10_17_095937_create_menu_reclassify_registration.php 0 → 100644
... ... @@ -0,0 +1,34 @@
  1 +<?php
  2 +
  3 +use App\Menu;
  4 +use App\Process;
  5 +use Illuminate\Support\Facades\Schema;
  6 +use Illuminate\Database\Schema\Blueprint;
  7 +use Illuminate\Database\Migrations\Migration;
  8 +
  9 +class CreateMenuReclassifyRegistration extends Migration
  10 +{
  11 + /**
  12 + * Run the migrations.
  13 + *
  14 + * @return void
  15 + */
  16 + public function up()
  17 + {
  18 + Menu::query()->create([
  19 + 'parent_id' => Menu::query()->where('old', Process::MENU_SCHOOL)->firstOrFail()->getKey(),
  20 + 'title' => 'Reclassificar matrícula',
  21 + 'process' => Process::RECLASSIFY_REGISTRATION,
  22 + ]);
  23 + }
  24 +
  25 + /**
  26 + * Reverse the migrations.
  27 + *
  28 + * @return void
  29 + */
  30 + public function down()
  31 + {
  32 + Menu::query()->where('process', Process::RECLASSIFY_REGISTRATION)->delete();
  33 + }
  34 +}
... ...
database/migrations/2019_10_17_102129_add_reclassify_menu_to_user_types_with_registrations.php 0 → 100644
... ... @@ -0,0 +1,57 @@
  1 +<?php
  2 +
  3 +use Illuminate\Support\Facades\Schema;
  4 +use Illuminate\Database\Schema\Blueprint;
  5 +use Illuminate\Database\Migrations\Migration;
  6 +use App\Process;
  7 +
  8 +class AddReclassifyMenuToUserTypesWithRegistrations extends Migration
  9 +{
  10 + /**
  11 + * Run the migrations.
  12 + *
  13 + * @return void
  14 + */
  15 + public function up()
  16 + {
  17 + DB::insert('
  18 + INSERT INTO pmieducar.menu_tipo_usuario (ref_cod_tipo_usuario, menu_id, cadastra, visualiza, exclui)
  19 + SELECT
  20 + ref_cod_tipo_usuario,
  21 + (
  22 + SELECT id
  23 + FROM menus
  24 + WHERE process = ?
  25 + ) as menu_id,
  26 + cadastra,
  27 + visualiza,
  28 + exclui
  29 + FROM pmieducar.menu_tipo_usuario
  30 + where menu_id = (
  31 + SELECT id
  32 + FROM menus
  33 + WHERE process = ?
  34 + )
  35 +
  36 + ', [
  37 + Process::RECLASSIFY_REGISTRATION,
  38 + Process::REGISTRATIONS,
  39 + ]);
  40 + }
  41 +
  42 + /**
  43 + * Reverse the migrations.
  44 + *
  45 + * @return void
  46 + */
  47 + public function down()
  48 + {
  49 + DB::table('pmieducar.menu_tipo_usuario')
  50 + ->whereRaw('menu_id = (
  51 + SELECT id
  52 + FROM menus
  53 + WHERE process = ?
  54 + )', [Process::RECLASSIFY_REGISTRATION])
  55 + ->delete();
  56 + }
  57 +}
... ...
ieducar/intranet/educar_ano_letivo_modulo_cad.php
... ... @@ -546,7 +546,8 @@ class indice extends clsCadastro
546 546 'cod_curso_profissional',
547 547 'tipo_mediacao_didatico_pedagogico',
548 548 'nao_informar_educacenso',
549   - 'turma_mais_educacao'
  549 + 'turma_mais_educacao',
  550 + 'local_funcionamento_diferenciado'
550 551 ];
551 552  
552 553 $turmaDestino = new clsPmieducarTurma();
... ... @@ -697,7 +698,7 @@ class indice extends clsCadastro
697 698 $iDiarioService = app(iDiarioService::class);
698 699  
699 700 foreach ($etapas as $etapa) {
700   - if ($iDiarioService->getStepActivityByUnit($escolaId, $etapa)) {
  701 + if ($iDiarioService->getStepActivityByUnit($escolaId, $ano, $etapa)) {
701 702 throw new RuntimeException('Não foi possível remover uma das etapas pois existem notas ou faltas lançadas no diário online.');
702 703 }
703 704 }
... ...
ieducar/intranet/educar_backup_lst.php
... ... @@ -6,6 +6,8 @@ require_once (&quot;include/clsBanco.inc.php&quot;);
6 6 require_once ("include/pmieducar/geral.inc.php");
7 7 require_once 'Portabilis/Date/Utils.php';
8 8  
  9 +use App\Services\BackupUrlPresigner;
  10 +
9 11 class clsIndexBase extends clsBase
10 12 {
11 13 function Formular()
... ... @@ -84,15 +86,18 @@ class indice extends clsListagem
84 86 $total = $objBackup->_total;
85 87  
86 88 // monta a lista
  89 + $baseDownloadUrl = route('backup.download');
87 90 if(is_array($lista) && count($lista))
88 91 {
89 92 foreach ($lista AS $registro)
90 93 {
91 94 $dataBackup = Portabilis_Date_Utils::pgSQLToBr($registro['data_backup']);
92 95  
  96 + $url = $baseDownloadUrl . '?url=' . urlencode($registro['caminho']);
  97 +
93 98 $this->addLinhas( array(
94   - "<a href=\"{$registro["caminho"]}\">{$registro["caminho"]}</a>",
95   - "<a href=\"{$registro["caminho"]}\">{$dataBackup}</a>"
  99 + "<a href=\"$url\">{$registro["caminho"]}</a>",
  100 + "<a href=\"$url\">{$dataBackup}</a>"
96 101 ) );
97 102 }
98 103 }
... ...
ieducar/intranet/educar_calendario_ano_letivo_lst.php
... ... @@ -17,7 +17,6 @@ class clsIndexBase extends clsBase
17 17 function Formular()
18 18 {
19 19 $this->SetTitulo($this->_instituicao . ' i-Educar - Calendários');
20   - $this->addScript('calendario');
21 20 $this->processoAp = 620;
22 21 }
23 22 }
... ... @@ -471,6 +470,12 @@ class indice extends clsListagem
471 470  
472 471 $retorno .= '</tbody> </table>';
473 472  
  473 + $scripts = [
  474 + '/intranet/scripts/calendario.js'
  475 + ];
  476 +
  477 + Portabilis_View_Helper_Application::loadJavascript($this, $scripts);
  478 +
474 479 return $retorno;
475 480 }
476 481 }
... ...
ieducar/intranet/educar_matricula_det.php
... ... @@ -317,7 +317,7 @@ class indice extends clsDetalhe
317 317 $this->array_botao[] = 'Falecido';
318 318 $this->array_botao_url_script[] = "go(\"educar_falecido_cad.php?ref_cod_matricula={$registro['cod_matricula']}&ref_cod_aluno={$registro['ref_cod_aluno']}\");";
319 319  
320   - if ($registro['ref_ref_cod_serie']) {
  320 + if ($registro['ref_ref_cod_serie'] && $this->permissaoReclassificar()) {
321 321 $this->array_botao[] = 'Reclassificar';
322 322 $this->array_botao_url_script[] = "go(\"educar_matricula_reclassificar_cad.php?ref_cod_matricula={$registro['cod_matricula']}&ref_cod_aluno={$registro['ref_cod_aluno']}\")";
323 323 }
... ... @@ -430,6 +430,13 @@ class indice extends clsDetalhe
430 430 return $acesso->permissao_excluir(627, $this->pessoa_logada, 7, null, true);
431 431 }
432 432  
  433 + public function permissaoReclassificar()
  434 + {
  435 + $acesso = new clsPermissoes();
  436 +
  437 + return $acesso->permissao_cadastra(Process::RECLASSIFY_REGISTRATION, $this->pessoa_logada, 7, null, true);
  438 + }
  439 +
433 440 public function canCancelTransferencia($matriculaId)
434 441 {
435 442 $sql = "SELECT transferencia_solicitacao.cod_transferencia_solicitacao
... ...
ieducar/intranet/educar_matricula_reclassificar_cad.php
... ... @@ -11,12 +11,14 @@ require_once &#39;modules/Avaliacao/Model/NotaAlunoDataMapper.php&#39;;
11 11 require_once 'modules/Avaliacao/Model/NotaComponenteMediaDataMapper.php';
12 12 require_once 'lib/App/Model/MatriculaSituacao.php';
13 13  
  14 +use App\Process;
  15 +
14 16 class clsIndexBase extends clsBase
15 17 {
16 18 function Formular()
17 19 {
18 20 $this->SetTitulo( "{$this->_instituicao} i-Educar - Reclassificar Matr&iacute;cula" );
19   - $this->processoAp = "578";
  21 + $this->processoAp = Process::RECLASSIFY_REGISTRATION;
20 22 }
21 23 }
22 24  
... ... @@ -60,7 +62,7 @@ class indice extends clsCadastro
60 62 $this->ref_cod_aluno=$_GET["ref_cod_aluno"];
61 63  
62 64 $obj_permissoes = new clsPermissoes();
63   - $obj_permissoes->permissao_cadastra( 578, $this->pessoa_logada, 7, "educar_matricula_lst.php?ref_cod_aluno={$this->ref_cod_aluno}" );
  65 + $obj_permissoes->permissao_cadastra( Process::RECLASSIFY_REGISTRATION, $this->pessoa_logada, 7, "educar_matricula_lst.php?ref_cod_aluno={$this->ref_cod_aluno}" );
64 66  
65 67 $obj_matricula = new clsPmieducarMatricula($this->cod_matricula);
66 68 $det_matricula = $obj_matricula->detalhe();
... ... @@ -138,7 +140,7 @@ class indice extends clsCadastro
138 140 {
139 141  
140 142 $obj_permissoes = new clsPermissoes();
141   - $obj_permissoes->permissao_cadastra( 578, $this->pessoa_logada, 7, "educar_matricula_lst.php?ref_cod_aluno={$this->ref_cod_aluno}" );
  143 + $obj_permissoes->permissao_cadastra(Process::RECLASSIFY_REGISTRATION, $this->pessoa_logada, 7, "educar_matricula_lst.php?ref_cod_aluno={$this->ref_cod_aluno}" );
142 144  
143 145 $this->data_cancel = Portabilis_Date_Utils::brToPgSQL($this->data_cancel);
144 146  
... ...
ieducar/intranet/educar_turma_cad.php
... ... @@ -228,6 +228,7 @@ class indice extends clsCadastro
228 228  
229 229 $this->campoOculto('obrigar_campos_censo', (int)$obrigarCamposCenso);
230 230 $this->campoOculto('cod_turma', $this->cod_turma);
  231 + $this->campoOculto('ano_letivo_', $this->ano);
231 232 $this->campoOculto('dependencia_administrativa', $this->dependencia_administrativa);
232 233 $this->campoOculto('modalidade_curso', $this->modalidade_curso);
233 234 $this->campoOculto('retorno', $this->retorno);
... ... @@ -1304,6 +1305,7 @@ class indice extends clsCadastro
1304 1305 protected function validaModulos()
1305 1306 {
1306 1307 $turmaId = $this->cod_turma;
  1308 + $anoTurma = $this->ano_letivo_;
1307 1309 $etapasCount = count($this->data_inicio);
1308 1310 $etapasCountAntigo = (int) Portabilis_Utils_Database::selectField(
1309 1311 'SELECT COUNT(*) AS count FROM pmieducar.turma_modulo WHERE ref_cod_turma = $1',
... ... @@ -1360,7 +1362,7 @@ class indice extends clsCadastro
1360 1362 $iDiarioService = app(iDiarioService::class);
1361 1363  
1362 1364 foreach ($etapas as $etapa) {
1363   - if ($iDiarioService->getStepActivityByClassroom($turmaId, $etapa)) {
  1365 + if ($iDiarioService->getStepActivityByClassroom($turmaId, $anoTurma, $etapa)) {
1364 1366 throw new RuntimeException('Não foi possível remover uma das etapas pois existem notas ou faltas lançadas no diário online.');
1365 1367 }
1366 1368 }
... ...
ieducar/intranet/scripts/calendario.js
... ... @@ -65,18 +65,6 @@ function updateMessagePosition()
65 65 last.style.top = (findPosY(last_td) + 2) + 'px';
66 66 }
67 67  
68   -if (document.createStyleSheet) {
69   - document.createStyleSheet('styles/calendario.css');
70   -}
71   -else {
72   - var objHead = document.getElementsByTagName('head');
73   - var objCSS = objHead[0].appendChild(document.createElement('link'));
74   -
75   - objCSS.rel = 'stylesheet';
76   - objCSS.href = 'styles/calendario.css';
77   - objCSS.type = 'text/css';
78   -}
79   -
80 68 var cX = 0;
81 69 var cY = 0;
82 70  
... ...
ieducar/intranet/styles/custom.css
... ... @@ -492,6 +492,11 @@ table.calendar .dayLastMonth, .day{
492 492  
493 493 table.calendar .day{
494 494 background-color: #e9f0f8 !;
  495 + cursor: pointer;
  496 +}
  497 +
  498 +table.calendar .day:hover{
  499 + opacity: .7;
495 500 }
496 501  
497 502 table.calendar .anotacao{
... ...
ieducar/lib/App/Model/IedFinder.php
... ... @@ -688,7 +688,12 @@ class App_Model_IedFinder extends CoreExt_Entity
688 688 $ano
689 689 );
690 690  
691   - unset($componentesTurma[$disciplinaDispensada]);
  691 + foreach($componentesTurma as $key => $componente) {
  692 + if ($componente->id == $disciplinaDispensada) {
  693 + unset($componentesTurma[$key]);
  694 + }
  695 + }
  696 +
692 697 return $componentesTurma;
693 698 }
694 699  
... ...
ieducar/lib/Portabilis/Report/ReportsRenderServerFactory.php
1 1 <?php
2 2  
3   -use Carbon\Carbon;
4 3 use GuzzleHttp\Client;
5 4 use GuzzleHttp\Exception\GuzzleException;
  5 +use Illuminate\Support\Facades\Log;
6 6  
7 7 require_once 'lib/Portabilis/Report/ReportFactory.php';
8 8  
... ... @@ -45,6 +45,25 @@ class Portabilis_Report_ReportsRenderServerFactory extends Portabilis_Report_Rep
45 45 private $timezone;
46 46  
47 47 /**
  48 + * Loga erros da requisição ao servidor de relatórios.
  49 + *
  50 + * @param array $payload
  51 + * @param string $response
  52 + *
  53 + * @return void
  54 + */
  55 + protected function log($payload, $response)
  56 + {
  57 + $log = json_encode([
  58 + 'url' => $this->url,
  59 + 'payload' => $payload,
  60 + 'response' => $response,
  61 + ]);
  62 +
  63 + Log::error($log);
  64 + }
  65 +
  66 + /**
48 67 * @inheritdoc
49 68 */
50 69 public function setSettings($config)
... ... @@ -69,10 +88,10 @@ class Portabilis_Report_ReportsRenderServerFactory extends Portabilis_Report_Rep
69 88 * @param Portabilis_Report_ReportCore $report
70 89 * @param array $options
71 90 *
72   - * @return string
73   - *
74 91 * @throws GuzzleException
75 92 * @throws Exception
  93 + *
  94 + * @return string
76 95 */
77 96 public function dumps($report, $options = [])
78 97 {
... ... @@ -111,7 +130,7 @@ class Portabilis_Report_ReportsRenderServerFactory extends Portabilis_Report_Rep
111 130 $data = $report->getJsonData();
112 131 $data = $report->modify($data);
113 132  
114   - $response = $client->request('POST', $this->url, [
  133 + $payload = [
115 134 'json' => [
116 135 'report' => $templateName,
117 136 'url' => $url,
... ... @@ -122,15 +141,21 @@ class Portabilis_Report_ReportsRenderServerFactory extends Portabilis_Report_Rep
122 141 'Accept' => 'application/json',
123 142 'Authorization' => 'Token ' . $this->token,
124 143 ]
125   - ]);
  144 + ];
  145 +
  146 + $response = $client->request('POST', $this->url, $payload);
126 147  
127 148 $json = json_decode($response->getBody()->getContents(), true);
128 149  
129 150 if (is_null($json)) {
  151 + $this->log($payload, $response->getBody()->getContents());
  152 +
130 153 throw new Exception('Não foi possível analisar a resposta do serviço.');
131 154 }
132 155  
133 156 if ($json['success'] == false) {
  157 + $this->log($payload, $response->getBody()->getContents());
  158 +
134 159 throw new Exception($json['error'] ?? $json['message']);
135 160 }
136 161  
... ...
ieducar/lib/Portabilis/View/Helper/Input/Resource/MultipleSearchDocumentosAtestadoVaga.php
... ... @@ -23,6 +23,7 @@ class Portabilis_View_Helper_Input_Resource_MultipleSearchDocumentosAtestadoVaga
23 23 'doc_nis' => 'N&uacute;mero de Identifica&ccedil;&atilde;o Social - NIS',
24 24 'responsabilidade_nao_genitor' => 'Documento de responsável não genitor',
25 25 'intolerancia_alergia' => 'Laudo médico para intolerância ou alergia',
  26 + 'tipo_sanguineo' => 'Tipo Sanguíneo',
26 27 ];
27 28 }
28 29  
... ...
ieducar/modules/Api/Views/DiarioController.php
... ... @@ -231,7 +231,12 @@ class DiarioController extends ApiCoreController
231 231  
232 232 $valorNota = $serviceBoletim->calculateStageScore($etapa, $notaOriginal, $notaRecuperacao);
233 233  
234   - if ($etapa == 'Rc' && $notaOriginal > $regra->notaMaximaExameFinal) {
  234 + $notaValidacao = $notaOriginal;
  235 + if (is_numeric($valorNota)) {
  236 + $notaValidacao = $valorNota;
  237 + }
  238 +
  239 + if ($etapa == 'Rc' && $notaValidacao > $regra->notaMaximaExameFinal) {
235 240 $this->messenger->append("A nota {$valorNota} está acima da configurada para nota máxima para exame que é {$regra->notaMaximaExameFinal}.", 'error');
236 241 $this->appendResponse('error', [
237 242 'code' => Error::EXAM_SCORE_GREATER_THAN_MAX_ALLOWED,
... ... @@ -241,7 +246,7 @@ class DiarioController extends ApiCoreController
241 246 return false;
242 247 }
243 248  
244   - if ($etapa != 'Rc' && $notaOriginal > $regra->notaMaximaGeral) {
  249 + if ($etapa != 'Rc' && $notaValidacao > $regra->notaMaximaGeral) {
245 250 $this->messenger->append("A nota {$valorNota} está acima da configurada para nota máxima geral que é {$regra->notaMaximaGeral}.", 'error');
246 251 $this->appendResponse('error', [
247 252 'code' => Error::SCORE_GREATER_THAN_MAX_ALLOWED,
... ... @@ -251,7 +256,7 @@ class DiarioController extends ApiCoreController
251 256 return false;
252 257 }
253 258  
254   - if ($notaOriginal < $regra->notaMinimaGeral) {
  259 + if ($notaValidacao < $regra->notaMinimaGeral) {
255 260 $this->messenger->append("A nota {$valorNota} está abaixo da configurada para nota mínima geral que é {$regra->notaMinimaGeral}.", 'error');
256 261 $this->appendResponse('error', [
257 262 'code' => Error::SCORE_LESSER_THAN_MIN_ALLOWED,
... ...
packages/.gitignore 0 → 100644
... ... @@ -0,0 +1,2 @@
  1 +*
  2 +!.gitignore
0 3 \ No newline at end of file
... ...
resources/views/errors/503.blade.php 0 → 100644
... ... @@ -0,0 +1,55 @@
  1 +<!DOCTYPE html>
  2 +<html lang="en">
  3 +<head>
  4 + <meta charset="utf-8">
  5 + <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6 + <meta name="viewport" content="width=device-width, initial-scale=1">
  7 +
  8 + <title>Serviço indisponível</title>
  9 +
  10 + <!-- Fonts -->
  11 + <link href="https://fonts.googleapis.com/css?family=Nunito" rel="stylesheet" type="text/css">
  12 +
  13 + <!-- Styles -->
  14 + <style>
  15 + html, body {
  16 + background-color: #fff;
  17 + color: #636b6f;
  18 + font-family: 'Nunito', sans-serif;
  19 + font-weight: 100;
  20 + height: 100vh;
  21 + margin: 0;
  22 + }
  23 +
  24 + .full-height {
  25 + height: 100vh;
  26 + }
  27 +
  28 + .flex-center {
  29 + align-items: center;
  30 + display: flex;
  31 + justify-content: center;
  32 + }
  33 +
  34 + .position-ref {
  35 + position: relative;
  36 + }
  37 +
  38 + .content {
  39 + text-align: center;
  40 + }
  41 +
  42 + .title {
  43 + font-size: 36px;
  44 + padding: 20px;
  45 + }
  46 + </style>
  47 +</head>
  48 +<body>
  49 +<div class="flex-center position-ref full-height">
  50 + <div class="content">
  51 + <div class="title">Desculpe, mas o serviço está indisponível.</div>
  52 + </div>
  53 +</div>
  54 +</body>
  55 +</html>
... ...
routes/web.php
... ... @@ -88,6 +88,7 @@ Route::group([&#39;middleware&#39; =&gt; [&#39;ieducar.navigation&#39;, &#39;ieducar.footer&#39;, &#39;ieducar.
88 88 });
89 89  
90 90 Route::get('/consulta-dispensas', 'ExemptionListController@index')->name('exemption-list.index');
  91 + Route::get('/backup-download', 'BackupController@download')->name('backup.download');
91 92 });
92 93  
93 94 Route::group(['namespace' => 'Exports', 'prefix' => 'exports'], function () {
... ...