DigitalConsumer.ISS/src/helpers/querystring-helper.js
2024-10-16 13:37:04 -05:00

71 lines
2.8 KiB
JavaScript

import { getLineItemsFlattened } from '@/helpers/line-items-helper';
export default function getQueryStringParameter(key) {
const queryString = window.location.search;
const urlParams = new URLSearchParams(queryString);
const lowerCaseParams = new URLSearchParams();
urlParams.forEach((value, name) => {
lowerCaseParams.append(name.toLowerCase(), value);
});
return lowerCaseParams.get(key.toLowerCase());
}
export function buildQueryStringParameterFromArrayOfComplexObjects(arrayOfObjects, parameterName) {
let queryStringParameter = '';
for (let i = 0; i < arrayOfObjects.length; i++) {
for (const [key, value] of Object.entries(arrayOfObjects[i])) {
queryStringParameter += `${parameterName}[${i}].${key}=${value}&`;
}
}
// Remove trailing &
return queryStringParameter.slice(0, -1);
}
export function getLineItemQueryString(lineItems, parameterName) {
const queryString = getLineItemsFlattened(lineItems).map((lineItem, index) =>
`${parameterName}[${index}].partNumber=${lineItem.partNumber}`).join('&');
return queryString.length !== 0 ? `&${queryString}` : '';
}
export function getPartNumbersListForQueryString(lineItems, parameterName) {
const queryString = getLineItemsFlattened(lineItems).map((lineItem) =>
`${parameterName}=${lineItem.partNumber}`).join('&');
return queryString.length !== 0 ? `&${queryString}` : '';
}
export function getTaxLineItemQueryString(lineItems, parameterName) {
const queryString = getLineItemsFlattened(lineItems).map((lineItem, index) =>
`${parameterName}[${index}].partNumber=${lineItem.partNumber}`
+ `&${parameterName}[${index}].laborAmount=${lineItem.laborAmount}`
+ `&${parameterName}[${index}].sellingPrice=${lineItem.sellingPrice}`
+ `&${parameterName}[${index}].kitPrice=${lineItem.kitPrice}`).join('&');
return queryString.length !== 0 ? `&${queryString}` : '';
}
export function buildURLSearchParams(data) {
const params = new URLSearchParams();
Object.entries(data).forEach(([key, value]) => {
if (value == null) {
return;
}
if (Array.isArray(value)) {
value.forEach((arrayValue, index) => {
if (typeof value === 'object') {
Object.entries(arrayValue).forEach(([objectKey, objectValue]) => {
if (objectValue != null) {
params.append(`${key}[${index}].${objectKey}`, `${objectValue}`);
}
});
} else {
params.append(`${key}[${index}]`, `${value}`);
}
});
} else {
params.append(key, `${value}`);
}
});
return params;
}