public ActionResult Generate(EmployeeChecklistGeneratorViewModel viewModel)
        {
            viewModel.Validate(new ValidationContext(viewModel, null, null), ModelState);

            if (!ModelState.IsValid)
            {
                var invalidViewModel = _checklistGeneratorViewModelFactory
                                           .WithRiskAssessmentId(viewModel.RiskAssessmentId)
                                           .WithCompanyId(viewModel.CompanyId)
                                           .WithCurrentUserId(CurrentUser.UserId)
                                           .WithRiskAssessorEmail(CurrentUser.Email)
                                           .GetViewModel(viewModel);

                return View("Index", invalidViewModel);
            }

            
            using (var session = _businessSafeSessionManager.Session)
            {
                _personalRiskAssessmentService.SetAsGenerating(viewModel.RiskAssessmentId);
                _personalRiskAssessmentService.ResetChecklistAfterGenerate(new ResetAfterChecklistGenerateRequest()
                {
                    CompanyId = viewModel.CompanyId,
                    CurrentUserId = CurrentUser.UserId,
                    PersonalRiskAssessmentId =
                        viewModel.RiskAssessmentId
                });
                
                _businessSafeSessionManager.CloseSession();
            }
              
            
            // Temp measure till we get DTC going correctly
            var createGenerateEmployeeChecklistEmailsCommand = CreateGenerateEmployeeChecklistEmailsCommand(viewModel);
            _bus.Send(createGenerateEmployeeChecklistEmailsCommand);
            
            
            TempData["Notice"] = "Employee Checklists Sent";
            return RedirectToAction("Index", new { viewModel.RiskAssessmentId, viewModel.CompanyId });
        }
        public JsonResult ValidateGenerate(EmployeeChecklistGeneratorViewModel viewModel)
        {
            var validationErrors = viewModel.Validate(new ValidationContext(viewModel, null, null), ModelState);

            var errors = validationErrors == null ? null : validationErrors.Select(x => x.ErrorMessage).ToList();

            return Json(new { success = !validationErrors.Any(), errors = errors });
        }