|
- /*
- * 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<Pelanggan> 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<TabelPelanggan> tbvPelanggan;
- @FXML
- private TableColumn<TabelPelanggan, Integer> tcNo;
- @FXML
- private TableColumn<TabelPelanggan, String> tcKode;
- @FXML
- private TableColumn<TabelPelanggan, String> tcNama;
- @FXML
- private TableColumn<TabelPelanggan, String> tcAlamat;
- @FXML
- private TableColumn<TabelPelanggan, String> tcNoTelp;
- @FXML
- private TableColumn<TabelPelanggan, String> tcUpline;
- final ObservableList<TabelPelanggan> 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<TabelPelanggan, Integer> 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.<DialogCariBarangController>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<Pelanggan> 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<Pelanggan> pelangganMemberObserver = new Observer<Pelanggan>() {
- @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<Pagination<Pelanggan>> daftarPelangganObserver = new Observer<Pagination<Pelanggan>>() {
- @Override
- public void onSubscribe(Disposable dspsbl) {
- }
-
- @Override
- public void onNext(Pagination<Pelanggan> 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() {
- }
- };
- }
|