package controler.facture;

import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.Date;
import java.sql.Time;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

import language.Language;
import view.vueFacture.VueFacture;
import commander.Commander;
import controler.Message;
import database.crud.ArticleCrud;
import database.crud.StatusChambreCrud;
import database.crud.reservation.ReservationCrud;
import database.crud.vente.VenteArticleCrud;
import database.crud.vente.VenteCrud;
import database.dataset.Article;
import database.dataset.Reservation;
import database.dataset.Status_chambre;
import database.dataset.Vente;
import database.dataset.Vente_article;

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

	public static final Message selectioner = new Message(){
		public void trigger(Object caster) throws Exception {
			if (!(caster instanceof VueFacture))
				return;
			//VueFacture vue = (VueFacture)caster;

			Language lang = Commander.getInstance().getLanguage();
			Commander.getInstance().getVuePrincipale().setSelectedTab(lang.getPrincipaleRecherche(), lang.getRechercheClient());
		}
	};
	

	public static final Message annuler = new Message(){
		public void trigger(Object caster) throws Exception {
			if (!(caster instanceof VueFacture))
				return;
			VueFacture vue = (VueFacture)caster;
			Connection connection = Commander.getInstance().getConnectionBD();
		}
	};
	
	
	public static final Message checkin = new Message(){
		public void trigger(Object caster) throws Exception {
			if (!(caster instanceof VueFacture))
				return;
			VueFacture vue = (VueFacture)caster;
			Connection connection = Commander.getInstance().getConnectionBD();
			ReservationCrud reservationCrud = new ReservationCrud(connection);
			
			int row= 0;
			for(int reservation_p_id : vue.getListReservationId()){
				if(vue.getCheckBoxValueAtTableReservation(row++)){
					reservationCrud.updateCheckInCheckOut(reservation_p_id, 3);
				}
			}
		}
	};
	

	public static final Message checkout = new Message(){
		public void trigger(Object caster) throws Exception {
			if (!(caster instanceof VueFacture))
				return;
			VueFacture vue = (VueFacture)caster;
			Connection connection = Commander.getInstance().getConnectionBD();
			ReservationCrud reservationCrud = new ReservationCrud(connection);
			
			int row= 0;
			for(int reservation_p_id : vue.getListReservationId()){
				if(vue.getCheckBoxValueAtTableReservation(row++)){
					reservationCrud.updateCheckInCheckOut(reservation_p_id, 4);
				}
			}
		}
	};
	

	public static final Message imprimer = new Message(){
		public void trigger(Object caster) throws Exception {
			if (!(caster instanceof VueFacture))
				return;
			VueFacture vue = (VueFacture)caster;

				Connection connection = Commander.getInstance().getConnectionBD();


		}
	};
	

	public static final Message paiement = new Message(){
		public void trigger(Object caster) throws Exception {
			if (!(caster instanceof VueFacture))
				return;
			VueFacture vue = (VueFacture)caster;

				Connection connection = Commander.getInstance().getConnectionBD();


		}
	};
	
	public static final Message enregistrer = new Message(){
		public void trigger(Object caster) throws Exception {
			if (!(caster instanceof VueFacture))
				return;
			VueFacture vue = (VueFacture)caster;

				Connection connection = Commander.getInstance().getConnectionBD();


		}
	};
	
	public static final Message creerVente = new Message(){
		public void trigger(Object caster) throws Exception {
			if (!(caster instanceof VueFacture))
				return;
			VueFacture vue = (VueFacture)caster;
			Connection connection = Commander.getInstance().getConnectionBD();
			
			VenteCrud venteCrud = new VenteCrud(connection);
			ArticleCrud articleCrud = new ArticleCrud(connection);
			VenteArticleCrud venteArticleCrud = new VenteArticleCrud(connection);
			
			Vente_article vente_article = new Vente_article(venteCrud.getNewSequenceId(), new Time(System.currentTimeMillis()), new Date(System.currentTimeMillis()), new BigDecimal(0), vue.getFacture_id(), 20, 0);
			
			List<Article> articleDepanneur = articleCrud.readByFk_categorie(3);
			List<Article> articleRestaurant = articleCrud.readByFk_categorie(4);
			List<Article> articleAdministration = articleCrud.readByFk_categorie(5);
			
			List<Article> article = new ArrayList<Article>();
			
			for(int i=0;i<articleDepanneur.size();i++)
			{
				article.add(articleDepanneur.get(i));
			}
			
			for(int i=0;i<articleRestaurant.size();i++)
			{
				article.add(articleRestaurant.get(i));
			}
			
			for(int i=0;i<articleAdministration.size();i++)
			{
				article.add(articleAdministration.get(i));
			}
			
			venteArticleCrud.create(vente_article);
			vue.addRowTableVenteWithArticle(new Date(System.currentTimeMillis()).toString(), article, 0);
			vue.add_VenteId(vente_article.getVente_p_id());

		}
	};
}
