wholesale-vuex
Version:
Commerce vuex module
149 lines (134 loc) • 6.73 kB
JavaScript
import { auth, nav } from 'oak-vuex'
const { getHubAuthHeader } = auth
const { wrapRequest, wrapRequestWithRange, wrapEmptyRequest } = nav
const hubName = process.env.VUE_APP_RETAINHUB_NAME
const retainWholesaleApiUrl = process.env.VUE_APP_RETAINHUB_WHOLESALE_API_URL
// const doFetchList = wrapRequestWithRange(({ soNumberLike,filterByStatus,filterBySeason, filterByDistributor, sortByDate, appId, limit, offset, providerBusinessEntityId }) => {
// const requestOptions = {
// method: 'GET',
// headers: { 'Content-type': 'application/json', 'Prefer': 'count=exact', ...getHubAuthHeader(hubName) },
// };
// const params = { app_id:`eq.${appId}`, limit: limit || 50, offset: offset || 0}
// if (filterBySeason) params['metadata->>ashta_season'] = `ilike.*${filterBySeason}*`
// if (filterByDistributor) params['metadata->>distributor_name'] = `ilike.*${filterByDistributor}*`
// //if (emailLike) params['email'] = `ilike.*${emailLike}*`
// if (filterByStatus) params['status'] = `eq.${filterByStatus}`
// if (soNumberLike) params['so_number'] = `ilike.*${soNumberLike}*`
// if (sortByDate) params['order'] = `date.desc`
// if(providerBusinessEntityId) params['provider_business_entity_id'] = `eq.${providerBusinessEntityId}`
// const qs = Object.keys(params).map(key => key + '=' + params[key]).join('&');
// return fetch(`${retainWholesaleApiUrl}/wholesale_order?${qs}`, requestOptions);
// })
const doPostOne = wrapRequest((orderDetails) => {
if (orderDetails.billing_address && orderDetails.billing_address.country_iso_3) {
let iso3 = orderDetails.billing_address.country_iso_3
delete orderDetails.billing_address.country_iso_3
orderDetails.billing_address.country_iso3 = iso3
}
if (orderDetails.shipping_address && orderDetails.shipping_address.country_iso_3) {
let iso3 = orderDetails.shipping_address.country_iso_3
delete orderDetails.shipping_address.country_iso_3
orderDetails.shipping_address.country_iso3 = iso3
}
const requestOptions = {
method: 'POST',
headers: {
'Content-Type': 'application/json', 'Accept': 'application/vnd.pgrst.object+json',
'Prefer': 'return=representation', ...getHubAuthHeader(hubName)
},
body: JSON.stringify(orderDetails)
};
return fetch(`${retainWholesaleApiUrl}/commercial_invoice`, requestOptions)
})
const doPatchOne = wrapRequest((orderDetails) => {
if (orderDetails.billing_address && orderDetails.billing_address.country_iso_3) {
let iso3 = orderDetails.billing_address.country_iso_3
delete orderDetails.billing_address.country_iso_3
orderDetails.billing_address.country_iso3 = iso3
}
if (orderDetails.shipping_address && orderDetails.shipping_address.country_iso_3) {
let iso3 = orderDetails.shipping_address.country_iso_3
delete orderDetails.shipping_address.country_iso_3
orderDetails.shipping_address.country_iso3 = iso3
}
const requestOptions = {
method: 'PATCH',
headers: {
'Content-Type': 'application/json', 'Accept': 'application/vnd.pgrst.object+json',
'Prefer': 'return=representation', ...getHubAuthHeader(hubName)
},
body: JSON.stringify(orderDetails)
};
return fetch(`${retainWholesaleApiUrl}/commercial_invoice?id=eq.${orderDetails.id}`, requestOptions)
})
const doFetchOne = wrapRequest(({ commercialInvoiceId }) => {
const requestOptions = {
method: 'GET',
headers: { 'Content-type': 'application/json', 'Accept': 'application/vnd.pgrst.object+json', ...getHubAuthHeader(hubName) },
};
return fetch(`${retainWholesaleApiUrl}/commercial_invoice?id=eq.${commercialInvoiceId}&select=*,provider_business_entity(name),purchaser_business_entity(name)`, requestOptions);
})
const doDeleteSelected = wrapEmptyRequest(({ commercialInvoiceId }) => {
const requestOptions = {
method: 'DELETE',
headers: {
'Content-Type': 'application/json', ...getHubAuthHeader(hubName)
},
};
return fetch(`${retainWholesaleApiUrl}/commercial_invoice?id=in.(${commercialInvoiceId})`, requestOptions)
})
const doPostInvoiceListItems = wrapRequest((orderItems) => {
for (let i = 0; i < orderItems.length; i++) {
if (orderItems[i].variants && orderItems[i].variants.length) {
for (let j = 0; j < orderItems[i].variants.length; j++) {
if (orderItems[i].variants[j].country_iso_3) {
let iso3 = orderItems[i].variants[j].country_iso_3
delete orderItems[i].variants[j].country_iso_3
orderItems[i].variants[j].country_iso3 = iso3
}
}
}
}
const requestOptions = {
method: 'POST',
//'Accept': 'application/vnd.pgrst.object+json',
headers: {
'Content-Type': 'application/json',
'Prefer': ['resolution=merge-duplicates', 'return=representation'], ...getHubAuthHeader(hubName)
},
body: JSON.stringify(orderItems)
};
return fetch(`${retainWholesaleApiUrl}/commercial_invoice_item`, requestOptions)
})
const doFetchInvoiceItemsList = wrapRequest(({ appId, commercialInvoiceId }) => {
const requestOptions = {
method: 'GET',
headers: { 'Content-type': 'application/json', ...getHubAuthHeader(hubName) },
};
const params = { commercial_invoice_id: `eq.${commercialInvoiceId}`, app_id: `eq.${appId}` }
const qs = Object.keys(params).map(key => key + '=' + params[key]).join('&');
return fetch(`${retainWholesaleApiUrl}/commercial_invoice_item?${qs}&select=*,provider_business_entity(name, addresses),purchaser_business_entity(name) `, requestOptions);
})
const doDeleteSelectedInvoice = wrapEmptyRequest(({ invoiceId }) => {
const requestOptions = {
method: 'DELETE',
headers: {
'Content-Type': 'application/json', ...getHubAuthHeader(hubName)
},
};
return fetch(`${retainWholesaleApiUrl}/commercial_invoice?id=in.(${invoiceId})`, requestOptions)
})
const doDeleteSelectedInvoiceItems = wrapEmptyRequest(({ invoiceId }) => {
const requestOptions = {
method: 'DELETE',
headers: {
'Content-Type': 'application/json', ...getHubAuthHeader(hubName)
},
};
return fetch(`${retainWholesaleApiUrl}/commercial_invoice_item?id=in.(${invoiceId})`, requestOptions)
})
export default {
doFetchOne,
doPostOne, doPatchOne, doDeleteSelected,
doFetchInvoiceItemsList, doPostInvoiceListItems, doDeleteSelectedInvoiceItems, doDeleteSelectedInvoice
}