Пример #1
0
 /**
  * Restiuisce un singleton per creare Modelli
  * @return ModelloFactory
  */
 public static function instance()
 {
     if (!isset(self::$singleton)) {
         self::$singleton = new Album_ordineFactory();
     }
     return self::$singleton;
 }
Пример #2
0
 /**
  * Metodo per gestire l'input dell'utente. 
  * @param type $request la richiesta da gestire
  */
 public function handleInput(&$request)
 {
     // creo il descrittore della vista
     $vd = new ViewDescriptor();
     // imposto la pagina
     $vd->setPagina($request['page']);
     // gestion dei comandi
     // tutte le variabili che vengono create senza essere utilizzate
     // direttamente in questo switch, sono quelle che vengono poi lette
     // dalla vista, ed utilizzano le classi del modello
     if (!$this->loggedIn()) {
         // utente non autenticato, rimando alla home
         $this->showLoginPage($vd);
     } else {
         // utente autenticato
         $user = UserFactory::instance()->cercaUtentePerId($_SESSION[BaseController::user], $_SESSION[BaseController::role]);
         // verifico quale sia la sottopagina della categoria
         // Docente da servire ed imposto il descrittore
         // della vista per caricare i "pezzi" delle pagine corretti
         // tutte le variabili che vengono create senza essere utilizzate
         // direttamente in questo switch, sono quelle che vengono poi lette
         // dalla vista, ed utilizzano le classi del modello
         if (isset($request["subpage"])) {
             switch ($request["subpage"]) {
                 //ad ogni pagina viene associato un valore nella variabile $_SESSION['pagina'] per fare in modo che nel menu
                 //a sinistra appaiano informazioni guida differenti a seconda della pagina che si sta visualizzando
                 // modifica dei dati anagrafici per le consegne a domicilio
                 case 'anagrafica':
                     $_SESSION['pagina'] = 'anagrafica.php';
                     $vd->setSottoPagina('anagrafica');
                     break;
                     // Ordinazione delle Album con scelta dei quantità e dimensioni
                 // Ordinazione delle Album con scelta dei quantità e dimensioni
                 case 'ordina':
                     $_SESSION['pagina'] = 'ordina.php';
                     $album = AlbumFactory::instance()->getAlbum();
                     $orari = OrarioFactory::instance()->getOrari();
                     $vd->setSottoPagina('ordina');
                     break;
                     // visualizzazione degli ordini effettuati precedentemente
                 // visualizzazione degli ordini effettuati precedentemente
                 case 'elenco_ordini':
                     $_SESSION['pagina'] = 'elenco_ordini.php';
                     $ordini = OrdineFactory::instance()->getOrdiniPerIdCliente($user);
                     $vd->setSottoPagina('elenco_ordini');
                     break;
                     // visualizzaza come raggiungere e i vari contatti della Albumria
                 // visualizzaza come raggiungere e i vari contatti della Albumria
                 case 'contatti':
                     $_SESSION['pagina'] = 'contatti.php';
                     $vd->setSottoPagina('contatti');
                     break;
                 default:
                     $_SESSION['pagina'] = 'home.php';
                     $vd->setSottoPagina('home');
                     break;
             }
         }
         // gestione dei comandi inviati dall'utente
         if (isset($request["cmd"])) {
             // abbiamo ricevuto un comando
             switch ($request["cmd"]) {
                 // logout
                 case 'logout':
                     $this->logout($vd);
                     break;
                 case 'procedi_ordine':
                     //si verifica che i dati inseriti dall'utente relativamente a quantità e dimensione Album siano nel formato
                     //corretto e in numero accettabile. Successivamente ad ogni tipologia di prodotto viene associato un
                     //nuovo record nella tabella Album_ordini in cui viene indicato, oltre al numero ordine relativo, anche
                     //la quantità di Album di quel determinato tipo che si vogliono ordinare.
                     $vd->setSottoPagina('conferma_ordine');
                     $msg = array();
                     //carico un array con tutti gli id delle Album ordinabili
                     $idAlbum = AlbumFactory::instance()->getIdAlbum();
                     //verifico se i valori inseriti dall'utente sono corretti e conto quante Album sono state ordinate in totale
                     $nAlbum = $this->validaForm($idAlbum, $request);
                     $flagOrario = false;
                     //creo un nuovo ordine attualmente formato solo dall'id (che è anche l'ulitmo disponibile)
                     $ordine = new Ordine();
                     $ordine->setId(OrdineFactory::instance()->getLastId());
                     $ordineId = $ordine->getId();
                     //se il numero di Album ordinate è accettabile (>0) verifico se la fascia oraria richiesta è a sua volta disponibile
                     //per quel quantitativo di Album. se non lo è assegno quella disponibile piu vicina
                     if ($nAlbum) {
                         $orari = OrarioFactory::instance()->getOrariSuccessivi($request['orario']);
                         foreach ($orari as $orario) {
                             if (Album_ordineFactory::instance()->getNAlbumPerOrario($orario->getId()) + $nAlbum <= $orario->getOrdiniDisponibili()) {
                                 //var_dump("Album per orario ".Album_ordineFactory::instance()->getNAlbumPerOrario($orario->getId()));
                                 $ordine->setOrario($orario->getId());
                                 $flagOrario = true;
                                 break;
                             } else {
                                 $ordine->setOrario(NULL);
                             }
                         }
                     } else {
                         $msg[] = '<li>I valori inseriti non sono validi. Ordine annullato</li>';
                         $vd->setSottoPagina('ordina');
                         $this->creaFeedbackUtente($msg, $vd, "");
                         $this->showHomeUtente($vd);
                         break;
                     }
                 case 'dettaglio':
                     //mi permette di vedere i dettagli relativi a un ordine : elenco Album, quantità, prezzi singoli e totali
                     //e richieste di consegne
                     $_SESSION['pagina'] = 'dettaglio_ordine.php';
                     $ordineId = filter_var($request['ordine'], FILTER_VALIDATE_INT, FILTER_NULL_ON_FAILURE);
                     $ordine = OrdineFactory::instance()->getOrdine($ordineId);
                     $POs = Album_ordineFactory::instance()->getPOPerIdOrdine($ordine);
                     $vd->setSottoPagina('dettaglio_ordine');
                     $this->showHomeUtente($vd);
                     break;
                 case 'conferma_ordine':
                     //dopo il riepilogo dell'ordine il ciente puo' decidere se confermarlo o...
                     $msg = array();
                     $ordineId = $request['ordineId'];
                     $this->creaFeedbackUtente($msg, $vd, "Ordine " . $ordineId . " creato con successo.");
                     $vd->setSottoPagina('home');
                     $this->showHomeUtente($vd);
                     break;
                 case 'cancella_ordine':
                     //...cancella PO e ordine
                     $msg = array();
                     $ordineId = $request['ordineId'];
                     $p = Album_ordineFactory::instance()->cancellaPO($ordineId);
                     $o = OrdineFactory::instance()->cancellaOrdine($ordineId);
                     if ($p && $o) {
                         $this->creaFeedbackUtente($msg, $vd, "Ordine " . $ordineId . " cancellato.");
                     } else {
                         $this->creaFeedbackUtente('<li>Errore cancellazione</li>', $vd, "");
                     }
                     $vd->setSottoPagina('home');
                     $this->showHomeUtente($vd);
                     break;
                 case 'indirizzo':
                     //aggiornamento indirizzo - l'indirizzo viene utilizzato per le consegne a domicilio
                     $msg = array();
                     $this->aggiornaIndirizzo($user, $request, $msg);
                     $this->creaFeedbackUtente($msg, $vd, "Indirizzo aggiornato");
                     $this->showHomeCliente($vd);
                     break;
                 case 'password':
                     // cambio password
                     $msg = array();
                     $this->aggiornaPassword($user, $request, $msg);
                     $this->creaFeedbackUtente($msg, $vd, "Password aggiornata");
                     $this->showHomeCliente($vd);
                     break;
                 default:
                     $this->showHomeUtente($vd);
             }
         } else {
             // nessun comando
             $user = UserFactory::instance()->cercaUtentePerId($_SESSION[BaseController::user], $_SESSION[BaseController::role]);
             $this->showHomeUtente($vd);
         }
     }
     // includo la vista
     require basename(__DIR__) . '/../view/master.php';
 }
Пример #3
0
 public function getPrezzoTotale(Ordine $ordine)
 {
     $domicilio = 1.5;
     $prezzoParziale = Album_ordineFactory::instance()->getPrezzoParziale($ordine);
     if ($ordine->getDomicilio() == "si") {
         return $prezzoParziale + $domicilio;
     } else {
         return $prezzoParziale;
     }
 }
Пример #4
0
 /**
  * Metodo per gestire l'input dell'utente. 
  * @param type $request la richiesta da gestire
  */
 public function handleInput(&$request)
 {
     // creo il descrittore della vista
     $vd = new ViewDescriptor();
     // imposto la pagina
     $vd->setPagina($request['page']);
     if (!$this->loggedIn()) {
         // utente non autenticato, rimando alla home
         $this->showLoginPage($vd);
     } else {
         // utente autenticato
         $user = UserFactory::instance()->cercaUtentePerId($_SESSION[BaseController::user], $_SESSION[BaseController::role]);
         // verifico quale sia la sottopagina della categoria
         // Docente da servire ed imposto il descrittore
         // della vista per caricare i "pezzi" delle pagine corretti
         // tutte le variabili che vengono create senza essere utilizzate
         // direttamente in questo switch, sono quelle che vengono poi lette
         // dalla vista, ed utilizzano le classi del modello
         if (isset($request["subpage"])) {
             switch ($request["subpage"]) {
                 // visualizza i dati anagrafici
                 case 'anagrafica':
                     $_SESSION['pagina'] = 'anagrafica.php';
                     $vd->setSottoPagina('anagrafica');
                     break;
                     // gestione degli ordini eseguiti oggi
                 // gestione degli ordini eseguiti oggi
                 case 'gestione_ordini':
                     $_SESSION['pagina'] = 'gestione_ordini.php';
                     $ordini = OrdineFactory::instance()->getOrdiniNonPagati();
                     $vd->setSottoPagina('gestione_ordini');
                     break;
                     // ricerca di tutti gli ordini che sono stati eseguiti tramite il sito
                 // ricerca di tutti gli ordini che sono stati eseguiti tramite il sito
                 case 'ricerca_ordini':
                     $_SESSION['pagina'] = 'ricerca_ordini.php';
                     $date = OrdineFactory::instance()->getDate();
                     $vd->setSottoPagina('ricerca_ordini');
                     $vd->addScript("../js/jquery-2.1.1.min.js");
                     $vd->addScript("../js/ricercaOrdini.js");
                     break;
                     // utilizzo la funzione js e il json per ricercare e stampare i risultati della ricerca_ordini
                 // utilizzo la funzione js e il json per ricercare e stampare i risultati della ricerca_ordini
                 case 'filtra_ordini':
                     $vd->toggleJson();
                     $vd->setSottoPagina('ricerca_ordini_json');
                     $errori = array();
                     if (isset($request['myData']) && $request['myData'] != '') {
                         $data = $request['myData'];
                     } else {
                         $data = null;
                     }
                     if (isset($request['myOra']) && $request['myOra'] != '') {
                         $ora = $request['myOra'];
                     } else {
                         $ora = null;
                     }
                     //var_dump("data ".$data." Ora " .$ora);
                     $ordini = OrdineFactory::instance()->getOrdiniPerDataOra($data, $ora);
                     //i dati si vedono nel js ma non nel controller ne nel json
                     break;
                 default:
                     $_SESSION['pagina'] = 'home.php';
                     $vd->setSottoPagina('home');
                     break;
             }
         }
         // gestione dei comandi inviati dall'utente
         if (isset($request["cmd"])) {
             switch ($request["cmd"]) {
                 // logout
                 case 'logout':
                     $this->logout($vd);
                     break;
                 case 'dettaglio':
                     //mi permette di vedere i dettagli relativi a un ordine : elenco pizze, quantità, prezzi singoli e totali
                     //e richieste di consegne a domicilio
                     $_SESSION['pagina'] = 'dettaglio_ordine.php';
                     $ordineId = filter_var($request['ordine'], FILTER_VALIDATE_INT, FILTER_NULL_ON_FAILURE);
                     $ordine = OrdineFactory::instance()->getOrdine($ordineId);
                     $POs = Album_ordineFactory::instance()->getPOPerIdOrdine($ordine);
                     $cliente = UserFactory::instance()->getClientePerId($ordine->getCliente());
                     $vd->setSottoPagina('dettaglio_ordine');
                     $this->showHomeUtente($vd);
                     break;
                 case 'paga':
                     //permette al dipendente di segnalare un ordine come pagato e quindi non farlo piu apparire
                     //nell'elenco degli ordini da gestire
                     $msg = array();
                     $ordineId = filter_var($request['ordine'], FILTER_VALIDATE_INT, FILTER_NULL_ON_FAILURE);
                     if (OrdineFactory::instance()->setPagato($ordineId, $user)) {
                         $this->creaFeedbackUtente($msg, $vd, "Ordine " . $ordineId . " pagato.");
                     } else {
                         $this->creaFeedbackUtente($msg, $vd, "Errore cancellazione");
                     }
                     $vd->setSottoPagina('gestione_ordini');
                     $ordini = OrdineFactory::instance()->getOrdiniNonPagati();
                     $this->showHomeUtente($vd);
                     break;
                     // default
                 // default
                 default:
                     $this->showHomeUtente($vd);
                     break;
             }
         } else {
             // nessun comando, dobbiamo semplicemente visualizzare la vista
             $user = UserFactory::instance()->cercaUtentePerId($_SESSION[BaseController::user], $_SESSION[BaseController::role]);
             $this->showHomeUtente($vd);
         }
     }
     // richiamo la vista
     require basename(__DIR__) . '/../view/master.php';
 }
Пример #5
0
                <td><?php 
echo Album_ordineFactory::instance()->getPrezzoPerAlbum($PO) . "€ ";
?>
</td>                               
                   
            </tr>
    <? } ?>    
             <tr>                 
                <th>Domicilio</th>
                <th>Prezzo Consegna</th>                
                <th>Prezzo Album</th>
                <th>Prezzo Totale</th>                     
            </tr>       
            <tr>
                <td><?php 
echo OrdineFactory::instance()->getValoreOrario($ordine->getOrario());
?>
</td>           
                <td><? if($ordine->getDomicilio() == "si"){?>si<? } else {?>no<? } ?></td>            
                <td><? if($ordine->getDomicilio() == "si"){?>5€<? } else {?>0€<? } ?></td>
                <td><?php 
echo Album_ordineFactory::instance()->getPrezzoParziale($ordine) . "€ ";
?>
</td>                 
                <td><?php 
echo OrdineFactory::instance()->getPrezzoTotale($ordine) . "€ ";
?>
</td>                 
            </tr>
    </table>