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));
            }));
        }
Пример #2
0
        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));
        }