public void Handle(TaskUpdatedEvent message)
        {
            using (var context = new TaskContext())
            {
                var task = (from t in context.PendingTasks
                            where t.TaskId == message.TaskId
                            select t).SingleOrDefault();
                if (task == null)
                {
                    return;
                }

                task.Title       = message.Title;
                task.Description = message.Description;
                task.DueDate     = message.DueDate;
                task.Priority    = message.Priority;
                task.Status      = message.Status;
                if (message.Status == Status.Completed)
                {
                    task.CompletionDate = DateTime.Today;
                }
                if (message.Status == Status.InProgress &&
                    task.Status != Status.InProgress)
                {
                    task.StartDate      = DateTime.Today;
                    task.CompletionDate = null;
                }

                context.SaveChanges();
            }
        }
Beispiel #2
0
        public void Update(string text, TaskPriority priority, Guid?jobOrderId)
        {
            if (this.DateOfCancellation.HasValue)
            {
                throw new InvalidOperationException("Can't update a cancelled task.");
            }
            if (this.DateOfCompletion.HasValue)
            {
                throw new InvalidOperationException("Can't update a completed task.");
            }
            if (string.IsNullOrWhiteSpace(text))
            {
                throw new ArgumentException("A task must have a non-null name.", nameof(text));
            }

            var e = new TaskUpdatedEvent()
            {
                TaskId     = this.Id,
                Name       = text,
                Priority   = priority,
                JobOrderId = jobOrderId
            };

            RaiseEvent(e);
        }
Beispiel #3
0
 public void ApplyEvent([AggregateId("TaskId")] TaskUpdatedEvent theEvent)
 { // No need to change TaskId
   // Copy values over
     Title       = theEvent.Title;
     Description = theEvent.Description;
     DueDate     = theEvent.DueDate;
     Priority    = theEvent.Priority;
     Status      = theEvent.Status;
 }
Beispiel #4
0
        public async System.Threading.Tasks.Task Handle(TaskUpdatedEvent message)
        {
            var t = ActiveDbContext.Tasks.Find(message.TaskId);

            t.Name       = message.Name;
            t.Priority   = message.Priority.Convert();
            t.JobOrderId = message.JobOrderId;
            await ActiveDbContext.SaveChangesAsync();
        }
Beispiel #5
0
            public void TaskRenamedEvent()
            {
                var taskId = Guid.NewGuid();
                var userId = Guid.NewGuid();
                var e      = new TaskUpdatedEvent()
                {
                    Name   = "Brand new name",
                    TaskId = taskId
                };
                var task = OTask.Factory.Create(taskId, userId, "Fake");

                task.ApplyEvent(e);
                Assert.Equal(e.Name, task.Name);
            }
Beispiel #6
0
        public void UpdateModel(string title, string description, DateTime?dueDate, Priority priority, Status status)
        {
            DomainEvent updated = null;

            if (this.Title == title && this.Description == description && this.DueDate == dueDate.Value.ToUniversalTime() && this.Priority == priority && this.Status == status)
            {
                updated = new TaskNoUpdatedEvent(TaskId, title, description, dueDate, priority, status);
            }
            else
            {
                updated = new TaskUpdatedEvent(TaskId, title, description, dueDate, priority, status);
            }

            RaiseEvent(updated);
        }
Beispiel #7
0
        public void UpdateModel(string title, string description, DateTime?dueDate, Priority priority, Status status)
        {
            var updated = new TaskUpdatedEvent(TaskId, title, description, dueDate, priority, status);

            RaiseEvent(updated);
        }
Beispiel #8
0
 public void ApplyEvent(TaskUpdatedEvent @event)
 {
     this.Name       = @event.Name;
     this.Priority   = @event.Priority;
     this.JobOrderId = @event.JobOrderId;
 }