using AdsManagerService.API.Application.Commands;
using MediatR;
using Microsoft.AspNetCore.Mvc;
namespace AdsManagerService.API.Controllers;
///
/// EN: API Controller for managing individual ads.
/// VI: API Controller quản lý quảng cáo.
///
[ApiController]
[Route("api/v1/ads-manager/ads")]
[Produces("application/json")]
public class AdsController : ControllerBase
{
private readonly IMediator _mediator;
private readonly ILogger _logger;
public AdsController(IMediator mediator, ILogger logger)
{
_mediator = mediator ?? throw new ArgumentNullException(nameof(mediator));
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
}
///
/// EN: Create a new ad.
/// VI: Tạo quảng cáo mới.
///
[HttpPost]
[ProducesResponseType(StatusCodes.Status201Created)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
public async Task> CreateAd([FromBody] CreateAdCommand command)
{
_logger.LogInformation("Creating ad for ad set {AdSetId}", command.AdSetId);
var adId = await _mediator.Send(command);
return CreatedAtAction(nameof(GetAdById), new { id = adId }, adId);
}
///
/// EN: Get ad by ID (placeholder).
/// VI: Lấy quảng cáo theo ID (placeholder).
///
[HttpGet("{id}")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
public async Task GetAdById(Guid id)
{
// TODO: Implement GetAdByIdQuery
return Ok(new { id, message = "Ad details" });
}
///
/// EN: Submit ad for review.
/// VI: Gửi quảng cáo để duyệt.
///
[HttpPost("{id}/submit")]
[ProducesResponseType(StatusCodes.Status204NoContent)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
public async Task SubmitAdForReview(Guid id)
{
_logger.LogInformation("Submitting ad {AdId} for review", id);
// TODO: Implement SubmitAdForReviewCommand
return NoContent();
}
}