예제 #1
0
파일: PSMN.php 프로젝트: Lazaro-Gallo/psmn
 /**
  * @REFATORAR
  * 
  * @param type $blockId
  * @return type
  * @throws Exception
  */
 public function getArrayQuestionsAndAlternatives($questionnaireId, $userId, $blockId = null)
 {
     try {
         $arrDevolutiveRAA = array();
         $arrCriteria = array();
         $arrBlocks = array();
         $arrQuestionnaire = array();
         $arrRadarData = array();
         // Definições do Questionário
         $questionnaireDefs = $this->questionnaire->getQuestionnaireById($questionnaireId);
         $arrQuestionnaire['title'] = $questionnaireDefs->getTitle();
         $arrQuestionnaire['description'] = $questionnaireDefs->getDescription();
         $arrQuestionnaire['long_description'] = $questionnaireDefs->getLongDescription();
         $arrQuestionnaire['operation_beginning'] = Vtx_Util_Date::format_dma($questionnaireDefs->getOperationBeginning());
         $arrQuestionnaire['operation_ending'] = Vtx_Util_Date::format_dma($questionnaireDefs->getOperationEnding());
         // Recupera Dados do Questionario, Bloco e cada um dos enunciados das questoes vinculadas ao Bloco do questionario
         $questionsDefs = $this->question->getAllByQuestionnaireIdBlockId($questionnaireId, $blockId);
         //loop em cada QuestionId do QuestionarioId
         foreach ($questionsDefs as $question_def) {
             $idBlock = "";
             $idCriterion = "";
             $questionId = $question_def->getId();
             $question_value = $question_def->getQuestao();
             //recupera dados da QuestaoId
             // Grava a questão no array de devolutiva
             $arrDevolutiveRAA[$questionId]['designation'] = $question_def->getDesignacao();
             $arrDevolutiveRAA[$questionId]['value'] = $question_value;
             $arrDevolutiveRAA[$questionId]['text'] = $question_def->getTexto();
             // Verifica se existe Bloco válido e grava nos arrays de blocos e devolutiva
             $idBlock = $question_def->getBloco();
             if ($idBlock != "" && $idBlock != 0) {
                 $arrBlocks[$idBlock] = $question_def->getBlocoTitulo();
                 $arrDevolutiveRAA[$questionId]['block'] = $question_def->getBloco();
             }
             // Verifica se existe Critério válido e grava nos arrays de critérios e devolutiva
             $idCriterion = $question_def->getCriterio();
             if ($idCriterion != "" && $idCriterion != 0) {
                 $arrCriteria[$idCriterion] = $question_def->getCriterioTitulo();
                 $arrDevolutiveRAA[$questionId]['criterion'] = $question_def->getCriterio();
             }
             // Verifica se um determinada Empresa respondeu uma questao
             $isAnswered = $this->question->isAnsweredByEnterprise($questionId, $userId);
             //Se empresa respondeu a questaoId verificada, entao entra no condicional abaixo
             if ($isAnswered['status']) {
                 // Recupera a resposta escrita
                 $answer = $this->question->getQuestionAnswer($questionId, $userId);
                 $alternative_id = $answer['alternative_id'];
                 $arrDevolutiveRAA[$questionId]['alternative_id'] = $alternative_id;
                 $arrDevolutiveRAA[$questionId]['write_answer'] = isset($answer['answer_value']) ? $answer['answer_value'] : "";
                 if (count($answer['annual_result']) > 0) {
                     $arrDevolutiveRAA[$questionId]['annual_result'] = $answer['annual_result'];
                     $arrDevolutiveRAA[$questionId]['annual_result_unit'] = $answer['annual_result_unit'];
                 } else {
                     $arrDevolutiveRAA[$questionId]['annual_result'] = "";
                     $arrDevolutiveRAA[$questionId]['annual_result_unit'] = "";
                 }
                 // Recupera o feedback da alternativa escolhida
                 $alternative = $this->alternative->getAlternativeById($alternative_id);
                 $arrDevolutiveRAA[$questionId]['alternative_designation'] = $alternative->getDesignation();
                 $arrDevolutiveRAA[$questionId]['alternative_feedback'] = $alternative->getFeedbackDefault();
                 // Recupera o 'Pontos Fortes' do avaliador da resolução da questão
                 $arrDevolutiveRAA[$questionId]['answer_feedback'] = $this->question->getAnswerFeedback($isAnswered['objAnswered']->getAnswerId());
                 // Recupera o 'Oportunidades de melhoria' do avaliador da resolução da questão
                 $arrDevolutiveRAA[$questionId]['answer_feedback_improve'] = $this->question->getAnswerFeedbackImprove($isAnswered['objAnswered']->getAnswerId());
             }
             // Recupera os dados das alternativas da QuestionId
             $alternativesDefs = $this->alternative->getAllByQuestionId($questionId, false, 'object');
             foreach ($alternativesDefs as $alternative_def) {
                 $arr_alternative[$alternative_def->getDesignation()] = $alternative_def->getValue();
             }
             $arrDevolutiveRAA[$questionId]['alternatives'] = $arr_alternative;
         }
         return array($arrDevolutiveRAA, $arrBlocks, $arrCriteria, $arrQuestionnaire);
     } catch (Vtx_UserException $e) {
         DbTable_Questionnaire::getInstance()->getAdapter()->rollBack();
         return array('status' => false, 'messageError' => $e->getMessage());
     } catch (Exception $e) {
         DbTable_Questionnaire::getInstance()->getAdapter()->rollBack();
         throw new Exception($e);
     }
 }
예제 #2
0
 public function getArrayDevolutiveReturn($questionnaireId, $userId, $programaId, $blockId = null)
 {
     $this->Questionnaire = new Model_Questionnaire();
     $this->Alternative = new Model_Alternative();
     $this->Question = new Model_Question();
     try {
         $arrDevolutiveRAA = array();
         $arrCriteria = array();
         $arrBlocks = array();
         $arrQuestionnaire = array();
         $arrRadarData = array();
         // Definições do Questionário
         //@TODO - por em cache
         $questionnaireDefs = $this->Questionnaire->getQuestionnaireById($questionnaireId);
         $arrQuestionnaire['title'] = $questionnaireDefs->getTitle();
         $arrQuestionnaire['description'] = $questionnaireDefs->getDescription();
         $arrQuestionnaire['long_description'] = $questionnaireDefs->getLongDescription();
         $arrQuestionnaire['operation_beginning'] = Vtx_Util_Date::format_dma($questionnaireDefs->getOperationBeginning());
         $arrQuestionnaire['operation_ending'] = Vtx_Util_Date::format_dma($questionnaireDefs->getOperationEnding());
         // Definições da Questão
         $questionsDefs = $this->Question->getAllByQuestionnaireIdBlockId($questionnaireId, $blockId);
         $cacheQuestion = new Vtx_Cache_MPE_QuestionarioCache();
         /**
          * - metodo criado para refatorar 2 metodos que faziam a mesma coisa e estavam dentro do foreach
          * - metodo que retorna todas alternativas de todas as questoes de um bloco que um Usuario respondeu
          * - a utilizacao deste metodo reduziu media de 25% a qtd de queries chamadas pelo BD.
          * - no meu exemplo reduziu de 320 para 235.
          * - chamada: $isAnswered = $this->Question->setaQuestionResp($QuestionRespDbTable, $questionId);
          * @author esilva
          */
         $QuestionRespDbTable = $this->Question->getAnswerByBlockId($blockId, $userId, $programaId);
         //var_dump ($QuestionRespDbTable); exit;
         /**
          * 
          * Recupera dados de cada questao de um Bloco:
          * - enunciado questao 
          * - alternativas
          * - resposta
          * - resultado anual
          * 
          */
         foreach ($questionsDefs as $question_def) {
             $idBlock = "";
             $idCriterion = "";
             $questionId = $question_def->getId();
             $question_value = $question_def->getQuestao();
             // Grava a questão no array de devolutiva
             $arrDevolutiveRAA[$questionId]['designation'] = $question_def->getDesignacao();
             $arrDevolutiveRAA[$questionId]['value'] = $question_value;
             $arrDevolutiveRAA[$questionId]['text'] = $question_def->getTexto();
             // Verifica se existe Bloco válido e grava nos arrays de blocos e devolutiva
             $idBlock = $question_def->getBloco();
             if ($idBlock != "" && $idBlock != 0) {
                 $arrBlocks[$idBlock] = $question_def->getBlocoTitulo();
                 $arrDevolutiveRAA[$questionId]['block'] = $question_def->getBloco();
             }
             // Verifica se existe Critério válido e grava nos arrays de critérios e devolutiva
             $idCriterion = $question_def->getCriterio();
             if ($idCriterion != "" && $idCriterion != 0) {
                 $arrCriteria[$idCriterion] = $idCriterion . ". " . $question_def->getCriterioTitulo();
                 $arrDevolutiveRAA[$questionId]['criterion'] = $question_def->getCriterio();
             }
             $isAnswered['answerResult'] = null;
             //se empresa respondeu a questao
             //$isAnswered = $this->Question->isAnsweredByEnterprise($questionId,$userId, true);
             $isAnswered = $this->Question->setaQuestionResp($QuestionRespDbTable, $questionId);
             //var_dump('isAnswered',$isAnswered);
             if ($isAnswered['status']) {
                 // Recupera a resposta
                 //$answer = $this->Question->getQuestionAnswer($questionId,$userId);
                 //refatorado para otimizar queries executadas
                 $answer = $isAnswered['answerResult'];
                 $alternative_id = $answer['alternative_id'];
                 $arrDevolutiveRAA[$questionId]['alternative_id'] = $alternative_id;
                 $arrDevolutiveRAA[$questionId]['write_answer'] = isset($answer['answer_value']) ? $answer['answer_value'] : "";
                 if (count($answer['annual_result']) > 0) {
                     $arrDevolutiveRAA[$questionId]['annual_result'] = $answer['annual_result'];
                     $arrDevolutiveRAA[$questionId]['annual_result_unit'] = $answer['annual_result_unit'];
                 } else {
                     $arrDevolutiveRAA[$questionId]['annual_result'] = "";
                     $arrDevolutiveRAA[$questionId]['annual_result_unit'] = "";
                 }
                 // Recupera o feedback da alternativa escolhida
                 #$alternative =  $this->Alternative->getAlternativeById($alternative_id);
                 //recupera do cache
                 $alternative = $cacheQuestion->alternative($alternative_id, $this->Alternative);
                 $arrDevolutiveRAA[$questionId]['alternative_designation'] = $alternative->getDesignation();
                 $arrDevolutiveRAA[$questionId]['alternative_feedback'] = $alternative->getFeedbackDefault();
                 // Recupera os comentarios 1 do avaliador da resolução da questão
                 //REFACTORING
                 //$arrDevolutiveRAA[$questionId]['answer_feedback'] = $this->Question->getAnswerFeedback( $isAnswered['objAnswered']['AnswerIdValue'] );//$isAnswered['objAnswered']->getAnswerId());
                 $arrDevolutiveRAA[$questionId]['answer_feedback'] = $answer['AnswerFeedback'];
                 // Recupera os comentarios 2 do avaliador da resolução da questão
                 //REFACTORING
                 //$arrDevolutiveRAA[$questionId]['answer_feedback_improve'] = $this->Question->getAnswerFeedbackImprove($isAnswered['objAnswered']['AnswerIdValue']);
                 $arrDevolutiveRAA[$questionId]['answer_feedback_improve'] = $answer['AnswerFeedbackImprove'];
                 //AdditionalInfo
                 $arrDevolutiveRAA[$questionId]['additional_info'] = $answer['AdditionalInfo'];
             }
             // Recupera as alternativas da questão
             //$alternativesDefs =  $this->Alternative->getAllByQuestionId($questionId);
             //recupera do cache
             $alternativesDefs = $cacheQuestion->alternativasEQuestoes($questionId, $this->Alternative);
             //var_dump ('alternativesDefs: ', $alternativesDefs);
             //echo "<br><Br>";
             foreach ($alternativesDefs as $alternative_def) {
                 if (is_object($alternative_def)) {
                     $arr_alternative[$alternative_def->getDesignation()] = $alternative_def->getValue();
                 } else {
                     $arr_alternative[$alternative_def['Designation']] = $alternative_def['Value'];
                 }
             }
             $arrDevolutiveRAA[$questionId]['alternatives'] = $arr_alternative;
         }
         return array($arrDevolutiveRAA, $arrBlocks, $arrCriteria, $arrQuestionnaire);
     } catch (Vtx_UserException $e) {
         DbTable_Questionnaire::getInstance()->getAdapter()->rollBack();
         return array('status' => false, 'messageError' => $e->getMessage());
     } catch (Exception $e) {
         DbTable_Questionnaire::getInstance()->getAdapter()->rollBack();
         throw new Exception($e);
     }
 }
예제 #3
0
 public function getArrayDevolutiveRAA($questionnaireId, $userId, $blockId = null)
 {
     try {
         $arrDevolutiveRAA = array();
         $arrCriteria = array();
         $arrBlocks = array();
         $arrQuestionnaire = array();
         $arrRadarData = array();
         // Definições do Questionário
         $questionnaireDefs = $this->Questionnaire->getQuestionnaireById($questionnaireId);
         $arrQuestionnaire['title'] = $questionnaireDefs->getTitle();
         $arrQuestionnaire['description'] = $questionnaireDefs->getDescription();
         $arrQuestionnaire['long_description'] = $questionnaireDefs->getLongDescription();
         $arrQuestionnaire['operation_beginning'] = Vtx_Util_Date::format_dma($questionnaireDefs->getOperationBeginning());
         $arrQuestionnaire['operation_ending'] = Vtx_Util_Date::format_dma($questionnaireDefs->getOperationEnding());
         // Definições da Questão
         $questionsDefs = $this->Question->getAllByQuestionnaireIdBlockId($questionnaireId, $blockId);
         $this->Block = new Model_Block();
         foreach ($questionsDefs as $question_def) {
             $idBlock = "";
             $idCriterion = "";
             $questionId = $question_def->getId();
             $question_value = $question_def->getQuestao();
             $perguntas = $this->Block->cacheOrModelBlockById(63);
             // Grava a questão no array de devolutiva
             $arrDevolutiveRAA[$questionId]['designation'] = $question_def->getDesignacao();
             $arrDevolutiveRAA[$questionId]['value'] = $question_value;
             $arrDevolutiveRAA[$questionId]['text'] = $question_def->getTexto();
             $arrDevolutiveRAA[$questionId]['pergunta'] = $perguntas[$questionId]["QuestionSummary"];
             // Verifica se existe Bloco válido e grava nos arrays de blocos e devolutiva
             $idBlock = $question_def->getBloco();
             if ($idBlock != "" && $idBlock != 0) {
                 $arrBlocks[$idBlock] = $question_def->getBlocoTitulo();
                 $arrDevolutiveRAA[$questionId]['block'] = $question_def->getBloco();
             }
             // Verifica se existe Critério válido e grava nos arrays de critérios e devolutiva
             $idCriterion = $question_def->getCriterio();
             if ($idCriterion != "" && $idCriterion != 0) {
                 $arrCriteria[$idCriterion] = $question_def->getCriterioTitulo();
                 $arrDevolutiveRAA[$questionId]['criterion'] = $question_def->getCriterio();
             }
             $isAnswered = $this->Question->isAnsweredByEnterprise($questionId, $userId);
             $isAnsweredVerificador = $this->Question->isAnsweredByVerificador($questionId, $this->userAuth->getUserId(), $userId);
             //var_dump(array_key_exists("objAnswered",$isAnsweredVerificador));exit;
             //var_dump($userId);
             /// print_r($this->Questionnaire->getQuestionsAnsweredByUserId($questionnaireId,43005, $blockId));
             //exit;
             if ($isAnswered['status']) {
                 // Recupera a resposta escrita
                 $answer = $this->Question->getQuestionAnswer($questionId, $userId);
                 if (!array_key_exists("objAnswered", $isAnsweredVerificador)) {
                     $alternative_id = $answer['alternative_id'];
                     $anwser_value = isset($answer['answer_value']) ? $answer['answer_value'] : "";
                 } else {
                     $alternative_id = $isAnsweredVerificador["objAnswered"]['AlternativeId'];
                     $anwser_value = isset($isAnsweredVerificador["objAnswered"]['AnswerValue']) ? $isAnsweredVerificador["objAnswered"]['AnswerValue'] : "";
                 }
                 $arrDevolutiveRAA[$questionId]['alternative_id'] = $alternative_id;
                 $arrDevolutiveRAA[$questionId]['write_answer'] = $anwser_value;
                 if (count($answer['annual_result']) > 0) {
                     $arrDevolutiveRAA[$questionId]['annual_result'] = $answer['annual_result'];
                     $arrDevolutiveRAA[$questionId]['annual_result_unit'] = $answer['annual_result_unit'];
                 } else {
                     $arrDevolutiveRAA[$questionId]['annual_result'] = "";
                     $arrDevolutiveRAA[$questionId]['annual_result_unit'] = "";
                 }
                 // Recupera o feedback da alternativa escolhida
                 $alternative = $this->Alternative->getAlternativeById($alternative_id);
                 $arrDevolutiveRAA[$questionId]['alternative_designation'] = $alternative->getDesignation();
                 $arrDevolutiveRAA[$questionId]['alternative_feedback'] = $alternative->getFeedbackDefault();
                 // Recupera o 'Pontos Fortes' do avaliador da resolução da questão
                 $arrDevolutiveRAA[$questionId]['answer_feedback'] = $this->Question->getAnswerFeedback($isAnswered['objAnswered']->getAnswerId());
                 // Recupera o 'Oportunidades de melhoria' do avaliador da resolução da questão
                 $arrDevolutiveRAA[$questionId]['answer_feedback_improve'] = $this->Question->getAnswerFeedbackImprove($isAnswered['objAnswered']->getAnswerId());
             }
             // Recupera as alternativas da questão
             $alternativesDefs = $this->Alternative->getAllByQuestionId($questionId);
             try {
                 foreach ($alternativesDefs as $alternative_def) {
                     $arr_alternative[$alternative_def['Designation']] = $alternative_def;
                     $arrDevolutiveRAA[$questionId]['alternatives'] = $arr_alternative;
                 }
             } catch (Excception $e) {
             }
         }
         return array($arrDevolutiveRAA, $arrBlocks, $arrCriteria, $arrQuestionnaire);
     } catch (Vtx_UserException $e) {
         DbTable_Questionnaire::getInstance()->getAdapter()->rollBack();
         return array('status' => false, 'messageError' => $e->getMessage());
     } catch (Exception $e) {
         DbTable_Questionnaire::getInstance()->getAdapter()->rollBack();
         throw new Exception($e);
     }
     exit;
 }
예제 #4
0
 /**
  * dados da empresa
  * 
  * @param type $userId
  * @return type
  */
 public function getEnterpriseData($userId)
 {
     $User = new Model_User();
     //$President = new Model_President();
     $Enterprise = new Model_Enterprise();
     $UserLocality = new Model_UserLocality();
     $AddressEnterprise = new Model_AddressEnterprise();
     $Position = new Model_Position();
     $userRow = $User->getUserById($userId);
     $userLocalityRow = $UserLocality->getUserLocalityByUserId($userRow->getId());
     $enterpriseRow = $Enterprise->getEnterpriseById($userLocalityRow->getEnterpriseId());
     //var_dump('EnterpriseId: ',$enterpriseRow->getId());
     //$presidentRow = $President->getPresidentByEnterpriseId($enterpriseRow->getId());
     $addressEnterpriseRow = $AddressEnterprise->getAddressEnterpriseByEnterpriseId($enterpriseRow->getId());
     $arrAnnualRevenue = Vtx_Util_Array::annualRevenue();
     $arrCategoria = Vtx_Util_Array::categoriaMpe();
     $idCategoria = $enterpriseRow->getCategoriaId();
     $nomeCategoria = "";
     if (is_int($idCategoria)) {
         $nomeCategoria = $arrCategoria[$idCategoria];
     }
     $arrTipoEmpresa = Vtx_Util_Array::tipoEmpresaMPE();
     $idTipoEmpresa = $enterpriseRow->getEnterpriseTypeId();
     $tipoEmpresa = "";
     if (is_int($idTipoEmpresa)) {
         $tipoEmpresa = $arrTipoEmpresa[$idTipoEmpresa];
     }
     // var_dump('addressEnterpriseRow: ',$addressEnterpriseRow);
     // exit;
     $neighborhood = $addressEnterpriseRow->findParentNeighborhood();
     //var_dump('neighborhood: ',$neighborhood);
     $idUf = $addressEnterpriseRow->getStateId();
     $idCidade = $addressEnterpriseRow->getCityId();
     //var_dump($idCidade);
     //var_dump($idUf);
     if (is_int($idUf)) {
         $uf = DbTable_State::getInstance()->getById($idUf)->getUf();
     } else {
         $uf = "";
     }
     if (is_int($idCidade)) {
         $cidade = DbTable_City::getInstance()->getById($idCidade)->getName();
     } else {
         $cidade = "";
     }
     $cidadeEstado = $cidade . "/" . $uf;
     //var_dump ($cidadeEstado); exit;
     //var_dump($cidadeEstado);
     //exit;
     $cnpj = $enterpriseRow->getCnpj();
     if (is_string($cnpj)) {
         $cpfCnpj = $cnpj;
     } else {
         $cpfCnpj = "";
     }
     //$cnpjMask = Vtx_Util_Formatting::maskFormat($getcnpj,'##.###.###/####-##');
     //$cnpj = null;
     //var_dump($cnpj);
     //exit;
     $arrEnterprise = array('Razão Social' => $enterpriseRow->getSocialName() != '' ? $enterpriseRow->getSocialName() : '', 'E-mail' => $enterpriseRow->getEmailDefault() != '' ? $enterpriseRow->getEmailDefault() : '', 'Nome Fantasia' => $enterpriseRow->getFantasyName() != '' ? $enterpriseRow->getFantasyName() : '', 'Atividade Econômica(CNAE)' => $enterpriseRow->getCnae() != '' ? $enterpriseRow->getCnae() : '', 'CPF/CNPJ' => $cpfCnpj, 'Faturamento Anual' => $enterpriseRow->getAnnualRevenue() != '' && isset($arrAnnualRevenue[$enterpriseRow->getAnnualRevenue()]) ? $arrAnnualRevenue[$enterpriseRow->getAnnualRevenue()] : '', 'Número de Colaboradores' => $enterpriseRow->getEmployeesQuantity() != '' ? $enterpriseRow->getEmployeesQuantity() : '0', 'Data de Abertura' => $enterpriseRow->getCreationDate() != '' ? Vtx_Util_Date::format_dma($enterpriseRow->getCreationDate()) : '', 'Endereço' => is_object($addressEnterpriseRow) ? $addressEnterpriseRow->getStreetNameFull() : '', 'Número' => is_object($addressEnterpriseRow) ? $addressEnterpriseRow->getStreetNumber() : '', 'Complemento' => is_object($addressEnterpriseRow) ? $addressEnterpriseRow->getStreetCompletion() : '', 'Bairro' => $neighborhood ? $addressEnterpriseRow->findParentNeighborhood()->getName() : '', 'Cidade/Estado' => $cidadeEstado, 'CEP' => is_object($addressEnterpriseRow) ? Vtx_Util_Formatting::maskFormat($addressEnterpriseRow->getCep(), '#####-###') : '', 'Categoria' => $nomeCategoria, 'Tipo Empresa' => $tipoEmpresa);
     $idPosition = $userRow->getPositionId();
     $cargo = "";
     if (is_int($idPosition)) {
         $posicao = $Position->getPosition($idPosition);
         $cargo = $posicao ? $posicao->getDescription() : '';
     }
     $arrContact = array('Nome' => is_object($userRow) ? $userRow->getNomeCompleto() : '', 'Cargo' => is_object($userRow) ? $cargo : '', 'Telefone' => is_object($userRow) ? $userRow->getTelefone() : '', 'Celular' => is_object($userRow) ? $userRow->getCelular() : '', 'E-mail' => is_object($userRow) ? $userRow->getEmail() : '');
     $arrIssues = array();
     return array($arrEnterprise, $arrContact, $arrIssues);
 }