示例#1
0
 /**
  * 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>
示例#3
0
        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 &egrave; 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 &egrave; 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';
 }