package com.airlock.iam.common.application.configuration.termsofservice;

import com.airlock.iam.common.api.domain.model.contextdata.ContextData;
import com.airlock.iam.common.application.configuration.termsofservice.storage.Storage;

public class TermsOfService {
   private final TermsOfServiceConfig termsOfServiceConfig;
   private final Storage storageStrategy;

   public TermsOfService(TermsOfServiceConfig termsOfServiceConfig) {
      this.termsOfServiceConfig = termsOfServiceConfig;
      this.storageStrategy = Storage.createStorage(termsOfServiceConfig);
   }

   public boolean doesUserHaveToAcceptDisclaimer(Object o) {
      return this.storageStrategy.doesUserHaveToAcceptDisclaimer(o);
   }

   public ContextData storeAcceptedToS(ContextData contextData) {
      return this.storageStrategy.storeAcceptedToS(contextData);
   }

   public String getDisclaimerText(String language) {
      String defaultText = null;

      for (DisclaimerTextConfig dt : this.termsOfServiceConfig.getDisclaimerTexts()) {
         if (defaultText == null) {
            defaultText = dt.getText();
         }

         if (dt.getLanguage().equalsIgnoreCase(language)) {
            return dt.getText();
         }
      }

      return defaultText;
   }

   public String getTag() {
      return this.termsOfServiceConfig.getTag();
   }
}
