Skip to content

Commit

Permalink
Merge pull request #243 from secultce/develop
Browse files Browse the repository at this point in the history
Merge develop to homolog
Junior-Shyko authored Sep 12, 2024
2 parents 50fcd9b + bb3e134 commit 6dbd98d
Showing 20 changed files with 186 additions and 62 deletions.
1 change: 1 addition & 0 deletions src/protected/application/lib/MapasCulturais/App.php
Original file line number Diff line number Diff line change
@@ -377,6 +377,7 @@ public function init($config = []){
$doctrine_config->addCustomStringFunction('string_agg', 'MapasCulturais\DoctrineMappings\Functions\StringAgg');
$doctrine_config->addCustomStringFunction('unaccent', 'MapasCulturais\DoctrineMappings\Functions\Unaccent');
$doctrine_config->addCustomStringFunction('recurring_event_occurrence_for', 'MapasCulturais\DoctrineMappings\Functions\RecurringEventOcurrenceFor');
$doctrine_config->addCustomStringFunction('regexp_replace', 'MapasCulturais\DoctrineMappings\Functions\RegexpReplace');

$doctrine_config->addCustomNumericFunction('st_dwithin', 'MapasCulturais\DoctrineMappings\Functions\STDWithin');
$doctrine_config->addCustomNumericFunction('st_makepoint', 'MapasCulturais\DoctrineMappings\Functions\STMakePoint');
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
<?php

namespace MapasCulturais\DoctrineMappings\Functions;

use Doctrine\ORM\Query\AST\Functions\FunctionNode;
use Doctrine\ORM\Query\Lexer;
use Doctrine\ORM\Query\SqlWalker;
use Doctrine\ORM\Query\Parser;

class RegexpReplace extends FunctionNode
{
public $column = null;
public $pattern = null;
public $replacement = null;
public $flags = null;

public function parse(Parser $parser)
{
$parser->match(Lexer::T_IDENTIFIER);
$parser->match(Lexer::T_OPEN_PARENTHESIS);

$this->column = $parser->StringPrimary();
$parser->match(Lexer::T_COMMA);

$this->pattern = $parser->StringPrimary();
$parser->match(Lexer::T_COMMA);

$this->replacement = $parser->StringPrimary();
$parser->match(Lexer::T_COMMA);

$this->flags = $parser->StringPrimary();

$parser->match(Lexer::T_CLOSE_PARENTHESIS);
}

public function getSql(SqlWalker $sqlWalker)
{
return 'regexp_replace(' .
$this->column->dispatch($sqlWalker) . ', ' .
$this->pattern->dispatch($sqlWalker) . ', ' .
$this->replacement->dispatch($sqlWalker) . ', ' .
$this->flags->dispatch($sqlWalker) .
')';
}
}
Original file line number Diff line number Diff line change
@@ -113,13 +113,13 @@ function getReportConfiguration($opportunity, $call_hooks = true){
],

'committee' => (object) [
'label' => i::__('Informações sobre o avaliador'),
'label' => i::__(Utils::getTermsByOpportunity('Informações sobre o avaliador', $opportunity)),
'color' => '#CCFFCC',
'columns' => $committee_columns
],

'evaluation' => (object) [
'label' => i::__('Avaliação'),
'label' => i::__(Utils::getTermsByOpportunity('Avaliação', $opportunity)),
'color' => '#00AA00',
'columns' => $evaluation_columns
]
32 changes: 32 additions & 0 deletions src/protected/application/lib/MapasCulturais/Utils.php
Original file line number Diff line number Diff line change
@@ -185,4 +185,36 @@ static function checkUserHasSeal($sealId)

return $hasSeal;
}

static function getTermsByOpportunity($text, $opportunity)
{
$terminology = [
'Avaliador' => 'Fiscal',
'avaliador' => 'fiscal',
'Avaliadores' => 'Fiscais',
'avaliadores' => 'fiscais',
'Avaliação' => 'Monitoramento',
'avaliação' => 'monitoramento',
'a avaliação' => 'o monitoramento',
'da avaliação' => 'do monitoramento',
'avaliação encontrada' => 'monitoramento encontrado',
'Nenhuma avaliação enviada' => 'Nenhum monitoramento enviado',
'Avaliações' => 'Monitoramentos',
'avaliações' => 'monitoramentos',
'as avaliações' => 'os monitoramentos',
'das avaliações' => 'dos monitoramentos',
'Suas avaliações' => 'Seus monitoramentos',
'todas as <b>avaliações</b>' => 'todos os <b>monitoramentos</b>',
'Avaliado' => 'Monitorado',
'avaliado' => 'monitorado',
'Avaliada' => 'Monitorada',
'avaliada' => 'monitorada',
];

if ($opportunity->getMetadata('use_multiple_diligence') === 'Sim') {
$text = strtr($text, $terminology);
}

return $text;
}
}
Original file line number Diff line number Diff line change
@@ -113,7 +113,7 @@ public function notification(): void
App::i()->applyHook('controller(diligence).notification:before');
//Notificação no Mapa Cultural
$notification = new NotificationDiligence();
$notification->create($this);
$notification->create($this, '');

$userDestination = $notification->userDestination($this);
App::i()->applyHook('controller(diligence).notification:after');
Original file line number Diff line number Diff line change
@@ -6,7 +6,9 @@
use \MapasCulturais\App;
use MapasCulturais\Entity;
use Diligence\Entities\Tado as EntityTado;
use Diligence\Entities\Diligence as EntityDiligence;
use Diligence\Repositories\Diligence as RepoDiligence;
use Diligence\Entities\NotificationDiligence;

class Tado extends \MapasCulturais\Controller
{
@@ -40,22 +42,15 @@ function GET_emitir()

function GET_gerar()
{
$this->requireAuthentication();
$app = App::i();
$reg = $app->repo('Registration')->find($this->data['id']);
//Buscando o tado gerado
$td = new RepoDiligence();
$tado = $td->getTado($reg);

$reg = $app->repo('Registration')->find($this->data['id']);
//INSTANCIA DO TIPO ARRAY OBJETO
$app->view->regObject = new \ArrayObject;
$app->view->regObject['reg'] = $reg;
$app->view->regObject['tado'] = $tado;
//Se por acaso não tiver registrado o agente fiscal
if(is_null($app->view->regObject['tado']->agentSignature))
{
setcookie("erro-tado", "Devido a um erro não foi possivel gerar seu TADO.", time() + 3600, "/");
$app->redirect($app->createUrl('tado/emitir', $reg->id));
}
//Buscando o tado gerado
$app->view->regObject['tado'] = $td->getTado($reg);
$app->view->regObject['reg'] = $reg;
$mpdf = self::mpdfConfig();
self::mdfBodyMulti($mpdf,
'tado/gerar',
@@ -123,6 +118,8 @@ function update($request)
$tado->cpfManager = $request->data['cpfManager'];
$entity = self::saveEntity($tado);

self::sendNotificationTagoGeneration();

if($entity["entityId"]){
if($request->data['status'] == 1){
self::returnRequestJson('O seu documento foi gerado!', 'TADO finalizado e realizado o download para o seu computador.', 200);
@@ -146,4 +143,27 @@ private function returnRequestJson($title, $message, $status)
'status' => $status
]);
}

//Notificação via plataforma do mapa cultural ao proponente
public function sendNotificationTagoGeneration()
{
$msgTado = 'O TERMO DE ACEITAÇÃO DEFINITIVA DO OBJETO, foi gerado e você já pode verificar acessando o sua inscrição: Nº ';

$app = App::i();
$ag = $app->repo('Registration')->find($this->data['id']);
//Inscrição, agente fiscal e agente proponente
$notifi = [
'registration' => $ag->id,
'openAgent' => $app->user->profile->id,
'agent' => $ag->owner->id
];

$notification = new NotificationDiligence();
$class = new class {
public $data = [];
};

$class->data = $notifi;
$notification->create($class, $msgTado);
}
}
Original file line number Diff line number Diff line change
@@ -7,17 +7,24 @@

class NotificationDiligence {

public function create($class)
public function create($class, $msgSend)
{

$app = App::i();
$notification = new Notification();
$agent = $app->repo('Agent')->find($class->data['agent']);

$agent = $app->repo('Agent')->find($class->data['agent']);
$url = $app->createUrl('inscricao', $class->data['registration']);
//Mensagem para notificação na plataforma
$numberRegis = '<a href="'.$url.'">'.$class->data['registration'].'</a>';
$message = 'Um parecerista abriu uma diligência para você responder na inscrição de número: '.$numberRegis;

if($msgSend == '' || $msgSend == null)
{
$msgSend = 'Um parecerista abriu uma diligência para você responder na inscrição de número: ';
}

$message = $msgSend . $numberRegis ;

$notification->message = $message;
$notification->user = $agent->user;

14 changes: 9 additions & 5 deletions src/protected/application/lib/modules/Diligence/Module.php
Original file line number Diff line number Diff line change
@@ -170,16 +170,20 @@ function _init () {
$app->hook('template(registration.view.registration-sidebar-rigth):end', function() use ($app, $module){
Module::publishAssets();
$entity = $this->controller->requestedEntity;

if ( $module->isEvaluator($entity->opportunity, $entity) )
//A pessoa dona da inscrição tem acesso a visualizar o TADO
$ownerRegistration = $app->user->profile == $entity->owner ? true : false;
//Se é avaliador
$isEvaluation = $module->isEvaluator($entity->opportunity, $entity);
if ($isEvaluation || $ownerRegistration)
{
$tado = DiligenceRepo::getTado($entity);
$app->view->enqueueStyle('app', 'multi-css', 'css/diligence/multi.css');
$app->view->enqueueScript('app', 'multi-js', 'js/multi/multi.js');
$this->part('multi/accountability-actions', [
'reg' => $entity,
'app' => $app,
'tado' => $tado
'reg' => $entity,
'app' => $app,
'tado' => $tado,
'isEvaluation' => $isEvaluation
]);
};

Original file line number Diff line number Diff line change
@@ -323,15 +323,14 @@ function verifySubject(subject_exec_physical, subject_report_finance)
}
//Na situação de diligência única
if(
MapasCulturais.entity.object.opportunity.use_multiple_diligence !== 'Sim'
&& MapasCulturais.entity.object.opportunity.use_diligence == "Sim"
MapasCulturais.entity.object.opportunity.use_multiple_diligence == 'Sim'
&& $("#"+subject_exec_physical+":checked").val() == undefined
&& $("#"+subject_report_finance+":checked").val() == undefined
)
{
diligenceMessage.messageSimple("Ops!", "Você precisa escolher um assunto ou mais assuntos", 2000);
return false;
}else{
}else if(MapasCulturais.entity.object.opportunity.use_multiple_diligence !== 'Sim'){
objSendDiligence['subject'].push('single_diligence');
}

Original file line number Diff line number Diff line change
@@ -30,10 +30,25 @@
</div>

<?php
if ($enableBtn) {
$this->part('multi/multi-select', ['reg' => $reg, 'tado' => $tado]);
}
?>
//Visualização para o avaliador
if ($enableBtn && $isEvaluation) {
$this->part('multi/multi-select', ['reg' => $reg, 'tado' => $tado]);

}
//Visualização para avaliador e o proponente
if( !is_null($tado) && ($tado->status == 1) ): ?>
<p style="text-align: center;width: 100%; margin-bottom: 15px" id="">
<a href="<?= $app->createUrl('tado', 'gerar/' . $reg->id); ?>"
target="_blank"
class="btn btn-primary"
title="Visualizar o TADO"
style="display: block;"
>
Visualizar TADO
</a>
</p>

<?php endif; ?>

<div id="import-financial-report" class="js-editbox mc-bottom" title="Importar Relatório Financeiro" data-submit-label="Importar">
<?php
Original file line number Diff line number Diff line change
@@ -33,16 +33,3 @@
</p>
</div>
<?php endif;
if( !is_null($tado) && ($tado->status == 1) ): ?>
<p style="text-align: center;width: 100%; margin-bottom: 15px" id="">
<a href="<?= $app->createUrl('tado', 'gerar/' . $reg->id); ?>"
target="_blank"
class="btn btn-primary"
title="Visualizar o TADO"
style="display: block;"
>
Visualizar TADO
</a>
</p>

<?php endif; ?>
Original file line number Diff line number Diff line change
@@ -126,7 +126,11 @@
</tr>
</tbody>
</table>
<?php if($app->view->regObject['tado']->nameManager !== null || $app->view->regObject['tado']->nameManager !== ''): ?>
<?php
if( ($app->view->regObject['tado']->nameManager !== null)):
//Em ocasioes que o gestor é adicionado e depois removido
if($app->view->regObject['tado']->nameManager !== '') :
?>
<div>
<p>
<br>
@@ -167,4 +171,7 @@
</tr>
</tbody>
</table>
<?php endif; ?>
<?php
endif;
endif;
?>
Original file line number Diff line number Diff line change
@@ -4,7 +4,8 @@
use MapasCulturais\App,
MapasCulturais\i,
MapasCulturais\Entities,
MapasCulturais\Entities\Notification;
MapasCulturais\Entities\Notification,
MapasCulturais\Utils;

class Module extends \MapasCulturais\Module{

@@ -104,7 +105,7 @@ function _init() {

$subject = i::__("Requisição para avaliar oportunidade");
$message = sprintf(i::__("%s te convida para avaliar a oportunidade %s vinculada ao %s %s. %s"), $profile_link, $opportunity_link, $owner_entity_label, $owner_entity_link, $urlDestinationPanel_link);
$message_to_requester = sprintf(i::__("Seu convite para fazer do agente %s um avaliador foi enviada."), $destination_link);
$message_to_requester = sprintf(i::__(Utils::getTermsByOpportunity("Seu convite para fazer do agente %s um avaliador foi enviada.", $opportunity)), $destination_link);

} else if($origin->getClassName() === 'MapasCulturais\Entities\Registration'){
$project = $origin->project;
10 changes: 5 additions & 5 deletions src/protected/application/lib/modules/QuotasSet/Module.php
Original file line number Diff line number Diff line change
@@ -49,12 +49,12 @@ public function _init(): void
$cpf = preg_replace('/[^0-9]/', '', $keyword);

$qb = $module->app->repo(Agent::class)->createQueryBuilder('a');
$agents = $qb->leftJoin(AgentMeta::class, 'am', 'WITH', "a = am.owner and am.key = 'cpf'")
->where($qb->expr()->orX(
$qb->expr()->like('LOWER(a.name)', $qb->expr()->literal('%' . $keyword . '%')),
$qb->expr()->eq($qb->expr()->literal("regexp_replace(am.value, '[^0-9]', '', 'g')"), $qb->expr()->literal($cpf))
))
$agents = $qb->leftJoin(AgentMeta::class, 'am', 'WITH', "a = am.owner and am.key = 'cpf'")
->where('LOWER(a.name) LIKE :keyword')
->orWhere("regexp_replace(am.value, '[^0-9]', '', 'g') = :cpf")
->orderBy('a.updateTimestamp', 'DESC')
->setParameter('keyword', '%' . $keyword . '%')
->setParameter('cpf', $cpf)
->getQuery()
->getResult();

3 changes: 2 additions & 1 deletion src/protected/application/lib/modules/Reports/Controller.php
Original file line number Diff line number Diff line change
@@ -16,6 +16,7 @@
use MapasCulturais\Entities\MetaList;
use MapasCulturais\Entities\Opportunity;
use MapasCulturais\Entities\Registration;
use MapasCulturais\Utils;

class Controller extends \MapasCulturais\Controller
{
@@ -1035,7 +1036,7 @@ private function getValidFields($opportunity)
$fields[] = $this->fieldDefinition(i::__("Categoria"), "category", "r");
}
$fields[] = $this->fieldDefinition(i::__("Status"), "status", "r", 'status');
$fields[] = $this->fieldDefinition(i::__("Avaliação"), "consolidated_result", "r", "valueToString");
$fields[] = $this->fieldDefinition(i::__(Utils::getTermsByOpportunity("Avaliação", $opportunity)), "consolidated_result", "r", "valueToString");

$opportunities[] = $opportunity;
$previous = $opportunity->previousPhases;
Loading

0 comments on commit 6dbd98d

Please sign in to comment.