/** * @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); } }
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); } }
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; }
/** * 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); }