/*
module "slzGdprAeEmailFlow_role" {
  source      = "../../../modules/iam/roles/stepfunction_role"
  name_prefix = local.name_prefix
  name        = "slzGdprAeEmailFlow_role"
  common_tags = merge(
    local.common_tags,
    {
      project                  = "SLZ Ingestion",
      service                  = "Step Functions",
      plat_env_project_service = "${local.aggregated_tag}_SLZI_SFU"
    }
  )
  policies_list = [
    module.iam_map.lambda_invoke.arn,
    module.iam_map.sns_publish.arn,
    data.aws_iam_policy.logging.arn,
  ]
}

resource "aws_sfn_state_machine" "slzGdprAeEmailFlow" {
  name       = "${local.name_prefix}-slzGdprAeEmailFlow"
  role_arn   = module.slzGdprAeEmailFlow_role.role.arn
  definition = <<EOF
{
  "StartAt": "Placeholder",
  "States": {
    "Placeholder": {
      "Type": "Pass",
      "End": true
    }
  }
}
EOF
  tags = merge(
    local.common_tags,
    {
      project                  = "SLZ Ingestion",
      service                  = "Step Functions",
      plat_env_project_service = "${local.aggregated_tag}_SLZI_SFU"
    }
  )
  lifecycle {
    ignore_changes = [definition]
  }
}

module "slz_gdpr_ae_email_downloader_lambda_role" {
  source                     = "../../../modules/iam/roles/lambda_role"
  name_prefix                = local.name_prefix
  name                       = "slz_gdpr_ae_email_downloader_lambda_role"
  allow_execution_inside_vpc = true
  common_tags = merge(
    local.common_tags,
    {
      project                  = "SLZ Ingestion",
      service                  = "Step Functions",
      plat_env_project_service = "${local.aggregated_tag}_SLZI_SFU"
    }
  )
  policies_list = [
    module.iam_map.s3_env_ro.arn,
    module.iam_map.s3_sme_data_rw.arn,
    module.iam_map.sns_publish.arn,
    data.aws_iam_policy.logging.arn,
    data.aws_iam_policy.secrets-services-ro.arn,
  ]
}

module "slz_gdpr_email_sender_role" {
  source                     = "../../../modules/iam/roles/lambda_role"
  name_prefix                = local.name_prefix
  name                       = "slz_gdpr_email_sender_role"
  allow_execution_inside_vpc = true
  common_tags = merge(
    local.common_tags,
    {
      project                  = "SLZ Ingestion",
      service                  = "Step Functions",
      plat_env_project_service = "${local.aggregated_tag}_SLZI_SFU"
    }
  )
  policies_list = [
    module.iam_map.s3_env_ro.arn,
    module.iam_map.sns_subscribe.arn,
    module.iam_map.ses_sender.arn,
    data.aws_iam_policy.logging.arn,
    data.aws_iam_policy.secrets-services-ro.arn,
  ]
}

data "aws_iam_policy_document" "slz_gdpr_user_forget_req_result_topic" {
  statement {
    effect = "Allow"
    actions = [
      "sns:Publish"
    ]
    resources = [
      "arn:aws:sns:${var.aws_region_id}:${local.account_id}:${local.name_prefix}-slz_gdpr_user_forget_req_result_topic",
    ]
    principals {
      type        = "Service"
      identifiers = ["s3.amazonaws.com"]
    }
  }
}

resource "aws_sns_topic" "slz_gdpr_user_forget_req_result_topic" {
  name              = "${local.name_prefix}-slz_gdpr_user_forget_req_result_topic"
  display_name      = "${local.name_prefix} slz gdpr user forget_requests result topic"
  kms_master_key_id = data.aws_kms_key.custom_default_sns_key.id
  policy            = data.aws_iam_policy_document.slz_gdpr_user_forget_req_result_topic.json
  tags = merge(
    local.common_tags,
    {
      project                  = "SLZ Ingestion",
      service                  = "SNS",
      plat_env_project_service = "${local.aggregated_tag}_SLZI_SNS"
    }
  )
}

# DLQ
data "aws_iam_policy_document" "slz_gdpr_user_forget_req_result_dlq" {
  statement {
    effect = "Allow"
    actions = [
      "sqs:SendMessage"
    ]
    resources = [
      "arn:aws:sqs:${var.aws_region_id}:${local.account_id}:${local.name_prefix}-slz_gdpr_user_forget_req_result_dlq",
    ]
    principals {
      type        = "Service"
      identifiers = ["sns.amazonaws.com"]
    }
    condition {
      test     = "ArnEquals"
      variable = "aws:SourceArn"
      values   = [aws_sns_topic.slz_gdpr_user_forget_req_result_topic.arn]
    }
  }
}

resource "aws_sqs_queue" "slz_gdpr_user_forget_req_result_topic_dlq" {
  name   = "${local.name_prefix}-slz_gdpr_user_forget_req_result_topic_dlq"
  policy = data.aws_iam_policy_document.slz_gdpr_user_forget_req_result_dlq.json

  kms_master_key_id                 = data.aws_kms_key.custom_default_sqs_key.id
  kms_data_key_reuse_period_seconds = 900

  tags = merge(
    local.common_tags,
    {
      project                  = "SLZ Ingestion",
      service                  = "SQS",
      plat_env_project_service = "${local.aggregated_tag}_SLZI_SQS"
    }
  )
}

resource "aws_sns_topic_subscription" "slz_gdpr_user_forget_req_result_subscription" {
  topic_arn      = aws_sns_topic.slz_gdpr_user_forget_req_result_topic.arn
  protocol       = "lambda"
  endpoint       = "arn:aws:lambda:${var.aws_region_id}:${local.account_id}:function:${local.name_prefix}-slz-gdpr-email-sender-${local.env_prefix}"
  redrive_policy = "{\"deadLetterTargetArn\":\"${aws_sqs_queue.slz_gdpr_user_forget_req_result_topic_dlq.arn}\"}"
}

resource "aws_lambda_permission" "slz_gdpr_email_sender" {
  statement_id  = "AllowExecutionFromSNS"
  action        = "lambda:InvokeFunction"
  function_name = "${local.name_prefix}-slz-gdpr-email-sender-${local.env_prefix}"
  principal     = "sns.amazonaws.com"
  source_arn    = aws_sns_topic.slz_gdpr_user_forget_req_result_topic.arn
}
*/
