package gui.vues.annulationvalidation;
import gui.models.CurrentDateModel;
import gui.vues.NtpPanel;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Date;
import java.util.ArrayList;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import metier.Common;
import metier.reservations.Demande;
import metier.reservations.AnnulationValidation;
import misc.GU;
import misc.Utils;
import data.abonne.Abonne;
import data.programmation.Piece;
import data.programmation.Representation;
import data.reservation.Reservation;
/**
* Panel utilisé pour l'annulation ET la validation.
* Il permet d'afficher les informations sur une réservation et de la valider ou de l'annuler.
*
* @author Ait Elhaj Brahim
*
*/
public class InfoReservation extends NtpPanel implements ActionListener {
private JLabel message = new JLabel("Accepter : ");
JButton ok = new JButton("Oui");
JButton non = new JButton("Non");
JButton arret = new JButton("Arrêter");
//JButton quitter = new JButton("Quitter");
private boolean annulation;
private CurrentDateModel cdm;
private Reservation res;
/**
* Construit un objet <code>InfoReservation</code> pour annuler ou valider une réservation.
*
* @param owner Le <code>JDialog</code> parent
* @param cdm Le modèle de Date
* @param annulation booléen pour indiquer si il s'agit d'une annulation ou d'une réservation
* @param res La réservation à annuler ou valider
* @param previous Le panel précédent
*/
public InfoReservation(JDialog owner,CurrentDateModel cdm,
boolean annulation,Reservation res,NtpPanel previous){
super(owner,previous);
this.annulation = annulation;
//this.p = p;
//this.a = a;
this.res = res;
this.cdm = cdm;
this.owner = owner;
owner.setTitle("Informations sur la réservation ");
this.setLayout(new GridLayout(0,1));
JPanel panelBas = new JPanel();
//panelBas.add(quitter);
panelBas.add(message);
panelBas.add(ok);
panelBas.add(non);
String msgSupp = "";
//Si la réservation est déja validée, on ne permet pas de valider ou annuler
java.util.Date d = (new AnnulationValidation()).reservationValidee(res.getIdReserv());
if(d != null){
Date dateConfirmation = new java.sql.Date(d.getTime());
msgSupp = "Réservation déja validée ";
ok.setEnabled(false);
non.setText("Retour");
}
if(annulation){
ok.setText("Annuler la réservation");
}else{
ok.setText("Valider la réservation");
}
String txt = GU.formatReservationToHtml(res, null,"Réservation "+res.getIdReserv(),msgSupp);
//Pout utilisation HTML voir ici : http://java.sun.com/docs/books/tutorial/uiswing/components/html.html
JLabel infos = new JLabel(txt,JLabel.CENTER);
//On regarde si la date limite n'est pas dépassé, si c'est le cas on ne permet plus
//rien et on affiche ANNULEE
/*Common c = new Common();
Date dateLimite = c.getDateConfirmation(res.getDateReserv());
if(cdm.getDate().after(dateLimite)){
ok.setEnabled(false);
}*/
this.add(infos);
this.add(panelBas);
ok.addActionListener(this);
non.addActionListener(this);
}
/**
* Gestion des évenements
*
* @param e L'évenement déclencheur (ex : Click sur un bouton ...)
*/
public void actionPerformed(ActionEvent e) {
Object o = e.getSource();
if(o == non){
//this.finishCase();
this.finishCaseWithoutMessage();
}else if(o == ok){
AnnulationValidation mr = new AnnulationValidation();
boolean confirmation = GU.confirm("Êtes vous sûr de vouloir "+
(annulation?"annuler":"valider")+" cette réservation ?");
if(annulation){
if(confirmation){
// Métier annuler
try{
mr.annulerReservation(res.getIdReserv());
GU.info("Réservation "+res.getIdReserv()+" annulée !");
//On revient au départ
this.finishCaseWithoutMessage();
}catch(Exception ex){
System.err.println(ex.getMessage());
}
}
}else{
if(confirmation){
//Métier valider
try{
mr.confirmerReservation(res.getIdReserv(),cdm.getDate());
GU.info("Réservation "+res.getIdReserv()+" validée !");
//On revient au départ
this.finishCaseWithoutMessage();
}catch(Exception ex){ //Gérer exception ici ?
System.err.println(ex.getMessage());
}
}
}
}
}
/**
*
*
*/
public void clear(){
message.setText("");
}
}