import { removeCustomerAccountWorkflow } from "@medusajs/core-flows"
import type { AuthenticatedMedusaRequest, MedusaResponse } from "@medusajs/framework/http"
import type QuoteModuleService from "../../../../modules/quote/service"
import { QUOTE_MODULE } from "../../../../modules/quote"

export async function DELETE(req: AuthenticatedMedusaRequest, res: MedusaResponse) {
  const customerId = req.auth_context.actor_id

  const quoteModuleService = req.scope.resolve<QuoteModuleService>(QUOTE_MODULE)
  const quotes = await quoteModuleService.listQuotes({
    customer_id: customerId,
  })

  if (quotes.length > 0) {
    await quoteModuleService.deleteQuotes(quotes.map((quote) => quote.id))
  }

  await removeCustomerAccountWorkflow(req.scope).run({
    input: {
      customerId,
    },
  })

  res.status(200).json({
    id: customerId,
    object: "customer",
    deleted: true,
  })
}
