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(); } }