Package actions

Source Code of actions.VuePanierAction

package actions;

import java.sql.Date;
import java.util.HashMap;
import java.util.Iterator;

import interfaces.catalogue.IMetierCatalogue;
import interfaces.commandes.IMetierCommandes;
import interfaces.exceptions.MetierException;
import interfaces.produits.IMetierProduits;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import base.Client;
import base.Commande;
import base.Produit;

//import metier.commandes.MetierCommandes;
//import metier.produits.MetierProduits;

import ressources.Message;
import ressources.Panier;

public class VuePanierAction implements Action {
 


    private String suite,suiteSiNonLogue,cmdOk;
   
    public VuePanierAction(String suite,String suiteSiNonLogue,String cmdOk){
      this.suite = suite;
      this.suiteSiNonLogue = suiteSiNonLogue;
      this.cmdOk = cmdOk;
    }
   
    /**
     *
     */
    public String execute(HttpServletRequest req) throws Exception {
      String idProduit = req.getParameter("idProduit");
      String actionQte = req.getParameter(Message.ACTION_QTE);
      String actionValidation = req.getParameter(Message.ACTION_VALIDATION);
      HttpSession session = req.getSession();
      System.out.println("actionValidation = "+actionValidation);
      //MetierProduits mp = new MetierProduits();
      IMetierProduits mp = (IMetierProduits)req.getSession().getServletContext().getAttribute("metierProduits");
     
     
      // On nettoire la requete
      req.removeAttribute("idProduit");
      req.removeAttribute(Message.ACTION_QTE);
      //Si on a une actionQte => Ajouter ou retirer une quantité d'un produit
      // Sinon suppression du produit
     
     
      //On le crée pas si il n'existe pas
      Panier panier = (Panier)req.getSession(true).getAttribute("panier");   
      /*if(panier == null){
        req.setAttribute(Message.MESSAGE_ERREUR, Message.PANIER_INEXISTANT);
        return erreur;
      }*/
     
      HashMap<String,Integer> qteEnStocks = new HashMap<String,Integer>();
      // Calcul des quantités ...
      //if(actionQte != null || actionValidation != null){
        // On récupére les quantités en stock pour chaque produit
        try{         
          Iterator it = panier.getProduits().keySet().iterator();
         
          while(it.hasNext()){
            String idP = (String)it.next();
            int qteEnStock = mp.getQuantiteEnStock(idP);
            qteEnStocks.put(idP,qteEnStock);
          }       
         
          // On met la map dans la requête
          session.setAttribute("stocks", qteEnStocks);
        }catch(MetierException me){
          System.out.println("Impossible de récupérer la quantité en stock");
        }
      //}
           
     
      // On ajoute le produit au panier si on a un id de produit
      if(actionQte != null){ // Modification de la quantité               
         
          if(actionQte.equals(Message.PLUS)){
            panier.ajouterQuantite(idProduit);
          }else if(actionQte.equals(Message.MOINS)){
            panier.diminuerQuantite(idProduit);
          }else if(actionQte.equals(Message.DEL)){ // Suppression du produit
            panier.retirerProduit(idProduit);
          }
       
      }else if(actionValidation != null){ // Validation du panier
       
        IMetierCommandes mcom = (IMetierCommandes)req.getSession().getServletContext().getAttribute("metierCommandes");
        //MetierCommandes mcom = new MetierCommandes();
       
       
        Client client = (Client)session.getAttribute("client");
        if(client == null){
          // Le client n'est pas identifié, aller à la page de login
          req.setAttribute(Message.ACTION_VALIDATION, Message.VALIDATION);         
          return suiteSiNonLogue;
        }
       
       
        if(actionValidation.equals(Message.VALIDATION)){
          // Récapitulatif de la réservation => Calcul du délai de livraison
          //Commande c = new Commande();
          int numCmd = client.getLesCommandes().size()+1;
          String idCommande = client.getId()+numCmd;
          java.util.Date today = new java.util.Date();
          Commande c = new Commande(idCommande,client.getId(),new Date(today.getTime()));
          
          Iterator itProduits = panier.getProduits().keySet().iterator();
         
          while(itProduits.hasNext()){           
            String idP = (String)itProduits.next();
            //Produit p = (Produit)panier.getProduit(idP);
            int qte = panier.getQuantite(idP);
            c.ajouterProduit(idP, qte);
           
          }
                   
          // On fixe le montant du panier
          c.setPrixTotal(panier.getMontant());
          session.setAttribute("commande", c);
         
          try{
            req.setAttribute(Message.ACTION_VALIDATION, Message.AFF_VALIDATION);
            int delaiPrevu = mcom.getDelai(c);
            session.setAttribute("delai", new Integer(delaiPrevu));
          }catch(MetierException me){
            req.setAttribute(Message.MESSAGE_ERREUR, Message.ERREUR_VALIDATION);
            System.out.println("Delai Inconnu");
          }
         
        }else if(actionValidation.equals(Message.CONFIRMATION)){
          try{
            // Confirmation de la commande
            req.setAttribute(Message.ACTION_VALIDATION, Message.AFF_CONFIRMATION);
            Commande c = (Commande)session.getAttribute("commande");
            if(c== null){
              throw new MetierException(Message.ERREUR_CONFIRMATION);
            }
            mcom.ajouterCommande(c);
           
            req.setAttribute(Message.TITRE_MESSAGE,Message.TITRE_CMD);
            req.setAttribute(Message.MESSAGE, Message.CMD);
            // On retire les infos de la session
            session.removeAttribute("panier");
            session.removeAttribute("stocks");
            session.removeAttribute("commande");
            session.removeAttribute("delai");
           
            return cmdOk;
                       
          }catch(MetierException me){
            req.setAttribute(Message.MESSAGE_ERREUR, Message.ERREUR_CONFIRMATION);
            System.out.print("Impossible d'ajouter la commande");
            me.printStackTrace();           
          }
         
         
        }
      }
     
     
     
      return suite;
    }
   

   
   
}
TOP

Related Classes of actions.VuePanierAction

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.