using MediatR; using Microsoft.EntityFrameworkCore; using Mirea.Api.DataAccess.Application.Common.Exceptions; using Mirea.Api.DataAccess.Application.Interfaces.DbContexts.Schedule; using System.Threading; using System.Threading.Tasks; namespace Mirea.Api.DataAccess.Application.Cqrs.Faculty.Queries.GetFacultyDetails; public class GetFacultyInfoQueryHandler(IFacultyDbContext dbContext) : IRequestHandler { public async Task Handle(GetFacultyInfoQuery request, CancellationToken cancellationToken) { var faculty = await dbContext.Faculties .Include(f => f.Campus) .FirstOrDefaultAsync(f => f.Id == request.Id, cancellationToken) ?? throw new NotFoundException(typeof(Domain.Schedule.Faculty), request.Id); return new FacultyInfoVm() { Id = faculty.Id, Name = faculty.Name, CampusId = faculty.CampusId, CampusName = faculty.Campus?.FullName, CampusCode = faculty.Campus?.CodeName }; } }