コード例 #1
0
        /// <summary>
        /// Update the store data with a new response
        /// </summary>
        /// <param name="response">xml string store response received from the PaymentItems</param>
        /// <param name="key">The key is the store name to copy</param>
        private void CopyResponseToStoreData(XmlDocument xmlDoc, string key)
        {
            string response = xmlDoc.InnerXml;

            try
            {
                //  MemoryStream schema = LoadSchemaFile("StoreImportSchemaFull.xsd");
                ServerPaymentItemsDataSets dataSets = new ServerPaymentItemsDataSets();
                DataSet dsStoreCreated = dataSets.CreateStoreDataSet("StoreDataSet", true);

                XmlNode itemOffersNode = xmlDoc.SelectSingleNode("/Response/store");

                XmlNodeList itemOffersNodeList = xmlDoc.SelectNodes("/Response/store/itemOffers/itemOffer");

                lock (lockObject)
                {
                    if (mDebug)
                    {
                        xmlDoc.Save(String.Format(@"{0}CopyResponseToStoreXml_{1}.xml", mDebugDir, key));
                    }

                    mStoreXml[key].InnerXml = xmlDoc.InnerXml;
                    //DataSet dsStore = LoadXMLInToDataSet(itemOffersNode, schema, "StoreDataSet");
                    DataSet dsStore = dataSets.LoadStoreDataXMLInToDataSet(itemOffersNodeList, dsStoreCreated, true);

                    if (mDebug)
                    {
                        dsStore.WriteXml(String.Format(@"{0}CopyResponseToStoreData_{1}.xml", mDebugDir, key));
                    }

                    mStoreDataSet[key] = dsStore;
                }
            }

            catch (Exception ex)
            {
                mLogger.Error(String.Format("Error in CopyResponseToStoreData for Store {0} Error: {1}\n Response: {2}", key, ex, response));
            }
        }
コード例 #2
0
        /// <summary>
        /// Add the item Assets To StoreInventory Items node
        /// </summary>
        /// <param name="response">xml string store response received from the PaymentItems</param>
        /// <param name="storeName">The name of the store used for debugging.</param>
        /// <returns>The reesponse xml document with the items assets added</returns>
        private XmlDocument AddAssetsToStoreInventoryItems(XmlDocument response, string storeName)
        {
            XmlDocument storeResponse = new XmlDocument();

            storeResponse.InnerXml = response.InnerXml;

            try
            {
                if (response == null)
                {
                    throw new Exception("Error: Cached Response for PaymentItems User Inventory Response is not available");
                }
                else
                {
                    XmlNode itemOffersNode = response.SelectSingleNode("/Response/store");

                    XmlNodeList itemOffersNodeList = response.SelectNodes("/Response/store/itemOffers/itemOffer");

                    ServerPaymentItemsDataSets dataSets = new ServerPaymentItemsDataSets();
                    DataSet dsStoreCreated = dataSets.CreateStoreDataSet("StoreDataSet", false);
                    DataSet dsStore        = dataSets.LoadStoreDataXMLInToDataSet(itemOffersNodeList, dsStoreCreated, false);

                    //MemoryStream schema = LoadSchemaFile("StoreImportSchema.xsd");
                    //DataSet dsStore = LoadXMLInToDataSet(itemOffersNode, schema, "StoreDataSet");

                    if (mDebug)
                    {
                        dsStore.WriteXml(String.Format(@"{0}AddAssetsToStoreInventoryItems_{1}.xml", mDebugDir, storeName));
                    }

                    DataTable dtOffer = dsStore.Tables["itemOffer"];
                    DataTable dtItem  = dsStore.Tables["item"];

                    DataColumn itemAssets = new DataColumn("Assets", System.Type.GetType("System.String"));
                    itemAssets.ColumnMapping = MappingType.Element;
                    dtItem.Columns.Add(itemAssets);

                    foreach (DataRow offerRow in dtOffer.Rows)
                    {
                        DataRow[] itemRowArray = offerRow.GetChildRows("itemOffer_item");
                        DataRow   itemRow      = itemRowArray[0];

                        string hangoutItemId = itemRow["name"].ToString();
                        itemRow["Assets"] = String.Format("<![CDATA[{0}]]>", mPaymentItemsManager.GetAssetDataSetDna(hangoutItemId));
                    }

                    StringWriter sw = new StringWriter();
                    dsStore.WriteXml(sw);

                    XmlDocument responseTemp = new XmlDocument();
                    responseTemp.LoadXml(UnEscapeXml(sw.ToString()));

                    XmlNode storeItemOffersNode = storeResponse.SelectSingleNode("/Response/store/itemOffers");

                    storeItemOffersNode.RemoveAll();

                    XmlNodeList newOfferList = responseTemp.SelectNodes("/StoreDataSet/itemOffer");

                    foreach (XmlNode newOffer in newOfferList)
                    {
                        XmlNode newChildNode = storeResponse.ImportNode(newOffer, true);
                        storeItemOffersNode.AppendChild(newChildNode);
                    }

                    //storeResponse.LoadXml(responseTemp.SelectSingleNode("/StoreDataSet").InnerXml);
                }
            }
            catch (Exception ex)
            {
                mLogger.Error(String.Format("Error in AddAssestsToStoreInventoryItems Error: {0}\n Response: {1}", ex, response));
            }

            return(storeResponse);
        }