public Task <bool> Handle(RegisterFluPatientCommand request, CancellationToken cancellationToken) { if (!request.IsValid()) { NotifyValidationErrors(request); return(Task.FromResult(false)); } var patient = new Patient(Guid.NewGuid(), request.Name, request.Email, request.RegistrationDate, PatientType.INFLUENZA); if (_patientRepository.GetByEmail(patient.Email) != null) { _mediator.RaiseEvent(new DomainNotification(request.MessageType, "E-mail is already registered.")); return(Task.FromResult(false)); } _patientRepository.Add(patient); if (Commit()) { _mediator.RaiseEvent(new PatientFluRegisteredEvent(patient.Id, patient.Name, patient.Email, patient.RegistrationDate)); } return(Task.FromResult(true)); }
public PatientModel RegisterFluPatient(string name) { var patientId = PatientId.New; var command = new RegisterFluPatientCommand(patientId, name); this.Publish(command); return(new PatientModel(command.AggregateId, this)); }