Package metier.reservations

Source Code of metier.reservations.Demande

package metier.reservations;

import java.sql.SQLException;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;

import metier.GestionConnection;

import data.abonne.Abonne;
import data.programmation.Piece;
import data.reservation.Personne;
import data.reservation.Reservation;


import factories.*;

/**
* Classe métier du cas d'utilisation 1 : Demande de réservation.
* Cette classe permet donc d'effectuer toutes les opérations associés au cas d'utilisation
* de demande de réservation tels que :
* <ul>
* <li> Récupérer la liste des piéces, des zones, des séances d'une piéce ..
* <li> Récupérer les informations sur les zones, les piéces, les séances ...
* <li> Récupérer et créer des réservations, la récupération de nouvels identiants de réservation
* <li> Obtenir des informations sur les abonnés, leur participation à une piéce ou non, la validité de leur abonnement ...
* <li> Calculer le prix d'une réservation
* <li> ...
* </ul>
*
*
* @author Ait Elhaj Brahim
*
*/
public class Demande {
  /* Gestion de la connection à la base */
  private GestionConnection gc;
 
 

  /**
   * Création de l'objet métier <code>Demande</code>.
   *
   */
  public Demande(){
     gc = new GestionConnection();
  }
 
  /**
   * Renvoie le prix d'une réservation dans une piéce particuliére.
   *
   * Le prix consiste en la somme de prix pour chacune des personnes
   * constituant la réservation. Les prix sont définies pour une zone
   * et une catégorie de personne pour chaque piéce. 
   *
   *
   * @param r La représentation
   * @param p La piéce associée à la représentation
   * @return Le prix calculé pour cette représentation
   */
  public double calculerPrix(Reservation r,Piece p){
    double prix = 0;
    Iterator personnes = r.getLesPersonnes().iterator();
   
    //L'abonné est compté parmi les personnes
    while(personnes.hasNext()){
      Personne pers = (Personne)personnes.next();
      //System.out.println("[DEMANDE] : "+pers.getCategorie().toString());
      prix+= p.getTarif(pers.getCategorie().toString(), r.getIdZone());     
      //System.out.println("Prix : "+p.getTarif(pers.getCategorie().toString(), r.getIdZone()));
    }
   
   
    return prix;
  }
 
 
 

  /**
   * Renvoie les piéces se déroulant dans une période précise.
   *
   * @param date La date pour laquelle on veut obtenir les piéces se jouant dans le théatre
   * @return Une liste de piéces.
   */
  public Collection getLesPieces(java.util.Date date){
   
    Collection pieces = null;
   
   
    /* Utilisation de la fabrique de pièce */
    FabPiece fp = FabPiece.getInstance();
    try{
      fp.setConnection(gc.getConnection());
      pieces =  fp.getLesPieces(new java.sql.Date(date.getTime()));
    }catch(SQLException se){     
      se.printStackTrace();
    }
    return pieces;     
  }
 
 
 
 
 
  /**
   * Renvoie la liste des zones existantes dans le théatre.
   *
   * @return La liste des zones du théatre
   */
  public Collection getZones(){
    /* Utilisation de la fabrique de théatre */
    FabTheatre ft = FabTheatre.getInstance();
    Collection listZones = null ;
    try{
      ft.setConnection(gc.getConnection());
      listZones = ft.getZones();
    }catch(SQLException se){
      se.printStackTrace();
    }
    return listZones;
  }
 
 
 
 
 
 
 
  /**
   * Permet de récupérer un objet <code>Abonne</code> associé à un identifiant d'abonné.
   *
   *
   * @param idAbonne L'identifiant de l'abonné
   * @return L'obet <code>Abonne</code> ou null si l'identifiant n'est associé à aucun abonné.
   */
  public Abonne abonneExiste(String idAbonne){
    FabAbonne fa = FabAbonne.getInstance();
    Abonne a = null;
    try{
      fa.setConnection(gc.getConnection());
      a = fa.rechercher(idAbonne);     
    }catch(SQLException se){
      se.printStackTrace();
    }
    return a;
  }
 
 
 
 
 
  /**
   * Indique si l'abonnement d'un abonné est valide à une date donnée.
   *
   * @param a L'abonné
   * @param d La date courante
   * @return true si l'abonnement de l'abonné est valide pour la date <b>d</b>
   */
  public boolean abonnementValide(Abonne a, Date d){
    return a.getValiditeDebut().getTime() <= d.getTime() &&
      a.getValiditeFin().getTime() >= d.getTime();   
   
  }
 
 
 
 
  /**
   * Indique si un abonné a déja réservé pour une piéce.
   *
   *
   * @param idAbonne L'identifiant de l'abonné
   * @param idPiece L'identifiant de la piéce.
   * @return true si l'abonné a déja réservé pour cette piéce
   */
  public boolean aReserve(String idAbonne, String idPiece) {
    FabAbonne fa = FabAbonne.getInstance();
    Abonne a = null;
    try{
      fa.setConnection(gc.getConnection());
      String idReservation = fa.aReserve(idAbonne, idPiece);
      //System.out.println("idDejaReserve = "+idReservation);
      return idReservation!=null;
     
    }catch(SQLException se){
      se.printStackTrace();
    }
    return true;
  }
 
 
  /**
   * Fournit un identifiant de réservation disponible pouvant être affecté à une nouvelle
   * réservation
   *
   * @return un nouvelle identifiant de réservation
   */
  public String getNewId(String idSeance){
    GestionConnection gcDemande = new GestionConnection();
    /* Utilisation de la fabrique de théatre */
    FabReservation fr = FabReservation.getInstance();
    try{     
      fr.setConnection(gcDemande.getConnection());
      //On récupère l'id de la nouvelle réservation
      return fr.getNewId(idSeance);         
     
    }catch(SQLException se){
      se.printStackTrace();
    }
    return null;
   
  }
 
 
 
  /**
   * Crée une nouvelle réservation et indique le bon déourlement de l'opération
   *
   * @param r La réservation à créer
   * @return true si la création s'est bien déroulée, false sinon
   */
  public boolean creerReservation(Reservation r){
    GestionConnection gcDemande = new GestionConnection();
    /* Utilisation de la fabrique de théatre */
    FabReservation fr = FabReservation.getInstance();
   
    try{     
      fr.setConnection(gcDemande.getConnection());
      //On récupère l'id de la nouvelle réservation
      //String idNouvelleReservation = fr.getNewId(r.getIdSeance());
      //On fixe l'id de la réservation
      //r.setIdReserv(idNouvelleReservation);
      fr.creerReservation(r);
      //On ferme la connection pour assurer le commit
      gcDemande.shutDown();
      return true;
    }catch(SQLException se){
      se.printStackTrace();
    }
    // La réservation n'a pas été crée
    return false;
  }
 
 
 
 
 
  /**
   * Renvoie le titre d'une piéce associée à un identifiant de séance
   *
   * @param idSeance L'identifiant de la séance
   * @return Le titre de la piéce
   */
  public String getTitrePiece(String idSeance){
    /* Utilisation de la fabrique de pièce */
    FabPiece fp = FabPiece.getInstance();
    String titrePiece = "";
    try{
      fp.setConnection(gc.getConnection());
       titrePiece = fp.getTitrePiece(idSeance);
    }catch(SQLException se){     
      se.printStackTrace();
    }
    return titrePiece;
  }
 
 
 
 
  /**
   * Indication du nombre de places libres disponibles pour une séance dans une zone
   * précise du théatre
   *
   *
   * @param idSeance L'identifiant de la séance
   * @param idZone L'identifiant de la zone
   * @return  Le nombre de places libres
   */
  public int getNbPlacesLibres(String idSeance, String idZone){
    /* Utilisation de la fabrique de théatre */
    FabTheatre ft = FabTheatre.getInstance();
    int nbPlacesLibres = 0;
    try{
      ft.setConnection(gc.getConnection());
      nbPlacesLibres = ft.getPlacesRestantes(idSeance, idZone);
    }catch(SQLException se){
      se.printStackTrace();
    }
    return nbPlacesLibres;
  }
 
}
TOP

Related Classes of metier.reservations.Demande

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.