Ejemplo n.º 1
0
 public function processaVF($pk_sim_gabarito, $numero_questao, $fk_sim_materia, $tipo_questao, $gabarito, $anulada, $peso_questao, $file, $totalLinhas, $colIniVF)
 {
     // separa a string com a sequencia VF em variáveis separadas
     $item1 = substr($gabarito, 0, 1);
     $item2 = substr($gabarito, 1, 1);
     $item3 = substr($gabarito, 2, 1);
     $item4 = substr($gabarito, 3, 1);
     $item5 = substr($gabarito, 4, 1);
     //echo '..'.$item1.$item2.$item3.$item4.$item5.'<br />';
     //echo '--'.$colIniVF.'<br />';
     // percorre o arquivo txt
     foreach ($file as $linha) {
         // pega a pk do aluno e sua marcação na questão atual
         $pk_usuario_aluno = substr($linha, 0, 16);
         $marcacao = substr($linha, $colIniVF, 10);
         // verifica se alguma proposição foi anulada. Se foi, subtrai da variável que define os itens válidos
         $n_itens_anulados = substr_count($gabarito, 'N');
         $n_itens_validos = 5 - $n_itens_anulados;
         // define o peso de cada item
         $pesoItem = $n_itens_validos > 0 ? $peso_questao / $n_itens_validos : 0;
         $acertos = 0;
         $erros = 0;
         // se a questão não for anulada
         if ($anulada != 1) {
             // Contabiliza erros e acertos de cada proposição
             $resultado1 = CalculaAcertosVF::contabiliza($item1, ChecaProposicoes::marcacaoVF1($marcacao), $acertos, $erros);
             $acertos = $resultado1['acertos'];
             $erros = $resultado1['erros'];
             $resultado2 = CalculaAcertosVF::contabiliza($item2, ChecaProposicoes::marcacaoVF2($marcacao), $acertos, $erros);
             $acertos = $resultado2['acertos'];
             $erros = $resultado2['erros'];
             $resultado3 = CalculaAcertosVF::contabiliza($item3, ChecaProposicoes::marcacaoVF3($marcacao), $acertos, $erros);
             $acertos = $resultado3['acertos'];
             $erros = $resultado3['erros'];
             $resultado4 = CalculaAcertosVF::contabiliza($item4, ChecaProposicoes::marcacaoVF4($marcacao), $acertos, $erros);
             $acertos = $resultado4['acertos'];
             $erros = $resultado4['erros'];
             $resultado5 = CalculaAcertosVF::contabiliza($item5, ChecaProposicoes::marcacaoVF5($marcacao), $acertos, $erros);
             $acertos = $resultado5['acertos'];
             $erros = $resultado5['erros'];
             $total = $acertos >= $erros ? $acertos - $erros : 0;
             $valorQuestao = $total * $pesoItem;
         } else {
             $valorQuestao = 0;
             $statusItem1 = 0;
             $statusItem2 = 0;
             $statusItem3 = 0;
             $statusItem4 = 0;
             $statusItem5 = 0;
         }
         $status = $anulada != 1 ? $valorQuestao / $peso_questao : 0;
         $resposta_item1 = ChecaProposicoes::marcacaoVF1($marcacao);
         $resposta_item2 = ChecaProposicoes::marcacaoVF2($marcacao);
         $resposta_item3 = ChecaProposicoes::marcacaoVF3($marcacao);
         $resposta_item4 = ChecaProposicoes::marcacaoVF4($marcacao);
         $resposta_item5 = ChecaProposicoes::marcacaoVF5($marcacao);
         $statusItem1 = CalculaAcertosVF::status($resposta_item1, $item1, $pesoItem);
         $statusItem2 = CalculaAcertosVF::status($resposta_item2, $item2, $pesoItem);
         $statusItem3 = CalculaAcertosVF::status($resposta_item3, $item3, $pesoItem);
         $statusItem4 = CalculaAcertosVF::status($resposta_item4, $item4, $pesoItem);
         $statusItem5 = CalculaAcertosVF::status($resposta_item5, $item5, $pesoItem);
         $marcacaoVF = $resposta_item1 . $resposta_item2 . $resposta_item3 . $resposta_item4 . $resposta_item5;
         echo '........' . $pk_usuario_aluno . ' - ' . $marcacao . ' - ' . $marcacaoVF . ' -- (' . $statusItem1['resposta_item'] . ' - ' . $statusItem2['resposta_item'] . ' - ' . $statusItem3['resposta_item'] . '- ' . $statusItem4['resposta_item'] . ' - ' . $statusItem5['resposta_item'] . ') - <strong>' . $valorQuestao . '</strong> - ' . $status . '<br />';
         // inclui os dados do usuário na tabela de respostas
         $sqlAdministracao = new SqlAdministracao();
         $pk_sim_resposta = $sqlAdministracao->insert_respostas((int) $pk_usuario_aluno, $pk_sim_gabarito, $marcacaoVF, $valorQuestao, $status);
         // inclui dados do usuário no item 1
         $sqlAdministracao = new SqlAdministracao();
         $sqlAdministracao->insert_respostas_item(1, $statusItem1['resposta_item'], substr($statusItem1['pontuacao_item'], 0, 5), $statusItem1['status_item'], $pk_sim_resposta);
         // inclui dados do usuário no item 2
         $sqlAdministracao = new SqlAdministracao();
         $sqlAdministracao->insert_respostas_item(2, $statusItem2['resposta_item'], substr($statusItem2['pontuacao_item'], 0, 5), $statusItem2['status_item'], $pk_sim_resposta);
         // inclui dados do usuário no item 3
         $sqlAdministracao = new SqlAdministracao();
         $sqlAdministracao->insert_respostas_item(3, $statusItem3['resposta_item'], substr($statusItem3['pontuacao_item'], 0, 5), $statusItem3['status_item'], $pk_sim_resposta);
         // inclui dados do usuário no item 4
         $sqlAdministracao = new SqlAdministracao();
         $sqlAdministracao->insert_respostas_item(4, $statusItem4['resposta_item'], substr($statusItem4['pontuacao_item'], 0, 5), $statusItem4['status_item'], $pk_sim_resposta);
         // inclui dados do usuário no item 5
         $sqlAdministracao = new SqlAdministracao();
         $sqlAdministracao->insert_respostas_item(5, $statusItem5['resposta_item'], substr($statusItem5['pontuacao_item'], 0, 5), $statusItem5['status_item'], $pk_sim_resposta);
     }
 }