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); } }