- public static void enterResult(User user, String testType, Date passDate) {
- GigiPreparedStatement ps = DatabaseConnection.getInstance().prepare("INSERT INTO `cats_passed` SET `user_id`=?, `variant_id`=?, `pass_date`=?");
- ps.setInt(1, user.getId());
- ps.setInt(2, getID(testType));
- ps.setTimestamp(3, new Timestamp(passDate.getTime()));
- ps.execute();
+ public static void enterResult(User user, CATSType testType, Date passDate, String language, String version) {
+ enterResult(user, testType.id, passDate, language, version);
+ }
+
+ public static void enterResult(User user, String testType, Date passDate, String language, String version) {
+ enterResult(user, getID(testType), passDate, language, version);
+ }
+
+ private static void enterResult(User user, int testTypeId, Date passDate, String language, String version) {
+
+ try (GigiPreparedStatement ps = new GigiPreparedStatement("INSERT INTO `cats_passed` SET `user_id`=?, `variant_id`=?, `pass_date`=?, `language`=?, `version`=?")) {
+ ps.setInt(1, user.getId());
+ ps.setInt(2, testTypeId);
+ ps.setTimestamp(3, new Timestamp(passDate.getTime()));
+ ps.setString(4, language);
+ ps.setString(5, version);
+ ps.execute();
+ }
+ }
+
+ public static boolean isInCatsLimit(int uID, int testID) {
+ try (GigiPreparedStatement ps = new GigiPreparedStatement("SELECT 1 FROM `cats_passed` WHERE `user_id` = ? AND `variant_id` = ? AND`pass_date` > (now() - interval '1 months' * ?)")) {
+ ps.setInt(1, uID);
+ ps.setInt(2, testID);
+ ps.setInt(3, TEST_MONTHS);
+
+ GigiResultSet rs = ps.executeQuery();
+ return rs.next();
+ }