/**
  * Retorna els descomptes d'una activitat concreta
  * */
 public static function getDescomptesHorariArray($idH, $edicio = false)
 {
     $RET = array();
     $OH = HorarisPeer::retrieveByPK($idH);
     $OEP = EntradesPreusPeer::retrieveByPK($idH);
     //Si tenim un preu correcte,
     if ($OEP instanceof EntradesPreus) {
         if ($edicio) {
             $RET[-1] = 'Cap descompte (' . $OEP->getPreu() . '€)';
         }
         //Carrego els descomptes associats a aquest preu
         foreach (DescomptesPeer::getDescomptes($idH, false) as $OD) {
             $RET[$OD->getIddescompte()] = $OD->getNom() . ' (' . self::getPreuAmbDescompte($OC->getPreu(), $OD->getIddescompte()) . '€)';
         }
     } else {
         $RET[-1] = 'Cap descompte';
     }
     return $RET;
 }
 public function executeGActivitats(sfWebRequest $request)
 {
     $this->setLayout('gestio');
     $this->IDS = $this->getUser()->getSessionPar('idS');
     //Netegem cerca
     if ($request->getParameter('accio') == 'C') {
         $this->CERCA = $this->getUser()->setSessionPar('cerca', array('text' => ''));
         $this->PAGINA = $this->getUser()->setSessionPar('pagina', 1);
         $this->DATAI = $this->getUser()->setSessionPar('DATAI', time());
     }
     //Afegit per si algú ha d'enviar algun error
     $this->ERROR = $request->getParameter('ERROR');
     if ($this->ERROR == "HORARI_NO_EXISTEIX") {
         $this->MISSATGE = array(0 => "L'Horari no existeix o no s'ha trobat.");
     } elseif ($this->ERROR == "ACTIVITAT_NO_EXISTEIX") {
         $this->MISSATGE = array(0 => "La activitat no existeix o no s'ha trobat. ");
     } elseif ($this->ERROR == "NO_HI_HA_MES_HORARIS") {
         $this->MISSATGE = array(0 => "No s'ha creat cap nova activitat, perquè només conté un horari.");
     }
     $this->CERCA = $this->getUser()->ParReqSesForm($request, 'cerca', array('text' => ""));
     $T = time();
     $this->PAGINA = $request->getParameter('PAGINA', 1);
     $this->DATAI = $this->getUser()->ParReqSesForm($request, 'DATAI', $T);
     $this->DIA = $request->getParameter('DIA', time());
     $this->IDA = $request->getParameter('IDA', 0);
     $this->accio = $request->getParameter('accio', 'C');
     $this->ACTIVITAT_NOVA = false;
     //Inicialitzem el formulari de cerca
     $this->FCerca = new CercaForm();
     if (isset($this->CERCA['text'])) {
         $this->FCerca->bind(array('text' => $this->CERCA['text']));
     } else {
         $this->FCerca->bind(array('text' => ''));
     }
     //Inicialitzem variables
     $this->MODE = array();
     if ($request->isMethod('POST')) {
         if ($request->hasParameter('BCERCA')) {
             $this->accio = 'C';
             $this->PAGINA = 1;
         } elseif ($request->hasParameter('BNOU')) {
             $this->accio = 'ACTIVITAT';
         } elseif ($request->hasParameter('BCICLE')) {
             $this->accio = 'CICLE';
         } elseif ($request->hasParameter('BCICLESAVE')) {
             $this->accio = 'CICLE_SAVE';
         } elseif ($request->hasParameter('B-GUARDA-ACTIVITAT')) {
             $this->accio = 'ACTIVITAT_SAVE';
         } elseif ($request->hasParameter('B-ESBORRA-ACTIVITAT')) {
             $this->accio = 'ACTIVITAT_DELETE';
         } elseif ($request->hasParameter('BGENERANOTICIA')) {
             $this->accio = 'GENERA_NOTICIA';
         } elseif ($request->hasParameter('BPREUSSAVE')) {
             $this->accio = 'PREUS';
         }
     }
     //Quan cliquem per primer cop a qualsevol de les cerques, la pàgina es posa a 1
     if ($request->getParameter('accio') == 'C') {
         $this->PAGINA = 1;
     }
     if ($request->getParameter('accio') == 'CD') {
         $this->PAGINA = 1;
     }
     if ($request->hasParameter('DATAI')) {
         $this->DIA = "";
     }
     //Aquest petit bloc és per si es modifica amb un POST el que s'ha enviat per GET
     //$this->getUser()->setSessionPar('PAGINA',$this->PAGINA);   //Guardem la pàgina per si hem fet una consulta nova
     $this->DATAF = mktime(0, 0, 0, date('m', $this->DATAI) + 3, date('d', $this->DATAI), date('Y', $this->DATAI));
     //La data final sempre és 3 mesos superior a la inicial
     switch ($this->accio) {
         //Consulta inicial del calendari sense prèmer cap dia, només amb un factor de cerca
         case 'C':
             $this->getUser()->addLogAction('inside', 'gActivitats');
             $HORARIS = HorarisPeer::getActivitats(null, $this->CERCA['text'], $this->DATAI, $this->DATAF, null, $this->IDS);
             if ($this->CERCA['text'] != "") {
                 $this->ACTIVITATS = $HORARIS['ACTIVITATS'];
             } else {
                 $this->ACTIVITATS = array();
             }
             $this->CALENDARI = $HORARIS['CALENDARI'];
             $this->MODE['CONSULTA'] = true;
             $this->MODE['LLISTAT'] = true;
             break;
             break;
             //Consulta que em mostra les activitats quan canvio de mensualitat o any
         //Consulta que em mostra les activitats quan canvio de mensualitat o any
         case 'CC':
             $HORARIS = HorarisPeer::getActivitats(null, $this->CERCA['text'], $this->DATAI, $this->DATAF, null, $this->IDS);
             //$this->ACTIVITATS = $HORARIS['ACTIVITATS'];
             $this->ACTIVITATS = array();
             $this->CALENDARI = $HORARIS['CALENDARI'];
             $this->MODE['CONSULTA'] = true;
             $this->MODE['LLISTAT'] = true;
             break;
             //Consulta que em mostra les activitats d'un dia seleccionat del calendari
         //Consulta que em mostra les activitats d'un dia seleccionat del calendari
         case 'CD':
             $HORARIS = HorarisPeer::getActivitats($this->DIA, $this->CERCA['text'], null, null, null, $this->IDS);
             $this->ACTIVITATS = $HORARIS['ACTIVITATS'];
             $this->CALENDARI = $HORARIS['CALENDARI'];
             $this->MODE['CONSULTA'] = true;
             $this->MODE['LLISTAT'] = true;
             break;
             //Entrem les activitats... que necessitem
         //Entrem les activitats... que necessitem
         case 'ACTIVITAT':
             $this->IDA = $request->getParameter('IDA');
             //Carrego l'activitat i també les relacionades del cicle... si n'hi ha.
             $OA = ActivitatsPeer::retrieveByPK($this->IDA);
             if ($OA instanceof Activitats) {
                 $OC = $OA->getCicles();
                 $idC = 0;
                 if ($OC instanceof Cicles) {
                     $idC = $OC->getCicleid();
                 }
                 $FA = ActivitatsPeer::initialize($this->IDA, $idC, $this->IDS);
                 //Si l'activitat té un cicle, carreguem les activitats relacionades
                 $L_OA_REL = array();
                 $this->N = CiclesPeer::getActivitatsCicle($idC, $this->IDS);
                 //Carreguem el formulari de preus
                 $LOH = $OA->getHorarisActius($this->IDS);
                 //Carreguem els horaris actius de l'activitat.
                 $this->FPREUS = array();
                 if ($OC instanceof Cicles && $this->N < 50) {
                     $L_OA_REL = CiclesPeer::getActivitatsCicleList($idC, $this->IDS);
                 }
                 $this->OC = $OC;
                 $this->OA = $OA;
                 $this->L_OA_REL = $L_OA_REL;
                 $this->FA = $FA;
                 $this->MODE['ACTIVITAT_CICLE'] = true;
                 //Si no hi ha l'activitat, vol dir que és nova...
             } else {
                 $FA = ActivitatsPeer::initialize(0, 0, $this->IDS);
                 $L_OA_REL = array();
                 $this->N = 0;
                 $this->OC = null;
                 $this->OA = $FA->getObject();
                 $this->L_OA_REL = $L_OA_REL;
                 $this->FA = $FA;
                 $this->MODE['ACTIVITAT_CICLE'] = true;
             }
             break;
             //Guardem l'activitat
         //Guardem l'activitat
         case 'ACTIVITAT_SAVE':
             $RP = $request->getParameter('activitats');
             $this->IDA = $RP['ActivitatID'];
             $this->IDC = $RP['Cicles_CicleID'];
             $this->FActivitat = ActivitatsPeer::initialize($this->IDA, $this->IDC, $this->IDS);
             $this->FActivitat->bind($RP);
             if ($this->FActivitat->isValid()) {
                 $nova = $this->FActivitat->isNew();
                 $this->FActivitat->save();
                 $this->getUser()->addLogAction($this->accio, 'gActivitats', $this->FActivitat->getObject());
                 $this->IDA = $this->FActivitat->getObject()->getActivitatid();
                 if ($RP['ActivitatID'] > 0) {
                     myUser::addLogTimeline('alta', 'activitats', $this->getUser()->getSessionPar('idU'), $this->IDS, $this->FActivitat->getObject()->getActivitatid());
                 }
                 myUser::addLogTimeline('modificació', 'activitats', $this->getUser()->getSessionPar('idU'), $this->IDS, $this->FActivitat->getObject()->getActivitatid());
                 $this->redirect('gestio/gActivitats?accio=ACTIVITAT&IDA=' . $this->IDA);
             } else {
                 $this->MISSATGE = "HI HA HAGUT ALGUN PROBLEMA CREANT L'ACTIVITAT.";
             }
             break;
             //Esborrem una activitat
         //Esborrem una activitat
         case 'ACTIVITAT_DELETE':
             $RP = $request->getParameter('activitats');
             $this->IDA = $RP['ActivitatID'];
             $this->IDC = $RP['Cicles_CicleID'];
             $this->FActivitat = ActivitatsPeer::initialize($this->IDA, $this->IDC, $this->IDS);
             $OA = $this->FActivitat->getObject();
             if ($OA instanceof Activitats) {
                 $this->getUser()->addLogAction($this->accio, 'gActivitats', $OA);
                 myUser::addLogTimeline('baixa', 'activitats', $this->getUser()->getSessionPar('idU'), $this->IDS, $RP['ActivitatID']);
                 $OA->setInactiu();
                 $this->redirect('gestio/gActivitats?accio=CC');
             }
             break;
             //Crida AJAX per carregar un horari
         //Crida AJAX per carregar un horari
         case 'HORARI':
             $idH = $request->getParameter('idH');
             $idA = $request->getParameter('idA');
             $OH = HorarisPeer::retrieveByPK($idH);
             if ($OH instanceof Horaris) {
                 return $this->renderPartial('formHorari', array("OH" => $OH));
             } else {
                 return $this->renderPartial('formHorari', array("OH" => HorarisPeer::initialize($idH, $idA, $this->IDS)->getObject()));
             }
             break;
             //Crida per AJAX que emmagatzema els horaris i fa les comprovacions pertinents
         //Crida per AJAX que emmagatzema els horaris i fa les comprovacions pertinents
         case 'HORARI_SAVE':
             //Carreguem els paràmetres a la variable enviats per ajax.
             parse_str($request->getParameter('FORMULARI'), $RP);
             $ERRORS = array();
             $IDA = $RP['horaris']['Activitats_ActivitatID'];
             $IDH = $RP['horaris']['HorarisID'];
             //Comprovem si existeix l'activitat... si no existeix li diem que primer l'han de guardar.
             $OA = ActivitatsPeer::retrieveByPK($IDA);
             //Si no podem carregar l'activitat, mostrem un error...
             if (!$OA instanceof Activitats) {
                 $ERRORS['OA'] = 'ERROR: ABANS DE CREAR UN HORARI HAS DE GUARDAR L\'ACTIVITAT.';
                 return $this->renderText(implode('<br />', $ERRORS));
                 //Hem pogut carregar l'activitat relacionada i podem donar d'alta l'horari.
             } else {
                 //Carreguem l'Horari que s'ha entrat... o en creem un de nou.
                 $OH = HorarisPeer::retrieveByPK($IDH);
                 if ($OH instanceof Horaris) {
                     $FHorari = new HorarisForm($OHorari);
                 } else {
                     $FHorari = new HorarisForm();
                 }
                 //Fem un bind de les dades generals per si hi ha un error
                 $FHorari->bind($RP);
                 //Creem la variable EXTRES
                 $EXTRES = array('ESPAISOUT' => array(), 'MATERIALOUT' => array());
                 //Guardem a extres els espais que volem reservar de la nostra entitat
                 $EXTRES['ESPAISOUT'] = $RP['espais'];
                 //Comprovem l'existència del material i el guardem en format de save
                 foreach ($RP['material'] as $M => $idM) {
                     $OM = MaterialPeer::retrieveByPK($idM);
                     if ($OM instanceof Material) {
                         $EXTRES['MATERIALOUT'][] = array('material' => $idM, 'generic' => $OM->getMaterialgenericIdmaterialgeneric());
                     }
                 }
                 //Tractem els espais externs, i el guardem si n'hi ha algun.
                 $EXTRES['ESPAIEXTERN'] = EspaisExternsPeer::initialize($RP['espais_externs']);
                 if ($RP_EE['espais_externs']['Poble'] > 0) {
                     $EXTRES['ESPAIEXTERN']->bind($RP['espais_externs']);
                     if (!$EXTRES['ESPAIEXTERN']->isValid()) {
                         $ERRORS['EE'] = "ERROR: HI HA ALGUN ERROR EN L'ESPAI EXTERN.";
                     } else {
                         $EXTRES['ESPAIEXTERN']->save();
                     }
                 }
                 //Si no hi ha cap error, passem a guardar.
                 if (empty($ERRORS)) {
                     $ERRORS = HorarisPeer::GuardaHorari($RP['horaris'], $EXTRES, $this->IDS);
                 }
                 //Si no hi ha hagut cap error, ho guardem al log com un canvi en l'horari
                 if (empty($ERRORS)) {
                     $this->getUser()->addLogAction('HORARI_SAVE', 'gActivitats', $FHorari->getObject());
                     if ($RP['horaris']['HorarisID'] > 0) {
                         myUser::addLogTimeline('modificació', 'horaris', $this->getUser()->getSessionPar('idU'), $this->IDS, $IDA);
                     } else {
                         myUser::addLogTimeline('alta', 'horaris', $this->getUser()->getSessionPar('idU'), $this->IDS, $IDA);
                     }
                     return $this->renderText(implode("\n", $ERRORS));
                     //Hem d'informar que ha anat tot bé.
                 } else {
                     //Hem d'informar que hi ha hagut algun error
                     return $this->renderText(implode("\n", $ERRORS));
                 }
             }
             break;
             //Funció AJAX que esborra un horari determinat.
         //Funció AJAX que esborra un horari determinat.
         case 'HORARI_DELETE':
             //Llegim el que s'envia per ajax.
             parse_str($request->getParameter('FORMULARI'), $RP);
             $OH = HorarisPeer::retrieveByPK($RP['horaris']['HorarisID']);
             if ($OH instanceof Horaris) {
                 $this->getUser()->addLogAction($this->accio, 'gActivitats', $OH);
                 myUser::addLogTimeline('baixa', 'horaris', $this->getUser()->getSessionPar('idU'), $this->IDS, $RP['horaris']['Activitats_ActivitatID']);
                 $OH->setInactiu();
                 return $this->renderText("");
             } else {
                 return $this->renderText("ERROR: No s'ha trobat l'horari. ");
             }
             break;
             /*    		
                 	case 'DESCRIPCIO':
                 		
                 			$this->CarregaActivitats($request,false);
                 			$this->FActivitat = ActivitatsPeer::initializeDescription($this->IDA,$this->IDS);    			    			
                 			$this->MODE['DESCRIPCIO'] = true;
                 				    			     			    			
                 		break;
             */
         /*    		
             	case 'DESCRIPCIO':
             		
             			$this->CarregaActivitats($request,false);
             			$this->FActivitat = ActivitatsPeer::initializeDescription($this->IDA,$this->IDS);    			    			
             			$this->MODE['DESCRIPCIO'] = true;
             				    			     			    			
             		break;
         */
         case 'DESCRIPCIO_SAVE':
             parse_str($request->getParameter('FORMULARI'), $RP);
             $RP = $RP['activitats'];
             $this->IDA = $RP['ActivitatID'];
             $this->FActivitat = ActivitatsPeer::initializeDescription($this->IDA, $this->IDS);
             $this->FActivitat->bind($RP);
             if ($this->FActivitat->isValid()) {
                 $this->FActivitat->save();
                 $this->getUser()->addLogAction($this->accio, 'gActivitats', $this->FActivitat->getObject());
                 return $this->renderText('');
             } else {
                 return $this->renderText('ERROR: No s\'ha trobat la descripció.');
             }
             break;
         case 'GENERA_NOTICIA':
             $RP = $request->getParameter('activitats');
             $this->IDA = $RP['ActivitatID'];
             $ONoticia = NoticiesPeer::getNoticiaActivitat($this->IDA, $this->IDS);
             $this->redirect('gestio/gNoticies?accio=E&idn=' . $ONoticia->getIdnoticia());
             break;
         case 'PREUS':
             parse_str($request->getParameter('FORMULARI'), $RP);
             $RP = $RP['entrades_preus'];
             $ERRORS = array();
             if ($request->hasParameter('FORMULARI')) {
                 $FEP = EntradesPreusPeer::initialize($this->IDS, $RP['horari_id']);
                 $FEP->bind($RP);
                 if ($FEP->isValid()) {
                     $FEP->save();
                     return $this->renderText('');
                 } else {
                     $A = array();
                     foreach ($FEP as $E) {
                         if ($E->hasError()) {
                             $A[] = 'ERROR a ' . $E->getName() . ' >> ' . $E->getError();
                         }
                     }
                     return $this->renderText(json_encode($A));
                 }
             } else {
                 $IDH = $request->getParameter('idH');
                 $this->FEP = EntradesPreusPeer::initialize($this->IDS, $IDH);
                 return $this->renderPartial('formPreus', array('FEP' => $this->FEP));
             }
             break;
             //Des d'un horari, creem una activitat nova amb les mateixes dades. Ja està entrat l'error a dalt.
         //Des d'un horari, creem una activitat nova amb les mateixes dades. Ja està entrat l'error a dalt.
         case 'DESDOBLAR':
             $IDH = $request->getParameter('IDH');
             $OH = HorarisPeer::retrieveByPK($IDH);
             if (!$OH instanceof Horaris) {
                 $this->redirect("gestio/gActivitats?accio=ERROR_GREU&ERROR=HORARI_NO_EXISTEIX");
             }
             //Carreguem l'activitat i en fem una de nova.
             $OA = ActivitatsPeer::retrieveByPK($OH->getActivitatsActivitatid());
             if (!$OA instanceof Activitats) {
                 $this->redirect("gestio/gActivitats?accio=ERROR_GREU&ERROR=ACTIVITAT_NO_EXISTEIX");
             }
             //Comprovem que tingui algun altre horari, sinó donem error.
             $NH = $OA->countHorarisActius($this->IDS);
             if ($NH <= 1) {
                 $this->redirect("gestio/gActivitats?accio=HORARI&IDA={$OA->getActivitatid()}&IDH={$OH->getHorarisid()}&ERROR=NO_HI_HA_MES_HORARIS");
             }
             $NOVA_ACTIVITAT = $OA->copy();
             $NOVA_ACTIVITAT->save();
             $OH->setActivitatsActivitatid($NOVA_ACTIVITAT->getActivitatid());
             $OH->save();
             $this->redirect("gestio/gActivitats?accio=ACTIVITAT&IDA={$NOVA_ACTIVITAT->getActivitatid()}");
             break;
             //Mostra un error greu on apareix només el missatge
         //Mostra un error greu on apareix només el missatge
         case 'ERROR_GREU':
             $this->MODE['ERROR_GREU'] = true;
             break;
     }
 }
function formLlistaPreus($OA, $FPREUS)
{
    ?>
    
    
    <style>
    
        .row { width: auto; float:left; margin-left:10px; } 
        .row_field { width:auto; } 
	    .row_title { width:auto; }
	    .row_field input { width:auto; }

    </style>
    	    	                                                             
	<div class="REQUADRE">
    
    	<div class="OPCIO_FINESTRA"><?php 
    echo link_to(image_tag('icons/Grey/PNG/action_delete.png'), 'gestio/gActivitats?accio=PREUS&IDA=' . $IDA);
    ?>
</div>        	
    	<div class="titol">        
            <?php 
    echo 'Editant els preus de l\'activitat: ' . $OA->getNom();
    //Mostrem de quina activitat estem editant els preus
    ?>
    	</div>
            
    	<div class="TITOL">Preu horaris</div>                                    
          	<div class="DADES">
     			<?php 
    if (sizeof($FPREUS) == 0) {
        echo '<TR><TD class="LINIA">Aquesta activitat no té cap horari definit.</TD></TR>';
    }
    foreach ($FPREUS as $F) {
        echo '<form action="' . url_for('gestio/gActivitats') . '" method="post">';
        echo input_hidden_tag('IDA', $OA->getActivitatid());
        $OH = HorarisPeer::retrieveByPK($F->getObject()->getHorariId());
        echo '<div style="clear:both; font-weight:bold;" class="titol" >' . $OH->getDia('d/m/Y') . ' | ' . $OH->getHorainici('H:i') . '</div>';
        echo $F;
        echo '<div style="margin-left:20px; padding-top:20px; float:left; "> <button name="BPREUSSAVE" class="BOTO_ACTIVITAT">Actualitza</button></div>';
        echo '</form>';
    }
    ?>
                                        
                <div style="clear:both">&nbsp;</div>                                                                                  	    			
        	</div>    	                          
	</div>
<?php 
}
 public function getHorari()
 {
     $OH = HorarisPeer::retrieveByPK($this->getEntradesPreusHorariId());
     if ($OH instanceof Horaris) {
         return $OH;
     } else {
         $OH = new Horaris();
     }
 }
 public static function save($HORARIS, $DBDD, $EXTRES, $idS)
 {
     //Carreguem l'horari que estem tractant i guardarem els espais que usa.
     $A_H = array();
     $A_HE = array();
     if ($HORARIS['HorarisID'] > 0) {
         $OH = HorarisPeer::retrieveByPK($HORARIS['HorarisID']);
         if ($OH instanceof Horaris) {
             $A_H = array($HORARIS['HorarisID']);
         }
         foreach ($OH->getHorarisespaiss() as $HE) {
             $A_HE[] = $HE->getIdhorarisespais();
         }
     }
     //Per cada un dels dies que ha entrat, creem un horari
     foreach ($DBDD['DIES'] as $D) {
         //Carreguem algun dels horaris que estem editant i el sobreescriurem sinó li donem un número nou
         $idH = array_pop($A_H);
         //Si estem fent una substitució, recarreguem, sinó en creem un de nou
         $OH = !is_null($idH) ? HorarisPeer::retrieveByPK($idH) : new Horaris();
         $OH->setActivitatsActivitatid($HORARIS['Activitats_ActivitatID']);
         $OH->setHorainici($DBDD['HoraIn']);
         $OH->setHorapre($DBDD['HoraPre']);
         $OH->setHorapost($DBDD['HoraPost']);
         $OH->setHorafi($DBDD['HoraFi']);
         $OH->setAvis($HORARIS['Avis']);
         $OH->setEspectadors($HORARIS['Espectadors']);
         $OH->setPlaces($HORARIS['Places']);
         $OH->setDia($D);
         $OH->setActiu(true);
         $OH->setSiteid($idS);
         $OH->save();
         //Guardem l'Horari en si
         //Si no hi ha espais, vol dir que és un espai extern. Llavors només guardarem el material.
         if (empty($EXTRES['ESPAISOUT'])) {
             $idEE = $EXTRES['ESPAIEXTERN']->getObject()->getIdespaiextern();
             foreach ($EXTRES['MATERIALOUT'] as $K => $idM) {
                 $idHE = array_pop($A_HE);
                 $OHE = !is_null($idHE) ? HorarisespaisPeer::retrieveByPK($idHE) : new Horarisespais();
                 $OHE->setMaterialIdmaterial($idM['material']);
                 $OHE->setEspaisEspaiid(null);
                 $OHE->setHorarisHorarisid($OH->getHorarisid());
                 //Amb l'identificador de l'horari que hem creat
                 $OHE->setIdespaiextern($idEE);
                 $OHE->setActiu(true);
                 $OHE->setSiteid($idS);
                 $OHE->save();
             }
             if (empty($EXTRES['MATERIALOUT'])) {
                 $idHE = array_pop($A_HE);
                 $OHE = !is_null($idHE) ? HorarisespaisPeer::retrieveByPK($idHE) : new Horarisespais();
                 $OHE->setMaterialIdmaterial(null);
                 $OHE->setEspaisEspaiid(null);
                 $OHE->setHorarisHorarisid($OH->getHorarisid());
                 //Amb l'identificador de l'horari que hem creat
                 $OHE->setIdespaiextern($idEE);
                 $OHE->setActiu(true);
                 $OHE->setSiteid($idS);
                 $OHE->save();
             }
             //Han entrat espais i guardem amb el material corresponent
         } else {
             foreach ($EXTRES['ESPAISOUT'] as $K => $idE) {
                 foreach ($EXTRES['MATERIALOUT'] as $K => $idM) {
                     $idHE = array_pop($A_HE);
                     $OHE = !is_null($idHE) ? HorarisespaisPeer::retrieveByPK($idHE) : new Horarisespais();
                     $OHE->setMaterialIdmaterial($idM['material']);
                     $OHE->setEspaisEspaiid($idE);
                     $OHE->setHorarisHorarisid($OH->getHorarisid());
                     //Amb l'identificador de l'horari que hem creat
                     $OHE->setIdespaiextern(null);
                     $OHE->setActiu(true);
                     $OHE->setSiteid($idS);
                     $OHE->save();
                 }
                 if (empty($EXTRES['MATERIALOUT'])) {
                     $idHE = array_pop($A_HE);
                     $OHE = !is_null($idHE) ? HorarisespaisPeer::retrieveByPK($idHE) : new Horarisespais();
                     $OHE->setMaterialIdmaterial(null);
                     $OHE->setEspaisEspaiid($idE);
                     $OHE->setHorarisHorarisid($OH->getHorarisid());
                     //Amb l'identificador de l'horari que hem creat
                     $OHE->setIdespaiextern(null);
                     $OHE->setActiu(true);
                     $OHE->setSiteid($idS);
                     $OHE->save();
                 }
             }
         }
     }
     //Acabem d'eliminar els que sobrin
     if (!empty($A_H)) {
         foreach ($A_H as $idH) {
             HorarisPeer::retrieveByPK($idH)->setInactiu();
         }
     }
     if (!empty($A_HE)) {
         foreach ($A_HE as $idHE) {
             HorarisespaisPeer::retrieveByPK($idHE)->setInactiu();
         }
     }
 }
 public function getHorari()
 {
     return HorarisPeer::retrieveByPK($this->getHorariId());
 }
function Entrades_Llista($LEntrades)
{
    ?>

        <table class="taula_llistat">
            <tr>
                <th>Quan</th>
                <th>Hora</th>
                <th>Titol</th>
                <th>On</th>
                <th>Entrades</th>
                <th>Estat</th>
            </tr>            
            <?php 
    if (empty($LEntrades)) {
        echo '<tr><td colspan="4">No s\'ha trobat cap entrada comprada.</td></tr>';
    } else {
        foreach ($LEntrades as $OER) {
            $OH = HorarisPeer::retrieveByPK($OER->getEntradesPreusHorariId());
            if ($OH instanceof Horaris) {
                $OA = $OH->getActivitatss();
                $SiteName = SitesPeer::getNom($OH->getSiteId());
                $class = "";
                if ($OER->getEstat() == EntradesReservaPeer::ESTAT_ENTRADA_ANULADA) {
                    $class = "class=\"tatxat\"";
                }
                echo "<tr>\r\n                                    <td {$class}>{$OH->getDia('d-m-Y')}</td>\r\n                                    <td {$class}>{$OH->getHorainici('H:i')}</td>\r\n                                    <td {$class}>{$OA->getTmig()}</td>\r\n                                    <td {$class}>{$SiteName}</td>\r\n                                    <td {$class}>{$OER->getQuantitat()}</td>\r\n                                    <td {$class}>{$OER->getEstatString()}</td>";
                //if($OER->getEstat() != EntradesReservaPeer::ESTAT_ENTRADA_ANULADA) echo "<td><a href=\"".url_for('@hospici_anula_entrada?idER='.$OER->getIdentrada())."\">Anul·lar</a></td>";
                echo "</tr>";
            }
        }
    }
    ?>
                                    
        </table>
         
<?php 
}
Beispiel #8
0
 public function executeGActivitats(sfWebRequest $request)
 {
     $this->setLayout('gestio');
     $this->IDS = $this->getUser()->getSessionPar('idS');
     //Netegem cerca
     if ($request->getParameter('accio') == 'C') {
         $this->CERCA = $this->getUser()->setSessionPar('cerca', array('text' => ''));
         $this->PAGINA = $this->getUser()->setSessionPar('pagina', 1);
         $this->DATAI = $this->getUser()->setSessionPar('DATAI', time());
     }
     $this->CERCA = $this->getUser()->ParReqSesForm($request, 'cerca', array('text' => ""));
     $T = time();
     $this->PAGINA = $request->getParameter('PAGINA', 1);
     $this->DATAI = $this->getUser()->ParReqSesForm($request, 'DATAI', $T);
     $this->DIA = $request->getParameter('DIA', time());
     $this->IDA = $request->getParameter('IDA', 0);
     $this->accio = $request->getParameter('accio', 'C');
     $this->ACTIVITAT_NOVA = false;
     //Inicialitzem el formulari de cerca
     $this->FCerca = new CercaForm();
     if (isset($this->CERCA['text'])) {
         $this->FCerca->bind(array('text' => $this->CERCA['text']));
     } else {
         $this->FCerca->bind(array('text' => ''));
     }
     //Inicialitzem variables
     $this->MODE = array();
     if ($request->isMethod('POST')) {
         if ($request->hasParameter('BCERCA')) {
             $this->accio = 'C';
             $this->PAGINA = 1;
         } elseif ($request->hasParameter('BNOU')) {
             $this->accio = 'ACTIVITAT';
         } elseif ($request->hasParameter('BCICLE')) {
             $this->accio = 'CICLE';
         } elseif ($request->hasParameter('BCICLESAVE')) {
             $this->accio = 'CICLE_SAVE';
         } elseif ($request->hasParameter('BACTIVITAT')) {
             $this->accio = 'ACTIVITAT';
         } elseif ($request->hasParameter('BACTIVITATSAVE')) {
             $this->accio = 'ACTIVITAT_SAVE';
         } elseif ($request->hasParameter('BACTIVITATDELETE')) {
             $this->accio = 'ACTIVITAT_DELETE';
         } elseif ($request->hasParameter('BHORARI')) {
             $this->accio = 'HORARI';
         } elseif ($request->hasParameter('BHORARISAVE')) {
             $this->accio = 'HORARI_SAVE';
         } elseif ($request->hasParameter('BHORARIDELETE')) {
             $this->accio = 'HORARI_DELETE';
         } elseif ($request->hasParameter('BDESCRIPCIO')) {
             $this->accio = 'DESCRIPCIO';
         } elseif ($request->hasParameter('BDESCRIPCIOSAVE')) {
             $this->accio = 'DESCRIPCIO_SAVE';
         } elseif ($request->hasParameter('BDESCRIPCIODELETE')) {
             $this->accio = 'DESCRIPCIO_DELETE';
         } elseif ($request->hasParameter('BGENERANOTICIA')) {
             $this->accio = 'GENERA_NOTICIA';
         }
     }
     //Quan cliquem per primer cop a qualsevol de les cerques, la pàgina es posa a 1
     if ($request->getParameter('accio') == 'C') {
         $this->PAGINA = 1;
     }
     if ($request->getParameter('accio') == 'CD') {
         $this->PAGINA = 1;
     }
     if ($request->hasParameter('DATAI')) {
         $this->DIA = "";
     }
     //Aquest petit bloc és per si es modifica amb un POST el que s'ha enviat per GET
     //$this->getUser()->setSessionPar('PAGINA',$this->PAGINA);   //Guardem la pàgina per si hem fet una consulta nova
     $this->DATAF = mktime(0, 0, 0, date('m', $this->DATAI) + 3, date('d', $this->DATAI), date('Y', $this->DATAI));
     //La data final sempre és 3 mesos superior a la inicial
     switch ($this->accio) {
         //Consulta inicial del calendari sense prèmer cap dia, només amb un factor de cerca
         case 'C':
             $this->getUser()->addLogAction('inside', 'gActivitats');
             $HORARIS = HorarisPeer::getActivitats(null, $this->CERCA['text'], $this->DATAI, $this->DATAF, null, $this->IDS);
             if ($this->CERCA['text'] != "") {
                 $this->ACTIVITATS = $HORARIS['ACTIVITATS'];
             } else {
                 $this->ACTIVITATS = array();
             }
             $this->CALENDARI = $HORARIS['CALENDARI'];
             $this->MODE['CONSULTA'] = true;
             $this->MODE['LLISTAT'] = true;
             break;
             break;
             //Consulta que em mostra les activitats quan canvio de mensualitat o any
         //Consulta que em mostra les activitats quan canvio de mensualitat o any
         case 'CC':
             $HORARIS = HorarisPeer::getActivitats(null, $this->CERCA['text'], $this->DATAI, $this->DATAF, null, $this->IDS);
             //$this->ACTIVITATS = $HORARIS['ACTIVITATS'];
             $this->ACTIVITATS = array();
             $this->CALENDARI = $HORARIS['CALENDARI'];
             $this->MODE['CONSULTA'] = true;
             $this->MODE['LLISTAT'] = true;
             break;
             //Consulta que em mostra les activitats d'un dia seleccionat del calendari
         //Consulta que em mostra les activitats d'un dia seleccionat del calendari
         case 'CD':
             $HORARIS = HorarisPeer::getActivitats($this->DIA, $this->CERCA['text'], null, null, null, $this->IDS);
             $this->ACTIVITATS = $HORARIS['ACTIVITATS'];
             $this->CALENDARI = $HORARIS['CALENDARI'];
             $this->MODE['CONSULTA'] = true;
             $this->MODE['LLISTAT'] = true;
             break;
             //Entrem les activitats... que necessitem
         //Entrem les activitats... que necessitem
         case 'ACTIVITAT':
             $this->CarregaActivitats($request, $request->getParameter('form', true));
             $this->MODE['ACTIVITAT_EDIT'] = true;
             break;
         case 'ACTIVITAT_NO_EDIT':
             $this->CarregaActivitats($request, $request->getParameter('form', true));
             break;
             //Guardem l'activitat
         //Guardem l'activitat
         case 'ACTIVITAT_SAVE':
             $RP = $request->getParameter('activitats');
             $this->IDA = $RP['ActivitatID'];
             $this->IDC = $RP['Cicles_CicleID'];
             $this->FActivitat = ActivitatsPeer::initialize($this->IDA, $this->IDC, $this->IDS);
             $this->FActivitat->bind($request->getParameter('activitats'));
             if ($this->FActivitat->isValid()) {
                 $nova = $this->FActivitat->isNew();
                 $this->FActivitat->save();
                 $this->getUser()->addLogAction($this->accio, 'gActivitats', $this->FActivitat->getObject());
                 $this->IDA = $this->FActivitat->getObject()->getActivitatid();
                 if ($nova) {
                     $this->redirect('gestio/gActivitats?accio=HORARI&IDA=' . $this->IDA . '&nou=' . $this->IDA);
                 } else {
                     $this->redirect('gestio/gActivitats?accio=ACTIVITAT&IDA=' . $this->IDA);
                 }
             } else {
                 $this->CarregaActivitats($request, $request->getParameter('form', true));
             }
             break;
             //Esborrem una activitat
         //Esborrem una activitat
         case 'ACTIVITAT_DELETE':
             $RP = $request->getParameter('activitats');
             $this->IDA = $RP['ActivitatID'];
             $this->IDC = $RP['Cicles_CicleID'];
             $this->FActivitat = ActivitatsPeer::initialize($this->IDA, $this->IDC, $this->IDS);
             $OA = $this->FActivitat->getObject();
             if ($OA instanceof Activitats) {
                 $this->getUser()->addLogAction($this->accio, 'gActivitats', $OA);
                 $OA->setInactiu();
                 $this->redirect('gestio/gActivitats?accio=CC');
             }
             break;
             //Entrem els horaris de les activitats
         //Entrem els horaris de les activitats
         case 'HORARI':
             $this->CarregaActivitats($request, false);
             $OActivitat = ActivitatsPeer::retrieveByPK($this->IDA);
             $this->HORARIS = $OActivitat->getHorarisActius($this->IDS);
             $this->NOMACTIVITAT = $OActivitat->getNom();
             $OHorari = new Horaris();
             $OHorari->setActivitatsActivitatid($this->IDA);
             if ($request->hasParameter('nou')) {
                 $this->FHorari = new HorarisForm($OHorari);
             }
             $this->HORARI = $OHorari;
             $this->EXTRES = array('ESPAISOUT' => array(), 'MATERIALOUT' => array(), 'ESPAIEXTERN' => EspaisExternsPeer::initialize(null));
             $this->getUser()->setSessionPar('IDH', 0);
             if ($request->hasParameter('IDH')) {
                 $H = HorarisPeer::retrieveByPK($request->getParameter('IDH'));
                 $this->getUser()->setSessionPar('IDH', $request->getParameter('IDH'));
                 $this->FHorari = new HorarisForm($H);
                 $this->HORARI = $H;
                 $this->EXTRES['ESPAISOUT'] = $H->getArrayHorarisEspaisActiusAgrupats();
                 $this->EXTRES['MATERIALOUT'] = $H->getArrayHorarisEspaisMaterial();
                 $this->EXTRES['ESPAIEXTERN'] = $H->getEspaiExternForm();
             }
             $this->MODE['HORARI'] = true;
             break;
         case 'HORARI_SAVE':
             $RP = $request->getParameter('horaris');
             $this->IDA = $RP['Activitats_ActivitatID'];
             $this->IDH = $RP['HorarisID'];
             $OActivitat = ActivitatsPeer::retrieveByPK($this->IDA);
             $this->NOMACTIVITAT = $OActivitat->getNom();
             $this->HORARIS = $OActivitat->getHorarisActius($this->IDS);
             $OHorari = HorarisPeer::retrieveByPK($this->IDH);
             if ($this->IDH == 0) {
                 $this->FHorari = new HorarisForm();
             } else {
                 $this->FHorari = new HorarisForm($OHorari);
             }
             //Fem un bind de les dades generals per si hi ha un error
             $this->FHorari->bind($RP);
             //Creem la variable EXTRES
             $this->EXTRES = array('ESPAISOUT' => array(), 'MATERIALOUT' => array());
             //Guardem a extres el material que volem reservar.
             foreach ($request->getParameter('material', array()) as $M => $idM) {
                 $OM = MaterialPeer::retrieveByPK($idM);
                 if ($OM instanceof Material) {
                     $this->EXTRES['MATERIALOUT'][] = array('material' => $idM, 'generic' => $OM->getMaterialgenericIdmaterialgeneric());
                 }
             }
             //Guardem a extres els espais que volem reservar de la nostra entitat
             $this->EXTRES['ESPAISOUT'] = $request->getParameter('espais', array());
             //Tractem els espais externs, si n'hi ha algun.
             $RPEE = $request->getParameter('espais_externs', null);
             $this->EXTRES['ESPAIEXTERN'] = EspaisExternsPeer::initialize($RPEE['idEspaiextern']);
             if ($RPEE['Poble'] > 0) {
                 $this->EXTRES['ESPAIEXTERN']->bind($RPEE);
                 $RET = array();
                 if (!$this->EXTRES['ESPAIEXTERN']->isValid()) {
                     $RET = array('Hi ha algun error a la localització externa.');
                 } else {
                     $this->EXTRES['ESPAIEXTERN']->save();
                 }
             }
             if (empty($RET)) {
                 $RET = $this->GuardaHorari($request->getParameter('horaris'), $this->EXTRES, $this->IDS, $this->MISSATGE);
             }
             if (empty($RET)) {
                 $this->getUser()->addLogAction($this->accio, 'gActivitats', $this->FHorari->getObject());
                 $this->MISSATGE = array(1 => 'Horari guardat correctament');
                 $this->redirect('gestio/gActivitats?accio=HORARI&IDA=' . $this->IDA);
             } else {
                 $this->MISSATGE = $RET;
             }
             $this->CarregaActivitats($request, false);
             $this->MODE['HORARI'] = true;
             break;
         case 'HORARI_DELETE':
             $RH = $request->getParameter('horaris');
             $OH = HorarisPeer::retrieveByPK($RH['HorarisID']);
             if ($OH instanceof Horaris) {
                 $this->getUser()->addLogAction($this->accio, 'gActivitats', $OH);
                 $OH->setInactiu();
             }
             $this->redirect('gestio/gActivitats?accio=HORARI&IDA=' . $RH['Activitats_ActivitatID']);
             break;
         case 'DESCRIPCIO':
             $this->CarregaActivitats($request, false);
             $this->FActivitat = ActivitatsPeer::initializeDescription($this->IDA, $this->IDS);
             $this->MODE['DESCRIPCIO'] = true;
             break;
         case 'DESCRIPCIO_SAVE':
             $RP = $request->getParameter('activitats');
             $this->IDA = $RP['ActivitatID'];
             $this->CarregaActivitats($request, false);
             $this->FActivitat = ActivitatsPeer::initializeDescription($this->IDA, $this->IDS);
             $this->FActivitat->bind($RP, $request->getFiles('activitats'));
             if ($this->FActivitat->isValid()) {
                 $this->FActivitat->save();
                 $this->getUser()->addLogAction($this->accio, 'gActivitats', $this->FActivitat->getObject());
                 $this->redirect('gestio/gActivitats?accio=ACTIVITAT_NO_EDIT&IDA=' . $this->IDA);
             }
             $THIS->MODE['DESCRIPCIO'] = true;
             break;
         case 'GENERA_NOTICIA':
             $RP = $request->getParameter('activitats');
             $this->IDA = $RP['ActivitatID'];
             $ONoticia = NoticiesPeer::getNoticiaActivitat($this->IDA, $this->IDS);
             $this->redirect('gestio/gNoticies?accio=E&idn=' . $ONoticia->getIdnoticia());
             break;
     }
 }
 /**
  * @return array( status , OER )
  * @return -1 (OH incorrecte)
  * @return -2 (OA incorrecte)
  * @return -3 (OEP incorrecte)
  * @return -4 (Repe)
  * @return -5 (Exhaurides)
  * @return -6 (Error TPV)
  * @return -7 (Es volen comprar 0 entrades)
  * @return 1 (Compra metàl·lic o codi de barres OK)
  * @return 2 (Reserva d'entrada OK)
  * @return 3 (Pagament amb TPV)
  * @return 4 (En llista d'espera)
  * @return 5 (Pagament amb domiciliació) || Aquest encara s'ha d'aplicar correctament.
  * */
 public static function setCompraEntrada($OER)
 {
     $IDH = $OER->getEntradesPreusHorariId();
     $IDU = $OER->getUsuariId();
     $NEntrades = $OER->getQuantitat();
     $Descompte = $OER->getDescompte();
     $TPagament = $OER->getTipusPagament();
     //Paràmetres que retornaré després de la compra d'una entrada.
     $RET = array('status' => 0, 'OER' => null);
     $OH = HorarisPeer::retrieveByPK($IDH);
     //Comprovem que existeixi l'horari
     if (!$OH instanceof Horaris) {
         $RET = array('status' => -1, 'OER' => null);
         //Horari OK.
     } else {
         $IDA = $OH->getActivitatsActivitatid();
         $OA = ActivitatsPeer::retrieveByPK($IDA);
         //Comprovem que existeixi l'activitat
         if (!$OA instanceof Activitats) {
             $RET = array('status' => -2, 'OER' => null);
             //Activitat OK.
         } else {
             //Carrego l'entrada i el preu
             $OEP = EntradesPreusPeer::retrieveByPK($IDH);
             //No s'ha trobat el preu per aquesta activitat i horari.
             if (!$OEP instanceof EntradesPreus) {
                 $RET = array('status' => -3, 'OER' => null);
                 //HORARI_INEXISTENT
             } else {
                 //Comprovem que el nombre d'entrades no sigui 0 o un valor extrany
                 if (!($NEntrades >= 0)) {
                     $RET = array('status' => -7, 'OER' => null);
                     //Número d'entrades incorrecte
                 } else {
                     //Tenim un horari carregat i una activitat.
                     $idS = $OH->getSiteid();
                     //Aquest no el farem servir perquè acceptem que les entrades siguin repetides pels usuaris.
                     $HaComprat = 0;
                     //EntradesReservaPeer::ExisteixenEntradesComprades($IDU, $IDH);
                     $PlacesLliures = EntradesReservaPeer::countEntradesActivitatConf($IDH);
                     //Comprovem si l'entrada està repetida
                     if ($HaComprat) {
                         $RET = array('status' => -4, 'OER' => null);
                         //ENTRADA_REPE
                         //No té cap entrada comprada
                     } else {
                         //Mirem si queden places tenint en cmopte que no hi ha llista d'espera.
                         if ($PlacesLliures - $NEntrades < 0 && $TPagament != TipusPeer::PAGAMENT_LLISTA_ESPERA) {
                             return array('status' => -5, 'OER' => null);
                             //NO_QUEDEN_PROU_ENTRADES i no hi ha llista d'espera
                             //Tot OK. Passem al tipus de pagament.
                         } else {
                             //Generem la nova compra o reserva
                             //$OER = EntradesReservaPeer::initialize( $idS , '' , 0 , $IDH , $IDU , $NEntrades , $Descompte , $TPagament )->getObject();
                             //Marquem el preu
                             $OER->setPagat(DescomptesPeer::getPreuAmbDescompte($OEP->getPreu(), $Descompte));
                             $OER->setData(date('Y-m-d H:i', time()));
                             //Mirem el tipus de pagament i deixem l'estat oportú.
                             if ($TPagament == TipusPeer::PAGAMENT_METALIC || $TPagament == TipusPeer::PAGAMENT_CODI_BARRES) {
                                 $OER->setEstat(EntradesReservaPeer::ESTAT_ENTRADA_RESERVADA);
                                 $OER->save();
                                 return array('status' => 1, 'OER' => $OER);
                             } elseif ($TPagament == TipusPeer::PAGAMENT_RESERVA) {
                                 $OER->setPagat(0);
                                 $OER->setEstat(EntradesReservaPeer::ESTAT_ENTRADA_RESERVADA);
                                 $OER->save();
                                 return array('status' => 2, 'OER' => $OER);
                             } elseif ($TPagament == TipusPeer::PAGAMENT_TARGETA) {
                                 $OER->setEstat(EntradesReservaPeer::ESTAT_ENTRADA_EN_PROCES);
                                 $OER->save();
                                 return array('status' => 3, 'OER' => $OER);
                             } elseif ($TPagament == TipusPeer::PAGAMENT_LLISTA_ESPERA) {
                                 $OER->setPagat(0);
                                 $OER->setEstat(EntradesReservaPeer::ESTAT_ENTRADA_EN_ESPERA);
                                 $OER->save();
                                 return array('status' => 4, 'OER' => $OER);
                             } elseif ($TPagament == TipusPeer::PAGAMENT_DOMICILIACIO) {
                                 $OER->setEstat(EntradesReservaPeer::ESTAT_ENTRADA_RESERVADA);
                                 $OER->save();
                                 return array('status' => 5, 'OER' => $OER);
                             }
                             UsuarisPeer::addSite($IDU, $idS);
                         }
                     }
                 }
             }
         }
     }
     return $RET;
 }