/* * 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 id.amigogroup.posterminal.pencarian; import id.amigogroup.posterminal.FormUtamaController; import id.amigogroup.posterminal.api.AmigoPosRx; import id.amigogroup.posterminal.model.Pagination; import id.amigogroup.posterminal.model.Pelanggan; import id.amigogroup.posterminal.util.AlertUtil; import io.reactivex.Observer; import io.reactivex.disposables.Disposable; import java.io.IOException; import java.net.HttpURLConnection; import java.net.URL; import java.util.List; import java.util.ResourceBundle; import java.util.logging.Level; import java.util.logging.Logger; import javafx.application.Platform; import javafx.beans.property.ReadOnlyObjectWrapper; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; import javafx.fxml.Initializable; import javafx.scene.Parent; import javafx.scene.control.Alert; import javafx.scene.control.ButtonBar.ButtonData; import javafx.scene.control.ButtonType; import javafx.scene.control.Dialog; import javafx.scene.control.RadioButton; import javafx.scene.control.TableColumn; import javafx.scene.control.TableView; import javafx.scene.control.TextField; import javafx.scene.control.ToggleGroup; import javafx.scene.control.cell.PropertyValueFactory; import javafx.scene.input.KeyCode; import javafx.scene.input.KeyEvent; import javafx.scene.layout.AnchorPane; import javafx.stage.Window; import retrofit2.HttpException; /** * FXML Controller class * * @author ronal */ public class DialogCariPelangganController extends Dialog implements Initializable { @FXML AnchorPane apContent; @FXML private TextField tfPencarian; @FXML private ToggleGroup tgTipe; @FXML private RadioButton rbMember; @FXML private RadioButton rbNama; @FXML private RadioButton rbNoTelpNoHp; @FXML private TableView tbvPelanggan; @FXML private TableColumn tcNo; @FXML private TableColumn tcKode; @FXML private TableColumn tcNama; @FXML private TableColumn tcAlamat; @FXML private TableColumn tcNoTelp; @FXML private TableColumn tcUpline; final ObservableList daftarTabelPelanggan = FXCollections.observableArrayList(); AmigoPosRx posRx = new AmigoPosRx(); private Pelanggan pelanggan = null; /** * Initializes the controller class. */ @Override public void initialize(URL url, ResourceBundle rb) { Platform.runLater(() -> { tfPencarian.requestFocus(); }); getDialogPane().getButtonTypes().add(new ButtonType("Tutup", ButtonData.CANCEL_CLOSE)); tcNo.setCellValueFactory((TableColumn.CellDataFeatures cell) -> { return new ReadOnlyObjectWrapper(tbvPelanggan.getItems().indexOf(cell.getValue()) + 1); }); tcKode.setCellValueFactory(new PropertyValueFactory<>("kode")); tcNama.setCellValueFactory(new PropertyValueFactory<>("nama")); tcAlamat.setCellValueFactory(new PropertyValueFactory<>("alamat")); tcNoTelp.setCellValueFactory(new PropertyValueFactory<>("noTelp")); tcUpline.setCellValueFactory(new PropertyValueFactory<>("upline")); tbvPelanggan.setItems(daftarTabelPelanggan); } public DialogCariPelangganController(/*FormPresensiController parent*/) { try { Window window = getDialogPane().getScene().getWindow(); window.setOnCloseRequest(event -> this.close()); FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxml/DialogCariPelanggan.fxml")); loader.setController(this); // DialogCariBarangController controller = loader.getController(); Parent root = loader.load(); getDialogPane().setContent(root); setTitle("Cari Pelanggan"); // getDialogPane().getButtonTypes().add(ButtonType.CANCEL); setResultConverter(buttonType -> { return pelanggan; }); } catch (IOException e) { Logger.getLogger(DialogCariBarangController.class .getName()).log(Level.SEVERE, null, e); } } public void fillTable() { // Button btnTambah = new Button("Tambah"); // btnTambah.setOnAction((event) -> { // setResult("Pak Coba"); // this.close(); // }); } public void updateTabelPelanggan(List daftarPelanggan) { daftarTabelPelanggan.clear(); for (Pelanggan pelanggan : daftarPelanggan) { daftarTabelPelanggan.add(new TabelPelanggan( pelanggan.getAlias(), pelanggan.getNama(), pelanggan.getAlamat(), pelanggan.getTelp() + " / " + pelanggan.getPonsel(), pelanggan.getUpline())); } } @FXML void tfPencarianOnKeyReleased(KeyEvent event) { if (((RadioButton) tgTipe.getSelectedToggle()) == rbMember && event.getCode() == KeyCode.ENTER) { System.out.println("MASUK DONGssssssss"); posRx.getPelangganByKodeMember(tfPencarian.getText()).subscribe(pelangganMemberObserver); } else if (((RadioButton) tgTipe.getSelectedToggle()) == rbNama && tfPencarian.getText().length() >= 3) { posRx.getPelangganByNama(tfPencarian.getText()).subscribe(daftarPelangganObserver); } else if (((RadioButton) tgTipe.getSelectedToggle()) == rbNoTelpNoHp && tfPencarian.getText().length() >= 3) { posRx.getPelangganByNoTelpNoHp(tfPencarian.getText()).subscribe(daftarPelangganObserver); } } public Observer pelangganMemberObserver = new Observer() { @Override public void onSubscribe(Disposable dspsbl) { } @Override public void onNext(Pelanggan p) { System.out.println("COBA AJA"); if (p != null) { pelanggan = p; close(); } } @Override public void onError(Throwable error) { if (error instanceof HttpException) { switch (((HttpException) error).code()) { case HttpURLConnection.HTTP_NOT_FOUND: Alert alert = AlertUtil.getAlertError( AlertUtil.ERROR_TIDAK_DITEMUKAN_TITLE, "Pelanggan dengan kode member tersebut tidak ditemukan."); alert.initOwner(apContent.getScene().getWindow()); alert.show(); } } else { Alert alert = AlertUtil.getAlertError( AlertUtil.ERROR_TIDAK_TERDUGA_TITLE, "Terjadi kesalahan yang tidak terduga."); alert.initOwner(apContent.getScene().getWindow()); alert.show(); Logger.getLogger(FormUtamaController.class.getName()).log(Level.SEVERE, null, error); } } @Override public void onComplete() { } }; public Observer> daftarPelangganObserver = new Observer>() { @Override public void onSubscribe(Disposable dspsbl) { } @Override public void onNext(Pagination p) { if (p != null) { updateTabelPelanggan(p.getData()); } } @Override public void onError(Throwable error) { if (error instanceof HttpException) { switch (((HttpException) error).code()) { case HttpURLConnection.HTTP_NOT_FOUND: Alert alert = AlertUtil.getAlertError( AlertUtil.ERROR_TIDAK_DITEMUKAN_TITLE, "Pelanggan dengan kode member tersebut tidak ditemukan."); alert.initOwner(apContent.getScene().getWindow()); alert.show(); } } else { Alert alert = AlertUtil.getAlertError( AlertUtil.ERROR_TIDAK_TERDUGA_TITLE, "Terjadi kesalahan yang tidak terduga."); alert.initOwner(apContent.getScene().getWindow()); alert.show(); Logger.getLogger(FormUtamaController.class.getName()).log(Level.SEVERE, null, error); } } @Override public void onComplete() { } }; }