/** * 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; } }