using Application.Services.Database; using FluentValidation; namespace Application.Endpoints.MedicalHistories; public class MedicalHistoryUpdateValidation : AbstractValidator { private readonly IMedicalHistoryRepository _medicalHistoryRepository; private readonly IPacientRepository _pacientRepository; public MedicalHistoryUpdateValidation(IMedicalHistoryRepository medicalHistoryRepository, IPacientRepository pacientRepository) { _medicalHistoryRepository = medicalHistoryRepository; _pacientRepository = pacientRepository; RuleFor(x => x.Id) .NotEmpty().WithMessage("Id is required") .MustAsync(BeExistingMedicalHistoryRecord).WithMessage("Medical hostory record does not exist"); RuleFor(x => x.UserId) .NotEmpty().WithMessage("Pacient is required.") .MustAsync(BeExistingUser).WithMessage("Specified pacient id doesn't exist."); RuleFor(x => x.Description) .NotEmpty().WithMessage("Description is required."); } private async Task BeExistingMedicalHistoryRecord(Guid guid, CancellationToken token) { var record = await _medicalHistoryRepository.GetByIdAsync(guid); return record != null; } private async Task BeExistingUser(Guid userId, CancellationToken cancellationToken) { var pacient = await _pacientRepository.GetByIdAsync(userId); return pacient != null; } }