public ActionResult Book(Guid leadId)
        {
            var consultants = _employeeService.GetCurrentByDepartmentId(Constants.SalesDepartmentId);

            var viewModel = new BookVisitViewModel
                                {
                                    Id = Guid.NewGuid(),
                                    AppointmentId = Guid.NewGuid(),
                                    LeadId = leadId,
                                    Consultants = new SelectList(consultants, "Id", "FullName")
                                };

            return View(viewModel);
        }
        public void BookAsync(BookVisitViewModel viewModel)
        {
            AsyncManager.Parameters["viewModel"] = viewModel;

            var calendarValidationMessages = _appointmentService.ValidateBook(new ValidateBookRequest
            {
                EmployeeId = viewModel.ConsultantId.Value,
                DepartmentId =
                    Constants.SalesDepartmentId,
                Start = viewModel.Start,
                End = viewModel.End
            }).ToList();

            if (calendarValidationMessages.Any())
            {
                calendarValidationMessages.ForEach(message => ModelState.AddModelError("", message.Text));
                return;
            }

            var bookVisitCommand = new BookVisit
                              {
                                  Id = viewModel.Id,
                                  AppointmentId = viewModel.AppointmentId,
                                  LeadId = viewModel.LeadId,
                                  Start = viewModel.Start,
                                  End = viewModel.End,
                                  ConsultantId = viewModel.ConsultantId
                              };

            var bookAppointmentCommand = new BookAppointment
                                             {
                                                 Id = viewModel.AppointmentId,
                                                 EmployeeId = viewModel.ConsultantId.Value,
                                                 DepartmentId = Constants.SalesDepartmentId,
                                                 Start = viewModel.Start,
                                                 End = viewModel.End,
                                             };

            _bus.Send(bookVisitCommand).Register<SalesReplies.ReturnCode>(returnCode => AsyncManager.Parameters["salesReturnCode"] = returnCode);
            _bus.Send(bookAppointmentCommand).Register<CalendarReplies.ReturnCode>(returnCode => AsyncManager.Parameters["calendarReturnCode"] = returnCode);
        }
        public ActionResult BookCompleted(
            BookVisitViewModel viewModel,
            SalesReplies.ReturnCode salesReturnCode,
            CalendarReplies.ReturnCode calendarReturnCode)
        {
            if (!ModelState.IsValid)
            {
                return View(viewModel);
            }

            return RedirectToAction("Index", new { viewModel.LeadId });
        }