Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
        }