From 53ca475d8ac2d932e6c7cb0d8ef55af1011c9eff Mon Sep 17 00:00:00 2001 From: mrsyaban <mrsyaban99@gmail.com> Date: Fri, 17 Nov 2023 03:31:11 +0800 Subject: [PATCH] feat: method extend --- .../repositories/SubscriptionRepository.java | 41 ++++++++++++++++++- .../services/SubscriptionService.java | 20 ++++++++- 2 files changed, 58 insertions(+), 3 deletions(-) diff --git a/src/main/java/soapserver/repositories/SubscriptionRepository.java b/src/main/java/soapserver/repositories/SubscriptionRepository.java index 52ad9ed..4c22e3c 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 f679a16..ea999f9 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(); + } + } + } -- GitLab