using Application.Endpoints.Doctors.Login; using Application.Services.Database; using Core.Entities; namespace Application.Endpoints.Doctors.Registration; public class DoctorRegistrationHandler { private readonly IDoctorRepository _doctorRepository; public DoctorRegistrationHandler(IDoctorRepository doctorRepository) { _doctorRepository = doctorRepository; } public async Task Handle(DoctorRegistrationDto registrationDTO) { var validation = new DoctorRegistrationValidation(_doctorRepository); var validationResult = await validation.ValidateAsync(registrationDTO); if (!validationResult.IsValid) { var errorMessage = validationResult.Errors.Select(e => e.ErrorMessage).ToList(); return new BaseResponse { Success = false, Message = string.Join(", ", errorMessage), Data = null }; } var doctor = new Doctor { Email = registrationDTO.Email, Password = registrationDTO.Password, Name = registrationDTO.Name, Description = registrationDTO.Description }; await _doctorRepository.AddAsync(doctor); return new BaseResponse { Success = true, Message = "Doctor registered successfully", Data = doctor // Be careful with sending sensitive data like Passwords }; } }