Koodin siivousta
Signed-off-by: laurimaaninka <lauri.maaninka@gmail.com>
This commit is contained in:
@@ -0,0 +1,280 @@
|
||||
package fi.lpam.gui;
|
||||
|
||||
import fi.lpam.dataluokat.Asiakas;
|
||||
|
||||
import fi.lpam.gui.elementit.IntegerSpinner;
|
||||
import fi.lpam.gui.elementit.TabPohja;
|
||||
import fi.lpam.Main;
|
||||
import javafx.geometry.Insets;
|
||||
import javafx.geometry.Pos;
|
||||
import javafx.geometry.Side;
|
||||
import javafx.scene.Scene;
|
||||
import javafx.scene.control.*;
|
||||
import javafx.scene.image.Image;
|
||||
import javafx.scene.layout.GridPane;
|
||||
import javafx.scene.layout.HBox;
|
||||
import javafx.scene.layout.VBox;
|
||||
import javafx.stage.Stage;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
|
||||
public class AsiakasIkkuna extends Stage {
|
||||
final Asiakas käsiteltäväAsiakas;
|
||||
final TextField tfNimi, tfOsoite, tfRuokarajoitteet, tfAvainTieto, tfLisätiedot, tfYhteyshenkilönNimi, tfLaskutusOsoite, tfYhteyshenkilönPuhelinnumero, tfYhteyshenkilönSähköposti;
|
||||
final IntegerSpinner tfMaanantai, tfTiistai, tfKeskiviikko, tfTorstai, tfPerjantai, tfLauantai, tfSunnuntai, tfSalaatit, tfPääruoat, tfJälkiruoat;
|
||||
|
||||
/**
|
||||
* Luo ikkunan jossa muokataan saatua asiakasta
|
||||
* @param käsiteltäväAsiakas voi olla uusi, tai vanha. Ikkuna ei välitä
|
||||
*/
|
||||
public AsiakasIkkuna(Asiakas käsiteltäväAsiakas) {
|
||||
this.käsiteltäväAsiakas = käsiteltäväAsiakas;
|
||||
if (käsiteltäväAsiakas.getNimi() != null) {
|
||||
this.setTitle(käsiteltäväAsiakas.getNimi());
|
||||
}
|
||||
else {
|
||||
this.setTitle("Uusi asiakas");
|
||||
}
|
||||
|
||||
TabPane tabPane = new TabPane();
|
||||
tabPane.setSide(Side.LEFT);
|
||||
int korkeus = 150;
|
||||
tabPane.setTabMinWidth(korkeus);
|
||||
tabPane.setTabMinWidth(korkeus);
|
||||
tabPane.setTabMinHeight(35);
|
||||
tabPane.setTabMaxHeight(35);
|
||||
tabPane.setOnKeyPressed(e -> {
|
||||
switch (e.getCode()) {
|
||||
case ENTER: tallenna(); break;
|
||||
case ESCAPE: close(); break;
|
||||
default: break;
|
||||
}});
|
||||
|
||||
Tab tabKuljetusTiedot, tabAsiakastiedot;
|
||||
tabKuljetusTiedot = new Tab("Kuljetustiedot");
|
||||
tabAsiakastiedot = new Tab("Asiakastiedot");
|
||||
tabPane.getTabs().addAll(tabKuljetusTiedot, tabAsiakastiedot);
|
||||
for (Tab tab : tabPane.getTabs()) {
|
||||
tab.setClosable(false);
|
||||
tab.setStyle("-fx-font-size: 18px; -fx-font-weight: bold; -fx-font-family: Open Sans");
|
||||
}
|
||||
|
||||
GridPane kuljetusTiedot = new GridPane();
|
||||
kuljetusTiedot.setPadding(new Insets(15));
|
||||
kuljetusTiedot.setHgap(10);
|
||||
kuljetusTiedot.setVgap(10);
|
||||
tabKuljetusTiedot.setContent(kuljetusTiedot);
|
||||
|
||||
kuljetusTiedot.addRow(kuljetusTiedot.getRowCount(), new Label("Määrät per kuljetus"));
|
||||
|
||||
Label salaatit = new Label("Salaatit");
|
||||
tfSalaatit = new IntegerSpinner();
|
||||
kuljetusTiedot.addRow(kuljetusTiedot.getRowCount(), salaatit, tfSalaatit);
|
||||
|
||||
Label pääruoat = new Label("Pääruoat");
|
||||
tfPääruoat = new IntegerSpinner();
|
||||
kuljetusTiedot.addRow(kuljetusTiedot.getRowCount(), pääruoat, tfPääruoat);
|
||||
|
||||
Label jälkiruoat = new Label("Jälkiruoat");
|
||||
tfJälkiruoat = new IntegerSpinner();
|
||||
kuljetusTiedot.addRow(kuljetusTiedot.getRowCount(), jälkiruoat, tfJälkiruoat);
|
||||
|
||||
kuljetusTiedot.addRow(kuljetusTiedot.getRowCount(), new Label("Kuljetukset per päivä"));
|
||||
|
||||
Label maanantai = new Label("Maanantai");
|
||||
tfMaanantai = new IntegerSpinner();
|
||||
kuljetusTiedot.addRow(kuljetusTiedot.getRowCount(), maanantai, tfMaanantai);
|
||||
|
||||
Label tiistai = new Label("Tiistai");
|
||||
tfTiistai = new IntegerSpinner();
|
||||
kuljetusTiedot.addRow(kuljetusTiedot.getRowCount(), tiistai, tfTiistai);
|
||||
|
||||
Label keskiviikko = new Label("Keskiviikko");
|
||||
tfKeskiviikko = new IntegerSpinner();
|
||||
kuljetusTiedot.addRow(kuljetusTiedot.getRowCount(), keskiviikko, tfKeskiviikko);
|
||||
|
||||
Label torstai = new Label("Torstai");
|
||||
tfTorstai = new IntegerSpinner();
|
||||
kuljetusTiedot.addRow(kuljetusTiedot.getRowCount(), torstai, tfTorstai);
|
||||
|
||||
Label perjantai = new Label("Perjantai");
|
||||
tfPerjantai = new IntegerSpinner();
|
||||
kuljetusTiedot.addRow(kuljetusTiedot.getRowCount(), perjantai, tfPerjantai);
|
||||
|
||||
tfLauantai = new IntegerSpinner();
|
||||
kuljetusTiedot.addRow(kuljetusTiedot.getRowCount(), new Label("Lauantai"), tfLauantai);
|
||||
|
||||
tfSunnuntai = new IntegerSpinner();
|
||||
kuljetusTiedot.addRow(kuljetusTiedot.getRowCount(), new Label("Sunnuntai"), tfSunnuntai);
|
||||
|
||||
Label ruokarajoitteet = new Label("Ruokarajoitteet");
|
||||
tfRuokarajoitteet = new TextField();
|
||||
kuljetusTiedot.addRow(kuljetusTiedot.getRowCount(), ruokarajoitteet, tfRuokarajoitteet);
|
||||
|
||||
Label avainTieto = new Label("Avaintieto");
|
||||
tfAvainTieto = new TextField();
|
||||
kuljetusTiedot.addRow(kuljetusTiedot.getRowCount(), avainTieto, tfAvainTieto);
|
||||
|
||||
Label lisätiedot = new Label("Kuljetuksen lisätiedot");
|
||||
tfLisätiedot = new TextField();
|
||||
tfLisätiedot.setPromptText("Näkyy raporteilla");
|
||||
kuljetusTiedot.addRow(kuljetusTiedot.getRowCount(), lisätiedot, tfLisätiedot);
|
||||
|
||||
|
||||
GridPane asiakasTiedot = new GridPane();
|
||||
asiakasTiedot.setPadding(new Insets(15));
|
||||
asiakasTiedot.setHgap(10);
|
||||
asiakasTiedot.setVgap(10);
|
||||
tabAsiakastiedot.setContent(asiakasTiedot);
|
||||
|
||||
Label nimi = new Label("Asiakkaan etu- ja sukunimi");
|
||||
nimi.setStyle("-fx-font-weight: bold;");
|
||||
tfNimi = new TextField();
|
||||
tfNimi.setPromptText("Pakollinen tieto");
|
||||
asiakasTiedot.addRow(asiakasTiedot.getRowCount(), nimi, tfNimi);
|
||||
|
||||
Label osoite = new Label("Osoite");
|
||||
osoite.setStyle("-fx-font-weight: bold;");
|
||||
tfOsoite = new TextField();
|
||||
tfOsoite.setPromptText("Pakollinen tieto");
|
||||
asiakasTiedot.addRow(asiakasTiedot.getRowCount(), osoite, tfOsoite);
|
||||
|
||||
Label yhteyshenkilönNimi = new Label("Yhteyshenkilön etu- ja sukunimi");
|
||||
tfYhteyshenkilönNimi = new TextField();
|
||||
asiakasTiedot.addRow(asiakasTiedot.getRowCount(), yhteyshenkilönNimi, tfYhteyshenkilönNimi);
|
||||
|
||||
Label laskutusOsoite = new Label("Laskutusosoite");
|
||||
tfLaskutusOsoite = new TextField();
|
||||
asiakasTiedot.addRow(asiakasTiedot.getRowCount(), laskutusOsoite, tfLaskutusOsoite);
|
||||
|
||||
Label yhteyshenkilönPuhelinnumero = new Label("Puhelinnumero");
|
||||
tfYhteyshenkilönPuhelinnumero = new TextField();
|
||||
asiakasTiedot.addRow(asiakasTiedot.getRowCount(), yhteyshenkilönPuhelinnumero, tfYhteyshenkilönPuhelinnumero);
|
||||
|
||||
Label yhteyshenkilönSähköposti = new Label("Sähköposti");
|
||||
tfYhteyshenkilönSähköposti = new TextField();
|
||||
asiakasTiedot.addRow(asiakasTiedot.getRowCount(), yhteyshenkilönSähköposti, tfYhteyshenkilönSähköposti);
|
||||
|
||||
HBox napit = new HBox();
|
||||
Button peruuta = new Button("Peruuta");
|
||||
peruuta.setFont(TabPohja.buttonFont);
|
||||
peruuta.setOnAction(_ -> this.close());
|
||||
Button tallenna = new Button("Tallenna");
|
||||
tallenna.setFont(TabPohja.buttonFont);
|
||||
tallenna.setOnAction(_ -> tallenna());
|
||||
napit.getChildren().addAll(peruuta, tallenna);
|
||||
napit.setAlignment(Pos.CENTER_RIGHT);
|
||||
napit.setSpacing(10);
|
||||
napit.setPadding(TabPohja.oletusInsets);
|
||||
|
||||
|
||||
VBox root = new VBox();
|
||||
root.getChildren().addAll(tabPane, napit);
|
||||
this.setScene(new Scene(root));
|
||||
this.getIcons().add(new Image(Objects.requireNonNull(Main.class.getClassLoader().getResourceAsStream("kuljetusruokalaatikko.jpg"))));
|
||||
this.setAlwaysOnTop(true);
|
||||
this.setResizable(false);
|
||||
|
||||
//Saatu asiakas on tullut muokattavaksi
|
||||
if (käsiteltäväAsiakas.getId() > 0) {
|
||||
näytäAsiakas();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Jos saadulla asiakkaalla on id (eli asiakas löytyy tietokannasta ja sillä on tietoja)
|
||||
* tällä funktiolla täytetään asiakkaan tiedot ikkunan kenttiin
|
||||
*/
|
||||
private void näytäAsiakas() {
|
||||
tfNimi.setText(käsiteltäväAsiakas.getNimi());
|
||||
tfOsoite.setText(käsiteltäväAsiakas.getOsoite());
|
||||
tfMaanantai.getValueFactory().setValue(käsiteltäväAsiakas.getMaanantaiKpl());
|
||||
tfTiistai.getValueFactory().setValue(käsiteltäväAsiakas.getTiistaiKpl());
|
||||
tfKeskiviikko.getValueFactory().setValue(käsiteltäväAsiakas.getKeskiviikkoKpl());
|
||||
tfTorstai.getValueFactory().setValue(käsiteltäväAsiakas.getTorstaiKpl());
|
||||
tfPerjantai.getValueFactory().setValue(käsiteltäväAsiakas.getPerjantaiKpl());
|
||||
tfLauantai.getValueFactory().setValue(käsiteltäväAsiakas.getLauantaiKpl());
|
||||
tfSunnuntai.getValueFactory().setValue(käsiteltäväAsiakas.getSunnuntaiKpl());
|
||||
tfSalaatit.getValueFactory().setValue(käsiteltäväAsiakas.getSalaatit());
|
||||
tfPääruoat.getValueFactory().setValue(käsiteltäväAsiakas.getPääruoat());
|
||||
tfJälkiruoat.getValueFactory().setValue(käsiteltäväAsiakas.getJälkiruoat());
|
||||
tfRuokarajoitteet.setText(käsiteltäväAsiakas.getErityisruokavalio());
|
||||
tfAvainTieto.setText(käsiteltäväAsiakas.getAvainTieto());
|
||||
tfLisätiedot.setText(käsiteltäväAsiakas.getLisätiedot());
|
||||
tfYhteyshenkilönNimi.setText(käsiteltäväAsiakas.getYhteyshenkilönNimi());
|
||||
tfLaskutusOsoite.setText(käsiteltäväAsiakas.getLaskutusOsoite());
|
||||
tfYhteyshenkilönPuhelinnumero.setText(käsiteltäväAsiakas.getYhteyshenkilönPuhelinnumero());
|
||||
tfYhteyshenkilönSähköposti.setText(käsiteltäväAsiakas.getYhteyshenkilönSähköposti());
|
||||
}
|
||||
|
||||
private void tallenna() {
|
||||
this.setAlwaysOnTop(false);
|
||||
String nimi = tfNimi.getText();
|
||||
String osoite = tfOsoite.getText();
|
||||
|
||||
if (nimi.isEmpty() || osoite.isEmpty()) {
|
||||
Alert alert = new Alert(Alert.AlertType.INFORMATION);
|
||||
alert.setTitle("Tarkista tiedot");
|
||||
alert.setHeaderText(null);
|
||||
alert.setContentText("Nimi tai osoite ei voi olla tyhjiä");
|
||||
alert.showAndWait();
|
||||
return;
|
||||
}
|
||||
|
||||
käsiteltäväAsiakas.setNimi(nimi);
|
||||
käsiteltäväAsiakas.setOsoite(osoite);
|
||||
käsiteltäväAsiakas.setMaanantaiKpl(tfMaanantai.getValue());
|
||||
käsiteltäväAsiakas.setTiistaiKpl(tfTiistai.getValue());
|
||||
käsiteltäväAsiakas.setKeskiviikkoKpl(tfKeskiviikko.getValue());
|
||||
käsiteltäväAsiakas.setTorstaiKpl(tfTorstai.getValue());
|
||||
käsiteltäväAsiakas.setPerjantaiKpl(tfPerjantai.getValue());
|
||||
käsiteltäväAsiakas.setLauantaiKpl(tfLauantai.getValue());
|
||||
käsiteltäväAsiakas.setSunnuntaiKpl(tfSunnuntai.getValue());
|
||||
käsiteltäväAsiakas.setSalaatit(tfSalaatit.getValue());
|
||||
käsiteltäväAsiakas.setPääruoat(tfPääruoat.getValue());
|
||||
käsiteltäväAsiakas.setJälkiruoat(tfJälkiruoat.getValue());
|
||||
käsiteltäväAsiakas.setErityisruokavalio(tfRuokarajoitteet.getText());
|
||||
käsiteltäväAsiakas.setAvainTieto(tfAvainTieto.getText());
|
||||
käsiteltäväAsiakas.setLisätiedot(tfLisätiedot.getText());
|
||||
käsiteltäväAsiakas.setYhteyshenkilönNimi(tfYhteyshenkilönNimi.getText());
|
||||
käsiteltäväAsiakas.setLaskutusOsoite(tfLaskutusOsoite.getText());
|
||||
käsiteltäväAsiakas.setYhteyshenkilönPuhelinnumero(tfYhteyshenkilönPuhelinnumero.getText());
|
||||
käsiteltäväAsiakas.setYhteyshenkilönSähköposti(tfYhteyshenkilönSähköposti.getText());
|
||||
|
||||
boolean läpi = false;
|
||||
int maxYritykset = 3;
|
||||
int yritykset = 0;
|
||||
while (!läpi) {
|
||||
if (käsiteltäväAsiakas.getId() > 0) {
|
||||
läpi = käsiteltäväAsiakas.päivitäTietokantaan();
|
||||
}
|
||||
else {
|
||||
läpi = käsiteltäväAsiakas.tallennaUusi();
|
||||
}
|
||||
yritykset++;
|
||||
if (yritykset > maxYritykset) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (läpi) {
|
||||
int viikonKuljetukset = käsiteltäväAsiakas.getMaanantaiKpl() +
|
||||
käsiteltäväAsiakas.getTiistaiKpl() +
|
||||
käsiteltäväAsiakas.getKeskiviikkoKpl() +
|
||||
käsiteltäväAsiakas.getTorstaiKpl() +
|
||||
käsiteltäväAsiakas.getPerjantaiKpl() +
|
||||
käsiteltäväAsiakas.getLauantaiKpl() +
|
||||
käsiteltäväAsiakas.getSunnuntaiKpl();
|
||||
|
||||
Alert alert = new Alert(Alert.AlertType.INFORMATION);
|
||||
alert.setTitle("Onnistuimme!");
|
||||
alert.setHeaderText("Asiakkaan tallentaminen onnistui!");
|
||||
alert.setContentText(String.format("%s saa jatkossa yhteensä \n%s salaattia, %s pääruokaa ja %s jälkiruokaa viikossa",
|
||||
käsiteltäväAsiakas.getNimi(), käsiteltäväAsiakas.getSalaatit()*viikonKuljetukset, käsiteltäväAsiakas.getPääruoat()*viikonKuljetukset, käsiteltäväAsiakas.getPääruoat()*viikonKuljetukset));
|
||||
alert.showAndWait();
|
||||
this.close();
|
||||
}
|
||||
this.setAlwaysOnTop(true);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user