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

import com.airlock.iam.common.api.domain.model.locking.LockReason;
import com.airlock.iam.common.domain.model.locking.LockReasons;
import java.util.Optional;
import ma.glasnost.orika.MappingContext;
import ma.glasnost.orika.converter.BidirectionalConverter;
import ma.glasnost.orika.metadata.Type;

public final class LockReasonConverter extends BidirectionalConverter<Optional<LockReason>, String> {
   public String convertTo(Optional<LockReason> lockReason, Type<String> destinationType, MappingContext mappingContext) {
      return lockReason.map(LockReason::getResourceKey).orElse(null);
   }

   public Optional<LockReason> convertFrom(String lockReason, Type<Optional<LockReason>> destinationType, MappingContext mappingContext) {
      return Optional.ofNullable(lockReason).map(LockReasons::toLockReason);
   }
}
