using Indotalent.Infrastructure.Database; using MediatR; using Microsoft.EntityFrameworkCore; namespace Indotalent.Features.Organization.Employee.Cqrs; public class GetEmployeeIncomeByIdResponse { public string? Id { get; set; } public string? IncomeId { get; set; } public string? IncomeName { get; set; } public decimal Amount { get; set; } public string? Description { get; set; } public bool IsActive { get; set; } } public record GetEmployeeIncomeByIdQuery(string Id) : IRequest; public class GetEmployeeIncomeByIdHandler : IRequestHandler { private readonly AppDbContext _context; public GetEmployeeIncomeByIdHandler(AppDbContext context) => _context = context; public async Task Handle(GetEmployeeIncomeByIdQuery request, CancellationToken cancellationToken) { var data = await _context.EmployeeIncome .Where(x => x.Id == request.Id) .Select(x => new GetEmployeeIncomeByIdResponse { Id = x.Id, IncomeId = x.IncomeId, IncomeName = x.Income != null ? x.Income.Name : string.Empty, Amount = x.Amount, Description = x.Description, IsActive = x.IsActive }) .FirstOrDefaultAsync(cancellationToken); return data!; } }