using System.ComponentModel.DataAnnotations; using Asp.Versioning; using Baya.Application.Features.Reviews.Queries.GetReviewModerationQueue; using Baya.Application.Models.Common; using Baya.Application.Models.Reviews; using Baya.Infrastructure.Identity.Identity.PermissionManager; using Baya.WebFramework.Attributes; using Baya.WebFramework.BaseController; using Mediator; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; namespace Baya.Web.Api.Controllers.V1; /// Admin review console: the moderation queue (defaults to pending_moderation), with any linked /// low-rating alert id. Support alerts themselves stay internal — only their id is surfaced here for triage. [ApiVersion("1")] [ApiController] [Route("api/v{version:apiVersion}/admin/reviews")] [Authorize(ConstantPolicies.DynamicPermission)] [Display(Description = "Admin review moderation queue")] public sealed class AdminReviewsController(ISender sender) : BaseController { [HttpGet("moderation_queue")] [ProducesOkApiResponseType>] public async Task ModerationQueue([FromQuery] GetReviewModerationQueueQuery query, CancellationToken cancellationToken) => OperationResult(await sender.Send(query, cancellationToken)); }