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)); }
// 同上,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())); }
// 同上,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())); }
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)); }
/// <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())); }