locals {
  email_domain = "mail-npe.delphiplatform.io"
}

data "aws_route53_zone" "delphiplatform_io" {
  name = "delphiplatform.io"
}

resource "aws_route53_zone" "email_domain" {
  name = local.email_domain

  tags = merge(
    local.common_tags,
    {
      project                  = "Appreciation Engine"
      service                  = "Route 53"
      plat_env_project_service = upper("${local.aggregated_tag}_AE_R53")
    }
  )
}

resource "aws_route53_record" "email_domain_ns" {
  zone_id = data.aws_route53_zone.delphiplatform_io.id
  name    = local.email_domain
  type    = "NS"
  ttl     = "30"
  records = aws_route53_zone.email_domain.name_servers
}

resource "aws_ses_domain_identity" "email_domain" {
  domain = local.email_domain
}

resource "aws_route53_record" "email_domain_verification_record" {
  zone_id = aws_route53_zone.email_domain.zone_id
  name    = "_amazonses.${aws_ses_domain_identity.email_domain.id}"
  type    = "TXT"
  ttl     = "600"
  records = [aws_ses_domain_identity.email_domain.verification_token]
}

resource "aws_ses_domain_identity_verification" "email_domain_verification" {
  domain     = aws_ses_domain_identity.email_domain.id
  depends_on = [aws_route53_record.email_domain_verification_record]
}

resource "aws_ses_domain_dkim" "email_domain" {
  domain = aws_ses_domain_identity.email_domain.domain
}

resource "aws_route53_record" "email_domain_dkim_record" {
  count   = 3
  zone_id = aws_route53_zone.email_domain.zone_id
  name    = "${element(aws_ses_domain_dkim.email_domain.dkim_tokens, count.index)}._domainkey"
  type    = "CNAME"
  ttl     = "600"
  records = ["${element(aws_ses_domain_dkim.email_domain.dkim_tokens, count.index)}.dkim.amazonses.com"]
}

resource "aws_route53_record" "email_domain_mx_aws" {
  zone_id = aws_route53_zone.email_domain.zone_id
  name    = ""
  type    = "MX"
  ttl     = "300"
  records = ["10 inbound-smtp.${var.aws_region_id}.amazonaws.com"]
}
