public void Given_employee_is_risk_assesor_then_return_task()
        {
            //GIVEN
            var employee = new Employee() { Id = Guid.NewGuid(), NotificationType = NotificationType.Daily };
            var riskAssessor = new RiskAssessor() { Id = 5596870, Employee = employee };

            var riskAssessement = new HazardousSubstanceRiskAssessment() { RiskAssessor = riskAssessor };
            var riskAssessementReview = new RiskAssessmentReview() { RiskAssessment = riskAssessement, };
            riskAssessementReview.RiskAssessmentReviewTask = new RiskAssessmentReviewTask()
            {
                RiskAssessmentReview = riskAssessementReview,
                TaskCompletedDate = DateTime.Now.AddDays(-5),
                TaskStatus = TaskStatus.Completed
            };

            riskAssessement.Reviews.Add(riskAssessementReview);
            _riskAssessments.Add(riskAssessement);

            var target = new GetCompletedRiskAssessmentReviewTasksForEmployeeQuery( _queryableWrapper.Object );

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

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

        }
 public HazardousSubstanceLinkedRiskAssessmentDto Map(HazardousSubstanceRiskAssessment riskAssessment)
 {
     return new HazardousSubstanceLinkedRiskAssessmentDto()
                {
                    Id = riskAssessment.Id
                };
 }
        public void Given_employee_is_risk_assessor_then_return_task()
        {
            //GIVEN
            var employee = new Employee() { Id = Guid.NewGuid(), NotificationType = NotificationType.Daily};
            var riskAssessor = new RiskAssessor() { Id = 5596870, Employee = employee }; 
            var riskAssessement = new HazardousSubstanceRiskAssessment() { RiskAssessor = riskAssessor, Status = RiskAssessmentStatus.Live};
            var hazardousSubstanceRiskAssessmentFurtherControlMeasureTask =
                new HazardousSubstanceRiskAssessmentFurtherControlMeasureTask() 
                {   
                    HazardousSubstanceRiskAssessment = riskAssessement, 
                    TaskCompletedDate = DateTime.Now,
                    TaskStatus = TaskStatus.Completed
                };

            riskAssessement.FurtherControlMeasureTasks.Add(hazardousSubstanceRiskAssessmentFurtherControlMeasureTask);

            _hsRiskAssessments.Add(riskAssessement);

            var target = new GetCompletedHazardousSubstanceRiskAssessmentFurtherControlMeasureTasksForEmployeeQuery(null);

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

            //THEN
            Assert.That(result.Count, Is.EqualTo(1));
        }
        public void Given_employee_is_assigned_to_task_due_tomorrow_then_return_task()
        {
            //GIVEN
            var employee = new Employee() { Id = Guid.NewGuid(), NotificationType = NotificationType.Daily};
           
            var riskAssessement = new HazardousSubstanceRiskAssessment();
            var riskAssessementReview = new RiskAssessmentReview()
                                            {
                                                RiskAssessment = riskAssessement, 
                                                ReviewAssignedTo = employee
                                            };

            riskAssessementReview.RiskAssessmentReviewTask = new RiskAssessmentReviewTask()
            {
                TaskAssignedTo = employee, 
                RiskAssessmentReview = riskAssessementReview, 
                TaskCompletionDueDate = DateTime.Now.AddDays(1)
            };

            riskAssessement.Reviews.Add(riskAssessementReview);
            _riskAssessments.Add(riskAssessement);

            var target = new GetDueRiskAssessmentReviewTasksForEmployeeQuery( _queryableWrapper.Object);

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

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

        }
        public void Given_no_further_control_measure_tasks_and_no_review_tasks_then_CompletionDueDate_is_null()
        {
            //given
            var riskAss = new HazardousSubstanceRiskAssessment();
            riskAss.FurtherControlMeasureTasks.Clear();

            Assert.IsNull(riskAss.CompletionDueDate);
        }
 public void SetUp()
 {
     _clientId = 3423L;
     _currentUser = new UserForAuditing { Id = Guid.NewGuid() };
     _hazardousSubstance = new HazardousSubstance {Id = 3764L};
     _hazardousSubstanceRiskAssessment = HazardousSubstanceRiskAssessment.Create(
         "Hazardous Substance Risk Assessment 2", "GRA02", _clientId, _currentUser, _hazardousSubstance);
 }
        public void Given_further_control_measure_task_has_been_marked_as_not_required_and_no_review_tasks_then_CompletionDueDate_is_null()
        {
            //given
            var riskAss = new HazardousSubstanceRiskAssessment();
            riskAss.AddFurtherControlMeasureTask(new HazardousSubstanceRiskAssessmentFurtherControlMeasureTask() { Id = 12312, Deleted = false, TaskCompletionDueDate = DateTime.Now, TaskStatus = TaskStatus.NoLongerRequired }, null);

            //THEN
            Assert.IsNull(riskAss.CompletionDueDate);
        }
 public void Given_further_control_measure_tasks_and_no_review_tasks_then_CompletionDueDate_is_next_FCM_CompletionDueDate()
 {
     //given
     var expectedCompletionDueDate = new DateTime(2013, 4, 1);
     var riskAss = new HazardousSubstanceRiskAssessment();
     riskAss.AddFurtherControlMeasureTask(new HazardousSubstanceRiskAssessmentFurtherControlMeasureTask() { Id = 12312, Deleted = false, TaskCompletionDueDate = DateTime.Now }, null);
     riskAss.AddFurtherControlMeasureTask(new HazardousSubstanceRiskAssessmentFurtherControlMeasureTask() { Id = 1231234, Deleted = false, TaskCompletionDueDate = expectedCompletionDueDate }, null);
   
     //THEN
     Assert.AreEqual(expectedCompletionDueDate, riskAss.CompletionDueDate.Value);
 }
        public void Setup()
        {
            _user = new UserForAuditing();
            _controlMeasureId = 500;

            _riskAssessment = HazardousSubstanceRiskAssessment.Create("title", "reference", 200, _user, null);
            _assessmentControlMeasure = HazardousSubstanceRiskAssessmentControlMeasure.Create("", _riskAssessment, _user);
            _assessmentControlMeasure.Id = _controlMeasureId;

            _riskAssessment.AddControlMeasure(_assessmentControlMeasure, _user);
        }
        public void Given_a_review_task_and_no_further_control_measure_tasks_then_CompletionDueDate_is_next_review_date()
        {
            //given
            var expectedCompletionDueDate = new DateTime(2013, 7, 1);
            var riskAss = new HazardousSubstanceRiskAssessment();
            riskAss.AddReview(new RiskAssessmentReview() {Id = 1, CompletionDueDate = DateTime.Now.AddDays(123)});
            riskAss.AddReview(new RiskAssessmentReview() {Id = 2, CompletionDueDate = expectedCompletionDueDate});
            riskAss.AddReview(new RiskAssessmentReview() {Id = 3, CompletionDueDate = DateTime.Now});

            //THEN
            Assert.AreEqual(expectedCompletionDueDate, riskAss.CompletionDueDate.Value);
        }
 public static HazardousSubstanceRiskAssessment Create(string title, string reference, long clientId, UserForAuditing currentUser, HazardousSubstance hazardousSubstance)
 {
     var riskAssessment = new HazardousSubstanceRiskAssessment
     {
         CompanyId = clientId,
         Reference = reference,
         Title = title,
         CreatedBy = currentUser,
         CreatedOn = DateTime.Now,
         Status = RiskAssessmentStatus.Draft,
         HazardousSubstance = hazardousSubstance
     };
     return riskAssessment;
 }
        public void When_SetLastRecommendedControlSystem_Then_set_correct_properties()
        {
            // Given
            var riskAssessment = new HazardousSubstanceRiskAssessment();
            var controlSystem = new ControlSystem();
            var user = new UserForAuditing();

            // When
            riskAssessment.SetLastRecommendedControlSystem(controlSystem, user);

            // Then
            Assert.That(riskAssessment.LastRecommendedControlSystem, Is.EqualTo(controlSystem));
            Assert.That(riskAssessment.LastModifiedBy, Is.EqualTo(user));
            Assert.That(riskAssessment.LastModifiedOn.Value.Date, Is.EqualTo(DateTime.Now.Date));
        }
        public void Given_hazard_substances_risk_assessment_has_reviews_with_mapping_then_reviews_are_populated()
        {
            //Given
            var hazardousSubstanceRiskAssessment = new HazardousSubstanceRiskAssessment();
            hazardousSubstanceRiskAssessment.Reviews = new List<RiskAssessmentReview>(){ new RiskAssessmentReview(){Id = 123123}};
            var target = new HazardousSubstanceRiskAssessmentDtoMapper();

            //When
            var result = target.Map(hazardousSubstanceRiskAssessment);

            //Act
            Assert.IsNotNull(result.Reviews);
            Assert.IsTrue(result.Reviews.Any());
            Assert.AreEqual(hazardousSubstanceRiskAssessment.Reviews.First().Id, result.Reviews.First().Id);
            

        }
        public void Given_hazard_substances_risk_assessment_with_any_mapping_then_created_by_is_not_null()
        {
            //Given
            var hazardousSubstanceRiskAssessment = new HazardousSubstanceRiskAssessment();
            hazardousSubstanceRiskAssessment.CreatedBy = new UserForAuditing
                                    {
                                        Id = Guid.NewGuid(),
                                        Employee =
                                            new EmployeeForAuditing() {Id = Guid.NewGuid(), Forename = "testf", Surname = "testS"}
                                    };
            var target = new HazardousSubstanceRiskAssessmentDtoMapper();

            //When
            var result = target.Map(hazardousSubstanceRiskAssessment);

            //Act
            Assert.IsNotNull(result.CreatedBy);
            
        }
        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) System.DayOfWeek.Wednesday};
            var riskAssessor = new RiskAssessor() { Id = 5596870, Employee = employee };
            var riskAssessement = new HazardousSubstanceRiskAssessment() { RiskAssessor = riskAssessor, Status = RiskAssessmentStatus.Live };
            
            riskAssessement.FurtherControlMeasureTasks.Add(new HazardousSubstanceRiskAssessmentFurtherControlMeasureTask()
                {
                    HazardousSubstanceRiskAssessment = riskAssessement,
                    TaskCompletedDate = DateTime.Now,
                    TaskStatus = TaskStatus.Completed,
                    Title = "one"
                });

            riskAssessement.FurtherControlMeasureTasks.Add(new HazardousSubstanceRiskAssessmentFurtherControlMeasureTask()
            {
                HazardousSubstanceRiskAssessment = riskAssessement,
                TaskCompletedDate = DateTime.Now.AddDays(-10),
                TaskStatus = TaskStatus.Completed,
                Title = "two"
            });

            riskAssessement.FurtherControlMeasureTasks.Add(new HazardousSubstanceRiskAssessmentFurtherControlMeasureTask()
            {
                HazardousSubstanceRiskAssessment = riskAssessement,
                TaskCompletedDate = DateTime.Now.AddDays(-5),
                TaskStatus = TaskStatus.Completed,
                Title = "three"
            });

            _hsRiskAssessments.Add(riskAssessement);

            var target = new GetCompletedHazardousSubstanceRiskAssessmentFurtherControlMeasureTasksForEmployeeQuery(null);

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

            //THEN
            Assert.That(result.Count, Is.EqualTo(2));
            Assert.That(result[0].Title, Is.EqualTo("one"));
            Assert.That(result[1].Title, Is.EqualTo("three"));
        }
        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 HazardousSubstanceRiskAssessment();
            var hazardousSubstanceRiskAssessmentFurtherControlMeasureTask = 
                new HazardousSubstanceRiskAssessmentFurtherControlMeasureTask() {TaskAssignedTo = employee, TaskCompletionDueDate = DateTime.Now.AddDays(-5)};
            riskAssessement.FurtherControlMeasureTasks.Add(hazardousSubstanceRiskAssessmentFurtherControlMeasureTask);

            _hsRiskAssessments.Add(riskAssessement);

            var target =
                new GetOverdueHazardousSubstanceRiskAssessmentFurtherControlMeasureTasksForEmployeeQuery(
                    _queryableWrapper.Object);

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

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

        }
        public HazardousSubstanceRiskAssessmentDto Map(HazardousSubstanceRiskAssessment riskAssessment)
        {
            var result = new HazardousSubstanceRiskAssessmentDto()
                             {
                                 CompanyId = riskAssessment.CompanyId,
                                 Id = riskAssessment.Id,
                                 Title = riskAssessment.Title,
                                 Reference = riskAssessment.Reference,
                                 CreatedOn = riskAssessment.CreatedOn,
                                 CreatedBy = riskAssessment.CreatedBy != null ? new AuditedUserDtoMapper().Map(riskAssessment.CreatedBy) : null,
                                 Status = riskAssessment.Status,
                                 AssessmentDate = riskAssessment.AssessmentDate,
                                 Deleted = riskAssessment.Deleted,
                                 IsInhalationRouteOfEntry = riskAssessment.IsInhalationRouteOfEntry.HasValue ? riskAssessment.IsInhalationRouteOfEntry.Value : false,
                                 IsIngestionRouteOfEntry = riskAssessment.IsIngestionRouteOfEntry.HasValue ? riskAssessment.IsIngestionRouteOfEntry.Value : false,
                                 IsAbsorptionRouteOfEntry = riskAssessment.IsAbsorptionRouteOfEntry.HasValue ? riskAssessment.IsAbsorptionRouteOfEntry.Value : false,
                                 WorkspaceExposureLimits = riskAssessment.WorkspaceExposureLimits,
                                 NonEmployees = GetNonEmployees(riskAssessment),
                                 Employees = GetEmployees(riskAssessment),
                                 Quantity = riskAssessment.Quantity,
                                 MatterState = riskAssessment.MatterState,
                                 DustinessOrVolatility = riskAssessment.DustinessOrVolatility,
                                 Group = riskAssessment.Group != null ? new HazardousSubstanceGroupDtoMapper().Map(riskAssessment.Group) : null,
                                 HealthSurveillanceRequired = riskAssessment.HealthSurveillanceRequired,
                                 NextReviewDate = riskAssessment.NextReviewDate,
                                 CompletionDueDate = riskAssessment.CompletionDueDate
                             };

            if (riskAssessment.HazardousSubstance != null)
            {
                result.HazardousSubstance = new HazardousSubstanceDtoMapper().Map(riskAssessment.HazardousSubstance);
            }

            if (riskAssessment.RiskAssessor != null)
            {
                result.RiskAssessor = new RiskAssessorDtoMapper().MapWithEmployee(riskAssessment.RiskAssessor);
            }

            if (riskAssessment.RiskAssessmentSite != null)
            {
                result.Site = new SiteStructureElementDtoMapper().Map(riskAssessment.RiskAssessmentSite);
            }

            if (riskAssessment.ControlMeasures != null && riskAssessment.ControlMeasures.Any())
            {
                result.ControlMeasures = new HazardousSubstanceRiskAssessmentControlMeasureDtoMapper().Map(riskAssessment.ControlMeasures);
            }

            if (riskAssessment.FurtherControlMeasureTasks != null && riskAssessment.FurtherControlMeasureTasks.Any())
            {
                result.FurtherControlMeasureTasks = new TaskDtoMapper().MapWithAssignedTo(riskAssessment.FurtherControlMeasureTasks);
            }

            result.Reviews = riskAssessment.Reviews != null ? riskAssessment.Reviews.Select(review => new RiskAssessmentReviewDto()
                                                                                                          {
                                                                                                              Comments = review.Comments
                                                                                                              ,
                                                                                                              CompletedBy = review.CompletedBy != null ? new EmployeeDtoMapper().Map(review.CompletedBy) : null
                                                                                                              ,
                                                                                                              CompletedDate = review.CompletedDate
                                                                                                              ,
                                                                                                              CompletionDueDate = review.CompletionDueDate,
                                                                                                              Id = review.Id,
                                                                                                              IsReviewOutstanding = review.IsReviewOutstanding
                                                                                                              ,
                                                                                                              ReviewAssignedTo = review.ReviewAssignedTo != null ? new EmployeeDtoMapper().Map(review.ReviewAssignedTo) : null
                                                                                                          }).ToList() : new List<RiskAssessmentReviewDto>();

            return result;
        }
        public void Given_notification_set_to_weekly_and_task_is_due_in_less_than_a_week_return_task()
        {
            //GIVEN
            var employee = new Employee() { Id = Guid.NewGuid(), NotificationType = NotificationType.Weekly};
            var riskAssessor = new RiskAssessor() { Id = 5596870, Employee = employee };

            var riskAssessement = new HazardousSubstanceRiskAssessment() { RiskAssessor = riskAssessor };
            var riskAssessementReview = new RiskAssessmentReview() { RiskAssessment = riskAssessement, };
            riskAssessementReview.RiskAssessmentReviewTask = new RiskAssessmentReviewTask()
            {
                RiskAssessmentReview = riskAssessementReview,
                TaskCompletionDueDate = DateTime.Now.AddDays(4)
            };

            riskAssessement.Reviews.Add(riskAssessementReview);
            _riskAssessments.Add(riskAssessement);

            var target =
                new GetDueRiskAssessmentReviewTasksForEmployeeQuery(
                    _queryableWrapper.Object);

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

            //THEN
            Assert.That(result.Count, Is.EqualTo(1));
        }
        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 HazardousSubstanceRiskAssessment() { RiskAssessor = riskAssessor, Status = RiskAssessmentStatus.Live };

            riskAssessement.FurtherControlMeasureTasks.Add(new HazardousSubstanceRiskAssessmentFurtherControlMeasureTask()
            {
                HazardousSubstanceRiskAssessment = riskAssessement,
                TaskCompletedDate = new DateTime(DateTime.Now.Year, DateTime.Now.AddMonths(-1).Month , 27), //27th of last month
                TaskStatus = TaskStatus.Completed,
                Id = 111,
            });

            riskAssessement.FurtherControlMeasureTasks.Add(new HazardousSubstanceRiskAssessmentFurtherControlMeasureTask()
            {
                HazardousSubstanceRiskAssessment = riskAssessement,
                TaskCompletedDate = new DateTime(DateTime.Now.Year, DateTime.Now.AddMonths(-1).Month, 28), //28th of last month,
                TaskStatus = TaskStatus.Completed,
                Id=222,
            });

            riskAssessement.FurtherControlMeasureTasks.Add(new HazardousSubstanceRiskAssessmentFurtherControlMeasureTask()
            {
                HazardousSubstanceRiskAssessment = riskAssessement,
                TaskCompletedDate = new DateTime(DateTime.Now.Year, DateTime.Now.AddMonths(-1).Month, 23), //23th of last month,
                TaskStatus = TaskStatus.Completed,
                Id = 333
            });

            _hsRiskAssessments.Add(riskAssessement);

            var target = new GetCompletedHazardousSubstanceRiskAssessmentFurtherControlMeasureTasksForEmployeeQuery(null);

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

            //THEN
            Assert.That(result.Count, Is.EqualTo(2));
            Assert.That(result[0].Id, Is.EqualTo(111));
            Assert.That(result[1].Id, Is.EqualTo(222));
        }
        public void Given_a_review_task_has_a_completion_due_date_after_the_next_further_control_measure_tasks_then_CompletionDueDate_is_the_next_FCM_completion_due_date()
        {
            //given
            var nextFCMCompletionDueDate = new DateTime(2013, 2, 16);
            var nextReviewDate = new DateTime(2013, 3, 4);
            var riskAss = new HazardousSubstanceRiskAssessment();
            var hazard = new MultiHazardRiskAssessmentHazard() { Id = 124124 };
            riskAss.AddFurtherControlMeasureTask(new HazardousSubstanceRiskAssessmentFurtherControlMeasureTask() { Id = 12312, Deleted = false, TaskCompletionDueDate = DateTime.Now }, null);
            riskAss.AddFurtherControlMeasureTask(new HazardousSubstanceRiskAssessmentFurtherControlMeasureTask() { Id = 1231234, Deleted = false, TaskCompletionDueDate = nextFCMCompletionDueDate }, null);
            riskAss.Reviews = new List<RiskAssessmentReview>()
                                                 {

                                                     new RiskAssessmentReview() {Id = 2, CompletionDueDate = nextReviewDate}
                                                 };


            //THEN
            Assert.AreEqual(nextFCMCompletionDueDate, riskAss.CompletionDueDate.Value);
        }
 public void Given_a_review_task_has_been_deleted_and_no_further_control_measure_tasks_then_CompletionDueDate_is_null()
 {
     //given
     var riskAss = new HazardousSubstanceRiskAssessment();
     riskAss.AddReview(new RiskAssessmentReview() {Id = 2, CompletionDueDate = DateTime.Now, Deleted = true});
 
     //THEN
     Assert.IsNull(riskAss.CompletionDueDate);
 }
        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)System.DayOfWeek.Wednesday };
            var riskAssessor = new RiskAssessor() { Id = 5596870, Employee = employee }; 
            var riskAssessement = new HazardousSubstanceRiskAssessment() { RiskAssessor = riskAssessor };

            riskAssessement.FurtherControlMeasureTasks.Add(
                                    new HazardousSubstanceRiskAssessmentFurtherControlMeasureTask()
                                    {
                                        Id = 111,
                                        HazardousSubstanceRiskAssessment = riskAssessement,
                                        TaskCompletionDueDate = DateTime.Now.AddDays(-1)
                                    });

            riskAssessement.FurtherControlMeasureTasks.Add(
                                    new HazardousSubstanceRiskAssessmentFurtherControlMeasureTask()
                                    {
                                        Id= 222,
                                        HazardousSubstanceRiskAssessment = riskAssessement, 
                                        TaskCompletionDueDate = DateTime.Now.AddDays(-5)
                                    });

            riskAssessement.FurtherControlMeasureTasks.Add(
                                    new HazardousSubstanceRiskAssessmentFurtherControlMeasureTask()
                                    {
                                        Id =333,
                                        HazardousSubstanceRiskAssessment = riskAssessement,
                                        TaskCompletionDueDate = DateTime.Now
                                    });

            riskAssessement.FurtherControlMeasureTasks.Add(
                                    new HazardousSubstanceRiskAssessmentFurtherControlMeasureTask()
                                    {
                                        Id = 444,
                                        HazardousSubstanceRiskAssessment = riskAssessement,
                                        TaskCompletionDueDate = DateTime.Now.AddDays(-10)
                                    });

            _hsRiskAssessments.Add(riskAssessement);

            var target =
                new GetOverdueHazardousSubstanceRiskAssessmentFurtherControlMeasureTasksForEmployeeQuery(_queryableWrapper.Object);

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

            //THEN
            Assert.That(result.Count, Is.EqualTo(2));
            Assert.That(result[0].Id, Is.EqualTo(111));
            Assert.That(result[1].Id, Is.EqualTo(222));
        }
        public void Given_employee_is_assignee_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 riskAssessement = new HazardousSubstanceRiskAssessment() { };

            riskAssessement.FurtherControlMeasureTasks.Add(new HazardousSubstanceRiskAssessmentFurtherControlMeasureTask()
            {
                HazardousSubstanceRiskAssessment = riskAssessement,
                TaskCompletionDueDate = new DateTime(DateTime.Now.Year, DateTime.Now.AddMonths(-1).Month, 27), //27th of last month
                TaskStatus = TaskStatus.Outstanding,
                Id = 111,
                TaskAssignedTo = employee
            });

            riskAssessement.FurtherControlMeasureTasks.Add(new HazardousSubstanceRiskAssessmentFurtherControlMeasureTask()
            {
                HazardousSubstanceRiskAssessment = riskAssessement,
                TaskCompletionDueDate = new DateTime(DateTime.Now.Year, DateTime.Now.AddMonths(-1).Month, 28), //28th of last month,
                TaskStatus = TaskStatus.Outstanding,
                Id = 222,
                TaskAssignedTo = employee
            });

            riskAssessement.FurtherControlMeasureTasks.Add(new HazardousSubstanceRiskAssessmentFurtherControlMeasureTask()
            {
                HazardousSubstanceRiskAssessment = riskAssessement,
                TaskCompletionDueDate = new DateTime(DateTime.Now.Year, DateTime.Now.AddMonths(-1).Month, 23), //23th of last month,
                TaskStatus = TaskStatus.Outstanding,
                Id = 333,
                TaskAssignedTo = employee
            });

            _hsRiskAssessments.Add(riskAssessement);

            var target = new GetOverdueHazardousSubstanceRiskAssessmentFurtherControlMeasureTasksForEmployeeQuery(_queryableWrapper.Object);

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

            //THEN
            Assert.That(result.Count, Is.EqualTo(2));
            Assert.That(result[0].Id, Is.EqualTo(111));
            Assert.That(result[1].Id, Is.EqualTo(222));
        }
        public void Given_a_review_task_has_a_completion_due_date_before_the_next_further_control_measure_tasks_then_CompletionDueDate_is_the_next_review_date()
        {
            //given
            var nextFCMCompletionDueDate = new DateTime(2013, 4, 1);
            var nextReviewDate = new DateTime(2013, 3, 4);
            var riskAss = new HazardousSubstanceRiskAssessment();
            riskAss.AddFurtherControlMeasureTask(new HazardousSubstanceRiskAssessmentFurtherControlMeasureTask() { Id = 12312, Deleted = false, TaskCompletionDueDate = DateTime.Now }, null);
            riskAss.AddFurtherControlMeasureTask(new HazardousSubstanceRiskAssessmentFurtherControlMeasureTask() { Id = 1231234, Deleted = false, TaskCompletionDueDate = nextFCMCompletionDueDate }, null);
            riskAss.AddReview(new RiskAssessmentReview() {Id = 2, CompletionDueDate = nextReviewDate});


            //THEN
            Assert.AreEqual(nextReviewDate, riskAss.CompletionDueDate.Value);
        }
        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 HazardousSubstanceRiskAssessment() { RiskAssessor = riskAssessor };
            var riskAssessementReview = new RiskAssessmentReview() { RiskAssessment = riskAssessement, };
            riskAssessementReview.RiskAssessmentReviewTask = new RiskAssessmentReviewTask()
            {
                RiskAssessmentReview = riskAssessementReview,
                TaskCompletionDueDate = DateTime.Now.AddDays(-5)
            };

            riskAssessement.Reviews.Add(riskAssessementReview);
            _riskAssessments.Add(riskAssessement);

            var target =
                new GetOverdueRiskAssessmentReviewTasks(
                    _queryableWrapper.Object);

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

            //THEN
            Assert.That(result.Count, Is.EqualTo(1));
        }
 private IList<Tuple<long, string>> GetNonEmployees(HazardousSubstanceRiskAssessment riskAssessment)
 {
     if(riskAssessment.NonEmployees != null)
         return riskAssessment.NonEmployees.Select(nonEmployee => new Tuple<long, string>(nonEmployee.Id, nonEmployee.NonEmployee.GetFormattedName())).ToList();
     
     return new List<Tuple<long, string>>();
 }
        private IList<Tuple<Guid, string>> GetEmployees(HazardousSubstanceRiskAssessment riskAssessment)
        {
            if (riskAssessment.Employees != null)
                return riskAssessment.Employees.Select(employee => new Tuple<Guid, string>(employee.Employee.Id, employee.Employee.FullName)).ToList();

            return new List<Tuple<Guid, string>>();
        }
        public void Given_valid_request_selected_hazardous_substance_id_is_passed_to_repo()
        {
            //Given
            var riskAssessmentService = GetTarget();
            var request = new SaveHazardousSubstanceRiskAssessmentRequestBuilder().WithTitle("Test").WithHazardousSubstanceId(1234).Build();
            var passedHazardousSubstanceRiskAssessment = new HazardousSubstanceRiskAssessment();

            _riskAssessmentRepository
                .Setup(x => x.DoesAssessmentExistWithTheSameReference<HazardousSubstanceRiskAssessment>(request.CompanyId, request.Reference, It.IsAny<long?>())).
                Returns(false);

            _hazardousSubstanceAssessmentRepository
                .Setup(rr => rr.SaveOrUpdate(It.IsAny<HazardousSubstanceRiskAssessment>()))
                .Callback<HazardousSubstanceRiskAssessment>(y => passedHazardousSubstanceRiskAssessment = y);

            _hazardousSubstanceRepository
                .Setup(x => x.GetByIdAndCompanyId(It.IsAny<long>(), It.IsAny<long>()))
                .Returns(new HazardousSubstance() { Id = 1234 });

            //When
            riskAssessmentService.CreateRiskAssessment(request);

            //Then
            Assert.That(passedHazardousSubstanceRiskAssessment.HazardousSubstance.Id, Is.EqualTo(request.HazardousSubstanceId));
        }
        public void Given_employee_is_assignee_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 riskAssessement = new HazardousSubstanceRiskAssessment() { };
            var riskAssessementReview = new RiskAssessmentReview() { RiskAssessment = riskAssessement, };
            riskAssessementReview.RiskAssessmentReviewTask = new RiskAssessmentReviewTask()
            {
                TaskAssignedTo = employee,
                RiskAssessmentReview = riskAssessementReview,
                TaskCompletedDate = null,
                TaskCompletionDueDate = new DateTime(DateTime.Now.Year, DateTime.Now.AddMonths(-1).Month, 27), //27th of last month,
                Id = 1
            };

            riskAssessement.Reviews.Add(riskAssessementReview);
            _riskAssessments.Add(riskAssessement);


            var riskAssessement1 = new HazardousSubstanceRiskAssessment() { };
            var riskAssessementReview1 = new RiskAssessmentReview() { RiskAssessment = riskAssessement1, };
            riskAssessementReview1.RiskAssessmentReviewTask = new RiskAssessmentReviewTask()
            {
                TaskAssignedTo = employee,
                RiskAssessmentReview = riskAssessementReview1,
                TaskCompletedDate = null,
                TaskCompletionDueDate = new DateTime(DateTime.Now.Year, DateTime.Now.AddMonths(-1).Month, 28), //28th of last month,
                Id = 2
            };

            riskAssessement.Reviews.Add(riskAssessementReview1);
            _riskAssessments.Add(riskAssessement1);

            var riskAssessement2 = new HazardousSubstanceRiskAssessment() { };
            var riskAssessementReview2 = new RiskAssessmentReview() { RiskAssessment = riskAssessement2, };
            riskAssessementReview2.RiskAssessmentReviewTask = new RiskAssessmentReviewTask()
            {
                TaskAssignedTo = employee,
                RiskAssessmentReview = riskAssessementReview2,
                TaskCompletedDate = null,
                TaskCompletionDueDate = new DateTime(DateTime.Now.Year, DateTime.Now.AddMonths(-1).Month, 23), //23th of last month,
                Id = 3
            };

            riskAssessement.Reviews.Add(riskAssessementReview2);
            _riskAssessments.Add(riskAssessement2);

            var target =
                new GetOverdueRiskAssessmentReviewTasks(
                    _queryableWrapper.Object);

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

            //THEN
            Assert.That(result.Count, Is.EqualTo(2));
            Assert.That(result[0].RiskAssessmentReview.RiskAssessmentReviewTask.Id, Is.EqualTo(1));
            Assert.That(result[1].RiskAssessmentReview.RiskAssessmentReviewTask.Id, Is.EqualTo(2));

        }