package com.airlock.iam.common.infrastructure.factory;

import com.airlock.iam.base.api.infrastructure.plugin.ModuleForConfig;
import com.airlock.iam.common.api.domain.model.user.User;
import com.airlock.iam.common.application.configuration.valueprovider.contextdata.ContextDataDateAndTimeValueProviderConfig;
import com.airlock.iam.common.domain.model.valueprovider.contextdata.GenericContextDataValueProvider;
import com.google.inject.Exposed;
import com.google.inject.PrivateModule;
import com.google.inject.Provides;
import java.util.Date;

@ModuleForConfig(ContextDataDateAndTimeValueProviderConfig.class)
public class ContextDataDateAndTimeValueProviderModule extends PrivateModule {
   @Provides
   @Exposed
   GenericContextDataValueProvider<Date> provideContextDataNullableDateAndTimeValueProvider(ContextDataDateAndTimeValueProviderConfig config, User userProvider) {
      return GenericContextDataValueProvider.<Date>builder()
         .contextDataName(config.getContextDataField().getContextDataName())
         .valueMandatory(config.isMandatory())
         .user(userProvider)
         .build();
   }

   protected void configure() {
   }
}
