Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
84 commits
Select commit Hold shift + click to select a range
c2fa362
validando no frontend(url valida, yt e vimeo id)
CaffeineIssues Dec 11, 2025
492512c
adicionando validação nos links
CaffeineIssues Dec 11, 2025
5aa50aa
validação dos campos de rede social
CaffeineIssues Dec 12, 2025
3a10200
Merge remote-tracking branch 'origin/develop' into feature/entity-lin…
CaffeineIssues Dec 12, 2025
9706c16
Permitindo apenas superadmin e saasadmin ver o historico
CaffeineIssues Dec 12, 2025
4ebbb8a
feat: visualizar contrarrazão (proponente)
jeff-doliveira1 Dec 15, 2025
efa891b
validando se cpf ou cnpj são unicos
CaffeineIssues Dec 16, 2025
f41629f
removendo logica desnecessaria
CaffeineIssues Dec 17, 2025
59897ab
Usando unique para validar
CaffeineIssues Dec 17, 2025
5c6c007
Merge pull request #657 from secultce/feature/counter-argument
jeff-doliveira1 Dec 29, 2025
6b50376
Merge pull request #655 from secultce/feature/admin-only-history
CaffeineIssues Dec 29, 2025
505df08
feat: editar contrarrazão
jeff-doliveira1 Dec 30, 2025
5844d2b
removendo icones repetidos do painel do mapa
CaffeineIssues Dec 30, 2025
b8922e7
Merge pull request #665 from secultce/feature/counter-argument
jeff-doliveira1 Dec 30, 2025
10762d7
icones de consulta pública e politicas afirmativas
CaffeineIssues Jan 5, 2026
e9d975b
aplicando tamanho globalmente
CaffeineIssues Jan 5, 2026
7943470
feat: visualizar contrarrazão (admin)
jeff-doliveira1 Jan 6, 2026
ca32cfe
Merge pull request #669 from secultce/feature/counter-argument
jeff-doliveira1 Jan 6, 2026
ee5cede
refatoração das condições de validação
CaffeineIssues Jan 6, 2026
2e13d41
Merge pull request #652 from secultce/feature/entity-link-validation
CaffeineIssues Jan 6, 2026
995caca
Atualizando api do vimeo que estava deprecada para a versão nova
CaffeineIssues Jan 6, 2026
0240db5
truncando arquivos longos e ajustando botões
CaffeineIssues Jan 9, 2026
bf794eb
feat: responder contrarrazão
jeff-doliveira1 Jan 12, 2026
4ddf691
Merge pull request #677 from secultce/feature/counter-argument
jeff-doliveira1 Jan 12, 2026
fda1cf2
correção diligente
CaffeineIssues Jan 12, 2026
19b730d
correção na renderização do proponente e no diligente
CaffeineIssues Jan 13, 2026
54d6fdb
pequeno fix no envio
CaffeineIssues Jan 13, 2026
4e9a902
removendo console.log
CaffeineIssues Jan 13, 2026
812be23
Merge pull request #675 from secultce/feature/counter-argument-view-p…
jeff-doliveira1 Jan 13, 2026
308a099
correções no front da contrarazão
CaffeineIssues Jan 13, 2026
3b1a1f9
removendo função de excluir da tela da oportunidade
CaffeineIssues Jan 14, 2026
b29730f
Merge pull request #681 from secultce/feature/counter-argument-opport…
jeff-doliveira1 Jan 15, 2026
fc55ebe
feat: enviar contrarrazão (validações)
jeff-doliveira1 Jan 16, 2026
d1f0b11
Merge pull request #686 from secultce/feature/counter-argument
jeff-doliveira1 Jan 16, 2026
c00ca71
corrigindo regras de permissão da diligencia
CaffeineIssues Jan 19, 2026
262a620
feat: responder contrarrazão (validações)
jeff-doliveira1 Jan 20, 2026
505bccf
Merge pull request #689 from secultce/feature/counter-argument
jeff-doliveira1 Jan 20, 2026
c3183a2
feat: publicar respostas das contrarrazões
jeff-doliveira1 Jan 23, 2026
4a45fe7
Merge pull request #691 from secultce/feature/counter-argument
jeff-doliveira1 Jan 26, 2026
9f88149
fix: instalação do nodejs
jeff-doliveira1 Jan 27, 2026
6f20039
feat: bloqueio da resposta da contrarrazão após sua publicação
jeff-doliveira1 Jan 28, 2026
7ef93e2
fix: renderização das situações da contrarrazão
jeff-doliveira1 Jan 30, 2026
93c95bb
Merge pull request #666 from secultce/feature/panel-icons
jeff-doliveira1 Feb 2, 2026
16fc5c6
Merge pull request #671 from secultce/feature/vimeo-thumbnail
jeff-doliveira1 Feb 2, 2026
be74fbc
adicionando export de csv na tela da oportunidade para a tabela da co…
CaffeineIssues Feb 2, 2026
8a4ac94
adicionado botão de imprimir na contrarrazão
CaffeineIssues Feb 4, 2026
e85ed4d
adicionado anexos ao pdf
CaffeineIssues Feb 5, 2026
d3203c2
pequena correção na logica do pdf
CaffeineIssues Feb 5, 2026
c3b4a9f
removendo função não utilizada
CaffeineIssues Feb 5, 2026
625b7f3
removendo imports desnecessarios
CaffeineIssues Feb 5, 2026
8f526cc
Merge pull request #658 from secultce/feature/unique-cpf-cnpj-validation
Junior-Shyko Feb 5, 2026
16ab91d
Merge pull request #667 from secultce/feature/broken-sweet-alerts-ani…
Junior-Shyko Feb 5, 2026
245a583
adicionada uma nova coluna com os dados da resposta. que fica hidden …
CaffeineIssues Feb 6, 2026
9d47541
fix: imagem da seção de introdução dos subsites
jeff-doliveira1 Feb 6, 2026
dead783
removendo botão de imprimir da tela da contrarrazão
CaffeineIssues Feb 6, 2026
ad8ec52
Merge pull request #704 from secultce/fix/subsites
Junior-Shyko Feb 9, 2026
784c410
:children_crossing: #663 , informando uma alerta de validação de arquivo
Junior-Shyko Feb 10, 2026
3665a3b
:children_crossing: LIberando a visualização para admins da opp
Junior-Shyko Feb 10, 2026
a97a4ae
fix nas permissões do botão
CaffeineIssues Feb 12, 2026
e832137
fix nas permissões da impressão
CaffeineIssues Feb 12, 2026
a743a84
passando o id do avaliador na edição caso o usuario editando seja admin
CaffeineIssues Feb 12, 2026
f79ddef
pequeno fix na verificação de permissão
CaffeineIssues Feb 12, 2026
9a8c5be
correções no pdf e no namespace
CaffeineIssues Feb 13, 2026
8469053
correção na classe css
CaffeineIssues Feb 13, 2026
92c001c
alteração na permissão de ver o botão de imprimir
CaffeineIssues Feb 13, 2026
6711a4f
Merge pull request #702 from secultce/feature/print-pdf-counter-argument
CaffeineIssues Feb 13, 2026
c5a37f6
Merge branch 'develop' into feature/counter-argument-export-csv
CaffeineIssues Feb 13, 2026
f582f21
Merge pull request #700 from secultce/feature/counter-argument-export…
CaffeineIssues Feb 13, 2026
a3f6440
corrigindo tela do avaliador
CaffeineIssues Feb 19, 2026
755a26e
fix nas permissões da avaliação
CaffeineIssues Feb 19, 2026
4daccdf
fix permissões de visualização do form de avaliação
CaffeineIssues Feb 19, 2026
3f0f20b
Merge pull request #688 from secultce/feature/fix-diligence-proponent…
Junior-Shyko Feb 20, 2026
ad2d2d7
Merge pull request #715 from secultce/bugfix/preview-opp
Junior-Shyko Feb 20, 2026
3e2ca13
Merge pull request #679 from secultce/feature/fix-diligence-edit-save
Junior-Shyko Feb 20, 2026
b469d63
:children_crossing: #663 - Removido função que não existe.
Junior-Shyko Feb 20, 2026
a780c39
mudando a logica para o botão e correção do bug do scroll
CaffeineIssues Feb 20, 2026
bddfa5d
fix formatação
CaffeineIssues Feb 20, 2026
8111012
:children_crossing: #663 - Add nova função para validar arquivos e co…
Junior-Shyko Feb 20, 2026
9dec7c0
Merge pull request #714 from secultce/feature/validation-file-type-ca
Junior-Shyko Feb 20, 2026
8b3aa8c
removendo cdn dos charts
CaffeineIssues Feb 20, 2026
afd6d79
removendo cdns sweet alerts
CaffeineIssues Feb 20, 2026
aaa46bf
removendo cdn fontawesome
CaffeineIssues Feb 20, 2026
208c0a1
Merge pull request #716 from secultce/feature/bugfix-edit-evaluation-…
CaffeineIssues Feb 23, 2026
021b88f
Merge pull request #718 from secultce/feature/remove-cdn
Junior-Shyko Feb 24, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@ RUN echo "deb http://archive.debian.org/debian buster main contrib non-free" > /
ruby ruby-dev libpq-dev gnupg git \
libfreetype6-dev libjpeg62-turbo-dev libpng-dev sudo procps \
#instalação do node 14
&& curl -sL https://deb.nodesource.com/setup_14.x | bash - \
&& apt-get install -y nodejs \
&& curl -fsSL https://nodejs.org/dist/v14.21.3/node-v14.21.3-linux-x64.tar.xz \
| tar -xJ -C /usr/local --strip-components=1 \
# Install uglify and terser
&& npm install -g \
terser \
Expand Down
20 changes: 10 additions & 10 deletions compose/local/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -6,21 +6,21 @@ RUN sed -i 's|deb.debian.org|archive.debian.org|g' /etc/apt/sources.list \
&& apt-get update

RUN apt-get install -y --no-install-recommends \
curl libcurl4-gnutls-dev locales imagemagick libmagickcore-dev libmagickwand-dev zip unzip \
ruby ruby-dev libpq-dev gnupg nano iputils-ping git \
libfreetype6-dev libjpeg62-turbo-dev libpng-dev less vim \
sudo procps
curl libcurl4-gnutls-dev locales imagemagick libmagickcore-dev libmagickwand-dev zip unzip \
ruby ruby-dev libpq-dev gnupg nano iputils-ping git \
libfreetype6-dev libjpeg62-turbo-dev libpng-dev less vim \
sudo procps

RUN curl -sL https://deb.nodesource.com/setup_14.x | bash - \
&& apt-get install -y nodejs
RUN curl -fsSL https://nodejs.org/dist/v14.21.3/node-v14.21.3-linux-x64.tar.xz \
| tar -xJ -C /usr/local --strip-components=1

RUN rm -rf /var/lib/apt/lists

# Install uglify and terser
RUN npm install -g \
terser \
uglifycss \
autoprefixer
terser \
uglifycss \
autoprefixer

# Install sass
RUN gem install sass -v 3.4.22
Expand Down Expand Up @@ -52,7 +52,7 @@ RUN yes | pecl install xdebug-2.9.8 \
RUN docker-php-ext-install -j$(nproc) iconv \
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install -j$(nproc) gd

# Install composer
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && \
php composer-setup.php --version=1.10.16 --install-dir=/usr/local/bin && \
Expand Down
6 changes: 4 additions & 2 deletions src/protected/application/conf/agent-types.php
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,8 @@
return Utils::formatCnpjCpf($value);
},
'validations' => array(
'v::cnpj()' => \MapasCulturais\i::__('O número de CNPJ informado é inválido.')
'v::cnpj()' => \MapasCulturais\i::__('O número de CNPJ informado é inválido.'),
'unique' => 'Este CNPJ já está cadastrado em nosso sistema.',
),
'available_for_opportunities' => true,
),
Expand All @@ -145,7 +146,8 @@
return Utils::formatCnpjCpf($value);
},
'validations' => array(
'v::cpf()' => \MapasCulturais\i::__('O número de CPF informado é inválido.')
'v::cpf()' => \MapasCulturais\i::__('O número de CPF informado é inválido.'),
'unique' => 'Este CPF já está cadastrado em nosso sistema.',
),
'available_for_opportunities' => true,
),
Expand Down
5 changes: 3 additions & 2 deletions src/protected/application/conf/conf-base.d/routes.php
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,8 @@
'agente' => 'agent',
'evento' => 'event',
'inscricao' => 'registration',
'prestacoes-de-contas' => 'accountability'
'prestacoes-de-contas' => 'accountability',
'contrarrazoes' => 'counterArguments',
],

'readableNames' => [
Expand Down Expand Up @@ -98,4 +99,4 @@
'search' => i::__('Busca')
]
]
];
];
10 changes: 10 additions & 0 deletions src/protected/application/lib/MapasCulturais/Controllers/Panel.php
Original file line number Diff line number Diff line change
Expand Up @@ -429,4 +429,14 @@ function GET_accountability()
'isFiscal' => $oppAsFiscal ? true : false,
]);
}

public function GET_counterArguments()
{
$this->requireAuthentication();

$userId = App::i()->getUser()->id;
$counterArguments = App::i()->repo('CounterArgument')->getAllByUserId($userId);

$this->render('counter-arguments', ['counterArguments' => $counterArguments]);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,28 @@
namespace MapasCulturais\Entities;

use Doctrine\ORM\Mapping as ORM;
use MapasCulturais\App;
use MapasCulturais\Traits;

/**
* CounterArgument
*
* @ORM\Table(name="counter_argument")
* @ORM\Entity
* @ORM\entity(repositoryClass="MapasCulturais\Repository")
* @ORM\entity(repositoryClass="MapasCulturais\Repositories\CounterArgument")
*/
class CounterArgument extends \MapasCulturais\Entity
{
const STATUS_SEND = self::STATUS_ENABLED;
use Traits\EntityFiles;

const STATUS_WAITING = self::STATUS_ENABLED;
const STATUS_DEFERRED = 10;
const STATUS_REJECTED = 3;

const STATUSES = [
self::STATUS_WAITING => 'Aguardando resposta',
self::STATUS_DEFERRED => 'Deferida',
self::STATUS_REJECTED => 'Indeferida',
];

/**
* @var integer
Expand All @@ -38,18 +48,33 @@ class CounterArgument extends \MapasCulturais\Entity
*
* @ORM\Column(name="status", type="smallint", nullable=false)
*/
protected $status = self::STATUS_SEND;
protected $status = self::STATUS_WAITING;

/**
* @var \MapasCulturais\Entities\Registration
*
* @ORM\OneToOne(targetEntity="MapasCulturais\Entities\Registration", inversedBy="CounterArgument\Entities\CounterArgument", cascade={"persist"})
* @ORM\OneToOne(targetEntity="MapasCulturais\Entities\Registration", cascade={"persist"})
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="registration_id", referencedColumnName="id", nullable=false, onDelete="CASCADE")
* })
*/
protected $registration;

/**
* @var \MapasCulturais\Entities\CounterArgumentFile[] Files
*
* @ORM\OneToMany(targetEntity="MapasCulturais\Entities\CounterArgumentFile", fetch="EXTRA_LAZY", mappedBy="owner", cascade="remove", orphanRemoval=true)
* @ORM\JoinColumn(name="id", referencedColumnName="object_id", onDelete="CASCADE")
*/
protected $__files;

/**
* @var \MapasCulturais\Entities\CounterArgumentResponse|null
*
* @ORM\OneToOne(targetEntity="MapasCulturais\Entities\CounterArgumentResponse", mappedBy="counterArgument", fetch="LAZY")
*/
protected $response;

/**
* @var \DateTime
*
Expand All @@ -63,11 +88,4 @@ class CounterArgument extends \MapasCulturais\Entity
* @ORM\Column(name="update_timestamp", type="datetime", nullable=true)
*/
protected $updateTimestamp;

public function send(array $data)
{
$this->text = $data['text'];
$this->registration = App::i()->repo('Registration')->find($data['registration']);
$this->save();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
<?php

namespace MapasCulturais\Entities;

use Doctrine\ORM\Mapping as ORM;

/**
* CounterArgumentResponse
*
* @ORM\Table(name="counter_argument_response")
* @ORM\Entity
* @ORM\entity(repositoryClass="MapasCulturais\Repositories\CounterArgument")
*/
class CounterArgumentResponse extends \MapasCulturais\Entity
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="SEQUENCE")
* @ORM\SequenceGenerator(sequenceName="counter_argument_response_id_seq", allocationSize=1, initialValue=1)
*/
protected $id;

/**
* @var string
*
* @ORM\Column(name="text", type="text", nullable=false)
*/
protected $text;

/**
* @var boolean
*
* @ORM\Column(name="published", type="boolean", nullable=false)
*/
protected $published = false;

/**
* @var \MapasCulturais\Entities\Agent
*
* @ORM\ManyToOne(targetEntity="MapasCulturais\Entities\Agent", fetch="LAZY")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="agent_id", referencedColumnName="id", nullable=false, onDelete="CASCADE")
* })
*/
protected $owner;

/**
* @var \MapasCulturais\Entities\CounterArgument
*
* @ORM\OneToOne(targetEntity="MapasCulturais\Entities\CounterArgument", cascade={"persist"})
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="counter_argument_id", referencedColumnName="id", nullable=false, onDelete="CASCADE")
* })
*/
protected $counterArgument;

/**
* @var \DateTime
*
* @ORM\Column(name="create_timestamp", type="datetime", nullable=false)
*/
protected $createTimestamp;

/**
* @var \DateTime
*
* @ORM\Column(name="update_timestamp", type="datetime", nullable=true)
*/
protected $updateTimestamp;
}
Original file line number Diff line number Diff line change
Expand Up @@ -1371,11 +1371,15 @@ function saveEvaluation(RegistrationEvaluation $evaluation, array $data, $evalua

function saveUserEvaluation(array $data, User $user = null, $evaluation_status = null){
$app = App::i();
if(is_null($user)){
$user = $app->user;

if ($this->opportunity->canUser('@control') && !empty($data['uid'])) {
$user = $app->repo('User')->find($data['uid']);
} else {
$user = $user ?? $app->user;
}

$evaluation = $this->getUserEvaluation($user);

if(!$evaluation){
$evaluation = new RegistrationEvaluation;
$evaluation->user = $user;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<?php

namespace MapasCulturais\Repositories;

use MapasCulturais\App;
use MapasCulturais\Entities\CounterArgument as CounterArgumentEntity;

class CounterArgument extends \MapasCulturais\Repository
{
public function getAllByUserId(int $userId): array
{
$qb = App::i()->em->createQueryBuilder();
$qb->select('ca')
->from(CounterArgumentEntity::class, 'ca')
->innerJoin('ca.registration', 'r')
->innerJoin('r.owner', 'a')
->where('a.user = :userId')
->setParameter('userId', $userId);

return $qb->getQuery()->getResult();
}

public function getAllByOpportunityId($opportunityId): array
{
$qb = App::i()->em->createQueryBuilder();
$qb->select('ca')
->from(CounterArgumentEntity::class, 'ca')
->innerJoin('ca.registration', 'r')
->where('r.opportunity = :opportunityId')
->setParameter('opportunityId', $opportunityId);

return $qb->getQuery()->getResult();
}
}
Loading