public void Handle(AddItemCommand command) { try { Thread.Sleep(new Random().Next(500, 4000)); if (command.Id == Guid.Empty) throw new ArgumentNullException("command.Id"); if (string.IsNullOrEmpty(command.Name)) throw new ArgumentNullException("command.Name"); Console.WriteLine("Got command: {0}, Id: {1}, Name: {2}", command.GetType().Name, command.Id, command.Name); using (var db = new MyReadStore()) { if (db.SomeItems.Where(x => x.Id == command.Id).Any()) throw new Exception("Item does already exists"); db.SomeItems.Add(new SomeItem() { Id = command.Id, Name = command.Name, IsActive = false }); db.SaveChanges(); } _publisher.Publish(new ItemAddedEvent() { Id = command.Id, Name = command.Name }); _publisher.Publish(new ClientNotification() { Success = true, Message = string.Format("The item '{0}' was added", command.Name), ClientId = command.ClientId }); } catch (Exception ex) { Console.WriteLine("Failed to execute command: {0}, Message: {1}", command.GetType().Name, ex.Message); _publisher.Publish(new ClientNotification() { Success = false, Message = string.Format("Could not add the item. Errormessage: ", ex.Message), ClientId = command.ClientId }); } }
public void Handle(UpdateItemCommand command) { try { Thread.Sleep(new Random().Next(500, 4000)); if (command.Id == Guid.Empty) throw new ArgumentNullException("command.Id"); if (string.IsNullOrEmpty(command.NewName)) throw new ArgumentNullException("command.Name"); Console.WriteLine("Got command: {0}, Id: {1}, NewName: {2}", command.GetType().Name, command.Id, command.NewName); using (var db = new MyReadStore()) { var item = db.SomeItems.Where(x => x.Id == command.Id).FirstOrDefault(); if (item == null) throw new Exception("Item with id " + command.Id.ToString() + " does not exist."); item.Name = command.NewName; item.IsActive = command.IsActive; db.SaveChanges(); } _publisher.Publish(new ItemUpdatedEvent() { Id = command.Id, Name = command.NewName }); _publisher.Publish(new ClientNotification() { Success = true, Message = string.Format("The item '{0}' was updated.", command.NewName), ClientId = command.ClientId }); } catch (Exception ex) { Console.WriteLine("Failed to execute command: {0}, Message: {1}", command.GetType().Name, ex.Message); _publisher.Publish(new ClientNotification() { Success = false, Message = string.Format("Could not update the item. Errormessage: ", ex.Message), ClientId = command.ClientId }); } }