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(); if (Inception == DateTime.MinValue) { AddReasonEntry($"{orTitle} {lessor.Name} and {eeTitle} {lessee.Name}, {nameof(Inception)} is unassigned"); return(false); } if (Terminus != null && Terminus.Value <= Inception) { AddReasonEntry($"{orTitle} {lessor.Name} and {eeTitle} {lessee.Name}, {nameof(Terminus)} " + $"date of {Terminus.Value.ToShortDateString()} is less-than-equal-to " + $"the {nameof(Inception)} date of {Inception.ToShortDateString()}"); return(false); } if (Assent != null && !Assent.IsValid(persons)) { AddReasonEntryRange(Assent.GetReasonEntries()); return(false); } if (SubjectProperty == null || Offer == null) { AddReasonEntry($"{orTitle} {lessor.Name} and {eeTitle} {lessee.Name}, " + $"{nameof(SubjectProperty)} '{SubjectProperty?.Name}' " + $"or {nameof(Offer)} '{Offer?.Name}' is unassigned"); return(false); } if (Acceptance?.Invoke(Offer) == null) { AddReasonEntry($"{orTitle} {lessor.Name} and {eeTitle} {lessee.Name}, {nameof(Acceptance)} " + $"using {nameof(Offer)} '{Offer.Name}' returned nothing"); return(false); } return(true); }