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();
}
}