Guest User

Untitled

a guest
Dec 6th, 2017
387
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 66.08 KB | None | 0 0
  1. <?php
  2.  
  3. /***
  4. * InclusaoexclusaoController - Criado em 14/09/2010
  5. *
  6. * @author Raphael Igor (raphaigor@yahoo.com.br)
  7. * @author Daniel de Aranda Lima (engcompdaniel@gmail.com)
  8. * @version 1.0.0
  9. *
  10. */
  11.  
  12. class InclusaoexclusaoController extends Zend_Controller_Action
  13. {
  14. private $_codTurno;
  15. private $_usuario;
  16. private $_nomeAluno;
  17. private $_codFip;
  18. private $_codPeriodo;
  19. private $_codPessoa;
  20. private $_codCurso;
  21. private $_ultimoPeriodo;
  22. private $_dataBase;
  23. private $_sessao;
  24. private $_senha;
  25. private $_flagCurso;
  26. private $_codCombinacao;
  27. private $_codCurriculo;
  28. private $_codSituacao;
  29. private $_nroSerie;
  30. private $_siglaIe;
  31. private $_flagNucleo;
  32. private $_codTurma;
  33. private $_redeSaberes;
  34. private $_periodoInclusao;
  35. private $_padrao;
  36. private $_grupoFin;
  37. private $_url;
  38. private $_nroFormulario;
  39. private $_zSession;
  40.  
  41. private $_inAtuais = array();
  42. private $_inIncluidas = array();
  43. private $_inExcluidas = array();
  44. private $_inDisciplina = array();
  45.  
  46. public function init()
  47. {
  48. $this->initView();
  49. $this->view->baseUrl = $this->_request->getBaseUrl();
  50.  
  51. $this->_zSession = new Zend_Session_Namespace(&#039;Zend_Auth&#039;);
  52.  
  53. $this->_usuario = $this->_zSession->storage->USUARIO;
  54. $this->_nomeAluno = $this->_zSession->storage->NOME;
  55. $this->_codFip = $this->_zSession->storage->COD_UNIDADE;
  56. $this->_codPeriodo = $this->_zSession->storage->PERIODO_ATUAL;
  57. $this->_sessao = $this->_zSession->storage->COD_SESSAO;
  58. $this->_codPessoa = $this->_zSession->storage->COD_USUARIO;
  59. $this->_senha = $this->_zSession->storage->SENHA;
  60. $this->_codCurso = $this->_zSession->storage->COD_CURSO;
  61. $this->_ultimoPeriodo = $this->_zSession->storage->COD_PERIODO;
  62. $this->_flagCurso = $this->_zSession->storage->SITUACAO[$this->_codCurso][$this->_ultimoPeriodo][&#039;FLAG_CURSO&#039;];
  63. $this->_grupoFin = $this->_zSession->storage->GRUPO_FIN;
  64. $this->_url = $this->view->rootUrl();
  65.  
  66. $this->_situacao = (isset($this->_zSession->storage->SITUACAO[$this->_codCurso][$this->_ultimoPeriodo][&#039;SIT&#039;]) ?
  67. $this->_zSession->storage->SITUACAO[$this->_codCurso][$this->_ultimoPeriodo][&#039;SIT&#039;] : null);
  68.  
  69. $this->_siglaIe = (isset($this->_zSession->storage->SIGLA_IE) ?
  70. $this->_zSession->storage->SIGLA_IE : null);
  71.  
  72. $this->_codCombinacao = (isset($this->_zSession->storage->COD_COMBINACAO) ?
  73. $this->_zSession->storage->COD_COMBINACAO : null);
  74.  
  75. $this->_codCurriculo = (isset($this->_zSession->storage->COD_CURRICULO) ?
  76. $this->_zSession->storage->COD_CURRICULO : null);
  77.  
  78. $this->_nroSerie = (isset($this->_zSession->storage->NRO_SERIE) ?
  79. $this->_zSession->storage->NRO_SERIE : null);
  80.  
  81. $this->_flagNucleo = (isset($this->_zSession->storage->FLAG_NUCLEO) ?
  82. $this->_zSession->storage->FLAG_NUCLEO : null);
  83.  
  84. $this->_redeSaberes = (isset($this->_zSession->storage->REDE_SABERES) ?
  85. $this->_zSession->storage->REDE_SABERES : null);
  86.  
  87. $this->_codCurso = (isset($this->_zSession->storage->COD_CURSO) ?
  88. $this->_zSession->storage->COD_CURSO : null);
  89.  
  90. $this->_dataBase = (isset($this->_zSession->storage->DATA_BASE) ?
  91. $this->_zSession->storage->DATA_BASE : null);
  92.  
  93. $this->_codTurno = (isset($this->_zSession->storage->COD_TURNO) ?
  94. $this->_zSession->storage->COD_TURNO : null);
  95.  
  96. $this->_nroFormulario = (isset($this->_zSession->storage->NRO_FORMULARIO) ?
  97. $this->_zSession->storage->NRO_FORMULARIO : null);
  98. }
  99.  
  100. /**
  101. * Action que valida a entrada do aluno na inclusao/exclusao
  102. *
  103. * @return null
  104. */
  105. public function indexAction()
  106. {
  107. $arr = $this->_validaEntrada();
  108.  
  109. if ($arr[&#039;flg&#039;] == false) {
  110. $this->view->msg = $arr[&#039;msg&#039;];
  111. $this->_forward(&#039;error&#039;, &#039;inclusaoexclusao&#039;);
  112. }
  113.  
  114. $objInclusao = InclusaoexclusaoMapper::getInstance(
  115. $this->_codPeriodo,
  116. NULL, NULL, NULL,
  117. $this->_codPessoa,
  118. NULL, NULL, NULL,
  119. $this->_codFip,
  120. NULL,
  121. $this->_codCurso
  122. );
  123.  
  124. $arrFormulario = $objInclusao->wsGetProtocoloDispIncExc();
  125. $this->view->arrFormulario = $arrFormulario;
  126.  
  127. $objProtocolo = AlunoprotocoloMapper::getInstance($this->_sessao,$this->_codPessoa,$this->_senha);
  128. $objProtocolo->wsGetDados();
  129. $protocoloSolicitado = $objProtocolo->wsGetProtocolos();
  130.  
  131. $this->view->boletos = $this->_helper->incexc->gridBoleto($protocoloSolicitado,$this->view->rootUrl());
  132.  
  133. $arrCursos = $objInclusao->wsGetCursoAlunoSit();
  134. $this->view->cursos =
  135. $this->_helper->formulario->montaDropDown(
  136. $arrCursos, array(&#039;COD_CURSO&#039;,&#039;COD_COMBINACAO&#039;,&#039;SIT&#039;), array(&#039;COD_CURSO&#039;, &#039;DESC_OFICIAL_CURSO&#039;)
  137. );
  138.  
  139.  
  140. }
  141.  
  142. /**
  143. * Método de validação da entrada do aluno em inclusao/exclusao
  144. *
  145. * @return array
  146. */
  147. private function _validaEntrada()
  148. {
  149. try {
  150. $objPlano = PlanoestudoMapper::getInstance(NULL, NULL, NULL, NULL);
  151. $datas = $objPlano->wsGetDataHoraAtual();
  152. $this->_zSession->storage->DATA_BASE = $datas[&#039;DATAF&#039;];
  153.  
  154. $this->_padrao = $this->_helper->calendario->convertePadrao($this->_codFip);
  155.  
  156. $objInclusao = InclusaoexclusaoMapper::getInstance(
  157. $this->_codPeriodo,
  158. $this->_padrao,
  159. NULL, NULL,
  160. $this->_codPessoa,
  161. NULL, NULL,
  162. $datas[&#039;DATAF&#039;],
  163. $this->_codFip,
  164. NULL,
  165. $this->_codCurso,
  166. NULL,
  167. $this->_sessao,
  168. $this->_grupoFin,
  169. $this->_ultimoPeriodo
  170. );
  171.  
  172. if ($this->_situacao != &#039;MATRICULAD&#039;) {
  173. $arr[&#039;msg&#039;] = NAO_MATRICULADO;
  174. $arr[&#039;flg&#039;] = false;
  175. $this->_gravaLog($arr[&#039;msg&#039;]);
  176. return $arr;
  177. }
  178.  
  179. $redeSaberes = $objInclusao->wsGetRedeSaberes();
  180.  
  181. if ($redeSaberes[&#039;FLAG_NUCLEO&#039;] != "N") {
  182. $arr[&#039;msg&#039;] = REDE_SABERES;
  183. $arr[&#039;flg&#039;] = false;
  184. $this->_gravaLog($arr[&#039;msg&#039;]);
  185. return $arr;
  186. }
  187.  
  188. $verificaPeriodo = $objInclusao->wsGetPeriodo();
  189.  
  190. $flag = 0;
  191. if (!is_null($verificaPeriodo)) {
  192. if ($datas[&#039;DATAF&#039;] >= $verificaPeriodo[&#039;DT_INICIO&#039;] &&
  193. $datas[&#039;DATAF&#039;] <= $verificaPeriodo[&#039;DT_FIM&#039;]) {
  194. $flag = 1;
  195. }
  196. if ($flag != 1) {
  197. $arr[&#039;flg&#039;] = false;
  198. $arr[&#039;msg&#039;] = PERIODO_INC_EXC;
  199. $this->_gravaLog($arr[&#039;msg&#039;]);
  200. return $arr;
  201. }
  202. } else {
  203. $arr[&#039;flg&#039;] = false;
  204. $arr[&#039;msg&#039;] = PERIODO_INC_EXC2;
  205. $this->_gravaLog($arr[&#039;msg&#039;]);
  206. return $arr;
  207. }
  208.  
  209. $ehProvavelFormando = $objInclusao->wsGetEhProvavelFormando();
  210. $this->_zSession->storage->FORMANDO = $ehProvavelFormando[&#039;FORMANDO&#039;];
  211.  
  212. $dadosAluno = $objInclusao->wsGetDadosAluno();
  213. $this->_zSession->storage->COD_COMBINACAO = $dadosAluno[&#039;COD_COMBINACAO&#039;];
  214. $this->_zSession->storage->COD_CURRICULO = $dadosAluno[&#039;COD_CURRICULO&#039;];
  215. $this->_zSession->storage->NRO_SERIE = $dadosAluno[&#039;NRO_SERIE&#039;];
  216. $this->_zSession->storage->SIGLA_IE = $dadosAluno[&#039;SIGLA_IE&#039;];
  217. $this->_zSession->storage->FLAG_NUCLEO = $dadosAluno[&#039;FLAG_NUCLEO&#039;];
  218. $this->_zSession->storage->REDE_SABERES = $redeSaberes[&#039;FLAG_NUCLEO&#039;];
  219. $this->_zSession->storage->COD_TURNO = $dadosAluno[&#039;COD_TURNO&#039;];
  220.  
  221. $arr[&#039;flg&#039;] = true;
  222.  
  223. return $arr;
  224. } catch ( Exception $e ) {
  225. $this->view->error = __METHOD__ . &#039; - &#039; . $e->getMessage();
  226. }
  227. }
  228.  
  229. /**
  230. * Método faz a solicitação do protocolo de inclusão exclusão.
  231. *
  232. * @return null
  233. */
  234. public function solicitaincexcAction()
  235. {
  236. $params = $this->getRequest()->getParams();
  237.  
  238. if (isset($params[&#039;codCurso&#039;])) {
  239.  
  240. $this->getHelper(&#039;layout&#039;)->disableLayout();
  241. $this->getHelper(&#039;ViewRenderer&#039;)->setNoRender();
  242.  
  243. $codCurso = explode(&#039;#&#039;,$params[&#039;codCurso&#039;]);
  244.  
  245. if ($codCurso[2] == &#039;M&#039;) {
  246. $objInclusao = InclusaoexclusaoMapper::getInstance(
  247. $this->_codPeriodo,
  248. NULL, NULL, NULL,
  249. $this->_codPessoa,
  250. $this->_siglaIe,
  251. $this->_nroSerie,
  252. $this->_dataBase,
  253. $this->_codFip,
  254. NULL,
  255. $this->_codCurso,
  256. $this->_codCombinacao,
  257. $this->_sessao
  258. );
  259.  
  260. $objProtocolo = AlunoprotocoloMapper::getInstance($this->_sessao,$this->_codPessoa,$this->_senha);
  261.  
  262. $dados[&#039;codProtocolo&#039;] = &#039;IE&#039;;
  263. $dados[&#039;especificacao&#039;] = &#039;Inclusão e Exclusão de Disciplinas&#039;;
  264. $dados[&#039;motivo&#039;] = NULL;
  265. $dados[&#039;codDisc&#039;] = NULL;
  266. $dados[&#039;codPeriodo&#039;] = $this->_codPeriodo;
  267. $dados[&#039;codCombinacao&#039;] = $codCurso[1];
  268. $grupoFin = $objProtocolo->wsGetGrupoFinComb($dados[&#039;codCombinacao&#039;]);
  269. $dados[&#039;grupoFin&#039;] = $grupoFin[&#039;GRUPO_FIN&#039;];
  270.  
  271. $nroProtocolo = $objInclusao->wsSetProtocolo($dados);
  272.  
  273. $objProtocolo->wsGetDados();
  274. $protocoloSolicitado = $objProtocolo->wsGetProtocolos($nroProtocolo);
  275.  
  276. if($protocoloSolicitado[0][&#039;PAGO&#039;] == &#039;S&#039;) {
  277. $arr[&#039;ret&#039;] = 1;
  278. }
  279.  
  280. $arr[&#039;erro&#039;] = false;
  281. $arr[&#039;html&#039;] = $this->_helper->incexc->gridBoleto($protocoloSolicitado,$this->view->rootUrl());
  282.  
  283. } else {
  284. $arr[&#039;erro&#039;] = 1;
  285. $arr[&#039;msg&#039;] = &#039;É necessário escolher um curso onde esteja Matriculado.&#039;;
  286. }
  287. } else {
  288. $this->view->msg = &#039;Acesso Negado.&#039;;
  289. $this->_forward(&#039;error&#039;, &#039;inclusaoexclusao&#039;);
  290. }
  291.  
  292. $jsonData = Zend_Json::encode($arr);
  293. $this->getResponse()->setBody($jsonData);
  294. }
  295.  
  296. /**
  297. * Método que exibe a tela de inclusao e exclusao
  298. *
  299. * @return null
  300. */
  301. public function inclusaoexclusaoAction()
  302. {
  303. try {
  304. $arr = $this->_validaEntrada();
  305.  
  306. if ($arr[&#039;flg&#039;] == false) {
  307. $this->view->msg = $arr[&#039;msg&#039;];
  308. $this->_forward(&#039;error&#039;, &#039;inclusaoexclusao&#039;);
  309. }
  310.  
  311. $params = $this->getRequest()->getParams();
  312.  
  313. $objInclusao = InclusaoexclusaoMapper::getInstance();
  314.  
  315. if (isset($params[&#039;codigo&#039;])) {
  316. $codigo = explode(&#039;_&#039;, base64_decode($params[&#039;codigo&#039;]));
  317. $validaNroFormulario = $objInclusao->wsGetValidaNroFormulario(
  318. (isset($codigo[0]) ? $codigo[0] : null),
  319. (isset($codigo[1]) ? $codigo[1] : null)
  320. );
  321. if (is_null($validaNroFormulario)) {
  322. $this->view->msg = NRO_FORMULARIO_INVALIDO;
  323. $this->_forward(&#039;error&#039;, &#039;inclusaoexclusao&#039;);
  324. }
  325. } else {
  326. $this->view->msg = NRO_FORMULARIO_INVALIDO;
  327. $this->_forward(&#039;error&#039;, &#039;inclusaoexclusao&#039;);
  328. }
  329.  
  330. $this->_zSession->storage->NRO_FORMULARIO = (isset($params[&#039;codigo&#039;]) ? $codigo[1] : null);
  331. $this->view->nroFormulario = (isset($params[&#039;codigo&#039;]) ? $codigo[1] : null);
  332.  
  333. $textoLog = &#039;Foi permitido ao aluno acessar a tela principal de Inclusão/Exclusão.&#039;.
  334. &#039;Número de Formulário utilizado nesta operação: &#039;.
  335. (isset($params[&#039;codigo&#039;]) ? $codigo[1] : null).&#039;.&#039;;
  336.  
  337. $this->_gravaLog($textoLog);
  338.  
  339. $objHorario = NotaFaltaHorarioMapper::getInstance(
  340. $this->_sessao,
  341. $this->_codCurso,
  342. $this->_codPessoa,
  343. $this->_senha,
  344. $this->_flagCurso,
  345. $this->_codFip,
  346. $this->_codPeriodo
  347. );
  348.  
  349. $objHorario->wsGetNotas();
  350.  
  351. $horariosAluno = $objInclusao->wsGetHorariosAluno();
  352. $horariosFip = $objInclusao->wsGetGradeHorariaFip($this->_codCombinacao);
  353. $this->view->gradeHorarioAluno = $this->_helper->horario->criaGridHorarios($horariosAluno, $horariosFip, $this->_url);
  354.  
  355. $arrlista = $objInclusao->wsGetDisciplinasMatriculadas();
  356.  
  357. $valoresDisciplinas = array();
  358.  
  359. foreach ($arrlista as $result) {
  360. $valoresDisciplinas[$result[&#039;COD_DISC&#039;]][&#039;DESC_OFICIAL_DISC&#039;] = $result[&#039;DESC_OFICIAL_DISC&#039;];
  361. $valoresDisciplinas[$result[&#039;COD_DISC&#039;]][&#039;VALORES&#039;] = $objInclusao->wsGetSimuladorValorDisc(
  362. $result[&#039;COD_DISC&#039;],
  363. $this->_siglaIe,
  364. $result[&#039;COD_CURRICULO&#039;],
  365. &#039;N&#039;,
  366. null,
  367. $this->_nroSerie,
  368. $result[&#039;CH_TOTAL&#039;]
  369. );
  370. }
  371.  
  372. $this->view->valoresDisciplinas = $valoresDisciplinas;
  373.  
  374. $this->view->disc =
  375. $this->_helper->formulario->montaDropDown(
  376. $arrlista, &#039;COD_DISCIPLINA&#039;, array(&#039;COD_DISC&#039;, &#039;DESC_OFICIAL_DISC&#039;, &#039;COD_TURMA&#039;)
  377. );
  378.  
  379. $this->_pegaDadosDisc($objInclusao, $this->_url);
  380.  
  381. $this->view->codFilial = $this->_codFip;
  382. $this->view->codCurso = $this->_codCurso;
  383.  
  384. } catch ( Exception $e ) {
  385. $this->view->error = __METHOD__ . &#039; - &#039; . $e->getMessage();
  386. }
  387. }
  388.  
  389. /**
  390. * Método que busca os dados das disciplinas passadas e/ou reprovadas do aluno.
  391. *
  392. * @param InclusaoexclusaoMapper $objInclusao é o objeto da mapper
  393. *
  394. * @return null
  395. */
  396. private function _pegaDadosDisc(InclusaoexclusaoMapper $objInclusao, $url)
  397. {
  398. try {
  399. $objInclusao->setCodCurriculo($this->_codCurriculo);
  400.  
  401. $disciplinas = $objInclusao->wsGetDiscReprovado($this->_codCurriculo, $this->_siglaIe);
  402.  
  403. $equivalentes = array();
  404.  
  405. if (is_array($disciplinas)) {
  406. foreach ( $disciplinas as $disc ) {
  407.  
  408. $atual = $objInclusao->wsGetDadosDisc($disc[&#039;COD_DISC&#039;]);
  409. $equiv = $objInclusao->wsGetDiscEquivalentesDoAluno($disc[&#039;COD_DISC&#039;]);
  410.  
  411. $ndisc = array();
  412. foreach ($disc as $k => $a) {
  413. ($k != &#039;COD_DISC&#039; ? $ndisc[$k] = $a : null);
  414. }
  415.  
  416. if (is_array($atual)) {
  417. foreach ($atual as $k=>$a) {
  418. $atual[$k] = array_merge($ndisc, $a);
  419. }
  420. }
  421.  
  422. if (is_array($equiv)) {
  423. foreach ($equiv as $k=>$e) {
  424. $equiv[$k] = array_merge($ndisc, $e);
  425. }
  426. }
  427.  
  428. (!isset($equivalentes[$disc[&#039;COD_DISC&#039;]]) ?
  429. $equivalentes[$disc[&#039;COD_DISC&#039;]] = array() :
  430. null);
  431.  
  432. if (is_array($equiv)) {
  433. $equivalentes[$disc[&#039;COD_DISC&#039;]] =
  434. array_merge($equivalentes[$disc[&#039;COD_DISC&#039;]],
  435. $equiv);
  436. }
  437.  
  438. if (is_array($atual)) {
  439. $equivalentes[$disc[&#039;COD_DISC&#039;]] =
  440. array_merge($atual, $equivalentes[$disc[&#039;COD_DISC&#039;]]);
  441. }
  442. }
  443.  
  444. $tipo = &#039;xREP&#039;;
  445. $this->view->acordeonRep = $this->_helper->horario->criaAcordeonDisc($disciplinas, $equivalentes, $tipo, $url);
  446. } else {
  447. $this->view->acordeonRep = &#039;&#039;;
  448. }
  449.  
  450. $disciplinas = $objInclusao->wsGetDiscPassadas($this->_codCurriculo, $this->_siglaIe, $this->_nroSerie);
  451.  
  452. $equivalentes = array();
  453.  
  454. if (is_array($disciplinas)) {
  455. foreach ($disciplinas as $disc) {
  456.  
  457. $atual = $objInclusao->wsGetDadosDisc($disc[&#039;COD_DISC&#039;]);
  458. $equiv = $objInclusao->wsGetDiscEquivalentesDoAluno($disc[&#039;COD_DISC&#039;]);
  459.  
  460. $ndisc = array();
  461. foreach ($disc as $k => $a) {
  462. ($k != &#039;COD_DISC&#039; ? $ndisc[$k] = $a : null);
  463. }
  464.  
  465. if (is_array($atual)) {
  466. foreach ($atual as $k=>$a) {
  467. $atual[$k] = array_merge($ndisc, $a);
  468. }
  469. }
  470.  
  471. if (is_array($equiv)) {
  472. foreach ($equiv as $k=>$e) {
  473. $equiv[$k] = array_merge($ndisc, $e);
  474. }
  475. }
  476.  
  477. (!isset($equivalentes[$disc[&#039;COD_DISC&#039;]]) ?
  478. $equivalentes[$disc[&#039;COD_DISC&#039;]] = array() :
  479. null);
  480.  
  481. if (is_array($equiv)) {
  482. $equivalentes[$disc[&#039;COD_DISC&#039;]] =
  483. array_merge($equivalentes[$disc[&#039;COD_DISC&#039;]],
  484. $equiv);
  485. }
  486.  
  487. if (is_array($atual)) {
  488. $equivalentes[$disc[&#039;COD_DISC&#039;]] =
  489. array_merge($atual, $equivalentes[$disc[&#039;COD_DISC&#039;]]);
  490. }
  491.  
  492. }
  493.  
  494. $tipo = &#039;xNCUR&#039;;
  495. $this->view->acordeonNCur = $this->_helper->horario->criaAcordeonDisc($disciplinas, $equivalentes, $tipo, $url);
  496. } else {
  497. $this->view->acordeonNCur = &#039;&#039;;
  498. }
  499. } catch ( Exception $e ) {
  500. $this->view->error = __METHOD__ . " - " . $e->getMessage();
  501. }
  502. }
  503.  
  504. /**
  505. * Método que gera uma subwindow para inclusao de disciplinas
  506. *
  507. * @return null
  508. */
  509. public function janelainclusaoAction()
  510. {
  511. try {
  512. $textoLog = &#039;Acesso à action "janelainclusao" da controller "inclusaoexclusao".&#039;;
  513. $this->_gravaLog($textoLog);
  514.  
  515. $params = $this->getRequest()->getParams();
  516.  
  517. $objInclusao = InclusaoexclusaoMapper::getInstance(
  518. $this->_codPeriodo,
  519. NULL, NULL, NULL,
  520. $this->_codPessoa,
  521. NULL, NULL, NULL,
  522. $this->_codFip
  523. );
  524.  
  525. // Cria uma lista das disciplinas que não poderão ser incluidas
  526. $atuais = explode(&#039;,&#039;, $params[&#039;atuais&#039;]);
  527. $incluidas = explode(&#039;,&#039;, $params[&#039;incluidas&#039;]);
  528. $excluiDaLista = null;
  529. $exclui = &#039;&#039;;
  530.  
  531. if (is_array($atuais) && is_array($incluidas)) {
  532. $excluiDaLista = array_merge($atuais, $incluidas);
  533. } else if (is_array($atuais) && !is_array($incluidas)) {
  534. $excluiDaLista = array_merge($atuais, array($incluidas));
  535. } else if (!is_array($atuais) && is_array($incluidas)) {
  536. $excluiDaLista = array_merge(array($atuais), $incluidas);
  537. } else if (!is_array($atuais) && !is_array($incluidas)) {
  538. $excluiDaLista = array($atuais, $incluidas);
  539. }
  540.  
  541. $optGroupPassadas = &#039;&#039;;
  542. $optGroupReprovado = &#039;&#039;;
  543. $optGroupFuturas = &#039;&#039;;
  544. $optGroupOptativas = &#039;&#039;;
  545.  
  546. $disciplinasPassadas = $objInclusao->wsGetDiscPassadas($this->_codCurriculo, $this->_siglaIe, $this->_nroSerie, join(&#039;,&#039;, $excluiDaLista));
  547.  
  548. if (!is_null($disciplinasPassadas)) {
  549. $select = $this->_helper->formulario->montaDropDown(
  550. $disciplinasPassadas,
  551. array(&#039;COD_DISC&#039;, &#039;COD_CURSO&#039;, &#039;COD_CURRICULO&#039;, &#039;CH&#039;, &#039;NRO_SERIE&#039;),
  552. array(&#039;NRO_SERIE_DISC&#039;, &#039;COD_DISC&#039;, &#039;DESC_OFICIAL_DISC&#039;)
  553. );
  554. $label = &#039;Disciplinas de Séries Anteriores:&#039;;
  555. $optGroupPassadas = $this->_helper->formulario->optGroup($label, $select);
  556. }
  557.  
  558. $disciplinasReprovado = $objInclusao->wsGetDiscReprovado($this->_codCurriculo, $this->_siglaIe);
  559.  
  560. if (!is_null($disciplinasReprovado)) {
  561. $select = $this->_helper->formulario->montaDropDown(
  562. $disciplinasReprovado,
  563. array(&#039;COD_DISC&#039;, &#039;COD_CURSO&#039;, &#039;COD_CURRICULO&#039;, &#039;CH&#039;, &#039;NRO_SERIE&#039;),
  564. array(&#039;NRO_SERIE_DISC&#039;, &#039;COD_DISC&#039;, &#039;DESC_OFICIAL_DISC&#039;)
  565. );
  566. $label = &#039;Disciplinas Reprovadas:&#039;;
  567. $optGroupReprovado = $this->_helper->formulario->optgroup($label, $select);
  568. }
  569.  
  570. $disciplinasFuturas = $objInclusao->wsGetDiscFuturas($this->_codCurriculo, $this->_siglaIe, $this->_nroSerie);
  571.  
  572. if (!is_null($disciplinasFuturas)) {
  573. $select = $this->_helper->formulario->montaDropDown(
  574. $disciplinasFuturas,
  575. array(&#039;COD_DISC&#039;, &#039;COD_CURSO&#039;, &#039;COD_CURRICULO&#039;, &#039;CH&#039;, &#039;NRO_SERIE&#039;),
  576. array(&#039;NRO_SERIE_DISC&#039;, &#039;COD_DISC&#039;, &#039;DESC_OFICIAL_DISC&#039;)
  577. );
  578. $label = &#039;Disciplinas de Séries Futuras:&#039;;
  579. $optGroupFuturas = $this->_helper->formulario->optgroup($label, $select);
  580. }
  581.  
  582. $disciplinasOptativas = $objInclusao->wsGetDiscsOptativas($this->_codCurriculo, $this->_siglaIe);
  583.  
  584. if (!is_null($disciplinasOptativas)) {
  585. $select = $this->_helper->formulario->montaDropDown(
  586. $disciplinasOptativas,
  587. array(&#039;COD_DISC&#039;, &#039;COD_CURSO&#039;, &#039;COD_CURRICULO&#039;, &#039;CH&#039;, &#039;NRO_SERIE&#039;),
  588. array(&#039;COD_DISC&#039;, &#039;DESC_OFICIAL_DISC&#039;)
  589. );
  590. $label = &#039;Disciplinas Optativas:&#039;;
  591. $optGroupOptativas = $this->_helper->formulario->optgroup($label, $select);
  592. }
  593.  
  594. $this->view->selectDisciplinas = $optGroupPassadas.$optGroupReprovado.$optGroupFuturas.$optGroupOptativas;
  595.  
  596. $this->view->codFip = $this->_codFip;
  597. $this->view->codPeriodo = $this->_codPeriodo;
  598.  
  599. $this->getHelper(&#039;layout&#039;)->disableLayout();
  600. } catch ( Exception $e ) {
  601. $this->view->error = __METHOD__ . &#039; - &#039; . $e->getMessage();
  602. }
  603. }
  604.  
  605. /**
  606. * Método que gera uma subwindow para inclusao de disciplinas de outros cursos
  607. *
  608. * @return null
  609. */
  610. public function janelainclusao2Action()
  611. {
  612. try {
  613. $textoLog = &#039;Acesso à action "janelainclusao2" da controller "inclusaoexclusao".&#039;;
  614. $this->_gravaLog($textoLog);
  615.  
  616. $obj = CampusMapper::getInstance($this->_codFip, $this->_codPeriodo, $this->_codCurso);
  617. $listaCursos = $obj->listaCursos();
  618.  
  619. $this->view->selectCursos = $this->_helper->formulario->montaDropDown(
  620. $listaCursos, array(&#039;COD_CURSO&#039;), array(&#039;DESC_OFICIAL_CURSO&#039;)
  621. );
  622.  
  623. $this->view->codFip = $this->_codFip;
  624. $this->view->codPeriodo = $this->_codPeriodo;
  625. $this->getHelper(&#039;layout&#039;)->disableLayout();
  626.  
  627. } catch ( Exception $e ) {
  628. $this->view->error = __METHOD__ . &#039; - &#039; . $e->getMessage();
  629. }
  630. }
  631.  
  632. /**
  633. * Método que busca as disciplinas de um curso
  634. *
  635. * @return null
  636. */
  637. public function buscadisciplinasAction()
  638. {
  639. try {
  640. $textoLog = &#039;Acesso à action "buscadisciplinas" da controller "inclusaoexclusao".&#039;;
  641. $this->_gravaLog($textoLog);
  642.  
  643. $this->getHelper(&#039;layout&#039;)->disableLayout();
  644. $this->getHelper(&#039;ViewRenderer&#039;)->setNoRender();
  645.  
  646. $params = $this->getRequest()->getParams();
  647.  
  648. $objCampus = CampusMapper::getInstance(
  649. $this->_codFip,
  650. $this->_codPeriodo,
  651. $params[&#039;codCurso&#039;]
  652. );
  653.  
  654. $arr[&#039;selectDisciplinas&#039;] = $this->_helper->formulario->montaDropDown(
  655. $objCampus->listaDisciplinas(),
  656. array(&#039;COD_DISC_CONCAT&#039;),
  657. array(&#039;NRO_SERIE_DISC&#039;,&#039;COD_DISC&#039;,&#039;DESC_OFICIAL_DISC&#039;)
  658. );
  659.  
  660. $jsonData = Zend_Json::encode($arr);
  661. $this->getResponse()->setBody($jsonData);
  662.  
  663. } catch ( Exception $e ) {
  664. $jsonData = Zend_Json::encode(array(&#039;erro&#039; => __METHOD__ .
  665. &#039; - &#039; . $e->getMessage()));
  666. $this->getResponse()->setBody($jsonData);
  667. }
  668. }
  669.  
  670. /**
  671. * Método que prepara os dados para validar a exclusao de uma disciplina
  672. *
  673. * @return null
  674. */
  675. public function preparaexclusaoAction()
  676. {
  677. try {
  678. $textoLog = &#039;Acesso à action "preparaexclusao" da controller "inclusaoexclusao".&#039;;
  679. $this->_gravaLog($textoLog);
  680.  
  681. $this->getHelper(&#039;layout&#039;)->disableLayout();
  682. $this->getHelper(&#039;ViewRenderer&#039;)->setNoRender();
  683.  
  684. $params = $this->getRequest()->getParams();
  685. $this->_inAtuais = (isset($params[&#039;atuais&#039;]) ? $params[&#039;atuais&#039;] : array());
  686. $this->_inIncluidas = (isset($params[&#039;incluidas&#039;]) ? $params[&#039;incluidas&#039;] : array());
  687. $disciplina = (isset($params[&#039;disc&#039;]) ? $params[&#039;disc&#039;] : null);
  688.  
  689. if (is_null($disciplina) || (count($this->_inAtuais) < 1 && count($this->_inIncluidas) < 1)) {
  690. $this->_forward(&#039;index&#039;, &#039;inclusaoexclusao&#039;);
  691. }
  692.  
  693. $dadosDisc = explode(&#039;x&#039;, $disciplina);
  694.  
  695. $this->_inDisciplina[1] = $dadosDisc[0];
  696. $this->_inDisciplina[3] = $dadosDisc[2];
  697.  
  698. $arr = $this->_validaexclusao();
  699. $arr[&#039;disc&#039;] = $dadosDisc[0];
  700.  
  701. $jsonData = Zend_Json::encode($arr);
  702. $this->getResponse()->setBody($jsonData);
  703.  
  704. } catch ( Exception $e ) {
  705. $jsonData = Zend_Json::encode(array(&#039;erro&#039; => __METHOD__ .
  706. &#039; - &#039; . $e->getMessage()));
  707. $this->getResponse()->setBody($jsonData);
  708. }
  709. }
  710.  
  711. /**
  712. * Método que valida a exclusao de uma disciplina
  713. *
  714. * @return array
  715. */
  716. private function _validaexclusao()
  717. {
  718. $objInclusao = InclusaoexclusaoMapper::getInstance();
  719. $discPosRequisito = $objInclusao->wsGetPosRequisito($this->_inDisciplina[1], $this->_inDisciplina[3]);
  720.  
  721. $nomeDisc = $objInclusao->wsGetDisciplina($this->_inDisciplina[1]);
  722.  
  723. $arrCodDiscAtuaisAluno = array();
  724.  
  725. foreach($this->_inAtuais as $codDiscAtualAluno) {
  726. $codDiscAtualAluno = explode(&#039;x&#039;, $codDiscAtualAluno);
  727. $arrCodDiscAtuaisAluno[] = $codDiscAtualAluno[0];
  728. }
  729.  
  730. $arrCodDiscIncluidasAluno = array();
  731.  
  732. foreach($this->_inIncluidas as $codDiscIncluidaAluno) {
  733. $codDiscIncluidaAluno = explode(&#039;x&#039;, $codDiscIncluidaAluno);
  734. $arrCodDiscIncluidasAluno[] = $codDiscIncluidaAluno[0];
  735. }
  736.  
  737. $arrTodosCodDiscAluno = array_merge($arrCodDiscAtuaisAluno, $arrCodDiscIncluidasAluno);
  738.  
  739. $ehPreRequisito = 0;
  740.  
  741. if (!is_null($discPosRequisito)) {
  742. foreach ($discPosRequisito as $discPosRequisito2) {
  743. if (in_array($discPosRequisito2[&#039;COD_DISC&#039;],$arrTodosCodDiscAluno)) {
  744. $ehPreRequisito = 1;
  745. }
  746. }
  747.  
  748. if ($ehPreRequisito == 1) {
  749. $arr[&#039;cod&#039;] = 0;
  750. $arr[&#039;flg&#039;] = false;
  751. $arr[&#039;msg&#039;] = &#039;A disciplina &#039;.$nomeDisc[&#039;DESC_OFICIAL_DISC&#039;].&#039; é pré-requisito de alguma outra existente em sua grade!&#039;;
  752. $this->_gravaLog($arr[&#039;msg&#039;]);
  753. } else {
  754. $arr[&#039;cod&#039;] = 0;
  755. $arr[&#039;flg&#039;] = true;
  756. $arr[&#039;msg&#039;] = &#039;A disciplina &#039;.$nomeDisc[&#039;DESC_OFICIAL_DISC&#039;].&#039; não é pré-requisito de nenhuma outra &#039;.
  757. &#039;existente na grade do aluno e por isso pode ser excluída.&#039;;
  758. $this->_gravaLog($arr[&#039;msg&#039;]);
  759. }
  760.  
  761. } else {
  762. $arr[&#039;cod&#039;] = 0;
  763. $arr[&#039;flg&#039;] = true;
  764. $arr[&#039;msg&#039;] = &#039;A disciplina &#039;.$nomeDisc[&#039;DESC_OFICIAL_DISC&#039;].&#039; não é pré-requisito de nenhuma outra &#039;.
  765. &#039;disciplina e por isso pode ser excluída.&#039;;
  766. $this->_gravaLog($arr[&#039;msg&#039;]);
  767. }
  768.  
  769. return $arr;
  770. }
  771.  
  772. /**
  773. * Action que gera um jsom com as disciplinas equivalentes
  774. *
  775. * @return null
  776. */
  777. public function pegaDiscEquivalentesAction()
  778. {
  779. $textoLog = &#039;Acesso à action "pegaDiscEquivalentes" da controller "inclusaoexclusao".&#039;;
  780. $this->_gravaLog($textoLog);
  781.  
  782. $this->getHelper(&#039;layout&#039;)->disableLayout();
  783. $this->getHelper(&#039;ViewRenderer&#039;)->setNoRender();
  784. $arr = array();
  785.  
  786. $params = $this->getRequest()->getParams();
  787. $padrao = $this->_helper->calendario->convertePadrao($this->_codFip);
  788. $codDisc = (isset($params[&#039;disc&#039;]) ? $params[&#039;disc&#039;] : null);
  789.  
  790. $objInclusao = InclusaoexclusaoMapper::getInstance(
  791. $this->_codPeriodo,
  792. $padrao,
  793. $codDisc,
  794. $this->_codCurriculo,
  795. $this->_codPessoa,
  796. $this->_siglaIe,
  797. $this->_nroSerie,
  798. $this->_dataBase,
  799. $this->_codFip,
  800. NULL,
  801. NULL,
  802. $this->_codCombinacao,
  803. $this->_sessao
  804. );
  805. try {
  806. $arr = $objInclusao->wsGetDiscEquivalentesDoAluno();
  807. } catch ( Exception $e ) {
  808. $arr[&#039;erro&#039;] = $e->getTraceAsString();
  809. }
  810. $jsonData = Zend_Json::encode($arr);
  811. $this->getResponse()->setBody($jsonData);
  812. }
  813.  
  814. /**
  815. * Action que gera um json com os dados de uma disciplina
  816. *
  817. * @return null
  818. */
  819. public function pegaDadosDiscAction()
  820. {
  821. $textoLog = &#039;Acesso à action "pegaDadosDisc" da controller "inclusaoexclusao".&#039;;
  822. $this->_gravaLog($textoLog);
  823.  
  824. $this->getHelper(&#039;layout&#039;)->disableLayout();
  825. $this->getHelper(&#039;ViewRenderer&#039;)->setNoRender();
  826. $arr = array();
  827.  
  828. $params = $this->getRequest()->getParams();
  829. $padrao = $this->_helper->calendario->convertePadrao($this->_codFip);
  830. $codDisc = (isset($params[&#039;disc&#039;]) ? $params[&#039;disc&#039;] : null);
  831.  
  832. $objInclusao = InclusaoexclusaoMapper::getInstance(
  833. $this->_codPeriodo,
  834. $padrao,
  835. $codDisc,
  836. $params[&#039;curriculo&#039;],
  837. $this->_codPessoa,
  838. $this->_siglaIe,
  839. $this->_nroSerie,
  840. $this->_dataBase,
  841. $this->_codFip,
  842. NULL,
  843. $this->_codCurso,
  844. $this->_codCombinacao,
  845. $this->_sessao
  846. );
  847. try {
  848. $arr = $objInclusao->wsGetTurmaEquivalente();
  849.  
  850. } catch ( Exception $e ) {
  851. $arr[&#039;erro&#039;] = $e->getMessage();
  852. }
  853. $jsonData = Zend_Json::encode($arr);
  854. $this->getResponse()->setBody($jsonData);
  855. }
  856.  
  857. /**
  858. * Action que gera um json com os dados de horários de uma disciplina
  859. *
  860. * @return null
  861. */
  862. public function pegaDiscDiaHorarioAction()
  863. {
  864. $textoLog = &#039;Acesso à action "pegaDiscDiaHorario" da controller "inclusaoexclusao".&#039;;
  865. $this->_gravaLog($textoLog);
  866.  
  867. $this->getHelper(&#039;layout&#039;)->disableLayout();
  868. $this->getHelper(&#039;ViewRenderer&#039;)->setNoRender();
  869. $arr = array();
  870.  
  871. $params = $this->getRequest()->getParams();
  872. $padrao = $this->_helper->calendario->convertePadrao($this->_codFip);
  873. $codDisc = (isset($params[&#039;disc&#039;]) ? $params[&#039;disc&#039;] : null);
  874. $codTurma = (isset($params[&#039;turma&#039;]) ? $params[&#039;turma&#039;] : null);
  875.  
  876. $objInclusao = InclusaoexclusaoMapper::getInstance(
  877. $this->_codPeriodo,
  878. $padrao,
  879. $codDisc,
  880. null,
  881. $this->_codPessoa,
  882. $this->_siglaIe,
  883. $this->_nroSerie,
  884. $this->_dataBase,
  885. $this->_codFip,
  886. $codTurma,
  887. $this->_codCurso,
  888. $this->_codCombinacao,
  889. $this->_sessao
  890. );
  891. try {
  892. $arr = $objInclusao->wsGetDiscDiaHorario();
  893. if (!$arr) {
  894. $arr = array(&#039;erro&#039;=>&#039;Nada foi encontrado!&#039;);
  895. }
  896. } catch ( Exception $e ) {
  897. $arr[&#039;erro&#039;] = $e->getMessage();
  898. }
  899. $jsonData = Zend_Json::encode($arr);
  900. $this->getResponse()->setBody($jsonData);
  901. }
  902.  
  903. /**
  904. * Método valida inclusão da disciplina.
  905. *
  906. *
  907. * @return array
  908. */
  909. public function validainclusaoAction()
  910. {
  911. $textoLog = &#039;Acesso à action "validainclusao" da controller "inclusaoexclusao".&#039;;
  912. $this->_gravaLog($textoLog);
  913.  
  914. $this->getHelper(&#039;layout&#039;)->disableLayout();
  915. $this->getHelper(&#039;ViewRenderer&#039;)->setNoRender();
  916. $arr = array();
  917.  
  918. $params = $this->getRequest()->getParams();
  919.  
  920. $this->_inDisciplina = (isset($params[&#039;disciplina&#039;]) ? $params[&#039;disciplina&#039;] : null);
  921. $this->_inAtuais = (isset($params[&#039;atuais&#039;]) ? $params[&#039;atuais&#039;] : array());
  922. $this->_inIncluidas = (isset($params[&#039;incluidas&#039;]) ? $params[&#039;incluidas&#039;] : array());
  923.  
  924. if (is_null($this->_inDisciplina)) {
  925. $this->_forward(&#039;index&#039;, &#039;inclusaoexclusao&#039;);
  926. }
  927.  
  928. try {
  929. $arr = $this->_verificaVagas();
  930. if ($arr[&#039;flg&#039;]) {
  931. $arr = $this->_verificaChoque();
  932. if ($arr[&#039;flg&#039;]) {
  933. $arr = $this->_verificaPreRequisitos();
  934. if ($arr[&#039;flg&#039;]) {
  935. $arr = $this->_verificaEnriqCurr();
  936. if ($arr[&#039;flg&#039;]) {
  937. $arr = $this->_verificaHorasSemanais();
  938. }
  939. }
  940. }
  941. }
  942. } catch ( Exception $e ) {
  943. $arr = array(
  944. &#039;cod&#039; => 0,
  945. &#039;msg&#039; => $e->getMessage(),
  946. &#039;flg&#039; => false
  947. );
  948. }
  949. $jsonData = Zend_Json::encode($arr);
  950. $this->getResponse()->setBody($jsonData);
  951. }
  952.  
  953. /**
  954. * Método verifica a existência de vagas em uma determinada turma,
  955. * a ser incluída.
  956. *
  957. * @return array
  958. */
  959. private function _verificaVagas()
  960. {
  961. $objInclusao = InclusaoexclusaoMapper::getInstance();
  962.  
  963. $disc[&#039;codDisc&#039;] = $this->_inDisciplina[1];
  964. $disc[&#039;codTurma&#039;] = $this->_inDisciplina[2];
  965. $disc[&#039;codFip&#039;] = $this->_codFip;
  966. $disc[&#039;codPeriodo&#039;] = $this->_codPeriodo;
  967.  
  968. $vaga = $objInclusao->wsGetVagas($disc);
  969.  
  970. if ($vaga[&#039;LOTADA&#039;] == &#039;N&#039;) {
  971. $arr[&#039;cod&#039;] = 1;
  972. $arr[&#039;flg&#039;] = true;
  973. $arr[&#039;msg&#039;] = &#039;Há vagas na turma &#039;.$this->_inDisciplina[2].&#039; escolhida pelo aluno.&#039;;
  974. $this->_gravaLog($arr[&#039;msg&#039;]);
  975. } else {
  976. $arr[&#039;cod&#039;] = 1;
  977. $arr[&#039;flg&#039;] = false;
  978. $arr[&#039;msg&#039;] = "A turma ".$this->_inDisciplina[2]." já está lotada. Selecione outra turma.";
  979. $this->_gravaLog($arr[&#039;msg&#039;]);
  980. }
  981.  
  982. return $arr;
  983. }
  984.  
  985. /**
  986. * Método verifica se há choque de horário, da disciplina incluida com as atuais.
  987. *
  988. *
  989. * @return array
  990. */
  991. private function _verificaChoque()
  992. {
  993. $codTurma = $this->_inDisciplina[2];
  994. $codDisc = $this->_inDisciplina[1];
  995.  
  996. $obj = InclusaoexclusaoMapper::getInstance();
  997.  
  998. $discCursadas = (isset($this->_inIncluidas) ? array_merge($this->_inAtuais,$this->_inIncluidas) : $this->_inAtuais);
  999.  
  1000. $arrDisciplinas = array();
  1001. $arrDisc = array();
  1002.  
  1003. foreach ($discCursadas as $discCursa) {
  1004.  
  1005. $aux = explode(&#039;x&#039;, $discCursa);
  1006. $arrDisc[&#039;COD_PERIODO&#039;] = $this->_codPeriodo;
  1007. $arrDisc[&#039;COD_COMBINACAO&#039;] = $this->_codCombinacao;
  1008. $arrDisc[&#039;COD_TURMA&#039;] = $aux[1];
  1009. $arrDisc[&#039;COD_FIP&#039;] = $this->_codFip;
  1010. $arrDisc[&#039;COD_DISC&#039;] = $aux[0];
  1011.  
  1012. $arrDisciplinas[] = $arrDisc;
  1013. }
  1014.  
  1015. $arrDisciplina = array();
  1016. $arrDisciplina[&#039;COD_PERIODO&#039;] = $this->_codPeriodo;
  1017. $arrDisciplina[&#039;COD_COMBINACAO&#039;] = $this->_codCombinacao;
  1018. $arrDisciplina[&#039;COD_TURMA&#039;] = $codTurma;
  1019. $arrDisciplina[&#039;COD_FIP&#039;] = $this->_codFip;
  1020. $arrDisciplina[&#039;COD_DISC&#039;] = $codDisc;
  1021.  
  1022. $verificaChoque = array();
  1023.  
  1024. if (count($arrDisciplinas) > 0) {
  1025. $verificaChoque = $obj->wsGetVerificaChoqueHorario($arrDisciplinas, $arrDisciplina, $this->_dataBase);
  1026. }
  1027.  
  1028. if (!is_null($verificaChoque)) {
  1029.  
  1030. if (count($verificaChoque) > 0) {
  1031. $arr[&#039;cod&#039;] = 2;
  1032. $arr[&#039;flg&#039;] = false;
  1033. $arr[&#039;msg&#039;] = "O horário da disciplina selecionada está em choque com a disciplina ".
  1034. $verificaChoque[0][&#039;DESC_OFICIAL_DISC&#039;] . " às " . $verificaChoque[0][&#039;HORARIO&#039;] . " horas ".
  1035. " de " . $verificaChoque[0][&#039;DIA_SEMANA&#039;];
  1036. $this->_gravaLog($arr[&#039;msg&#039;]);
  1037. } else {
  1038. $arr[&#039;cod&#039;] = 2;
  1039. $arr[&#039;flg&#039;] = true;
  1040. $arr[&#039;msg&#039;] = &#039;O horário da disciplina &#039;.$this->_inDisciplina[1].&#039; não está em choque com nenhum outro.&#039;;
  1041. $this->_gravaLog($arr[&#039;msg&#039;]);
  1042. }
  1043.  
  1044. } else {
  1045. $arr[&#039;cod&#039;] = 2;
  1046. $arr[&#039;flg&#039;] = false;
  1047. $arr[&#039;msg&#039;] = "ERRO ao localizar informações da Disciplina/Turma.";
  1048. $this->_gravaLog($arr[&#039;msg&#039;]);
  1049. }
  1050.  
  1051. return $arr;
  1052. }
  1053.  
  1054. /**
  1055. * Método verifica se a disciplina incluida possui pré requisito,
  1056. * e qual o status do aluno em tal disciplina.
  1057. *
  1058. *
  1059. * @return array
  1060. */
  1061. private function _verificaPreRequisitos()
  1062. {
  1063. $this->_codCurriculo = $this->_zSession->storage->COD_CURRICULO;
  1064.  
  1065. $obj = InclusaoexclusaoMapper::getInstance();
  1066.  
  1067. $dis[&#039;codDisc&#039;] = $this->_inDisciplina[1];
  1068. $dis[&#039;codCurriculo&#039;] = $this->_codCurriculo;
  1069.  
  1070. $discPR = $obj->wsGetPreRequisito($dis);
  1071.  
  1072. if (!empty($discPR)) {
  1073. foreach ($discPR as $pr) {
  1074. $disc = explode(&#039;x&#039;, $pr[&#039;COD_DISC_REQ&#039;]);
  1075. $disciplinas[] = $disc[0];
  1076. }
  1077. $arr = $this->_verificaPRaprovado($disciplinas);
  1078.  
  1079. } else {
  1080. $arr[&#039;cod&#039;] = 3;
  1081. $arr[&#039;flg&#039;] = true;
  1082. $arr[&#039;msg&#039;] = &#039;A disciplina &#039;.$this->_inDisciplina[1].&#039; não possui pré-requisitos.&#039;;
  1083. $this->_gravaLog($arr[&#039;msg&#039;]);
  1084. }
  1085. return $arr;
  1086. }
  1087.  
  1088. /**
  1089. * Método verifica o status do aluno na disciplina pre-requisito da incluida.
  1090. *
  1091. * @param Array
  1092. *
  1093. * @return array
  1094. */
  1095. private function _verificaPRaprovado($disc = Array())
  1096. {
  1097. $obj = InclusaoexclusaoMapper::getInstance();
  1098.  
  1099. foreach ($disc as $disciplina) {
  1100.  
  1101. $dadosDisc[&#039;codDisc&#039;] = $disciplina;
  1102. $dadosDisc[&#039;codPessoa&#039;] = $this->_codPessoa;
  1103. $dadosDisc[&#039;codPeriodo&#039;] = $this->_codPeriodo;
  1104.  
  1105. $prstatus = $obj->wsGetEquivalenteStatus($dadosDisc);
  1106. $infDisc = $obj->wsGetDisciplina($disciplina);
  1107.  
  1108. if (is_null($prstatus) || $prstatus[&#039;SITUACAO_FINAL&#039;] == &#039;RF&#039;) {
  1109. $arr[&#039;cod&#039;] = 3;
  1110. $arr[&#039;flg&#039;] = false;
  1111. $arr[&#039;msg&#039;] = "Para cursar esta disciplina é necessário fazer a ".
  1112. $infDisc[&#039;DESC_OFICIAL_DISC&#039;]. " primeiro.";
  1113. $this->_gravaLog($arr[&#039;msg&#039;]);
  1114. return $arr;
  1115. } else if ($prstatus[&#039;SITUACAO_FINAL&#039;] == &#039;RN&#039;) {
  1116. if ($this->_verificaPRincluido($disciplina)) {
  1117. $arr[&#039;cod&#039;] = 3;
  1118. $arr[&#039;flg&#039;] = true;
  1119. $arr[&#039;msg&#039;] = &#039;O aluno já incluiu a disciplina &#039;.$infDisc[&#039;DESC_OFICIAL_DISC&#039;].&#039; em sua grade.&#039;;
  1120. $this->_gravaLog($arr[&#039;msg&#039;]);
  1121. } else {
  1122. $arr[&#039;cod&#039;] = 3;
  1123. $arr[&#039;flg&#039;] = false;
  1124. $arr[&#039;msg&#039;] = "Para cursar esta disciplina é necessário fazer a ".
  1125. $infDisc[&#039;DESC_OFICIAL_DISC&#039;]." antes ou concomitantemente.";
  1126. $this->_gravaLog($arr[&#039;msg&#039;]);
  1127. return $arr;
  1128. }
  1129. } else if ($prstatus[&#039;SITUACAO_FINAL&#039;] == &#039;AP&#039;) {
  1130. $arr[&#039;cod&#039;] = 3;
  1131. $arr[&#039;flg&#039;] = true;
  1132. $arr[&#039;msg&#039;] = &#039;O aluno foi aprovado no pré-requisito &#039;.$infDisc[&#039;DESC_OFICIAL_DISC&#039;];
  1133. $this->_gravaLog($arr[&#039;msg&#039;]);
  1134. }
  1135. }
  1136. return $arr;
  1137. }
  1138.  
  1139. /**
  1140. * Em caso onde o aluno foi reprovado por nota na disc pre-requisito,
  1141. * ele tem de cursar as 2 discs concomitantemente, este método verifica
  1142. * se isso ocorre.
  1143. *
  1144. * @param int
  1145. *
  1146. * @return array
  1147. */
  1148. private function _verificaPRincluido($disciplina)
  1149. {
  1150. $cursando = array_merge($this->_inAtuais, $this->_inIncluidas);
  1151. foreach ($cursando as $cursa) {
  1152. $aux = explode(&#039;x&#039;, $cursa);
  1153. if ($aux[0] == $disciplina) {
  1154. return true;
  1155. }
  1156. }
  1157. return false;
  1158. }
  1159.  
  1160. /**
  1161. * Método verifica a quantidade de disciplinas extraCurriculares do aluno.
  1162. *
  1163. *
  1164. * @return array
  1165. */
  1166. private function _verificaEnriqCurr()
  1167. {
  1168. if( $this->_inDisciplina[3] != $this->_codCurriculo ) {
  1169.  
  1170. $arrayDiscs = (isset($this->_inIncluidas) ? array_merge($this->_inAtuais,$this->_inIncluidas) : $this->_inAtuais);
  1171.  
  1172. $countEnriqCurr = 0;
  1173. foreach($arrayDiscs as $dadosDiscs) {
  1174.  
  1175. $aux = explode(&#039;x&#039;, $dadosDiscs);
  1176. $codCurr = $aux[2];
  1177.  
  1178. if($this->_codCurriculo != $codCurr) {
  1179. $countEnriqCurr++;
  1180. }
  1181. }
  1182.  
  1183. if($countEnriqCurr < 2) {
  1184. $arr[&#039;cod&#039;] = 4;
  1185. $arr[&#039;flg&#039;] = true;
  1186. $arr[&#039;msg&#039;] = &#039;O aluno ainda não atingiu o máximo permitido de Disciplinas para Enriquecimento Curricular&#039;;
  1187. $this->_gravaLog($arr[&#039;msg&#039;]);
  1188. } else {
  1189. $arr[&#039;cod&#039;] = 4;
  1190. $arr[&#039;flg&#039;] = false;
  1191. $arr[&#039;msg&#039;] = "Você já adicionou o máximo permitido de Disciplinas para Enriquecimento Curricular";
  1192. $this->_gravaLog($arr[&#039;msg&#039;]);
  1193. }
  1194. } else {
  1195. $arr[&#039;cod&#039;] = 4;
  1196. $arr[&#039;flg&#039;] = true;
  1197. $arr[&#039;msg&#039;] = &#039;Esta não é uma Disciplina para Enriquecimento Curricular&#039;;
  1198. $this->_gravaLog($arr[&#039;msg&#039;]);
  1199. }
  1200.  
  1201. return $arr;
  1202. }
  1203.  
  1204. /**
  1205. * Método verifica a quantidade de horas/aula semanais o aluno possui.
  1206. *
  1207. *
  1208. * @return array
  1209. */
  1210. private function _verificaHorasSemanais()
  1211. {
  1212. $objInclusao = InclusaoexclusaoMapper::getInstance(
  1213. $this->_codPeriodo,
  1214. NULL,
  1215. NULL,
  1216. $this->_codCurriculo,
  1217. $this->_codPessoa,
  1218. $this->_siglaIe,
  1219. $this->_nroSerie
  1220. );
  1221.  
  1222. $arrayDiscs = (isset($this->_inIncluidas) ? array_merge($this->_inAtuais, $this->_inIncluidas) : $this->_inAtuais);
  1223.  
  1224. $arrCodDiscs = array();
  1225. foreach ($arrayDiscs as $dadosDiscs) {
  1226. $aux = explode(&#039;x&#039;, $dadosDiscs);
  1227. $arrCodDiscs[] = $aux[0];
  1228. }
  1229.  
  1230. $arrCodDiscs[] = $this->_inDisciplina[1];
  1231. $horasSemanais = $objInclusao->wsGetHorasDisciplinas($arrCodDiscs);
  1232.  
  1233. // Limite 40 horas
  1234. if($horasSemanais[&#039;AULAS_SEMANAIS&#039;] > 40) {
  1235.  
  1236. if($this->_zSession->storage->FORMANDO == &#039;N&#039;) {
  1237. $arr[&#039;cod&#039;] = 5;
  1238. $arr[&#039;flg&#039;] = false;
  1239. $arr[&#039;msg&#039;] = "Aluno NÃO FORMANDO passou do limite de 40 horas semanais";
  1240. $this->_gravaLog($arr[&#039;msg&#039;]);
  1241. } else {
  1242. // Limite 44 horas
  1243. if($horasSemanais[&#039;AULAS_SEMANAIS&#039;] <= 44) {
  1244. // Disciplinas Pendentes
  1245. $arrDiscPendentes = array_merge($objInclusao->wsGetDiscReprovado(), $objInclusao->wsGetDiscPassadas(), $objInclusao->wsGetDiscFuturas());
  1246.  
  1247. $arrCodDiscsPend = array();
  1248. foreach ($arrDiscPendentes as $dadosDiscsPend) {
  1249. $arrCodDiscsPend[] = $dadosDiscsPend[&#039;COD_DISC&#039;];
  1250. }
  1251.  
  1252. // Disciplinas Incluidas
  1253. $arrCodDiscsIncl = array();
  1254. if(isset($this->_inIncluidas)) {
  1255. foreach ($this->_inIncluidas as $dadosDiscsIncl) {
  1256. $aux = explode(&#039;x&#039;, $dadosDiscsIncl);
  1257. $arrCodDiscsIncl[] = $aux[0];
  1258. }
  1259. }
  1260. $arrCodDiscsIncl[] = $this->_inDisciplina[1];
  1261.  
  1262. // Verificação das Pendentes e Incluidas
  1263. $countDiscsPend = count($arrCodDiscsPend);
  1264.  
  1265. $countDiscsIncl = 0;
  1266. foreach ($arrCodDiscsIncl as $codDisc) {
  1267. if(in_array($codDisc, $arrCodDiscsPend)) {
  1268. $countDiscsIncl++;
  1269. }
  1270. }
  1271.  
  1272. if($countDiscsPend == $countDiscsIncl) {
  1273. $arr[&#039;cod&#039;] = 5;
  1274. $arr[&#039;flg&#039;] = true;
  1275. $arr[&#039;msg&#039;] = &#039;O aluno já incluiu todas as disciplinas pendentes.&#039;;
  1276. $this->_gravaLog($arr[&#039;msg&#039;]);
  1277. } else {
  1278. $arr[&#039;cod&#039;] = 5;
  1279. $arr[&#039;flg&#039;] = false;
  1280. $arr[&#039;msg&#039;] = "Aluno FORMANDO precisa incluir todas as disciplinas pendentes primeiro.";
  1281. $this->_gravaLog($arr[&#039;msg&#039;]);
  1282. }
  1283. } else {
  1284. $arr[&#039;cod&#039;] = 5;
  1285. $arr[&#039;flg&#039;] = false;
  1286. $arr[&#039;msg&#039;] = "Aluno FORMANDO passou do limite de horas semanais.";
  1287. $this->_gravaLog($arr[&#039;msg&#039;]);
  1288. }
  1289. }
  1290.  
  1291. } else {
  1292. $arr[&#039;cod&#039;] = 5;
  1293. $arr[&#039;flg&#039;] = true;
  1294. $arr[&#039;msg&#039;] = &#039;O aluno possui menos de 40h semanais em sua grade.&#039;;
  1295. $this->_gravaLog($arr[&#039;msg&#039;]);
  1296. }
  1297.  
  1298. return $arr;
  1299. }
  1300.  
  1301. /**
  1302. * Método atualiza o grid de valores das disciplinas.
  1303. *
  1304. *
  1305. * @return array
  1306. */
  1307. public function atualizaValoresAction()
  1308. {
  1309. $textoLog = &#039;Acesso à action "atualizaValores" da controller "inclusaoexclusao".&#039;;
  1310. $this->_gravaLog($textoLog);
  1311.  
  1312. $this->getHelper(&#039;layout&#039;)->disableLayout();
  1313. $this->getHelper(&#039;ViewRenderer&#039;)->setNoRender();
  1314.  
  1315. $objInclusao = InclusaoexclusaoMapper::getInstance(
  1316. $this->_codPeriodo,
  1317. NULL,NULL,NULL,
  1318. $this->_codPessoa,
  1319. NULL,NULL,NULL,
  1320. $this->_codFip,
  1321. NULL,NULL,NULL,NULL,
  1322. $this->_grupoFin
  1323. );
  1324.  
  1325. $params = $this->getRequest()->getParams();
  1326.  
  1327. $valores = $objInclusao->wsGetSimuladorValorDisc(
  1328. $params[&#039;codDisc&#039;],
  1329. $this->_siglaIe,
  1330. $params[&#039;codCurriculo&#039;],
  1331. &#039;N&#039;,
  1332. NULL,
  1333. $this->_nroSerie,
  1334. $params[&#039;chTotal&#039;]
  1335. );
  1336.  
  1337. $arr[&#039;valores&#039;] = $valores;
  1338.  
  1339. $textoLog = &#039;A tabela de valores das disciplinas foi atualizada com sucesso.&#039;;
  1340. $this->_gravaLog($textoLog);
  1341.  
  1342. $jsonData = Zend_Json::encode($arr);
  1343. $this->getResponse()->setBody($jsonData);
  1344. }
  1345.  
  1346. /**
  1347. * Método controla as validações e salva no banco.
  1348. *
  1349. *
  1350. * @return array
  1351. */
  1352. public function salvarAction()
  1353. {
  1354. $textoLog = &#039;Acesso à action salvar da controller inclusaoexclusao&#039;;
  1355. $this->_gravaLog($textoLog);
  1356.  
  1357. $this->getHelper(&#039;layout&#039;)->disableLayout();
  1358. $this->getHelper(&#039;ViewRenderer&#039;)->setNoRender();
  1359.  
  1360. $params = $this->getRequest()->getParams();
  1361.  
  1362. $this->_inAtuais = (isset($params[&#039;atuais&#039;]) ? $params[&#039;atuais&#039;] : array());
  1363. $this->_inIncluidas = (isset($params[&#039;incluidas&#039;]) ? $params[&#039;incluidas&#039;] : array());
  1364. $this->_inExcluidas = (isset($params[&#039;excluidas&#039;]) ? $params[&#039;excluidas&#039;] : array());
  1365.  
  1366. if (count($this->_inAtuais) < 1 && count($this->_inIncluidas) < 1) {
  1367. $this->_forward(&#039;index&#039;, &#039;inclusaoexclusao&#039;);
  1368. }
  1369.  
  1370. $arr[&#039;nroFormulario&#039;] = $this->_nroFormulario;
  1371. $arr[&#039;cod&#039;] = 10;
  1372. $arr[&#039;flg&#039;] = true;
  1373. $arr[&#039;msg&#039;] = "Nenhuma alteração feita no formulário.";
  1374. $this->_gravaLog($arr[&#039;msg&#039;]);
  1375.  
  1376. foreach ($this->_inIncluidas as $inc) {
  1377.  
  1378. $key = array_search($inc, $this->_inIncluidas);
  1379.  
  1380. unset($this->_inIncluidas[$key]);
  1381.  
  1382. $disc = explode(&#039;x&#039;, $inc);
  1383. $this->_inDisciplina[1] = $disc[0];
  1384. $this->_inDisciplina[2] = $disc[1];
  1385. $this->_inDisciplina[3] = $disc[2];
  1386.  
  1387. $arr = $this->_verificaVagas();
  1388.  
  1389. if ($arr[&#039;flg&#039;]) {
  1390. $arr = $this->_verificaChoque();
  1391. if ($arr[&#039;flg&#039;]) {
  1392. $arr = $this->_verificaPreRequisitos();
  1393. if ($arr[&#039;flg&#039;]) {
  1394. $arr = $this->_verificaEnriqCurr();
  1395. if ($arr[&#039;flg&#039;]) {
  1396. $arr = $this->_verificaHorasSemanais();
  1397. }
  1398. }
  1399. }
  1400. }
  1401.  
  1402. if (!$arr[&#039;flg&#039;]) {
  1403. break;
  1404. }
  1405. array_push($this->_inIncluidas, $inc);
  1406. }
  1407.  
  1408. if ($arr[&#039;flg&#039;]) {
  1409. foreach ($this->_inExcluidas as $exc) {
  1410.  
  1411. $disc = explode(&#039;x&#039;, $exc);
  1412. $this->_inDisciplina[1] = $disc[0];
  1413. $this->_inDisciplina[2] = $disc[1];
  1414. $this->_inDisciplina[3] = $disc[2];
  1415. $arr = $this->_validaexclusao();
  1416. if (!$arr[&#039;flg&#039;]) {
  1417. break;
  1418. }
  1419. }
  1420. }
  1421.  
  1422. if ($arr[&#039;flg&#039;] && $arr[&#039;cod&#039;] != 10) {
  1423. $arr = $this->_salvarBD();
  1424. }
  1425.  
  1426. $jsonData = Zend_Json::encode($arr);
  1427. $this->getResponse()->setBody($jsonData);
  1428. }
  1429.  
  1430. /**
  1431. * Método percorre todas manipulações e faz as inserções no BD.
  1432. * Valida e depois altera definitivo.
  1433. *
  1434. * @return array
  1435. */
  1436. private function _salvarBD()
  1437. {
  1438. $objInclusao = InclusaoexclusaoMapper::getInstance();
  1439.  
  1440. $arr[&#039;flg&#039;] = true;
  1441.  
  1442. if ($arr[&#039;flg&#039;]) {
  1443. //Salva incluídas
  1444. foreach ($this->_inIncluidas as $inc) {
  1445. if($arr[&#039;flg&#039;]) {
  1446. $op = &#039;I&#039;;
  1447. $disc = explode(&#039;x&#039;, $inc);
  1448. $arr = $this->_setDiscIncExc($disc, $op, $this->_nroFormulario);
  1449. }
  1450. }
  1451. if($arr[&#039;flg&#039;]) {
  1452. //Salva excluídas
  1453. foreach ($this->_inExcluidas as $exc) {
  1454. if($arr[&#039;flg&#039;]) {
  1455. $op = &#039;E&#039;;
  1456. $disc = explode(&#039;x&#039;, $exc);
  1457. $arr = $this->_setDiscIncExc($disc, $op, $this->_nroFormulario);
  1458. }
  1459. }
  1460. }
  1461. }
  1462.  
  1463. $arrParametros[&#039;nroFormulario&#039;] = $this->_nroFormulario;
  1464. $arrParametros[&#039;codFip&#039;] = $this->_codFip;
  1465. $arrParametros[&#039;codPessoa&#039;] = $this->_codPessoa;
  1466. $arrParametros[&#039;codCurso&#039;] = $this->_codCurso;
  1467. $arrParametros[&#039;codTurno&#039;] = $this->_codTurno;
  1468. $arrParametros[&#039;dtFormulario&#039;] = $this->_dataBase;
  1469. $arrParametros[&#039;codCurriculo&#039;] = $this->_codCurriculo;
  1470. $arrParametros[&#039;siglaIe&#039;] = $this->_siglaIe;
  1471. $arrParametros[&#039;nroSerie&#039;] = $this->_nroSerie;
  1472.  
  1473. $erros = $objInclusao->wsGetValidaIncExc($arrParametros);
  1474.  
  1475. if ($erros) {
  1476.  
  1477. $arr[&#039;cod&#039;] = 15;
  1478. $arr[&#039;flg&#039;] = false;
  1479. $arr[&#039;msg&#039;] = $erros;
  1480. $this->_gravaLog($arr[&#039;msg&#039;]);
  1481. return $arr;
  1482.  
  1483. } else {
  1484.  
  1485. $arrParametros[&#039;nroFormulario&#039;] = $this->_nroFormulario;
  1486. $arrParametros[&#039;codFip&#039;] = $this->_codFip;
  1487. $arrParametros[&#039;codPessoa&#039;] = $this->_codPessoa;
  1488. $arrParametros[&#039;codCurso&#039;] = $this->_codCurso;
  1489. $arrParametros[&#039;codTurno&#039;] = $this->_codTurno;
  1490. $arrParametros[&#039;dtFormulario&#039;] = $this->_dataBase;
  1491.  
  1492. $err = $objInclusao->wsSetGravaIncExc($arrParametros);
  1493.  
  1494. if ($err) {
  1495. $arr[&#039;cod&#039;] = 16;
  1496. $arr[&#039;flg&#039;] = true;
  1497. $arr[&#039;nroFormulario&#039;] = $this->_nroFormulario;
  1498. $arr[&#039;msg&#039;] = &#039;As informações foram salvas com sucesso nas tabelas definitivas.&#039;;
  1499. $this->_gravaLog($arr[&#039;msg&#039;]);
  1500. } else {
  1501. $arr[&#039;cod&#039;] = 16;
  1502. $arr[&#039;flg&#039;] = false;
  1503. $arr[&#039;msg&#039;] = &#039;Erro ao matricular alunos nas Disciplinas.&#039;;
  1504. $this->_gravaLog($arr[&#039;msg&#039;]);
  1505. }
  1506. }
  1507.  
  1508. return $arr;
  1509. }
  1510.  
  1511. /**
  1512. * Método insere as manipulações nas tabelas temporárias antes
  1513. * de matricular o aluno.
  1514. *
  1515. * @param array
  1516. * @param int
  1517. * @param int
  1518. *
  1519. * @return array
  1520. */
  1521. private function _setDiscIncExc($disc, $op, $nroFormulario)
  1522. {
  1523. $objInclusao = InclusaoexclusaoMapper::getInstance();
  1524. $objInclusao->setSiglaIe($this->_siglaIe);
  1525.  
  1526. $disciplina[&#039;codDisc&#039;] = $disc[0];
  1527. $disciplina[&#039;codCurriculo&#039;] = $this->_codCurriculo;
  1528.  
  1529. $arrSave[&#039;NRO_FORMULARIO&#039;] = $nroFormulario;
  1530. $arrSave[&#039;COD_DISC&#039;] = $disc[0];
  1531. $arrSave[&#039;COD_TURMA&#039;] = $disc[1];
  1532. $arrSave[&#039;COD_PERIODO&#039;] = $this->_codPeriodo;
  1533. $arrSave[&#039;OPERACAO&#039;] = $op;
  1534. $arrSave[&#039;COD_TIPO_MATR_DISC&#039;] = &#039;N&#039;;
  1535. $arrSave[&#039;FLAG_VERIFICA_CHOQUE&#039;] = &#039;S&#039;;
  1536. $arrSave[&#039;OBS_ABRV_DIARIO&#039;] = NULL;
  1537. $arrSave[&#039;DT_LCTO&#039;] = $this->_dataBase;
  1538. $arrSave[&#039;HS_LCTO&#039;] = 2521;
  1539. $arrSave[&#039;USR_LCTO&#039;] = $this->_usuario;
  1540. $arrSave[&#039;COD_FIP&#039;] = $this->_codFip;
  1541. $arrSave[&#039;COD_FIP_TURMA&#039;] = $this->_codFip;
  1542.  
  1543. $flg = $objInclusao->wsSetDiscIncExc($arrSave);
  1544.  
  1545. if ($flg) {
  1546. $arr[&#039;cod&#039;] = 12;
  1547. $arr[&#039;flg&#039;] = true;
  1548. $arr[&#039;msg&#039;] = &#039;Informações salvas na tabela temporária TA_CAD_DISC_INC_EXC&#039;;
  1549. $this->_gravaLog($arr[&#039;msg&#039;]);
  1550. } else {
  1551. $arr[&#039;cod&#039;] = 12;
  1552. $arr[&#039;flg&#039;] = false;
  1553. $arr[&#039;msg&#039;] = &#039;Erro ao manipular banco.&#039;;
  1554. $this->_gravaLog($arr[&#039;msg&#039;]);
  1555. return $arr;
  1556. }
  1557.  
  1558. $equiv = $objInclusao->wsGetVerificaEquivalente($disciplina);
  1559.  
  1560. if ($equiv) {
  1561.  
  1562. $arrSave1[&#039;NRO_FORMULARIO&#039;] = $nroFormulario;
  1563. $arrSave1[&#039;COD_DISC&#039;] = $disc[0];
  1564. $arrSave1[&#039;COD_TURMA&#039;] = $disc[1];
  1565. $arrSave1[&#039;COD_PERIODO&#039;] = $this->_codPeriodo;
  1566. $arrSave1[&#039;COD_DISC_EQUIV&#039;] = $equiv[&#039;COD_DISC&#039;];
  1567. $arrSave1[&#039;COD_FIP&#039;] = $this->_codFip;
  1568. $arrSave1[&#039;COD_FIP_TURMA&#039;] = $this->_codFip;
  1569.  
  1570. $flg = $objInclusao->wsSetDiscEquivIncExc($arrSave1);
  1571.  
  1572. if ($flg) {
  1573. $arr[&#039;cod&#039;] = 13;
  1574. $arr[&#039;flg&#039;] = true;
  1575. $arr[&#039;msg&#039;] = &#039;Informações salvas na tabela temporária TA_CAD_DISC_EQUIV_INC_EXC&#039;;
  1576. $this->_gravaLog($arr[&#039;msg&#039;]);
  1577. } else {
  1578. $arr[&#039;cod&#039;] = 13;
  1579. $arr[&#039;flg&#039;] = false;
  1580. $arr[&#039;msg&#039;] = &#039;Erro ao manipular banco.&#039;;
  1581. $this->_gravaLog($arr[&#039;msg&#039;]);
  1582. return $arr;
  1583. }
  1584. }
  1585.  
  1586. return $arr;
  1587. }
  1588.  
  1589. /**
  1590. * Método abre a tela final da Inclusão/Exclusão, com as opções para o aluno gerar
  1591. * o novo Plano de Estudos ou gerar o recibo em PDF
  1592. *
  1593. **/
  1594. public function finalAction()
  1595. {
  1596. $textoLog = &#039;Acesso à action "final" da controller "inclusaoexclusao".&#039;;
  1597. $this->_gravaLog($textoLog);
  1598.  
  1599. $params = $this->getRequest()->getParams();
  1600.  
  1601. if ((!key_exists(&#039;cod&#039;, $params) || $params[&#039;cod&#039;] != 16) || (!key_exists(&#039;flg&#039;, $params) || $params[&#039;flg&#039;] != true)) {
  1602. $this->view->msg = NAO_PERMITIDO;
  1603. $this->_forward(&#039;error&#039;, &#039;inclusaoexclusao&#039;);
  1604. }
  1605. }
  1606.  
  1607. /**
  1608. * Método gera o recibo da Inclusão/Exclusão para o aluno
  1609. *
  1610. **/
  1611. public function reciboAction()
  1612. {
  1613. $this->getHelper(&#039;layout&#039;)->disableLayout();
  1614. $this->getHelper(&#039;ViewRenderer&#039;)->setNoRender();
  1615.  
  1616. $textoLog = &#039;Acesso à action "recibo" da controller "inclusaoexclusao".&#039;;
  1617. $this->_gravaLog($textoLog);
  1618.  
  1619. if (!isset($this->_nroFormulario)) {
  1620. $this->view->msg = NAO_PERMITIDO;
  1621. $this->_forward(&#039;error&#039;, &#039;inclusaoexclusao&#039;);
  1622. } else {
  1623. $objPlano = PlanoestudoMapper::getInstance(NULL, NULL, NULL, NULL);
  1624. $datahoraAtual = $objPlano->wsGetDataHoraAtual();
  1625.  
  1626. $objInclusao = InclusaoexclusaoMapper::getInstance(
  1627. $this->_codPeriodo,
  1628. NULL, NULL, NULL,
  1629. $this->_codPessoa, NULL, NULL,
  1630. $datahoraAtual[&#039;DATAF&#039;], $this->_codFip,
  1631. NULL, $this->_codCurso, NULL, NULL,
  1632. NULL, $this->_ultimoPeriodo
  1633. );
  1634.  
  1635. $dadosAluno = $objInclusao->wsGetDadosAluno();
  1636. $discIncluidas = $objInclusao->wsGetDiscIncExc($this->_nroFormulario, &#039;I&#039;);
  1637. $discExcluidas = $objInclusao->wsGetDiscIncExc($this->_nroFormulario, &#039;E&#039;);
  1638.  
  1639. /* Criando Recibo */
  1640. $pdf = new App_Pdf_ReciboIncExc();
  1641.  
  1642. // ----- Cabeçalho --------------------------------------------------------------
  1643. $pdf->SetCabecalho($dadosAluno, $datahoraAtual, $this->_nomeAluno);
  1644.  
  1645. $pdf->AddPage();
  1646.  
  1647. // ----- Dados Pessoais ---------------------------------------------------------
  1648. $pdf->dadosPessoais($dadosAluno);
  1649.  
  1650. // ----- Exclusão ---------------------------------------------------------------
  1651. if(isset($discExcluidas)) {
  1652. $pdf->discExcluidas($discExcluidas);
  1653. }
  1654.  
  1655. // ----- Inclusão ---------------------------------------------------------------
  1656. if(isset($discIncluidas)) {
  1657. $pdf->discIncluidas($discIncluidas);
  1658. }
  1659.  
  1660. $pdf->Output(&#039;Exclusão e Inclusão de Disciplinas &#039;.$this->_codPeriodo.&#039;.pdf&#039;,&#039;I&#039;);
  1661. }
  1662. }
  1663.  
  1664. /*
  1665. * Metodo simplificado de guardar log da inclusão e exclusão
  1666. */
  1667. private function _gravaLog($textoLog)
  1668. {
  1669. $objLog = LogCDUMapper::getInstance(
  1670. $this->_codPessoa,
  1671. $this->_codPeriodo,
  1672. $this->_codFip,
  1673. 1
  1674. );
  1675.  
  1676. $objLog->wsSetLogCDU($textoLog);
  1677.  
  1678. return true;
  1679. }
  1680.  
  1681. /**
  1682. * View para onde o aluno que não tenha permissão de entrar na tela é redirecionado,
  1683. * caso tente entrar na Inclusão / Exclusão
  1684. *
  1685. * @author Daniel de Aranda Lima - engcompdaniel@gmail.com (18/07/2011)
  1686. *
  1687. * */
  1688. public function errorAction()
  1689. {
  1690.  
  1691. }
  1692. }
Add Comment
Please, Sign In to add comment