Пример #1
0
        /// <summary>
        /// Запись Данных в екземпляр запроса
        /// </summary>
        /// <param name="obj">Объект от которого отправляется запрос</param>
        /// <param name="sourceElement">xmlElement с входящими настройками запроса</param>
        /// <param name="request">екземпляр запроса</param>
        private void SetRequestData(Object obj, xmlElement sourceElement, Request request)
        {
            string RequestFormat = sourceElement.GetAttribute("RequestFormat");
            string dataString    = "";

            if (sourceElement.GetAttribute("MethodQuery") != "")
            {
                dataString = obj.XQuery(sourceElement.GetAttribute("MethodQuery"));
            }

            if (string.IsNullOrEmpty(RequestFormat) || RequestFormat == "XML" || RequestFormat == "Without conversion")
            {
                //Устанавливаем данные для POST-запросов
                request.SetData(dataString);
            }
            else
            {
                if (!string.IsNullOrEmpty(dataString))
                {
                    XmlDocument doc = new XmlDocument();
                    doc.LoadXml(dataString);
                    dataString = JsonConvert.SerializeXmlNode(doc, Newtonsoft.Json.Formatting.None, true);
                    request.SetData(dataString.Replace(",null", ""));
                }
            }
        }
Пример #2
0
        /// <summary>
        /// Создает екземпляры Запросов от контекста каждого объекта в Индексе
        /// </summary>
        /// <param name="templateElement">Метод с параметрами</param>
        private bool MakeRequestsFromObjIndex(xmlElement templateElement)
        {
            string XqueryForObjects = templateElement.GetAttribute("XqueryForObjects");

            var objcs = Class.XQuery(XqueryForObjects);

            xmlDocument objs = new xmlDocument(objcs);

            if (objs.Root == null)
            {
                return(false);
            }

            foreach (var node in objs.Root.ChildElements)
            {
                Object      sourceObject      = GetSourceTargetObject(node);
                xmlDocument sourceXmlDocument = new xmlDocument(sourceObject.Root.XML);
                UpdateTemplateObject(sourceXmlDocument);

                if (sourceXmlDocument.Root.XQuery(templateElement.GetAttribute("NeedWork")) == "False")
                {
                    continue;
                }

                // Формируем запрос к сторонней БД
                if (CreateAndFillRequest(sourceObject, sourceXmlDocument, templateElement))
                {
                    sourceObject.Save(sourceXmlDocument.Root.XML);
                }
            }
            return(true);
        }
Пример #3
0
        /// <summary>
        /// Создает екземпляры Запросов от контекста каждого объекта в Индексе
        /// </summary>
        /// <param name="sourceElement">Метод с параметрами</param>
        void MakeRequestsFromObjIndex(xmlElement sourceElement)
        {
            string XqueryForObjects = sourceElement.GetAttribute("XqueryForObjects");

            var objcs = Class.XQuery(XqueryForObjects);

            xmlDocument objs = new xmlDocument(objcs);

            if (objs.Root == null)
            {
                return;
            }

            foreach (var i in objs.Root.ChildElements)
            {
                Object CurrentObj = GetCurrentTargetObject(i);

                UpdateSourceObject(CurrentObj);

                if (CurrentObj.XQuery(sourceElement.GetAttribute("NeedWork")) == "False")
                {
                    continue;
                }

                Request request = new Request(SourceObject, CurrentObj, sourceElement)
                {
                    TargetClass = Class
                };

                SetRequestData(CurrentObj, sourceElement, request);

                Session.ExecuteQuery(request);
            }
        }
        /// <summary>
        /// Поиск файла, запись его в данные запроса и получение пути
        /// </summary>
        /// <param name="fileElement">XML елемент с входными данными</param>
        /// <returns>Путь к файлу</returns>
        private string GetFilePath(xmlElement fileElement)
        {
            File file;

            if (!IsFileLibrary(fileElement))
            {
                file = GetFileFromObject(fileElement);
            }
            else
            {
                file = GetFileFromFileLibrary(fileElement);
            }

            if (file == null)
            {
                throw new Exception("АпиКоннектор: Не удалось найти файл!");
            }

            string filePath = file.Load();

            if (string.IsNullOrEmpty(filePath))
            {
                filePath = file.Path;
            }

            fileBytes = TryGetFileBytes(file, filePath);

            return(filePath);
        }
Пример #5
0
        public bool BackUpList(String location)
        {
            xmlWriter   w      = new xmlWriter();
            xmlRegistry xmlReg = new xmlRegistry();

            try
            {
                w.open(location);
                foreach (var strRegistrySection in BackUpKeys)
                {
                    if (xmlRegistry.keyExists(strRegistrySection))
                    {
                        xmlElement wroot = new xmlElement(xmlRegistry.XML_ROOT);
                        wroot.write(w, 1, false, true);
                        xmlReg.saveAsXml(w, false, strRegistrySection, "");
                        wroot.writeClosingTag(w, -1, false, true);
                    }
                }
            }
            catch (Exception ex)
            {
                ErrorMessage = ex.Message;
                return(false);
            }
            finally
            {
                w.close();
            }
            return(true);
        }
 public MultipartFormDataСreator(Object sourceObject, xmlElement template, string boundary)
 {
     this.sourceObject = sourceObject;
     this.template     = template;
     this.boundary     = boundary;
     boundarybytes     = Encoding.ASCII.GetBytes("\r\n--" + boundary + "\r\n");
 }
Пример #7
0
        /// <summary>
        /// Установка файлов в данные запроса
        /// </summary>
        /// <param name="fileList">Список файлов</param>
        /// <param name="fileKey">Ключ для параметров запроса</param>
        /// <param name="multipartFormDataContent">Поток для записи данных</param>
        private void SetFiles(string fileList, string fileKey, MultipartFormDataContent multipartFormDataContent)
        {
            if (sourceObject == null || sourceObject.IsDisposed)
            {
                throw new Exception("АпиКоннектор: Не удалось загрузить список файлов для отправки. Не установлен объект-контекст отправки");
            }

            if (string.IsNullOrEmpty(fileList))
            {
                return;
            }

            xmlDocument fileListDoc = new xmlDocument(fileList);

            foreach (xmlElement node in fileListDoc.Root.ChildElements)
            {
                try
                {
                    fileElement = node;
                    string filePath = GetFilePath(fileKey, multipartFormDataContent);
                }
                catch (Exception e)
                {
                    Messages.showException(e);
                }
            }
        }
Пример #8
0
        /// <summary>
        /// Установка данных запросов
        /// </summary>
        /// <param name="sourceXmlDocument">xmlDocument от которого отправляется запрос</param>
        /// <param name="templateElement">xmlElement с входящими настройками запроса</param>
        /// <param name="request">экземпляр запроса</param>
        private void SetRequestData(xmlDocument sourceXmlDocument, xmlElement templateElement, Request request)
        {
            string RequestFormat = templateElement.GetAttribute("RequestFormat");
            string dataContent   = "";

            if (templateElement.GetAttribute("MethodQuery") != "")
            {
                dataContent = sourceXmlDocument.Root.XQuery(templateElement.GetAttribute("MethodQuery"));
            }
            if (request.ContentType == "multipart/form-data")
            {
                //Устанавливаем данные для multipart/form-data-запросов
                request.DataContent = request.SetMultipartFormData();
            }

            if (string.IsNullOrEmpty(RequestFormat) || RequestFormat == "XML" || RequestFormat == "Without conversion")
            {
                //Устанавливаем данные для POST-запросов
                request.SetData(dataContent);
            }
            else
            {
                if (!string.IsNullOrEmpty(dataContent))
                {
                    XmlDocument doc = new XmlDocument();
                    doc.LoadXml(dataContent);
                    dataContent = JsonConvert.SerializeXmlNode(doc, Newtonsoft.Json.Formatting.None, true);
                    request.SetData(dataContent.Replace(",null", ""));
                }
            }
        }
        private Object GetLibraryObject(xmlElement fileElement)
        {
            string fileLibraryObjectLink = fileElement.XQuery("xs:string(@link)");

            if (string.IsNullOrEmpty(fileLibraryObjectLink))
            {
                throw new Exception("АпиКоннектор: Ссылка на объект бибилиотеки файлов не установленна!");
            }

            return(sourceObject.Class.GetClass(fileLibraryObjectLink.Substring(0, fileLibraryObjectLink.Length - 18)).GetObject(fileLibraryObjectLink.Substring(fileLibraryObjectLink.Length - 15)));
        }
Пример #10
0
        internal Request(Object sourceObject, Object templateObject, xmlDocument sourceXmlDocument, xmlElement templateElem)
        {
            clientHendler.ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) => { return(true); };
            httpClient = new HttpClient(clientHendler);

            TemplateObject    = templateObject;
            SourceObject      = sourceObject;
            SourceXmlDocument = sourceXmlDocument;
            TemplateElement   = templateElem;


            ContentType = TemplateElement.GetAttribute("ContentType");
            MethodType  = TemplateElement.GetAttribute("MethodDispatch");

            SetHeaders();
        }
Пример #11
0
        private xmlElement createTaxElement(xmlElement SACElement)
        {
            xmlElement SACTax         = SACElement.newElement("Tax");
            xmlElement SACTaxFunction = SACTax.newElement("TaxFunction");

            SACTaxFunction.setAttribute("stdValue", "7");
            xmlElement SACTaxType = SACTax.newElement("TaxType");

            SACTaxType.setAttribute("stdValue", "VAT");
            xmlElement SACTaxCategory = SACTax.newElement("TaxCategory");

            SACTaxCategory.setAttribute("stdValue", "S");
            xmlElement SACTaxPercent = SACTax.newElement("TaxPercent");

            SACTaxPercent.Text = string.Format("{0:0.0000}", vatRate);
            return(SACTax);
        }
        /// <summary>
        /// Поиск файла типа (FileLibrary, ImageLibrary)
        /// </summary>
        /// <param name="fileElement">XML елемент с входными данными</param>
        /// <returns>Найденый файл</returns>
        private File GetFileFromFileLibrary(xmlElement fileElement)
        {
            Object fileLibraryObject = GetLibraryObject(fileElement);

            if (fileLibraryObject == null)
            {
                throw new Exception("АпиКоннектор: Не найден объект бибилиотеки файлов по заданому пути");
            }

            string fileInfo = GetDataField(fileLibraryObject, fileElement).loadFile(fileLibraryObject.Root);

            if (string.IsNullOrEmpty(fileInfo))
            {
                throw new Exception("АпиКоннектор: Не найден файл в объекте бибилиотеки файлов");
            }

            return(new File(fileInfo, fileLibraryObject.Dir));
        }
Пример #13
0
        /// <summary>
        /// Запись Лога об успешном выполнении
        /// </summary>
        /// <param name="SourceObj">Объект ApiConnector`a c параметрами REST запроса</param>
        /// <param name="SourceElement">Елемент объекта ApiConnector`a c параметрами REST запроса</param>
        /// <param name="xDoc">xmlDocument ответа</param>
        /// <param name="RequestURL">URL Запроса</param>
        /// <param name="RequestData">Данные Запроса</param>
        internal static void Log(Object SourceObj, xmlElement SourceElement, xmlDocument xDoc, string RequestURL, string RequestData)
        {
            // Выполняем поиск объекта для ведения логов
            Class  cls    = SourceObj.Class.Domain.FindClass(SourceObj.Root.XQuery("string(LogClass/@link)"));
            string Xqury  = SourceElement.GetAttribute("LogXqury");
            string LogXml = xDoc.XQuery(Xqury);

            if (cls != null)
            {
                if (!String.IsNullOrEmpty(LogXml))
                {
                    CreateLog(cls, RequestURL, RequestData, LogXml);
                }
                else
                {
                    CreateLog(cls, RequestURL, RequestData, xDoc);
                }
            }
        }
        private DataField GetDataField(Object fileLibraryObject, xmlElement fileElement)
        {
            DataField fileDataField;

            if (fileElement.XQuery("xs:string(@cnm)") == "FileLibrary")
            {
                fileDataField = fileLibraryObject.GetDataField("file");
            }
            else
            {
                fileDataField = fileLibraryObject.GetDataField("icon");
            }

            if (fileDataField == null)
            {
                throw new Exception("АпиКоннектор: Не найдено поле file или icon в библиотеке файлов");
            }

            return(fileDataField);
        }
        /// <summary>
        /// Поиск файла типа (File)
        /// </summary>
        /// <param name="fileElement">XML елемент с входными данными</param>
        /// <returns>Найденый файл</returns>
        private File GetFileFromObject(xmlElement fileElement)
        {
            string fileName;
            string fileLink = fileElement.GetAttribute("link");

            if (string.IsNullOrEmpty(fileLink))
            {
                fileName = fileElement.GetAttribute("file");
            }
            else
            {
                fileName = fileLink.Remove(0, fileLink.IndexOf("/") + 1);
            }

            if (string.IsNullOrEmpty(fileName))
            {
                throw new Exception("АпиКоннектор: Не указанно имя файла для отправки");
            }

            return(sourceObject.Dir.Files.getFile(fileName));
        }
Пример #16
0
        /// <summary>
        /// Отправка одиночного запроса
        /// </summary>
        /// <param name="obj">Объект от которого отправляется запрос</param>
        /// <param name="sourceElement">xmlElement с входящими настройками запроса</param>
        void MakeSimpleRequests(Object obj, xmlElement sourceElement)
        {
            if (obj.XQuery(sourceElement.GetAttribute("NeedWork")) == "False")
            {
                return;
            }

            if (!string.IsNullOrEmpty(SourceObject.GetAttrValue("XquryObj")))
            {
                UpdateSourceObject(obj);
            }
            // Формируем запрос к сторонней БД

            Request request = new Request(SourceObject, obj, sourceElement)
            {
                TargetClass = Class
            };

            SetRequestData(obj, sourceElement, request);

            // Выполняем запрос к сторонней БД
            Session.ExecuteQuery(request);
        }
Пример #17
0
 internal Request(Object sourceObject, Object targetObject, xmlElement dataElem)
 {
     SourceObject  = sourceObject;
     TargetObject  = targetObject;
     SourceElement = dataElem;
 }
Пример #18
0
        public bool ProcessSAC(ref DB db, ref baseDB.DataReader dr)
        {
            bool ret = false;

            try
            {
                string txnType = dr.field("TransactionType").strValue;

                if (txnType.Contains("SAL") || txnType.Contains("REF"))
                {
                    baseDB.DB3.SQLRequestList requestList = new baseDB.DB3.SQLRequestList();

                    int sacRate = dr.field("Rate").intValue;
                    if (sacRate != 0)
                    {
                        double SACTotalAmount = 0.0;
                        int    txnAmount      = 0;
                        bool   SACRefund      = false;

                        if (txnType.Contains("SAL"))
                        {
                            txnType   = txnType.Replace("SAL", "REF");
                            SACRefund = true;
                        }
                        else
                        {
                            txnType = txnType.Replace("REF", "SAL");
                        }

                        double SACRate = sacRate / 100.0;

                        string   reference = "SAC" + dr.field("Reference").strValue;
                        DateTime now       = DateTime.Now;

                        string addendum = dr.field("Addendum").strValue;
                        if (string.IsNullOrEmpty(addendum))
                        {
                            double amount = dr.field("Amount").intValue / 100.0;
                            SACTotalAmount = (amount * (SACRate / 100.0)) + 0.00005;
                            txnAmount      = (int)(SACTotalAmount * 100.0);
                        }
                        else
                        {
                            //create addendum
                            xmlElement invoice     = new xmlElement(addendum);
                            xmlElement SACAddendum = new xmlElement("<Invoice/>");

                            //modify InvoiceHeader
                            xmlElement invHead          = invoice.getElement("InvoiceHeader");
                            xmlElement SACInvoiceHeader = SACAddendum.newElement("InvoiceHeader");
                            SACInvoiceHeader.import(invHead.getElement("InvoiceType"));
                            SACInvoiceHeader.import(invHead.getElement("InvoiceStatus"));
                            SACInvoiceHeader.newElement("TaxTreatment").setAttribute("stdValue", "NIL");
                            SACInvoiceHeader.import(invHead.getElement("InvoiceTreatment"));
                            SACInvoiceHeader.newElement("InvoiceNumber").Text = "SAC" + invHead.getElement("InvoiceNumber").Text;
                            SACInvoiceHeader.newElement("InvoiceDate").Text   = string.Format("{0:s}", now);
                            SACInvoiceHeader.newElement("TaxPointDate").Text  = string.Format("{0:s}", now);
                            SACInvoiceHeader.import(invHead.getElement("Currency"));
                            System.Collections.ArrayList parties = invHead.getElements("Party");
                            foreach (xmlElement party in parties)
                            {
                                SACInvoiceHeader.import(party);
                            }

                            SACInvoiceHeader.import(invHead.getElement("PONum"));

                            //InvoiceHeader refs
                            if (SACRefund)
                            {
                                //create "IV" ref containing original invoice number
                                xmlElement SACInvoiceHeaderRef = SACInvoiceHeader.newElement("Ref");
                                SACInvoiceHeaderRef.setAttribute("stdValue", "IV");
                                SACInvoiceHeaderRef.Text = invHead.getElement("InvoiceNumber").Text;
                            }
                            System.Collections.ArrayList invRefs = invHead.getElements("Ref");
                            foreach (xmlElement invRef in invRefs)
                            {
                                if (invRef.getAttribute("stdValue") != "IV")
                                {
                                    SACInvoiceHeader.import(invRef);
                                }
                            }

                            SACInvoiceHeader.import(invHead.getElement("Date"));

                            //create new InvoiceDetails for each line
                            System.Collections.ArrayList invoiceDetails = invoice.getElements("InvoiceDetails");
                            foreach (xmlElement invDet in invoiceDetails)
                            {
                                xmlElement SACInvoiceDetails = SACAddendum.newElement("InvoiceDetails");
                                xmlElement SACBaseItemDetail = SACInvoiceDetails.newElement("BaseItemDetail");
                                xmlElement baseItemDetail    = invDet.getElement("BaseItemDetail");

                                SACBaseItemDetail.import(baseItemDetail.getElement("LineItemNum"));

                                //create Commodity code PartNumDetail
                                xmlElement SACPartNumDetailForCC = SACBaseItemDetail.newElement("PartNumDetail");
                                SACPartNumDetailForCC.setAttribute("stdValue", "CC");
                                SACPartNumDetailForCC.newElement("PartNum").Text  = commodityCode;
                                SACPartNumDetailForCC.newElement("PartDesc").Text = commodityDescription;

                                System.Collections.ArrayList partNumDetails = baseItemDetail.getElements("PartNumDetail");
                                foreach (xmlElement partNumDet in partNumDetails)
                                {
                                    if (partNumDet.getAttribute("stdValue") == "VP")    //vendor(supplier)'s product code & description
                                    {
                                        //modify supplier's product description (prefix with "SAC")
                                        xmlElement SACPartNumDetailForVP = SACBaseItemDetail.newElement("PartNumDetail");
                                        SACPartNumDetailForVP.setAttribute("stdValue", "VP");
                                        SACPartNumDetailForVP.newElement("PartNum").Text  = partNumDet.getElement("PartNum").Text;
                                        SACPartNumDetailForVP.newElement("PartDesc").Text = "SAC" + partNumDet.getElement("PartDesc").Text;
                                    }
                                }

                                //Quantity
                                xmlElement SACQuantity = SACBaseItemDetail.newElement("Quantity");
                                xmlElement SACQty      = SACQuantity.newElement("Qty");
                                SACQty.Text = "1.0000";
                                xmlElement SACUnitOfMeasure = SACQuantity.newElement("UnitOfMeasure");
                                SACUnitOfMeasure.setAttribute("stdValue", unitOfMeasure);

                                //calculate the SAC amount
                                double lineTotal = double.Parse(invDet.getElement("LineItemSubtotal").Text);
                                double SACAmount = (lineTotal * (SACRate / 100.0)) + 0.00005;

                                //set unit price & line item sub total = SAC amount
                                SACInvoiceDetails.newElement("UnitPrice").Text        = string.Format("{0:0.0000}", SACAmount);
                                SACInvoiceDetails.newElement("LineItemSubtotal").Text = string.Format("{0:0.00}", SACAmount);

                                SACTotalAmount += SACAmount;

                                //Tax
                                createTaxElement(SACInvoiceDetails);
                            }

                            //InvoiceSummary
                            xmlElement SACInvoiceSummary = SACAddendum.newElement("InvoiceSummary");

                            //create one TaxSummary using standard VAT rate
                            xmlElement SACTaxSummary = SACInvoiceSummary.newElement("TaxSummary");
                            xmlElement SACTax        = createTaxElement(SACTaxSummary);

                            //create TaxableAmount and TaxAmount
                            double taxRate = double.Parse(SACTax.getElement("TaxPercent").Text);

                            SACTax.newElement("TaxableAmount").Text = string.Format("{0:0.00}", SACTotalAmount);

                            //calculate the TaxAmount
                            double taxAmount = (SACTotalAmount * (taxRate / 100.0)) + 0.00005;
                            SACTax.newElement("TaxAmount").Text = string.Format("{0:0.00}", taxAmount);

                            //InvoiceTotals
                            txnAmount = (int)((SACTotalAmount + 0.005) * 100.0) + (int)((taxAmount + 0.005) * 100.0);
                            double SACGrossAmount = (double)txnAmount / 100.0;
                            if (txnAmount != 0)
                            {
                                xmlElement SACInvoiceTotals = SACInvoiceSummary.newElement("InvoiceTotals");
                                SACInvoiceTotals.newElement("NetValue").Text   = string.Format("{0:0.00}", SACTotalAmount);
                                SACInvoiceTotals.newElement("TaxValue").Text   = string.Format("{0:0.00}", taxAmount);
                                SACInvoiceTotals.newElement("GrossValue").Text = string.Format("{0:0.00}", SACGrossAmount);

                                //ActualPayment
                                xmlElement SACActualPayment = SACInvoiceSummary.newElement("ActualPayment");
                                xmlElement SACPaymentAmount = SACActualPayment.newElement("PaymentAmount");
                                SACPaymentAmount.newElement("LocalCurrencyAmt").Text = string.Format("{0:0.00}", SACGrossAmount);
                                SACActualPayment.newElement("PaymentMean").setAttribute("stdValue", "ZZZ");
                                SACActualPayment.newElement("PaymentDate").Text = string.Format("{0:s}", now);

                                //CardInfo
                                SACActualPayment.import(invoice.getElement("InvoiceSummary").getElement("ActualPayment").getElement("CardInfo"));

                                addendum = SACAddendum.rootXml;
                            }
                        }

                        if (txnAmount != 0)
                        {
                            //create SAC record
                            baseDB.DB3.SQLRequest sqlSAC = new baseDB.DB3.SQLRequest();
                            sqlSAC.operation = baseDB.DB3.SQLRequest.Operation.Insert;
                            sqlSAC.fields.Add("SupplierID").value = dr.field("SupplierID").strValue;
                            sqlSAC.fields.Add("Reference").value  = reference;
                            sqlSAC.fields.Add("Status").value     = dr.field("Status").value;
                            sqlSAC.fields.Add("Source").value     = "ITSSAC";
                            sqlSAC.fields.Add("Acquirer").value   = dr.field("Acquirer").strValue;
                            //don't add SettlementID as this needs to be null
                            sqlSAC.fields.Add("TerminalID").value            = dr.field("TerminalID").intValue;
                            sqlSAC.fields.Add("TransactionType").value       = txnType;
                            sqlSAC.fields.Add("DateTime").value              = now;
                            sqlSAC.fields.Add("SchemeName").value            = dr.field("SchemeName").strValue;
                            sqlSAC.fields.Add("PAN").value                   = dr.field("PAN").strValue;
                            sqlSAC.fields.Add("IssueNumber").value           = dr.field("IssueNumber").strValue;
                            sqlSAC.fields.Add("StartDate").value             = dr.field("StartDate").strValue;
                            sqlSAC.fields.Add("ExpiryDate").value            = dr.field("ExpiryDate").strValue;
                            sqlSAC.fields.Add("CustomerPresent").value       = dr.field("CustomerPresent").boolValue;
                            sqlSAC.fields.Add("InputMethod").value           = dr.field("InputMethod").strValue;
                            sqlSAC.fields.Add("CurrencyCode").value          = dr.field("CurrencyCode").strValue;
                            sqlSAC.fields.Add("CountryCode").value           = dr.field("CountryCode").strValue;
                            sqlSAC.fields.Add("Amount").value                = txnAmount;
                            sqlSAC.fields.Add("Cashback").value              = 0;
                            sqlSAC.fields.Add("AuthMethod").value            = "OFFLINE";
                            sqlSAC.fields.Add("AuthCode").value              = "";
                            sqlSAC.fields.Add("AddendumType").value          = dr.field("AddendumType").strValue;
                            sqlSAC.fields.Add("Addendum").value              = addendum;
                            sqlSAC.fields.Add("ICCData").value               = "";
                            sqlSAC.fields.Add("UserReference").value         = "";
                            sqlSAC.fields.Add("ReceiptNumber").value         = dr.field("ReceiptNumber").value;
                            sqlSAC.fields.Add("Processed").value             = now;
                            sqlSAC.fields.Add("ESFeed").value                = dr.field("ESFeed").strValue;
                            sqlSAC.fields.Add("ContractNumber").value        = dr.field("ContractNumber").strValue;
                            sqlSAC.fields.Add("CVV").value                   = "";
                            sqlSAC.fields.Add("TerminalType").value          = dr.field("TerminalType").strValue;
                            sqlSAC.fields.Add("XMLBIN").value                = dr.field("XMLBIN").strValue;
                            sqlSAC.fields.Add("AddendumAcquirer").value      = dr.field("AddendumAcquirer").strValue;
                            sqlSAC.fields.Add("AddendumSettlementID").value  = "";
                            sqlSAC.fields.Add("SOCRefNumber").value          = dr.field("SOCRefNumber").value;
                            sqlSAC.fields.Add("UserSource").value            = "";
                            sqlSAC.fields.Add("TicketNumber").value          = dr.field("TicketNumber").strValue;
                            sqlSAC.fields.Add("EncryptedPAN").value          = dr.field("EncryptedPAN").strValue;
                            sqlSAC.fields.Add("AliasName").value             = dr.field("AliasName").strValue;
                            sqlSAC.fields.Add("POSEntryMode").value          = "";
                            sqlSAC.fields.Add("UserName").value              = "";
                            sqlSAC.fields.Add("OriginalReference").value     = "";
                            sqlSAC.fields.Add("SchemeReferenceData").value   = "";
                            sqlSAC.fields.Add("AcquirerReferenceData").value = "";
                            sqlSAC.fields.Add("NIUtilityType").value         = "";
                            sqlSAC.fields.Add("NINarration").value           = "";
                            sqlSAC.fields.Add("SACApplied").value            = 1;

                            sqlSAC.table = "tblTransactions";
                            sqlSAC.transactAcceptCriteria = baseDB.DB3.TransactAcceptCriteria.RowsAffectedIs1;
                            requestList.AddRequest(sqlSAC);
                        }
                    }

                    //update tblTransactions set SACApplied = 'True' and SACClaimed = null where ID = ID of SAC eligible txn
                    baseDB.DB3.SQLRequest sqlTxn = new baseDB.DB3.SQLRequest();
                    sqlTxn.operation = baseDB.DB3.SQLRequest.Operation.Update;
                    sqlTxn.fields.Add("SACApplied").value = 1;
                    sqlTxn.fields.Add("SACClaimed").value = null;
                    sqlTxn.table = "tblTransactions";
                    sqlTxn.whereClause.basic.Add("ID", baseDB.DB3.Compare.Equal, dr.field("ID").intValue);
                    sqlTxn.transactAcceptCriteria = baseDB.DB3.TransactAcceptCriteria.RowsAffectedIs1;
                    requestList.AddRequest(sqlTxn);

                    requestList.Transact = true;    //execute within a transaction
                    baseDB.DB3.SQLResponseList responseList = new baseDB.DB3.SQLResponseList();
                    responseList = db.ExecuteBatch(requestList);
                    if (responseList.Success == true)
                    {
                        ret = true;
                    }
                    else
                    {
                        //log an error
                        Logger.Log("ProcessSAC: DB ExecuteBatch failed. " + responseList.Exception);
                    }
                }
                else
                {
                    //log unknown txn type
                    Logger.Log("ProcessSAC: Unrecognized transaction type: " + txnType + " in txn ID: " + dr.field("ID").intValue);
                }
            }

            catch (Exception ex)
            {
                if (ex.InnerException != null && ex.InnerException.GetType() == typeof(Win32Exception))
                {
                    Win32Exception wex = (Win32Exception)ex.InnerException;
                    Logger.Log(string.Format("ProcessSAC: Exception, error(0x{0:X})", wex.ErrorCode));
                }
                else
                {
                    Logger.Log("ProcessSAC: " + ex.ToString());
                }
            }

            if (!ret)
            {
                //update tblTransactions set SACClaimed = "ERROR" where ID = ID of SAC eligible txn
                baseDB.DB3.SQLRequest sqlTxn = new baseDB.DB3.SQLRequest();
                sqlTxn.operation = baseDB.DB3.SQLRequest.Operation.Update;
                sqlTxn.fields.Add("SACClaimed").value = "ERROR";
                sqlTxn.table = "tblTransactions";
                sqlTxn.whereClause.basic.Add("ID", baseDB.DB3.Compare.Equal, dr.field("ID").intValue);
                sqlTxn.transactAcceptCriteria = baseDB.DB3.TransactAcceptCriteria.RowsAffectedIs1;
                if (db.ExecuteDataWriter(sqlTxn).RowsAffected != 1)
                {
                    Logger.Log("ProcessSAC: Failed to set SACClaimed = ERROR for txn ID: " + dr.field("ID").intValue);
                }
            }
            return(ret);
        }
 private bool IsFileLibrary(xmlElement fileElement)
 {
     return(fileElement.XQuery("xs:string(@cnm)") == "FileLibrary" || fileElement.XQuery("xs:string(@cnm)") == "ImageLibrary");
 }
 private string GetParamValue(xmlElement textParam)
 {
     return(sourceObject.XQuery(textParam.GetAttribute("ValueXQ")));
 }
Пример #21
0
 public MultipartFormDataСreator(Object sourceObject, xmlElement template)
 {
     this.sourceObject = sourceObject;
     this.template     = template;
 }
Пример #22
0
        /// <summary>
        /// Создание запроса и заполение его данными
        /// </summary>
        /// <param name="sourceObject">Объект от которого отправляется запрос</param>
        /// <param name="sourceXmlDocument">xmlDocument от которого отправляется запрос</param>
        /// <param name="templateElement">xmlElement с входящими настройками запроса</param>
        /// <returns></returns>
        private bool CreateAndFillRequest(Object sourceObject, xmlDocument sourceXmlDocument, xmlElement templateElement)
        {
            Request request = new Request(sourceObject, TemplateObject, sourceXmlDocument, templateElement)
            {
                TargetClass = Class
            };

            SetRequestData(sourceXmlDocument, templateElement, request);
            // Выполняем запрос к сторонней БД

            return(Session.ExecuteQuery(request));
        }
 private string GetParamKey(xmlElement textParam)
 {
     return(textParam.GetAttribute("Key"));
 }
Пример #24
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="sourceObject">Объект от которого отправляется запрос</param>
 /// <param name="sourceXmlDocument">xmlDocument от которого отправляется запрос</param>
 /// <param name="templateElement">xmlElement с входящими настройками запроса</param>
 /// <returns></returns>
 private bool MakeSimpleRequests(Object sourceObject, xmlDocument sourceXmlDocument, xmlElement templateElement)
 {
     if (sourceXmlDocument.Root.XQuery(templateElement.GetAttribute("NeedWork")) == "False")
     {
         Messages.showMessage("АпиКоннектор: NeedWork = false. XQ - " + templateElement.GetAttribute("NeedWork"));
         return(false);
     }
     Messages.showMessage("АпиКоннектор: Выполнение запроса NeedWork. XQ - " + templateElement.GetAttribute("NeedWork"));
     if (!string.IsNullOrEmpty(TemplateObject.GetAttrValue("XquryObj")))
     {
         UpdateTemplateObject(sourceXmlDocument);
     }
     // Формируем запрос к сторонней БД
     return(CreateAndFillRequest(sourceObject, sourceXmlDocument, templateElement));
 }