public void BookAsync(BookHolidayViewModel viewModel)
        {
            AsyncManager.Parameters["viewModel"] = viewModel;

            var humanResourcesValidationMessages = _holidayValidator.ValidateBook(
                viewModel.EmployeeId,
                viewModel.Start,
                viewModel.End,
                viewModel.Description);

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

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

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

            var bookHolidayCommand = new BookHoliday
            {
                Id            = viewModel.Id,
                AppointmentId = viewModel.AppointmentId,
                EmployeeId    = viewModel.EmployeeId,
                Start         = viewModel.Start,
                End           = viewModel.End,
                Description   = viewModel.Description
            };

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

            _bus.Send(bookHolidayCommand).Register <HumanResourcesReplies.ReturnCode>(returnCode => AsyncManager.Parameters["bookHolidayReturnCode"] = returnCode);
            _bus.Send(bookAppointmentCommand).Register <CalendarReplies.ReturnCode>(returnCode => AsyncManager.Parameters["calendarReturnCode"]      = returnCode);
        }
Beispiel #2
0
        public ActionResult BookUpdate(BookHolidayViewModel viewModel)
        {
            if (viewModel.Updating)
            {
                var updateHolidayRequest = new UpdateHolidayRequest
                {
                    Id    = viewModel.HolidayId.Value,
                    Start = viewModel.Start,
                    End   = viewModel.End
                };

                var validationResult = _holidayService.ValidateUpdate(updateHolidayRequest);

                if (!validationResult.IsValid)
                {
                    foreach (var error in validationResult.Errors)
                    {
                        ModelState.AddModelError(error.Field ?? "", error.Text);
                    }

                    return(View("BookUpdate", viewModel));
                }

                _holidayService.Update(updateHolidayRequest);
            }
            else
            {
                Guid id = Guid.NewGuid();

                var bookHolidayRequest = new BookHolidayRequest
                {
                    Id         = id,
                    EmployeeId = viewModel.EmployeeId.Value,
                    Start      = viewModel.Start,
                    End        = viewModel.End
                };

                var validationResult = _holidayService.ValidateBook(bookHolidayRequest);

                if (!validationResult.IsValid)
                {
                    foreach (var error in validationResult.Errors)
                    {
                        ModelState.AddModelError(error.Field ?? "", error.Text);
                    }

                    return(View("BookUpdate", viewModel));
                }

                _holidayService.Book(bookHolidayRequest);
            }

            return(RedirectToAction("Index", "Employee", new { employeeId = viewModel.EmployeeId }));
        }
        public ActionResult BookCompleted(
            BookHolidayViewModel viewModel,
            HumanResourcesReplies.ReturnCode bookHolidayReturnCode,
            CalendarReplies.ReturnCode calendarReturnCode)
        {
            if (!ModelState.IsValid)
            {
                return(View(viewModel));
            }

            return(RedirectToAction("Index", new { viewModel.EmployeeId }));
        }
Beispiel #4
0
        public ActionResult BookUpdate(bool updating, Guid?employeeId, Guid?holidayId, DateTime?start, DateTime?end)
        {
            var viewModel = new BookHolidayViewModel
            {
                Updating   = updating,
                EmployeeId = employeeId,
                HolidayId  = holidayId,
                Start      = start.HasValue ? start.Value : new DateTime(2012, 08, 1),
                End        = end.HasValue ? end.Value : new DateTime(2012, 08, 1),
            };

            return(View(viewModel));
        }
        public ActionResult Book(Guid employeeId)
        {
            Employee employee;

            using (var transactionScope = new TransactionScope())
            {
                employee = _employeeRepository.GetById(employeeId);
                transactionScope.Complete();
            }

            var viewModel = new BookHolidayViewModel
            {
                Id               = Guid.NewGuid(),
                AppointmentId    = Guid.NewGuid(),
                EmployeeId       = employeeId,
                EmployeeFullName = employee.FullName
            };

            return(View(viewModel));
        }