/// <summary>
        ///     Sender en <see cref="Forsendelse" /> til Meldingsformidler.
        /// </summary>
        /// <param name="forsendelse">
        ///     All informasjon, klar til å kunne sendes (mottakerinformasjon, sertifikater,
        ///     vedlegg mm), enten digitalt eller fysisk.
        /// </param>
        public async Task <Transportkvittering> SendAsync(Forsendelse forsendelse)
        {
            var guidUtility = new GuidUtility();

            Log.Debug($"Utgående forsendelse, conversationId '{forsendelse.KonversasjonsId}', messageId '{guidUtility.MessageId}'.");

            var documentBundle             = AsiceGenerator.Create(forsendelse, guidUtility, Databehandler.Sertifikat, Klientkonfigurasjon);
            var forretningsmeldingEnvelope = new ForretningsmeldingEnvelope(new EnvelopeSettings(forsendelse, documentBundle, Databehandler, guidUtility, Klientkonfigurasjon));

            ValidateEnvelopeAndThrowIfInvalid(forretningsmeldingEnvelope, forretningsmeldingEnvelope.GetType().Name);

            var transportReceipt = (Transportkvittering)await RequestHelper.SendMessage(forretningsmeldingEnvelope, documentBundle).ConfigureAwait(false);

            transportReceipt.AntallBytesDokumentpakke = documentBundle.BillableBytes;
            var transportReceiptXml = transportReceipt.Xml;

            if (transportReceipt is TransportOkKvittering)
            {
                Log.Debug($"{transportReceipt}");

                var responsvalidator = new ResponseValidator(forretningsmeldingEnvelope.Xml(), transportReceiptXml, CertificateValidationProperties);
                responsvalidator.ValidateTransportReceipt(guidUtility);
            }
            else
            {
                Log.Error($"{transportReceipt}");
            }

            return(transportReceipt);
        }
Example #2
0
        private static SoapContainer LagSoapContainer(ForretningsmeldingEnvelope forretningsmeldingEnvelope, AsicEArkiv arkiv)
        {
            var soapContainer = new SoapContainer(forretningsmeldingEnvelope);

            soapContainer.Vedlegg.Add(arkiv);
            return(soapContainer);
        }
Example #3
0
        private ForretningsmeldingEnvelope LagForretningsmeldingEnvelope(Forsendelse forsendelse, AsicEArkiv arkiv,
                                                                         GuidUtility guidHandler)
        {
            var forretningsmeldingEnvelope =
                new ForretningsmeldingEnvelope(new EnvelopeSettings(forsendelse, arkiv, _databehandler, guidHandler,
                                                                    _klientkonfigurasjon));

            return(forretningsmeldingEnvelope);
        }
        public async Task <Kvittering> SendMessage(ForretningsmeldingEnvelope envelope, DocumentBundle asiceDocumentBundle)
        {
            var result = await Send(envelope, asiceDocumentBundle).ConfigureAwait(false);

            return(KvitteringFactory.GetKvittering(result));
        }