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 @@ -
+

Alunos matriculados e enturmados

@@ -102,9 +102,9 @@ class="enrollment-check" {{ $success->first($enrollment->id) ? 'disabled' : '' }} /> - {{ $enrollment->registration->cod_matricula }} - {{ $enrollment->student_name }} - {{ $enrollment->data_enturmacao->format('d/m/Y') }} + {{ $enrollment?->registration?->cod_matricula }} + {{ $enrollment?->student_name }} + {{ $enrollment?->data_enturmacao->format('d/m/Y') }} {{ $success->first($enrollment->id) }} {{ $fails->first($enrollment->id) }} @@ -137,6 +137,7 @@ class="enrollment-check"
@endsection diff --git a/src/Modules/Educacenso/Data/Registro30.php b/src/Modules/Educacenso/Data/Registro30.php index ce692ccbee..c67e0d8dcb 100644 --- a/src/Modules/Educacenso/Data/Registro30.php +++ b/src/Modules/Educacenso/Data/Registro30.php @@ -61,19 +61,32 @@ public function getData($schoolId) $this->modelArray[$data->codigoPessoa] = $this->model; } - $unconsideredKnowledgeArea = [32, 99]; - foreach ($this->modelArray as &$record) { $record->formacaoAnoConclusao = Portabilis_Utils_Database::pgArrayToArray($record->formacaoAnoConclusao); $record->formacaoCurso = Portabilis_Utils_Database::pgArrayToArray($record->formacaoCurso); $record->formacaoInstituicao = Portabilis_Utils_Database::pgArrayToArray($record->formacaoInstituicao); $record->formacaoComponenteCurricular = Portabilis_Utils_Database::pgArrayToArray($record->formacaoComponenteCurricular); - $record->formacaoComponenteCurricular = array_diff($record->formacaoComponenteCurricular, $unconsideredKnowledgeArea); + $record->formacaoComponenteCurricular = $this->validaFormacaoComponenteCurricular($record->formacaoComponenteCurricular); } return $this->modelArray; } + private function validaFormacaoComponenteCurricular($componentes) + { + $anulaProximoComponente = false; + $componentesDesconsiderados = [32, 99]; + + foreach ($componentes as $key => $componente) { + if ($anulaProximoComponente === true || (int) $componente === 0 || in_array($componente, $componentesDesconsiderados)) { + $anulaProximoComponente = true; + $componentes[$key] = null; + } + } + + return $componentes; + } + /** * @param ItemOfRegistro30[] $array * @param string $type