package controler.ville;

import java.sql.Connection;

import language.Language;
import view.vueAjoutVille.AjoutVille;
import view.vueAjoutVille.ModifierVille;

import commander.Commander;

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

public class ControlerAjoutVille {

	public static final Message reveil = new Message(){
		public void trigger(Object caster) throws Exception {
			if (!(caster instanceof AjoutVille))
				return;
			AjoutVille vue = (AjoutVille)caster;
			
		}
	};
	
	public static final Message ajouter = new Message(){
		public void trigger(Object caster) throws Exception {
			if (!(caster instanceof AjoutVille))
				return;
			AjoutVille vue = (AjoutVille)caster;
			
			//setbg red here
			if (vue.getTxtPays().equals(""))
				return;
			if (vue.getTxtProvince().equals(""))
				return;
			if (vue.getTxtVille().equals(""))
				return;
			
			Connection connection = Commander.getInstance().getConnectionBD();
			
			String nom = vue.getTxtVille();
			String province = vue.getTxtProvince();
			String pays = vue.getTxtPays();
			
			VilleCrud villeCrud = new VilleCrud(connection);
			
			connection.setAutoCommit(false);
			Ville ville = new Ville(villeCrud.getNewSequenceId(), 
				                   nom, 
				                   province, 
				                   pays);
			villeCrud.create(ville);
			connection.commit();
			connection.setAutoCommit(true);
			
			//JOptionPane.showMessageDialog(new JFrame(), "Ville ("+nom+") ajouté avec succès");
			//à la place nous transporterons l'utilisateur vers modifier ville où il pourra corriger
			Language lang = Commander.getInstance().getLanguage();
			ModifierVille vueDest = (ModifierVille) Commander.getInstance().getVuePrincipale().setSelectedTab(lang.getPrincipaleReception(), lang.getReceptionVilleModifier());
			vueDest.setVille_id(ville.getville_p_id());
			vueDest.addDataToFields(nom, 
					                province, 
					                pays);
			vueDest.AbleModification();
			
			vue.clearInfo();
		}
	};
	
	public static final Message annuler = new Message(){
		public void trigger(Object caster) throws Exception {
			if (!(caster instanceof AjoutVille))
				return;
			AjoutVille vue = (AjoutVille)caster;
			vue.clearInfo();
		}
	};
}
