SHARE
TWEET

Untitled

a guest Feb 17th, 2019 93 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package application;
  2. import javafx.scene.Scene;
  3.  
  4. import javafx.stage.Stage;
  5. import javafx.util.Callback;
  6. import javafx.scene.text.Font;
  7. import javafx.scene.text.Text;
  8. import javafx.scene.control.Alert;
  9. import javafx.scene.control.Button;
  10. import javafx.scene.control.ButtonBar.ButtonData;
  11. import javafx.scene.control.ButtonType;
  12. import javafx.scene.control.CheckBox;
  13. import javafx.scene.control.ChoiceBox;
  14. import javafx.scene.control.DatePicker;
  15. import javafx.scene.control.ScrollPane;
  16. import javafx.scene.control.TableCell;
  17. import javafx.scene.control.TableColumn;
  18. import javafx.scene.control.TableView;
  19. import javafx.scene.control.TextField;
  20. import javafx.scene.image.Image;
  21. import javafx.scene.image.ImageView;
  22. import javafx.scene.input.MouseEvent;
  23. import javafx.scene.control.Alert.AlertType;
  24. import javafx.scene.control.TableColumn.CellDataFeatures;
  25. import javafx.scene.control.TableRow;
  26. import javafx.scene.Group;
  27. import javafx.scene.Node;
  28. import javafx.scene.layout.GridPane;
  29. import javafx.scene.layout.HBox;
  30. import javafx.scene.layout.VBox;
  31.  
  32. import java.io.FileInputStream;
  33. import java.io.FileNotFoundException;
  34. import java.sql.Connection;
  35. import java.sql.DriverManager;
  36. import java.sql.PreparedStatement;
  37. import java.sql.ResultSet;
  38. import java.sql.SQLException;
  39. import java.time.LocalDate;
  40. import java.time.LocalDateTime;
  41. import java.time.format.DateTimeFormatter;
  42. import java.util.ArrayList;
  43. import java.util.Optional;
  44.  
  45. import javax.swing.plaf.synth.SynthSeparatorUI;
  46.  
  47. import javafx.beans.binding.Bindings;
  48. import javafx.beans.binding.BooleanBinding;
  49. import javafx.beans.property.ObjectProperty;
  50. import javafx.beans.property.SimpleObjectProperty;
  51. import javafx.beans.value.ObservableValue;
  52. import javafx.collections.FXCollections;
  53. import javafx.collections.ObservableList;
  54. import javafx.event.ActionEvent;
  55. import javafx.event.EventHandler;
  56. import javafx.geometry.Insets;
  57. import javafx.geometry.Pos;
  58.  
  59. public class Sessions extends Stage{
  60.     public Sessions(Stage prev,LocalDate localDate) {
  61.          String answer = "0 %";
  62.         Stage current = this;
  63.         ObservableList<ObservableList> data;
  64.         ArrayList<String> days = new ArrayList<>();
  65.         days = initializeDays();
  66.         TableView tableview = new TableView();
  67.         DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
  68.  
  69.         java.sql.Connection c;
  70.         data = FXCollections.observableArrayList();
  71.         try{
  72.           c = DriverManager.getConnection("jdbc:mysql://localhost:3306/company?useSSL=false","root", "ahmed666");
  73.           //SQL FOR SELECTING ALL OF CUSTOMER
  74.           String SQL;
  75.           PreparedStatement stm ;
  76.          
  77.          
  78.          
  79.           // get current day
  80.           String all = localDate.toString();
  81.           String day = localDate.getDayOfWeek().toString();
  82.          
  83.          
  84.          
  85.           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"
  86.                 + " and SID=PS.serviceID"
  87.                 + " where Day = '"+day+ "' and (ID,startTime) NOT IN (select patientID , startTime from history where SDate = '"+all+"' and history.startTime = startTime  );";
  88.           System.out.println(SQL);
  89.           stm = (PreparedStatement) c.prepareStatement(SQL);
  90.          
  91.            
  92.          
  93.          
  94.          
  95.          
  96.           //ResultSet
  97.           ResultSet rs = stm.executeQuery();
  98.    
  99.           /**********************************
  100.            * TABLE COLUMN ADDED DYNAMICALLY *
  101.            **********************************/
  102.          
  103.          
  104.          
  105.          
  106.          
  107.          
  108.          
  109.          // TableColumn<CheckBox, Boolean> booleanColumn = new TableColumn<>("attend2");
  110.           for(int i=0 ; i<rs.getMetaData().getColumnCount(); i++){
  111.               //We are using non property style for making dynamic table
  112.               final int j = i;                
  113.               TableColumn col = new TableColumn(rs.getMetaData().getColumnName(i+1));  
  114.               col.setCellValueFactory(new Callback<CellDataFeatures<ObservableList,String>,ObservableValue<String>>(){                    
  115.                   public ObservableValue<String> call(CellDataFeatures<ObservableList, String> param) {
  116.                       System.out.println(j);
  117.                       System.out.println(param.getValue().get(j));
  118.                       return new SimpleObjectProperty(param.getValue().get(j));
  119.                      
  120.                          
  121.                          
  122.                   }                    
  123.               });
  124.              
  125.    
  126.               tableview.getColumns().addAll(col);
  127.               System.out.println("Column ["+i+"] ");
  128.           }
  129.          
  130.    
  131.           /********************************
  132.            * Data added to ObservableList *
  133.            ********************************/
  134.           int found = -1;
  135.           while(rs.next()){
  136.               //Iterate Row
  137.               ObservableList<Object> row = FXCollections.observableArrayList();
  138.               for(int i=1 ; i<=rs.getMetaData().getColumnCount(); i++){
  139.                   //Iterate Column
  140.                   String temp = rs.getString(i);
  141.                  
  142.                   row.add(temp);
  143.                   if(i == 6 && temp.equals("NONE")) {
  144.                      found = i;
  145.                   }
  146.                  
  147.                  
  148.               }
  149.               //row.add(e);
  150.             //  CheckBox box = new CheckBox("ahmed");
  151.              // System.out.println(tableview.getColumns().get(5).toString());
  152.             //  CheckBox box = new CheckBox("test");
  153.              // box.setDisable(false);
  154.              // row.add(box);
  155.              // System.out.println("Row [1] added "+row );
  156.               data.add(row);
  157.    
  158.           }
  159.    
  160.           //FINALLY ADDED TO TableView
  161.           tableview.setItems(data);
  162.           if(tableview.getItems().size()!=0)
  163.               System.out.println(tableview.getItems().get(0));
  164.          
  165.          
  166.           // ADD score of day
  167.           int total =0;
  168.           int entered =0;
  169.           float score =0;
  170.          
  171.           SQL = "SELECT COUNT(*) FROM history where  SDate = '"+localDate.toString()+"'";
  172.           stm = (PreparedStatement) c.prepareStatement(SQL);
  173.           rs = stm.executeQuery();
  174.           if(rs.next()) {
  175.             total = rs.getInt(1);
  176.           }
  177.           if(total != 0) {
  178.               SQL = "SELECT COUNT(*) FROM history where  SDate = '"+localDate.toString()+"' and status = 0";
  179.               stm = (PreparedStatement) c.prepareStatement(SQL);
  180.               rs = stm.executeQuery();
  181.               if(rs.next()) {
  182.                 entered = rs.getInt(1);
  183.               }
  184.               score = ((float)(entered) / total) * 100;
  185.               answer = Float.toString(score)+" %";
  186.           }
  187.          
  188.          
  189.  
  190.        
  191.          
  192.          
  193.         }catch(Exception e){
  194.             e.printStackTrace();
  195.             System.out.println("Error on Building Data");            
  196.         }
  197.  
  198.        
  199.        
  200. //      ObjectProperty Notpaid = new SimpleObjectProperty<>("None");
  201. //      tableview.setRowFactory(tv -> {
  202. //          TableRow row = new TableRow();
  203. //          BooleanBinding critical = row.itemProperty().isEqualTo(Notpaid);
  204. //          row.styleProperty().bind(Bindings.when(critical)
  205. //              .then("-fx-background-color: red ;")
  206. //              .otherwise(""));
  207. //          return row ;
  208. //      });
  209.        
  210.        
  211.        
  212.        
  213.        
  214.        
  215.        
  216.        
  217.        
  218.        
  219.        
  220.        
  221.        
  222.        
  223.        
  224.        
  225.        
  226.        
  227.        
  228.        
  229.        
  230.        
  231.        
  232.        
  233.        
  234.        
  235.        
  236.        
  237.        
  238.        
  239.          
  240.             VBox root = new VBox();
  241.             tableview.setMinSize(800, 550);
  242.             DatePicker dateToSearch = new DatePicker();
  243.             dateToSearch.setValue(LocalDate.parse(localDate.toString(), formatter));
  244.            
  245.             Button back = new Button("back");
  246.             back.setStyle("-fx-background-color: pink; -fx-text-fill: black;");
  247.             Button search = new Button("Search");
  248.             search.setStyle("-fx-background-color: pink; -fx-text-fill: black;");
  249.             HBox box = new HBox(50);
  250.             box.getChildren().add(dateToSearch);
  251.             box.getChildren().add(search);
  252.             box.getChildren().add(new Text(answer));
  253.             root.getChildren().add(box);
  254.             root.getChildren().add(tableview);
  255.             root.getChildren().add(back);
  256.             ScrollPane sp  = new ScrollPane();
  257.             sp.setFitToWidth(true);
  258.             sp.setFitToHeight(true);
  259.             sp.setPrefSize(800, 550);
  260.             sp.setContent(root);
  261.             Scene scene = new Scene(sp);
  262.             setScene(scene);
  263.      
  264.            
  265.            
  266.            
  267.             back.setOnAction(new EventHandler<ActionEvent>() {
  268.                 @Override
  269.                 public void handle(ActionEvent event) {
  270.                    
  271.                     current.close();
  272.                     // Displaying the contents of the stage
  273.                     prev.show();
  274.      
  275.      
  276.                 }
  277.             });
  278.            
  279.             search.setOnAction(new EventHandler<ActionEvent>() {
  280.                 @Override
  281.                 public void handle(ActionEvent event) {
  282.                    
  283.                     Sessions session = new Sessions(prev, dateToSearch.getValue());
  284.                     session.show();
  285.                     current.close();
  286.      
  287.      
  288.                 }
  289.             });
  290.            
  291.            
  292.            
  293.             tableview.setOnMousePressed(new EventHandler<MouseEvent>() {
  294.                 @Override
  295.                 public void handle(MouseEvent event) {
  296.                     if (event.isPrimaryButtonDown() && event.getClickCount() == 2) {
  297.                     if(localDate.equals(LocalDate.now())) {
  298.                         ObservableList row  = (ObservableList) tableview.getSelectionModel().getSelectedItem();
  299.                         String ID = (String) row.get(0);
  300.                        // String uniqueID = (String)row.get(3);
  301.                         String Day = (String)row.get(3);
  302.                         String time = (String) row.get(4);
  303.                         String serviceName = (String) row.get(5);
  304.                         String providerName = (String) row.get(6);
  305.                         String paymentMethod = (String) row.get(7);
  306.                         LocalDate lastPayment = LocalDate.parse((String)row.get(8),formatter) ;
  307.                         String SQL;
  308.                         int SID =-1, PID=-1;
  309.                         PreparedStatement stmt;
  310.                         String query;
  311.                        
  312.                        
  313.                         long millis=System.currentTimeMillis();  
  314.                         java.sql.Date date=new java.sql.Date(millis);
  315.                         System.out.println(date);
  316.                         java.sql.Connection c;
  317.                        
  318.                         // call new class here
  319.                         try {
  320.                           c = DriverManager.getConnection("jdbc:mysql://localhost:3306/company?useSSL=false","root", "ahmed666");
  321.                           SQL = "select SID from service where SName = '"+serviceName+"'";
  322.                             stmt = (PreparedStatement) c.prepareStatement(SQL);
  323.                             ResultSet rs = stmt.executeQuery();
  324.                             if(rs.next()) {
  325.                                 SID = rs.getInt(1);
  326.                             }
  327.                             SQL = "select PID from provider where PName = '"+providerName+"'";
  328.                             stmt = (PreparedStatement) c.prepareStatement(SQL);
  329.                             rs = stmt.executeQuery();
  330.                             if(rs.next()) {
  331.                                 PID = rs.getInt(1);
  332.                             }
  333.                             query= "insert into history values (?,?,?,?,?,?)";
  334.                             stmt = c.prepareStatement(query);
  335.                             stmt.setString(1, ID);
  336.                             stmt.setString(2, localDate.toString());
  337.                             stmt.setString(3, time);
  338.                             stmt.setInt(4, SID);
  339.                             stmt.setInt(5, PID);
  340.                           //SQL FOR SELECTING ALL OF CUSTOMER
  341.                          // String SQL;
  342.                           PreparedStatement stm ;
  343.                          
  344.                          
  345.                           // just enter the session
  346.                           if((lastPayment != null && (paymentMethod.equals("month")&& (localDate.minusDays(30).isBefore(lastPayment) || localDate.minusDays(30).equals(lastPayment)))))  {
  347.                               System.out.println("-----------------------You can enter");
  348.                             Alert alert = new Alert(AlertType.CONFIRMATION);
  349.                             //alert.setTitle("Confirmation Dialog with Custom Actions");
  350.                             alert.setHeaderText("This patient can enter the session");
  351.                             alert.setContentText("Choose your option.");
  352.  
  353.                             ButtonType buttonTypeOne = new ButtonType("Enter Session");
  354.                             ButtonType buttonTypeCancel = new ButtonType("Cancel", ButtonData.CANCEL_CLOSE);
  355.                             ButtonType buttonTypeProvider = new ButtonType("provider Excused");
  356.                             ButtonType buttonTypePatient = new ButtonType("paient Excused");
  357.                             ButtonType buttonTypeStop = new ButtonType("Stop");
  358.                             alert.getButtonTypes().setAll(buttonTypeOne,buttonTypeProvider
  359.                                     ,buttonTypePatient, buttonTypeStop,buttonTypeCancel);
  360.  
  361.                             Optional<ButtonType> result = alert.showAndWait();
  362.                             if (result.get() == buttonTypeOne){
  363.                                 // ... user chose "One"
  364.                                 System.out.println("entered session ->>>>>>>>>>>>>>>>");
  365.                                 stmt.setInt(6,0);
  366.                                 System.out.println(stmt);
  367.                                 stmt.execute();
  368.                             }else if(result.get() == buttonTypeProvider) {
  369.                                 stmt.setInt(6,1);
  370.                                 System.out.println(stmt);
  371.                                 stmt.execute();
  372.                             }else if(result.get() == buttonTypePatient) {
  373.                                 stmt.setInt(6,2);
  374.                                 stmt.execute();
  375.                             }else if(result.get() == buttonTypeStop) {
  376.                                 stmt.setInt(6,3);
  377.                                 stmt.execute();
  378.                             }
  379.                             else {
  380.                                 // ... user chose CANCEL or closed the dialog
  381.                             }
  382.                            
  383.                              
  384.                           }
  385.                           else {
  386.                               //check if more than week have passed then he must pay
  387.                               if(lastPayment != null && (paymentMethod.equals("month") && (localDate.minusDays(37).isBefore(lastPayment) || localDate.minusDays(37).equals(lastPayment)))  ) {
  388.                                     System.out.println("Warning ->>>>>>>>>>>>>>>>");
  389.                                     Alert alert = new Alert(AlertType.WARNING);
  390.                                     //alert.setTitle("Confirmation Dialog with Custom Actions");
  391.                                     alert.setHeaderText("This patient is in allowance period");
  392.                                     alert.setContentText("Choose your option.");
  393.    
  394.                                     ButtonType buttonTypeOne = new ButtonType("Pay");
  395.                                     ButtonType buttonTypeTwo = new ButtonType("Enter Session");
  396.                                     ButtonType buttonTypeCancel = new ButtonType("Cancel", ButtonData.CANCEL_CLOSE);
  397.                                     ButtonType buttonTypeProvider = new ButtonType("provider Excused");
  398.                                     ButtonType buttonTypePatient = new ButtonType("paient Excused");
  399.                                     ButtonType buttonTypeStop = new ButtonType("Stop");
  400.    
  401.                                     alert.getButtonTypes().setAll(buttonTypeOne,buttonTypeTwo,buttonTypeProvider
  402.                                             ,buttonTypePatient, buttonTypeStop,buttonTypeCancel);
  403.    
  404.                                     Optional<ButtonType> result = alert.showAndWait();
  405.                                     if (result.get() == buttonTypeOne){
  406.                                         // ... user chose "One"
  407.                                         System.out.println("pay ->>>>>>>>>>>>>>>>");
  408. //                                      SQL = "select SID from service where SName = '"+serviceName+"'";
  409. //                                      stm = (PreparedStatement) c.prepareStatement(SQL);
  410. //                                      ResultSet rs = stm.executeQuery();
  411. //                                      int serviceID = -1;
  412. //                                      if(rs.next()) {
  413. //                                          serviceID = rs.getInt(1);
  414. //                                      }
  415.                                         SQL = "update patientService set lastPayment = '"+localDate+"' where patientID = '"+ID+"'"
  416.                                                 + " and serviceID = "+SID;
  417.                                         System.out.println(SQL);
  418.                                         stm = (PreparedStatement) c.prepareStatement(SQL);
  419.                                         stm.executeUpdate();
  420.                                     }else if(result.get() == buttonTypeTwo) {
  421.                                         System.out.println("entered session ->>>>>>>>>>>>>>>>");
  422.                                         stmt.setInt(6,0);
  423.                                         System.out.println(stmt);
  424.                                         stmt.execute();
  425.                                        
  426.                                     }else if(result.get() == buttonTypeProvider) {
  427.                                         stmt.setInt(6,1);
  428.                                         stmt.execute();
  429.                                     }else if(result.get() == buttonTypePatient) {
  430.                                         stmt.setInt(6,2);
  431.                                         stmt.execute();
  432.                                     }else if(result.get() == buttonTypeStop) {
  433.                                         stmt.setInt(6,3);
  434.                                         stmt.execute();
  435.                                     }
  436.                                     else {
  437.                                         // ... user chose CANCEL or closed the dialog
  438.                                     }
  439.                               }
  440.                               else {
  441.                                     Alert alert = new Alert(AlertType.CONFIRMATION);
  442.                                     //alert.setTitle("Confirmation Dialog with Custom Actions");
  443.                                     alert.setHeaderText("This patient must pay to enter the session");
  444.                                     alert.setContentText("Choose your option.");
  445.    
  446.                                     ButtonType buttonTypeOne = new ButtonType("Pay");
  447.                                     ButtonType buttonTypeCancel = new ButtonType("Cancel", ButtonData.CANCEL_CLOSE);
  448.    
  449.                                     alert.getButtonTypes().setAll(buttonTypeOne, buttonTypeCancel);
  450.    
  451.                                     Optional<ButtonType> result = alert.showAndWait();
  452.                                     if (result.get() == buttonTypeOne){
  453.                                      // ... user chose "One"
  454.                                         System.out.println("pay ->>>>>>>>>>>>>>>>");
  455.                                         SQL = "select SID from service where SName = '"+serviceName+"'";
  456.                                         stm = (PreparedStatement) c.prepareStatement(SQL);
  457. //                                      ResultSet rs = stm.executeQuery();
  458. //                                      int serviceID = -1;
  459. //                                      if(rs.next()) {
  460. //                                          serviceID = rs.getInt(1);
  461. //                                      }
  462.                                         SQL = "update patientService set lastPayment = '"+localDate+"' where patientID = '"+ID+"'"
  463.                                                 + " and serviceID = "+SID;
  464.                                         System.out.println(SQL);
  465.                                         stm = (PreparedStatement) c.prepareStatement(SQL);
  466.                                         stm.executeUpdate();
  467.                                         //Sessions session = new Sessions(prev,localDate);
  468.                                         //session.show();
  469.                                         //current.close();
  470.                                         Alert alert2 = new Alert(AlertType.CONFIRMATION);
  471.                                         //alert.setTitle("Confirmation Dialog with Custom Actions");
  472.                                         alert2.setHeaderText("This patient can enter the session");
  473.                                         alert.setContentText("Choose your option.");
  474.        
  475.                                         ButtonType buttonTypeEnter = new ButtonType("Enter Session");
  476.                                         ButtonType buttonTypeCancel2 = new ButtonType("Cancel", ButtonData.CANCEL_CLOSE);
  477.                                         ButtonType buttonTypeProvider = new ButtonType("provider Excused");
  478.                                         ButtonType buttonTypePatient = new ButtonType("paient Excused");
  479.                                         ButtonType buttonTypeStop = new ButtonType("Stop");;
  480.        
  481.                                         alert2.getButtonTypes().setAll(buttonTypeEnter, buttonTypeProvider,buttonTypePatient,buttonTypeStop );
  482.                                         Optional<ButtonType> result2 = alert2.showAndWait();
  483.                                         if(result2.get() == buttonTypeEnter) {
  484.                                             System.out.println("entered session ->>>>>>>>>>>>>>>>");
  485.                                             stmt.setInt(6,0);
  486.                                             stmt.execute();
  487.                                            
  488.                                         }else if(result2.get() == buttonTypeProvider) {
  489.                                             stmt.setInt(6,1);
  490.                                             stmt.execute();
  491.                                         }else if(result2.get() == buttonTypePatient) {
  492.                                             stmt.setInt(6,2);
  493.                                             stmt.execute();
  494.                                         }else if(result2.get() == buttonTypeStop) {
  495.                                             stmt.setInt(6,3);
  496.                                             stmt.execute();
  497.                                         }
  498.                                         else {
  499.                                             // ... user chose CANCEL or closed the dialog
  500.                                         }      
  501.                                        
  502.                                        
  503.                                     } else {
  504.                                         // ... user chose CANCEL or closed the dialog
  505.                                     }
  506.                                
  507.                               }
  508.                            
  509.                           }
  510.                             Sessions session = new Sessions(prev,localDate);
  511.                             session.show();
  512.                             current.close();
  513.                              
  514.                          
  515.                            
  516.                         }
  517.                         catch(Exception e){
  518.                              e.printStackTrace();
  519.                             System.out.println("Error on Adding Data");
  520.                         }
  521.                        
  522.                        
  523.                      
  524.                         System.out.println("The Id is "+ID);
  525.                        
  526.                     }
  527.                 }
  528.                     else {
  529.                        
  530.                     }
  531.                 }
  532.             });
  533.            
  534.            
  535.        
  536.            
  537.        
  538.        
  539.        
  540.        
  541.     }
  542.    
  543.    
  544.     private ArrayList<String> initializeDays(){
  545.         ArrayList<String> days = new ArrayList<>();
  546.         days.add("Fri");
  547.         days.add("Sat");
  548.         days.add("Sun");
  549.         days.add("Mon");
  550.         days.add("Tue");
  551.         days.add("Wed");
  552.         days.add("Thu");
  553.         return days;
  554.     }
  555.  
  556.     private int getDayIndex(String day ,ArrayList<String> days) {
  557.         for(int i=0;i<days.size();i++) {
  558.             if(day.equals(days.get(i))) return i;
  559.         }
  560.         return -1;
  561.     }
  562. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top