✏️ 正在编辑: Gabarito.php
路径:
/srv/systems_dir/contemax/library/Core/Importacao/Gabarito.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php class Core_Importacao_Gabarito { private $_inicioLaco = 2; protected $colunas = array( 'presenca' => 'A', 'barras' => 'B', ); protected $naoImportados = array(); protected $registrosImportados = array(); public function getInicioLaco() { return $this->_inicioLaco; } public function setInicioLaco($inicioLaco) { if( !is_null($inicioLaco) ){ $this->_inicioLaco = $inicioLaco; } } public function getColuna($coluna) { return isset($this->colunas[$coluna]) ? trim($this->colunas[$coluna]) : null; } public function getColunas() { return $this->colunas; } public function prepareSheetData(array $sheetData) { $cont = $this->_inicioLaco; $newSheetData = array(); if( $this->_inicioLaco > 0 ){ $cont = $this->_inicioLaco - 1; } foreach ( $sheetData as $l => $linha ) { unset($linha['AQ']); //Arquivo origem na planilha if( !empty($linha[$this->getColuna('barras')]) ){ $newSheetData[$cont++] = $linha; } } return $newSheetData; } public function importar(array $sheetData) { $sheetData = $this->prepareSheetData($sheetData); end($sheetData); $lastKey = key($sheetData); reset($sheetData); if( count($sheetData) > 0 ){ for ( $i = $this->_inicioLaco; $i <= $lastKey; $i++ ) { $dados = array( ); try { $this->_salvar($sheetData[$i], $dados); } catch ( Exception $ex ) { $this->_addNaoImportado( $dados, $sheetData[$i], $this->naoImportados, $ex->getMessage() ); } } } return array( 'importados' => $this->registrosImportados, 'nao_importados' => $this->naoImportados ); } protected function _salvar(array $sheetData, array &$dados) { $presenca = trim($sheetData[$this->getColuna('presenca')]); $barras = trim($sheetData[$this->getColuna('barras')]); $dbtableInscricao = Operacional_Model_Container::getInscricao(); $inscricao = $dbtableInscricao->findById($barras); if( !$inscricao ){ throw new Exception("O CodBarras não foi encontrado no sistema."); } $candidato = $inscricao->getCandidato(); $concurso = $inscricao->getConcurso(); if( !in_array($presenca, array( 'P', 'F' )) ){ throw new Exception("Presença não identificada do Candidato ($candidato->nome) no concurso ($concurso->nome)."); } //atualiza a presença da inscrição $dbtableInscricao->update(array( 'presenca' => $presenca ), "id = {$inscricao->id}"); if( $presenca == "F" ){ throw new Exception("O Candidato ($candidato->nome) obteve falta no concurso ($concurso->nome)."); } unset($sheetData['A'], $sheetData['B']); $cont = 1; $contSuccess = 0; $gabaritoCandidato = Operacional_Model_Container::getGabaritoCandidato(); $existRegister = $gabaritoCandidato->findByInscricao($inscricao->id); if( $existRegister ){ throw new Exception("Já existe um gabarito cadastrado no sistema para esta inscrição."); } foreach ( $sheetData as $resposta ) { $model = $gabaritoCandidato->createRow(); $model->setFromArray(array( 'inscricao_id' => $inscricao->id, 'questao' => $cont++, 'resposta' => $resposta )); $result = $model->save(); if( $result ){ $contSuccess++; } } $this->registrosImportados['importados'] = $contSuccess; } protected function _addNaoImportado(array $dados, array $sheetData, array &$naoImportados, $motivo = '') { array_push($naoImportados, array( 'barras' => $sheetData[$this->getColuna('barras')], 'presenca' => $sheetData[$this->getColuna('presenca')], 'motivo' => $motivo )); } }
💾 保存文件
← 返回文件管理器