Versio 1, ensimmäinen committi!
This commit is contained in:
@@ -0,0 +1,204 @@
|
||||
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.scene.Scene;
|
||||
import javafx.scene.control.*;
|
||||
import javafx.scene.image.Image;
|
||||
import javafx.scene.layout.GridPane;
|
||||
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;
|
||||
final IntegerSpinner tfMaanantai, tfTiistai, tfKeskiviikko, tfTorstai, tfPerjantai, 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;
|
||||
this.setTitle("Asiakasikkuna");
|
||||
|
||||
GridPane root = new GridPane();
|
||||
root.setPadding(new Insets(15));
|
||||
root.setHgap(10);
|
||||
root.setVgap(10);
|
||||
root.setOnKeyPressed(e -> {
|
||||
switch (e.getCode()) {
|
||||
case ENTER: tallenna(); break;
|
||||
case ESCAPE: close(); break;
|
||||
default: break;
|
||||
}});
|
||||
|
||||
root.addRow(root.getRowCount(), new Label("Vahvistetut kentät pakollisia"));
|
||||
|
||||
Label nimi = new Label("Asiakkaan etu- ja sukunimi");
|
||||
nimi.setStyle("-fx-font-weight: bold;");
|
||||
tfNimi = new TextField();
|
||||
tfNimi.setPromptText("Pakollinen tieto");
|
||||
root.addRow(root.getRowCount(), nimi, tfNimi);
|
||||
|
||||
Label osoite = new Label("Osoite");
|
||||
osoite.setStyle("-fx-font-weight: bold;");
|
||||
tfOsoite = new TextField();
|
||||
tfOsoite.setPromptText("Pakollinen tieto");
|
||||
root.addRow(root.getRowCount(), osoite, tfOsoite);
|
||||
|
||||
root.addRow(root.getRowCount(), new Label("Määrät per kuljetus"));
|
||||
|
||||
Label salaatit = new Label("Salaatit");
|
||||
tfSalaatit = new IntegerSpinner();
|
||||
root.addRow(root.getRowCount(), salaatit, tfSalaatit);
|
||||
|
||||
Label pääruoat = new Label("Pääruoat");
|
||||
tfPääruoat = new IntegerSpinner();
|
||||
root.addRow(root.getRowCount(), pääruoat, tfPääruoat);
|
||||
|
||||
Label jälkiruoat = new Label("Jälkiruoat");
|
||||
tfJälkiruoat = new IntegerSpinner();
|
||||
root.addRow(root.getRowCount(), jälkiruoat, tfJälkiruoat);
|
||||
|
||||
root.addRow(root.getRowCount(), new Label("Kuljetukset per päivä"));
|
||||
|
||||
Label maanantai = new Label("Maanantai");
|
||||
tfMaanantai = new IntegerSpinner();
|
||||
root.addRow(root.getRowCount(), maanantai, tfMaanantai);
|
||||
|
||||
Label tiistai = new Label("Tiistai");
|
||||
tfTiistai = new IntegerSpinner();
|
||||
root.addRow(root.getRowCount(), tiistai, tfTiistai);
|
||||
|
||||
Label keskiviikko = new Label("Keskiviikko");
|
||||
tfKeskiviikko = new IntegerSpinner();
|
||||
root.addRow(root.getRowCount(), keskiviikko, tfKeskiviikko);
|
||||
|
||||
Label torstai = new Label("Torstai");
|
||||
tfTorstai = new IntegerSpinner();
|
||||
root.addRow(root.getRowCount(), torstai, tfTorstai);
|
||||
|
||||
Label perjantai = new Label("Perjantai");
|
||||
tfPerjantai = new IntegerSpinner();
|
||||
root.addRow(root.getRowCount(), perjantai, tfPerjantai);
|
||||
|
||||
Label ruokarajoitteet = new Label("Ruokarajoitteet");
|
||||
tfRuokarajoitteet = new TextField();
|
||||
root.addRow(root.getRowCount(), ruokarajoitteet, tfRuokarajoitteet);
|
||||
|
||||
Label avainTieto = new Label("Avaintieto");
|
||||
tfAvainTieto = new TextField();
|
||||
root.addRow(root.getRowCount(), avainTieto, tfAvainTieto);
|
||||
|
||||
Label lisätiedot = new Label("Kuljetuksen lisätiedot");
|
||||
tfLisätiedot = new TextField();
|
||||
tfLisätiedot.setPromptText("Näkyy raporteilla");
|
||||
root.addRow(root.getRowCount(), lisätiedot, tfLisätiedot);
|
||||
|
||||
Button peruuta = new Button("Peruuta");
|
||||
peruuta.setFont(TabPohja.buttonFont);
|
||||
peruuta.setMinWidth(160);
|
||||
peruuta.setOnAction(_ -> this.close());
|
||||
Button tallenna = new Button("Tallenna");
|
||||
tallenna.setFont(TabPohja.buttonFont);
|
||||
tallenna.setMinWidth(160);
|
||||
tallenna.setOnAction(_ -> tallenna());
|
||||
root.addRow(root.getRowCount(), peruuta, tallenna);
|
||||
|
||||
|
||||
this.setScene(new Scene(root));
|
||||
this.getIcons().add(new Image(Objects.requireNonNull(Main.class.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());
|
||||
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());
|
||||
}
|
||||
|
||||
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.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());
|
||||
|
||||
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();
|
||||
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