using System; using System.Text; using System.Web; using System.Collections; using System.Data; using System.Web.Services; using CMS.CMSHelper; using CMS.GlobalHelper; using CMS.SettingsProvider; using CMS.DocumentEngine; /// /// Web service - methods for Product List silverlight application. /// [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] public class ProductList : System.Web.Services.WebService { /// /// Returns all products from the specified path. /// /// Path the products should be selected from [WebMethod] public string GetProducts(string path) { // Ensure path the products should be selected from if (path == "") { path = "/Products"; } path += "/%"; // Product types which should be selected string productTypes = "cmsproduct.cellphone;cmsproduct.camera;cmsproduct.laptop;cmsproduct.computer;cmsproduct.mediaplayer;cmsproduct.pda;"; // Get documents which represents products DataSet ds = TreeHelper.GetDocuments(CMSContext.CurrentSiteName, path, TreeProvider.ALL_CULTURES, false, productTypes, "", "SKUName", TreeProvider.ALL_LEVELS, true, -1); // Build output XML StringBuilder sb = new StringBuilder(); sb.Append(""); sb.Append(""); // Add products if (!DataHelper.DataSourceIsEmpty(ds)) { foreach (DataTable dt in ds.Tables) { foreach (DataRow dr in dt.Rows) { sb.Append(""); // Add product name sb.Append(""); sb.Append(dr["SKUName"].ToString()); sb.Append(""); // Add formatted product price sb.Append(""); sb.Append(dr["SKUPrice"].ToString()); sb.Append(""); // Add product description sb.Append(""); sb.Append(HTMLHelper.StripTags(dr["SKUDescription"].ToString()).Replace('&', ' ')); sb.Append(""); // Add product image full URL sb.Append(""); string imgPath = dr["SKUImagePath"].ToString(); if (imgPath == "") { // Get default product image imgPath = SettingsKeyProvider.GetStringValue(CMSContext.CurrentSiteName + ".CMSDefaultProductImageUrl"); } sb.Append(URLHelper.GetAbsoluteUrl(imgPath)); sb.Append(""); sb.Append(""); } } } sb.Append(""); return sb.ToString(); } /// /// Returns products categories from the current site. /// [WebMethod] public string GetCategories() { // Get documents which represents product categories DataSet ds = TreeHelper.GetDocuments(CMSContext.CurrentSiteName, "/Products/%", TreeProvider.ALL_CULTURES, false, DataClassInfoProvider.DefaultPageClassName, "", "DocumentName", 1, true, -1); // Build output XML StringBuilder sb = new StringBuilder(); sb.Append(""); sb.Append(""); // Add categories if (!DataHelper.DataSourceIsEmpty(ds)) { foreach (DataRow dr in ds.Tables[0].Rows) { sb.Append(""); // Add category name sb.Append(""); sb.Append(dr["DocumentName"].ToString()); sb.Append(""); // Add category path sb.Append(""); sb.Append(dr["NodeAliasPath"].ToString()); sb.Append(""); sb.Append(""); } } sb.Append(""); return sb.ToString(); } }