Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package application;
- import javafx.scene.Scene;
- import javafx.stage.Stage;
- import javafx.util.Callback;
- import javafx.scene.text.Font;
- import javafx.scene.text.Text;
- import javafx.scene.control.Alert;
- import javafx.scene.control.Button;
- import javafx.scene.control.ButtonBar.ButtonData;
- import javafx.scene.control.ButtonType;
- import javafx.scene.control.CheckBox;
- import javafx.scene.control.ChoiceBox;
- import javafx.scene.control.DatePicker;
- import javafx.scene.control.ScrollPane;
- import javafx.scene.control.TableCell;
- import javafx.scene.control.TableColumn;
- import javafx.scene.control.TableView;
- import javafx.scene.control.TextField;
- import javafx.scene.image.Image;
- import javafx.scene.image.ImageView;
- import javafx.scene.input.MouseEvent;
- import javafx.scene.control.Alert.AlertType;
- import javafx.scene.control.TableColumn.CellDataFeatures;
- import javafx.scene.control.TableRow;
- import javafx.scene.Group;
- import javafx.scene.Node;
- import javafx.scene.layout.GridPane;
- import javafx.scene.layout.HBox;
- import javafx.scene.layout.VBox;
- import java.io.FileInputStream;
- import java.io.FileNotFoundException;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.time.LocalDate;
- import java.time.LocalDateTime;
- import java.time.format.DateTimeFormatter;
- import java.util.ArrayList;
- import java.util.Optional;
- import javax.swing.plaf.synth.SynthSeparatorUI;
- import javafx.beans.binding.Bindings;
- import javafx.beans.binding.BooleanBinding;
- import javafx.beans.property.ObjectProperty;
- import javafx.beans.property.SimpleObjectProperty;
- import javafx.beans.value.ObservableValue;
- import javafx.collections.FXCollections;
- import javafx.collections.ObservableList;
- import javafx.event.ActionEvent;
- import javafx.event.EventHandler;
- import javafx.geometry.Insets;
- import javafx.geometry.Pos;
- public class Sessions extends Stage{
- public Sessions(Stage prev,LocalDate localDate) {
- String answer = "0 %";
- Stage current = this;
- ObservableList<ObservableList> data;
- ArrayList<String> days = new ArrayList<>();
- days = initializeDays();
- TableView tableview = new TableView();
- DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
- java.sql.Connection c;
- data = FXCollections.observableArrayList();
- try{
- c = DriverManager.getConnection("jdbc:mysql://localhost:3306/company?useSSL=false","root", "ahmed666");
- //SQL FOR SELECTING ALL OF CUSTOMER
- String SQL;
- PreparedStatement stm ;
- // get current day
- String all = localDate.toString();
- String day = localDate.getDayOfWeek().toString();
- SQL = "select ID ,coID , Name ,Day , startTime , SName, PName , paymentMethod , lastPayment from patientServiceProvider join patient on patientID = ID join service on serviceID = SID join provider on providerID = PID join patientService as PS on ID = PS.patientID"
- + " and SID=PS.serviceID"
- + " where Day = '"+day+ "' and (ID,startTime) NOT IN (select patientID , startTime from history where SDate = '"+all+"' and history.startTime = startTime );";
- System.out.println(SQL);
- stm = (PreparedStatement) c.prepareStatement(SQL);
- //ResultSet
- ResultSet rs = stm.executeQuery();
- /**********************************
- * TABLE COLUMN ADDED DYNAMICALLY *
- **********************************/
- // TableColumn<CheckBox, Boolean> booleanColumn = new TableColumn<>("attend2");
- for(int i=0 ; i<rs.getMetaData().getColumnCount(); i++){
- //We are using non property style for making dynamic table
- final int j = i;
- TableColumn col = new TableColumn(rs.getMetaData().getColumnName(i+1));
- col.setCellValueFactory(new Callback<CellDataFeatures<ObservableList,String>,ObservableValue<String>>(){
- public ObservableValue<String> call(CellDataFeatures<ObservableList, String> param) {
- System.out.println(j);
- System.out.println(param.getValue().get(j));
- return new SimpleObjectProperty(param.getValue().get(j));
- }
- });
- tableview.getColumns().addAll(col);
- System.out.println("Column ["+i+"] ");
- }
- /********************************
- * Data added to ObservableList *
- ********************************/
- int found = -1;
- while(rs.next()){
- //Iterate Row
- ObservableList<Object> row = FXCollections.observableArrayList();
- for(int i=1 ; i<=rs.getMetaData().getColumnCount(); i++){
- //Iterate Column
- String temp = rs.getString(i);
- row.add(temp);
- if(i == 6 && temp.equals("NONE")) {
- found = i;
- }
- }
- //row.add(e);
- // CheckBox box = new CheckBox("ahmed");
- // System.out.println(tableview.getColumns().get(5).toString());
- // CheckBox box = new CheckBox("test");
- // box.setDisable(false);
- // row.add(box);
- // System.out.println("Row [1] added "+row );
- data.add(row);
- }
- //FINALLY ADDED TO TableView
- tableview.setItems(data);
- if(tableview.getItems().size()!=0)
- System.out.println(tableview.getItems().get(0));
- // ADD score of day
- int total =0;
- int entered =0;
- float score =0;
- SQL = "SELECT COUNT(*) FROM history where SDate = '"+localDate.toString()+"'";
- stm = (PreparedStatement) c.prepareStatement(SQL);
- rs = stm.executeQuery();
- if(rs.next()) {
- total = rs.getInt(1);
- }
- if(total != 0) {
- SQL = "SELECT COUNT(*) FROM history where SDate = '"+localDate.toString()+"' and status = 0";
- stm = (PreparedStatement) c.prepareStatement(SQL);
- rs = stm.executeQuery();
- if(rs.next()) {
- entered = rs.getInt(1);
- }
- score = ((float)(entered) / total) * 100;
- answer = Float.toString(score)+" %";
- }
- }catch(Exception e){
- e.printStackTrace();
- System.out.println("Error on Building Data");
- }
- // ObjectProperty Notpaid = new SimpleObjectProperty<>("None");
- // tableview.setRowFactory(tv -> {
- // TableRow row = new TableRow();
- // BooleanBinding critical = row.itemProperty().isEqualTo(Notpaid);
- // row.styleProperty().bind(Bindings.when(critical)
- // .then("-fx-background-color: red ;")
- // .otherwise(""));
- // return row ;
- // });
- VBox root = new VBox();
- tableview.setMinSize(800, 550);
- DatePicker dateToSearch = new DatePicker();
- dateToSearch.setValue(LocalDate.parse(localDate.toString(), formatter));
- Button back = new Button("back");
- back.setStyle("-fx-background-color: pink; -fx-text-fill: black;");
- Button search = new Button("Search");
- search.setStyle("-fx-background-color: pink; -fx-text-fill: black;");
- HBox box = new HBox(50);
- box.getChildren().add(dateToSearch);
- box.getChildren().add(search);
- box.getChildren().add(new Text(answer));
- root.getChildren().add(box);
- root.getChildren().add(tableview);
- root.getChildren().add(back);
- ScrollPane sp = new ScrollPane();
- sp.setFitToWidth(true);
- sp.setFitToHeight(true);
- sp.setPrefSize(800, 550);
- sp.setContent(root);
- Scene scene = new Scene(sp);
- setScene(scene);
- back.setOnAction(new EventHandler<ActionEvent>() {
- @Override
- public void handle(ActionEvent event) {
- current.close();
- // Displaying the contents of the stage
- prev.show();
- }
- });
- search.setOnAction(new EventHandler<ActionEvent>() {
- @Override
- public void handle(ActionEvent event) {
- Sessions session = new Sessions(prev, dateToSearch.getValue());
- session.show();
- current.close();
- }
- });
- tableview.setOnMousePressed(new EventHandler<MouseEvent>() {
- @Override
- public void handle(MouseEvent event) {
- if (event.isPrimaryButtonDown() && event.getClickCount() == 2) {
- if(localDate.equals(LocalDate.now())) {
- ObservableList row = (ObservableList) tableview.getSelectionModel().getSelectedItem();
- String ID = (String) row.get(0);
- // String uniqueID = (String)row.get(3);
- String Day = (String)row.get(3);
- String time = (String) row.get(4);
- String serviceName = (String) row.get(5);
- String providerName = (String) row.get(6);
- String paymentMethod = (String) row.get(7);
- LocalDate lastPayment = LocalDate.parse((String)row.get(8),formatter) ;
- String SQL;
- int SID =-1, PID=-1;
- PreparedStatement stmt;
- String query;
- long millis=System.currentTimeMillis();
- java.sql.Date date=new java.sql.Date(millis);
- System.out.println(date);
- java.sql.Connection c;
- // call new class here
- try {
- c = DriverManager.getConnection("jdbc:mysql://localhost:3306/company?useSSL=false","root", "ahmed666");
- SQL = "select SID from service where SName = '"+serviceName+"'";
- stmt = (PreparedStatement) c.prepareStatement(SQL);
- ResultSet rs = stmt.executeQuery();
- if(rs.next()) {
- SID = rs.getInt(1);
- }
- SQL = "select PID from provider where PName = '"+providerName+"'";
- stmt = (PreparedStatement) c.prepareStatement(SQL);
- rs = stmt.executeQuery();
- if(rs.next()) {
- PID = rs.getInt(1);
- }
- query= "insert into history values (?,?,?,?,?,?)";
- stmt = c.prepareStatement(query);
- stmt.setString(1, ID);
- stmt.setString(2, localDate.toString());
- stmt.setString(3, time);
- stmt.setInt(4, SID);
- stmt.setInt(5, PID);
- //SQL FOR SELECTING ALL OF CUSTOMER
- // String SQL;
- PreparedStatement stm ;
- // just enter the session
- if((lastPayment != null && (paymentMethod.equals("month")&& (localDate.minusDays(30).isBefore(lastPayment) || localDate.minusDays(30).equals(lastPayment))))) {
- System.out.println("-----------------------You can enter");
- Alert alert = new Alert(AlertType.CONFIRMATION);
- //alert.setTitle("Confirmation Dialog with Custom Actions");
- alert.setHeaderText("This patient can enter the session");
- alert.setContentText("Choose your option.");
- ButtonType buttonTypeOne = new ButtonType("Enter Session");
- ButtonType buttonTypeCancel = new ButtonType("Cancel", ButtonData.CANCEL_CLOSE);
- ButtonType buttonTypeProvider = new ButtonType("provider Excused");
- ButtonType buttonTypePatient = new ButtonType("paient Excused");
- ButtonType buttonTypeStop = new ButtonType("Stop");
- alert.getButtonTypes().setAll(buttonTypeOne,buttonTypeProvider
- ,buttonTypePatient, buttonTypeStop,buttonTypeCancel);
- Optional<ButtonType> result = alert.showAndWait();
- if (result.get() == buttonTypeOne){
- // ... user chose "One"
- System.out.println("entered session ->>>>>>>>>>>>>>>>");
- stmt.setInt(6,0);
- System.out.println(stmt);
- stmt.execute();
- }else if(result.get() == buttonTypeProvider) {
- stmt.setInt(6,1);
- System.out.println(stmt);
- stmt.execute();
- }else if(result.get() == buttonTypePatient) {
- stmt.setInt(6,2);
- stmt.execute();
- }else if(result.get() == buttonTypeStop) {
- stmt.setInt(6,3);
- stmt.execute();
- }
- else {
- // ... user chose CANCEL or closed the dialog
- }
- }
- else {
- //check if more than week have passed then he must pay
- if(lastPayment != null && (paymentMethod.equals("month") && (localDate.minusDays(37).isBefore(lastPayment) || localDate.minusDays(37).equals(lastPayment))) ) {
- System.out.println("Warning ->>>>>>>>>>>>>>>>");
- Alert alert = new Alert(AlertType.WARNING);
- //alert.setTitle("Confirmation Dialog with Custom Actions");
- alert.setHeaderText("This patient is in allowance period");
- alert.setContentText("Choose your option.");
- ButtonType buttonTypeOne = new ButtonType("Pay");
- ButtonType buttonTypeTwo = new ButtonType("Enter Session");
- ButtonType buttonTypeCancel = new ButtonType("Cancel", ButtonData.CANCEL_CLOSE);
- ButtonType buttonTypeProvider = new ButtonType("provider Excused");
- ButtonType buttonTypePatient = new ButtonType("paient Excused");
- ButtonType buttonTypeStop = new ButtonType("Stop");
- alert.getButtonTypes().setAll(buttonTypeOne,buttonTypeTwo,buttonTypeProvider
- ,buttonTypePatient, buttonTypeStop,buttonTypeCancel);
- Optional<ButtonType> result = alert.showAndWait();
- if (result.get() == buttonTypeOne){
- // ... user chose "One"
- System.out.println("pay ->>>>>>>>>>>>>>>>");
- // SQL = "select SID from service where SName = '"+serviceName+"'";
- // stm = (PreparedStatement) c.prepareStatement(SQL);
- // ResultSet rs = stm.executeQuery();
- // int serviceID = -1;
- // if(rs.next()) {
- // serviceID = rs.getInt(1);
- // }
- SQL = "update patientService set lastPayment = '"+localDate+"' where patientID = '"+ID+"'"
- + " and serviceID = "+SID;
- System.out.println(SQL);
- stm = (PreparedStatement) c.prepareStatement(SQL);
- stm.executeUpdate();
- }else if(result.get() == buttonTypeTwo) {
- System.out.println("entered session ->>>>>>>>>>>>>>>>");
- stmt.setInt(6,0);
- System.out.println(stmt);
- stmt.execute();
- }else if(result.get() == buttonTypeProvider) {
- stmt.setInt(6,1);
- stmt.execute();
- }else if(result.get() == buttonTypePatient) {
- stmt.setInt(6,2);
- stmt.execute();
- }else if(result.get() == buttonTypeStop) {
- stmt.setInt(6,3);
- stmt.execute();
- }
- else {
- // ... user chose CANCEL or closed the dialog
- }
- }
- else {
- Alert alert = new Alert(AlertType.CONFIRMATION);
- //alert.setTitle("Confirmation Dialog with Custom Actions");
- alert.setHeaderText("This patient must pay to enter the session");
- alert.setContentText("Choose your option.");
- ButtonType buttonTypeOne = new ButtonType("Pay");
- ButtonType buttonTypeCancel = new ButtonType("Cancel", ButtonData.CANCEL_CLOSE);
- alert.getButtonTypes().setAll(buttonTypeOne, buttonTypeCancel);
- Optional<ButtonType> result = alert.showAndWait();
- if (result.get() == buttonTypeOne){
- // ... user chose "One"
- System.out.println("pay ->>>>>>>>>>>>>>>>");
- SQL = "select SID from service where SName = '"+serviceName+"'";
- stm = (PreparedStatement) c.prepareStatement(SQL);
- // ResultSet rs = stm.executeQuery();
- // int serviceID = -1;
- // if(rs.next()) {
- // serviceID = rs.getInt(1);
- // }
- SQL = "update patientService set lastPayment = '"+localDate+"' where patientID = '"+ID+"'"
- + " and serviceID = "+SID;
- System.out.println(SQL);
- stm = (PreparedStatement) c.prepareStatement(SQL);
- stm.executeUpdate();
- //Sessions session = new Sessions(prev,localDate);
- //session.show();
- //current.close();
- Alert alert2 = new Alert(AlertType.CONFIRMATION);
- //alert.setTitle("Confirmation Dialog with Custom Actions");
- alert2.setHeaderText("This patient can enter the session");
- alert.setContentText("Choose your option.");
- ButtonType buttonTypeEnter = new ButtonType("Enter Session");
- ButtonType buttonTypeCancel2 = new ButtonType("Cancel", ButtonData.CANCEL_CLOSE);
- ButtonType buttonTypeProvider = new ButtonType("provider Excused");
- ButtonType buttonTypePatient = new ButtonType("paient Excused");
- ButtonType buttonTypeStop = new ButtonType("Stop");;
- alert2.getButtonTypes().setAll(buttonTypeEnter, buttonTypeProvider,buttonTypePatient,buttonTypeStop );
- Optional<ButtonType> result2 = alert2.showAndWait();
- if(result2.get() == buttonTypeEnter) {
- System.out.println("entered session ->>>>>>>>>>>>>>>>");
- stmt.setInt(6,0);
- stmt.execute();
- }else if(result2.get() == buttonTypeProvider) {
- stmt.setInt(6,1);
- stmt.execute();
- }else if(result2.get() == buttonTypePatient) {
- stmt.setInt(6,2);
- stmt.execute();
- }else if(result2.get() == buttonTypeStop) {
- stmt.setInt(6,3);
- stmt.execute();
- }
- else {
- // ... user chose CANCEL or closed the dialog
- }
- } else {
- // ... user chose CANCEL or closed the dialog
- }
- }
- }
- Sessions session = new Sessions(prev,localDate);
- session.show();
- current.close();
- }
- catch(Exception e){
- e.printStackTrace();
- System.out.println("Error on Adding Data");
- }
- System.out.println("The Id is "+ID);
- }
- }
- else {
- }
- }
- });
- }
- private ArrayList<String> initializeDays(){
- ArrayList<String> days = new ArrayList<>();
- days.add("Fri");
- days.add("Sat");
- days.add("Sun");
- days.add("Mon");
- days.add("Tue");
- days.add("Wed");
- days.add("Thu");
- return days;
- }
- private int getDayIndex(String day ,ArrayList<String> days) {
- for(int i=0;i<days.size();i++) {
- if(day.equals(days.get(i))) return i;
- }
- return -1;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement