/// <summary>
        /// Отправить запрос на генерацию сертификата пользователя.
        /// </summary>
        /// <param name="requestData">Данные пользователя.</param>
        /// <returns>Ответ 1С.</returns>
        public C1Rescponse GenerateCertificate(GenerateCertificateRequest requestData)
        {
            var parameters = new
            {
                MSISDN          = requestData.Msisdn,
                exclusiveAccess = ServiceCertificateHasExclusiveAccess,
                authorityGuid   = ServiceAuthority,
                templateGuid    = ServiceCertificateTemplate,
                subject         = new Dictionary <string, string>
                {
                    ["2.5.4.3"]              = requestData.FullName,
                    ["2.5.4.4"]              = requestData.Surname,
                    ["2.5.4.42"]             = requestData.Name,
                    ["2.5.4.6"]              = requestData.Country,
                    ["2.5.4.8"]              = requestData.Region,
                    ["2.5.4.7"]              = requestData.City,
                    ["1.2.643.100.3"]        = requestData.Inn,
                    ["1.2.643.3.131.1.1"]    = requestData.Snils,
                    ["1.2.840.113549.1.9.1"] = requestData.Email,
                }
            };

            C1Rescponse <Guid> response = this.Request <Guid>("/Certificates/Generate", parameters);

            return(response);
        }
        /// <summary>
        /// Получить инфу о запросе, ранее отправленном в 1С.
        /// </summary>
        /// <typeparam name="T">Тип возвращаемого 1С значения.</typeparam>
        /// <param name="transactionId">Идентификатор запроса.</param>
        /// <returns>Результат запроса в 1С.</returns>
        public C1Rescponse <T> GetTransactionInfo <T>(Guid transactionId)
        {
            var parameters = new
            {
                transactionGuid = transactionId
            };
            C1Rescponse <T> response = this.Request <T>("/Transactions/GetTransactionInfo", parameters);

            return(response);
        }
        /// <summary>
        /// Отправить запрос на аутентификацию в 1С.
        /// </summary>
        /// <param name="certificateId">Идентификатор сертификата пользователя.</param>
        /// <param name="textForUser">Текст для пользователя.</param>
        /// <returns>Ответ 1С.</returns>
        public C1Rescponse RequestAccessToCertificate(string msisdn)
        {
            var parameters = new
            {
                MSISDN = msisdn
            };

            C1Rescponse <Guid> response = this.Request <Guid>("/Certificates/RequestAccess", parameters);

            return(response);
        }
        /// <summary>
        /// Отправить запрос на получение тела сертификата пользователя.
        /// </summary>
        /// <param name="certificateId">Идентификатор сертификата пользователя.</param>
        /// <returns>Ответ 1С.</returns>
        public C1Rescponse GetCertificate(Guid certificateId)
        {
            var parameters = new
            {
                certificateGuid = certificateId,
                callbackUri     = ""
            };

            C1Rescponse <string> response = this.Request <string>("/Certificates/GetCertificate", parameters);

            return(response);
        }
        /// <summary>
        /// Отправить запрос на получение списка сертификатов телефона.
        /// </summary>
        /// <param name="msisdn">Номер телефона.</param>
        /// <returns>Ответ 1С.</returns>
        public C1Rescponse GetCertificates(string msisdn)
        {
            var parameters = new
            {
                MSISDN      = msisdn,
                callbackUri = ""
            };

            C1Rescponse <List <Guid> > response = this.Request <List <Guid> >("/Certificates/GetCertificates", parameters);

            return(response);
        }
        /// <summary>
        /// Отправить запрос на запрос доступа к сертификату пользователя в 1С.
        /// </summary>
        /// <param name="msisdn">Номер телефона.</param>
        /// <returns>Ответ 1С.</returns>
        public C1Rescponse Authenticate(Guid certificateId, string textForUser)
        {
            var parameters = new
            {
                certificateGuid = certificateId,
                text            = textForUser,
                callbackUri     = ""
            };

            C1Rescponse <string> response = this.Request <string>("/Authentication/Authenticate", parameters);

            return(response);
        }
        /// <summary>
        /// Отправить запрос на активацию пользователя.
        /// </summary>
        /// <param name="msisdn">Номер телефона.</param>
        /// <param name="iccid">ICCID симки.</param>
        /// <returns>Ответ 1С.</returns>
        public C1Rescponse Activate(string msisdn, string iccid)
        {
            var parameters = new
            {
                MSISDN      = msisdn,
                ICCID       = iccid,
                callbackUri = ""
            };

            C1Rescponse <bool> response = this.Request <bool>("/Activation/Activate", parameters);

            return(response);
        }
        public C1Rescponse <List <Guid> > GetCertificates([FromUri] GetCertificatesViewModel model)
        {
            Argument.Require(model != null, "Параметры не заданы.");
            Argument.Require(!string.IsNullOrWhiteSpace(model.Msisdn), "Номер телефона пустой.");
            C1Rescponse response = c1Service.GetCertificates(model.Msisdn);

            if (response.StatusCode >= STATUS_BAD_MIN)
            {
                return(new C1Rescponse <List <Guid> >(response));
            }

            return(WaitTillResponse <List <Guid> >(response.TransactionGuid));
        }
        /// <summary>
        /// Отправить запрос на подпись документа.
        /// </summary>
        /// <param name="document">Документ.</param>
        /// <param name="certificateId">Идентификатор сертификата пользователя.</param>
        /// <param name="textForUser">текст для пользователя.</param>
        /// <returns>Ответ 1С.</returns>
        public C1Rescponse Sign(FinanceDocument document, Guid certificateId, string textForUser)
        {
            var parameters = new
            {
                certificateGuid = certificateId,
                text            = textForUser,
                callbackUri     = ""
            };

            C1Rescponse <string> response = this.Request <string>("/Sign/Sign", parameters,
                                                                  r => r.AddFileBytes("data", document.Data, document.Name, document.MimeType));

            return(response);
        }
 public IHttpActionResult GetCertificatesResponse([FromBody] C1Rescponse <List <Guid> > model)
 {
     Argument.Require(model != null, "Пустой ответ от 1С.");
     return(Ok());
 }