public void CallingSaveChecklistGeneratorCallsCorrectMethods()
        {
            var hasMultipleChecklistRecipients = false;
            var employeeId = Guid.NewGuid();
            var employeeEmail = "*****@*****.**";
            var personalRiskAssessmentId = 1728L;
            var currentUserId = Guid.NewGuid();

            var request = new SaveChecklistGeneratorRequest
                              {
                                  PersonalRiskAssessmentId = personalRiskAssessmentId,
                                  HasMultipleChecklistRecipients = hasMultipleChecklistRecipients,
                                  ChecklistIds = new List<long> {12, 45, 72},
                                  RequestEmployees = new List<EmployeeWithNewEmailRequest>
                                                  {
                                                      new EmployeeWithNewEmailRequest {EmployeeId = employeeId, NewEmail = employeeEmail }
                                                  },
                                  Message = "Test Message",
                                  CurrentUserId = currentUserId
                              };

            var checklistsToReturn = new List<Checklist>
                                         {
                                             new Checklist {Id = 12},
                                             new Checklist {Id = 45},
                                             new Checklist {Id = 72}
                                         };

            var employee = new Employee
                               {
                                   Id = employeeId,
                                   ContactDetails = new List<EmployeeContactDetail>
                                                        {
                                                            new EmployeeContactDetail {Email = employeeEmail}
                                                        }
                               };

            var currentUser = new UserForAuditing{ Id = currentUserId};
            var personalRiskAssessment = new Mock<PersonalRiskAssessment>();

            _checklistRepository
                .Setup(x => x.GetByIds(request.ChecklistIds))
                .Returns(checklistsToReturn);

            _employeeRepository
                .Setup(x => x.GetById(employeeId))
                .Returns(employee);

            _userRepo
                .Setup(x => x.GetById(currentUserId))
                .Returns(currentUser);

            _personalRiskAssessmentRepository
                .Setup(x => x.GetById(personalRiskAssessmentId))
                .Returns(personalRiskAssessment.Object);

            GetTarget().SaveChecklistGenerator(request);
            _checklistRepository.Verify(x => x.GetByIds(request.ChecklistIds));
            _employeeRepository.Verify(x => x.GetById(employeeId));
            _userRepo.Verify(x => x.GetById(currentUserId));
            _personalRiskAssessmentRepository.Verify(x => x.GetById(personalRiskAssessmentId));

            personalRiskAssessment.Verify(x => x.SaveChecklistGenerator(
                hasMultipleChecklistRecipients,
                It.Is<IList<EmployeesWithNewEmailsParameters>>(
                    y => y.Count() == 1 
                    && y[0].Employee == employee
                    && y[0].NewEmail == employeeEmail
                ),
                checklistsToReturn,
                request.Message,
                currentUser,
                null,
                null,
                null));
        }
 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 void SaveChecklistGenerator(SaveChecklistGeneratorRequest request)
        {
            var checklists = _checklistRepository.GetByIds(request.ChecklistIds).ToList();
            var employeesParameters = new List<EmployeesWithNewEmailsParameters>();

            foreach (var employeeRequest in request.RequestEmployees)
            {
                employeesParameters.Add(
                    new EmployeesWithNewEmailsParameters
                        {
                            Employee = _employeeRepository.GetById(employeeRequest.EmployeeId),
                            NewEmail = employeeRequest.NewEmail
                        }
                    );
            }

            var user = _userForAuditingRepository.GetById(request.CurrentUserId);
            var personalRiskAssessment = _personalRiskAssessmentRepository.GetById(request.PersonalRiskAssessmentId);
            personalRiskAssessment.SaveChecklistGenerator(request.HasMultipleChecklistRecipients, employeesParameters, checklists, request.Message, user, request.SendCompletedChecklistNotificationEmail, request.CompletionDueDateForChecklists, request.CompletionNotificationEmailAddress);
            _personalRiskAssessmentRepository.Update(personalRiskAssessment);
        }