Exemplo n.º 1
0
        public override bool IsValid(params ILegalPerson[] persons)
        {
            var defendant = this.Defendant(persons);

            if (defendant == null)
            {
                return(false);
            }
            var title = defendant.GetLegalPersonTypeName();

            //threats for what is honestly owed is not illegal
            if (SubjectProperty?.IsEntitledTo(defendant) ?? false)
            {
                AddReasonEntry($"{title} {defendant.Name}, is entitled to " +
                               $"{SubjectProperty?.GetType().Name} " +
                               $"named '{SubjectProperty?.Name}'");
                return(false);
            }

            if (!base.IsValid(persons))
            {
                return(false);
            }

            var threatening = Threatening ?? new ByThreatening();

            if (!threatening.IsValid(persons))
            {
                AddReasonEntryRange(threatening.GetReasonEntries());
                return(false);
            }

            return(true);
        }
Exemplo n.º 2
0
        public override bool IsValid(params ILegalPerson[] persons)
        {
            var defendant = this.Defendant(persons);

            if (defendant == null)
            {
                return(false);
            }
            var title = defendant.GetLegalPersonTypeName();

            if (SubjectProperty == null)
            {
                AddReasonEntry($"{title} {defendant.Name}, {nameof(SubjectProperty)} is null");
                return(false);
            }

            if (SubjectProperty.IsEntitledTo(defendant))
            {
                AddReasonEntry($"{title} {defendant.Name}, is the owner of property {SubjectProperty}");
                return(false);
            }

            if (!WithoutConsent(persons))
            {
                return(false);
            }

            if (!PossessOrEntitle(persons))
            {
                return(false);
            }

            return(true);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Tests that <see cref="Consent"/> was not given by <see cref="SubjectProperty"/> owner
        /// </summary>
        /// <param name="persons"></param>
        /// <returns></returns>
        protected virtual bool WithoutConsent(ILegalPerson[] persons)
        {
            //is all the dependencies present
            if (SubjectProperty?.IsEntitledTo == null || Consent == null ||
                persons == null ||
                !persons.Any())
            {
                return(true);
            }

            //if all the people are licensed or invited then consent is implied by the use of type (label)
            if (persons.Where(v => !SubjectProperty.IsEntitledTo(v)).All(p => p is ILicensee))
            {
                AddReasonEntry($"all non-owner persons implement {nameof(ILicensee)} interface type");
                return(false);
            }

            //did the caller pass in any IVictim types
            var victims = persons.Victims().ToList();

            if (!victims.Any())
            {
                return(true);
            }

            //is any of our victims also the owner of the property
            var ownerVictims = victims.Where(v => SubjectProperty.IsEntitledTo(v)).ToList();

            if (!ownerVictims.Any())
            {
                AddReasonEntry($"of {nameof(IVictim)}s named " +
                               $"{string.Join(",", victims.Select(v => v.Name))}, " +
                               $"none are found {nameof(SubjectProperty.IsEntitledTo)} as true");
                return(true);
            }

            foreach (var ownerVictim in ownerVictims)
            {
                var validConsent = Consent.IsValid(ownerVictim);
                AddReasonEntryRange(Consent.GetReasonEntries());
                //did the owner victim in fact give consent
                if (validConsent != ConsentExpectedAs)
                {
                    AddReasonEntry($"owner-{ownerVictim.GetLegalPersonTypeName()} {ownerVictim.Name}, " +
                                   $"{nameof(Consent)} {nameof(IsValid)} " +
                                   $"is {validConsent}, it was expected to be {ConsentExpectedAs} " +
                                   $"for property {SubjectProperty.Name}");
                    return(false);
                }
            }

            return(true);
        }
Exemplo n.º 4
0
        public override bool IsValid(params ILegalPerson[] persons)
        {
            if (!base.IsValid(persons))
            {
                return(false);
            }

            var defendant = this.Defendant(persons);

            if (defendant == null)
            {
                return(false);
            }
            var title = defendant.GetLegalPersonTypeName();
            var ifi   = IsFalseImpression(defendant);
            var ipot  = IsPreventionOfTruth(defendant);
            var iftc  = IsFailureToCorrect(defendant);
            var iuli  = IsUndisclosedLegalImpediment(defendant);

            if (new[] { ifi, ipot, iftc, iuli }.All(p => p == false))
            {
                AddReasonEntry($"{title} {defendant.Name}, {nameof(IsFalseImpression)} is {ifi}");
                AddReasonEntry($"{title} {defendant.Name}, {nameof(IsPreventionOfTruth)} is {ipot}");
                AddReasonEntry($"{title} {defendant.Name}, {nameof(IsFailureToCorrect)} is {iftc}");
                AddReasonEntry($"{title} {defendant.Name}, {nameof(IsUndisclosedLegalImpediment)} is {iuli}");
                return(false);
            }

            var isPossess = SubjectProperty.IsInPossessionOf(defendant);
            var isTitle   = SubjectProperty.IsEntitledTo(defendant);

            IsLarcenyByTrick = isPossess && !isTitle;
            IsFalsePretense  = isPossess && isTitle;

            if (IsLarcenyByTrick)
            {
                AddReasonEntry($"{title} {defendant.Name}, {nameof(IsLarcenyByTrick)} is true");
            }
            if (IsFalsePretense)
            {
                AddReasonEntry($"{title} {defendant.Name}, {nameof(IsFalsePretense)} is true");
            }
            return(true);
        }
Exemplo n.º 5
0
        public override bool IsValid(params ILegalPerson[] persons)
        {
            var lessor = this.Lessor(persons);
            var lessee = this.Lessee(persons);

            if (lessor == null || lessee == null)
            {
                return(false);
            }

            var orTitle = lessor.GetLegalPersonTypeName();
            var eeTitle = lessee.GetLegalPersonTypeName();

            //landlord has no right to evict
            if (!IsLeaseExpired && !IsBreachLeaseCondition(lessee) && !IsVacated(lessee))
            {
                AddReasonEntry($"{orTitle} {lessor.Name} and {eeTitle} {lessee.Name}, {nameof(IsLeaseExpired)}, " +
                               $"{nameof(IsBreachLeaseCondition)} and {nameof(IsVacated)} are all false");
                return(false);
            }

            //lessor isn't the landlord
            if (!SubjectProperty.IsEntitledTo(lessor))
            {
                AddReasonEntry($"{orTitle} {lessor.Name}, {nameof(SubjectProperty)} {nameof(SubjectProperty.IsEntitledTo)} is false");
                return(false);
            }

            var isHome = IsResidenceHome(SubjectProperty);

            var isPeaceful = !isHome?IsPeaceableSelfHelpReentry(lessor) : IsJudicialProcessReentry(lessor);

            if (!isPeaceful)
            {
                var kindOfReentry = !isHome?nameof(IsPeaceableSelfHelpReentry) : nameof(IsJudicialProcessReentry);

                AddReasonEntry($"{orTitle} {lessor.Name}, {kindOfReentry} is false");
                return(false);
            }


            return(base.IsValid(persons));
        }
Exemplo n.º 6
0
        public override bool IsValid(params ILegalPerson[] persons)
        {
            if (SubjectProperty?.IsEntitledTo == null)
            {
                AddReasonEntry($"{nameof(SubjectProperty)} {nameof(SubjectProperty.IsEntitledTo)} is unassigned");
                return(false);
            }

            var subj = GetSubjectPerson(persons);

            if (subj == null)
            {
                AddReasonEntry($"{nameof(GetSubjectPerson)} returned nothing");
                return(false);
            }
            var title = subj.GetLegalPersonTypeName();

            if (SubjectProperty.IsEntitledTo != null && !SubjectProperty.IsEntitledTo(subj))
            {
                AddReasonEntry($"property named '{SubjectProperty.Name}' is " +
                               $"not {nameof(SubjectProperty.IsEntitledTo)} {title} {subj.Name} ");
                return(false);
            }

            if (!IsLocatedWhereChildrenLikelyAre(SubjectProperty))
            {
                AddReasonEntry($"property '{SubjectProperty.Name}', {nameof(IsLocatedWhereChildrenLikelyAre)} is false");
                return(false);
            }

            if (!IsDangerToChildren(SubjectProperty))
            {
                AddReasonEntry($"property '{SubjectProperty.Name}', {nameof(IsDangerToChildren)} is false");
                return(false);
            }

            if (!IsDangerOutweighUse(SubjectProperty))
            {
                AddReasonEntry($"property '{SubjectProperty.Name}', {nameof(IsDangerOutweighUse)} is false");
                return(false);
            }

            if (!IsArtificialCondition(SubjectProperty))
            {
                AddReasonEntry($"property '{SubjectProperty.Name}', {nameof(IsArtificialCondition)} is false");
                return(false);
            }

            if (IsChildObliviousToDanger != null)
            {
                var children = persons.Where(p => p is IChild).Cast <IChild>().ToList();
                foreach (var child in children)
                {
                    if (!IsChildObliviousToDanger(child))
                    {
                        AddReasonEntry($"{child.GetLegalPersonTypeName()} {child.Name}, {nameof(IsChildObliviousToDanger)} is false");
                        return(false);
                    }
                }
            }

            if (!IsOwnerFailMitigateDanger(subj))
            {
                AddReasonEntry($"{title} {subj.Name}, {nameof(IsOwnerFailMitigateDanger)} is false");
                return(false);
            }

            return(true);
        }