package com.airlock.iam.flow.shared.domain.model.valueprovider;

import com.airlock.iam.base.api.domain.model.plugin.LogicForConfig;
import com.airlock.iam.flow.shared.api.domain.model.valueprovider.ValueMapProvider;
import com.airlock.iam.flow.shared.application.configuration.valueprovider.UserDataEditValueMapProviderConfig;
import com.airlock.iam.flow.shared.domain.model.step.data.UserDataEditChangeDescription;
import jakarta.inject.Inject;
import jakarta.inject.Provider;
import java.util.HashMap;
import java.util.Map;

@LogicForConfig(UserDataEditValueMapProviderConfig.class)
public class UserDataEditValuesProvider implements ValueMapProvider {
   private final Provider<UserDataEditChangeDescription> change;

   @Inject
   public UserDataEditValuesProvider(Provider<UserDataEditChangeDescription> change) {
      this.change = change;
   }

   @Override
   public Map<String, Object> provideValueMap() {
      Map<String, Object> values = new HashMap<>(((UserDataEditChangeDescription)this.change.get()).getChanges());
      ((UserDataEditChangeDescription)this.change.get()).getRemovals().forEach(key -> values.put(key, ""));
      return values;
   }
}
