locals {
  crm_subdomain = "crm.delphiplatform.io"
}

data "aws_route53_zone" "delphiplatform_io" {
  provider = aws.gdb-delphi-dev
  name     = "delphiplatform.io"
}

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

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

resource "aws_route53_record" "crm_subdomain_ns" {
  provider = aws.gdb-delphi-dev
  zone_id  = data.aws_route53_zone.delphiplatform_io.id
  name     = local.crm_subdomain
  type     = "NS"
  ttl      = "30"
  records  = aws_route53_zone.crm_subdomain.name_servers
}

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

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

resource "aws_ses_domain_identity_verification" "crm_subdomain_verification" {
  domain     = aws_ses_domain_identity.crm_subdomain.id
  depends_on = [aws_route53_record.crm_subdomain_verification_record]
}

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

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

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


# Firstly created domain validation
locals {
  crm_ecommerce_domain_name = "crm-ecommerce.delphiplatform.io"
}

resource "aws_ses_domain_identity" "crm_ecommerce" {
  domain = local.crm_ecommerce_domain_name
}

resource "aws_route53_record" "crm_ecommerce_amazonses_verification_record" {
  zone_id  = data.aws_route53_zone.delphiplatform_io.id
  name     = "_amazonses.${aws_ses_domain_identity.crm_ecommerce.id}"
  type     = "TXT"
  ttl      = "600"
  records  = [aws_ses_domain_identity.crm_ecommerce.verification_token]
  provider = aws.gdb-delphi-dev
}

resource "aws_ses_domain_identity_verification" "crm_ecommerce_verification" {
  domain     = aws_ses_domain_identity.crm_ecommerce.id
  depends_on = [aws_route53_record.crm_ecommerce_amazonses_verification_record]
}
