data "aws_ecr_repository" "daily_data_alert_ecr" {
  name = "delphi/daily-data-alert"

  provider = aws.gdb-delphi-dev
}

module "daily_data_alert_role" {
  source = "../../../modules/iam/roles/ecs_task_role"

  name        = "daily_data_alert"
  name_prefix = local.name_prefix

  policies_list = [
    data.aws_iam_policy.secrets-services-ro.arn,
    data.aws_iam_policy.logging.arn,
    module.iam_map.ses_sender.arn,
  ]
}

module "daily_data_alert_task_def" {
  source = "../../../modules/ecs/tasks/fargate_v3"

  env_prefix      = local.env_prefix
  project_group   = local.project_group
  family          = "${local.env_prefix}-${local.project_group}-daily-data-alert"
  container_name  = "daily-data-alert"
  container_image = "${data.aws_ecr_repository.daily_data_alert_ecr.repository_url}:master"
  cpu             = 512
  memory          = 1024

  awslogs_retention = 30

  task_role_arn = module.daily_data_alert_role.role.arn
  exec_role_arn = data.aws_iam_role.standard_exec.arn

  env_vars = [
    {
      name  = "ENVIRONMENT"
      value = local.env_prefix
    },
    {
      name  = "SLACK_CHANNEL_ID"
      value = "C05RZN6H7GR" // #slack-api-public-test TODO: change it to CTBHDU5SB #alerts-data-issues-ap-delphi later
    },
    {
      name  = "MAIL_SERVER"
      value = "email-smtp.us-east-1.amazonaws.com"
    },
    {
      name  = "MAIL_PORT"
      value = 587
    },
    {
      name  = "MAIL_FROM"
      value = local.ses_no_reply_email
    },
    {
      name  = "MAIL_TO",
      value = "support.sme@dataart.com"
    },
    {
      name  = "MAIL_BCC",
      value = ""
    },
  ]
  secrets = [
    {
      name      = "SLACK_TOKEN"
      valueFrom = "arn:aws:secretsmanager:${var.aws_region_id}:${local.account_id}:secret:delphi/${local.env_prefix}/slack_notifications/SLACK_API_TOKEN"
    }
  ]

  common_tags = merge(
    local.common_tags,
    {
      project                  = "Infrastructure",
      service                  = "ECS",
      plat_env_project_service = "${local.aggregated_tag}_INFRA_ECS"
    }
  )
}

module "daily_data_alert_service" {
  source = "../../../modules/ecs/tasks/scheduled_taskless"

  cluster_arn   = data.aws_ecs_cluster.main.arn
  env_prefix    = local.env_prefix
  project       = "daily-data-alert"
  project_group = local.project_group
  schedule_expression = {
    default = {
      expression = "cron(30 11 * * ? *)" # 7:30 AM
      enabled    = true
    }
  }
  scheduler_role_arn  = module.iam_map.ecs_scheduler.arn
  security_groups     = [data.aws_security_group.main.id]
  subnets             = data.aws_subnets.private_subnets.ids
  task_definition_arn = module.daily_data_alert_task_def.arn

  common_tags = merge(
    local.common_tags,
    {
      project                  = "Infrastructure",
      service                  = "ECS",
      plat_env_project_service = "${local.aggregated_tag}_INFRA_ECS"
    }
  )
}
