public void Correct_methods_are_called()
        {
            // Given
            var target = GetTarget();

            var viewModel = new EmployeeChecklistGeneratorViewModel()
                                {
                                    Message = "Hello Message",
                                    ChecklistsToGenerate = new ChecklistsToGenerateViewModel()
                                                               {
                                                                   ChecklistIds = new List<long>(){1,2,3},
                                                                   RequestEmployees = new List<EmployeeWithNewEmailRequest>(){new EmployeeWithNewEmailRequest()}
                                                               },
                                    RiskAssessmentId = 500,
                                    
                                };

            var userId = target.CurrentUser.UserId;

            // When
            target.SaveAndNext(viewModel);

            // Then
            _personalRiskAssessmentService
                .Verify(x =>x.SaveChecklistGenerator(It.Is<SaveChecklistGeneratorRequest>(y => y.Message == viewModel.Message &&
                                                                                               y.ChecklistIds == viewModel.ChecklistsToGenerate.ChecklistIds &&
                                                                                               y.CurrentUserId == userId &&
                                                                                               y.PersonalRiskAssessmentId == viewModel.RiskAssessmentId &&
                                                                                               y.RequestEmployees ==viewModel.ChecklistsToGenerate.RequestEmployees)));

        }
        public void SetUp()
        {
            _employees = new List<EmployeeDto>
                             {
                                 new EmployeeDto
                                     {
                                         Id = new Guid("a9d827d2-cbfc-4d9c-9491-f8e271df77b8"),
                                         FullName = "Mark Mauve",
                                         MainContactDetails = new EmployeeContactDetailDto{ Email = "*****@*****.**" }
                                     },
                                 new EmployeeDto
                                     {
                                         Id = new Guid("cf7ce0b2-8a97-4c32-8af1-ce3c96716fdd"),
                                         FullName = "Peter Pink"
                                     },
                                 new EmployeeDto
                                     {
                                         Id = new Guid("0b20512d-3b4e-4da3-ab8c-6433c3fa4118"),
                                         FullName = "Guy Grey",
                                         MainContactDetails = new EmployeeContactDetailDto{ Email = "*****@*****.**" }
                                     }
                             };

            new List<ChecklistDto>
                {
                    new ChecklistDto
                        {
                            Id = 1L,
                            Title = "Test Checklist 01"
                        },
                    new ChecklistDto
                        {
                            Id = 2L,
                            Title = "Test Checklist 02"
                        },
                    new ChecklistDto
                        {
                            Id = 3L,
                            Title = "Test Checklist 03"
                        },
                };

            _baseInputViewModel = new EmployeeChecklistGeneratorViewModel
            {
                EmployeeId = _employees[0].Id,
                RiskAssessmentId = 234L,
                IsForMultipleEmployees = "single",
                SingleEmployeesSectionVisible = true,
                MultipleEmployeesSectionVisible = false,
                Employees = null,
                NewEmployeeEmail = null,
                NewEmployeeEmailVisible = false,
                Checklists = null,
                Message = "Test Message"
            };    
        }
Example #3
0
        public void Setup()
        {
            _companyId = 123L;
            _personalRiskAssessmentId = 333333L;

            _returnedViewModel = new EmployeeChecklistGeneratorViewModel();
            _checklistGeneratorViewModelFactory = new Mock<IEmployeeChecklistGeneratorViewModelFactory>();
            _businessSafeSessionManager = new Mock<IBusinessSafeSessionManager>();

            _target = GetTarget();
            _currentUserId = _target.CurrentUser.UserId;

            _checklistGeneratorViewModelFactory.Setup(x => x.WithCompanyId(_companyId)).Returns(_checklistGeneratorViewModelFactory.Object);
            _checklistGeneratorViewModelFactory.Setup(x => x.WithRiskAssessmentId(_personalRiskAssessmentId)).Returns(_checklistGeneratorViewModelFactory.Object);
            _checklistGeneratorViewModelFactory.Setup(x => x.WithRiskAssessorEmail(TestControllerHelpers.EmailAssigned)).Returns(_checklistGeneratorViewModelFactory.Object);
            _checklistGeneratorViewModelFactory.Setup(x => x.WithCurrentUserId(_currentUserId)).Returns(_checklistGeneratorViewModelFactory.Object);
            _checklistGeneratorViewModelFactory.Setup(x => x.GetViewModel()).Returns(_returnedViewModel);
        }
        public void Correct_result_is_returned()
        {
            // Given
            var target = GetTarget();

            var viewModel = new EmployeeChecklistGeneratorViewModel()
            {
                Message = "Hello Message",
                ChecklistsToGenerate = new ChecklistsToGenerateViewModel()
                {
                    ChecklistIds = new List<long>() { 1, 2, 3 },
                    RequestEmployees = new List<EmployeeWithNewEmailRequest>() { new EmployeeWithNewEmailRequest() }
                },
                RiskAssessmentId = 500,

            };

            // When
            var result = target.SaveAndNext(viewModel) as JsonResult;


            // Then
            Assert.That(result, Is.TypeOf<JsonResult>());
        }
 private void UpdateChecklistGenerator(EmployeeChecklistGeneratorViewModel viewModel)
 {
     var request = new SaveChecklistGeneratorRequest()
     {
         Message = viewModel.Message,
         PersonalRiskAssessmentId = viewModel.RiskAssessmentId,
         CurrentUserId = CurrentUser.UserId,
         RequestEmployees = viewModel.ChecklistsToGenerate.RequestEmployees,
         HasMultipleChecklistRecipients = viewModel.ChecklistsToGenerate.HasMultipleChecklistRecipients,
         ChecklistIds = viewModel.ChecklistsToGenerate.ChecklistIds,
         SendCompletedChecklistNotificationEmail = viewModel.SendCompletedChecklistNotificationEmail,
         CompletionDueDateForChecklists = viewModel.CompletionDueDateForChecklists,
         CompletionNotificationEmailAddress = viewModel.CompletionNotificationEmailAddress
     };
     _personalRiskAssessmentService.SaveChecklistGenerator(request);
 }
 public JsonResult SaveAndNext(EmployeeChecklistGeneratorViewModel viewModel)
 {
     UpdateChecklistGenerator(viewModel);
     return Json(new { Success = true });
 }
        public ActionResult Save(EmployeeChecklistGeneratorViewModel viewModel)
        {
            if (!ModelState.IsValid)
            {
                var returnedViewModel = _checklistGeneratorViewModelFactory
                                                .WithRiskAssessmentId(viewModel.RiskAssessmentId)
                                                .WithCompanyId(viewModel.CompanyId)
                                                .WithCurrentUserId(CurrentUser.UserId)
                                                .GetViewModel(viewModel);

                return View("Index", returnedViewModel);
            }

            UpdateChecklistGenerator(viewModel);
            TempData["Notice"] = "Checklist Generator Successfully Updated";
            return RedirectToAction("Index", new { viewModel.RiskAssessmentId, viewModel.CompanyId });
        }
        private GenerateEmployeeChecklistEmails CreateGenerateEmployeeChecklistEmailsCommand(EmployeeChecklistGeneratorViewModel viewModel)
        {
            var command = new GenerateEmployeeChecklistEmails
                              {
                                  GeneratingUserId = CurrentUser.UserId,
                                  Message = viewModel.Message,
                                  RiskAssessmentId = viewModel.RiskAssessmentId,
                                  RequestEmployees = viewModel.ChecklistsToGenerate.RequestEmployees.Select(x => new EmployeeWithNewEmail
                                                                                                                     {
                                                                                                                         EmployeeId = x.EmployeeId,
                                                                                                                         NewEmail = x.NewEmail
                                                                                                                     }).ToList(),
                                  ChecklistIds = viewModel.ChecklistsToGenerate.ChecklistIds.ToList(),
                                  SendCompletedChecklistNotificationEmail = viewModel.SendCompletedChecklistNotificationEmail,
                                  CompletionDueDateForChecklists = viewModel.CompletionDueDateForChecklists,
                                  CompletionNotificationEmailAddress = viewModel.CompletionNotificationEmailAddress
                              };

            if (viewModel.NewEmployeeEmailVisible)
            {
                command.RequestEmployees[0].NewEmail = viewModel.NewEmployeeEmail;
            }
            return command;
        }
        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 });
        }
        public EmployeeChecklistGeneratorViewModel GetViewModel()
        {
            var personalRiskAssessment = _personalRiskAssessmentService.GetWithChecklistGeneratorEmployeesAndChecklists(_riskAssessmentId, _companyId, _currentUserId);
            var employees = _employeeService.GetAll(_companyId).ToList();

            var viewModel = new EmployeeChecklistGeneratorViewModel()
                   {
                       RiskAssessmentId = _riskAssessmentId,
                       CompanyId = _companyId,
                       Employees = GetEmployees(),
                       Sites = GetSites(),
                       MultiSelectEmployees = employees,
                       Checklists = GetChecklists(),
                       Message = personalRiskAssessment.ChecklistGeneratorMessage,
                       PersonalRiskAssessementEmployeeChecklistStatus = personalRiskAssessment.PersonalRiskAssessementEmployeeChecklistStatus,
                       SendCompletedChecklistNotificationEmail = personalRiskAssessment.SendCompletedChecklistNotificationEmail,
                       CompletionDueDateForChecklists = personalRiskAssessment.CompletionDueDateForChecklists,
                       CompletionNotificationEmailAddress = personalRiskAssessment.CompletionNotificationEmailAddress ?? _riskAssessorEmail,
                       MultiSelectedEmployees = new List<SelectedEmployeeViewModel>()
                   };

            SetChecklistGeneratorEmployees(personalRiskAssessment, viewModel);

            foreach (var checklist in viewModel.Checklists)
            {
                if(personalRiskAssessment.Checklists.Select(currentChecklist => currentChecklist.Id).Contains(checklist.Id))
                {
                    checklist.Checked = true;
                }
            }

            return viewModel;
        }
        private void SetChecklistGeneratorEmployees(PersonalRiskAssessmentDto personalRiskAssessment, EmployeeChecklistGeneratorViewModel viewModel)
        {
            if (personalRiskAssessment.ChecklistGeneratorEmployees.Count() == 1)
            {
                viewModel.IsForMultipleEmployees = "single";
                viewModel.SingleEmployeesSectionVisible = true;
                var employee = personalRiskAssessment.ChecklistGeneratorEmployees.ToList()[0];

                if (employee.MainContactDetails == null || string.IsNullOrEmpty(employee.MainContactDetails.Email))
                {
                    viewModel.NewEmployeeEmailVisible = true;
                    viewModel.ExistingEmployeeEmailVisible = false;
                }
                else
                {
                    viewModel.NewEmployeeEmailVisible = false;
                    viewModel.ExistingEmployeeEmailVisible = true;
                    viewModel.ExistingEmployeeEmail = employee.MainContactDetails.Email;
                }

                viewModel.EmployeeId = employee.Id;
            }

            if (personalRiskAssessment.ChecklistGeneratorEmployees.Count() > 1)
            {
                viewModel.IsForMultipleEmployees = "multiple";
                viewModel.MultipleEmployeesSectionVisible = true;

                viewModel.MultiSelectedEmployees = _selectedEmployeeViewModelFactory
                    .WithCompanyId(_companyId)
                    .WithRiskAssessmentId(_riskAssessmentId)
                    .WithUserId(_currentUserId)
                    .GetViewModel();
            }
        }
        public EmployeeChecklistGeneratorViewModel GetViewModel(EmployeeChecklistGeneratorViewModel viewModel)
        {
            var personalRiskAssessment = _personalRiskAssessmentService.GetWithChecklistGeneratorEmployeesAndChecklists(_riskAssessmentId, _companyId, _currentUserId);
            var employees = _employeeService.GetAll(_companyId).ToList();

            var returnViewModel = new EmployeeChecklistGeneratorViewModel
                                      {
                                          EmployeeId = viewModel.EmployeeId,
                                          RiskAssessmentId = viewModel.RiskAssessmentId,
                                          IsForMultipleEmployees = viewModel.IsForMultipleEmployees,
                                          SingleEmployeesSectionVisible = viewModel.SingleEmployeesSectionVisible,
                                          MultipleEmployeesSectionVisible = viewModel.MultipleEmployeesSectionVisible,
                                          Employees = GetEmployees(),
                                          MultiSelectEmployees = employees,
                                          NewEmployeeEmail = viewModel.NewEmployeeEmail,
                                          NewEmployeeEmailVisible = viewModel.NewEmployeeEmailVisible,
                                          ExistingEmployeeEmail = viewModel.ExistingEmployeeEmail,
                                          ExistingEmployeeEmailVisible = viewModel.ExistingEmployeeEmailVisible,
                                          Checklists = GetChecklists(),
                                          Message = viewModel.Message,
                                          ChecklistsToGenerate = viewModel.ChecklistsToGenerate,
                                          SendCompletedChecklistNotificationEmail = viewModel.SendCompletedChecklistNotificationEmail,
                                          CompletionNotificationEmailAddress = viewModel.CompletionNotificationEmailAddress,
                                          CompletionDueDateForChecklists = viewModel.CompletionDueDateForChecklists,
                                          CompanyId = _companyId
                                      };

            SetChecklistGeneratorEmployees(personalRiskAssessment, returnViewModel);

            return returnViewModel;
        }