예제 #1
0
        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));
        }
예제 #2
0
        public PatientModel RegisterFluPatient(string name)
        {
            var patientId = PatientId.New;
            var command   = new RegisterFluPatientCommand(patientId, name);

            this.Publish(command);
            return(new PatientModel(command.AggregateId, this));
        }