Esempio n. 1
0
        /// <summary>
        /// Отправка ответа на запрос
        /// </summary>
        /// <param name="response">ответ</param>
        /// <returns>статус ответа</returns>
        public override IMessageStatus SendResponse(IResponse response)
        {
            var responseData = new SenderProvidedResponseData
            {
                Id        = ReferenceName,
                MessageID = response.MessageId.ToString(),
                To        = response.ReplyTo,
                Items     = new object[]
                {
                    response.MessageContent,
                },
                ItemsElementName = new[]
                {
                    ItemsChoiceType.MessagePrimaryContent
                }
            };

            var signedMessage = CryptoProNetHelper.SignSmevObject(responseData, ReferenceName, SerialNumber);

            IMessageStatus status = null;

            Execute(delegate
            {
                var metadata = SmevService.SendResponse(responseData, null, signedMessage, out _);

                status = SmevTestMessageStatus.Create(metadata);
            }, response.MessageId);

            return(status);
        }
Esempio n. 2
0
        public override IMessageStatus SendReject(IReject reject)
        {
            var responseData = new SenderProvidedResponseData
            {
                Id        = ReferenceName,
                MessageID = reject.MessageId.ToString(),
                To        = reject.ReplyTo,
                Items     = new object[]
                {
                    new SenderProvidedResponseDataRequestRejected()
                    {
                        RejectionReasonDescription = reject.RejectionMessage,
                        RejectionReasonCode        = (RejectCode)reject.RejectCode
                    },
                },
                ItemsElementName = new[]
                {
                    ItemsChoiceType.RequestRejected
                }
            };

            var signedMessage = CryptoProNetHelper.SignSmevObject(responseData, ReferenceName, SerialNumber);

            IMessageStatus status = null;

            Execute(delegate
            {
                var metadata = SmevService.SendResponse(responseData, null, signedMessage, out _);

                status = SmevTestMessageStatus.Create(metadata);
            }, reject.MessageId);

            return(status);
        }
Esempio n. 3
0
        /// <summary>
        /// Обновить статус сообщения
        /// </summary>
        /// <param name="messageStatus">Статус сообщения</param>
        public void UpdateStatus(IMessageStatus messageStatus)
        {
            var message = Db.Messages.FirstOrDefault(i => i.MessageId == messageStatus.MessageId);

            if (message == null)
            {
                return;
            }

            message.Status          = (Status)messageStatus.Status;
            Db.Entry(message).State = EntityState.Modified;
            Db.SaveChanges();
        }
Esempio n. 4
0
        public override IMessageStatus SendRequest(IRequest request)
        {
            var requestData = new SenderProvidedRequestData()
            {
                Id                    = ReferenceName,
                MessageID             = request.MessageId.ToString(),
                MessagePrimaryContent = request.MessageContent,
                TestMessage           = request.IsTest != null && request.IsTest.Value ? new smev3_1_2_test.Void() : null
            };

            var signedMessage = CryptoProNetHelper.SignSmevObject(requestData, ReferenceName, SerialNumber);

            IMessageStatus status = null;

            Execute(delegate
            {
                var metadata = SmevService.SendRequest(requestData, null, signedMessage, out _);

                status = SmevTestMessageStatus.Create(metadata);
            }, request.MessageId);

            return(status);
        }