public function actionMef($idTestContext) { $sql = "SELECT COUNT(*) FROM test_context_seq WHERE id_test_context = " . $idTestContext; $numSeqs = Yii::app()->db->createCommand($sql)->queryScalar(); if ($numSeqs > 0) { $this->redirect("/mtcontrool/index.php/testContext/inidashboard?idTestContext=" . $idTestContext); } /* ESTA MATRIZ SERÁ PREENCHIDA NESTA FUNÇÃO E ENCAMINHA PARA O ALGORITIMO. */ $matrixElementsInstances = array(); //AQUI É FEITA UMA BUSCA POR TODOS OS ELEMENTOS CADASTRADOS NO BANCO. $elements = Element::model()->findAll(); $sql_countElements = "SELECT * FROM test_context JOIN element_inst ON (test_context.id = element_inst.id_test_context) WHERE test_context.id={$idTestContext} GROUP BY id_element"; $result_countElements = Yii::app()->db->createCommand($sql_countElements)->queryAll(); $totalElements = 0; foreach ($result_countElements as $item) { $totalElements = $totalElements + 1; } /* ESTE FOREACH, PERCORRE TODOS OS ELEMENTOS ENCONTRADOS NA BUSCA ACIMA, E PARA CADA ELEMENTO, ELE BUSCA TODOS AS INSTANCIAS DE ELEMENTOS QUE ESTÃO RELACIONADAS AO ELEMENTO DA VEZ NO FOREACH E AO TESTCONTEXT EM QUESTÃO CUJO SEU ID É REEBIDO NESTA FUNÇÃO POR PARÂMETRO. */ foreach ($elements as $item) { $instances = ElementInst::model()->FindAllByAttributes(array("id_element" => $item->id, "id_test_context" => $idTestContext)); if (sizeof($instances) > 0) { $matrixElementsInstances[$item->description] = $instances; } } /* A PARTIR DAQUI VOCÊ PODE COMEÇAR A IMPLEMENTAR SEU ALGORÍTIMO. */ # code .... /* AQUI É APENAS UM TESTE DE EXIBIÇÃO, PARA QUE VOCÊ VEJA O COMPORTAMENTO DA MATRIZ. AQUI VOCÊ PODE ENTENDER COMO PERCORRER ESTE ARRAY E CONSEGUIR EXTRAI AS INFORMAÇÕES. */ $modelTestContext = TestContext::model()->findByPk($idTestContext); $vector = new ArrayObject(); foreach ($matrixElementsInstances as $key => $element) { $vectorHelper = new Vetores(); $vectorHelper->title = $key; foreach ($element as $model) { $vectorHelper->putElement($model); } $vector->append($vectorHelper); } //GERAR TABELA e XML //Inicializa Class Helper passando os vetores para estruturar o xml e a tabela $xmlGerator = new Helper($vector); $rawData = array(); //condição que espera um parametro xml na URL if (isset($_GET['xml'])) { //ElementsParalax() retorna um array com o schema do xml já trabalhado $schema = $xmlGerator->ElementsParalax(); //prepara o xml e inicia o download passando o schema e o título $this->BuildXml($schema, $modelTestContext->description); } else { //ElementsParalaxTable() retorna um array com os objetos já trabalhados contendo todo o modelo passado pelo BD $schema = $xmlGerator->ElementsParalaxTable(); //mostrar para o raphael a construção da tabela // //inicia a construção da tabela $part1 = '<table border="1" style="width:100%">'; $part2 = $part1 . "<tr><th>Variations</th><th>Behavior</th><th>Screenshots</th></th>"; $totalTests = 0; $partBody = null; $contaOrdem = 1; foreach ($schema as $row) { $variatins = ""; $behavior = ""; $screen = ""; $x = 1; foreach ($row as $model) { //print_r($model); //$model é uuma instância de ELEMENT_INST //echo $model->iDELEMENT->DESCRIPTION; $variatins .= $model->iDELEMENT->description . ": " . $model->description; if ($model->element_type == "interval") { $variatins .= " (START = " . $model->start_param . "; END = " . $model->end_param . ")"; } $variatins .= "\n"; $behavior .= $model->behavior . ", "; if ($model->behavior_screen != "") { $screen .= $model->behavior_screen; } $x++; } $rowData = array($contaOrdem, $xmlGerator->str_lreplace(",", "", $variatins), "", ""); $contaOrdem = $contaOrdem + 1; array_push($rawData, $rowData); } $part4 = $part2 . $partBody . "</table>"; } /* ARQUI SERÁ A CHAMADA PARA A FUNÇÃO QUE MONTARA O XML. */ $nomePlataforma = Platforms::model()->findByPk($modelTestContext->id_platform); $nomeApp = App::model()->findByPk($modelTestContext->id_app); $device = Device::model()->findByPk($modelTestContext->id_device); $user = Users::model()->findByPk($modelTestContext->id_user); $jsonPrint = json_encode($rawData); $dados_dashboard = array('model' => $modelTestContext, 'totalElements' => $totalElements, 'totalTests' => $totalTests, 'table' => $part4, 'nomeApp' => $nomeApp->name, 'nomePlataforma' => $nomePlataforma->name, 'dados' => $rawData, 'device' => $device, 'Image' => $nomePlataforma->image, 'json' => $jsonPrint, 'user' => $user->name); Yii::app()->user->setState('id_test_context', $idTestContext); Yii::app()->user->setState('sequencias_geradas', $rawData); Yii::app()->user->setState('dados_dashboard', $dados_dashboard); $this->redirect('/mtcontrool/index.php/testContextSeq/create'); }
/** * Returns the data model based on the primary key given in the GET variable. * If the data model is not found, an HTTP exception will be raised. * @param integer $id the ID of the model to be loaded * @return ElementInst the loaded model * @throws CHttpException */ public function loadModel($id) { $model = ElementInst::model()->findByPk($id); if ($model === null) { throw new CHttpException(404, 'The requested page does not exist.'); } return $model; }