Пример #1
0
        public Task <bool> Handle(UpdateStudentCommand message, CancellationToken cancellationToken)
        {
            if (!message.IsValid())
            {
                NotifyValidationErrors(message);
                return(Task.FromResult(false));
            }

            var student         = new Student(message.Id, message.Name, message.Email, message.BirthDate);
            var existingStudent = _studentRepository.GetByEmail(student.Email);

            if (existingStudent != null && existingStudent.Id != student.Id)
            {
                if (!existingStudent.Equals(student))
                {
                    Bus.RaiseEvent(new DomainNotification(message.MessageType, "The customer e-mail has already been taken."));
                    return(Task.FromResult(false));
                }
            }

            _studentRepository.Update(student);

            if (Commit())
            {
                Bus.RaiseEvent(new StudentUpdatedEvent(student.Id, student.Name, student.Email, student.BirthDate));
            }

            return(Task.FromResult(true));
        }
Пример #2
0
        // 同上,UpdateStudentCommand 的处理方法
        public Task <Unit> Handle(UpdateStudentCommand message, CancellationToken cancellationToken)
        {
            if (!message.IsValid())
            {
                NotifyValidationErrors(message);
                return(Task.FromResult(new Unit()));
            }


            var address = new Address(message.Province, message.City,
                                      message.County, message.Street);
            var student         = new Student(message.Id, message.Name, message.Email, message.Phone, message.BirthDate, address);
            var existingStudent = _studentRepository.GetByEmail(student.Email);

            if (existingStudent != null && existingStudent.Id != student.Id)
            {
                if (!existingStudent.Equals(student))
                {
                    Bus.RaiseEvent(new DomainNotification("", "该邮箱已经被使用!"));
                    return(Task.FromResult(new Unit()));
                }
            }

            _studentRepository.Update(student);

            if (Commit())
            {
                Bus.RaiseEvent(new StudentUpdatedEvent(student.Id, student.Name, student.Email, student.BirthDate, student.Phone));
            }

            return(Task.FromResult(new Unit()));
        }
Пример #3
0
        // 同上,UpdateStudentCommand 的处理方法
        public Task <Unit> Handle(UpdateStudentCommand message, CancellationToken cancellationToken)
        {
            if (!message.IsValid())
            {
                NotifyValidationErrors(message);
                return(Task.FromResult(new Unit()));
            }

            var customer         = new Student(message.Id, message.Name, message.Email, message.Phone, message.BirthDate);
            var existingCustomer = _studentRepository.GetByEmail(customer.Email);

            if (existingCustomer != null && existingCustomer.Id != customer.Id)
            {
                if (!existingCustomer.Equals(customer))
                {
                    Bus.RaiseEvent(new DomainNotification("", "该邮箱已经被使用!"));
                    return(Task.FromResult(new Unit()));
                }
            }

            _studentRepository.Update(customer);

            if (Commit())
            {
                Bus.RaiseEvent(new StudentUpdatedEvent(customer.Id, customer.Name, customer.Email, customer.BirthDate, customer.Phone));
            }

            return(Task.FromResult(new Unit()));
        }
Пример #4
0
        public Task <bool> Handle(UpdateStudentCommand request, CancellationToken cancellationToken)
        {
            if (!request.IsValid())
            {
                NotifyValidationErrors(request);
                return(Task.FromResult(false));
            }
            var address = new Address(request.Province, request.City,
                                      request.County, request.Street);
            var student         = new Student(request.Id, request.Name, request.Email, request.Phone, request.BirthDate, address);
            var existingStudent = _studentRepository.GetByEmail(student.Email);

            if (existingStudent != null && existingStudent.Id != student.Id)
            {
                if (!existingStudent.Equals(student))
                {
                    _bus.RaiseEvent(new DomainNotification("", "该邮箱已经被使用!"));
                    return(Task.FromResult(false));
                }
            }

            _studentRepository.Update(student);

            if (Commit())
            {
                _bus.RaiseEvent(new StudentUpdatedEvent(student.Id, student.Name, student.Email, student.BirthDate, student.Phone));
            }

            return(Task.FromResult(true));
        }
Пример #5
0
        /// <summary>
        /// 同上,UpdateStudentCommand 的处理方法
        /// </summary>
        /// <param name="request"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public Task <Unit> Handle(UpdateStudentCommand request, CancellationToken cancellationToken)
        {
            //命令验证
            if (!request.IsValid())
            {
                //错误信息收集
                NotifyValidationErrors(request);
                return(Task.FromResult(new Unit()));
            }

            var customer = new Models.Student(request.Id, request.Name, request.Email, request.Phone,
                                              request.BirthDate)
            {
                Address = request.Address
            };
            // 判断邮箱是否存在
            // 这些业务逻辑,当然要在领域层中(领域命令处理程序中)进行处理
            var isExist = _readStudentRepository.GetByEmail(customer.Email);

            if (isExist != null && isExist.Id != customer.Id)
            {
                //这里☑错误信息进行发布 目前采用缓存形式
                //List<string> errorInfo = new List<string>()
                //{
                //    "The customer e-mail has already been taken."
                //};
                _bus.RaiseEvent(new DomainNotification("", "The customer e-mail has already been taken."));
                //_cache.Set("ErrorData", errorInfo);
                return(Task.FromResult(new Unit()));
            }

            //持久化操作
            _writeStudentRepository.Update(customer);
            //统一提交
            if (Commit())
            {
                // 提交成功后,这里需要发布领域事件 // 比如欢迎用户注册邮件呀,短信呀等 // waiting....
                _bus.RaiseEvent(new StudentUpdateEvent(customer.Id, customer.Name, customer.Email, customer.Phone,
                                                       customer.BirthDate, request.User));
            }
            return(Task.FromResult(new Unit()));
        }