public void Add(AddRiskAssessmentReviewRequest request)
        {
            _log.Add(request);

            var riskAssessment = _riskAssessmentRepository.GetByIdAndCompanyId(request.RiskAssessmentId, request.CompanyId);
            var user = _auditedUserRepository.GetByIdAndCompanyId(request.AssigningUserId, request.CompanyId);
            var assignedToEmployee = _employeeRepository.GetByIdAndCompanyId(request.ReviewingEmployeeId, request.CompanyId);

            var riskAssessmentReview = RiskAssessmentReviewFactory.Create(
                riskAssessment,
                user,
                assignedToEmployee,
                request.ReviewDate,
                _responsibilityTaskCategoryRepository,
                request.SendTaskNotification,
                request.SendTaskCompletedNotification,
                request.SendTaskOverdueNotification,
                request.SendTaskDueTomorrowNotification,
                request.TaskGuid);

            _riskAssessmentReviewRepository.Save(riskAssessmentReview);

            _riskAssessmentReviewRepository.Flush();

        }
        public void Given_a_valid_request_When_AddRiskAssessmentReview_called_Then_review_repo_asked_to_add_a_RiskAssessmentReview()
        {
            //Given
            var target = CreateRiskAssessmentReviewService();
            var request = new AddRiskAssessmentReviewRequest()
                              {
                                  CompanyId = 1234,
                                  ReviewDate = DateTime.Now,
                                  ReviewingEmployeeId = Guid.NewGuid(),
                                  RiskAssessmentId = 1234,
                                  AssigningUserId = Guid.NewGuid()
                              };
            var riskAssessmentReviewToSaveToRepo = new RiskAssessmentReview();

            _employeeRepo
                .Setup(x => x.GetByIdAndCompanyId(It.IsAny<Guid>(), It.IsAny<long>()))
                .Returns(new Employee() { Id = request.ReviewingEmployeeId, CompanyId = request.CompanyId});

            _userForAuditingRepo
                .Setup(x => x.GetByIdAndCompanyId(It.IsAny<Guid>(), It.IsAny<long>()))
                .Returns(new UserForAuditing() { Id = request.AssigningUserId, CompanyId = request.CompanyId });

            _riskAssessmentRepo
                .Setup(x => x.GetByIdAndCompanyId(It.IsAny<long>(), It.IsAny<long>()))
                .Returns(new GeneralRiskAssessment() { Id = request.RiskAssessmentId });

            _riskAssessmentReviewRepo
                .Setup(x => x.Save(It.IsAny<RiskAssessmentReview>()))
                .Callback<RiskAssessmentReview>(x => riskAssessmentReviewToSaveToRepo = x);

            _responsibilityTaskCategoryRepository
                .Setup(x => x.GetGeneralRiskAssessmentTaskCategory())
                .Returns(new TaskCategory {Id = 3});

            //When
            target.Add(request);

            //Then
            _riskAssessmentReviewRepo.Verify(x => x.Save(It.IsAny<RiskAssessmentReview>()), Times.Once());
            Assert.That(riskAssessmentReviewToSaveToRepo.CompletionDueDate, Is.EqualTo(request.ReviewDate));
            Assert.That(riskAssessmentReviewToSaveToRepo.ReviewAssignedTo.Id, Is.EqualTo(request.ReviewingEmployeeId));
            Assert.That(riskAssessmentReviewToSaveToRepo.RiskAssessment.Id, Is.EqualTo(request.RiskAssessmentId));
            Assert.That(riskAssessmentReviewToSaveToRepo.CreatedBy.Id, Is.EqualTo(request.AssigningUserId));
        }