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

import com.airlock.iam.authentication.api.domain.model.event.AuthenticationFlowSuccessfullyCompleted;
import com.airlock.iam.common.api.domain.model.authmethod.AuthenticationMethod;
import com.airlock.iam.common.api.domain.model.event.LoginFromNewDeviceEvent;
import com.airlock.iam.common.infrastructure.event.EventPayloadData;
import java.util.Map;
import org.mapstruct.Mapper;

@Mapper
public interface AuthenticationEventMapper {
   default EventPayloadData mapAuthenticationFlowSuccessfullyCompleted(AuthenticationFlowSuccessfullyCompleted event) {
      return new EventPayloadData(Map.of("authenticationMethods", event.authenticationMethods().stream().map(AuthenticationMethod::getId).toList()));
   }

   default EventPayloadData mapLoginFromNewDevice(LoginFromNewDeviceEvent event) {
      return new EventPayloadData(
         Map.of(
            "browser",
            event.browser(),
            "operatingSystem",
            event.operatingSystem(),
            "device",
            event.device(),
            "countryCode",
            event.countryCode(),
            "city",
            event.city()
         )
      );
   }
}
