import { authHeader } from './auth'; import { wrapRequest, meWrapRequest } from './nav'; const vueAppMagenotApiUrl = import.meta.env.VITE_APP_MAGENTO_API_URL; //const vueAppCCUrl = import.meta.env.VITE_APP_CC_URL; const retailorId = import.meta.env.VITE_APP_RETAILOR_ID; const vueAppNodeslsApiUrl = import.meta.env.VITE_APP_NODESLS_API_URL; const assetNodeslsUrl = import.meta.env.VITE_APP_ASSETS_NODESLS_URL; // export const doValidateAddress = wrapRequest((address) => { // const requestOptions = { // method: 'GET', // }; // return fetch("https://maps.googleapis.com/maps/api/geocode/json?address=" + address + "&key=AIzaSyDmHp0PPuKHD1KGHCDmLq1qQKr_03XKEHo", requestOptions); // }); /*eslint-disable*/ export const doValidateAddress = wrapRequest((address) => { const requestOptions = { method: 'POST', headers: { 'Content-type': 'application/json', ...authHeader() }, body: JSON.stringify({ "address": { "countryId": address.countryId, "regionId": address.regionId, "region": address.region ? address.region.region : "", "street": [address.streetNoOne, address.streetNoTwo], "company": address.company ? address.company : "", "telephone": address.telephone, "postcode": address.postcode, "city": address.city, "firstname": address.firstname, "lastname": address.lastname, } }) }; return fetch(`${vueAppMagenotApiUrl}/rest/crn_retailer/V1/carts/mine/validate-address`, requestOptions); }); export const doValidateAddressCheckout = wrapRequest((address, stateName) => { const requestOptions = { method: 'POST', headers: { 'Content-type': 'application/json' }, body: JSON.stringify({ "address": { "countryId": address.countryId, "regionId": address.regionId, "region": stateName, "street": [address.streetNoOne, address.streetNoTwo], "telephone": address.telephone, "postcode": address.postcode, "city": address.city, "firstname": address.firstname, "lastname": address.lastname, } }) }; return fetch(`${vueAppMagenotApiUrl}/rest/crn_retailer/V1/shipping-information/validate-address`, requestOptions); }); export const doFetchStates = wrapRequest(() => { const requestOptions = { method: 'GET', headers: { 'Content-type': 'application/json' } }; return fetch(`${vueAppMagenotApiUrl}/rest/crn_retailer/V1/directory/countries/US`, requestOptions) }); export const doFetchCountries = wrapRequest(() => { const requestOptions = { method: 'GET', headers: { 'Content-type': 'application/json' } }; return fetch(`${vueAppMagenotApiUrl}/rest/crn_retailer/V1/directory/countries`, requestOptions) }); export const doFetchBasicInfo = meWrapRequest(() => { const requestOptions = { method: 'GET', headers: { 'Content-type': 'application/json', ...authHeader() }, }; return fetch(`${vueAppMagenotApiUrl}/rest/crn_retailer/V1/customers/me`, requestOptions) }); /* export const doFetchChangePassword = wrapRequest((token) => { const requestOptions = { method: 'PUT', headers: { 'Content-type': 'application/json' , 'Authorization' : `Bearer ${token}`} }; return fetch(`https://magento2.test/rest/crn_retailer/V1/customers/retailer/password`, requestOptions) });*/ export const doFetchChangePassword = async (currentPassword, newPassword) => { /* eslint-disable no-alert, no-console , */ console.log("currentPassword: ", currentPassword) console.log("newPassword : ", newPassword) return false; }; export const doUpdateAddress = meWrapRequest((one, address) => { const requestOptions = { method: 'PUT', headers: { 'Content-type': 'application/json', ...authHeader() }, body: JSON.stringify({ "customer": { "firstname": one.firstname, "lastname": one.lastname, "email": one.email, "website_id": one.websiteId, "addresses": [{ "region_id": address.regionId, "country_id": address.countryId, "street": [ address.streetNoOne, address.streetNoTwo ], "postcode": address.postcode, "city": address.city, "telephone": address.telephone, "firstname": address.firstname, "lastname": address.lastname }], "default_shipping": one.defaultShipping, "default_billing": one.defaultBilling } }) }; return fetch(`${vueAppMagenotApiUrl}/rest/crn_retailer/V1/customers/me`, requestOptions) }); export const doUpdateUserAddress = meWrapRequest((one, addresses,customerNumber) => { const requestOptions = { method: 'PUT', headers: { 'Content-type': 'application/json', ...authHeader() }, body: JSON.stringify({ "customer": { "firstname": one.firstname, "lastname": one.lastname, "email": one.email, "website_id": one.websiteId, "addresses": addresses, "default_shipping": one.defaultShipping, "default_billing": one.defaultBilling, "custom_attributes": [ { "attribute_code": "customer_number", "value": customerNumber }] } }) }; return fetch(`${vueAppMagenotApiUrl}/rest/crn_retailer/V1/customers/me`, requestOptions) }); export const doUpdateSubscription = meWrapRequest((one) => { const requestOptions = { method: 'PUT', headers: { 'Content-type': 'application/json', ...authHeader() }, body: JSON.stringify({ "customer": { "firstname": one.firstname, "lastname": one.lastname, "email": one.email, "website_id": one.websiteId, "extension_attributes": { "is_subscribed": one.extensionAttributes.isSubscribed } } }) }; return fetch(`${vueAppMagenotApiUrl}/rest/crn_retailer/customers/retailer`, requestOptions) }); export const doChangeBasicInfo = meWrapRequest((one,customerNumber) => { const requestOptions = { method: 'PUT', headers: { 'Content-type': 'application/json', ...authHeader() }, body: JSON.stringify({ "customer": { "firstname": one.firstname, "lastname": one.lastname, "email": one.email, "website_id": one.websiteId, "custom_attributes": [ { "attribute_code": "customer_number", "value": customerNumber }] } }) }; return fetch(`${vueAppMagenotApiUrl}/rest/crn_retailer/V1/customers/me`, requestOptions) }); export const doChangePassword = meWrapRequest((currentPassword, newPassword) => { const requestOptions = { method: 'PUT', headers: { 'Content-type': 'application/json', ...authHeader() }, body: JSON.stringify({ "currentPassword": currentPassword, "newPassword": newPassword }) }; return fetch(`${vueAppMagenotApiUrl}/rest/crn_retailer/V1/customers/me/password`, requestOptions) }); export const doFetchEstimatedShippingMethods = wrapRequest((one, address) => { let streetAddress = []; let streetArray = []; if (address.streetNoTwo == " " || address.streetNoTwo == undefined) { streetAddress[0] = address.streetNoOne; streetArray = streetAddress.filter(v => v != ''); } else { streetAddress[0] = address.streetNoOne streetAddress[1] = address.streetNoTwo; streetArray = streetAddress.filter(v => v != ''); } const requestOptions = { method: 'POST', headers: { 'Content-type': 'application/json', ...authHeader() }, body: JSON.stringify({ /*"address": { "region_id": regionId, "country_id": countryId }*/ "address": { "region": address.region.region, "region_id": address.regionId, "region_code": address.regionCode, "country_id": address.countryId, "street": streetArray, "postcode": address.postcode, "city": address.city, "firstname": address.firstname, "lastname": address.lastname, "customer_id": one.id, "email": one.email, "telephone": address.telephone, "same_as_billing": 1 } }), }; return fetch(`${vueAppMagenotApiUrl}/rest/crn_retailer/V1/carts/mine/estimate-shipping-methods`, requestOptions) }); export const doShippingInformation = wrapRequest((one, address, estimated, suggestedAddress) => { let streetAddress = []; let streetArray = []; if (address.streetNoTwo == " " || address.streetNoTwo == undefined) { streetAddress[0] = suggestedAddress.streetNoOne ? suggestedAddress.streetNoOne : address.streetNoOne; streetArray = streetAddress.filter(v => v != ''); } else { streetAddress[0] = suggestedAddress.streetNoOne ? suggestedAddress.streetNoOne : address.streetNoOne streetAddress[1] = suggestedAddress.streetNoTwo ? suggestedAddress.streetNoTwo : address.streetNoTwo; streetArray = streetAddress.filter(v => v != ''); } const requestOptions = { method: 'POST', headers: { 'Content-type': 'application/json', ...authHeader() }, body: JSON.stringify({ "addressInformation": { "shipping_address": { "region_id": suggestedAddress.region_id ? suggestedAddress.region_id : address.regionId, "country_id": suggestedAddress.country_id ? suggestedAddress.country_id : address.countryId, "street": streetArray, "postcode": suggestedAddress.postcode ? suggestedAddress.postcode : address.postcode, "city": suggestedAddress.city ? suggestedAddress.city : address.city, "firstname": address.firstname, "lastname": address.lastname, "customer_id": one.id, "email": one.email, "telephone": address.telephone }, "shipping_carrier_code": estimated.carrierCode, "shipping_method_code": estimated.methodCode } }) }; return fetch(`${vueAppMagenotApiUrl}/rest/crn_retailer/V1/carts/mine/shipping-information`, requestOptions) }); export const doDeleteAddress = wrapRequest((addressId) => { const requestOptions = { method: 'DELETE', headers: { 'Content-type': 'application/json', 'Access-Control-Allow-Origin': '*', ...authHeader() } }; return fetch(`${vueAppMagenotApiUrl}/rest/crn_retailer/addresses/${addressId}`, requestOptions) }); export const doProductsOrder = meWrapRequest((userQuote, paymentMethod, oneAddress) => { const requestOptions = { method: 'POST', headers: { 'Content-type': 'application/json', ...authHeader() }, body: JSON.stringify({ "cartId": userQuote, "billingAddress": oneAddress, "paymentMethod": paymentMethod, "comments": "", }) }; return fetch(`${vueAppMagenotApiUrl}/rest/crn_retailer/V1/carts/mine/payment-information`, requestOptions) }); /*export const doProductsOrderOnCC = meWrapRequest((orderNumber, shippingAddress, webOrderNumber) => { const requestOptions = { method: 'POST', headers: { 'Content-Type':'text/xml', }, }; let address2 = shippingAddress.street[1]? '&ShipToAddress2='+shippingAddress.street[1] : ''; return fetch(`${vueAppCCUrl}?Operation=SUBMIT&RetailerID=${retailorId}&OrderNumber=${orderNumber}&ShipToFirstName=${shippingAddress.firstname}&ShipToLastName=${shippingAddress.lastname}&ShipToAddress1=${shippingAddress.street[0]}${address2}&ShipToCity=${shippingAddress.city}&ShipToState=${shippingAddress.regionCode}&ShipToZip=${shippingAddress.postcode}&ShipToCountry=${shippingAddress.countryId}&ShipToPhone=${shippingAddress.telephone}&ShipToEmail=${shippingAddress.email}&ShippingMethod=usp&WebOrderNumber=${webOrderNumber}`, requestOptions) });*/ export const doProductsOrderOnCC = meWrapRequest((orderNumber, shippingAddress, webOrderNumber, estimatedShipping) => { let address2 = shippingAddress.street[1] ? escape(shippingAddress.street[1]) : undefined; let method = 'bes'; if (estimatedShipping) { method = estimatedShipping.methodCode.substring(0, 3); } const requestOptions = { method: 'POST', headers: { 'Content-type': 'application/json' }, body: JSON.stringify({ "retailorId": retailorId, "orderNumber": orderNumber, "shipToFirstName": escape(shippingAddress.firstname), "shipToLastName": escape(shippingAddress.lastname), "shipToAddress1": escape(shippingAddress.street[0]), "shipToAddress2": address2, "shipToCity": shippingAddress.city, "shipToState": shippingAddress.regionCode, "shipToZip": shippingAddress.postcode, "shipToCountry": shippingAddress.countryId, "shipToPhone": shippingAddress.telephone, "shipToEmail": shippingAddress.email, "shippingMethod": method, "webOrderNumber": webOrderNumber }) }; return fetch(`${vueAppNodeslsApiUrl}/cc-submit-order`, requestOptions) }); /* personalise order export const doProductsOrderOnPersonalize = meWrapRequest((order) => { const requestOptions = { method: 'POST', headers: { 'Content-type': 'application/json', }, body: JSON.stringify({ "order": order }) }; return fetch(`http://order.crane.com/Incoming/input`, requestOptions) });*/ export const doFetchProductPdfs = meWrapRequest((orderNumber, itemId) => { const requestOptions = { method: 'GET' }; return fetch(`${assetNodeslsUrl}/order-builder-2?orderId=${orderNumber}&itemId=${itemId}`, requestOptions) });