import axios from "axios";
import { baseUrl } from "../../constants/urls";

export const fetchSearch = async ({ categoryCode = 1, ...nameString }) => {

    
    const url = `${baseUrl}/api/products?category_id=${categoryCode}&name=${nameString.searchTerm}`;
    console.log(url,"url");
    
    const search_res= await axios.get(url);
    return search_res.data; 
}

export const fetchAutoComplete = async(text:any)=>{
    const url = `${baseUrl}/api/productSearch`;
    const q =     {"_source": [
                            "name"
                        ],
                        "query": {
                          "bool": {
                            "must": [
                                        {
                                            "simple_query_string": {
                                                "query": text,
                                                "fields": [
                                                    "search_keywords^1000",
                                                    "name^10",
                                                    "sku^9",
                                                    "category_names^8"
                                                ]
                                            }
                                        },
                                        {
                                            "bool":  {
                                             "filter": [
                                                    {
                                                      "term": {
                                                        "product_type": 2
                                                      }
                                                    }
                                                  ]
                                        }
                                        }
                                       
                                    ]
                          }
                        }
                    };
    
    const autoComplete_res= await axios.post(url,{q:q});
    return autoComplete_res.data; 
}

export const fetchAutoCompleteWithMultiCall = async(text:any)=>{
  const results = []
  const url = `${baseUrl}/api/productSearch`;
  const q =     {"_source": [
                          "groupby_key",
                          "brand_label"
                      ],
                      "query": {
                        "bool": {
                          "must": [
                                      {
                                          "multi_match": {
                                              "query": text,
                                              "fields": [
                                                "groupby_key^1000",
                                                  "search_keywords^500",
                                                  "sku^9",
                                                  "category_names^200",
                                                  "brand_label^500"
                                              ],
                                              "type":"best_fields",
                                              "operator":"and",
                                              "fuzziness":1,
                                          }
                                      },
                                      {
                                          "bool":  {
                                           "filter": [
                                                  {
                                                    "term": {
                                                      "product_type": 2
                                                    }
                                                  }
                                                ]
                                      }
                                      }
                                     
                                  ]
                        }
                      }
                  };
  
  const autoComplete_res= await axios.post(url,{q:q});
  results[0] = autoComplete_res.data;

	const payload = {
    q: {
      from: 0,
      size: 5,
      "query": { "query_string": { "query": text } }
     },
    index: "categories_index",
    };
    const _url = `${baseUrl}/api/search-products`;
    const autoComplete_Catres=  await axios.get(_url, { params: { ...payload } });
    results[1] = autoComplete_Catres.data;
    return results; 
}