diff --git a/src/pages/Ecomerce/CatalogCard.vue b/src/pages/Ecomerce/CatalogCard.vue index 9c93495b..0e795c2f 100644 --- a/src/pages/Ecomerce/CatalogCard.vue +++ b/src/pages/Ecomerce/CatalogCard.vue @@ -37,7 +37,7 @@ const { t } = useI18n(); > <div class="column" style="margin-bottom: auto"> <div class="text-subtitle2 ellipsis-2-lines"> - {{ item.item }} + {{ item.name }} </div> <div class="row justify-between text-uppercase text-subtitle1 text-grey-7" @@ -76,7 +76,7 @@ const { t } = useI18n(); </div> <div class="row justify-between items-cente q-gutter-x-xs"> <QBadge - :label="`x${item.grouping}`" + :label="`x${item?.prices[0]?.grouping}`" color="grey-4" class="col-2 justify-end text-body2" > diff --git a/src/pages/Ecomerce/CatalogView.vue b/src/pages/Ecomerce/CatalogView.vue index a5fe7c11..07a1d12b 100644 --- a/src/pages/Ecomerce/CatalogView.vue +++ b/src/pages/Ecomerce/CatalogView.vue @@ -92,7 +92,7 @@ @click="selectedCategory = cat.id" data-cy="catalogCategoryButton" > - <img :src="`statics/category/${cat.code}.svg`" /> + <img :src="`statics/category/${cat.icon}.svg`" /> <QTooltip>{{ cat.name }}</QTooltip> </QBtn> </div> @@ -577,38 +577,26 @@ const getItems = async () => { if (!basketOrderId.value || !isSomeFilterSelected.value) return; loading.value = true; - const res = await jApi.execQuery( - `DROP TEMPORARY TABLE IF EXISTS tmp.item; - CREATE TEMPORARY TABLE tmp.item - (INDEX (itemFk)) - ENGINE = MEMORY - SELECT i.id itemFk - FROM vn.item i - JOIN vn.itemType t ON t.id = i.typeFk - WHERE (${queryFilter.value}); - CALL myOrder_calcCatalogFull(#orderId); - SELECT i.id, i.longName item, i.subName, - i.tag5, i.value5, i.tag6, i.value6, - i.tag7, i.value7, i.tag8, i.value8, - i.relevancy, i.size, i.category, b.minQuantity, - k.name ink, p.name producer, o.name origin, - b.available, b.price, b.grouping, - i.image, im.updated - FROM tmp.ticketCalculateItem b - JOIN vn.item i ON i.id = b.itemFk - LEFT JOIN vn.ink k ON k.id = i.inkFk - LEFT JOIN vn.producer p ON p.id = i.producerFk - LEFT JOIN vn.origin o ON o.id = i.originFk - LEFT JOIN image im ON im.collectionFk = 'catalog' - AND im.name = i.image - WHERE b.available > 0 - ORDER BY ${selectedOrderBy.value} - LIMIT 5000; - DROP TEMPORARY TABLE tmp.item; - CALL vn.ticketCalculatePurge();`, - { orderId: basketOrderId.value } - ); - items.value = res.results[3].data; + const { data } = await api.get('Orders/catalogFilter', { + params: { + orderFk: basketOrderId.value, + orderBy: JSON.stringify({ + field: 'relevancy DESC, name', + way: 'ASC', + isTag: false + }), + filter: { + where: { + and: [ + { typeFk: selectedType.value }, + { categoryFk: selectedCategory.value } + ] + } + } + } + }); + + items.value = data; await onItemsFetched(); loading.value = false; } catch (error) { @@ -623,7 +611,6 @@ const getOrder = async () => { try { if (!basketOrderId.value) return; - order.value = data; const filter = { include: [ { @@ -645,6 +632,8 @@ const getOrder = async () => { orderFk: basketOrderId.value } }); + + order.value = data; } catch (error) { console.error('Error getting order:', error); } @@ -652,13 +641,25 @@ const getOrder = async () => { const getCategories = async () => { try { - categories.value = await jApi.query( - `SELECT c.id, l.name, c.color, c.code - FROM vn.itemCategory c - JOIN vn.itemCategoryL10n l ON l.id = c.id - WHERE c.display - ORDER BY display` - ); + const { data } = await api.get('itemCategories', { + params: { + filter: JSON.stringify({ + order: 'display ASC', + include: { + relation: 'itemTypes', + scope: { + fields: ['code', 'name'] + } + } + }) + } + }); + categories.value = data.map(category => { + return { + ...category, + icon: category.icon.split('-')[1] + }; + }); } catch (error) { console.error('Error getting categories:', error); } @@ -667,23 +668,15 @@ const getCategories = async () => { const getItemFamilies = async () => { try { if (!selectedCategory.value || !basketOrderId.value) return; - const res = await jApi.execQuery( - `CALL myOrder_getAvailable(#orderId); - SELECT DISTINCT t.id, l.name - FROM vn.item i - JOIN vn.itemType t ON t.id = i.typeFk - JOIN tmp.itemAvailable a ON a.id = i.id - JOIN vn.itemTypeL10n l ON l.id = t.id - WHERE t.order >= 0 - AND t.categoryFk = #category - ORDER BY t.order, l.name ASC; - DROP TEMPORARY TABLE tmp.itemAvailable`, + + const { data } = await api.get( + `Orders/${basketOrderId.value}/getItemTypeAvailable`, { - category: selectedCategory.value, - orderId: basketOrderId.value + params: { itemCategoryId: selectedCategory.value } } ); - itemFamilies.value = res.results[1].data; + + itemFamilies.value = data; } catch (error) { console.error('Error getting available items:', error); } @@ -706,7 +699,19 @@ const getItemColors = async () => { orderId: basketOrderId.value } ); + + // const { data } = await api.get('Inks', { + // params: { + // filter: JSON.stringify({ + // where: { + // 't.categoryFk': selectedCategory.value + // } + // }) + // } + // }); + // console.log('ink data: ', data); itemColors.value = res.results[1].data; + // console.log('itemColors: ', itemColors.value); } catch (error) { console.error('Error getting available items:', error); } @@ -815,19 +820,30 @@ const onCategoryChange = () => { const getItemTags = async itemFk => { try { - const tags = await jApi.query( - `SELECT l.name, it.value - FROM vn.itemTag it - JOIN vn.tag t ON t.id = it.tagFk - JOIN vn.tagL10n l ON l.id = t.id - WHERE it.itemFk = #itemFk - AND priority >= 0 - ORDER BY it.priority`, - { - itemFk + const { data } = await api.get('ItemTags', { + params: { + filter: JSON.stringify({ + where: { + itemFk + }, + include: [ + { + relation: 'tag', + scope: { + fields: ['name'] + } + } + ] + }) } - ); - return tags; + }); + + return data.map(tag => { + return { + name: tag?.tag?.name, + value: tag.value + }; + }); } catch (error) { console.error('Error getting available items:', error); }