package controler.rapport;

import java.awt.Desktop;
import java.io.File;
import java.sql.Connection;
import java.sql.Date;
import java.util.List;

import rapport.RapportCheckout;
import view.vueRapportArriveeDepart.VueRapportArriveeDepart;

import commander.Commander;

import controler.Message;
import database.crud.ChambreCrud;
import database.crud.ReservationCrudGeneral;
import database.dataset.Chambre;
import database.dataset.Reservation;

public class ControlerRapportArriveDepart {
	public static final Message reveil = new Message(){
		public void trigger(Object caster) throws Exception {
			if (!(caster instanceof VueRapportArriveeDepart))
				return;
			VueRapportArriveeDepart vue = (VueRapportArriveeDepart)caster;
			Connection connection = Commander.getInstance().getConnectionBD();

			ChambreCrud chambreCrud = new ChambreCrud(connection);
			ReservationCrudGeneral reservationCrud = new ReservationCrudGeneral(connection);
			
			List<Reservation> reservation = reservationCrud.readAllEnding(vue.getSelectedInOut(), vue.getDate().toString());
			
			vue.tableClear();
			for (Reservation r : reservation){
				//System.out.println(r.toString());
				Chambre chambre = chambreCrud.readById(r.getChambre_fk_id());
				vue.addRow(chambre.getChambre_numero(), "", r.getReservation_fin().toString());
			}
		}
	};
	
	public static final Message imprimer = new Message(){
		public void trigger(Object caster) throws Exception {
			if (!(caster instanceof VueRapportArriveeDepart))
				return;
			VueRapportArriveeDepart vue = (VueRapportArriveeDepart)caster;
			Connection connection = Commander.getInstance().getConnectionBD();

			ChambreCrud chambreCrud = new ChambreCrud(connection);
			ReservationCrudGeneral reservationCrud = new ReservationCrudGeneral(connection);
			
			List<Reservation> reservation = reservationCrud.readAllEnding(vue.getSelectedInOut(), vue.getDate().toString());

			RapportCheckout rapport = new RapportCheckout();
			rapport.setDateCheckout(Date.valueOf(vue.getDate()));
			for (Reservation r : reservation){
				Chambre chambre = chambreCrud.readById(r.getChambre_fk_id());
				rapport.add(chambre.getChambre_numero(), r.getReservation_fin(), "", "");
			}
			String filename = "checkout_"+new Date(System.currentTimeMillis()).toString()+".pdf";
			rapport.generate();
			rapport.saveas(filename);
			File file = new File(filename);
			Desktop.getDesktop().open(file);
		}
	};
}
