예제 #1
0
 /**
  * API Method para inserir um array de participantes vindos da handsontable
  */
 public function UpdateAll()
 {
     $this->RequirePermission(Usuario::$P_ADMIN, 'SecureExample.LoginForm', 'Autentique-se para acessar esta página', 'Você não possui permissão para acessar essa página ou sua sessão expirou');
     //$someJSON = $_GET['dados'];
     require_once "Model/PalestraParticipante.php";
     try {
         $json = json_decode(RequestUtil::GetBody());
         //$json = $_GET['dados'];
         //FILTRA OBJETOS DUPLICADOS NA TABELA DE PARTICIPANTES HANDSONTABLE
         $unique = array();
         //throw new Exception($json);
         foreach ($json->data as $object) {
             if (isset($unique[$object->idParticipante])) {
                 continue;
             }
             $unique[$object->idParticipante] = $object;
         }
         //$json = json_decode($someJSON);
         if (!$json) {
             throw new Exception('The request body does not contain valid JSON');
         }
         $errors_p = array();
         $row = 0;
         foreach ($json->data as $json) {
             //trocar $unique por $json->data se nao for usa-lo
             if ($json->idParticipante == '' && $json->nome == '' && $json->email == '' && $json->nome == '') {
                 //se linha estiver em branco
             } else {
                 $pk = $this->SafeGetVal($json, 'idParticipante', null);
                 $cpf = $this->SafeGetVal($json, 'cpf', null);
                 $jatem = true;
                 if ($pk != '') {
                     //SE TIVER ID É EDIÇÃOO SENÃO CRIA UM NOVO PARTICIPANTE
                     try {
                         $participante = $this->Phreezer->Get('Participante', $pk);
                     } catch (NotFoundException $ex) {
                         throw new Exception('Participante não encontrado');
                     }
                 } elseif ($pk == '' && $cpf != '') {
                     //SE TIVER CPF É EDIÇÃO SENÃO CRIA UM NOVO PARTICIPANTE
                     // try {
                     // $participante = $this->Phreezer->Get('Participante',$pk);
                     // } catch (NotFoundException $ex){
                     // throw new Exception('Participante não encontrado');
                     // }
                     $criteria = new ParticipanteCriteria();
                     $criteria->Cpf_Equals = $cpf;
                     $jatem = true;
                     try {
                         $participante = $this->Phreezer->GetByCriteria("Participante", $criteria);
                         //throw new Exception('MAQU');
                     } catch (NotFoundException $nfex) {
                         //throw new Exception($nfex);
                         $participante = new Participante($this->Phreezer);
                         //$this->RenderExceptionJSON($nfex);
                     }
                 } else {
                     $participante = new Participante($this->Phreezer);
                 }
                 //se existir id, mas tudo estiver em branco o sistema exclui do banco
                 if ($json->idParticipante != '' && $json->nome == '' && $json->email == '' && $json->nome == '') {
                     $participante->Delete();
                 } else {
                     $participante->Nome = $this->SafeGetVal($json, 'nome', $participante->Nome);
                     $participante->Email = $this->SafeGetVal($json, 'email', $participante->Email);
                     $participante->Cpf = $this->SafeGetVal($json, 'cpf', $participante->Cpf);
                     $participante->Validate();
                     $errors = $participante->GetValidationErrors();
                     //if(!$participante->Cpf) echo $participante->Nome .'--' . $participante->Cpf.'mmmm';
                     if (count($errors) > 0) {
                         $errors_p[$participante->IdParticipante]['message'] = $participante->GetValidationErrors();
                         $errors_p[$participante->IdParticipante]['success'] = false;
                         $errors_p[$participante->IdParticipante]['row'] = $row;
                     } else {
                         //Salva o participante no banco
                         $participante->Save();
                         //para fazer a associaçãoo na tabela palestra_participante
                         $table2 = new PalestraParticipante($this->Phreezer);
                         $table2->IdParticipante = $participante->IdParticipante;
                         $table2->IdPalestra = RequestUtil::Get('idPalestra');
                         $table2->Presenca = 0;
                         $table2->IdCertificado = 0;
                         $table2->Save(false, true);
                         if ($pk == '' or $jatem == true) {
                             $dados = array('idParticipante' => $participante->IdParticipante, 'row' => $row);
                             $sucesso['novo'][] = $dados;
                         }
                     }
                     // if (count($errors) > 0)
                     // {
                     // $this->RenderErrorJSON('Verifique erros no preenchimento do formulario',$errors);
                     // }
                     // else
                     // {
                     // $participante->Save();
                     // $this->RenderJSON($participante, $this->JSONPCallback(), true, $this->SimpleObjectParams());
                     // }
                 }
                 //fim do cadastro se nao for exclusao
             }
             //fim do cadastro caso nada esteja em branco
             $row++;
         }
         if (count($errors_p) > 0) {
             $this->RenderErrorJSON('Verifique erros no preenchimento do formulário', $errors_p);
         } else {
             $sucesso['success'] = true;
             $sucesso['message'] = 'Participantes salvos com sucesso';
             $this->RenderJSON($sucesso);
         }
     } catch (Exception $ex) {
         $this->RenderExceptionJSON($ex);
     }
 }