X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;ds=sidebyside;f=src%2Forg%2Fcacert%2Fgigi%2FUser.java;h=96e0a111670a6161bc55b428efc3216f007a078e;hb=2970d5d9bf3577af048f15e3d4a9194d540cb19a;hp=bf47552ac56a7b3e7285eefe20588f895e8aa984;hpb=7cf984749cf0027ccae90a53ebef07ab97ff164b;p=gigi.git diff --git a/src/org/cacert/gigi/User.java b/src/org/cacert/gigi/User.java index bf47552a..96e0a111 100644 --- a/src/org/cacert/gigi/User.java +++ b/src/org/cacert/gigi/User.java @@ -11,23 +11,24 @@ import org.cacert.gigi.util.PasswordHash; public class User { private int id; - String fname; - String mname; - String lname; - String suffix; + Name name = new Name(null, null); + Date dob; String email; public User(int id) { this.id = id; try { - PreparedStatement ps = DatabaseConnection.getInstance().prepare( - "SELECT `fname`, `lname` FROM `users` WHERE id=?"); + PreparedStatement ps = DatabaseConnection + .getInstance() + .prepare( + "SELECT `fname`, `lname`, `dob`, `email` FROM `users` WHERE id=?"); ps.setInt(1, id); ResultSet rs = ps.executeQuery(); if (rs.next()) { - fname = rs.getString(1); - lname = rs.getString(2); + name = new Name(rs.getString(1), rs.getString(2)); + dob = rs.getDate(3); + email = rs.getString(4); } rs.close(); } catch (SQLException e) { @@ -40,22 +41,25 @@ public class User { return id; } public String getFname() { - return fname; + return name.fname; } public String getLname() { - return lname; + return name.lname; } public String getMname() { - return mname; + return name.mname; + } + public Name getName() { + return name; } public void setMname(String mname) { - this.mname = mname; + this.name.mname = mname; } public String getSuffix() { - return suffix; + return name.suffix; } public void setSuffix(String suffix) { - this.suffix = suffix; + this.name.suffix = suffix; } public Date getDob() { return dob; @@ -73,10 +77,10 @@ public class User { this.id = id; } public void setFname(String fname) { - this.fname = fname; + this.name.fname = fname; } public void setLname(String lname) { - this.lname = lname; + this.name.lname = lname; } public void insert(String password) throws SQLException { if (id != 0) { @@ -88,14 +92,88 @@ public class User { + "`suffix`=?, `dob`=?, `created`=NOW(), locked=0"); query.setString(1, email); query.setString(2, PasswordHash.hash(password)); - query.setString(3, fname); - query.setString(4, mname); - query.setString(5, lname); - query.setString(6, suffix); + query.setString(3, name.fname); + query.setString(4, name.mname); + query.setString(5, name.lname); + query.setString(6, name.suffix); query.setDate(7, new java.sql.Date(dob.getTime())); query.execute(); id = DatabaseConnection.lastInsertId(query); System.out.println("Inserted: " + id); } + public boolean canAssure() throws SQLException { + if (getAssurancePoints() < 100) { + return false; + } + + return hasPassedCATS(); + + } + public boolean hasPassedCATS() throws SQLException { + PreparedStatement query = DatabaseConnection.getInstance().prepare( + "SELECT 1 FROM `cats_passed` where `user_id`=?"); + query.setInt(1, id); + ResultSet rs = query.executeQuery(); + if (rs.next()) { + return true; + } else { + return false; + } + } + public int getAssurancePoints() throws SQLException { + PreparedStatement query = DatabaseConnection + .getInstance() + .prepare( + "SELECT sum(points) FROM `notary` where `to`=? AND `deleted`=0"); + query.setInt(1, id); + ResultSet rs = query.executeQuery(); + int points = 0; + if (rs.next()) { + points = rs.getInt(1); + } + rs.close(); + return points; + } + public int getExperiencePoints() throws SQLException { + PreparedStatement query = DatabaseConnection.getInstance().prepare( + "SELECT count(*) FROM `notary` where `from`=? AND `deleted`=0"); + query.setInt(1, id); + ResultSet rs = query.executeQuery(); + int points = 0; + if (rs.next()) { + points = rs.getInt(1) * 2; + } + rs.close(); + return points; + } + @Override + public boolean equals(Object obj) { + if (!(obj instanceof User)) { + return false; + } + User s = (User) obj; + return name.equals(s.name) && email.equals(s.email) + && dob.equals(s.dob); + } + public int getMaxAssurePoints() throws SQLException { + int exp = getExperiencePoints(); + int points = 10; + if (exp >= 10) { + points += 5; + } + if (exp >= 20) { + points += 5; + } + if (exp >= 30) { + points += 5; + } + if (exp >= 40) { + points += 5; + } + if (exp >= 50) { + points += 5; + } + return points; + } }