diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php
index 735ca77aef..fadd53465a 100644
--- a/app/Http/Kernel.php
+++ b/app/Http/Kernel.php
@@ -40,6 +40,7 @@ class Kernel extends HttpKernel
],
'api' => [
+ \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
'bindings',
'throttle:60,1',
],
diff --git a/app/Http/Middleware/SkipMiddleware.php b/app/Http/Middleware/SkipMiddleware.php
new file mode 100644
index 0000000000..33c35f61b7
--- /dev/null
+++ b/app/Http/Middleware/SkipMiddleware.php
@@ -0,0 +1,14 @@
+belongsTo(Menu::class);
+ }
+}
diff --git a/app/Models/LegacyUser.php b/app/Models/LegacyUser.php
index 8562d67428..46dd0e3dc3 100644
--- a/app/Models/LegacyUser.php
+++ b/app/Models/LegacyUser.php
@@ -2,10 +2,10 @@
namespace App\Models;
-use Illuminate\Database\Eloquent\Model;
+use App\User as DefaultUser;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
-class LegacyUser extends Model
+class LegacyUser extends DefaultUser
{
/**
* @var string
diff --git a/app/Repositories/EducacensoRepository.php b/app/Repositories/EducacensoRepository.php
index 7c46a40380..573d0c2421 100644
--- a/app/Repositories/EducacensoRepository.php
+++ b/app/Repositories/EducacensoRepository.php
@@ -556,7 +556,7 @@ public function getEmployeeDataForRecord30($arrayEmployeeId)
SELECT ARRAY_REMOVE(ARRAY_AGG(educacenso_curso_superior.curso_id), NULL) course_id,
ARRAY_REMOVE(ARRAY_AGG(completion_year), NULL) completion_year,
ARRAY_REMOVE(ARRAY_AGG(educacenso_ies.ies_id), NULL) college_id,
- ARRAY_REMOVE(ARRAY_AGG(discipline_id), NULL) discipline_id
+ ARRAY_REMOVE(ARRAY_AGG(coalesce(discipline_id, 0)), NULL) discipline_id
FROM employee_graduations
JOIN modules.educacenso_curso_superior ON educacenso_curso_superior.id = employee_graduations.course_id
JOIN modules.educacenso_ies ON educacenso_ies.id = employee_graduations.college_id
diff --git a/app/User.php b/app/User.php
index e7d950f08d..a4f14ed66b 100644
--- a/app/User.php
+++ b/app/User.php
@@ -12,6 +12,7 @@
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Illuminate\Support\Carbon;
+use Laravel\Sanctum\HasApiTokens;
/**
* @property int $id
@@ -26,6 +27,7 @@
*/
class User extends Authenticatable
{
+ use HasApiTokens;
use Notifiable;
/**
diff --git a/composer.json b/composer.json
index 32fda82ec0..c56c389579 100644
--- a/composer.json
+++ b/composer.json
@@ -3,7 +3,7 @@
"description": "Software livre de gestão escolar",
"type": "project",
"license": "GPL-2.0-or-later",
- "version": "2.7.2",
+ "version": "2.7.3",
"keywords": [
"Portabilis",
"i-Educar"
diff --git a/composer.lock b/composer.lock
index fc08b4452f..d47b7352e2 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "ccdb4af67f4aad26ed07661df9af756f",
+ "content-hash": "4ad8e7eb5afad3f64b71d9da822a2ef7",
"packages": [
{
"name": "asm89/stack-cors",
@@ -114,16 +114,16 @@
},
{
"name": "aws/aws-sdk-php",
- "version": "3.229.2",
+ "version": "3.231.2",
"source": {
"type": "git",
"url": "https://github.com/aws/aws-sdk-php.git",
- "reference": "142a872fd7172bf5d067f4e30e4f89593296fc8f"
+ "reference": "9a7c2a8c4b7f95074749e1a7b575e6b4486bdcab"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/142a872fd7172bf5d067f4e30e4f89593296fc8f",
- "reference": "142a872fd7172bf5d067f4e30e4f89593296fc8f",
+ "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/9a7c2a8c4b7f95074749e1a7b575e6b4486bdcab",
+ "reference": "9a7c2a8c4b7f95074749e1a7b575e6b4486bdcab",
"shasum": ""
},
"require": {
@@ -141,6 +141,7 @@
"andrewsville/php-token-reflection": "^1.4",
"aws/aws-php-sns-message-validator": "~1.0",
"behat/behat": "~3.0",
+ "composer/composer": "^1.10.22",
"doctrine/cache": "~1.4",
"ext-dom": "*",
"ext-openssl": "*",
@@ -199,9 +200,9 @@
"support": {
"forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80",
"issues": "https://github.com/aws/aws-sdk-php/issues",
- "source": "https://github.com/aws/aws-sdk-php/tree/3.229.2"
+ "source": "https://github.com/aws/aws-sdk-php/tree/3.231.2"
},
- "time": "2022-07-01T18:16:42+00:00"
+ "time": "2022-07-08T18:16:11+00:00"
},
{
"name": "aws/aws-sdk-php-laravel",
@@ -4206,16 +4207,16 @@
},
{
"name": "nuwave/lighthouse",
- "version": "v5.55.1",
+ "version": "v5.57.0",
"source": {
"type": "git",
"url": "https://github.com/nuwave/lighthouse.git",
- "reference": "4676619e2ddc1b516715885bb32142bd0658b6bd"
+ "reference": "77fb645de4d58622a515b5ff7575c3df96e768f1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nuwave/lighthouse/zipball/4676619e2ddc1b516715885bb32142bd0658b6bd",
- "reference": "4676619e2ddc1b516715885bb32142bd0658b6bd",
+ "url": "https://api.github.com/repos/nuwave/lighthouse/zipball/77fb645de4d58622a515b5ff7575c3df96e768f1",
+ "reference": "77fb645de4d58622a515b5ff7575c3df96e768f1",
"shasum": ""
},
"require": {
@@ -4333,7 +4334,7 @@
"type": "tidelift"
}
],
- "time": "2022-06-22T13:21:15+00:00"
+ "time": "2022-07-08T08:50:28+00:00"
},
{
"name": "paragonie/constant_time_encoding",
@@ -4454,16 +4455,16 @@
},
{
"name": "phpoffice/phpspreadsheet",
- "version": "1.23.0",
+ "version": "1.24.0",
"source": {
"type": "git",
"url": "https://github.com/PHPOffice/PhpSpreadsheet.git",
- "reference": "21e4cf62699eebf007db28775f7d1554e612ed9e"
+ "reference": "ebe8745c92a7cac4514d040758393b5399633b83"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/21e4cf62699eebf007db28775f7d1554e612ed9e",
- "reference": "21e4cf62699eebf007db28775f7d1554e612ed9e",
+ "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/ebe8745c92a7cac4514d040758393b5399633b83",
+ "reference": "ebe8745c92a7cac4514d040758393b5399633b83",
"shasum": ""
},
"require": {
@@ -4491,15 +4492,15 @@
},
"require-dev": {
"dealerdirect/phpcodesniffer-composer-installer": "dev-master",
- "dompdf/dompdf": "^1.0",
+ "dompdf/dompdf": "^1.0 || ^2.0",
"friendsofphp/php-cs-fixer": "^3.2",
"jpgraph/jpgraph": "^4.0",
- "mpdf/mpdf": "8.0.17",
+ "mpdf/mpdf": "8.1.1",
"phpcompatibility/php-compatibility": "^9.3",
"phpstan/phpstan": "^1.1",
"phpstan/phpstan-phpunit": "^1.0",
"phpunit/phpunit": "^8.5 || ^9.0",
- "squizlabs/php_codesniffer": "^3.6",
+ "squizlabs/php_codesniffer": "^3.7",
"tecnickcom/tcpdf": "^6.4"
},
"suggest": {
@@ -4552,9 +4553,9 @@
],
"support": {
"issues": "https://github.com/PHPOffice/PhpSpreadsheet/issues",
- "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/1.23.0"
+ "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/1.24.0"
},
- "time": "2022-04-24T13:53:10+00:00"
+ "time": "2022-07-09T13:49:09+00:00"
},
{
"name": "phpoption/phpoption",
@@ -5168,16 +5169,16 @@
},
{
"name": "psy/psysh",
- "version": "v0.11.6",
+ "version": "v0.11.7",
"source": {
"type": "git",
"url": "https://github.com/bobthecow/psysh.git",
- "reference": "3f5b5f8aaa979fbd0d1783173f4c82ad529fe621"
+ "reference": "77fc7270031fbc28f9a7bea31385da5c4855cb7a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/bobthecow/psysh/zipball/3f5b5f8aaa979fbd0d1783173f4c82ad529fe621",
- "reference": "3f5b5f8aaa979fbd0d1783173f4c82ad529fe621",
+ "url": "https://api.github.com/repos/bobthecow/psysh/zipball/77fc7270031fbc28f9a7bea31385da5c4855cb7a",
+ "reference": "77fc7270031fbc28f9a7bea31385da5c4855cb7a",
"shasum": ""
},
"require": {
@@ -5238,9 +5239,9 @@
],
"support": {
"issues": "https://github.com/bobthecow/psysh/issues",
- "source": "https://github.com/bobthecow/psysh/tree/v0.11.6"
+ "source": "https://github.com/bobthecow/psysh/tree/v0.11.7"
},
- "time": "2022-07-03T16:40:23+00:00"
+ "time": "2022-07-07T13:49:11+00:00"
},
{
"name": "ralouphie/getallheaders",
diff --git a/config/sanctum.php b/config/sanctum.php
index 529cfdc991..5d9e48c6c0 100644
--- a/config/sanctum.php
+++ b/config/sanctum.php
@@ -60,8 +60,8 @@
*/
'middleware' => [
- 'verify_csrf_token' => App\Http\Middleware\VerifyCsrfToken::class,
- 'encrypt_cookies' => App\Http\Middleware\EncryptCookies::class,
+ 'verify_csrf_token' => App\Http\Middleware\SkipMiddleware::class,
+ 'encrypt_cookies' => App\Http\Middleware\SkipMiddleware::class,
],
];
diff --git a/database/factories/LegacyMenuUserTypeFactory.php b/database/factories/LegacyMenuUserTypeFactory.php
new file mode 100644
index 0000000000..29de1d72d1
--- /dev/null
+++ b/database/factories/LegacyMenuUserTypeFactory.php
@@ -0,0 +1,81 @@
+
+ */
+ public function definition()
+ {
+ return [
+ 'ref_cod_tipo_usuario' => LegacyUserTypeFactory::new()->create(
+ [
+ 'nivel' => $this->faker->randomElement([
+ App_Model_NivelTipoUsuario::POLI_INSTITUCIONAL,
+ App_Model_NivelTipoUsuario::INSTITUCIONAL,
+ App_Model_NivelTipoUsuario::ESCOLA,
+ App_Model_NivelTipoUsuario::BIBLIOTECA
+ ]),
+ ]
+ ),
+ 'menu_id' => MenuFactory::new()->create()->getKey(),
+ 'cadastra' => 1,
+ 'visualiza' => 1,
+ 'exclui' => 1,
+ ];
+ }
+
+ public function admin()
+ {
+ return $this->state(
+ [
+ 'ref_cod_tipo_usuario' => LegacyUserTypeFactory::new()->create(
+ ['nivel' => App_Model_NivelTipoUsuario::POLI_INSTITUCIONAL]
+ )
+ ]
+ );
+ }
+
+ public function institutional()
+ {
+ return $this->state(
+ [
+ 'ref_cod_tipo_usuario' => LegacyUserTypeFactory::new()->create(
+ ['nivel' => App_Model_NivelTipoUsuario::INSTITUCIONAL]
+ )
+ ]
+ );
+ }
+
+ public function school()
+ {
+ return $this->state(
+ [
+ 'ref_cod_tipo_usuario' => LegacyUserTypeFactory::new()->create(
+ ['nivel' => App_Model_NivelTipoUsuario::ESCOLA]
+ )
+ ]
+ );
+ }
+
+ public function library()
+ {
+ return $this->state(
+ [
+ 'ref_cod_tipo_usuario' => LegacyUserTypeFactory::new()->create(
+ ['nivel' => App_Model_NivelTipoUsuario::ESCOLA]
+ )
+ ]
+ );
+ }
+}
diff --git a/database/factories/LegacyUserFactory.php b/database/factories/LegacyUserFactory.php
index 8f06217a1a..8d8a7b3ac4 100644
--- a/database/factories/LegacyUserFactory.php
+++ b/database/factories/LegacyUserFactory.php
@@ -37,6 +37,17 @@ public function definition(): array
];
}
+ public function admin(): static
+ {
+ return $this->state([
+ 'ref_cod_tipo_usuario' => function () {
+ return LegacyUserTypeFactory::new()->create([
+ 'nivel' => 1,
+ ]);
+ },
+ ]);
+ }
+
public function unique()
{
return $this->state(function () {
@@ -53,4 +64,20 @@ public function unique()
];
});
}
+
+ public function withAccess($process, $view = true, $modify = true, $remove = true): static
+ {
+ return $this->afterCreating(function (LegacyUser $user) use ($process, $view, $modify, $remove) {
+ $menu = MenuFactory::new()->create(
+ ['process' => $process]
+ );
+ LegacyMenuUserTypeFactory::new()->create([
+ 'menu_id' => $menu,
+ 'ref_cod_tipo_usuario' => $user->type,
+ 'cadastra' => $modify,
+ 'visualiza' => $view,
+ 'exclui' => $remove,
+ ]);
+ });
+ }
}
diff --git a/database/factories/MenuFactory.php b/database/factories/MenuFactory.php
new file mode 100644
index 0000000000..e6176ea57b
--- /dev/null
+++ b/database/factories/MenuFactory.php
@@ -0,0 +1,33 @@
+
+ */
+ public function definition()
+ {
+ return [
+ 'parent_id' => null,
+ 'title' => $this->faker->colorName(),
+ 'description' => $this->faker->name(),
+ 'link' => $this->faker->filePath(),
+ 'icon' => $this->faker->imageUrl(),
+ 'order'=> $this->faker->randomDigitNotZero(),
+ 'type' => $this->faker->randomDigitNotZero(),
+ 'parent_old' => null,
+ 'old' => null,
+ 'process' => $this->faker->randomDigitNotZero(),
+ 'active' => true,
+ ];
+ }
+}
diff --git a/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php
new file mode 100644
index 0000000000..3ce00023a9
--- /dev/null
+++ b/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php
@@ -0,0 +1,36 @@
+bigIncrements('id');
+ $table->morphs('tokenable');
+ $table->string('name');
+ $table->string('token', 64)->unique();
+ $table->text('abilities')->nullable();
+ $table->timestamp('last_used_at')->nullable();
+ $table->timestamps();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::dropIfExists('personal_access_tokens');
+ }
+}
diff --git a/database/migrations/2022_06_29_133818_update_cities.php b/database/migrations/2022_06_29_133818_update_cities.php
new file mode 100644
index 0000000000..115e09840c
--- /dev/null
+++ b/database/migrations/2022_06_29_133818_update_cities.php
@@ -0,0 +1,74 @@
+createOrUpdate('MA', 'Pindaré-Mirim', '2108504', 'Pindare Mirim');
+ $this->createOrUpdate('PI', 'Aroeiras do Itaim', '2200954', 'Aroeira do Itaim');
+ $this->createOrUpdate('PE', 'Belém do São Francisco', '2601607', 'Belem de Sao Francisco');
+ $this->createOrUpdate('PE', 'Lagoa de Itaenga', '2608503', 'Lagoa do Itaenga');
+ $this->createOrUpdate('MG', 'Brazópolis', '3108909', 'Brasopolis');
+ $this->createOrUpdate('MG', 'Pingo-d\'Água', '3150539', 'Pingo D Agua');
+ $this->createOrUpdate('MG', 'Sem-Peixe', '3165560', 'Sem Peixe');
+ $this->createOrUpdate('MG', 'Tocos do Moji', '3169059', 'Tocos do Mogi');
+ $this->createOrUpdate('RJ', 'Paraty', '3303807', 'Parati');
+ $this->createOrUpdate('RJ', 'Trajano de Moraes', '3305901', 'Trajano de Morais');
+ $this->createOrUpdate('PR', 'Bela Vista da Caroba', '4102752', 'Bela Vista do Caroba');
+ $this->createOrUpdate('MS', 'Batayporã', '5002001', 'Bataipora');
+
+ //Novos
+ $this->createOrUpdate('AM', 'Itacoatiara', '1301902');
+ $this->createOrUpdate('BA', 'Barro Preto', '2903300');
+ $this->createOrUpdate('CE', 'Itapajé', '2306306');
+ $this->createOrUpdate('MS', 'Paraíso das Águas', '5006275');
+ $this->createOrUpdate('MT', 'Curvelândia', '5103437');
+ $this->createOrUpdate('PA', 'Mojuí dos Campos', '1504752');
+ $this->createOrUpdate('PA', 'Santa Izabel do Pará', '1506500');
+ $this->createOrUpdate('PB', 'Joca Claudino', '2513653');
+ $this->createOrUpdate('PB', 'São Domingos', '2513968');
+ $this->createOrUpdate('PB', 'Tacima', '2516409');
+ $this->createOrUpdate('PE', 'Ilha de Itamaracá', '2607604');
+ $this->createOrUpdate('PR', 'Goioerê', '4108601');
+ $this->createOrUpdate('RN', 'Serra Caiada', '2410306');
+ $this->createOrUpdate('RS', 'Pinto Bandeira', '4314548');
+ $this->createOrUpdate('SC', 'Garopaba', '4205704');
+ $this->createOrUpdate('SC', 'Pescaria Brava', '4212650');
+ $this->createOrUpdate('SC', 'Balneário Rincão', '4220000');
+ $this->createOrUpdate('SP', 'Embu das Artes', '3515004');
+ $this->createOrUpdate('TO', 'Couto Magalhães', '1706001');
+ $this->createOrUpdate('TO', 'São Valério', '1720499');
+ }
+
+ public function createOrUpdate($state_abbreviation, $name, $ibge_code, $old_name = null)
+ {
+ //verifica se o codigo ibge já existe
+ if (City::where('ibge_code', $ibge_code)->exists()) {
+ return;
+ }
+
+ //atualiza ibge_code e nome, se a cidade estiver cadastrada sem o ibge_code
+ $city = City::whereRaw('unaccent(name) ILIKE unaccent(?)', $old_name ?? $name)->whereHas('state', fn ($q) => $q->where('abbreviation', $state_abbreviation))->whereNull('ibge_code')->first();
+
+ if ($city) {
+ $city->update(['ibge_code' => $ibge_code, 'name' => $name]);
+
+ return;
+ }
+
+ //cria a cidade
+ if ($state_id = State::where('abbreviation', $state_abbreviation)->value('id')) {
+ City::create(compact('state_id', 'name', 'ibge_code'));
+ }
+ }
+
+ public function down()
+ {
+ }
+};
diff --git a/database/migrations/2022_07_06_102852_change_orgao_regional_column_type.php b/database/migrations/2022_07_06_102852_change_orgao_regional_column_type.php
new file mode 100755
index 0000000000..10dd0dba19
--- /dev/null
+++ b/database/migrations/2022_07_06_102852_change_orgao_regional_column_type.php
@@ -0,0 +1,31 @@
+string('orgao_regional', 5)->change();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::table('pmieducar.instituicao', function (Blueprint $table) {
+ $table->integer('orgao_regional')->change();
+ });
+ }
+};
diff --git a/ieducar/intranet/educar_escola_cad.php b/ieducar/intranet/educar_escola_cad.php
index 30a61e5198..2bc0601cfb 100644
--- a/ieducar/intranet/educar_escola_cad.php
+++ b/ieducar/intranet/educar_escola_cad.php
@@ -8,24 +8,25 @@
use App\Rules\SchoolManagerUniqueIndividuals;
use App\Services\SchoolManagerService;
use iEducar\Modules\Addressing\LegacyAddressingFields;
+use iEducar\Modules\Educacenso\Model\AbastecimentoAgua;
use iEducar\Modules\Educacenso\Model\AreasExternas;
use iEducar\Modules\Educacenso\Model\Banheiros;
use iEducar\Modules\Educacenso\Model\DependenciaAdministrativaEscola;
use iEducar\Modules\Educacenso\Model\Dormitorios;
use iEducar\Modules\Educacenso\Model\Equipamentos;
use iEducar\Modules\Educacenso\Model\EquipamentosAcessoInternet;
-use iEducar\Modules\Educacenso\Model\EsferaAdministrativa;
+use iEducar\Modules\Educacenso\Model\EsgotamentoSanitario;
+use iEducar\Modules\Educacenso\Model\FonteEnergia;
use iEducar\Modules\Educacenso\Model\InstrumentosPedagogicos;
use iEducar\Modules\Educacenso\Model\Laboratorios;
use iEducar\Modules\Educacenso\Model\LocalFuncionamento;
use iEducar\Modules\Educacenso\Model\LocalizacaoDiferenciadaEscola;
use iEducar\Modules\Educacenso\Model\MantenedoraDaEscolaPrivada;
-use iEducar\Modules\Educacenso\Model\OrganizacaoEnsino;
use iEducar\Modules\Educacenso\Model\OrgaosColegiados;
use iEducar\Modules\Educacenso\Model\OrgaoVinculadoEscola;
+use iEducar\Modules\Educacenso\Model\PoderPublicoConveniado;
use iEducar\Modules\Educacenso\Model\RecursosAcessibilidade;
use iEducar\Modules\Educacenso\Model\RedeLocal;
-use iEducar\Modules\Educacenso\Model\Regulamentacao;
use iEducar\Modules\Educacenso\Model\ReservaVagasCotas;
use iEducar\Modules\Educacenso\Model\SalasAtividades;
use iEducar\Modules\Educacenso\Model\SalasFuncionais;
@@ -1542,8 +1543,6 @@ public function Novo()
$obj_permissoes->permissao_cadastra(561, $this->pessoa_logada, 3, 'educar_escola_lst.php');
$this->pesquisaPessoaJuridica = false;
- $this->preparaDados();
-
if (!$this->validaCnpjMantenedora()) {
return false;
}
@@ -1579,14 +1578,6 @@ public function Novo()
return false;
}
- if (!$this->validaCampoEquipamentos()) {
- return false;
- }
-
- if (!$this->validaInstrumentosPedagogicos()) {
- return false;
- }
-
if (! isset($this->pessoaj_id_oculto) ||
! is_int((int)$this->pessoaj_id_oculto)
) {
@@ -1594,6 +1585,8 @@ public function Novo()
return false;
}
+ $this->preparaDados();
+
$pessoaJuridica = (new clsJuridica((int)$this->pessoaj_id_oculto))->detalhe();
if ($pessoaJuridica === false) {
@@ -1857,8 +1850,6 @@ public function Editar()
$obj_permissoes->permissao_cadastra(561, $this->pessoa_logada, 7, 'educar_escola_lst.php');
$this->pesquisaPessoaJuridica = false;
- $this->preparaDados();
-
if (!$this->validaCnpjMantenedora()) {
return false;
}
@@ -1894,13 +1885,7 @@ public function Editar()
return false;
}
- if (!$this->validaCampoEquipamentos()) {
- return false;
- }
-
- if (!$this->validaInstrumentosPedagogicos()) {
- return false;
- }
+ $this->preparaDados();
$this->bloquear_lancamento_diario_anos_letivos_encerrados = is_null($this->bloquear_lancamento_diario_anos_letivos_encerrados) ? 0 : 1;
$this->utiliza_regra_diferenciada = !is_null($this->utiliza_regra_diferenciada);
@@ -1962,17 +1947,6 @@ public function Excluir()
);
}
- protected function validaCampoEquipamentos()
- {
- $dadosEquipamentos = transformStringFromDBInArray($this->equipamentos);
-
- if (is_array($dadosEquipamentos) && count($dadosEquipamentos) > 1 && in_array(Equipamentos::NENHUM_EQUIPAMENTO_LISTADO, $dadosEquipamentos)) {
- $this->mensagem = 'Não é possível informar mais de uma opção no campo: Equipamentos da escola, quando a opção: Nenhum dos equipamentos listados estiver selecionada.';
- return false;
- }
- return true;
- }
-
protected function inputTelefone($type, $typeLabel = '')
{
if (!$typeLabel) {
@@ -2024,16 +1998,14 @@ protected function validaCamposCenso()
$this->validaQuantidadeComputadoresAlunos() &&
$this->validaQuantidadeEquipamentosEnsino() &&
$this->validaLinguasIndigenas() &&
- $this->validaPoderPublicoParceriaConvenio() &&
$this->validaFormasDeContratacaoEntreAdministracaoPublicaEOutrasInstituicoes() &&
- $this->validaMatriculasAtendidasPorConvenio() &&
- $this->validaLinguasIndigenas()
+ $this->validaMatriculasAtendidasPorConvenio()
;
}
protected function validaFormasDeContratacaoEntreAdministracaoPublicaEOutrasInstituicoes(): bool
{
- $formasDeContratacao = transformStringFromDBInArray($this->formas_contratacao_adm_publica_e_outras_instituicoes);
+ $formasDeContratacao = $this->formas_contratacao_adm_publica_e_outras_instituicoes;
$acceptDependenciaAdministrativa = [DependenciaAdministrativaEscola::FEDERAL, DependenciaAdministrativaEscola::ESTADUAL, DependenciaAdministrativaEscola::MUNICIPAL];
$notAcceptFormasDeContratoInDependenciaAdministrativa = [1, 2, 3, 4];
@@ -2079,20 +2051,6 @@ protected function validaFormasDeContratacaoEntreAdministracaoPublicaEOutrasInst
return true;
}
- protected function validaInstrumentosPedagogicos()
- {
- $dadosInstrumentosPedagogicos = transformStringFromDBInArray($this->instrumentos_pedagogicos);
-
- if (is_array($dadosInstrumentosPedagogicos) &&
- count($dadosInstrumentosPedagogicos) > 1 &&
- in_array(InstrumentosPedagogicos::NENHUM_DOS_INSTRUMENTOS_LISTADOS, $dadosInstrumentosPedagogicos)) {
- $this->mensagem = 'Não é possível informar mais de uma opção no campo: Instrumentos, materiais socioculturais e/ou pedagógicos em uso na escola para o desenvolvimento de atividades de ensino aprendizagem, quando a opção: Nenhum dos instrumentos listados estiver selecionada.';
- return false;
- }
-
- return true;
- }
-
protected function validaOcupacaoPredio()
{
if (is_array($this->local_funcionamento) && in_array(LocalFuncionamento::PREDIO_ESCOLAR, $this->local_funcionamento) && empty($this->condicao)) {
@@ -2587,19 +2545,25 @@ protected function validaSalasAcessibilidade()
protected function validaOpcoesUnicasMultipleSearch()
{
- if (is_array($this->abastecimento_agua) && in_array(5, $this->abastecimento_agua) && count($this->abastecimento_agua) > 1) {
+ if (is_array($this->poder_publico_parceria_convenio) && in_array(PoderPublicoConveniado::NAO_POSSUI, $this->poder_publico_parceria_convenio) && count($this->poder_publico_parceria_convenio) > 1) {
+ $this->mensagem = 'Não é possível informar mais de uma opção no campo: Poder público responsável pela parceria ou convênio entre a Administração Pública e outras instituições, quando a opção: Não possui parceria ou convênio estiver selecionada.';
+
+ return false;
+ }
+
+ if (is_array($this->abastecimento_agua) && in_array(AbastecimentoAgua::INEXISTENTE, $this->abastecimento_agua) && count($this->abastecimento_agua) > 1) {
$this->mensagem = 'Não é possível informar mais de uma opção no campo: Abastecimento de água, quando a opção: Não há abastecimento de água estiver selecionada.';
return false;
}
- if (is_array($this->abastecimento_energia) && in_array(4, $this->abastecimento_energia) && count($this->abastecimento_energia) > 1) {
+ if (is_array($this->abastecimento_energia) && in_array(FonteEnergia::INEXISTENTE, $this->abastecimento_energia) && count($this->abastecimento_energia) > 1) {
$this->mensagem = 'Não é possível informar mais de uma opção no campo: Fonte de energia elétrica, quando a opção: Não há energia elétrica estiver selecionada.';
return false;
}
- if (is_array($this->esgoto_sanitario) && in_array(3, $this->esgoto_sanitario) && count($this->esgoto_sanitario) > 1) {
+ if (is_array($this->esgoto_sanitario) && in_array(EsgotamentoSanitario::INEXISTENTE, $this->esgoto_sanitario) && count($this->esgoto_sanitario) > 1) {
$this->mensagem = 'Não é possível informar mais de uma opção no campo: Esgotamento sanitário, quando a opção: Não há esgotamento sanitário estiver selecionada.';
return false;
@@ -2617,37 +2581,14 @@ protected function validaOpcoesUnicasMultipleSearch()
return false;
}
- if (is_array($this->uso_internet) && in_array(UsoInternet::NAO_POSSUI, $this->uso_internet) && count($this->uso_internet) > 1) {
- $this->mensagem = 'Não é possível informar mais de uma opção no campo: Acesso à internet, quando a opção: Não possui acesso à internet estiver selecionada.';
-
- return false;
- }
- if (is_array($this->abastecimento_agua) && in_array(5, $this->abastecimento_agua) && count($this->abastecimento_agua) > 1) {
- $this->mensagem = 'Não é possível informar mais de uma opção no campo: Abastecimento de água, quando a opção: Não há abastecimento de água estiver selecionada.';
-
- return false;
- }
-
- if (is_array($this->abastecimento_energia) && in_array(4, $this->abastecimento_energia) && count($this->abastecimento_energia) > 1) {
- $this->mensagem = 'Não é possível informar mais de uma opção no campo: Fonte de energia elétrica, quando a opção: Não há energia elétrica estiver selecionada.';
-
- return false;
- }
-
- if (is_array($this->esgoto_sanitario) && in_array(3, $this->esgoto_sanitario) && count($this->esgoto_sanitario) > 1) {
- $this->mensagem = 'Não é possível informar mais de uma opção no campo: Esgotamento sanitário, quando a opção: Não há esgotamento sanitário estiver selecionada.';
-
- return false;
- }
-
- if (is_array($this->tratamento_lixo) && in_array(TratamentoLixo::NAO_FAZ, $this->tratamento_lixo) && count($this->tratamento_lixo) > 1) {
- $this->mensagem = 'Não é possível informar mais de uma opção no campo: Tratamento do lixo/resíduos que a escola realiza, quando a opção: Não faz tratamento estiver selecionada';
+ if (is_array($this->equipamentos) && in_array(Equipamentos::NENHUM_EQUIPAMENTO_LISTADO, $this->equipamentos) && count($this->equipamentos) > 1) {
+ $this->mensagem = 'Não é possível informar mais de uma opção no campo: Equipamentos da escola, quando a opção: Nenhum dos equipamentos listados estiver selecionada.';
return false;
}
- if (is_array($this->recursos_acessibilidade) && in_array(RecursosAcessibilidade::NENHUM, $this->recursos_acessibilidade) && count($this->recursos_acessibilidade) > 1) {
- $this->mensagem = 'Não é possível informar mais de uma opção no campo: Recursos de acessibilidade, quando a opção: Nenhum dos recursos de acessibilidade estiver selecionada.';
+ if (is_array($this->rede_local) && in_array(RedeLocal::NENHUMA, $this->rede_local) && count($this->rede_local) > 1) {
+ $this->mensagem = 'Não é possível informar mais de uma opção no campo: Rede local de interligação de computadores, quando a opção: Não há rede local interligando computadores estiver selecionada.';
return false;
}
@@ -2671,13 +2612,21 @@ protected function validaOpcoesUnicasMultipleSearch()
return false;
}
+ if (is_array($this->instrumentos_pedagogicos) && in_array(InstrumentosPedagogicos::NENHUM_DOS_INSTRUMENTOS_LISTADOS, $this->instrumentos_pedagogicos) && count($this->instrumentos_pedagogicos) > 1) {
+ $this->mensagem = 'Não é possível informar mais de uma opção no campo: Instrumentos, materiais socioculturais e/ou pedagógicos em uso na escola para o desenvolvimento de atividades de ensino aprendizagem, quando a opção: Nenhum dos instrumentos listados estiver selecionada.';
+
+ return false;
+ }
+
return true;
}
protected function validaEquipamentosAcessoInternet()
{
- if (!is_array($this->equipamentos_acesso_internet) && !is_array($this->rede_local)) {
- return true;
+ if (is_array($this->equipamentos_acesso_internet) && in_array(2, $this->equipamentos_acesso_internet) &&
+ is_array($this->rede_local) && !in_array(3, $this->rede_local)) {
+ $this->mensagem = "O campo: Equipamentos que os aluno(a)s usam para acessar a internet da escola não deve ser preenchido com a opção: Dispositivos pessoais (computadores portáteis, celulares, tablets, etc.) quando o campo: Rede local de interligação de computadores não possuir a opção: Wireless selecionada.";
+ return false;
}
return true;
@@ -2709,13 +2658,11 @@ protected function validaRecursos()
protected function validaMatriculasAtendidasPorConvenio()
{
- $poderPulicoParceriaConvenio = transformStringFromDBInArray($this->poder_publico_parceria_convenio);
-
- if ($poderPulicoParceriaConvenio === null) {
+ if ($this->poder_publico_parceria_convenio === null) {
return true;
}
- if (!in_array(1, $poderPulicoParceriaConvenio) && !in_array(2, $poderPulicoParceriaConvenio)){
+ if (!in_array(1, $this->poder_publico_parceria_convenio) && !in_array(2, $this->poder_publico_parceria_convenio)){
return true;
}
@@ -2839,23 +2786,6 @@ protected function validaLinguasIndigenas()
return true;
}
- private function validaPoderPublicoParceriaConvenio()
- {
- $values = transformStringFromDBInArray($this->poder_publico_parceria_convenio);
-
- if ($values === null) {
- return true;
- }
-
- if (count($values) > 1 && in_array(3, $values)) {
- $this->mensagem = 'Não é possível informar mais de uma opção no campo: Poder público responsável pela parceria ou convênio entre a Administração Pública e outras instituições, quando a opção: Não possui parceria ou convênio estiver selecionada.';
-
- return false;
- }
-
- return true;
- }
-
public function Formular()
{
$this->title = 'Escola';
diff --git a/ieducar/intranet/educar_instituicao_cad.php b/ieducar/intranet/educar_instituicao_cad.php
index 89abc2c4a7..fcdabc44f4 100644
--- a/ieducar/intranet/educar_instituicao_cad.php
+++ b/ieducar/intranet/educar_instituicao_cad.php
@@ -153,7 +153,7 @@ public function Gerar()
false
);
foreach ($orgaosRegionais as $orgaoRegional) {
- $opcoes[$orgaoRegional->codigo] = $orgaoRegional->codigo;
+ $opcoes[strtoupper($orgaoRegional->codigo)] = strtoupper($orgaoRegional->codigo);
}
} else {
$opcoes = [null => 'Informe uma UF'];
diff --git a/ieducar/intranet/educar_matricula_det.php b/ieducar/intranet/educar_matricula_det.php
index f2096eefbc..6d40167012 100644
--- a/ieducar/intranet/educar_matricula_det.php
+++ b/ieducar/intranet/educar_matricula_det.php
@@ -196,15 +196,28 @@ public function Gerar()
$existeAtendimentoEspecializado = true;
}
- $nomesTurnos[] = match ((int)$enturmacao['turno_id']) {
+ if ($enturmacao['turno_id']) {
+ $nomesTurnos[] = match ((int)$enturmacao['turno_id']) {
+ clsPmieducarTurma::TURNO_MATUTINO => 'Matutino',
+ clsPmieducarTurma::TURNO_VESPERTINO => 'Vespertino',
+ default => null
+ };
+ }
+ }
+ $nomesTurmas = implode('
', $nomesTurmas);
+ $datasEnturmacoes = implode('
', $datasEnturmacoes);
+
+ if (empty($nomesTurnos)) {
+ $nomesTurnos = match ((int)$turma['turma_turno_id']) {
clsPmieducarTurma::TURNO_MATUTINO => 'Matutino',
clsPmieducarTurma::TURNO_VESPERTINO => 'Vespertino',
- default => 'Integral',
+ clsPmieducarTurma::TURNO_NOTURNO => 'Noturno',
+ clsPmieducarTurma::TURNO_INTEGRAL => 'Integral',
+ default => null
};
+ } else {
+ $nomesTurnos = implode('
', $nomesTurnos);
}
- $nomesTurmas = implode('
', $nomesTurmas);
- $datasEnturmacoes = implode('
', $datasEnturmacoes);
- $nomesTurnos = implode('
', $nomesTurnos);
if ($nomesTurmas) {
$this->addDetalhe(['Turma', $nomesTurmas]);
diff --git a/ieducar/intranet/educar_matricula_turma_tipo_aee_cad.php b/ieducar/intranet/educar_matricula_turma_tipo_aee_cad.php
index 334d9e1fc1..5ba79a110a 100644
--- a/ieducar/intranet/educar_matricula_turma_tipo_aee_cad.php
+++ b/ieducar/intranet/educar_matricula_turma_tipo_aee_cad.php
@@ -76,7 +76,7 @@ public function Editar()
foreach ($arrayTipoAtendimento as $data) {
$obj = new clsPmieducarMatriculaTurma($this->cod_matricula, $data['turma'], $this->pessoa_logada);
- $tipoAtendimento = implode(',', $data['value']);
+ $tipoAtendimento = $data['value'] ? implode(',', $data['value']) : null;
$obj->sequencial = $data['sequencial'];
$obj->tipo_atendimento = $tipoAtendimento;
$obj->edita();
diff --git a/ieducar/intranet/include/pessoa/clsPessoaTelefone.inc.php b/ieducar/intranet/include/pessoa/clsPessoaTelefone.inc.php
index 37f7306d7d..caf2fa1231 100644
--- a/ieducar/intranet/include/pessoa/clsPessoaTelefone.inc.php
+++ b/ieducar/intranet/include/pessoa/clsPessoaTelefone.inc.php
@@ -31,8 +31,10 @@ public function cadastra()
// Verifica se ja existe um telefone desse tipo cadastrado para essa pessoa
if (!$db->numLinhas()) {
// nao tem, cadastra 1 novo
- if ($this->ddd && $this->fone) {
- $db->Consulta("INSERT INTO {$this->schema_cadastro}.{$this->tabela_telefone} (idpes, tipo, ddd, fone,origem_gravacao, data_cad, operacao, idpes_cad) VALUES ('$this->idpes', '$this->tipo', '$this->ddd', '$this->fone','M', NOW(), 'I', '$this->idpes_cad')");
+ if (!empty($this->ddd) && !empty($this->fone)) {
+ $ddd = preg_replace('/\D/', '', $this->ddd);
+ $fone = preg_replace('/\D/', '', $this->fone);
+ $db->Consulta("INSERT INTO {$this->schema_cadastro}.{$this->tabela_telefone} (idpes, tipo, ddd, fone,origem_gravacao, data_cad, operacao, idpes_cad) VALUES ('$this->idpes', '$this->tipo', '$ddd', '$fone','M', NOW(), 'I', '$this->idpes_cad')");
return true;
}
diff --git a/ieducar/modules/Api/Views/DiarioController.php b/ieducar/modules/Api/Views/DiarioController.php
index d399f46d5a..635414ddb1 100644
--- a/ieducar/modules/Api/Views/DiarioController.php
+++ b/ieducar/modules/Api/Views/DiarioController.php
@@ -19,7 +19,7 @@ protected function getComponentesPorMatricula($matriculaId)
return App_Model_IedFinder::getComponentesPorMatricula($matriculaId);
}
- protected function getComponentesPorTurma($turmaId)
+ protected function getComponentesPorTurma($turmaId,$matriculaId = null)
{
$objTurma = new clsPmieducarTurma($turmaId);
$detTurma = $objTurma->detalhe();
@@ -27,9 +27,18 @@ protected function getComponentesPorTurma($turmaId)
$serieId = $detTurma['ref_ref_cod_serie'];
$ano = $detTurma['ano'];
+ //obtem a série da matrícula
+ if ($matriculaId && $detTurma['multiseriada'] == 1) {
+ $serieId = $this->getSeriePorMatricula($matriculaId) ?: $serieId;
+ }
+
return App_Model_IedFinder::getComponentesTurma($serieId, $escolaId, $turmaId, null, null, null, null, null, $ano);
}
+ private function getSeriePorMatricula($matriculaId) {
+ return \App\Models\LegacyRegistration::where('cod_matricula',$matriculaId)->value('ref_ref_cod_serie');
+ }
+
protected function validateComponenteCurricular($matriculaId, $componenteCurricularId)
{
$componentes = $this->getComponentesPorMatricula($matriculaId);
@@ -43,10 +52,9 @@ protected function validateComponenteCurricular($matriculaId, $componenteCurricu
return $valid;
}
- protected function validateComponenteTurma($turmaId, $componenteCurricularId)
+ protected function validateComponenteTurma($turmaId, $componenteCurricularId,$matriculaId = null)
{
- $componentesTurma = $this->getComponentesPorTurma($turmaId);
-
+ $componentesTurma = $this->getComponentesPorTurma($turmaId,$matriculaId);
if ($componentesTurma instanceof CoreExt_Entity) {
$componentesTurma = CoreExt_Entity::entityFilterAttr($componentesTurma, 'id', 'id');
} else {
@@ -207,7 +215,7 @@ protected function postNotas()
}
foreach ($notaTurmaAluno as $componenteCurricularId => $notaTurmaAlunoDisciplina) {
- if (!$this->validateComponenteTurma($turmaId, $componenteCurricularId)) {
+ if (!$this->validateComponenteTurma($turmaId, $componenteCurricularId,$matriculaId)) {
continue;
}
@@ -287,6 +295,7 @@ protected function postNotas()
$this->messenger->append('Notas postadas com sucesso!', 'success');
}
+
}
protected function postRecuperacoes()
@@ -304,7 +313,7 @@ protected function postRecuperacoes()
}
foreach ($notaTurmaAluno as $componenteCurricularId => $notaTurmaAlunoDisciplina) {
- if ($this->validateComponenteTurma($turmaId, $componenteCurricularId)) {
+ if ($this->validateComponenteTurma($turmaId, $componenteCurricularId,$matriculaId)) {
$notaOriginal = $notaTurmaAlunoDisciplina['nota'];
if (is_null($notaOriginal)) {
@@ -403,7 +412,7 @@ protected function postFaltasPorComponente()
foreach ($faltaTurmaAluno as $componenteCurricularId => $faltaTurmaAlunoDisciplina) {
if ($matriculaId) {
if ($this->validateMatricula($matriculaId)) {
- if ($this->validateComponenteTurma($turmaId, $componenteCurricularId)) {
+ if ($this->validateComponenteTurma($turmaId, $componenteCurricularId,$matriculaId)) {
$valor = $faltaTurmaAlunoDisciplina['valor'];
$falta = new Avaliacao_Model_FaltaComponente([
@@ -478,7 +487,7 @@ protected function postPareceresPorEtapaComponente()
}
foreach ($parecerTurmaAluno as $componenteCurricularId => $parecerTurmaAlunoComponente) {
- if ($this->validateComponenteTurma($turmaId, $componenteCurricularId)) {
+ if ($this->validateComponenteTurma($turmaId, $componenteCurricularId,$matriculaId)) {
$parecerDescritivo = new Avaliacao_Model_ParecerDescritivoComponente([
'componenteCurricular' => $componenteCurricularId,
diff --git a/ieducar/modules/HistoricoEscolar/Views/ProcessamentoApiController.php b/ieducar/modules/HistoricoEscolar/Views/ProcessamentoApiController.php
index 098206e16f..5a74d2d127 100644
--- a/ieducar/modules/HistoricoEscolar/Views/ProcessamentoApiController.php
+++ b/ieducar/modules/HistoricoEscolar/Views/ProcessamentoApiController.php
@@ -785,6 +785,7 @@ protected function recreateHistoricoDisciplinas($historicoSequencial, $alunoId,
}
$arrayAreaConhecimento[$componenteCurricular->area_conhecimento->id]['nota_conceitual_numerica'] ??= 0 ;
+ $arrayAreaConhecimento[$componenteCurricular->area_conhecimento->id]['falta'] ??= 0;
$arrayAreaConhecimento[$componenteCurricular->area_conhecimento->id]['nota'] += $nota;
$arrayAreaConhecimento[$componenteCurricular->area_conhecimento->id]['nota_conceitual_numerica'] += is_numeric($notaConceitualNumerica) ? $notaConceitualNumerica : 0;
@@ -906,7 +907,7 @@ protected function getFalta($situacaoFaltaComponenteCurricular = null)
$falta = $this->getRequest()->faltas;
}
- return $falta;
+ return empty($falta) ? 0 : $falta;
}
protected function getDadosMatricula($matriculaId)
diff --git a/resources/views/enrollments/batch/cancel.blade.php b/resources/views/enrollments/batch/cancel.blade.php
index 5566ce1cde..de012c4499 100644
--- a/resources/views/enrollments/batch/cancel.blade.php
+++ b/resources/views/enrollments/batch/cancel.blade.php
@@ -51,7 +51,7 @@
-