locals {
  service_name = "customer-management-service"

  container_port = 8101

  env_account = terraform.workspace

  deploy_env_name = lookup(var.workspace_deploy_env, local.env_account)

  spring_config_label = lookup(var.spring_config_label_map, local.env_account)

  subdomain = lookup(var.subdomain_map, local.env_account)

  rds_instance_class = lookup(var.rds_instance_class_map, local.env_account)

  rds_disk_size = lookup(var.rds_disk_size_map, local.env_account)

  console_url = lookup(var.console_url, local.env_account)

  nfbase_subscription_queue = lookup(var.nfbase_subscription_queue, local.env_account)

  hubspot_integration_active = lookup(var.hubspot_integration_active, local.env_account)

  task_count = lookup(var.task_count_map, local.env_account)

  email_from_name  = lookup(var.email_from_name, local.env_account)

  email_from_address = lookup(var.email_from_address, local.env_account)

  support_email = lookup(var.support_email, local.env_account)

  smtp_host = local.workspace["smtp_host"]

  smtp_port = lookup(var.smtp_port, local.env_account)

  smtp_user = lookup(var.smtp_user, local.env_account)

  hubspot_deal_config_growth = lookup(var.hubspot_deal_config_growth, local.env_account)

  hubspot_deal_config_teams = lookup(var.hubspot_deal_config_teams, local.env_account)

  hubspot_task_config = lookup(var.hubspot_task_config, local.env_account)

  hubspot_offboard_deal_config_teams = lookup(var.hubspot_offboard_deal_config_teams, local.env_account)

  hubspot_offboard_deal_config_growth = lookup(var.hubspot_offboard_deal_config_growth, local.env_account)

  env = {
    default = {
      short_name                 = "customer-management"
      service_name               = "customer-management-service"
      health_check_path          = "/actuator/health"
      smtp_host                  = "email-smtp.${var.region[terraform.workspace]}.amazonaws.com"
      rds_instance_name          = "customer-management-service-db"
      rds_disk_size              = 10
      rds_instance_class         = "db.t2.small"
      db_backup_retention_period = 7
      iam_suffix = ""
      dynamodb_access = [
        "arn:aws:dynamodb:*:*:table/countries"
      ]
      failover_task_count = 0
      failover_region = "ap-south-1"
    }

    nf-sandbox = {
      subdomain           = "sandbox.netfoundry.io"
      deploy_env_name     = "sandbox"
      spring_config_label = "develop"
      role_arn            = "arn:aws:iam::721086286010:role/ops-mgmt-admin"
    }

    nf-staging-int = {
      subdomain           = "staging.netfoundry.io"
      deploy_env_name     = "staging"
      spring_config_label = "staging"
      role_arn            = "arn:aws:iam::560269805515:role/ops-mgmt-admin"
    }

    nf-staging-west-int = {
      subdomain           = "staging-west.netfoundry.io"
      deploy_env_name     = "staging"
      spring_config_label = "staging"
      role_arn            = "arn:aws:iam::560269805515:role/ops-mgmt-admin"
      iam_suffix = "-DR"
    }

    nf-prod-int = {
      subdomain           = "production.netfoundry.io"
      deploy_env_name     = "production"
      spring_config_label = "production"
      container_count     = 2
      role_arn            = "arn:aws:iam::745435643501:role/ops-mgmt-admin"
    }
  }

  environmentvars = contains(keys(local.env), terraform.workspace) ? terraform.workspace : "default"
  workspace       = merge(local.env["default"], local.env[local.environmentvars])

  rds_replicate_source_db_map = {
    "nf-sandbox" = ""
    "nf-staging-int" = ""
    "nf-prod-int" = ""
    "nf-staging-west-int" = data.aws_db_instance.primary.db_instance_arn
  }
# use to control RDS instance replication if replication source is defined
  rds_replicate_source_db = "false" # use to convert replica to standalone instance (DR failover)
  replicate_source_db = local.rds_replicate_source_db == "false" ? "" : local.rds_replicate_source_db_map[terraform.workspace]

}
