Exemple #1
0
        public override bool IsValid(params ILegalPerson[] persons)
        {
            var legalPerson = GetSubjectPerson(persons);

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

            if (Imminence != null && !Imminence.IsValid(persons))
            {
                AddReasonEntry($"{lpTypeName}, {legalPerson.Name}, {nameof(Imminence)} is false");
                AddReasonEntryRange(Imminence.GetReasonEntries());
                return(false);
            }
            if (Provocation != null && !Provocation.IsValid(persons))
            {
                AddReasonEntry($"{lpTypeName}, {legalPerson.Name}, {nameof(Provocation)} is false");
                AddReasonEntryRange(Provocation.GetReasonEntries());
                return(false);
            }
            if (Proportionality != null && !Proportionality.IsValid(persons))
            {
                AddReasonEntry($"{lpTypeName}, {legalPerson.Name}, {nameof(Proportionality)} is false");
                AddReasonEntryRange(Proportionality.GetReasonEntries());
                return(false);
            }
            AddReasonEntryRange(Imminence?.GetReasonEntries());
            AddReasonEntryRange(Provocation?.GetReasonEntries());
            AddReasonEntryRange(Proportionality?.GetReasonEntries());
            return(true);
        }
Exemple #2
0
        public override bool IsValid(params ILegalPerson[] persons)
        {
            var legalPerson = GetSubjectPerson(persons);

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

            if (IsResponsibleForSituationArise != null && IsResponsibleForSituationArise(legalPerson))
            {
                AddReasonEntry($"{lpPersonType}, {legalPerson.Name}, {nameof(IsResponsibleForSituationArise)} is true");
                return(false);
            }

            if (!IsMultipleInHarm(legalPerson))
            {
                AddReasonEntry($"{lpPersonType}, {legalPerson.Name}, {nameof(IsMultipleInHarm)} is false");
                return(false);
            }

            if (Imminence != null && !Imminence.IsValid(legalPerson))
            {
                AddReasonEntry($"{lpPersonType}, {legalPerson.Name}, {nameof(Imminence)} is false");
                AddReasonEntryRange(Imminence.GetReasonEntries());
                return(false);
            }
            if (Proportionality != null && !Proportionality.IsValid(legalPerson))
            {
                AddReasonEntry($"{lpPersonType}, {legalPerson.Name}, {nameof(Proportionality)} is false");
                AddReasonEntryRange(Proportionality.GetReasonEntries());
                return(false);
            }

            AddReasonEntryRange(Imminence?.GetReasonEntries());
            AddReasonEntryRange(Proportionality?.GetReasonEntries());

            return(true);
        }
Exemple #3
0
 public NecessityDefense() : base(ExtensionMethods.Defendant)
 {
     Proportionality = new ChoiceThereof <T>(ExtensionMethods.Defendant);
     Imminence       = new Imminence(ExtensionMethods.Defendant);
 }
Exemple #4
0
 public NecessityDefense(Func <ILegalPerson[], ILegalPerson> getSubjectPerson) : base(getSubjectPerson)
 {
     Proportionality = new ChoiceThereof <T>(getSubjectPerson);
     Imminence       = new Imminence(getSubjectPerson);
 }
 public ThreatenedBattery(Func <ILegalPerson[], ILegalPerson> getSubjectPerson) : base(getSubjectPerson)
 {
     Imminence = new Imminence(getSubjectPerson);
 }
Exemple #6
0
 protected DefenseOfBase(Func <ILegalPerson[], ILegalPerson> getSubjectPerson) : base(getSubjectPerson)
 {
     Provocation     = new Provocation(GetSubjectPerson);
     Imminence       = new Imminence(GetSubjectPerson);
     Proportionality = new Proportionality <ITermCategory>(GetSubjectPerson);
 }