diff --git a/src/main/java/soapserver/repositories/SubscriptionRepository.java b/src/main/java/soapserver/repositories/SubscriptionRepository.java index 52ad9ed82309bb8c61f9d0201dda1939f12c6b95..4c22e3c64d27dfc5ce5fb0fdda3249de5c9e8abf 100644 --- a/src/main/java/soapserver/repositories/SubscriptionRepository.java +++ b/src/main/java/soapserver/repositories/SubscriptionRepository.java @@ -92,7 +92,7 @@ public class SubscriptionRepository { for (int i = 0; i < 100; i++) { Subscription subscription = new Subscription(); subscription.setId_user(i + 1); - subscription.setExpiration_date(new Timestamp(System.currentTimeMillis() + (1000 * 60))); + subscription.setExpiration_date(new Timestamp(System.currentTimeMillis() + (1000 * 60 * 600))); session.save(subscription); } @@ -104,4 +104,43 @@ public class SubscriptionRepository { return false; } } + + 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 f679a168100a3e69ae48d1cd5f84f00c7685d7e4..ea999f94f95eed445f29e41aba504df1ffbf22b7 100644 --- a/src/main/java/soapserver/services/SubscriptionService.java +++ b/src/main/java/soapserver/services/SubscriptionService.java @@ -32,16 +32,32 @@ 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()); return "error"; } } + + @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(); + } + } + }