refactor: userStore, JSON loopback filter, `fields`, etc
This commit is contained in:
parent
fefb3dab1f
commit
d163b4ba33
|
@ -1,5 +1,5 @@
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref, inject, onMounted } from 'vue';
|
import { ref, inject, watch } from 'vue';
|
||||||
import { useI18n } from 'vue-i18n';
|
import { useI18n } from 'vue-i18n';
|
||||||
import { useRouter } from 'vue-router';
|
import { useRouter } from 'vue-router';
|
||||||
|
|
||||||
|
@ -10,6 +10,7 @@ import { currency, formatDateTitle } from 'src/lib/filters.js';
|
||||||
import { useVnConfirm } from 'src/composables/useVnConfirm.js';
|
import { useVnConfirm } from 'src/composables/useVnConfirm.js';
|
||||||
import useNotify from 'src/composables/useNotify.js';
|
import useNotify from 'src/composables/useNotify.js';
|
||||||
import { useAppStore } from 'stores/app';
|
import { useAppStore } from 'stores/app';
|
||||||
|
import { useUserStore } from 'stores/user';
|
||||||
import { storeToRefs } from 'pinia';
|
import { storeToRefs } from 'pinia';
|
||||||
|
|
||||||
const jApi = inject('jApi');
|
const jApi = inject('jApi');
|
||||||
|
@ -18,6 +19,7 @@ const { t } = useI18n();
|
||||||
const { openConfirmationModal } = useVnConfirm();
|
const { openConfirmationModal } = useVnConfirm();
|
||||||
const { notify } = useNotify();
|
const { notify } = useNotify();
|
||||||
const appStore = useAppStore();
|
const appStore = useAppStore();
|
||||||
|
const userStore = useUserStore();
|
||||||
const { isHeaderMounted } = storeToRefs(appStore);
|
const { isHeaderMounted } = storeToRefs(appStore);
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
|
|
||||||
|
@ -27,49 +29,55 @@ const orders = ref([]);
|
||||||
const getOrders = async () => {
|
const getOrders = async () => {
|
||||||
try {
|
try {
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
const ordersResponse = await jApi.query(
|
|
||||||
`SELECT o.id, o.sent, o.deliveryMethodFk, o.taxableBase,
|
|
||||||
a.nickname, am.description agency
|
|
||||||
FROM myOrder o
|
|
||||||
JOIN myAddress a ON a.id = o.addressFk
|
|
||||||
JOIN vn.agencyMode am ON am.id = o.agencyModeFk
|
|
||||||
WHERE NOT o.isConfirmed
|
|
||||||
ORDER BY o.sent DESC`
|
|
||||||
);
|
|
||||||
console.log('old ordersResponse', ordersResponse);
|
|
||||||
// orders.value = ordersResponse;
|
|
||||||
|
|
||||||
const userId = await jApi.getValue('select account.myUser_getId()');
|
const clientFk = userStore?.user?.id;
|
||||||
console.log('userId', userId);
|
|
||||||
|
|
||||||
// const userId = 9;
|
const filter = {
|
||||||
const queryParams = new URLSearchParams([
|
where: {
|
||||||
['filter[include]', 'address'],
|
clientFk,
|
||||||
['filter[include]', 'agencyMode'],
|
'address.clientFk': clientFk,
|
||||||
['filter[where][isConfirmed]', 0],
|
isConfirmed: 0,
|
||||||
['filter[where][source_app]', 'WEB'],
|
source_app: 'WEB',
|
||||||
['filter[where][clientFk]', userId], // order.customer_id in DB, renamed in loopback to clientFk
|
},
|
||||||
['filter[where][address.clientFk]', userId], // address.clientFk
|
include: [
|
||||||
]);
|
{
|
||||||
const salixUrl = `Orders?${queryParams}`;
|
relation: 'address',
|
||||||
|
scope: {
|
||||||
|
fields: ['nickname', 'city'],
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
relation: 'agencyMode',
|
||||||
|
scope: {
|
||||||
|
fields: ['description'],
|
||||||
|
}
|
||||||
|
},
|
||||||
|
],
|
||||||
|
fields: [
|
||||||
|
'id',
|
||||||
|
'landed',
|
||||||
|
'delivery_method_id',
|
||||||
|
'taxableBase',
|
||||||
|
'addressFk',
|
||||||
|
'agencyModeFk'
|
||||||
|
]
|
||||||
|
};
|
||||||
|
|
||||||
console.log('salixUrl', salixUrl);
|
const { data: salixOrders } = await api.get('Orders', {
|
||||||
|
params: {
|
||||||
|
filter: JSON.stringify(filter)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
const salixOrders = await api.get(salixUrl);
|
const salixOrdersMapped = salixOrders.map(order => ({
|
||||||
|
|
||||||
console.log('salixOrders', salixOrders);
|
|
||||||
|
|
||||||
const salixOrdersMapped = salixOrders.data.map(order => ({
|
|
||||||
id: order.id,
|
id: order.id,
|
||||||
sent: order.landed, // the other API converts it to a js Date automagically!
|
sent: order.landed,
|
||||||
deliveryMethodFk: order.delivery_method_id,
|
deliveryMethodFk: order.delivery_method_id,
|
||||||
taxableBase: order.taxableBase, // currently missing from the salix mapping
|
taxableBase: order.taxableBase,
|
||||||
nickname: order.address.nickname,
|
nickname: order.address.nickname,
|
||||||
agency: order.agencyMode.description,
|
agency: order.agencyMode.description,
|
||||||
}))
|
}))
|
||||||
|
|
||||||
console.log('salixOrdersMapped', salixOrdersMapped);
|
|
||||||
|
|
||||||
orders.value = salixOrdersMapped;
|
orders.value = salixOrdersMapped;
|
||||||
|
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
|
@ -100,9 +108,16 @@ const loadOrder = orderId => {
|
||||||
router.push({ name: 'catalog' });
|
router.push({ name: 'catalog' });
|
||||||
};
|
};
|
||||||
|
|
||||||
onMounted(async () => {
|
watch(
|
||||||
getOrders();
|
() => userStore?.user?.id,
|
||||||
});
|
async userId => {
|
||||||
|
if (userId) {
|
||||||
|
getOrders();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{ immediate: true }
|
||||||
|
);
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
|
Loading…
Reference in New Issue