package controller.console.administrateur;

import java.util.InputMismatchException;
import java.util.Scanner;

import model.list.HandlerUtilisateurs;

import controller.Database;

import view.console.administrateur.Utilisateur_Gestion;

public class Utilisateur_GestionControle {
	private HandlerUtilisateurs hUtil;
	private Scanner sc;
	private int input;
	
	public Utilisateur_GestionControle(Database d) {
		this.hUtil = d.getUtilisateurs();
		boolean done = false;
		sc = new Scanner(System.in);
		
		while (!done) {
			try {
				Utilisateur_Gestion.trigger();
				this.askInput();
			} catch (InputMismatchException e) {
				sc.nextLine();
				Utilisateur_Gestion.fail();
			}
			if (input == 0) { done = true;
			} else if (input == 1) {
				Utilisateur_CreationControle ucc = new Utilisateur_CreationControle(d.getListeModules());
				ucc.addToDatabase(this.hUtil);
			} else if (input == 2) {
				Utilisateur_ModificationControle umc = new Utilisateur_ModificationControle(this.hUtil.getListe(), d.getListeModules());
				umc.updateDatabase();
			} else {
				Utilisateur_SuppressionControle usc = new Utilisateur_SuppressionControle(this.hUtil.getListe());
				usc.updateDatabase();
			}
		}
		
	}
	
	private void askInput() throws InputMismatchException {
		input = sc.nextInt();
		sc.nextLine();
		if ((input < 0) || (input > 3)) {
			throw new InputMismatchException();
		}
	}
	
	public void updateDatabase(Database d) {
		this.hUtil.updateDatabase();
		Utilisateur_Gestion.updateDatabase();
	}
}
