UNPKG

wholesale-vuex

Version:
132 lines (120 loc) 5.32 kB
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 excelSlsApiUrl = process.env.VUE_APP_EXCEL_SLS_API_URL const doFetchList = wrapRequestWithRange(( {nameLike, wholesaleOrderId, appId, limit, offset ,date,styleRef}) => { 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 (nameLike) params['name'] = `ilike.*${nameLike}*` if (wholesaleOrderId) params['wholesale_order_id'] = `eq.${wholesaleOrderId}` if (styleRef) params['variants_ref_code'] = `eq.${styleRef}` if (date){ params['shipment_start_date'] = `eq.${date[0]}`; params['shipment_cancel_date'] = `eq.${date[1]}` } const qs = Object.keys(params).map(key => key + '=' + params[key]).join('&'); return fetch(`${retainWholesaleApiUrl}/wholesale_order_item?${qs}`, requestOptions); //&select=*,brand_product(name),brand_product_id(name,price_wholesale) }) const doPostOne = wrapRequest((orderItem) => { const requestOptions = { method: 'POST', headers: { 'Content-Type': 'application/json', 'Accept': 'application/vnd.pgrst.object+json', 'Prefer': 'return=representation', ...getHubAuthHeader(hubName) }, body: JSON.stringify(orderItem) } return fetch(`${retainWholesaleApiUrl}/wholesale_order_item`, requestOptions) }) const doFetchItemsByIds = wrapRequest(({ids}) => { const requestOptions = { method: 'GET', headers: { 'Content-Type': 'application/json', ...getHubAuthHeader(hubName) } }; return fetch(`${retainWholesaleApiUrl}/wholesale_order_item?wholesale_order_id=in.(${ids})&select=*,brand!brand_id(name)`, requestOptions) }) const doPatchOne = wrapRequest((orderItem) => { const requestOptions = { method: 'PATCH', headers: { 'Content-Type': 'application/json', 'Accept': 'application/vnd.pgrst.object+json', 'Prefer': 'return=representation', ...getHubAuthHeader(hubName) }, body: JSON.stringify(orderItem) } return fetch(`${retainWholesaleApiUrl}/wholesale_order_item?id=eq.${orderItem.id}`, requestOptions) }) const doFetchOne = wrapRequest(({ wholesaleOrderItemId,appId }) => { const requestOptions = { method: 'GET', headers: { 'Content-type': 'application/json', 'Accept': 'application/vnd.pgrst.object+json', ...getHubAuthHeader(hubName) } } return fetch(`${retainWholesaleApiUrl}/wholesale_order_item?id=eq.${wholesaleOrderItemId}&app_id=eq.${appId}`, requestOptions) }) const doDeleteSelected = wrapEmptyRequest(({wholesaleOrderItemId}) => { const requestOptions = { method: 'DELETE', headers: { 'Content-Type': 'application/json', ...getHubAuthHeader(hubName) }, }; return fetch(`${retainWholesaleApiUrl}/wholesale_order_item?id=in.(${wholesaleOrderItemId})`, requestOptions) }) const doFetchStyleRefItems = wrapRequestWithRange(( {nameLike, wholesaleOrderId, appId, styleRefItems }) => { const requestOptions = { method: 'GET', headers: { 'Content-type': 'application/json', ...getHubAuthHeader(hubName) } } const params = { app_id:`eq.${appId}` } if (nameLike) params['name'] = `ilike.*${nameLike}*` if (wholesaleOrderId) params['wholesale_order_id'] = `eq.${wholesaleOrderId}` if (styleRefItems) params['variants_ref_code'] = `eq.${styleRefItems}` const qs = Object.keys(params).map(key => key + '=' + params[key]).join('&'); return fetch(`${retainWholesaleApiUrl}/wholesale_order_item?${qs}`, requestOptions); }) const doExportPurchaseOrderItemsInExcel = async ({ salesOrderId, businessEntityId, preTemplateId }) => { const requestOptions = { method: 'POST', headers: { //'Content-Type': 'application/json', 'Accept': 'text/csv', ...getHubAuthHeader(hubName) }, body: JSON.stringify({ sales_order_id: salesOrderId, business_entity_id: businessEntityId, pre_template_id :preTemplateId }) }; let response = await fetch(`${excelSlsApiUrl}/export-sales-order-items-to-xlsx`, requestOptions) try{ const contentType = response.headers.get("content-type"); if (contentType && contentType.indexOf("application/json") !== -1) { return response.json().then(async data => { console.log('data', data) if(data.error){ return { errorMessage: data.message } } else { let blob = await data.blob() return { blob, errorMessage: null } } }); } else { let blob = await response.blob() return { blob, errorMessage: null } } } catch(error){ return await handleError(error) } } export default { doFetchOne, doFetchList, doPostOne, doPatchOne, doDeleteSelected,doFetchItemsByIds,doFetchStyleRefItems, doExportPurchaseOrderItemsInExcel }