/** * Restiuisce un singleton per creare pizze * @return \PizzaFactory */ public static function instance() { if (!isset(self::$singleton)) { self::$singleton = new PizzaFactory(); } return self::$singleton; }
echo $ordine->getCliente()->getIndirizzo()->getTelefono(); ?> </li> --> </ul> </td> <td><?php echo $ordine->getDataCreazione(); ?> </td> <td class="resize"> <ul> <?php foreach ($ordine->getArticoli() as $articolo) { ?> <li>x<?php echo $articolo->getQty() . ', ' . PizzaFactory::instance()->cercaPizzaPerId($articolo->getPizzaId())->getNome() . ', ' . $articolo->getSize() . ', ' . '€' . $articolo->getPrezzo(); ?> </li> <?php } ?> </ul> </td> <td><?php echo $ordine->getSubtotale(); ?> </td> <td><a href="admin/ordini_attivi?cmd=invia&id=<?php echo $ordine->getId(); ?> ">Invia</a></td>
if (document.forms['aggiungi'].firstChild.parentElement[0].value == '') { alert('Seleziona il tipo di pizza'); return false; } return true; } </script> <div class="selection"> <h2>Scegli la tua pizza preferita</h2><hr> <form id="aggiungi" method="post" action="index.php?page=cliente" onsubmit="return checkIfOptionIsSelected()"> <label for="pizza">Tipo</label> <select name="pizza-selection" id="pizza-selection"> <option value="" selected disabled>Seleziona ...</option> <?php foreach (PizzaFactory::instance()->getListaPizze(false) as $value) { ?> <option value="<?php echo $value->getId(); ?> " data-ingredienti="<?php echo $value->getIngredientiExtra(); ?> " data-prezzo="<?php echo $value->getPrezzo(); ?> "> <?php echo $value->getNome();
public function handle_input(&$request) { $vd = new ViewDescriptor(); $vd->setPagina($request['page']); $this->setImpToken($vd, $request); //untente non autentificato if (!$this->loggedIn()) { $this->showLoginPage($vd); } else { $user = UserFactory::instance()->cercaUtentePerId($_SESSION[BaseController::user], $_SESSION[BaseController::role]); //carica le pizze da visualizzare sulla galleria $listaPizzeConImg = PizzaFactory::instance()->getListaPizze(true); reset($listaPizzeConImg); $pizza = current($listaPizzeConImg); $index = 0; // var_dump($listaPizzeConImg); $vd->setAjaxFile(basename(__DIR__) . '/../view/ajax.php'); if (isset($request["subpage"])) { switch ($request["subpage"]) { case 'base': $vd->setSottoPagina('base'); $vd->setBreadcrumb("Modifica username o e-mail"); break; case 'password': $vd->setSottoPagina('password'); $vd->setBreadcrumb("Modifica password"); break; case 'pagamento': $pagamenti = PagamentoFactory::instance()->getListaPagamentiPerCliente($user); $vd->setSottoPagina('pagamento'); $vd->setBreadcrumb("Visualizza i tuoi metodi di pagamento"); break; case 'visualizza_pagamento': $pagamenti = PagamentoFactory::instance()->getListaPagamentiPerCliente($user); $vd->setSottoPagina('visualizza_pagamento'); $vd->setBreadcrumb("Visualizza i tuoi metodi di pagamento"); break; case 'indirizzo': $vd->setSottoPagina('indirizzo'); $vd->setBreadcrumb("Modifica indirizzo di consegna"); break; case 'account': $msg = array(); if (!isset($_SESSION[self::elenco_articoli])) { $_SESSION[self::elenco_articoli] = array(); } $vd->setSottoPagina('account'); break; case 'conferma_ordine_step1': $vd->setSottoPagina('conferma_ordine_step1'); $vd->setTitoloStep('Passo 1: seleziona indirizzo di consegna'); break; case 'conferma_ordine_step2': $vd->setSottoPagina('conferma_ordine_step2'); $vd->setTitoloStep('Passo 2: riepilogo articoli'); break; case 'conferma_ordine_step3': $vd->setSottoPagina('conferma_ordine_step3'); $vd->setTitoloStep('Passo 3: seleziona metodo di pagamento'); $pagamenti = PagamentoFactory::instance()->getListaPagamentiPerCliente($user); break; case 'cronologia_ordini': $ordini = OrdineFactory::instance()->getListaOrdiniPerCliente($user); $vd->setSottoPagina('cronologia_ordini'); $vd->setBreadcrumb("Visualizza cronologia ordini"); break; case 'ordini_attivi': $ordini = OrdineFactory::instance()->getListaOrdiniPerCliente($user, true); $vd->setSottoPagina('cronologia_ordini'); $vd->setBreadcrumb("Visualizza ordini in corso"); break; default: if (!isset($_SESSION[self::elenco_articoli])) { $_SESSION[self::elenco_articoli] = array(); } $vd->setSottoPagina('home'); break; } } if (isset($request["cmd"])) { switch ($request["cmd"]) { //salvataggio permanente elenco articoli case 'ordina': $msg = array(); if (!empty($_SESSION[self::elenco_articoli])) { if (isset($request['carta'])) { $carta = intval($request['carta']); $pagamento = PagamentoFactory::instance()->cercaPagamentoPerId($carta); if (!isset($pagamento)) { $msg[] = 'Il metodo di pagamento inserito non è valido'; $vd->setTitoloStep('Passo 3: seleziona metodo di pagamento'); $vd->setSottoPagina('conferma_ordine_step3'); } else { if (!OrdineFactory::instance()->salvaOrdine($_SESSION[self::elenco_articoli], $user->getId(), $pagamento, $this->getSubTotale(true))) { $msg[] = '<li>Spiacente. Impossibile terminare la transazione</li>'; $vd->setTitoloStep('Passo 3: seleziona metodo di pagamento'); $vd->setSottoPagina('conferma_ordine_step3'); } else { $_SESSION[self::elenco_articoli] = array(); $vd->setSottoPagina('home'); } } } $this->creaFeedbackUtente($msg, $vd, 'Ordine inviato'); } $this->showHomeCliente($vd); $pagamenti = PagamentoFactory::instance()->getListaPagamentiPerCliente($user); break; //rimuove un articolo dal carrello //rimuove un articolo dal carrello case 'remove': if (isset($request['key'])) { $key = intval($request['key']); if (array_key_exists($key, $_SESSION[self::elenco_articoli])) { $this->rimuoviArticolo($_SESSION[self::elenco_articoli][$key]); } } $subpage = $_REQUEST['subpage']; if (empty($_SESSION[self::elenco_articoli])) { $subpage = 'home'; $vd->setSottoPagina('home'); } $this->showHomeCliente($vd); header('Location: ' . Settings::getApplicationPath() . "php/cliente/{$subpage}"); exit; break; /** * è stato aggiunto un "articolo" al carrello, * ovvero una quantità di pizze di un determinato tipo e di una certa dimensione */ /** * è stato aggiunto un "articolo" al carrello, * ovvero una quantità di pizze di un determinato tipo e di una certa dimensione */ case 'add': //controlla la provenienza della richiesta: selectmenu form ... if (isset($request['pizza-selection']) && isset($request['size']) && isset($request['quantity'])) { if (PizzaFactory::instance()->cercaPizzaPerId(intval($request['pizza-selection']))) { $articolo = new ArticoloSession(PizzaFactory::instance()->cercaPizzaPerId(intval($request['pizza-selection'])), $request['size'], intval($request['quantity'])); $this->aggiungiArticolo($articolo); } } //... altrimenti gallery form if (isset($request['pizza-gallery']) && isset($request['size']) && isset($request['quantity'])) { $key = intval($request['pizza-gallery']); if (array_key_exists($key, $listaPizzeConImg)) { $articolo = new ArticoloSession(PizzaFactory::instance()->cercaPizzaPerId($listaPizzeConImg[$key]->getId()), $request['size'], intval($request['quantity'])); $this->aggiungiArticolo($articolo); } } // file_put_contents('php/text.txt', $_SERVER['REQUEST_URI'], FILE_APPEND); $vd->setSottoPagina('home'); $this->showHomeCliente($vd); /** * Evita l'auto-submit del form in seguito alla ricarica della pagina nel browser. * Problema presente anche nel progetto d'esempio: * http://spano.sc.unica.it/amm2014/davide/esami14/php/docente/reg_esami_step1?cmd=r_nuovo */ header('Location: ' . Settings::getApplicationPath() . 'php/cliente/home'); exit; break; //visualizza i dettagli di un metodo di pagamento selezionato //visualizza i dettagli di un metodo di pagamento selezionato case 'v_pagamento': $msg = array(); // var_dump($request); $p = 0; if (isset($request['carta'])) { $p = filter_var($request['carta'], FILTER_VALIDATE_INT, FILTER_NULL_ON_FAILURE); if (!array_key_exists($p, $pagamenti)) { $msg[] = '<li>Il metodo di pagamento specificato non è valido</li>'; $vd->setSottoPagina('pagamento'); $this->creaFeedbackUtente($msg, $vd, ''); } else { $carta = $pagamenti[$p]; $vd->setSottoPagina('visualizza_pagamento'); } } else { $vd->setSottoPagina('pagamento'); } $this->showHomeUser($vd); break; case 'aggiorna_indirizzo': $msg = array(); $this->aggiornaIndirizzo($user, $request, $msg); $this->creaFeedbackUtente($msg, $vd, "Indirizzo di consegna aggiornato"); $this->showHomeUser($vd); break; case 'aggiorna_password': $msg = array(); $this->aggiornaPassword($user, $request, $msg); $this->creaFeedbackUtente($msg, $vd, 'Password aggiornata'); $vd->setSottoPagina('password'); $vd->setBreadcrumb("Modifica password"); $this->showHomeUser($vd); break; // aggiorna username, e-mail // aggiorna username, e-mail case 'aggiorna_info_base': $msg = array(); $vd->setSottoPagina('base'); $vd->setBreadcrumb("Modifica username o e-mail"); $this->aggiornaInfoBase($user, $request, $msg); $this->creaFeedbackUtente($msg, $vd, 'Username/e-mail sono stati aggiornati'); $this->showHomeUser($vd); break; case 'logout': $this->logout($vd); break; // ajax: click di un bullet: cambia pizza visualizzata sulla gallery // ajax: click di un bullet: cambia pizza visualizzata sulla gallery case 'go': $vd->toggleJson(); $index = filter_var($request["id"], FILTER_VALIDATE_INT, FILTER_NULL_ON_FAILURE); if (!array_key_exists($index, $listaPizzeConImg)) { $index = 0; } $pizza = $listaPizzeConImg[$index]; break; // ajax: click next arrow: visualizza la pizza successiva // ajax: click next arrow: visualizza la pizza successiva case 'next': $vd->toggleJson(); $index = filter_var($request["id"], FILTER_VALIDATE_INT, FILTER_NULL_ON_FAILURE); if (!isset($index)) { $intVal = 0; } $index++; if ($index > count($listaPizzeConImg) - 1) { $index = 0; } $pizza = $listaPizzeConImg[$index]; break; // ajax: click previous arrow: visualizza la pizza precedente // ajax: click previous arrow: visualizza la pizza precedente case 'prev': $vd->toggleJson(); $index = filter_var($request["id"], FILTER_VALIDATE_INT, FILTER_NULL_ON_FAILURE); if (!isset($index)) { $index = 0; } $index--; if ($index < 0) { $index = count($listaPizzeConImg) - 1; } $pizza = $listaPizzeConImg[$index]; break; default: $this->showHomeCliente($vd); } } else { // nessun comando $user = UserFactory::instance()->cercaUtentePerId($_SESSION[BaseController::user], $_SESSION[BaseController::role]); $this->showHomeUser($vd); } } require basename(__DIR__) . '/../view/master.php'; }