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.LectureHall.Queries.GetLectureHallDetails; public class GetLectureHallInfoQueryHandler(ILectureHallDbContext dbContext) : IRequestHandler { public async Task Handle(GetLectureHallInfoQuery request, CancellationToken cancellationToken) { var lectureHall = await dbContext.LectureHalls .Include(l => l.Campus) .FirstOrDefaultAsync(l => l.Id == request.Id, cancellationToken) ?? throw new NotFoundException(typeof(Domain.Schedule.LectureHall), request.Id); return new LectureHallInfoVm() { Id = lectureHall.Id, Name = lectureHall.Name, CampusId = lectureHall.CampusId, CampusCode = lectureHall.Campus?.CodeName, CampusName = lectureHall.Campus?.FullName }; } }