summaryrefslogtreecommitdiff
path: root/src/lib/home/api/categoryManagementApi.js
blob: 2ff4fdfc267052b3abda1cf0b119c0b1e3721e47 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
export const fetchCategoryManagementSolr = async () => {
  let sort = 'sort=sequence_i asc';
  try {
    const response = await fetch(
      `/solr/category_management/query?q=*:*&q.op=OR&indent=true&${sort}&&rows=20`
    );
    if (!response.ok) {
      throw new Error(`HTTP error! status: ${response.status}`);
    }
    const data = await response.json();
    const promotions = await map(data.response.docs);
    return promotions;
  } catch (error) {
    console.error('Error fetching promotion data:', error);
    return [];
  }
};

const map = async (promotions) => {
  return promotions.map((promotion) => {
    let parsedCategories = promotion.categories.map((category) => {
      // Parse string JSON utama
      let parsedCategory = JSON.parse(category);

      // Parse setiap elemen di child_frontend_id_i jika ada
      if (parsedCategory.child_frontend_id_i) {
        parsedCategory.child_frontend_id_i =
          parsedCategory.child_frontend_id_i.map((child) => JSON.parse(child));
      }

      return parsedCategory;
    });
    let productMapped = {
      id: promotion.id,
      name: promotion.name_s,
      image: promotion.image_s,
      sequence: promotion.sequence_i,
      numFound: promotion.numFound_i,
      categories: parsedCategories,
      category_id: promotion.category_id_i,
    };
    return productMapped;
  });
};