using InboxIntel.Application.Abstractions; using InboxIntel.Application.DTOs; using Microsoft.AspNetCore.Mvc; namespace InboxIntel.Api.Controllers; public class CleanupController : ApiControllerBase { private readonly ICleanupService _cleanup; public CleanupController(ICleanupService cleanup) => _cleanup = cleanup; /// Preview which emails a cleanup action would affect. Always call before execute. [HttpPost("preview")] public async Task Preview([FromBody] CleanupRequestDto request, CancellationToken ct) => Ok(await _cleanup.PreviewAsync(UserId, request, ct)); /// Execute a cleanup action. Destructive actions require Confirmed = true. [HttpPost("execute")] public async Task Execute([FromBody] CleanupRequestDto request, CancellationToken ct) { var result = await _cleanup.ExecuteAsync(UserId, request, ct); return result.Succeeded ? Ok(result.Value) : BadRequest(new { error = result.Error }); } }