// EN: Devices Controller for listing registered POS devices.
// VI: Controller Devices để liệt kê thiết bị POS đã đăng ký.

using MediatR;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using MerchantService.API.Application.Queries.Devices;

namespace MerchantService.API.Controllers;

/// <summary>
/// EN: Controller for device management.
/// VI: Controller để quản lý thiết bị.
/// </summary>
[ApiController]
[Route("api/v1/devices")]
[Authorize]
public class DevicesController : MerchantBaseController
{
    private readonly IMediator _mediator;

    public DevicesController(IMediator mediator)
    {
        _mediator = mediator;
    }

    /// <summary>
    /// EN: Get registered devices for current merchant.
    /// VI: Lấy danh sách thiết bị đã đăng ký của merchant hiện tại.
    /// </summary>
    [HttpGet]
    [ProducesResponseType(typeof(IReadOnlyList<DeviceDto>), StatusCodes.Status200OK)]
    public async Task<IActionResult> GetDevices()
    {
        var userId = GetCurrentUserId();
        var result = await _mediator.Send(new GetDevicesQuery(userId));
        return Ok(result);
    }
}
