Exemple #1
0
        public bool Handle(RegisterConsultationCommand cmd)
        {
            Register(cmd);
            var cal  = Build_calendar();
            var plan = Planner.UpdatePlan(cal, _consultations);

            return(plan);
        }
Exemple #2
0
 void Register(RegisterConsultationCommand cmd)
 {
     _consultations.Add(new Consultation {
         ConsultationId       = cmd.ConsultationId,
         PatientId            = cmd.PatientId,
         RequestedTimeslot    = cmd.RequestedTimeslot,
         NotificationLeadTime = new TimeSpan(0, 1, 0, 0),
         HasBeenNotified      = false,
         PlannedStart         = null,
         ActualTimeslot       = null,
         Fixed = false
     });
 }
        public static RegisterConsultationCommand Map(AddConsultationViewModel viewModel)
        {
            var registerConsultationCommand = new RegisterConsultationCommand();

            registerConsultationCommand.PatientId         = viewModel.Patient;
            registerConsultationCommand.RequestedTimeslot = new Timeslot();
            if (!viewModel.IsUrgent)
            {
                registerConsultationCommand.RequestedTimeslot.Start = viewModel.RequestedStart;
                registerConsultationCommand.RequestedTimeslot.End   = viewModel.RequestedEnd;
            }
            else
            {
                foreach (var viewModelDay in viewModel.DataContextNextCalendar.Days)
                {
                    var firstChecked = viewModelDay.Hours.FirstOrDefault(h => h.IsPatientAvailable);
                    if (firstChecked != null)
                    {
                        registerConsultationCommand.RequestedTimeslot.Start =
                            TimeSlotStringMapper.Map(viewModelDay.Date, firstChecked.HourInt);
                        var lastChecked = firstChecked;
                        for (var i = viewModelDay.Hours.IndexOf(firstChecked); i < viewModelDay.Hours.Count; i++)
                        {
                            if (viewModelDay.Hours[i].IsPatientAvailable)
                            {
                                lastChecked = viewModelDay.Hours[i];
                            }
                            else
                            {
                                break;
                            }
                        }
                        registerConsultationCommand.RequestedTimeslot.End = TimeSlotStringMapper.Map(viewModelDay.Date, lastChecked.HourInt + 1);
                    }
                }
            }

            registerConsultationCommand.RequestedTimeslot.Duration = new TimeSpan(0, 0, viewModel.RequestedDuration, 0);
            return(registerConsultationCommand);
        }