sendsms.FXMLDocumentController.java Source code

Java tutorial

Introduction

Here is the source code for sendsms.FXMLDocumentController.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package sendsms;

import java.net.URL;
import java.util.ResourceBundle;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.control.Button;
import javafx.scene.control.ComboBox;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import com.plivo.helper.api.client.RestAPI;
import com.plivo.helper.api.response.message.Message;
import com.plivo.helper.api.response.message.MessageResponse;
import com.plivo.helper.exception.PlivoException;
import java.util.LinkedHashMap;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;

/**
 *
 * @author HP240
 */
public class FXMLDocumentController implements Initializable {

    String TAG = "CONTROLLER";
    WebService plivo = new WebService();

    @FXML
    ComboBox listSMS;
    @FXML
    TextArea textMessage;
    @FXML
    TextField textOrden;
    @FXML
    TextField textNumero;
    @FXML
    Button btnEnviar;

    String HEADER_MESSAGE = "Hola Tu pedido KEMIK: ";
    String DIRECCION_CONTENT = " tiene conflicto en la direccion, puedes llamar al 23310356 para corregirlo.";
    String TARJETA_CONTENT = " no se pudo realizar el pago por medio de tarjeta, puedes llamar al 23310356 para corregirlo.";
    String ESPERA_CONTENT = " se realizara con pago en deposito, puedes enviarnos tu boleta al correo info@kemik.gt o https://www.facebook.com/kemikgt";
    String PASAR_CONTENT = " ya esta listo para que pases a traerlo. Te esperamos de lunes a viernes de 8:00 a 18:00 horas.";
    String LLAMA_CONTENT = " esta en ruta, mensajeria se ha comunicado pero no ha obtenido respuesta. Puedes llamar al 55381001 / 02 para recibirlo.";
    String MONTOS_CONTENT = " por superar el monto de Q1000 te solicitamos realizar anticipo del 25% para procesar tu pedido, puedes comunicarte al 23310356";
    String NUMERO_CONTENT = "KEMIK: Para poder ayudarte necesitamos tu nmero de pedido o a nombre de quien lo realizaste.";
    String REVISION_CONTENT = "KEMIK: Puedes pasar a nuestras oficinas para revisin del producto.";
    String GESTION_CONTENT = "KEMIK: Estamos gestionando tu garanta para poder darle una pronta solucin.";

    String DIRECCION_HEADER = "Corregir direccin";
    String TARJETA_HEADER = "Error con tajeta";
    String ESPERA_HEADER = "Esperamos boleta";
    String PASAR_HEADER = "Pasar";
    String LLAMA_HEADER = "Conflicto en entrega";
    String MONTOS_HEADER = "Montos mayores";
    String NUMERO_HEADER = "Nmero";
    String REVISION_HEADER = "Revisin";
    String GESTION_HEADER = "En Proceso";

    @Override
    public void initialize(URL url, ResourceBundle rb) {
        ObservableList<String> items = FXCollections.observableArrayList("Corregir direccin", "Error con tarjeta",
                "Esperamos boleta", "Pasar", "Conflicto en entrega", "Montos mayores");
        listSMS.setItems(items);
        listSMS.valueProperty().addListener(onValueComboBoxChange());
        textMessage.setWrapText(true);
    }

    private ChangeListener onValueComboBoxChange() {
        return new ChangeListener<String>() {
            @Override
            public void changed(ObservableValue ov, String t, String newValue) {
                if (textOrden.getText().equals("")) {
                    Alert alert = new Alert(AlertType.WARNING);
                    alert.setHeaderText("Por favor complete el campo orden");
                    alert.showAndWait();
                } else if (newValue.equals("Corregir direccin")) {
                    setMessage(textOrden.getText() + DIRECCION_CONTENT);
                } else if (newValue.equals("Error con tarjeta")) {
                    setMessage(textOrden.getText() + TARJETA_CONTENT);
                } else if (newValue.equals("Esperamos boleta")) {
                    setMessage(textOrden.getText() + ESPERA_CONTENT);
                } else if (newValue.equals("Pasar")) {
                    setMessage(textOrden.getText() + PASAR_CONTENT);
                } else if (newValue.equals("Conflicto en entrega")) {
                    setMessage(textOrden.getText() + LLAMA_CONTENT);
                } else if (newValue.equals("Montos mayores")) {
                    setMessage(textOrden.getText() + MONTOS_CONTENT);
                }
            }
        };
    }

    private void setMessage(String message) {
        textMessage.setText(HEADER_MESSAGE + message);
    }

    @FXML
    public void handleEnviar() {
        if (isCorrectInput()) {
            sendMessage(textNumero.getText(), textMessage.getText());
        }
    }

    private boolean isCorrectInput() {
        String mensaje = "";
        if (textNumero.getText().toString().isEmpty()) {
            mensaje += "Rellene el campo nmero";
        } else {
            try {
                Integer.parseInt(textNumero.getText().toString());
            } catch (NumberFormatException numberFormatException) {
                mensaje += "El nmero no puede contener letras";
            }
        }
        if (textMessage.getText().toString().isEmpty()) {
            mensaje += "\n Complete el campo mensaje";
        }
        if (textMessage.getText().toString().length() > 160) {
            mensaje += "\n El mensaje no puede contener ms de 160 caracteres";
        }
        if (mensaje.isEmpty()) {
            return true;
        } else {
            Alert alert = new Alert(AlertType.WARNING);
            alert.setContentText(mensaje);
            alert.showAndWait();
            return false;
        }
    }

    private void sendMessage(String numero, String text) {
        NameValuePair telefono = new BasicNameValuePair("telefono", numero);
        NameValuePair texto = new BasicNameValuePair("texto", text);
        String response = plivo.post(plivo.URL_SMS, telefono, texto);
        parseResponse(response);
        /*Alert alert = new Alert(AlertType.INFORMATION);
        alert.setHeaderText("Mensaje enviado");
        alert.showAndWait();
        listSMS.setValue("MENSAJE");
        textMessage.setText("");
        textOrden.setText("");
        textNumero.setText("");*/
    }

    private void parseResponse(String response) {
        if (response == null) {
            Alert alert = new Alert(AlertType.ERROR);
            alert.setHeaderText("Por favor verifique su conexin a Internet");
            alert.showAndWait();
        } else {
            try {
                JSONParser jsonParser = new JSONParser();
                JSONObject jsonObject = (JSONObject) jsonParser.parse(response);
                Long status = (Long) jsonObject.get("status");
                if (status == 200) {
                    Alert alert = new Alert(AlertType.CONFIRMATION);
                    alert.setHeaderText("Mensaje enviado");
                    alert.showAndWait();
                    listSMS.setValue("MENSAJE");
                    textMessage.setText("");
                    textOrden.setText("");
                    textNumero.setText("");
                } else {
                    Alert alert = new Alert(AlertType.WARNING);
                    alert.setTitle("Error: " + status);
                    alert.setHeaderText("Cdigo: " + jsonObject.get("code"));
                    alert.setContentText((String) jsonObject.get("message"));
                    alert.showAndWait();
                }
            } catch (ParseException ex) {
                Logger.getLogger(FXMLDocumentController.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }
}