using AdsManagerService.API.Application.Commands; using AdsManagerService.API.Application.Queries; using MediatR; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; namespace AdsManagerService.API.Controllers; /// /// EN: API Controller for managing ad sets. /// VI: API Controller quản lý ad sets. /// [ApiController] [Authorize] [Route("api/v1/ads-manager/adsets")] [Produces("application/json")] public class AdSetsController : ControllerBase { private readonly IMediator _mediator; private readonly ILogger _logger; public AdSetsController(IMediator mediator, ILogger logger) { _mediator = mediator ?? throw new ArgumentNullException(nameof(mediator)); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); } /// /// EN: Create a new ad set. /// VI: Tạo ad set mới. /// [HttpPost] [ProducesResponseType(StatusCodes.Status201Created)] [ProducesResponseType(StatusCodes.Status400BadRequest)] public async Task> CreateAdSet([FromBody] CreateAdSetCommand command) { _logger.LogInformation("Creating ad set for campaign {CampaignId}", command.CampaignId); var adSetId = await _mediator.Send(command); return CreatedAtAction(nameof(GetAdSetById), new { id = adSetId }, adSetId); } /// /// EN: Get ad set by ID (placeholder). /// VI: Lấy ad set theo ID (placeholder). /// [HttpGet("{id}")] [ProducesResponseType(typeof(AdSetDto), StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status404NotFound)] public async Task> GetAdSetById(Guid id) { var adSet = await _mediator.Send(new GetAdSetByIdQuery { AdSetId = id }); if (adSet == null) return NotFound(); return Ok(adSet); } }