package com.mycompany.sigge;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import javafx.geometry.Pos;
import java.io.BufferedReader;
import javafx.scene.layout.*;
import javafx.geometry.Insets;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class LoginClass extends Application {

	private App app;  

	private TextField urlField;
	private TextField userField;
	private PasswordField passwordField;



	public LoginClass(App app) {
		this.app = app;
	}

	@Override
	public void start(Stage primaryStage) {
		GridPane gp = new GridPane();
		gp.setPadding(new Insets(30)); 
		gp.setHgap(10); 
		gp.setVgap(10); 

		Label urlLabel = new Label("Url");
		Label userLabel = new Label("Usuario");
		Label passLabel = new Label("Contraseña");
		

		urlField = new TextField();
		userField = new TextField();
		userField.setPromptText("Ingrese el usuario");

		passwordField = new PasswordField();
		passwordField.setPromptText("Ingrese la contraseña");


		Button loginButton = new Button("Iniciar sesión");

		loginButton.setOnAction(e -> {
			String url = urlField.getText();
			String username = userField.getText();
			String password = passwordField.getText();
			System.out.println("Usuario: " + username + ", Contraseña: " + password);
			consultUrl(url,username, password);  
		});



		gp.add(urlLabel, 0, 0); 		
		gp.add(urlField, 1, 0); 
		gp.add(userLabel,0,1);
		gp.add(userField,1,1);
		gp.add(passLabel,0,2);
		gp.add(passwordField,1,2);
		gp.add(loginButton,1,3); 

		VBox layout = new VBox(10, gp);

		layout.setAlignment(Pos.CENTER);

		Scene scene = new Scene(layout, 500, 400);
		primaryStage.setTitle("Inicio de sesión");
		primaryStage.setScene(scene);
		primaryStage.show();
	}

	private void consultUrl(String urlLog , String user, String pass) {
		try {
			String urlString = urlLog + "?u=" + user + "&p=" + pass;
			URL url = new URL(urlString);
			HttpURLConnection connection = (HttpURLConnection) url.openConnection();
			connection.setRequestMethod("GET");

			BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
			String inputLine;
			StringBuilder response = new StringBuilder();

			while ((inputLine = in.readLine()) != null) {
				response.append(inputLine);
			}
			in.close();

			String jsonResponse = response.toString();
			String token = jsonResponse.split("\"token\":\"")[1].split("\"")[0];

			System.out.println("Token recibido: " + token);


			AppConfig config = new AppConfig(urlLog,token);
			ConfigManager.saveConfig(config);


			app.loginSuccessful(token);  

			Stage loginStage = (Stage) userField.getScene().getWindow();
			loginStage.close();

		} catch (IOException e) {
			e.printStackTrace();  
		}
	}
}
