package controler.ville;

import java.sql.Connection;
import java.sql.SQLException;

import language.Language;
import view.vueAjoutClient.AjoutClient;
import view.vueAjoutClient.ModifierClient;
import view.vueAjoutVille.AjoutVille;
import view.vueAjoutVille.ModifierVille;
import view.vueGestionArticle.VueGestionAjouterArticle;
import view.vueGestionArticle.VueGestionModifierArticle;

import commander.Commander;

import controler.Message;
import database.crud.VilleCrud;
import database.dataset.Ville;

public class ControlerModifierVille {
	public static final Message utiliserPourNouveauClient = new Message(){
		@Override
		public void trigger(Object caster) throws SQLException, Exception {
			if (!(caster instanceof ModifierVille))
				return;
			ModifierVille vue = (ModifierVille)caster;
			
			Language lang = Commander.getInstance().getLanguage();
			AjoutClient vueDest = (AjoutClient)Commander.getInstance().getVuePrincipale().setSelectedTab(lang.getPrincipaleReception(), lang.getReceptionClientAjouter());
			Connection connection = Commander.getInstance().getConnectionBD();
			
			VilleCrud villeCrud = new VilleCrud(connection);
			Ville ville = villeCrud.readById(vue.getVille_id());
			
			vueDest.setVille_id(vue.getVille_id());
			vueDest.setVilleNom(ville.getVille_nom());
			
			vueDest.setEnabled(true);
		}
	};
	
	public static final Message utiliserPourModifierClient = new Message(){
		@Override
		public void trigger(Object caster) throws SQLException, Exception {
			if (!(caster instanceof ModifierVille))
				return;
			ModifierVille vue = (ModifierVille)caster;

			Language lang = Commander.getInstance().getLanguage();
			ModifierClient vueDest = (ModifierClient)Commander.getInstance().getVuePrincipale().setSelectedTab(lang.getPrincipaleReception(), lang.getReceptionClientModifier());
			Connection connection = Commander.getInstance().getConnectionBD();

			VilleCrud villeCrud = new VilleCrud(connection);
			Ville ville = villeCrud.readById(vue.getVille_id());
			
			vueDest.setVille_id(vue.getVille_id());
			vueDest.setVilleNom(ville.getVille_nom());
			
			vueDest.setEnabled(true);
		}
	};
	public static final Message reveil = new Message(){
		public void trigger(Object caster) throws Exception {
			if (!(caster instanceof ModifierVille))
				return;
			ModifierVille vue = (ModifierVille)caster;
			
			Connection connection = Commander.getInstance().getConnectionBD();

			if(vue.getVille_id() == 0)
			{
				vue.setEnabled(false);
			}
			else
			{
				vue.setEnabled(true);
			}
		}
	};
	

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

			//set bg red here
			if(vue.getTxtPays().equals(""))
				return;
			if(vue.getTxtProvince().equals(""))
				return;
			if(vue.getTxtVille().equals(""))
				return;
			if(vue.getVille_id() == 0)
				return;
			
			Connection connection = Commander.getInstance().getConnectionBD();

			VilleCrud villeCrud = new VilleCrud(connection);
			
			Ville ville = new Ville(vue.getVille_id(), 
					                vue.getTxtVille(), 
					                vue.getTxtProvince(), 
					                vue.getTxtPays());
			
			villeCrud.update(ville);
			
			ville = villeCrud.readById(vue.getVille_id());
			
			vue.setVille_id(vue.getVille_id());
			vue.addDataToFields(ville.getVille_nom(), ville.getVille_province(), ville.getVille_pays());
			
			Language lang = Commander.getInstance().getLanguage();
			Commander.getInstance().getVuePrincipale().setModifiedTab(lang.getPrincipaleReception(), lang.getReceptionVilleModifier(),false);
		}
	};
	
	public static final Message annuler = new Message(){
		public void trigger(Object caster) throws Exception {
			if (!(caster instanceof ModifierVille))
				return;
			ModifierVille vue = (ModifierVille)caster;

			vue.clearInfo();
			
			vue.setEnabled(false);
			
			Language lang = Commander.getInstance().getLanguage();
			Commander.getInstance().getVuePrincipale().setModifiedTab(lang.getPrincipaleReception(), lang.getReceptionVilleModifier(),false);
		}
	};
	
	public static final Message dataChanged = new Message(){
		public void trigger(Object caster) throws Exception {
			if (!(caster instanceof AjoutVille))
				return;
			
			Language lang = Commander.getInstance().getLanguage();
			Commander.getInstance().getVuePrincipale().setModifiedTab(lang.getPrincipaleReception(), lang.getReceptionVilleModifier(),true);
		}
	};
}
