Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
Original file line number Diff line number Diff line change
Expand Up @@ -146,9 +146,9 @@ function __construct() {

parent::__construct();
}

/**
* metodo vindo da edição da oportunidade, no campo de ESPAÇO CULTURAL tem que fazer a
* metodo vindo da edição da oportunidade, no campo de ESPAÇO CULTURAL tem que fazer a
* verificação se já tem registro na tabela, se tiver deve fazer um update para o novo
* registro, caso contrário, deve fazer o registro
*/
Expand All @@ -175,7 +175,7 @@ function createSpaceRelation() {
}
function POST_createSpaceRelation(){
$this->requireAuthentication();

$app = App::i();

$space = $app->repo('Space')->find($this->postData['id']);
Expand All @@ -184,15 +184,15 @@ function POST_createSpaceRelation(){
$relation = new RegistrationSpaceRelationEntity();
$relation->space = $space;
$relation->owner = $registration;

$this->_finishRequest($relation, true);
}

/**
* Removes the space relation with the given id.
*
*
* This action requires authentication.
*
*
* @WriteAPI POST removeSpaceRelation
*/
public function POST_removeSpaceRelation(){
Expand All @@ -204,39 +204,39 @@ public function POST_removeSpaceRelation(){

$registrationEntity = $this->repository->find($this->data['id']);
$space = $app->repo('Space')->find($this->postData['id']);

if(is_object($registrationEntity) && !is_null($space)){
$spaceRelation = $app->repo('SpaceRelation')->findOneBy(array('objectId'=>$registrationEntity->id, 'space'=>(array('id'=>$space->id))));
$spaceRelation->delete(true);

$this->refresh();
$this->deleteUsersWithControlCache();
$this->usesPermissionCache();

$this->json(true);
}
}
}
}

public function createUrl($actionName, array $data = array()) {
if($actionName == 'single' || $actionName == 'edit'){
$actionName = 'view';
}

return parent::createUrl($actionName, $data);
}

function registerRegistrationMetadata(\MapasCulturais\Entities\Opportunity $opportunity){
$opportunity->registerRegistrationMetadata();
}

function getPreviewEntity(){

$registration = new $this->entityClassName;

$registration->id = -1;

$registration->preview = true;

return $registration;
}

Expand All @@ -245,7 +245,7 @@ function getPreviewEntity(){
*/
function getRequestedEntity() {
$preview_entity = $this->getPreviewEntity();

if(isset($this->urlData['id']) && $this->urlData['id'] == $preview_entity->id){
if(!App::i()->request->isGet()){
$this->errorJson(['message' => [\MapasCulturais\i::__('Este formulário é um pré-visualização da da ficha de inscrição.')]]);
Expand All @@ -262,13 +262,13 @@ function getRequestedEntity() {
*/
function getRequestedOpportunity(){
$app = App::i();

if(!isset($this->urlData['opportunityId']) || !intval($this->urlData['opportunityId'])){
$app->pass();
}

$opportunity = $app->repo('Opportunity')->find(intval($this->urlData['opportunityId']));

if(!$opportunity){
$this->pass();
}
Expand All @@ -286,9 +286,9 @@ function GET_preview(){
$registration = $this->getPreviewEntity();

$registration->opportunity = $opportunity;

$this->_requestedEntity = $registration;

$this->render('edit', ['entity' => $registration, 'preview' => true]);
}

Expand All @@ -308,12 +308,12 @@ function GET_create(){

function GET_view(){
$this->requireAuthentication();

$entity = $this->requestedEntity;
if(!$entity){
App::i()->pass();
}

$entity->checkPermission('view');

$valuersUsers = array_map(function ($agentRelation) {
Expand Down Expand Up @@ -414,7 +414,7 @@ function POST_send(){
$app = App::i();

$registration = $this->requestedEntity;

if(!$registration){
$app->pass();
}
Expand Down Expand Up @@ -526,14 +526,14 @@ function PATCH_valuersExceptionsList(){
$include = (array) @$this->data['valuersIncludeList'];

$registration->checkPermission('modifyValuers');

$registration->setValuersExcludeList($exclude);
$registration->setValuersIncludeList($include);
$app = App::i();
$app->disableAccessControl();
$this->_finishRequest($registration);
$app->enableAccessControl();

}

function POST_validateEntity() {
Expand All @@ -544,11 +544,11 @@ function POST_validateEntity() {
}

$entity->checkPermission('validate');

foreach ($this->postData as $field => $value) {
$entity->$field = $value;
}

if ($errors = $entity->getSendValidationErrors()) {
$this->errorJson($errors);
} else {
Expand All @@ -564,7 +564,7 @@ function POST_validateProperties() {
}

$entity->checkPermission('validate');

foreach ($this->postData as $field => $value) {
App::i()->log->debug("$field $value");
$entity->$field = $value;
Expand All @@ -581,8 +581,8 @@ function POST_validateProperties() {
if($errors){
$this->errorJson($errors);
}
}
}

$this->json(true);
}

Expand Down Expand Up @@ -625,16 +625,135 @@ function PATCH_removeBonus()
]);

App::i()->disableAccessControl();

if ($regMeta) {
$regMeta->delete(true);
}

$registration->save(true);

App::i()->enableAccessControl();
}


/**
* Modo de acessar o endpoint: GET /registration/detalhes/{id}
* ou: GET /inscricao/detalhes/{id}
* @return void
*/
public function GET_detalhes(): void
{
$app = App::i();
$registration = $this->requestedEntity;

if (!$registration) {
$app->halt(404, 'Registration not found');
}

if (
!$registration->canUser('view') &&
!$registration->opportunity->canUser('@control')
) {
$app->halt(403, 'Forbidden');
}

$fileConfigTitles = [];
$fileConfigs = (array) $registration->opportunity->registrationFileConfigurations;
foreach ($fileConfigs as &$fileConfig) {
$file = $registration->files[$fileConfig->groupName] ?? null;
$fileConfig->file = $file ? $file->simplify('id,url,name,deleteUrl') : null;
$fileConfigTitles[$fileConfig->groupName] = $fileConfig->title;
}
unset($fileConfig);
//
$metas = $app->repo('RegistrationMeta')->findBy(['owner' => $registration]);
$metasByKey = [];
foreach ($metas as $meta) {
$metasByKey[$meta->key] = $meta->value;
}
//
$fields = [];
foreach ($registration->opportunity->registrationFieldConfigurations as $fieldConfig) {
$fields[] = [
'íd' => $fieldConfig->id,
'titleField' => $fieldConfig->title,
'valueField' => $metasByKey['field_' . $fieldConfig->id] ?? null,
];
}

//
$registrationData = array_filter(
$registration->jsonSerialize(),
function ($key) { return strpos($key, 'field_') !== 0; },
ARRAY_FILTER_USE_KEY
);

$files = [];
foreach ($registrationData['files'] ?? [] as $groupName => $fileData) {
$fileArray = is_array($fileData) ? $fileData : (array) $fileData;
$configId = (int) str_replace('rfc_', '', $groupName);
foreach ($fileConfigs as $fileConfig) {
if ((int) $fileConfig->id === $configId) {
$fileArray['title'] = $fileConfig->title;
break;
}
}
$files[$groupName] = $fileArray;
}
$registrationData['files'] = $files;

$this->json([
'registration' => $registrationData,
'fields' => $fields,
'fileConfigurations' => array_values($fileConfigs),
]);
}

/**
* Modo de acessar o endpoint: GET /registration/fullDataByNumber?number=on-1122334455
* @return void
*/
public function GET_fullDataByNumber(): void
{
$app = App::i();

$number = $this->data['number'] ?? null;

if (!$number) {
$app->halt(400, 'Missing number parameter');
}

$registrations = $app->repo('Registration')->findBy(['number' => $number]);

if (!$registrations) {
$app->halt(404, 'Registration not found');
}

$result = [];
foreach ($registrations as $registration) {
if (
!$registration->canUser('view') &&
!$registration->opportunity->canUser('@control')
) {
$app->halt(403, 'Forbidden');
}

$fileConfigs = (array) $registration->opportunity->registrationFileConfigurations;
foreach ($fileConfigs as &$fileConfig) {
$file = $registration->files[$fileConfig->groupName] ?? null;
$fileConfig->file = $file ? $file->simplify('id,url,name,deleteUrl') : null;
}
unset($fileConfig);

$result[] = [
'registration' => $registration->jsonSerialize(),
'fields' => $registration->opportunity->registrationFieldConfigurations,
'fileConfigurations' => array_values($fileConfigs),
];
}

$this->json($result);
}

public function PATCH_single($data = null): void
{
$maxRequestSize = (int)rtrim(ini_get('post_max_size'), "M");
Expand Down Expand Up @@ -672,4 +791,4 @@ public function PATCH_single($data = null): void
}
parent::PATCH_single($data);
}
}
}
Loading
Loading