diff --git a/src/main/java/soapserver/repositories/SubscriptionRepository.java b/src/main/java/soapserver/repositories/SubscriptionRepository.java index e7314b79b445287944339ee453e3f857106c3962..18a2eadab9001140e52d3dfd54dbaee772790155 100644 --- a/src/main/java/soapserver/repositories/SubscriptionRepository.java +++ b/src/main/java/soapserver/repositories/SubscriptionRepository.java @@ -91,8 +91,8 @@ public class SubscriptionRepository { for (int i = 201; i <= 300; i++) { Subscription subscription = new Subscription(); - subscription.setId_user(i); - subscription.setExpiration_date(new Timestamp(System.currentTimeMillis() + (1000 * 60 * 60))); + subscription.setId_user(i + 1); + subscription.setExpiration_date(new Timestamp(System.currentTimeMillis() + (1000 * 60 * 600))); session.save(subscription); } @@ -123,4 +123,79 @@ public class SubscriptionRepository { return false; } } + + public String getExpired(int idUser) { + try { + SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); + Session session = sessionFactory.getCurrentSession(); + + session.beginTransaction(); + + CriteriaBuilder builder = session.getCriteriaBuilder(); + CriteriaQuery<Subscription> criteria = builder.createQuery(Subscription.class); + Root<Subscription> root = criteria.from(Subscription.class); + criteria.select(root).where(builder.equal(root.get("id_user"), idUser)); + + List<Subscription> userSubData = session.createQuery(criteria).getResultList(); + + session.getTransaction().commit(); + + if (userSubData.size() <= 0) { + return "not subscribed"; + } + + Subscription userSubscription = userSubData.get(0); + if (userSubscription == null) { + return "not subscribed"; + } + + // Check expiration time + Timestamp expirationDate = userSubscription.getExpiration_date(); + + return expirationDate.toString(); + } catch (Exception e) { + System.out.println(e.getMessage()); + return "error"; + } + } + + + public boolean extendSubscription(int idUser, int duration) { + try { + SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); + Session session = sessionFactory.getCurrentSession(); + + session.beginTransaction(); + + CriteriaBuilder builder = session.getCriteriaBuilder(); + CriteriaQuery<Subscription> criteria = builder.createQuery(Subscription.class); + Root<Subscription> root = criteria.from(Subscription.class); + criteria.select(root).where(builder.equal(root.get("id_user"), idUser)); + + List<Subscription> userSubData = session.createQuery(criteria).getResultList(); + + session.getTransaction().commit(); + + if (userSubData.size() <= 0) { + return false; + } + + Subscription userSubscription = userSubData.get(0); + if (userSubscription == null) { + return false; + } + + Timestamp expirationDate = userSubscription.getExpiration_date(); + + // extend expiration date + userSubscription.setExpiration_date(new Timestamp(expirationDate.getTime() + duration )); + session.save(userSubscription); + session.getTransaction().commit(); + + return true; + } catch (Exception e) { + System.out.println(e.getMessage()); + return false; + } + } } diff --git a/src/main/java/soapserver/services/SubscriptionService.java b/src/main/java/soapserver/services/SubscriptionService.java index 381039d251e8c096378be99a850c419b82b5a94b..aed8fee3e990fdd75bd792bdb018f288c4c18c09 100644 --- a/src/main/java/soapserver/services/SubscriptionService.java +++ b/src/main/java/soapserver/services/SubscriptionService.java @@ -32,12 +32,12 @@ public class SubscriptionService { return e.getMessage(); } } - + @WebMethod public String seedSubscription() { try { boolean success = subscriptionRepo.seedSubscription(); - + return success ? "success" : "seeding failed"; } catch (Exception e) { System.out.println(e.getMessage()); @@ -57,4 +57,33 @@ public class SubscriptionService { return "error"; } } + + @WebMethod + public String getExpired( + @WebParam(name = "idUser") int idUser + ) { + try { + String expiredDate = subscriptionRepo.getExpired(idUser); + + return expiredDate; + } catch (Exception e) { + System.out.println(e.getMessage()); + return e.getMessage(); + } + } + + @WebMethod + public String extendSubscription( + @WebParam(name = "idUser") int idUser, + @WebParam(name = "duration") int duration + ) { + try { + boolean extended = subscriptionRepo.extendSubscription(idUser, duration); + + return extended ? "extended success" : "extended failed"; + } catch (Exception e) { + System.out.println(e.getMessage()); + return e.getMessage(); + } + } }