package com.airlock.iam.common.application.query.restriction;

import ch.ergon.restal.jsonapi.parameter.FilterParameter.Operator;
import com.airlock.iam.base.api.domain.model.store.query.Field;
import com.airlock.iam.base.api.domain.model.store.query.Restriction;
import com.airlock.iam.common.api.domain.model.user.PersistentUser;
import com.airlock.iam.common.application.query.FilterData;
import java.util.Optional;

public class LockRestrictionProvider implements QueryFilterRestrictionProvider {
   @Override
   public Optional<Restriction> getRestriction(FilterData data) {
      Field<PersistentUser, Boolean> field = data.getSchema().lock().locked();
      Boolean value = Boolean.parseBoolean(data.getCondition().getValue());
      Operator operator = data.getCondition().getOperator();
      return operator == Operator.EQUALS ? Optional.of(field.equal(value)) : Optional.of(field.notEqual(value));
   }

   @Override
   public String getProperty() {
      return "locked";
   }
}
