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