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.ModifierVille;

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());
		}
	};
	
	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());
		}
	};
	public static final Message reveil = new Message(){
		public void trigger(Object caster) throws Exception {
			if (!(caster instanceof ModifierVille))
				return;
			ModifierVille vue = (ModifierVille)caster;
			
			if(vue.getVille_id() == 0)
			{
				vue.DisableModification();
			}
			else
			{
				vue.AbleModification();
			}
			
			Connection connection = Commander.getInstance().getConnectionBD();


		}
	};
	

	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());
		}
	};
	
	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();
		}
	};
}
