Files
Ruokamanageri/src/main/java/fi/lpam/gui/KuljetusRaportit.java
T
2026-05-31 14:18:15 +03:00

129 lines
5.8 KiB
Java

package fi.lpam.gui;
import fi.lpam.Main;
import fi.lpam.dataluokat.Kuljetus;
import fi.lpam.dataluokat.RaporttiRivi;
import fi.lpam.gui.elementit.FontLabel;
import fi.lpam.tulostajat.KuljetusRaporttiTulostaja;
import fi.lpam.gui.tableCell.PaivamaaraTableCell;
import fi.lpam.gui.elementit.TabPohja;
import javafx.collections.FXCollections;
import javafx.geometry.Pos;
import javafx.scene.control.*;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Objects;
@SuppressWarnings("unchecked")
public class KuljetusRaportit extends TabPohja {
private final TableView<RaporttiRivi> tableView = new TableView<>();
private final DatePicker alkuPvm, loppuPvm;
private ArrayList<RaporttiRivi> raportti;
private final CheckBox tarkka;
void haeRaportti() {
raportti = RaporttiRivi.haeRaportti(alkuPvm.getValue(), loppuPvm.getValue(), tarkka.isSelected());
tableView.setItems(FXCollections.observableArrayList(Objects.requireNonNull(raportti)));
tableView.refresh();
}
void tulostaRaportti() {
new KuljetusRaporttiTulostaja().luoRaportti(raportti, alkuPvm.getValue(), loppuPvm.getValue());
}
public KuljetusRaportit() {
super("Raportit");
BorderPane yläpalkki = new BorderPane();
root.setTop(yläpalkki);
Label infoTeksti = new FontLabel(TEKSTI_FONT, "Kuljetusraportit. \nTarkka-valinnalla koostetun raportin \ntulostaminen paperille ei suositeltua.");
yläpalkki.setLeft(infoTeksti);
HBox yläpalkinNapit = new HBox();
yläpalkinNapit.setAlignment(Pos.CENTER);
yläpalkinNapit.setSpacing(SPACING);
yläpalkki.setRight(yläpalkinNapit);
tarkka = new CheckBox("Tarkka");
tarkka.setFont(TEKSTI_FONT);
alkuPvm = new DatePicker(LocalDate.now().minusDays(LocalDate.now().getDayOfMonth() - 1));
loppuPvm = new DatePicker(LocalDate.now());
Button haeKuljetukset = new Button("Hae");
haeKuljetukset.setFont(BUTTON_FONT);
haeKuljetukset.setOnAction(_ ->haeRaportti());
Button tulostaRaportti = new Button("Tulosta raportti");
tulostaRaportti.setFont(BUTTON_FONT);
tulostaRaportti.setOnAction(_ ->tulostaRaportti());
yläpalkinNapit.getChildren().addAll(tarkka,
//new FontLabel(tekstiFont,"Hae kuljetukset välillä:"),
alkuPvm, new FontLabel(TEKSTI_FONT,"-"), loppuPvm,
haeKuljetukset, tulostaRaportti);
root.setCenter(tableView);
TableColumn<RaporttiRivi, String> tcNimi = new TableColumn<>("Nimi");
tcNimi.setMinWidth(200);
tcNimi.setCellValueFactory(new PropertyValueFactory<>("nimi"));
TableColumn<RaporttiRivi, LocalDate> tcPvm = new TableColumn<>("Päivämäärä");
tcPvm.setMinWidth(150);
tcPvm.setCellFactory(_ ->new PaivamaaraTableCell());
tcPvm.setCellValueFactory(new PropertyValueFactory<>("pvm"));
TableColumn<RaporttiRivi, Kuljetus.Tyyppi> tcTyyppi = new TableColumn<>("Tyyppi");
tcTyyppi.setMinWidth(150);
tcTyyppi.setCellValueFactory(new PropertyValueFactory<>("tyyppi"));
TableColumn<RaporttiRivi, Integer> tcSalaatit = new TableColumn<>("Salaatit");
tcSalaatit.setMinWidth(100);
tcSalaatit.setCellValueFactory(new PropertyValueFactory<>("salaatit"));
TableColumn<RaporttiRivi, Integer> tcPääruoat = new TableColumn<>("Pääruoat");
tcPääruoat.setMinWidth(100);
tcPääruoat.setCellValueFactory(new PropertyValueFactory<>("pääruoat"));
TableColumn<RaporttiRivi, Integer> tcJälkiruoat = new TableColumn<>("Jälkiruoat");
tcJälkiruoat.setMinWidth(100);
tcJälkiruoat.setCellValueFactory(new PropertyValueFactory<>("jälkiruoat"));
TableColumn<RaporttiRivi, String> tcErva = new TableColumn<>("Erityisruokavalio");
tcErva.setMinWidth(200);
tcErva.setCellValueFactory(new PropertyValueFactory<>("erva"));
TableColumn<RaporttiRivi, String> tcLisätiedot = new TableColumn<>("Lisätiedot");
tcLisätiedot.setMinWidth(300);
tcLisätiedot.setCellValueFactory(new PropertyValueFactory<>("lisätiedot"));
TableColumn<RaporttiRivi, String> tcYhteyshenkilönNimi = new TableColumn<>("Yhteyshenkilön nimi");
tcYhteyshenkilönNimi.setMinWidth(200);
tcYhteyshenkilönNimi.setCellValueFactory(new PropertyValueFactory<>("yhteyshenkilönNimi"));
TableColumn<RaporttiRivi, String> tcLaskutusOsoite = new TableColumn<>("Laskutusosoite");
tcLaskutusOsoite.setMinWidth(200);
tcLaskutusOsoite.setCellValueFactory(new PropertyValueFactory<>("laskutusOsoite"));
TableColumn<RaporttiRivi, String> tcYhteyshenkilönPuhelinnumero = new TableColumn<>("Puhelinnumero");
tcYhteyshenkilönPuhelinnumero.setMinWidth(200);
tcYhteyshenkilönPuhelinnumero.setCellValueFactory(new PropertyValueFactory<>("yhteyshenkilönPuhelinnumero"));
TableColumn<RaporttiRivi, String> tcYhteyshenkilönSähköposti = new TableColumn<>("Sähköposti");
tcYhteyshenkilönSähköposti.setMinWidth(200);
tcYhteyshenkilönSähköposti.setCellValueFactory(new PropertyValueFactory<>("yhteyshenkilönSähköposti"));
tableView.getColumns().addAll(tcNimi, tcPvm, tcTyyppi, tcSalaatit, tcPääruoat, tcJälkiruoat, tcErva, tcLisätiedot,
tcYhteyshenkilönNimi, tcLaskutusOsoite, tcYhteyshenkilönPuhelinnumero, tcYhteyshenkilönSähköposti);
tableView.setPlaceholder(new FontLabel(BUTTON_FONT, "Hae raportti"));
for (TableColumn<RaporttiRivi, ?> sarake : tableView.getColumns()) {
sarake.setEditable(false);
sarake.setResizable(true);
sarake.setStyle(TV_COLUMN_STYLE);
}
}
}