Beispiel #1
0
        public bool CompareTo(IMensRea criminalIntent, params ILegalPerson[] persons)
        {
            var defendant = persons.Defendant();
            var consent   = Consent as VictimConsent ?? new VictimConsent();

            foreach (var victim in persons.Victims())
            {
                var isCapable     = consent.IsCapableThereof(victim);
                var isIntercourse = IsSexualIntercourse(defendant);

                //the intent is irrelevant - sex with victim is illegal outright
                var isSexWithIllegal = defendant != null &&
                                       criminalIntent is StrictLiability &&
                                       !isCapable &&
                                       isIntercourse;

                if (isSexWithIllegal)
                {
                    AddReasonEntry($"{nameof(IsSexualIntercourse)} is true with victim, {victim.Name}, " +
                                   $"who is {nameof(consent.IsCapableThereof)} is false " +
                                   $"for {nameof(Consent)} while intent is {nameof(StrictLiability)}");
                    AddReasonEntry($"sex between {victim.Name} and defendant, {defendant.Name} is illegal outright.");
                }
            }
            return(true);
        }
Beispiel #2
0
        public override bool CompareTo(IMensRea criminalIntent, params ILegalPerson[] persons)
        {
            if (criminalIntent is StrictLiability)
            {
                AddReasonEntry($"{nameof(HomicideInOther)} is not applicable to {nameof(StrictLiability)} intent");
                return(false);
            }

            return(true);
        }
Beispiel #3
0
        public bool CompareTo(IMensRea criminalIntent, params ILegalPerson[] persons)
        {
            var isRequiredForConspriacy = criminalIntent is Purposely || criminalIntent is SpecificIntent;

            if (!isRequiredForConspriacy)
            {
                AddReasonEntry($"criminal intent element required for {nameof(Solicitation)} is specific intent or purposely");
                return(false);
            }

            return(true);
        }
Beispiel #4
0
        public bool CompareTo(IMensRea criminalIntent, params ILegalPerson[] persons)
        {
            var isValidIntent = criminalIntent is Purposely || criminalIntent is SpecificIntent;

            if (!isValidIntent)
            {
                AddReasonEntry($"{nameof(DrugSale)} requires intent of {nameof(Purposely)} or {nameof(SpecificIntent)}");
                return(false);
            }

            return(true);
        }
Beispiel #5
0
        public override bool CompareTo(IMensRea criminalIntent, params ILegalPerson[] persons)
        {
            var isValid = criminalIntent is Knowingly || criminalIntent is GeneralIntent;

            if (!isValid)
            {
                AddReasonEntry($"{nameof(DrugPossession)} requires intent {nameof(Knowingly)} or {nameof(GeneralIntent)}");
                return(false);
            }

            return(true);
        }
Beispiel #6
0
        public override bool CompareTo(IMensRea criminalIntent, params ILegalPerson[] persons)
        {
            var validIntend = criminalIntent is Purposely || criminalIntent is SpecificIntent;

            if (!validIntend)
            {
                AddReasonEntry($"{nameof(ByTaking)} requires intent " +
                               $"of {nameof(Purposely)}, {nameof(SpecificIntent)}");
                return(false);
            }

            return(true);
        }
Beispiel #7
0
        /// <summary>
        /// Attempt is not applicable to reckless or negligent intent
        /// </summary>
        public bool CompareTo(IMensRea criminalIntent, params ILegalPerson[] persons)
        {
            var intent            = (criminalIntent as DeadlyWeapon)?.UtilizedWith ?? criminalIntent;
            var isInvalid2Attempt = intent is Recklessly || intent is Negligently;

            if (isInvalid2Attempt)
            {
                AddReasonEntry("generally, no such thing exists as reckless or negligent attempt");
                return(false);
            }

            return(true);
        }
Beispiel #8
0
        public override bool CompareTo(IMensRea criminalIntent, params ILegalPerson[] persons)
        {
            var validIntent = criminalIntent is Knowingly || criminalIntent is GeneralIntent;

            if (!validIntent)
            {
                AddReasonEntry($"{nameof(FailureToDisperse)} requires intent " +
                               $"of {nameof(Knowingly)}, {nameof(GeneralIntent)}");
                return(false);
            }

            return(true);
        }
Beispiel #9
0
        public virtual bool CompareTo(IMensRea criminalIntent, params ILegalPerson[] persons)
        {
            var validIntend = criminalIntent is Knowingly || criminalIntent is GeneralIntent;

            if (!validIntend)
            {
                AddReasonEntry($"{nameof(CriminalTrespass)} requires intent " +
                               $"{nameof(Knowingly)}, {nameof(GeneralIntent)}");
                return(false);
            }

            return(true);
        }
Beispiel #10
0
        public bool CompareTo(IMensRea criminalIntent, params ILegalPerson[] persons)
        {
            var isValid = criminalIntent is StrictLiability || criminalIntent is Purposely ||
                          criminalIntent is Knowingly || criminalIntent is GeneralIntent;

            if (!isValid)
            {
                AddReasonEntry($"{nameof(Prostitution)} requires intent of " +
                               $"{nameof(StrictLiability)}, {nameof(Purposely)}, " +
                               $"{nameof(Knowingly)} or {nameof(GeneralIntent)}");
                return(false);
            }
            return(true);
        }
Beispiel #11
0
        public bool CompareTo(IMensRea criminalIntent, params ILegalPerson[] persons)
        {
            var isvalid = criminalIntent is Purposely || criminalIntent is SpecificIntent;

            if (!isvalid)
            {
                AddReasonEntry($"{nameof(Loitering)} requires intent " +
                               $"of {nameof(Recklessly)}, {nameof(Purposely)}, " +
                               $"{nameof(SpecificIntent)}");
                return(false);
            }

            return(true);
        }
Beispiel #12
0
        public bool CompareTo(IMensRea criminalIntent, params ILegalPerson[] persons)
        {
            var intent        = (criminalIntent as DeadlyWeapon)?.UtilizedWith ?? criminalIntent;
            var isValidIntent = intent is Purposely || intent is SpecificIntent;

            if (!isValidIntent)
            {
                AddReasonEntry($"{nameof(ThreatenedBattery)} requires intent " +
                               $"of {nameof(Purposely)} or {nameof(SpecificIntent)}");
                return(false);
            }

            return(true);
        }
Beispiel #13
0
        public bool CompareTo(IMensRea criminalIntent, params ILegalPerson[] persons)
        {
            var isValid = criminalIntent is Purposely || criminalIntent is SpecificIntent ||
                          criminalIntent is Knowingly || criminalIntent is GeneralIntent;

            if (!isValid)
            {
                AddReasonEntry($"{nameof(Bribery)} requires intent of {nameof(Purposely)}, " +
                               $"{nameof(SpecificIntent)}, {nameof(Knowingly)}, {nameof(GeneralIntent)}");
                return(false);
            }

            return(true);
        }
Beispiel #14
0
        public virtual bool CompareTo(IMensRea criminalIntent, params ILegalPerson[] persons)
        {
            var adequateProvocation = criminalIntent as AdequateProvocation;
            var defendant           = this.Defendant(persons);
            var title = defendant.GetLegalPersonTypeName();

            if (adequateProvocation != null && defendant != null && adequateProvocation.IsValid(defendant))
            {
                AddReasonEntry($"{title} {defendant.Name}, is criminal intent {nameof(AdequateProvocation)} " +
                               "which is only applicable to manslaughter");
                return(false);
            }

            return(true);
        }
        public override bool CompareTo(IMensRea criminalIntent, params ILegalPerson[] persons)
        {
            var adequateProvation = criminalIntent as AdequateProvocation;
            var defendant         = this.Defendant(persons);

            if (adequateProvation != null && defendant != null && adequateProvation.IsValid(defendant))
            {
                return(true);
            }
            AddReasonEntry($"{nameof(ManslaughterVoluntary)} is a redux of {nameof(Murder)} " +
                           $"by means of {nameof(AdequateProvocation)} intent, " +
                           $"which {criminalIntent?.GetType().Name} is not");

            return(false);
        }
Beispiel #16
0
        public virtual bool CompareTo(IMensRea criminalIntent, params ILegalPerson[] persons)
        {
            var validIntent = criminalIntent is Recklessly || criminalIntent is Purposely ||
                              criminalIntent is SpecificIntent;

            if (!validIntent)
            {
                AddReasonEntry($"{nameof(DisorderlyConduct)} requires intent " +
                               $"of {nameof(Recklessly)}, {nameof(Purposely)}, " +
                               $"{nameof(SpecificIntent)}");
                return(false);
            }

            return(true);
        }
Beispiel #17
0
        public override bool CompareTo(IMensRea criminalIntent, params ILegalPerson[] persons)
        {
            var isRequiredIntent = criminalIntent is Negligently ||
                                   criminalIntent is Recklessly ||
                                   criminalIntent is GeneralIntent;

            if (!isRequiredIntent)
            {
                AddReasonEntry($"{nameof(ManslaughterInvoluntary)} is expected {nameof(Recklessly)} " +
                               $"or {nameof(Negligently)} intent, not {criminalIntent?.GetType().Name}");
                return(false);
            }

            return(true);
        }
Beispiel #18
0
        public bool CompareTo(IMensRea criminalIntent, params ILegalPerson[] persons)
        {
            var validIntent = _information is MilitaryActivities
                ? new[] { typeof(Purposely), typeof(SpecificIntent) }
                : new[] { typeof(Purposely), typeof(SpecificIntent), typeof(Knowingly), typeof(GeneralIntent) };

            if (validIntent.All(i => criminalIntent.GetType() != i))
            {
                var nms = string.Join(", ", validIntent.Select(t => t.Name));
                AddReasonEntry($"{nameof(Espionage)} for {_information.GetCategory()} requires intent {nms}");
                return(false);
            }

            return(true);
        }
Beispiel #19
0
        public bool CompareTo(IMensRea criminalIntent, params ILegalPerson[] persons)
        {
            var validIntent = new[]
            {
                typeof(SpecificIntent), typeof(Purposely), typeof(GeneralIntent), typeof(Knowingly), typeof(Negligently)
            };

            if (validIntent.All(t => t != criminalIntent.GetType()))
            {
                var nms = string.Join(", ", validIntent.Select(t => t.Name));
                AddReasonEntry($"{nameof(Sabotage)} requires intent of {nms}");
                return(false);
            }

            return(true);
        }
Beispiel #20
0
        public override bool CompareTo(IMensRea criminalIntent, params ILegalPerson[] persons)
        {
            var intent = (criminalIntent as DeadlyWeapon)?.UtilizedWith ?? criminalIntent;

            var isRequiredIntent = intent is MaliceAforethought ||
                                   intent is SpecificIntent;

            if (!isRequiredIntent)
            {
                AddReasonEntry("first-degree means rationally, purposefully, taking " +
                               "steps that culminate in victim's death");
                return(false);
            }


            return(base.CompareTo(criminalIntent, persons));
        }
Beispiel #21
0
        public bool CompareTo(IMensRea criminalIntent, params ILegalPerson[] persons)
        {
            var validIntend = criminalIntent is Knowingly || criminalIntent is GeneralIntent;

            if (!validIntend)
            {
                AddReasonEntry($"{nameof(CriminalTrespass)} requires intent " +
                               $"{ nameof(Knowingly)}, { nameof(GeneralIntent)}");
                return(false);
            }

            if (PropertyOwnerIsSubjectPerson(persons) && IsBurned(SubjectProperty))
            {
                return(false);
            }

            return(true);
        }
Beispiel #22
0
        public bool CompareTo(IMensRea criminalIntent, params ILegalPerson[] persons)
        {
            var defendant = persons.Defendant();

            if (defendant == null)
            {
                return(false);
            }

            var isByViolence = IsByViolence(defendant);
            var validIntent  = isByViolence
                ? new[] { typeof(Purposely), typeof(SpecificIntent) }
                : new[] { typeof(Knowingly), typeof(GeneralIntent) };

            //Cramer v. U.S., 1945, different intent based on which predicate
            if (validIntent.All(i => criminalIntent.GetType() != i))
            {
                var nms = string.Join(", ", validIntent.Select(t => t.Name));
                AddReasonEntry($"{nameof(Treason)} for {nameof(IsByViolence)} as {isByViolence} requires intent {nms}");
                return(false);
            }

            return(true);
        }
Beispiel #23
0
        public bool CompareTo(IMensRea criminalIntent, params ILegalPerson[] persons)
        {
            var defendant = persons.Defendant();

            if (defendant == null)
            {
                return(false);
            }

            //Yates v. U.S., 354 U.S. 298 (1957), different intent based on which predicate
            var inWrittenForm = IsInWrittenForm(defendant);
            var validIntent   = inWrittenForm
                ? new[] { typeof(Purposely), typeof(SpecificIntent) }
                : new[] { typeof(Knowingly), typeof(GeneralIntent) };

            if (validIntent.All(i => criminalIntent.GetType() != i))
            {
                var nms = string.Join(", ", validIntent.Select(t => t.Name));
                AddReasonEntry($"{nameof(Sedition)} for {nameof(IsInWrittenForm)} as {inWrittenForm} requires intent {nms}");
                return(false);
            }

            return(true);
        }
Beispiel #24
0
 public Accomplice(IMensRea intent) : base(intent)
 {
 }
Beispiel #25
0
 public bool CompareTo(IMensRea criminalIntent, params ILegalPerson[] persons)
 {
     return(criminalIntent != null);
 }
Beispiel #26
0
 public override bool CompareTo(IMensRea criminalIntent, params ILegalPerson[] persons)
 {
     return(true);
 }
Beispiel #27
0
 public bool CompareTo(IMensRea criminalIntent, params ILegalPerson[] persons)
 {
     return(Conspiracy?.CompareTo(criminalIntent) ?? false);
 }
Beispiel #28
0
 public DeadlyWeapon(IMensRea utilizedWith = null)
 {
     WeaponName   = nameof(DeadlyWeapon);
     UtilizedWith = utilizedWith ?? new SpecificIntent();
 }
Beispiel #29
0
 public DeadlyWeapon(string name, IMensRea utilizedWith = null)
 {
     WeaponName   = name;
     UtilizedWith = utilizedWith ?? new SpecificIntent();
 }
Beispiel #30
0
 public Transferred(IMensRea intent)
 {
     _intent = intent;
 }