/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package hoteldraft; import java.io.IOException; import java.net.URL; import java.util.List; import java.util.ResourceBundle; import javafx.animation.RotateTransition; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; import javafx.fxml.Initializable; import javafx.scene.Node; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.ComboBox; import javafx.scene.control.Label; import javafx.scene.control.ListView; import javafx.scene.control.TextField; import javafx.scene.effect.ColorAdjust; import javafx.scene.effect.Light; import javafx.scene.effect.Lighting; import javafx.scene.image.ImageView; import javafx.scene.input.MouseEvent; import javafx.scene.paint.Color; import static javafx.scene.paint.Color.rgb; import javafx.scene.text.Text; import javafx.stage.Stage; import javafx.util.Duration; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.Transaction; /** * * @author Hala */ public class NewServicesController implements Initializable { private double xOffSet = 0; private double yOffSet = 0; private Stage stage; private Scene scene; private Parent root; @FXML private Label exit; @FXML private Label minimize; @FXML private ImageView settingsImg; @FXML private Button settingsImgBtn; @FXML private TextField roomNo; @FXML private ComboBox<String> foodCB; @FXML private ComboBox<String> spaCB; @FXML private ComboBox<String> transportationCB; @FXML private ListView serviceList; @FXML private Text success; private String food = "None"; private String spa = "None"; private String transportation = "None"; private String gym = "None"; private String doctor = "None"; private String clean = "None"; private String flower = "None"; @Override public void initialize(URL location, ResourceBundle resources) { //initialize values foodCB.getItems().addAll("Breakfast", "Lunch", "Dinner", "Breakfast & Lunch", "Breakfast & Dinner", "Lunch & Dinner", "All"); spaCB.getItems().addAll("Full-body mud mask", "Herbal body wrap", "Paraffin body wrap", "Full body massage", "Full-body facial", "Body tanning", "Water therapy", "Spot treatment", "Turkish bath massage", "full package"); transportationCB.getItems().addAll("Car rent", "Car parking", "Taxi", "Tour bus"); //Listener to limit textfield to 5 letters length and prevent letters from input roomNo.textProperty().addListener(new ChangeListener<String>() { public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) { if (!newValue.matches("\\d*")) { roomNo.setText(newValue.replaceAll("[^\\d]", "")); } if (roomNo.getText().length() > 5) { String s = roomNo.getText().substring(0, 5); roomNo.setText(s); } } }); //to change settings imageview color Lighting lighting = new Lighting(new Light.Distant(45, 90, rgb(105, 152, 171))); ColorAdjust bright = new ColorAdjust(0, 1, 1, 1); lighting.setContentInput(bright); lighting.setSurfaceScale(0.0); settingsImg.setEffect(lighting); // to rotate settings button on hover RotateTransition rotation = new RotateTransition(Duration.seconds(0.5), settingsImgBtn); rotation.setCycleCount(1); rotation.setByAngle(180); settingsImgBtn.setOnMouseEntered(e -> rotation.play()); settingsImgBtn.setOnMouseExited(e -> rotation.pause()); } //Add the food order to the list @FXML private void foodOrder(ActionEvent event) { if (!serviceList.getItems().contains(foodCB.getValue())) { if (!food.isEmpty()) { serviceList.getItems().remove(food); } serviceList.getItems().add(foodCB.getValue()); food = foodCB.getValue(); } } //Add the spa order to the list @FXML private void spaOrder(ActionEvent event) { if (!serviceList.getItems().contains(spaCB.getValue())) { if (!spa.isEmpty()) { serviceList.getItems().remove(spa); } serviceList.getItems().add(spaCB.getValue()); spa = spaCB.getValue(); } } //Add the gym avilability to the list @FXML private void gym(ActionEvent event) { if (!serviceList.getItems().contains("Gym ticket")) { serviceList.getItems().add("Gym ticket"); gym = "true"; } else if (serviceList.getItems().contains("Gym ticket")) { serviceList.getItems().remove("Gym ticket"); gym = "None"; } } //Add the transportation order to the list @FXML private void transportationOrder(ActionEvent event) { if (!serviceList.getItems().contains(transportationCB.getValue())) { if (!transportation.isEmpty()) { serviceList.getItems().remove(transportation); } serviceList.getItems().add(transportationCB.getValue()); transportation = transportationCB.getValue(); } } //Calling a doctor added to the list @FXML private void doctorCall(ActionEvent event) { if (!serviceList.getItems().contains("Call doctor")) { serviceList.getItems().add("Call doctor"); doctor = "true"; } else if (serviceList.getItems().contains("Call doctor")) { serviceList.getItems().remove("Call doctor"); doctor = "None"; } } //Add the cleaning avilability to the list @FXML private void clean(ActionEvent event) { if (!serviceList.getItems().contains("Cleaning")) { serviceList.getItems().add("Cleaning"); clean = "Cleaning"; } else if (serviceList.getItems().contains("Cleaning")) { serviceList.getItems().remove("Cleaning"); clean = "None"; } } //Add the flowers arrangment to the list @FXML private void flowers(ActionEvent event) { if (!serviceList.getItems().contains("Flowers arrangment")) { serviceList.getItems().add("Flowers arrangment"); flower = "Flowers arrangment"; } else if (serviceList.getItems().contains("Flowers arrangment")) { serviceList.getItems().remove("Flowers arrangment"); flower = "None"; } } //Clear the list @FXML private void clear(ActionEvent event) { serviceList.getItems().clear(); food = "None"; spa = "None"; transportation = "None"; doctor = "None"; clean = "None"; flower = "None"; } //Delete the list @FXML private void delete(ActionEvent event) { String o = String.valueOf(serviceList.getItems().remove(serviceList.getSelectionModel().getSelectedIndex())); if (gym.equals(o)) { gym = "None"; } else if (doctor.equals(o)) { doctor = "None"; } else if (clean.equals(o)) { clean = "None"; } else if (flower.equals(o)) { flower = "None"; } else if (food.equals(o)) { food = "None"; } else if (spa.equals(o)) { spa = "None"; } else if (transportation.equals(o)) { transportation = "None"; } } //Submitting @FXML private void submit(ActionEvent event) throws IOException { boolean exists = false; Session session3 = HibernateUtil.getSessionFactory().openSession(); Query q3 = session3.createQuery("from Rooms"); List<Rooms> RList = q3.list(); session3.close(); for (Rooms R : RList) { if (Integer.parseInt(roomNo.getText()) == R.getRoomNum()) { exists = true; break; } } boolean no = false; Session session1 = HibernateUtil.getSessionFactory().openSession(); Query Q = session1.createQuery("from Reservation"); List<Reservation> rList = Q.list(); session1.close(); for (Reservation R : rList) { if (roomNo.getText().equals(String.valueOf(R.getRoomNo()))) { no = true; break; } } if (roomNo.getText().isEmpty()) { success.setText("There is no room number!"); } else if (serviceList.getItems().isEmpty()) { success.setText("No services added!"); } else if (exists == false) { System.out.println(exists); success.setText("Room doesnt exist!"); } else if (no == false) { success.setText("There is no reservation in that room no!"); } else { int rn = Integer.valueOf(roomNo.getText()); List<Services> SList = null; Session session = HibernateUtil.getSessionFactory().openSession(); Query q = session.createQuery("from Services"); SList = q.list(); session.close(); for (Services s : SList) { if (Integer.valueOf(roomNo.getText()).equals(s.getRoomNo())) { Services services = new Services(rn, s.getFoodOrder(), s.getSpa(), s.getGym(), s.getTransportation(), s.getDoctor(), s.getCleaning(), s.getFlower()); if (!food.equals("None")) { services.setFoodOrder(food); } if (!spa.equals("None")) { services.setSpa(spa); } if (!gym.equals("None")) { services.setGym(gym); } if (!transportation.equals("None")) { services.setTransportation(transportation); } if (!doctor.equals("None")) { services.setDoctor(doctor); } if (!clean.equals("None")) { services.setCleaning(clean); } if (!flower.equals("None")) { services.setFlower(flower); } Session session2 = HibernateUtil.getSessionFactory().openSession(); Transaction tx = session2.beginTransaction(); session2.update(services); tx.commit(); session2.close(); Parent root = FXMLLoader.load(getClass().getResource("Services.fxml")); root.setOnMousePressed((e) -> { xOffSet = e.getSceneX(); yOffSet = e.getSceneY(); }); root.setOnMouseDragged((e) -> { stage.setX(e.getScreenX() - xOffSet); stage.setY(e.getScreenY() - yOffSet); });/**/ stage = (Stage) ((Node) event.getSource()).getScene().getWindow(); scene = new Scene(root, Color.TRANSPARENT); stage.setScene(scene); stage.show(); return; } } Services s = new Services(rn, food, spa, gym, transportation, doctor, clean, flower); Session session2 = HibernateUtil.getSessionFactory().openSession(); Transaction tx = session2.beginTransaction(); session2.save(s); tx.commit(); session2.close(); Parent root = FXMLLoader.load(getClass().getResource("Services.fxml")); root.setOnMousePressed((e) -> { xOffSet = e.getSceneX(); yOffSet = e.getSceneY(); }); root.setOnMouseDragged((e) -> { stage.setX(e.getScreenX() - xOffSet); stage.setY(e.getScreenY() - yOffSet); }); stage = (Stage) ((Node) event.getSource()).getScene().getWindow(); scene = new Scene(root, Color.TRANSPARENT); stage.setScene(scene); stage.show(); } } //Methods to close and minimize window. @FXML private void close_app(javafx.scene.input.MouseEvent event ) { System.exit(0); } @FXML private void minimize_app(javafx.scene.input.MouseEvent event) { stage = (Stage) ((Node) event.getSource()).getScene().getWindow(); stage.setIconified(true); } /*---------------------class switching events---------------------*/ @FXML public void switchToReservations(ActionEvent e) throws IOException { Parent root = FXMLLoader.load(getClass().getResource("Reservations.fxml")); root.setOnMousePressed((event) -> { xOffSet = event.getSceneX(); yOffSet = event.getSceneY(); }); root.setOnMouseDragged((event) -> { stage.setX(event.getScreenX() - xOffSet); stage.setY(event.getScreenY() - yOffSet); }); stage = (Stage) ((Node) e.getSource()).getScene().getWindow(); scene = new Scene(root, Color.TRANSPARENT); stage.setScene(scene); stage.show(); } public void switchToNewReservation(ActionEvent e) throws IOException { Parent root = FXMLLoader.load(getClass().getResource("NewReservation.fxml")); root.setOnMousePressed((event) -> { xOffSet = event.getSceneX(); yOffSet = event.getSceneY(); }); root.setOnMouseDragged((event) -> { stage.setX(event.getScreenX() - xOffSet); stage.setY(event.getScreenY() - yOffSet); }); stage = (Stage) ((Node) e.getSource()).getScene().getWindow(); scene = new Scene(root, Color.TRANSPARENT); stage.setScene(scene); stage.show(); } @FXML public void switchToLoggedIn(ActionEvent e) throws IOException { Parent root = FXMLLoader.load(getClass().getResource("LoggedIn.fxml")); root.setOnMousePressed((event) -> { xOffSet = event.getSceneX(); yOffSet = event.getSceneY(); }); root.setOnMouseDragged((event) -> { stage.setX(event.getScreenX() - xOffSet); stage.setY(event.getScreenY() - yOffSet); }); stage = (Stage) ((Node) e.getSource()).getScene().getWindow(); scene = new Scene(root, Color.TRANSPARENT); stage.setScene(scene); stage.show(); } @FXML public void switchToRooms(ActionEvent e) throws IOException { Parent root = FXMLLoader.load(getClass().getResource("Rooms.fxml")); root.setOnMousePressed((event) -> { xOffSet = event.getSceneX(); yOffSet = event.getSceneY(); }); root.setOnMouseDragged((event) -> { stage.setX(event.getScreenX() - xOffSet); stage.setY(event.getScreenY() - yOffSet); }); stage = (Stage) ((Node) e.getSource()).getScene().getWindow(); scene = new Scene(root, Color.TRANSPARENT); stage.setScene(scene); stage.show(); } @FXML public void switchToServices(ActionEvent e) throws IOException { Parent root = FXMLLoader.load(getClass().getResource("Services.fxml")); root.setOnMousePressed((event) -> { xOffSet = event.getSceneX(); yOffSet = event.getSceneY(); }); root.setOnMouseDragged((event) -> { stage.setX(event.getScreenX() - xOffSet); stage.setY(event.getScreenY() - yOffSet); }); stage = (Stage) ((Node) e.getSource()).getScene().getWindow(); scene = new Scene(root, Color.TRANSPARENT); stage.setScene(scene); stage.show(); } @FXML public void switchToSearch(ActionEvent e) throws IOException { Parent root = FXMLLoader.load(getClass().getResource("Search.fxml")); root.setOnMousePressed((event) -> { xOffSet = event.getSceneX(); yOffSet = event.getSceneY(); }); root.setOnMouseDragged((event) -> { stage.setX(event.getScreenX() - xOffSet); stage.setY(event.getScreenY() - yOffSet); }); stage = (Stage) ((Node) e.getSource()).getScene().getWindow(); scene = new Scene(root, Color.TRANSPARENT); stage.setScene(scene); stage.show(); } @FXML public void switchToSettings(ActionEvent e) throws IOException { Parent root = FXMLLoader.load(getClass().getResource("Settings.fxml")); root.setOnMousePressed((event) -> { xOffSet = event.getSceneX(); yOffSet = event.getSceneY(); }); root.setOnMouseDragged((event) -> { stage.setX(event.getScreenX() - xOffSet); stage.setY(event.getScreenY() - yOffSet); }); stage = (Stage) ((Node) e.getSource()).getScene().getWindow(); scene = new Scene(root, Color.TRANSPARENT); stage.setScene(scene); stage.show(); } }