Advertisement
Guest User

Untitled

a guest
Feb 17th, 2019
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 22.33 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement