예제 #1
0
 /**
  * Funció que permet gestionar la venta d'entrades
  *   
  * */
 public function executeGEntrades(sfWebRequest $request)
 {
     $this->setLayout('gestio');
     $this->IDS = $this->getUser()->getSessionPar('idS');
     $this->P = $this->getUser()->ParReqSesForm($request, 'P', 1);
     $this->URL = $this->getController()->genUrl('gestio/ajaxUsuaris', true);
     $accio = $request->getParameter('accio', 'LH');
     //Treiem el llistat d'activitats amb les entrades venudes i tmabé els seus horaris si n'hi ha. Aquí només visualitzem... si hem de modificar clicquem un enllaç cap al calendari.
     switch ($accio) {
         //Llista els que han reservat
         case 'LR':
             $this->MODE = 'LLISTA_ENTRADES';
             $this->LLISTAT_ENTRADES = EntradesReservaPeer::getEntradesVenudes($request->getParameter('IDA'), $request->getParameter('IDH'), true);
             $this->LLISTAT_ENTRADES_ANULADES = EntradesReservaPeer::getEntradesNoComptades($request->getParameter('IDA'), $request->getParameter('IDH'));
             break;
             //Anul·la la reserva
         //Anul·la la reserva
         case 'AR':
             $IDR = $request->getParameter('IDR');
             $IDA = 0;
             try {
                 $OR = EntradesReservaPeer::retrieveByPK($IDR);
                 $OR->setEstat(EntradesReservaPeer::ESTAT_ENTRADA_ANULADA);
                 $OR->save();
                 $IDH = $OR->getEntradesPreusHorariId();
             } catch (Exception $e) {
             }
             $this->MODE = 'LLISTA_ENTRADES';
             $this->redirect('gestio/gEntrades?accio=LR&IDH=' . $IDH);
             break;
             //Compra o reserva d'una entrada
         //Compra o reserva d'una entrada
         case 'VE':
             $this->MODE = 'EDITA_ENTRADA';
             //Comprem una entrada o guardem una modificació.
             if ($request->hasParameter('BRESERVASAVE')) {
                 $RS = $request->getParameter('entrades_reserva');
                 $this->FReserva = EntradesReservaPeer::initialize($this->IDS, $this->URL, $RS['idEntrada'], $RS['entrades_preus_horari_id']);
                 $this->FReserva->bind($RS);
                 if ($this->FReserva->isValid()) {
                     try {
                         $is_new = $this->FReserva->isNew();
                         $RET = $this->FReserva->saveMy();
                         $OER = $RET['OER'];
                         //Si hem pagat amb targeta
                         switch ($RET['status']) {
                             //Hem fet una actualització de l'entrada
                             case 0:
                                 $this->redirect('gestio/gEntrades?accio=LR&IDH=' . $OER->getEntradesPreusHorariId());
                                 break;
                                 //Compra en metàl·lic o targeta
                             //Compra en metàl·lic o targeta
                             case 1:
                                 $this->redirect('gestio/gEntrades?accio=OK&code=FACT&Ds_MerchantData=' . $OER->getIdentrada());
                                 break;
                                 //Reserva d'entrada ok
                             //Reserva d'entrada ok
                             case 2:
                                 $this->redirect('gestio/gEntrades?accio=OK&code=FACT&Ds_MerchantData=' . $OER->getIdentrada());
                                 break;
                                 //Pagament amb TPV
                             //Pagament amb TPV
                             case 3:
                                 if ($is_new) {
                                     $this->TPV = MatriculesPeer::getTPV($OER->getPagat(), $OER->getNomUsuari(), $OER->getIdentrada(), $OER->getSiteId(), false, true);
                                     $this->URL = OptionsPeer::getString('TPV_URL', $OER->getSiteId());
                                     $this->setLayout('blank');
                                     $this->setTemplate('pagament');
                                 }
                                 break;
                                 //En llista d'espera
                             //En llista d'espera
                             case 4:
                                 $this->redirect('gestio/gEntrades?accio=OK&code=LLISTA_ESPERA&Ds_MerchantData=' . $OER->getIdentrada());
                                 break;
                                 //Domiciliació
                             //Domiciliació
                             case 5:
                                 $this->redirect('gestio/gEntrades?accio=OK&code=DOMICILIACIO&Ds_MerchantData=' . $OER->getIdentrada());
                                 break;
                         }
                     } catch (Exception $e) {
                         $this->MISSATGE = $e->getMessage();
                     }
                 }
             } else {
                 $IDR = $request->getParameter('IDR', 0);
                 $IDH = $request->getParameter('IDH', 0);
                 $this->FReserva = EntradesReservaPeer::initialize($this->IDS, $this->URL, $IDR, $IDH, 0);
             }
             break;
             //Un cop hem fet una compra d'una entrada, hem de mostrar aquesta pantalla.
         //Un cop hem fet una compra d'una entrada, hem de mostrar aquesta pantalla.
         case 'OK':
             $this->idER = $request->getParameter('Ds_MerchantData', 0);
             $OER = EntradesReservaPeer::retrieveByPK($this->idER);
             if ($OER instanceof EntradesReserva) {
                 switch ($request->getParameter('code')) {
                     case 'FACT':
                         $this->MISSATGE = "ENTRADA_METALIC";
                         break;
                     case 'LLISTA_ESPERA':
                         $this->MISSATGE = "ENTRADA_LLISTA_ESPERA";
                         break;
                     case 'DOMICILIACIO':
                         $this->MISSATGE = "ENTRADA_DOMICILIACIO";
                         break;
                     case 'TPV':
                         $this->MISSATGE = "ENTRADA_OK";
                         break;
                 }
                 $email = $OER->getEmail();
                 $MailEnt = EntradesReservaPeer::DocReservaEntrades($OER, $OER->getSiteId());
                 if ($email != "") {
                     $this->sendMail($from, $email, $subject, $MailEnt);
                 }
                 $this->sendMail($from, OptionsPeer::getString('MAIL_ADMIN', $idS), $subject, $MailEnt);
             } else {
                 $this->MISSATGE = "ENTRADA_NO_TROBADA";
             }
             $this->MODE = 'MISSATGE';
             break;
         case 'KO':
             $this->MISSATGE = "PROBLEMA_PAGANT";
             $this->MODE = 'MISSATGE';
             break;
         case 'PRINT':
             $idER = $request->getParameter('idER');
             $OER = EntradesReservaPeer::retrieveByPK($idER);
             $HTML = EntradesReservaPeer::DocReservaEntrades($OER, $this->IDS);
             myUser::Html2PDF($HTML);
             throw new sfStopException();
             break;
         case 'PRINT_LLISTAT':
             $HTML = EntradesReservaPeer::DocLlistatEntrades($request->getParameter('IDH'), $request->getParameter('IDA'), $this->IDS);
             myUser::Html2PDF($HTML);
             throw new sfStopException();
             break;
             //Llisto els horaris que disposen d'entrades
         //Llisto els horaris que disposen d'entrades
         default:
             //Agafo els horaris que tenen entrades a la venta i els ordeno per data
             $this->LLISTAT_ENTRADES_PREUS = EntradesPreusPeer::getActivitatsAmbEntrades($this->IDS, $this->P);
             $this->MODE = "LLISTA_ACTIVITATS";
             break;
     }
 }