Guest User

Untitled

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