diff --git a/src/main/java/controllers/RegisterController.java b/src/main/java/controllers/RegisterController.java index 0b20958..0525349 100644 --- a/src/main/java/controllers/RegisterController.java +++ b/src/main/java/controllers/RegisterController.java @@ -51,7 +51,7 @@ public class RegisterController extends Controller { return failure; } - public String validateEmail(String email){ + public static String validateEmail(String email){ String failure = ""; Pattern uclivePattern = Pattern.compile(".*@uclive.ac.nz", Pattern.CASE_INSENSITIVE); Pattern canterburyPattern = Pattern.compile(".*@canterbury.ac.nz", Pattern.CASE_INSENSITIVE); @@ -61,7 +61,7 @@ public class RegisterController extends Controller { return failure; } - public String validatePassword(String p1, String p2){ + public static String validatePassword(String p1, String p2){ String failure = ""; if (p1.length() < 6){ failure += "Your password must be at least 6 letters long.\n"; @@ -72,7 +72,7 @@ public class RegisterController extends Controller { return failure; } - public String validateAddress(String address){ + public static String validateAddress(String address){ String failure = ""; if (!DataValidator.addressValidator(address)){ failure += "Your address must be similar to 1 University Drive or 1/1 University Drive or 1A/2 University Drive or 1A/2A University Drive.\n"; @@ -80,7 +80,7 @@ public class RegisterController extends Controller { return failure; } - public String validatePhone(String hp, String mp){ + public static String validatePhone(String hp, String mp){ String failure = ""; if ((hp.equals("") || hp == null) && (mp.equals("")||mp == null)){ failure += "You must enter either a home phone number or a mobile phone number.\n"; diff --git a/src/main/java/controllers/RegisterDriverController.java b/src/main/java/controllers/RegisterDriverController.java new file mode 100644 index 0000000..237b790 --- /dev/null +++ b/src/main/java/controllers/RegisterDriverController.java @@ -0,0 +1,128 @@ +package controllers; + +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.fxml.FXML; +import javafx.scene.control.Alert; +import javafx.scene.control.ComboBox; +import javafx.scene.control.DatePicker; +import javafx.scene.control.TextField; +import javafx.scene.image.Image; +import model.Driver; +import model.SceneCode; +import model.Session; + +import java.net.URL; +import java.time.LocalDate; +import java.util.ResourceBundle; + +/** + * Created by Gondr on 1/06/2017. + */ +public class RegisterDriverController extends Controller { + + private Image photoStored; + private int studentNumber; + private String email; + private String password; + private String address; + private String homephone; + private String mobilephone; + private String accountType; + @FXML + private ComboBox licenseType; + @FXML + private TextField number; + @FXML + private DatePicker issue; + @FXML + private DatePicker expiry; + + public void setUserInformation(int studentNumber, String email, String password, String address, String homephone, String mobilephone, String accountType, Image photoStored){ + this.studentNumber = studentNumber; + this.email = email; + this.password = password; + this.address = address; + this.homephone = homephone; + this.mobilephone = mobilephone; + this.accountType = accountType; + this.photoStored = photoStored; + } + + public static String validateLicense(String ln){ + String failure = ""; + if (ln.length() < 6){ + failure += "Your License must be at least 6 letters long.\n"; + } + return failure; + } + + public static String validateIssue(LocalDate d){ + String failure = ""; + if (d == null){ + failure += "You must set a date of issue.\n"; + }else { + if (LocalDate.now().isBefore(d)) { + failure += "You cannot have a issue date earlier than today.\n"; + } + } + return failure; + } + + public static String validateExpire(LocalDate e, LocalDate i){ + String failure = ""; + if (e == null){ + failure += "You must set a date of expiry.\n"; + } else { + if (i != null) { + if (e.isBefore(i)) { + failure += "You cannot have your expiry date before your date of issue.\n"; + } + } + } + return failure; + } + + public boolean validate(){ + String failure = ""; + failure += validateLicense(number.getText()); + failure += validateIssue(issue.getValue()); + failure += validateExpire(expiry.getValue(), issue.getValue()); + if (failure.equals("")){ + return true; + }else{ + popUp(Alert.AlertType.WARNING, "Error!", "Your details are not valid for the following reasons.", failure); + return false; + } + } + + public void createAccount(){ + if (validate()){ + Driver.LicenseType lc = Driver.LicenseType.getValueOf(licenseType.getValue()); + Driver driver = new Driver(studentNumber, email, password, address,homephone, mobilephone, photoStored, lc, number.getText(), issue.getValue(), expiry.getValue()); + if (Session.session.getDataManager().addDriver(driver)){ + popUp(Alert.AlertType.CONFIRMATION, "Success!", "Your Account has been made.", "You can now log in and will be redirected the the title screen after."); + try { + changeScene(SceneCode.MAIN); + } catch (Exception e) { + e.printStackTrace(); + } + }else { + popUp(Alert.AlertType.WARNING, "Error!", "There is already an passenger with this id.", "You will be redirected to the homescreen to log in."); + try { + changeScene(SceneCode.MAIN); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + } + + @Override + public void initialize(URL location, ResourceBundle resources) { + ObservableList licenseTypes = FXCollections.observableArrayList(); + licenseTypes.addAll(Driver.LicenseType.RESTRICTED.name, Driver.LicenseType.FULL.name, Driver.LicenseType.FULL2YEARS.name); + licenseType.setItems(licenseTypes); + licenseType.getSelectionModel().select(0); + } +} diff --git a/src/main/java/controllers/UploadPhotoController.java b/src/main/java/controllers/UploadPhotoController.java index 290e2f7..f7b1db1 100644 --- a/src/main/java/controllers/UploadPhotoController.java +++ b/src/main/java/controllers/UploadPhotoController.java @@ -59,6 +59,10 @@ public class UploadPhotoController extends Controller { } public void next(){ + if (photoStored == null){ + popUp(Alert.AlertType.WARNING, "Error!", "Missing Photo.", "You must have a photo with your account."); + return; + } User.AccountType ac = User.AccountType.getValueOf(accountType); if (ac == User.AccountType.PASSENGER){ User user = new User(studentNumber, email, password, address,homephone, mobilephone, photoStored); @@ -78,7 +82,13 @@ public class UploadPhotoController extends Controller { } } }else{ - //changeScene() + try { + RegisterDriverController c = (RegisterDriverController) changeScene(SceneCode.REGISTER_DRIVER); + c.setUserInformation(studentNumber, email, password, address, + homephone, mobilephone, accountType, photoStored); + } catch (Exception e) { + e.printStackTrace(); + } } } diff --git a/src/main/java/model/DataManager.java b/src/main/java/model/DataManager.java index a1b1440..fcaabeb 100644 --- a/src/main/java/model/DataManager.java +++ b/src/main/java/model/DataManager.java @@ -120,7 +120,17 @@ public class DataManager { return users; } + public boolean addDriver(Driver driver){ + if (!drivers.containsKey(String.valueOf(driver.studentNumber))) { + drivers.put(String.valueOf(driver.studentNumber), driver); + return true; + } + return false; + } + public Map getDrivers() { return drivers; } + + } diff --git a/src/main/java/model/Driver.java b/src/main/java/model/Driver.java index e464079..29b4d0e 100644 --- a/src/main/java/model/Driver.java +++ b/src/main/java/model/Driver.java @@ -3,6 +3,7 @@ package model; import javafx.scene.image.Image; import java.awt.image.BufferedImage; +import java.time.LocalDate; /** * Created by Gondr on 1/06/2017. @@ -11,8 +12,8 @@ public class Driver extends User{ protected LicenseType licenseType; protected String licenseNumber; - protected String licenseDateIssued; - protected String licenseDateExpire; + protected LocalDate licenseDateIssued; + protected LocalDate licenseDateExpire; public enum LicenseType{ RESTRICTED("Restricted"), FULL("Full"), FULL2YEARS("Full for 2 Years"); @@ -21,10 +22,22 @@ public class Driver extends User{ LicenseType(String name){ this.name = name; } + public static LicenseType getValueOf(String s){ + switch (s){ + case "Restricted": + return RESTRICTED; + case "Full": + return FULL; + case "Full for 2 Years": + return FULL2YEARS; + default: + return null; + } + } } public Driver(int studentNumber, String email, String password, String address, String homephone, String mobilephone, - Image photo, LicenseType licenseType, String licenseNumber, String licenseDateIssued, String licenseDateExpire){ + Image photo, LicenseType licenseType, String licenseNumber, LocalDate licenseDateIssued, LocalDate licenseDateExpire){ super(studentNumber, email, password, address, homephone, mobilephone, photo); this.accountType = AccountType.DRIVER; this.licenseType = licenseType; diff --git a/src/main/java/model/SceneCode.java b/src/main/java/model/SceneCode.java index b1e135d..bd3b029 100644 --- a/src/main/java/model/SceneCode.java +++ b/src/main/java/model/SceneCode.java @@ -16,7 +16,7 @@ public enum SceneCode { //screens after login HOME("home"),ADD_RIDE("addride"),MY_RIDES("myrides"), ADD_STOPS("addstops"), MY_STOPS("mystops"), ADD_ROUTE("addroute"), MY_ROUTES("myroutes"), ADD_TRIP("addtrip"), MY_TRIPS("mytrips"), SHARED_RIDES("sharedtrips"), SEARCH_STOPS("searchstops"), - REGISTER("register", false), ADD_PHOTO("addphoto", false); + REGISTER("register", false), ADD_PHOTO("addphoto", false), REGISTER_DRIVER("registerdriver", false); private String path; private boolean loadMenu; diff --git a/src/main/java/utils/DataManagerSerialiser.java b/src/main/java/utils/DataManagerSerialiser.java index e8acbce..cf4436f 100644 --- a/src/main/java/utils/DataManagerSerialiser.java +++ b/src/main/java/utils/DataManagerSerialiser.java @@ -192,7 +192,7 @@ public class DataManagerSerialiser extends Serialiser { HashMap drivers = gson.fromJson(reader7, new TypeToken>(){}.getType()); reader7.close(); for (String driverkey: drivers.keySet()){ - users.get(driverkey).deserialise(); + drivers.get(driverkey).deserialise(); } return new DataManager(rides, stops, routes, trips, sharedTrips, users, drivers); diff --git a/src/main/resources/scenes/registerdriver.fxml b/src/main/resources/scenes/registerdriver.fxml new file mode 100644 index 0000000..b17f661 --- /dev/null +++ b/src/main/resources/scenes/registerdriver.fxml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +