public Property Then_Receiver_Gets_Populated_When_Present( NonEmptyString role, NonEmptyString partyId) { return(Prop.ForAll( ArbParty(role, partyId), p => { var actual = SendingPModeMap.ResolveReceiver(p); bool isDefault = actual.Equals(CoreParty.DefaultTo); bool isResolved = actual.Role == role.Get && actual.PrimaryPartyId == partyId.Get; return (isDefault == (p == null)).And(isResolved == (p != null)); })); }
private static Party ResolveReceiverParty(SubmitMessage submit, SendingProcessingMode sendingPMode) { var pmodeParty = sendingPMode?.MessagePackaging?.PartyInfo?.ToParty; var submitParty = submit?.PartyInfo?.ToParty; if (sendingPMode?.AllowOverride == false && submitParty != null && pmodeParty != null && !submitParty.Equals(pmodeParty)) { throw new NotSupportedException( $"SubmitMessage is not allowed by the SendingPMode {sendingPMode.Id} to override Receiver Party"); } if (submitParty != null) { var ids = submitParty.PartyIds ?? Enumerable.Empty <Model.Common.PartyId>(); return(new Party(submitParty.Role, ids.Select(x => new PartyId(x.Id, x.Type)).ToArray())); } return(SendingPModeMap.ResolveReceiver(pmodeParty)); }