Exemple #1
0
        protected internal bool TryGetOfferAcceptance(ILegalPerson offeror, ILegalPerson offeree)
        {
            Offer      = Contract.Offer;
            Acceptance = Contract.Acceptance(Contract.Offer);
            if (Offer == null)
            {
                AddReasonEntry($"there is no offer from {offeror.Name}");
                return(false);
            }

            if (Acceptance == null)
            {
                AddReasonEntry($"there is no return promise or performance given by {offeree.Name}");
                return(false);
            }

            return(true);
        }
Exemple #2
0
        public override bool IsValid(params ILegalPerson[] persons)
        {
            var offeror = this.Offeror(persons);
            var offeree = this.Offeree(persons);

            if (offeree == null || offeror == null)
            {
                return(false);
            }

            if (IsSoughtByOfferor == null)
            {
                AddReasonEntry($"{nameof(IsSoughtByOfferor)} is null");
                return(false);
            }

            if (IsGivenByOfferee == null)
            {
                AddReasonEntry($"{nameof(IsGivenByOfferee)} is null");
                return(false);
            }

            var promise       = Contract.Offer;
            var returnPromise = Contract.Acceptance(promise);

            if (returnPromise == null)
            {
                AddReasonEntry($"{nameof(returnPromise)} is null");
                return(false);
            }

            if (!IsSoughtByOfferor(offeror, returnPromise))
            {
                AddReasonEntry($"the return promise is not what {offeror.Name} wants");
                return(false);
            }

            if (!IsGivenByOfferee(offeree, promise))
            {
                AddReasonEntry($"the offer is not what the {offeree.Name} wants");
                return(false);
            }

            var valPredicate = IsValueInEyesOfLaw ?? (o => true);

            if (!valPredicate(promise))
            {
                AddReasonEntry($"The promise given by {offeror.Name} has no value in the eyes-of-the-law.");
                return(false);
            }

            if (!valPredicate(returnPromise))
            {
                AddReasonEntry($"The return promise given by {offeree.Name} has no value in the eyes-of-the-law.");
                return(false);
            }

            var illusionPredicate = IsIllusoryPromise ?? (o => false);

            if (illusionPredicate(promise))
            {
                AddReasonEntry($"The promise given by {offeror.Name} is illusory - it is not a promise at all.");
                return(false);
            }
            if (illusionPredicate(returnPromise))
            {
                AddReasonEntry($"The return promise given by {offeree.Name} is illusory - it is not a promise at all.");
                return(false);
            }

            var existingDutyPredicate = IsExistingDuty ?? (o => false);

            if (existingDutyPredicate(promise))
            {
                AddReasonEntry($"The promise given by {offeror.Name} is an existing duty and cannot be bargained with nor for.");
                return(false);
            }
            if (existingDutyPredicate(returnPromise))
            {
                AddReasonEntry($"The return promise given by {offeree.Name} is an existing duty and cannot be bargained with nor for.");
                return(false);
            }


            return(true);
        }