public static PeopleAtRiskDto Map(PeopleAtRisk peopleAtRisk)
 {
     return new PeopleAtRiskDto()
                {
                    Id = peopleAtRisk.Id,
                    Name = peopleAtRisk.Name,
                    IsSystemDefault = peopleAtRisk.CompanyId == 0,
                };
 }
        public void Given_person_at_risk_already_exists_Then_should_get_correct_exception()
        {
            //Given
            var target = GeneralRiskAssessment.Create("", "", default(long), null);
            var peopleAtRisk = new PeopleAtRisk();
            var user = new UserForAuditing();

            target.AttachPersonAtRiskToRiskAssessment(peopleAtRisk, user);

            //When
            //Then
            Assert.Throws<PersonAtRiskAlreadyAttachedToRiskAssessmentException>(() => target.AttachPersonAtRiskToRiskAssessment(peopleAtRisk, user));
        }
        public void Given_person_at_risk_Then_should_add_correctly()
        {
            //Given
            var target = GeneralRiskAssessment.Create("", "", default(long), null);
            var peopleAtRisk = new PeopleAtRisk();
            var user = new UserForAuditing();

            //When
            target.AttachPersonAtRiskToRiskAssessment(peopleAtRisk, user);

            //Then
            Assert.That(target.PeopleAtRisk.Count, Is.EqualTo(1));
            Assert.That(target.LastModifiedBy, Is.EqualTo(user));
        }
        public void Given_person_is_removed_from_risk_assessment_when_AttachPeopleAtRiskToRiskAssessment_Then_last_modified_by_is_set()
        {
            //Given
            var personAtRiskToRemove = new PeopleAtRisk() { Id = 1, LastModifiedBy = null, LastModifiedOn = null };
            var target = GeneralRiskAssessment.Create("", "", default(long), null);
            target.PeopleAtRisk = new List<RiskAssessmentPeopleAtRisk>()
                                   {
                                       new RiskAssessmentPeopleAtRisk { PeopleAtRisk = personAtRiskToRemove }
                                   };

            var peopleAtRisk = new List<PeopleAtRisk>();
            var user = new UserForAuditing();

            //When
            target.AttachPeopleAtRiskToRiskAssessment(peopleAtRisk, user);

            //Then
            Assert.IsNotNull(personAtRiskToRemove.LastModifiedBy);
            Assert.IsNotNull(personAtRiskToRemove.LastModifiedOn);
            Assert.AreEqual(0, target.PeopleAtRisk.Count);
        }
        private void DetachPersonAtRiskFromRiskAssessment(PeopleAtRisk peopleAtRisk, UserForAuditing user)
        {
            if (PeopleAtRisk.Count(x => x.PeopleAtRisk == peopleAtRisk) == 0)
            {
                throw new PersonAtRiskNotAttachedToRiskAssessmentException(Id, peopleAtRisk.Id);
            }

            var riskAssessmentPeopleAtRisk = PeopleAtRisk.Single(x => x.PeopleAtRisk == peopleAtRisk);
            riskAssessmentPeopleAtRisk.Deleted = true;
            riskAssessmentPeopleAtRisk.LastModifiedBy = user;
            riskAssessmentPeopleAtRisk.LastModifiedOn = DateTime.Now;
            SetLastModifiedDetails(user);
        }
        public virtual void AttachPersonAtRiskToRiskAssessment(PeopleAtRisk peopleAtRisk, UserForAuditing user)
        {
            if (PeopleAtRisk.Count(x=> x.PeopleAtRisk.Id == peopleAtRisk.Id) > 0)
            {
                throw new PersonAtRiskAlreadyAttachedToRiskAssessmentException(Id, peopleAtRisk.Id);
            }

            PeopleAtRisk.Add(new RiskAssessmentPeopleAtRisk
                                 {
                                     PeopleAtRisk = peopleAtRisk,
                                     RiskAssessment = this,
                                     CreatedBy = user,
                                     CreatedOn = DateTime.Now,
                                     Deleted = false
                                 });

            SetLastModifiedDetails(user);
        }
 private bool PersonAtRiskNotAttachedToRiskAssessment(PeopleAtRisk peopleAtRisk)
 {
     return PeopleAtRisk.Count(x => x.Id == peopleAtRisk.Id) == 0;
 }
        private void DetachPersonAtRiskFromRiskAssessment(PeopleAtRisk peopleAtRisk, UserForAuditing user)
        {
            if (PeopleAtRisk.Select(y => y.PeopleAtRisk).Count(x => x == peopleAtRisk) == 0)
            {
                throw new PersonAtRiskNotAttachedToRiskAssessmentException(Id, peopleAtRisk.Id);
            }

            //peopleAtRisk.SetLastModifiedDetails(user);
            //PeopleAtRisk.Remove(peopleAtRisk);
            var riskAssessmentPeopleAtRisk = PeopleAtRisk.Single(x => x.PeopleAtRisk == peopleAtRisk);
            riskAssessmentPeopleAtRisk.Deleted = true;
            riskAssessmentPeopleAtRisk.SetLastModifiedDetails(user);
            SetLastModifiedDetails(user);
        }