@@ -110,6 +110,9 @@ class Aluno extends Base {
110110 */
111111 protected $ modalidade_pos ;
112112
113+ // Determina se esta eh uma copia da entidade original, que pode ser modificada
114+ private $ _copia ;
115+
113116 const NIVEL_EGRESSADO = 'E ' ;
114117 const NIVEL_GRAD = 'G ' ;
115118 const NIVEL_POS = 'P ' ;
@@ -425,7 +428,17 @@ public function getOferecimentos($periodo = null, $niveis = array(), $formatado
425428
426429 if (($ periodo == null ) && (count ($ niveis ) == 0 ))
427430 $ Oferecimentos = parent ::getOferecimentos ();
428- else {
431+ elseif ($ this ->_copia === true ) {
432+ // Nao posso usar o Query Builder em uma copia do Aluno, pois ela esta detached e nao foi persisted
433+ $ Oferecimentos = parent ::getOferecimentos ();
434+ foreach ($ Oferecimentos as $ o => $ Oferecimento ) {
435+ if (($ periodo != null ) && ($ Oferecimento ->getPeriodo ()->getID () != $ periodo ))
436+ unset($ Oferecimentos [$ o ]);
437+ if ((count ($ niveis ) > 0 ) && (in_array ($ Oferecimento ->getDisciplina ()->getNivel (false ), $ niveis ) === false ))
438+ unset($ Oferecimentos [$ o ]);
439+ }
440+ return $ Oferecimentos ;
441+ } else {
429442 $ qb = self ::_EM ()->createQueryBuilder ()
430443 ->select ('o ' )
431444 ->from ('GDE \\Oferecimento ' , 'o ' )
@@ -508,6 +521,22 @@ public function getTrancados($periodo = null, $niveis = array(), $formatado = fa
508521 }
509522 }
510523
524+ /**
525+ * Copia
526+ *
527+ * Se esta ja eh uma copia, retorna-a, caso contraria, cria uma copia e retorna-a
528+ *
529+ * @return $this|Usuario
530+ */
531+ public function Copia () {
532+ if ($ this ->_copia === true )
533+ return $ this ;
534+ $ Copia = clone $ this ;
535+ $ Copia ->_copia = true ;
536+ Base::_EM ()->detach ($ Copia );
537+ return $ Copia ;
538+ }
539+
511540 /**
512541 * Monta_Horario
513542 *
0 commit comments