public override string ToString() { AddReasonEntryRange(Assent?.GetReasonEntries()); AddReasonEntryRange(Consideration?.GetReasonEntries()); AddReasonEntryRange(Offer?.GetReasonEntries()); return(base.ToString()); }
public override bool IsValid(params ILegalPerson[] persons) { var offeror = persons.Offeror(); var offeree = persons.Offeree(); if (!IsEnforceableInCourt) { AddReasonEntry("The contract is not enforceable in court and is therefore void."); return(false); } if (Consideration == null) { AddReasonEntry($"{nameof(Consideration)} is null"); return(false); } if (!Consideration.IsValid(offeror, offeree)) { AddReasonEntry($"{nameof(Consideration)}.{nameof(IsValid)} returned false"); AddReasonEntryRange(Consideration.GetReasonEntries()); return(false); } if (Offer == null) { AddReasonEntry($"{nameof(Offer)} is null"); return(false); } if (!Offer.IsValid(offeror, offeree)) { AddReasonEntry("the offer in invalid"); AddReasonEntryRange(Offer.GetReasonEntries()); return(false); } //short-circuit since this allows for no return promise var promissoryEstoppel = Consideration as PromissoryEstoppel <T>; if (promissoryEstoppel != null) { return(true); } if (!Offer.IsEnforceableInCourt) { AddReasonEntry("the offer is not enforceable in court"); AddReasonEntryRange(Offer.GetReasonEntries()); return(false); } if (Acceptance == null) { AddReasonEntry($"{nameof(Acceptance)} is null"); return(false); } var returnPromise = Acceptance(Offer); if (returnPromise == null) { AddReasonEntry($"{nameof(returnPromise)} is null"); return(false); } if (!returnPromise.IsEnforceableInCourt) { AddReasonEntry("the return promise is not enforceable in court"); AddReasonEntryRange(returnPromise.GetReasonEntries()); return(false); } if (!returnPromise.IsValid(offeror, offeree)) { AddReasonEntry("the return promise is invalid"); AddReasonEntryRange(returnPromise.GetReasonEntries()); return(false); } if (Assent != null && !Assent.IsValid(offeror, offeree)) { AddReasonEntry($"{nameof(Assent)}.{nameof(IsValid)} returned false"); AddReasonEntryRange(Assent.GetReasonEntries()); return(false); } return(true); }