diff --git a/.gitignore b/.gitignore
index b93b112ce4ceff13732085413cd21bd47299d808..878e2ae147591f8e3a70d26f96b59e66f1fbee01 100644
--- a/.gitignore
+++ b/.gitignore
@@ -130,4 +130,6 @@ fabric.properties
 .idea/httpRequests
 
 # Android studio 3.1+ serialized cache file
-.idea/caches/build_file_checksums.ser
\ No newline at end of file
+.idea/caches/build_file_checksums.ser
+
+.env
\ No newline at end of file
diff --git a/Dockerfile b/Dockerfile
index 608ed947e31cd2f38e9184821475d16084752aed..2cff4c686eb805568b6aa7376b6d40236b3cf600 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,6 +1,6 @@
 FROM maven:3.6.3-jdk-8
 WORKDIR /app
 COPY . .
-EXPOSE 8002
+EXPOSE 8000
 RUN mvn clean install
 CMD ["mvn", "tomcat7:run"]
\ No newline at end of file
diff --git a/docker-compose.yaml b/docker-compose.yaml
index 2c0b7ff1435c4025cdf00473a0661ee9a68f5f9e..7a00f4f057bcb9fbc1f0f671286b7ffe53eaabcf 100644
--- a/docker-compose.yaml
+++ b/docker-compose.yaml
@@ -5,19 +5,17 @@ services:
     ports:
       - 8000:8000
     hostname: tubes-soap-service
-    # env_file: .env
+    env_file: .env
     volumes:
       - .:/usr/src/app
-#   mysql:
-#     image: mysql:latest
-#     ports:
-#       - "3307:3306"
-#     # env_file: .env
-#     hostname: db-soap-service
-#     volumes:
-#       - ./db:/var/lib/mysql
-#     networks:
-#       - soap-services
-# volumes:
-#   db:
-#     driver: local
+    depends_on:
+      - soap-service-db
+  soap-service-db:
+    image: mysql:latest
+    ports:
+      - "3307:3306"
+    env_file: .env
+    hostname: tubes-soap-db
+volumes:
+  db:
+    driver: local
diff --git a/pom.xml b/pom.xml
index 07982d532a444773127dad1984fa979aa63bdba6..4764cad3781d46cd3f8d8f111abec51c07e30b74 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
 
     <groupId>com.tubes</groupId>
@@ -29,18 +29,6 @@
             <artifactId>jaxws-api</artifactId>
             <version>2.3.1</version>
         </dependency>
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-api</artifactId>
-            <version>${junit.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-engine</artifactId>
-            <version>${junit.version}</version>
-            <scope>test</scope>
-        </dependency>
         <dependency>
             <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-assembly-plugin</artifactId>
@@ -66,123 +54,129 @@
             <artifactId>hibernate-core</artifactId>
             <version>5.6.0.Final</version>
         </dependency>
-        <dependency>
+        <!-- <dependency>
             <groupId>com.fasterxml.jackson.core</groupId>
             <artifactId>jackson-databind</artifactId>
             <version>2.15.3</version>
+        </dependency> -->
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <version>1.18.30</version>
+            <scope>provided</scope>
         </dependency>
     </dependencies>
 
     <build>
         <pluginManagement>
-        <plugins>
-            <plugin>
-            <groupId>org.apache.tomcat.maven</groupId>
-            <artifactId>tomcat7-maven-plugin</artifactId>
-            <version>2.2</version>
-            <configuration>
-                    <port>8000</port>
-                    <path>/</path>
-            </configuration>
-            <dependencies>
-                <dependency>
-                    <groupId>org.apache.tomcat.embed</groupId>
-                    <artifactId>tomcat-embed-core</artifactId>
-                    <version>${tomcat.version}</version>
-                </dependency>
-                <dependency>
-                    <groupId>org.apache.tomcat</groupId>
-                    <artifactId>tomcat-util</artifactId>
-                    <version>${tomcat.version}</version>
-                </dependency>
-                <dependency>
-                    <groupId>org.apache.tomcat</groupId>
-                    <artifactId>tomcat-coyote</artifactId>
-                    <version>${tomcat.version}</version>
-                </dependency>
-                <dependency>
-                    <groupId>org.apache.tomcat</groupId>
-                    <artifactId>tomcat-api</artifactId>
-                    <version>${tomcat.version}</version>
-                </dependency>
-                <dependency>
-                    <groupId>org.apache.tomcat</groupId>
-                    <artifactId>tomcat-jdbc</artifactId>
-                    <version>${tomcat.version}</version>
-                </dependency>
-                <dependency>
-                    <groupId>org.apache.tomcat</groupId>
-                    <artifactId>tomcat-dbcp</artifactId>
-                    <version>${tomcat.version}</version>
-                </dependency>
-                <dependency>
-                    <groupId>org.apache.tomcat</groupId>
-                    <artifactId>tomcat-servlet-api</artifactId>
-                    <version>${tomcat.version}</version>
-                </dependency>
-                <dependency>
-                    <groupId>org.apache.tomcat</groupId>
-                    <artifactId>tomcat-jsp-api</artifactId>
-                    <version>${tomcat.version}</version>
-                </dependency>
-                <dependency>
-                    <groupId>org.apache.tomcat</groupId>
-                    <artifactId>tomcat-jasper</artifactId>
-                    <version>${tomcat.version}</version>
-                </dependency>
-                <dependency>
-                    <groupId>org.apache.tomcat</groupId>
-                    <artifactId>tomcat-jasper-el</artifactId>
-                    <version>${tomcat.version}</version>
-                </dependency>
-                <dependency>
-                    <groupId>org.apache.tomcat</groupId>
-                    <artifactId>tomcat-el-api</artifactId>
-                    <version>${tomcat.version}</version>
-                </dependency>
-                <dependency>
-                    <groupId>org.apache.tomcat</groupId>
-                    <artifactId>tomcat-catalina</artifactId>
-                    <version>${tomcat.version}</version>
-                </dependency>
-                <dependency>
-                    <groupId>org.apache.tomcat</groupId>
-                    <artifactId>tomcat-tribes</artifactId>
-                    <version>${tomcat.version}</version>
-                </dependency>
-                <dependency>
-                    <groupId>org.apache.tomcat</groupId>
-                    <artifactId>tomcat-catalina-ha</artifactId>
-                    <version>${tomcat.version}</version>
-                </dependency>
-                <dependency>
-                    <groupId>org.apache.tomcat</groupId>
-                    <artifactId>tomcat-annotations-api</artifactId>
-                    <version>${tomcat.version}</version>
-                </dependency>
-                <dependency>
-                    <groupId>org.apache.tomcat</groupId>
-                    <artifactId>tomcat-juli</artifactId>
-                    <version>${tomcat.version}</version>
-                </dependency>
-                <dependency>
-                    <groupId>org.apache.tomcat.embed</groupId>
-                    <artifactId>tomcat-embed-logging-juli</artifactId>
-                    <version>${tomcat.version}</version>
-                </dependency>
-                <dependency>
-                    <groupId>org.apache.tomcat.embed</groupId>
-                    <artifactId>tomcat-embed-logging-log4j</artifactId>
-                    <version>${tomcat.version}</version>
-                </dependency>
-            </dependencies>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-war-plugin</artifactId>
-                <version>3.3.0</version>
-            </plugin>
-        </plugins>
+            <plugins>
+                <plugin>
+                    <groupId>org.apache.tomcat.maven</groupId>
+                    <artifactId>tomcat7-maven-plugin</artifactId>
+                    <version>2.2</version>
+                    <configuration>
+                        <port>8000</port>
+                        <path>/</path>
+                    </configuration>
+                    <dependencies>
+                        <dependency>
+                            <groupId>org.apache.tomcat.embed</groupId>
+                            <artifactId>tomcat-embed-core</artifactId>
+                            <version>${tomcat.version}</version>
+                        </dependency>
+                        <dependency>
+                            <groupId>org.apache.tomcat</groupId>
+                            <artifactId>tomcat-util</artifactId>
+                            <version>${tomcat.version}</version>
+                        </dependency>
+                        <dependency>
+                            <groupId>org.apache.tomcat</groupId>
+                            <artifactId>tomcat-coyote</artifactId>
+                            <version>${tomcat.version}</version>
+                        </dependency>
+                        <dependency>
+                            <groupId>org.apache.tomcat</groupId>
+                            <artifactId>tomcat-api</artifactId>
+                            <version>${tomcat.version}</version>
+                        </dependency>
+                        <dependency>
+                            <groupId>org.apache.tomcat</groupId>
+                            <artifactId>tomcat-jdbc</artifactId>
+                            <version>${tomcat.version}</version>
+                        </dependency>
+                        <dependency>
+                            <groupId>org.apache.tomcat</groupId>
+                            <artifactId>tomcat-dbcp</artifactId>
+                            <version>${tomcat.version}</version>
+                        </dependency>
+                        <dependency>
+                            <groupId>org.apache.tomcat</groupId>
+                            <artifactId>tomcat-servlet-api</artifactId>
+                            <version>${tomcat.version}</version>
+                        </dependency>
+                        <dependency>
+                            <groupId>org.apache.tomcat</groupId>
+                            <artifactId>tomcat-jsp-api</artifactId>
+                            <version>${tomcat.version}</version>
+                        </dependency>
+                        <dependency>
+                            <groupId>org.apache.tomcat</groupId>
+                            <artifactId>tomcat-jasper</artifactId>
+                            <version>${tomcat.version}</version>
+                        </dependency>
+                        <dependency>
+                            <groupId>org.apache.tomcat</groupId>
+                            <artifactId>tomcat-jasper-el</artifactId>
+                            <version>${tomcat.version}</version>
+                        </dependency>
+                        <dependency>
+                            <groupId>org.apache.tomcat</groupId>
+                            <artifactId>tomcat-el-api</artifactId>
+                            <version>${tomcat.version}</version>
+                        </dependency>
+                        <dependency>
+                            <groupId>org.apache.tomcat</groupId>
+                            <artifactId>tomcat-catalina</artifactId>
+                            <version>${tomcat.version}</version>
+                        </dependency>
+                        <dependency>
+                            <groupId>org.apache.tomcat</groupId>
+                            <artifactId>tomcat-tribes</artifactId>
+                            <version>${tomcat.version}</version>
+                        </dependency>
+                        <dependency>
+                            <groupId>org.apache.tomcat</groupId>
+                            <artifactId>tomcat-catalina-ha</artifactId>
+                            <version>${tomcat.version}</version>
+                        </dependency>
+                        <dependency>
+                            <groupId>org.apache.tomcat</groupId>
+                            <artifactId>tomcat-annotations-api</artifactId>
+                            <version>${tomcat.version}</version>
+                        </dependency>
+                        <dependency>
+                            <groupId>org.apache.tomcat</groupId>
+                            <artifactId>tomcat-juli</artifactId>
+                            <version>${tomcat.version}</version>
+                        </dependency>
+                        <dependency>
+                            <groupId>org.apache.tomcat.embed</groupId>
+                            <artifactId>tomcat-embed-logging-juli</artifactId>
+                            <version>${tomcat.version}</version>
+                        </dependency>
+                        <dependency>
+                            <groupId>org.apache.tomcat.embed</groupId>
+                            <artifactId>tomcat-embed-logging-log4j</artifactId>
+                            <version>${tomcat.version}</version>
+                        </dependency>
+                    </dependencies>
+                </plugin>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-war-plugin</artifactId>
+                    <version>3.3.0</version>
+                </plugin>
+            </plugins>
         </pluginManagement>
     </build>
 </project>
\ No newline at end of file
diff --git a/src/main/java/soapserver/Main.java b/src/main/java/soapserver/Main.java
index 01eeca38cb8b83e929b888670e90a13d4f6d6e57..c97a4bdb8c3692e200ceeb0073e02451f6d9dd59 100644
--- a/src/main/java/soapserver/Main.java
+++ b/src/main/java/soapserver/Main.java
@@ -1,20 +1,20 @@
 package soapserver;
 
-import java.util.List;
+// import java.util.List;
 
 import javax.xml.ws.Endpoint;
-import javax.xml.ws.handler.Handler;
+// import javax.xml.ws.handler.Handler;
 
 public class Main {
-      public static void main(String[] args) {
-        // HibernateUtil.getSessionFactory();
+  public static void main(String[] args) {
+    // HibernateUtil.getSessionFactory();
+    // System.out.println("WOWOWOWOO");
+    // Endpoint endpoint = Endpoint.create(new SubscriptionService());
 
-        Endpoint endpoint = Endpoint.create(new SubscriptionService());
+    // List<Handler> handlerChain = endpoint.getBinding().getHandlerChain();
+    // handlerChain.add(new LoggerServlet());
+    // endpoint.getBinding().setHandlerChain(handlerChain);
 
-        List<Handler> handlerChain = endpoint.getBinding().getHandlerChain();
-        // handlerChain.add(new LoggerServlet());
-        endpoint.getBinding().setHandlerChain(handlerChain);
-
-        endpoint.publish("http://localhost:8000/api/subscribe");
-    }
+    // endpoint.publish("http://localhost:8000/api/subscribe");
+  }
 }
diff --git a/src/main/java/soapserver/SubscriptionService.java b/src/main/java/soapserver/SubscriptionService.java
index 24a2b74b5946b8502fa19bdd521497847ad283f1..062fe5f777a2efa027ee449ed3b7c1c6e877635c 100644
--- a/src/main/java/soapserver/SubscriptionService.java
+++ b/src/main/java/soapserver/SubscriptionService.java
@@ -1,12 +1,46 @@
 package soapserver;
 
 import javax.jws.WebMethod;
+// import javax.jws.WebParam;
 import javax.jws.WebService;
+import javax.jws.soap.SOAPBinding;
+
+import soapserver.repositories.SubscriptionRepository;
 
 @WebService
+@SOAPBinding(style = SOAPBinding.Style.DOCUMENT)
 public class SubscriptionService {
+  private SubscriptionRepository subscriptionRepo = new SubscriptionRepository();
+
   @WebMethod
   public String hello() {
+    System.out.println("WOJWEKEJWFJEIF");
+    subscriptionRepo.getMessages();
     return "TEKS INI DIKIRIM MELALUI SABUN :o";
   }
+
+  @WebMethod
+  public String checkSubscription(int id_user) {
+    try {
+      System.out.println(id_user);
+      System.out.println(subscriptionRepo.isSubscribed(id_user));
+
+      return "wowowowo";
+    } catch (Exception e) {
+      System.out.println(e.getMessage());
+      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";
+    }
+  }
 }
diff --git a/src/main/java/soapserver/models/Subscription.java b/src/main/java/soapserver/models/Subscription.java
new file mode 100644
index 0000000000000000000000000000000000000000..4d874f67be73e9ddb33e17676b9f53c80f284928
--- /dev/null
+++ b/src/main/java/soapserver/models/Subscription.java
@@ -0,0 +1,25 @@
+package soapserver.models;
+
+import java.io.Serializable;
+import java.sql.Timestamp;
+
+import javax.persistence.Basic;
+// import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+import lombok.Getter;
+import lombok.Setter;
+
+@Entity
+@Table(name = "subscriptions")
+@Getter
+@Setter
+public class Subscription implements Serializable {
+  @Id
+  private Integer id_user;
+
+  @Basic
+  private Timestamp expiration_date;
+}
diff --git a/src/main/java/soapserver/repositories/SubscriptionRepository.java b/src/main/java/soapserver/repositories/SubscriptionRepository.java
new file mode 100644
index 0000000000000000000000000000000000000000..8c55c6c3a827433d239cccb355f3ce46d933df85
--- /dev/null
+++ b/src/main/java/soapserver/repositories/SubscriptionRepository.java
@@ -0,0 +1,109 @@
+package soapserver.repositories;
+
+import java.sql.Timestamp;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.TimeZone;
+
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Root;
+
+import org.hibernate.Session;
+import org.hibernate.SessionFactory;
+
+import soapserver.models.Subscription;
+import soapserver.utils.HibernateUtil;
+
+public class SubscriptionRepository {
+  public List<String> getMessages() {
+    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);
+
+      List<Subscription> subscriptions = session.createQuery(criteria).getResultList();
+      for (Subscription s : subscriptions) {
+        System.out.println("kucing");
+        System.out.println(s.getId_user());
+        System.out.println(s.getExpiration_date());
+      }
+
+      session.getTransaction().commit();
+
+      return new ArrayList<String>();
+    } catch (Exception e) {
+      System.out.println(e);
+      return new ArrayList<String>();
+    }
+  }
+
+  public boolean isSubscribed(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 false;
+      }
+
+      Subscription userSubscription = userSubData.get(0);
+      if (userSubscription == null) {
+        return false;
+      }
+
+      Timestamp expirationDate = userSubscription.getExpiration_date();
+      Timestamp currentTime = new Timestamp(System.currentTimeMillis());
+      System.out.println(expirationDate);
+      System.out.println(currentTime);
+      if (expirationDate.compareTo(currentTime) < 0) {
+        return false;
+      }
+
+      return true;
+    } catch (Exception e) {
+      System.out.println(e.getMessage());
+      return false;
+    }
+  }
+
+  public boolean seedSubscription() {
+    try {
+      SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
+      Session session = sessionFactory.getCurrentSession();
+
+      session.beginTransaction();
+
+      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)));
+        session.save(subscription);
+      }
+
+      session.getTransaction().commit();
+
+      return true;
+    } catch (Exception e) {
+      System.out.println(e.getMessage());
+      return false;
+    }
+  }
+}
diff --git a/src/main/java/soapserver/utils/HibernateUtil.java b/src/main/java/soapserver/utils/HibernateUtil.java
new file mode 100644
index 0000000000000000000000000000000000000000..55168b607f28c111c758dda75f71f9939bd91107
--- /dev/null
+++ b/src/main/java/soapserver/utils/HibernateUtil.java
@@ -0,0 +1,53 @@
+package soapserver.utils;
+
+import java.util.Properties;
+
+import org.hibernate.SessionFactory;
+import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
+import org.hibernate.cfg.Configuration;
+import org.hibernate.service.ServiceRegistry;
+import io.github.cdimascio.dotenv.Dotenv;
+
+import soapserver.models.Subscription;
+
+public class HibernateUtil {
+  private static final String DB_HOST = Dotenv.load().get("MYSQL_HOST", "");
+  private static final String DB_PORT = Dotenv.load().get("MYSQL_PORT", "");
+  private static final String DB_NAME = Dotenv.load().get("MYSQL_DATABASE", "");
+
+  private static final String DB_USER = Dotenv.load().get("MYSQL_USER", "");
+  private static final String DB_PASSWORD = Dotenv.load().get("MYSQL_PASSWORD", "");
+  private static final String DB_URL = String.format("jdbc:mysql://%s:%s/%s", HibernateUtil.DB_HOST,
+      HibernateUtil.DB_PORT, HibernateUtil.DB_NAME);
+
+  private static SessionFactory sessionFactory;
+
+  private static SessionFactory createSessionFactory() {
+    Properties properties = new Properties();
+    properties.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQL8Dialect");
+    properties.setProperty("hibernate.connection.driver_class", "com.mysql.jdbc.Driver");
+    properties.setProperty("hibernate.connection.url", HibernateUtil.DB_URL);
+    properties.setProperty("hibernate.connection.username", HibernateUtil.DB_USER);
+    properties.setProperty("hibernate.connection.password", HibernateUtil.DB_PASSWORD);
+    properties.setProperty("hibernate.hbm2ddl.auto", "update");
+    properties.setProperty("hibernate.jdbc.time_zone", "UTC");
+    properties.put("hibernate.current_session_context_class", "thread");
+
+    Configuration configuration = new Configuration();
+    configuration.setProperties(properties);
+    configuration.addAnnotatedClass(Subscription.class);
+
+    ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties())
+        .build();
+    SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);
+    return sessionFactory;
+  }
+
+  public static SessionFactory getSessionFactory() {
+    if (HibernateUtil.sessionFactory == null) {
+      HibernateUtil.sessionFactory = HibernateUtil.createSessionFactory();
+    }
+
+    return HibernateUtil.sessionFactory;
+  }
+}
diff --git a/src/main/webapp/WEB-INF/sun-jaxws.xml b/src/main/webapp/WEB-INF/sun-jaxws.xml
index 842d841d0404f57f9d5e0b6d54ebaa4609a117a2..b40bc372cf9d9d19e2ba71e41e6ac881fb4b6bbf 100644
--- a/src/main/webapp/WEB-INF/sun-jaxws.xml
+++ b/src/main/webapp/WEB-INF/sun-jaxws.xml
@@ -3,5 +3,5 @@
   <endpoint
     name="SubscriptionWebService"
     implementation="soapserver.SubscriptionService"
-    url-pattern="/api/subscribe" />
+    url-pattern="/subscription" />
 </endpoints>
\ No newline at end of file