# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt

# For license information, please see license.txt


import frappe


@frappe.whitelist()
@frappe.validate_and_sanitize_search_inputs
def query_task(doctype, txt, searchfield, start, page_len, filters):
	from frappe.desk.reportview import build_match_conditions

	search_string = "%%%s%%" % txt
	order_by_string = "%s%%" % txt
	match_conditions = build_match_conditions("Task")
	match_conditions = (f"and ({match_conditions})") if match_conditions else ""

	return frappe.db.sql(
		"""select name, subject from `tabTask`
		where (`{}` like {} or `subject` like {}) {}
		order by
			case when `subject` like {} then 0 else 1 end,
			case when `{}` like {} then 0 else 1 end,
			`{}`,
			subject
		limit {} offset {}""".format(
			searchfield, "%s", "%s", match_conditions, "%s", searchfield, "%s", searchfield, "%s", "%s"
		),
		(search_string, search_string, order_by_string, order_by_string, page_len, start),
	)
