

import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.ResourceBundle;

import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.Node;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;

public class SampleController implements Initializable {
	@FXML private Label comida1;
	@FXML private Label comida2;
	@FXML private Label comida3;
	@FXML private Label comida4;
	@FXML private Label comida5;
	@FXML private Label bebida1;
	@FXML private Label bebida2;
	@FXML private Label bebida3;
	@FXML private Label bebida4;
	@FXML private Label bebida5;
	@FXML private Label postre1;
	@FXML private Label postre2;
	@FXML private Label postre3;
	@FXML private Label postre4;
	@FXML private Label postre5;
	@FXML private Label total;
	@FXML private Button anadircom1;
	@FXML private Button anadircom2;
	@FXML private Button anadircom3;
	@FXML private Button anadircom4;
	@FXML private Button anadircom5;
	@FXML private Button anadirbeb1;
	@FXML private Button anadirbeb2;
	@FXML private Button anadirbeb3;
	@FXML private Button anadirbeb4;
	@FXML private Button anadirbeb5;
	@FXML private Button anadirpost1;
	@FXML private Button anadirpost2;
	@FXML private Button anadirpost3;
	@FXML private Button anadirpost4;
	@FXML private Button anadirpost5;
	@FXML private ImageView icomida;
	@FXML private ImageView ibebida;
	@FXML private ImageView ipostre;
	
	
	Comida com1 = new Comida("Pollo Asado con Papas Fritas",1000);
	Comida com2 = new Comida("Completo",1200);
	Comida com3 = new Comida("Sushi", 3000);
	Comida com4 = new Comida("Pizza", 6600);
	Comida com5 = new Comida("Hamburguesa", 5100);	
	
	Comida beb1 = new Comida("Coca-Cola",1400);
	Comida beb2 = new Comida("Sprite",1200);
	Comida beb3 = new Comida("Fanta", 1200);
	Comida beb4 = new Comida("Pepsi", 1300);
	Comida beb5 = new Comida("Kem", 1200);	
	
	Comida post1 = new Comida("Flan",3000);
	Comida post2 = new Comida("Jalea",2200);
	Comida post3 = new Comida("Pie de limon", 1000);
	Comida post4 = new Comida("Panqueque", 1000);
	Comida post5 = new Comida("Fruta", 700);	
	
	static Cliente cli1 = Cliente.getInstance(1);
	static Cliente cli2 = Cliente.getInstance(2);
	static Cliente cli3 = Cliente.getInstance(3);
	static Cliente cli4 = Cliente.getInstance(4);
	
	static Cliente clienteActivo = cli1;
	
	public static void setClienteActivo(int numCliente) {
		switch (numCliente) {
		case 1:
			clienteActivo = cli1;
			
			break;
		case 2:
			clienteActivo = cli2;
			
			break;
		case 3:
			clienteActivo = cli3;
			
			break;
		case 4:
			clienteActivo = cli4;
			break;
		}
	}
	
	public static Cliente getClienteActivo() {
		return clienteActivo;
	}
	
	
	public void addTotal(int precio) {
		clienteActivo.getPedido().addTotal(precio);
	}
	
	public void updateTotal() {
		this.total.setText("$"+ clienteActivo.getPedido().getTotal());
	}
	
	public void updateClientView(int numCliente) {
		setClienteActivo(numCliente);
		updateTotal();
	}
	
	/**

	 * Este metodo anade la comida especificada al carrito.

	 */
	
	public void onAnadircom1Clicked() {
		addTotal(com1.getPrecio());
		clienteActivo.getPedido().addToCarrito(com1);
		updateTotal();
	}
	
	public void onAnadircom2Clicked() {
		addTotal(com2.getPrecio());
		clienteActivo.getPedido().addToCarrito(com2);
		updateTotal();
	}
	
	public void onAnadircom3Clicked() {
		addTotal(com3.getPrecio());
		clienteActivo.getPedido().addToCarrito(com3);
		updateTotal();
	}
	
	public void onAnadircom4Clicked() {
		addTotal(com4.getPrecio());
		clienteActivo.getPedido().addToCarrito(com4);
		updateTotal();
	}
	
	public void onAnadircom5Clicked() {
		addTotal(com5.getPrecio());
		clienteActivo.getPedido().addToCarrito(com5);
		updateTotal();
	}
	
	/**

	 * Este metodo anade la bebida especificada al carrito.

	 */
	
	public void onAnadirbeb1Clicked() {
		addTotal(beb1.getPrecio());
		clienteActivo.getPedido().addToCarrito(beb1);
		updateTotal();
	}
	
	public void onAnadirbeb2Clicked() {
		addTotal(beb2.getPrecio());
		clienteActivo.getPedido().addToCarrito(beb2);
		updateTotal();
	}
	
	public void onAnadirbeb3Clicked() {
		addTotal(beb3.getPrecio());
		clienteActivo.getPedido().addToCarrito(beb3);
		updateTotal();
	}
	
	public void onAnadirbeb4Clicked() {
		addTotal(beb4.getPrecio());
		clienteActivo.getPedido().addToCarrito(beb4);
		updateTotal();
	}
	
	public void onAnadirbeb5Clicked() {
		addTotal(beb5.getPrecio());
		clienteActivo.getPedido().addToCarrito(beb5);
		updateTotal();
	}
	
	/**

	 * Este metodo anade el postre especificado al carrito.

	 */
	
	public void onAnadirpost1Clicked() {
		addTotal(post1.getPrecio());
		clienteActivo.getPedido().addToCarrito(post2);
		updateTotal();
	}
	
	public void onAnadirpost2Clicked() {
		addTotal(post2.getPrecio());
		clienteActivo.getPedido().addToCarrito(post2);
		updateTotal();
	}
	
	public void onAnadirpost3Clicked() {
		addTotal(post3.getPrecio());
		clienteActivo.getPedido().addToCarrito(post3);
		updateTotal();
	}
	
	public void onAnadirpost4Clicked() {
		addTotal(post4.getPrecio());
		clienteActivo.getPedido().addToCarrito(post4);
		updateTotal();
	}
	
	public void onAnadirpost5Clicked() {
		addTotal(post5.getPrecio());
		clienteActivo.getPedido().addToCarrito(post5);
		updateTotal();
	}
	
	/**

	 * Este metodo muestra una imagen de la comida seleccionada.

	 */
	
	public void mostrarimg1() {
		
        File file = new File("1.jpg");
        Image image = new Image(file.toURI().toString());
        icomida.setImage(image);
    }
	
	public void mostrarimg2() {
		
        File file = new File("2.jpg");
        Image image = new Image(file.toURI().toString());
        icomida.setImage(image);
    }
	
	public void mostrarimg3() {
		
        File file = new File("3.jpg");
        Image image = new Image(file.toURI().toString());
        icomida.setImage(image);
    }
	
	public void mostrarimg4() {
		
        File file = new File("4.jpg");
        Image image = new Image(file.toURI().toString());
        icomida.setImage(image);
    }
	
	public void mostrarimg5() {
		
        File file = new File("5.jpg");
        Image image = new Image(file.toURI().toString());
        icomida.setImage(image);
    }
	
	/**

	 * Este metodo muestra una imagen de la bebida seleccionada.

	 */
	
	public void mostrarimgb1() {
		
        File file = new File("b1.jpg");
        Image image = new Image(file.toURI().toString());
        ibebida.setImage(image);
    }
	
	public void mostrarimgb2() {

        File file = new File("b2.jpg");
        Image image = new Image(file.toURI().toString());
        ibebida.setImage(image);
    }
	
	public void mostrarimgb3() {
		
        File file = new File("b3.jpg");
        Image image = new Image(file.toURI().toString());
        ibebida.setImage(image);
    }
	
	public void mostrarimgb4() {
	
        File file = new File("b4.jpg");
        Image image = new Image(file.toURI().toString());
        ibebida.setImage(image);
    }
	
	public void mostrarimgb5() {
		
        File file = new File("b5.jpg");
        Image image = new Image(file.toURI().toString());
        ibebida.setImage(image);
    }
	
	/**

	 * Este metodo muestra una imagen del postre seleccionado.

	 */
	
	public void mostrarimgp1() {
		
        File file = new File("p1.jpg");
        Image image = new Image(file.toURI().toString());
        ipostre.setImage(image);
    }
	
	public void mostrarimgp2() {
		System.out.println("aqui");
        File file = new File("p2.jpg");
        Image image = new Image(file.toURI().toString());
        ipostre.setImage(image);
    }
	
	public void mostrarimgp3() {
		
        File file = new File("p3.jpg");
        Image image = new Image(file.toURI().toString());
        ipostre.setImage(image);
    }
	
	public void mostrarimgp4() {
		
        File file = new File("p4.jpg");
        Image image = new Image(file.toURI().toString());
        ipostre.setImage(image);
    }
	
	public void mostrarimgp5() {
	
        File file = new File("p5.jpg");
        Image image = new Image(file.toURI().toString());
        ipostre.setImage(image);
    }
	
	/**

	 * Este metodo actualiza a la vista de la mesa seleccionada

	 */
	
	public void onMesa1Clicked() {
		updateClientView(1);
		
	}
	
	public void onMesa2Clicked() {
		updateClientView(2);
		
	}
	
	public void onMesa3Clicked() {
		updateClientView(3);
	}
	
	public void onMesa4Clicked() {
		updateClientView(4);
	}
	
	public void changeScreenToListofProducts(ActionEvent event) throws IOException {
		Parent PedidoClienteParent = FXMLLoader.load(getClass().getResource("PedidoCliente.fxml"));
		Scene PedidoClienteScene = new Scene(PedidoClienteParent);
		
		Stage window = (Stage)(((Node) event.getSource()).getScene().getWindow());
		window.setScene(PedidoClienteScene);
		window.show();
	}

	public void selectCocinero(ActionEvent event) throws IOException {
		Parent PedidoClienteParent = FXMLLoader.load(getClass().getResource("Cocinero.fxml"));
		Scene PedidoClienteScene = new Scene(PedidoClienteParent);
		
		Stage window = (Stage)(((Node) event.getSource()).getScene().getWindow());
		window.setScene(PedidoClienteScene);
		window.show();
	}
	
	@Override
	public void initialize(URL arg0, ResourceBundle arg1) {
		comida1.setText(com1.getNombre()+"    $"+com1.getPrecio());
		comida2.setText(com2.getNombre()+"    $"+com2.getPrecio());
		comida3.setText(com3.getNombre()+"    $"+com3.getPrecio());
		comida4.setText(com4.getNombre()+"    $"+com4.getPrecio());
		comida5.setText(com5.getNombre()+"    $"+com5.getPrecio());
		bebida1.setText(beb1.getNombre()+"    $"+beb1.getPrecio());
		bebida2.setText(beb2.getNombre()+"    $"+beb2.getPrecio());
		bebida3.setText(beb3.getNombre()+"    $"+beb3.getPrecio());
		bebida4.setText(beb4.getNombre()+"    $"+beb4.getPrecio());
		bebida5.setText(beb5.getNombre()+"    $"+beb5.getPrecio());
		postre1.setText(post1.getNombre()+"    $"+post1.getPrecio());
		postre2.setText(post2.getNombre()+"    $"+post2.getPrecio());
		postre3.setText(post3.getNombre()+"    $"+post3.getPrecio());
		postre4.setText(post4.getNombre()+"    $"+post4.getPrecio());
		postre5.setText(post5.getNombre()+"    $"+post5.getPrecio());
		this.total.setText("$"+clienteActivo.getPedido().getTotal());
	
	}

}
