private static Validation <Error, Document> Apply(this Document document, Event evt) { return(evt switch { DocumentApprovedEvent approvedEvent => document.Approve(approvedEvent.Comment), FileAddedEvent fileAddedEvent => document.AddFile(fileAddedEvent.FileId, fileAddedEvent.Name, fileAddedEvent.Description), DocumentSentForApprovalEvent _ => document.SendForApproval(), DocumentRejectedEvent rejectedEvent => document.Reject(rejectedEvent.Reason), DocumentUpdatedEvent updatedEvent => document.Update(updatedEvent.Number, updatedEvent.Description), _ => new Error($"Unknown event type: {evt.GetType().Name}") });
static void Main(string[] args) { Arguments cmdline = new Arguments(args); var eventType = cmdline["eventType"]; int eventCount; if (!int.TryParse(cmdline["eventCount"], out eventCount)) { eventCount = 10; } int firstEventId; if (!int.TryParse(cmdline["firstEventId"], out firstEventId)) { firstEventId = 1; } int documentPerFolder; if (!int.TryParse(cmdline["documentPerFolder"], out documentPerFolder)) { documentPerFolder = 1; } int firstFolderId; if (!int.TryParse(cmdline["firstFolderId"], out firstFolderId)) { firstFolderId = 1; } int eventId = firstEventId; int folderId = firstFolderId; var processor = GetCommandProcessor(); for (var i = 0; i < eventCount; i++) { switch (eventType) { case "DocumentCreatedEvent": var documentCreatedEvent = new DocumentCreatedEvent(Guid.NewGuid(), eventId, string.Format("Document_{0}", eventId), folderId); processor.Post(documentCreatedEvent); break; case "DocumentUpdatedEvent": var documentUpdatedEvent = new DocumentUpdatedEvent(Guid.NewGuid(), eventId, string.Format("Document_{0}", eventId), folderId); processor.Post(documentUpdatedEvent); break; case "FolderCreatedEvent": var folderCreatedEvent = new FolderCreatedEvent(Guid.NewGuid(), eventId, string.Format("Folder_{0}", eventId)); processor.Post(folderCreatedEvent); break; } eventId++; if ((i + 1) % documentPerFolder == 0) { folderId++; } } }
private /*async*/ void OnDocumentUpdatedEvent(DocumentUpdatedEvent ev) { _nodeToFrame.Clear(); _devTools?.DOM.GetDocument(new GetDocumentCommand()); }
private void OnDocumentUpdated(string contentType, IData data, DateTime created, DateTime lastModified) { var ev = new DocumentUpdatedEvent(this, new DocumentPath(Path), contentType, data, created, lastModified); AddDomainEvent(ev); }