using Asp.Versioning; using MediatR; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Mirea.Api.DataAccess.Application.Cqrs.Campus.Queries.GetCampusBasicInfoList; using Mirea.Api.DataAccess.Application.Cqrs.Campus.Queries.GetCampusDetails; using Mirea.Api.Dto.Responses; using Mirea.Api.Endpoint.Common.Attributes; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace Mirea.Api.Endpoint.Controllers.V1; [ApiVersion("1.0")] [CacheMaxAge(true)] public class CampusController(IMediator mediator) : BaseController { /// /// Gets basic information about campuses. /// /// Basic information about campuses. [HttpGet] [ProducesResponseType(StatusCodes.Status200OK)] public async Task>> Get() { var result = await mediator.Send(new GetCampusBasicInfoListQuery()); return Ok(result.Campuses .Select(c => new CampusBasicInfoResponse() { Id = c.Id, CodeName = c.CodeName, FullName = c.FullName }) ); } /// /// Gets details of a specific campus by ID. /// /// Campus ID. /// Details of the specified campus. [HttpGet("{id:int}")] [ProducesResponseType(StatusCodes.Status200OK)] [BadRequestResponse] [NotFoundResponse] public async Task> GetDetails(int id) { var result = await mediator.Send(new GetCampusDetailsQuery() { Id = id }); return Ok(new CampusDetailsResponse() { Id = result.Id, CodeName = result.CodeName, FullName = result.FullName, Address = result.Address }); } }