All checks were successful
		
		
	
	.NET Test Pipeline / build-and-test (pull_request) Successful in 1m59s
				
			
		
			
				
	
	
		
			69 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using MediatR;
 | 
						|
using Microsoft.AspNetCore.Http;
 | 
						|
using Microsoft.AspNetCore.Mvc;
 | 
						|
using Mirea.Api.DataAccess.Application.Cqrs.Faculty.Queries.GetFacultyDetails;
 | 
						|
using Mirea.Api.DataAccess.Application.Cqrs.Faculty.Queries.GetFacultyList;
 | 
						|
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")]
 | 
						|
public class FacultyController(IMediator mediator) : BaseController
 | 
						|
{
 | 
						|
    /// <summary>
 | 
						|
    /// Gets a paginated list of faculties.
 | 
						|
    /// </summary>
 | 
						|
    /// <param name="page">Page number. Start from 0.</param>
 | 
						|
    /// <param name="pageSize">Number of items per page.</param>
 | 
						|
    /// <returns>Paginated list of faculties.</returns>
 | 
						|
    [HttpGet]
 | 
						|
    [ProducesResponseType(StatusCodes.Status200OK)]
 | 
						|
    [BadRequestResponse]
 | 
						|
    public async Task<ActionResult<List<FacultyResponse>>> Get([FromQuery] int? page, [FromQuery] int? pageSize)
 | 
						|
    {
 | 
						|
        var result = await mediator.Send(new GetFacultyListQuery()
 | 
						|
        {
 | 
						|
            Page = page,
 | 
						|
            PageSize = pageSize
 | 
						|
        });
 | 
						|
 | 
						|
        return Ok(result.Faculties
 | 
						|
            .Select(f => new FacultyResponse()
 | 
						|
            {
 | 
						|
                Id = f.Id,
 | 
						|
                Name = f.Name,
 | 
						|
                CampusId = f.CampusId
 | 
						|
            })
 | 
						|
        );
 | 
						|
    }
 | 
						|
 | 
						|
    /// <summary>
 | 
						|
    /// Gets details of a specific faculty by ID.
 | 
						|
    /// </summary>
 | 
						|
    /// <param name="id">Faculty ID.</param>
 | 
						|
    /// <returns>Details of the specified faculty.</returns>
 | 
						|
    [HttpGet("{id:int}")]
 | 
						|
    [ProducesResponseType(StatusCodes.Status200OK)]
 | 
						|
    [BadRequestResponse]
 | 
						|
    [NotFoundResponse]
 | 
						|
    public async Task<ActionResult<FacultyDetailsResponse>> GetDetails(int id)
 | 
						|
    {
 | 
						|
        var result = await mediator.Send(new GetFacultyInfoQuery()
 | 
						|
        {
 | 
						|
            Id = id
 | 
						|
        });
 | 
						|
 | 
						|
        return Ok(new FacultyDetailsResponse()
 | 
						|
        {
 | 
						|
            Id = result.Id,
 | 
						|
            Name = result.Name,
 | 
						|
            CampusId = result.CampusId,
 | 
						|
            CampusCode = result.CampusCode,
 | 
						|
            CampusName = result.CampusName
 | 
						|
        });
 | 
						|
    }
 | 
						|
} |