public void Given_that_get_non_employee_is_called_Then_should_call_correct_methods()
        {
            //Given
            var target = CreateRiskAssessmentLookupService();

            var riskAssessment = new GeneralRiskAssessment();
            var companyId = 1;
            var riskAssessmentId = 2;

            _riskAssessmentRepo
                .Setup(x => x.GetByIdAndCompanyId(riskAssessmentId, companyId))
                .Returns(riskAssessment);

            var noneEmployees = new NonEmployee[]{ new NonEmployee(), };
            _nonEmployeeRepository.Setup(x => x.GetByTermSearch(searchTerm, companyId, 20)).Returns(noneEmployees);

            //When
            target.SearchForNonEmployeesNotAttachedToRiskAssessment(
                new NonEmployeesNotAttachedToRiskAssessmentSearchRequest()
                    {
                        SearchTerm = searchTerm,
                        CompanyId = companyId,
                        RiskAssessmentId = riskAssessmentId,
                        PageLimit = 20
                    }
                );
            
            //Then
            _riskAssessmentRepo.VerifyAll();
            _nonEmployeeRepository.VerifyAll();
        }
        public void When_clone_for_risk_assessment_templating_Then_should_have_correct_result()
        {
            //Given
            var user = new UserForAuditing();
            var riskAssessment = new GeneralRiskAssessment();
            var hazard = new Hazard();

            var riskAssessmentHazard = MultiHazardRiskAssessmentHazard.Create(riskAssessment, hazard, user);
            riskAssessmentHazard.UpdateDescription("Test Description", user);

            var controlMeasure1 = new MultiHazardRiskAssessmentControlMeasure();
            var controlMeasure2 = new MultiHazardRiskAssessmentControlMeasure();
            riskAssessmentHazard.AddControlMeasure(controlMeasure1, user);
            riskAssessmentHazard.AddControlMeasure(controlMeasure2, user);


            //When
            var result = riskAssessmentHazard.CloneForRiskAssessmentTemplating(user, riskAssessment);

            //Then
            Assert.That(result.Description, Is.EqualTo(riskAssessmentHazard.Description));
            Assert.That(result.MultiHazardRiskAssessment, Is.EqualTo(riskAssessment));
            Assert.That(result.Hazard, Is.EqualTo(hazard));
            Assert.That(result.CreatedBy, Is.EqualTo(user));
            Assert.That(result.CreatedOn.Value.Date, Is.EqualTo(DateTime.Now.Date));
            Assert.That(result.ControlMeasures.Count, Is.EqualTo(riskAssessmentHazard.ControlMeasures.Count));
        }
        public void Setup()
        {
            _log = new Mock<IPeninsulaLog>();
            _generalRiskAssessmentRepository = new Mock<IGeneralRiskAssessmentRepository>();
            _riskAssessmentRepository = new Mock<IRiskAssessmentRepository>();
            _userRepository = new Mock<IUserForAuditingRepository>();
            _employeeRepository = new Mock<IEmployeeRepository>();
            _siteRepository = new Mock<ISiteRepository>();
            _riskAssessorRepository = new Mock<IRiskAssessorRepository>();

            _riskAssessment = new GeneralRiskAssessment() {Id = 123,CompanyId = 12312, RiskAssessmentSite = new Site(){Id=13123}, RiskAssessor = new RiskAssessor(){Id=16209478}};

            _riskAssessmentRepository
                .Setup(x => x.DoesAssessmentExistWithTheSameReference<GeneralRiskAssessment>(It.IsAny<long>(), It.IsAny<string>(), It.IsAny<long?>()))
                .Returns(false);

            _generalRiskAssessmentRepository
               .Setup(x => x.GetByIdAndCompanyId(_riskAssessment.Id, _riskAssessment.CompanyId))
               .Returns(() => _riskAssessment);

            _siteRepository
                .Setup(x => x.GetByIdAndCompanyId(It.IsAny<long>(), It.IsAny<long>()))
                .Returns(() => _site);

            _userRepository
                .Setup(x => x.GetByIdAndCompanyId(It.IsAny<Guid>(), It.IsAny<long>()))
                .Returns(() => _user);

            _riskAssessorRepository
                .Setup(x => x.GetByIdAndCompanyId(It.IsAny<long>(), It.IsAny<long>()))
                .Returns(() => _riskAssessor);

            _target = CreateRiskAssessmentService();
        }
        public static GeneralRiskAssessment Create(
            string title,
            string reference,
            long clientId,
            UserForAuditing currentUser,
            string location,
            string taskProcessDescription,
            Site site,
            DateTime? assessmentDate,
            RiskAssessor riskAssessor
           )
        {
            var riskAssessment = new GeneralRiskAssessment
                                     {
                                         Title = title,
                                         Reference = reference,
                                         AssessmentDate = assessmentDate,
                                         RiskAssessmentSite = site,
                                         RiskAssessor = riskAssessor,
                                         Location = location,
                                         TaskProcessDescription = taskProcessDescription,
                                         CompanyId = clientId,
                                         CreatedBy = currentUser,
                                         CreatedOn = DateTime.Now,
                                         Status = RiskAssessmentStatus.Draft,
                                         PeopleAtRisk = new List<RiskAssessmentPeopleAtRisk>(),
                                     };

            return riskAssessment;
        }
 public static GeneralRiskAssessmentDto CreateFromWithHazardsAndPeopleAtRisk(GeneralRiskAssessment riskAssessment)
 {
     var result = CreateFromWithHazards(riskAssessment);
     foreach (var peopleAtRisk in riskAssessment.PeopleAtRisk)
     {
         //TODO: PTD - map this properly
         result.PeopleAtRisk.Add(PeopleAtRiskDtoMapper.Map(peopleAtRisk.PeopleAtRisk));
     }
     return result;
 }
        public static GeneralRiskAssessmentDto CreateFromWithHazards(GeneralRiskAssessment riskAssessment)
        {
            var result = CreateFrom(riskAssessment);
            foreach (var riskAssessmentHazard in riskAssessment.Hazards.OrderBy(x=> x.OrderNumber))
            {
                result.Hazards.Add(HazardDtoMapper.Map(riskAssessmentHazard));
            }

            return result;
        }
        public void Given_a_review_has_been_added_then_the_next_review_date_equals_the_CompletionDueDate_of_the_review_added()
        {
            //GIVEN
            var review = new RiskAssessmentReview();
            review.CompletionDueDate = DateTime.Now.AddDays(10);
            var target = new GeneralRiskAssessment();

            //WHEN
            target.AddReview(review);

            //THEN
            Assert.That(target.NextReviewDate, Is.EqualTo(review.CompletionDueDate));
        }
        public void Given_a_review_is_deleted_then_the_next_review_date_equals_null()
        {
            //GIVEN
            var review = new RiskAssessmentReview();
            review.CompletionDueDate = DateTime.Now.AddDays(10);
            var target = new GeneralRiskAssessment();
            target.AddReview(review);

            //WHEN
            review.MarkForDelete(null);

            //THEN
            Assert.That(target.NextReviewDate, Is.EqualTo(null));
        }
        public void Given_a_reviews_CompletionDueDate_is_changed_then_the_next_review_date_equals_the_new_CompletionDueDate()
        {
            //GIVEN
            var review = new RiskAssessmentReview();
            review.CompletionDueDate = DateTime.Now.AddDays(10);
            review.RiskAssessmentReviewTask = new RiskAssessmentReviewTask();
            var target = new GeneralRiskAssessment();
            target.AddReview(review);

            //WHEN
            review.Edit(null,null,DateTime.Now.AddDays(20)); 

            //THEN
            Assert.That(target.NextReviewDate, Is.EqualTo(review.CompletionDueDate));
        }
        public void Given_a_review_is_completed_then_the_next_review_date_equals_the_next_review_date_specified_during_completion()
        {
            //GIVEN
            var expectedNextReviewDate = DateTime.Now.AddDays(50);
            var review = new RiskAssessmentReview();
            review.CompletionDueDate = DateTime.Now.AddDays(10);
            review.RiskAssessmentReviewTask = new RiskAssessmentReviewTask();
            var target = new GeneralRiskAssessment();
            target.AddReview(review);

            //WHEN
            review.Complete("Comments", null, expectedNextReviewDate, false, new List<CreateDocumentParameters>(), new User(){Employee = new Employee()});

            //THEN
            Assert.That(target.NextReviewDate, Is.EqualTo(expectedNextReviewDate));
        }
        public void Given_employee_is_assigned_to_task_then_return_task()
        {
            //GIVEN
            var employee = new Employee() {Id = Guid.NewGuid(), NotificationType = NotificationType.Daily };
            var riskAssessement = new GeneralRiskAssessment();
            var hazard = MultiHazardRiskAssessmentHazard.Create(riskAssessement,new Hazard(), null);
            hazard.AddFurtherActionTask( new MultiHazardRiskAssessmentFurtherControlMeasureTask() { TaskAssignedTo = employee, TaskCompletionDueDate = DateTime.Now.AddDays(-5)},null );
            riskAssessement.Hazards.Add(hazard);
            
            _gras.Add(riskAssessement);
            var target = new GetOverdueMultiHazardRiskAssessmentTasksForEmployeeQuery<GeneralRiskAssessment>(_queryableWrapper.Object);

            //WHEN
            var result = target.Execute(employee.Id, null);

            //THEN
            Assert.That(result.Count,Is.EqualTo(1));
        }
        public void SetUp()
        {
            _clientId = 3423L;
            _currentUser = new UserForAuditing { Id = Guid.NewGuid() };
            _location = "Manchester";
            _taskProcessDescription = "Process";
            _site = new Site { Id = 256L };
            _assessmentDate = new DateTime(2051, 10, 1);
            _riskAssessor = new RiskAssessor { Id = 74747L };

            _hazardTypes = new List<HazardType>
                               {
                                   new HazardType {Id = 25L},
                                   new HazardType {Id = 37L}
                               };

            _generalRiskAssessment = GeneralRiskAssessment.Create(
                "General Risk Assessment 2", "GRA02", _clientId, _currentUser, _location, _taskProcessDescription, _site,
                _assessmentDate, _riskAssessor);
        }
        public void When_addfurtheractiontasks_Then_should_add_correctly()
        {
            //Given
            var user = new UserForAuditing();
            var hazard = new Hazard();
            var riskAssessment = new GeneralRiskAssessment();
            
            var target = MultiHazardRiskAssessmentHazard.Create(riskAssessment, hazard, user);

            var furtherActionTask = new MultiHazardRiskAssessmentFurtherControlMeasureTask();
            
            //When
            target.AddFurtherActionTask(furtherActionTask, user);

            //Then
            Assert.That(target.FurtherControlMeasureTasks.Count, Is.EqualTo(1));
            Assert.That(target.FurtherControlMeasureTasks.First().MultiHazardRiskAssessmentHazard, Is.EqualTo(target));
            Assert.That(target.LastModifiedBy, Is.EqualTo(user));
            Assert.That(target.LastModifiedOn.Value.Date, Is.EqualTo(DateTime.Today.Date));
            
        }
        public void Given_employee_is_risk_assessor_and_notification_frequency_is_set_to_monthly_on_26th_then_return_tasks_since_26th_of_previous_month()
        {
            //GIVEN
            var employee = new Employee() { Id = Guid.NewGuid(), NotificationType = NotificationType.Monthly, NotificationFrequecy = 26 };
            var riskAssessor = new RiskAssessor() { Id = 5596870, Employee = employee };
            var riskAssessement = new GeneralRiskAssessment() { RiskAssessor = riskAssessor };
            var hazard = MultiHazardRiskAssessmentHazard.Create(riskAssessement, new Hazard(), null);

            hazard.AddFurtherActionTask(new MultiHazardRiskAssessmentFurtherControlMeasureTask()
            {
                Id = 111,
                TaskAssignedTo = new Employee() { Id = Guid.NewGuid() },
                TaskCompletionDueDate = new DateTime(DateTime.Now.Year, DateTime.Now.AddMonths(-1).Month, 27), //27th of last month
            }, null);

            hazard.AddFurtherActionTask(new MultiHazardRiskAssessmentFurtherControlMeasureTask()
            {
                Id = 111,
                TaskCompletionDueDate = new DateTime(DateTime.Now.Year, DateTime.Now.AddMonths(-1).Month, 28), //28th of last month
            }, null);

            hazard.AddFurtherActionTask(new MultiHazardRiskAssessmentFurtherControlMeasureTask()
            {
                Id = 111,
                TaskCompletionDueDate = new DateTime(DateTime.Now.Year, DateTime.Now.AddMonths(-1).Month, 23), //23th of last month
            }, null);

            riskAssessement.Hazards.Add(hazard);

            _gras.Add(riskAssessement);

            var target = new GetOverdueMultiHazardRiskAssessmentTasksForEmployeeQuery<GeneralRiskAssessment>(_queryableWrapper.Object);

            //WHEN
            var result = target.Execute(employee.Id, null);

            //THEN
            Assert.That(result.Count, Is.EqualTo(2));
        }
        public void Given_employee_is_risk_assessor_and_notification_frequency_is_set_to_weekly_then_return_tasks_since_previous_week()
        {
            //GIVEN
            var employee = new Employee() { Id = Guid.NewGuid(), NotificationType = NotificationType.Weekly, NotificationFrequecy = (int)DayOfWeek.Wednesday };
            var riskAssessor = new RiskAssessor() {Id = 5596870, Employee = employee};
            var riskAssessement = new GeneralRiskAssessment() { RiskAssessor = riskAssessor };
            var hazard = MultiHazardRiskAssessmentHazard.Create(riskAssessement, new Hazard(), null);

            hazard.AddFurtherActionTask(new MultiHazardRiskAssessmentFurtherControlMeasureTask()
            {
                Id = 111,
                TaskAssignedTo = new Employee() { Id = Guid.NewGuid()},
                TaskCompletionDueDate = DateTime.Now.AddDays(-2)
            }, null);

            hazard.AddFurtherActionTask(new MultiHazardRiskAssessmentFurtherControlMeasureTask()
            {
                Id = 111,
                TaskCompletionDueDate = DateTime.Now.AddDays(-3)
            }, null);

            hazard.AddFurtherActionTask(new MultiHazardRiskAssessmentFurtherControlMeasureTask()
            {
                Id = 111,
                TaskCompletionDueDate = DateTime.Now.AddDays(-12)
            }, null);

            riskAssessement.Hazards.Add(hazard);

            _gras.Add(riskAssessement);

            var target = new GetOverdueMultiHazardRiskAssessmentTasksForEmployeeQuery<GeneralRiskAssessment>(_queryableWrapper.Object);

            //WHEN
            var result = target.Execute(employee.Id, null);

            //THEN
            Assert.That(result.Count, Is.EqualTo(2));
        }
 private MultiHazardRiskAssessmentFurtherControlMeasureTask CreateTask()
 {
     var riskAssessement = new GeneralRiskAssessment();
     var hazard = MultiHazardRiskAssessmentHazard.Create(riskAssessement, new Hazard(), null);
     return new MultiHazardRiskAssessmentFurtherControlMeasureTask() {MultiHazardRiskAssessmentHazard = hazard, SendTaskOverdueNotification = true};
 }
        public void Given_notification_set_to_monthly_and_task_due_in_more_than_a_month_then_dont_return_task()
        {
            //GIVEN
            var employee = new Employee() { Id = Guid.NewGuid(), NotificationType = NotificationType.Monthly };
            var riskAssessement = new GeneralRiskAssessment();
            var hazard = MultiHazardRiskAssessmentHazard.Create(riskAssessement, new Hazard(), null);
            hazard.AddFurtherActionTask(new MultiHazardRiskAssessmentFurtherControlMeasureTask()
            {
                TaskAssignedTo = employee,
                TaskStatus = TaskStatus.Outstanding,
                TaskCompletionDueDate = DateTime.Now.AddDays(39)
            }, null);
            riskAssessement.Hazards.Add(hazard);

            _gras.Add(riskAssessement);
            var target = new GetDueMultiHazardRiskAssessmentTasksForEmployeeQuery<GeneralRiskAssessment>(_queryableWrapper.Object);

            //WHEN
            var result = target.Execute(employee.Id, null);

            //THEN
            Assert.That(result.Count, Is.EqualTo(0));
        }