from __future__ import unicode_literals
import webnotes

@webnotes.whitelist(allow_guest=True)
def get_product_list(args=None):
	"""
		args = {
			'limit_start': 0,
			'limit_page_length': 20,
			'search': '',
			'product_group': '',
		}
	"""
	import webnotes
	from webnotes.utils import cstr
	
	if not args: args = webnotes.form_dict
	
	# base query
	query = """\
		select name, item_name, page_name, website_image,
		description, web_short_description
		from `tabItem`
		where is_sales_item = 'Yes'
		and docstatus = 0
		and show_in_website = 1"""
	
	# search term condition
	if args.get('search'):
		query += """
			and (
				web_short_description like %(search)s or
				web_long_description like %(search)s or
				description like %(search)s or
				item_name like %(search)s or
				name like %(search)s
			)"""
		args['search'] = "%" + cstr(args.get('search')) + "%"
	
	# product group condition
	if args.get('product_group') and args.get('product_group') != 'All Products':
		query += """
			and item_group = %(product_group)s"""
	
	# order by
	query += """
		order by item_name asc, name asc"""

	from webnotes.widgets.query_builder import add_limit_to_query
	query, args = add_limit_to_query(query, args)

	return webnotes.conn.sql(query, args, as_dict=1)

@webnotes.whitelist(allow_guest=True)
def get_product_category_list(args=None):
	"""
		args = {
			'limit_start': 0,
			'limit_page_length': 5,
		}
	"""
	import webnotes
	
	if not args: args = webnotes.form_dict
	
	query = """\
		select count(name) as items, item_group
		from `tabItem`
		where is_sales_item = 'Yes'
		and docstatus = 0
		and show_in_website = 1
		group by item_group
		order by items desc"""
		
	from webnotes.widgets.query_builder import add_limit_to_query
	query, args = add_limit_to_query(query, args)

	
	result = webnotes.conn.sql(query, args, as_dict=1)

	# add All Products link
	total_count = sum((r.get('items') or 0 for r in result))
	result = [{'items': total_count, 'item_group': 'All Products'}] + (result or [])
	
	return result
	
@webnotes.whitelist(allow_guest=True)
def get_similar_product_list(args=None):
	"""
		args = {
			'limit_start': 0,
			'limit_page_length': 5,
			'product_name': '',
			'product_group': '',
		}
	"""
	import webnotes
	
	if not args: args = webnotes.form_dict
	
	query = """\
		select name, item_name, page_name, website_image,
		description, web_short_description
		from `tabItem`
		where is_sales_item = 'Yes'
		and docstatus = 0
		and show_in_website = 1
		and name != %(product_name)s
		and item_group = %(product_group)s
		order by item_name"""
	
	from webnotes.widgets.query_builder import add_limit_to_query
	query, args = add_limit_to_query(query, args)
	
	result = webnotes.conn.sql(query, args, as_dict=1)
		
	return result