public void Execute(AppointmentStarted @event) { Printer.Print(ConsoleColor.Magenta); var jobRepository = new MyRepository <Job>(); var job = jobRepository.Fetch(@event.Appointment.JobId); job.Start(); //Printer.Print("Job marked as in progress", ConsoleColor.Magenta); }
public void Execute(AppointmentCompleted @event) { Printer.Print(ConsoleColor.Magenta); var appointmentsOfJob = new MyRepository <Appointment>().FetchAll().Where(a => a.JobId == @event.Appointment.JobId); if (appointmentsOfJob.All(a => a.IsCompleted())) { var jobRepository = new MyRepository <Job>(); var job = jobRepository.Fetch(@event.Appointment.JobId); job.Finish(); } //Printer.Print("Job marked as in progress", ConsoleColor.Magenta); }
public void Execute(StaffAssignedToAppointment @event) { Printer.Print("Updating JobView in effect of StaffAssignedToAppointment event", ConsoleColor.Magenta); var staffRepository = new MyRepository <StaffMember>(); var staff = staffRepository.Fetch(@event.StaffId); var jobViewRepository = new MyRepository <JobView>(); var jobView = jobViewRepository.FetchAll().Single(j => j.Appointments.Any(a => a.Id == @event.AppointmentId)); jobView.Appointments.Single(a => a.Id == @event.AppointmentId).AssignedTo = staff.Name; jobViewRepository.Update(jobView); Publish(jobView); }
public void Execute(JobCreated @event) { Printer.Print("Updating JobView in effect of JobCreated event", ConsoleColor.Magenta); var customerRepository = new MyRepository <Customer>(); var customer = customerRepository.Fetch(@event.CustomerId); var jobView = new JobView { Id = @event.JobId, CustomerName = customer.Name.ToString(), Location = @event.Location }; var jobViewRepository = new MyRepository <JobView>(); jobViewRepository.Add(jobView); Publish(jobView); }
public void Execute(AppointmentScheduled @event) { Printer.Print("Updating JobView in effect of AppointmentScheduled event", ConsoleColor.Magenta); var staffRepository = new MyRepository <StaffMember>(); var staff = @event.StaffMemberId.HasValue ? staffRepository.Fetch(@event.StaffMemberId.Value) : null; var jobViewRepository = new MyRepository <JobView>(); var jobView = jobViewRepository.Fetch(@event.JobId); jobView.Appointments.Add(new AppointmentView { Id = @event.AppointmentId, AssignedTo = staff == null ? null : staff.Name, From = @event.From, To = @event.To }); jobViewRepository.Update(jobView); Publish(jobView); }