{"version":3,"sources":["images/EnvironmentalLabsLogoHorizontal.png","services/networkService.js","services/userService.js","components/Login.jsx","components/common/Filter.jsx","components/common/CommonLoader.jsx","components/common/Table.jsx","services/stripeService.js","components/invoice/Payment.jsx","components/dashboard/DashboardTable.jsx","components/common/DownloadAnchor.jsx","services/reportService.js","components/dashboard/orderColumns.js","services/dashboardService.js","services/invoiceService.js","services/orderService.js","services/bottleOrderService.js","components/dashboard/ClientDashboard.jsx","components/dashboard/invoiceColumns.js","components/dashboard/bottleOrderColumns.js","components/Header.jsx","components/order/Sample.jsx","components/order/OrderProgressbar.jsx","components/common/Dropdown.jsx","components/order/Order.jsx","components/bottleorders/OrderedBottle.jsx","components/bottleorders/bottleorder.jsx","components/invoice/Transaction.jsx","components/invoice/InvoiceProgressbar.jsx","components/invoice/Invoice.jsx","components/dashboard/MultiClientDashboard.jsx","usGaTracker.js","services/clientService.js","models/ContactTypes.js","components/client/ShippingTab.jsx","components/client/BillingTab.jsx","components/client/ReportTab.jsx","components/client/Client.jsx","App.js","services/useToken.js","index.js"],"names":["getToken","tokenString","localStorage","getItem","userToken","JSON","parse","window","location","path","undefined","pathname","token","getJson","a","myHeaders","Headers","append","fetch","method","headers","response","ok","json","getText","text","getBlob","blob","post","dataObject","data","Accept","body","stringify","put","errorResponse","Error","status","message","Authenticate","username","password","ResetPasswordRequest","accountOrEmail","SignUp","accountNumber","ResetPasswordResponse","SetPassword","Login","setToken","useState","setUsername","setPassword","loading","setLoading","isResetPassword","setIsResetPassword","error","setError","signUp","setSignUp","createPassword","setCreatePassword","account","setAccount","showPasswords","setShowPasswords","showPasswordResetScreen","setShowPasswordResetScreen","tempToken","setTempToken","resetEmail","setResetEmail","resetLoading","setResetLoading","newPassword","setNewPassword","confirmPassword","setConfirmPassword","setResponseError","setSubmitting","useEffect","includes","parts","split","tokenIndex","indexOf","length","handleLogin","e","preventDefault","ReactGA","event","category","action","LogRocket","identify","name","handleSignUp","handleSetPassword","className","handleResetPasswordResponse","console","log","alert","labOrderViewWindow","open","onSubmit","src","logo","alt","htmlFor","style","display","type","placeholder","autoComplete","value","onChange","target","required","icon","faLock","zIndex","position","marginTop","marginLeft","onClick","faEye","float","renderResetPasswordResponse","handleResetPassword","faEnvelope","reload","renderResetPassword","cclassName","faFileInvoice","clear","handleResetPasswordClicked","initialize","Filter","searchFunction","color","searchInput","setsearchInput","disabled","faSearch","CommonLoader","faSpinner","height","width","Table","columns","totalPage","currentpage","setPage","setSortBy","useTable","useControlledState","state","React","useMemo","pageIndex","initialState","manualPagination","pageCount","manualSortBy","useSortBy","usePagination","getTableProps","getTableBodyProps","headerGroups","prepareRow","page","pageOptions","sortBy","marginBottom","map","headerGroup","getHeaderGroupProps","column","getHeaderProps","getSortByToggleProps","render","isSorted","isSortedDesc","faArrowDown","faArrowUp","row","i","getRowProps","cells","cell","getCellProps","s","getStripeApiKey","createStripeSession","invoices","CheckoutButton","isLoading","setIsLoading","handleClick","key","loadStripe","stripe","Array","isArray","session","redirectToCheckout","sessionId","result","id","role","title","faCreditCard","marginRight","DashboardTable","getData","isFromBottleOrder","setData","pages","setPages","filter","setFilter","sort","setSort","fromDate","setFromDate","toDate","setToDate","onSearch","onSort","initialFromDateTime","initialToDateTime","now","Date","tenDaysAgo","pg","sortOrder","so","desc","setDate","getDate","toISOString","slice","GetData","sortId","sortDesc","sortedData","b","aValue","bValue","padding","alignItems","gap","class","DownloadAnchor","func","cssClass","hoverText","getCoc","recordId","saveAs","getLabReport","orderNumber","getInvoiceReport","invoiceNumber","OrderColumns","Header","accessor","Cell","to","values","d","sampleDate","toLocaleDateString","textAlign","project","toLowerCase","trim","disableSortBy","index","hasReport","faFilePdf","cocs","faLink","getDashboard","getMultiClientDashboard","email","getInvoice","getInvoices","getOrders","getOrder","getBottleOrderDashboard","getBottleOrder","ClientDashboard","openOrders","openInvoices","outstandingBalance","totalOrders","dashboard","setDashboard","selectedInvoices","setSelectedInvoices","GetDashboardInfo","handleMultiSelect","item","find","invoiceColumns","balance","paddingLeft","sendDate","amount","GetInvoiceColumns","orderColumns","bottleOrderColumns","bottleOrderNumber","description","dueDate","toFixed","logout","isMultiClient","clearClient","isDashboard","setIsDashboard","useLocation","toggleViewOrDashboard","aria-label","href","maxHeight","faUser","size","Sample","input","sample","LabId","SampleDescription","DateCollected","CollectedBy","OrderProgressBar","percentComplete","percent","filledBackground","transition","accomplished","faCheckCircle","background","minWidth","Dropdown","visible","children","dropdown","setDropdown","node","useRef","current","contains","document","addEventListener","removeEventListener","ref","aria-haspopup","aria-controls","faAngleDown","Component","ToDate","date","output","getYear","Order","useParams","setPercentComplete","order","setOrder","hasDownloads","Status","Cocs","setTimeout","GetOrder","top","cascade","delay","faTimes","paddingRight","ProjectCategory","PwsNumber","InvoiceNumber","DateReceived","DateReported","paddingTop","Samples","OrderedBottle","bottle","Parameter","SampleFrequency","MonitorStart","MonitorEnd","BottleOrder","GetBottleOrder","Description","SampleMatrix","OrderDate","DueDate","OrderedBottles","Transaction","trans","Quantity","UnitPrice","ListPrice","InvoiceProgressBar","dateSent","Invoice","invoice","setInvoice","successModalVisible","setSuccessModalVisible","zoomAnimationVisible","setZoomAnimationVisible","query","URLSearchParams","search","get","DateSent","PaymentPending","Deposit","InvoiceAmount","RenderBody","paddingBottom","PoNumber","BillingName","BillingAddress","BillingCity","BillingState","BillingZip","OrderNumber","readOnly","cols","rows","ReportNotes","Transactions","t","RecordId","options","loop","autoplay","animationData","SuccessLottie","MultiClientDashboard","history","useHistory","items","dashboardData","setDashboardData","nameA","toUpperCase","nameB","loadDashboard","acc","push","useGaTracker","initialized","setInitialized","pageview","getClientDetails","updateClientDetails","clientDetails","ContactTypes","Work","Main","Office","Mobile","ShippingTab","navigateToDashboard","formData","setFormData","handleChange","handleSubmit","NotificationManager","success","shippingName","shippingAddress","shipAddress2","shippingState","shippingCity","shippingZip","shippingPhone1Type","Object","entries","shippingPhone1","shippingContact","shippingPhone2Type","shippingPhone2","shippingEmail","BillingTab","billingName","billingAddress","billingAddress2","billingCity","billingState","billingZip","billingPhone1Type","billingPhone1","billingContact","billingPhone2Type","billingPhone2","billingEmail","checked","shouldReceiveCoC","ReportTab","reportingName","reportAddress","reportAddress2","reportCity","reportState","reportZip","reportingPhone1Type","reportPhone1","reportContact","reportingPhone2Type","reportPhone2","reportEmail","Client","activeTab","setActiveTab","setClientDetails","tab","handleTabClick","init","selectedClient","setSelectedClient","accountNumbers","leaveTimeout","origin","exact","from","component","App","setItem","useToken","valueOf","tokeExp","expiration","ReactDOM","StrictMode","minHeight","getElementById"],"mappings":"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","file":"static/js/main.0d56e78c.chunk.js","sourcesContent":["export default __webpack_public_path__ + \"static/media/EnvironmentalLabsLogoHorizontal.c6a44bb3.png\";","/**\r\n * Get the JWT token from localstorage. If there is no token redirect to login\r\n * @return {[string]} JWT Token string\r\n */\r\nfunction getToken() {\r\n\tconst tokenString = localStorage.getItem(\"token\");\r\n\tconst userToken = JSON.parse(tokenString);\r\n\tif (\r\n\t\tuserToken === null &&\r\n\t\twindow.location.path !== \"/\" &&\r\n\t\twindow.location.path !== undefined\r\n\t) {\r\n\t\twindow.location.pathname = \"/\";\r\n\t}\r\n\treturn userToken?.token;\r\n}\r\n\r\nfunction getBaseUrl() {\r\n\tlet baseUrl = \"https://rateus.envirolabsinc.com/vlpclient\";\r\n\tif (process.env.NODE_ENV !== \"production\") {\r\n\t baseUrl = \"https://localhost:44349/vlpclient\";\r\n\t}\r\n\treturn baseUrl;\r\n}\r\n\r\nexport async function getJson(path) {\r\n\tconst myHeaders = new Headers();\r\n\tmyHeaders.append(\"Authorization\", `Bearer ${getToken()}`);\r\n\r\n\tlet response = await fetch(`${getBaseUrl()}${path}`, {\r\n\t\tmethod: \"GET\",\r\n\t\theaders: myHeaders,\r\n\t});\r\n\r\n\tif (response.ok) {\r\n\t\treturn response.json();\r\n\t}\r\n\r\n\tthrow response;\r\n}\r\n\r\nexport async function getText(path) {\r\n\tconst myHeaders = new Headers();\r\n\tmyHeaders.append(\"Authorization\", `Bearer ${getToken()}`);\r\n\r\n\tlet response = await fetch(`${getBaseUrl()}${path}`, {\r\n\t\tmethod: \"GET\",\r\n\t\theaders: myHeaders,\r\n\t});\r\n\r\n\tif (response.ok) {\r\n\t\treturn response.text();\r\n\t}\r\n\r\n\tthrow response;\r\n}\r\n\r\nexport async function getBlob(path) {\r\n\tconst myHeaders = new Headers();\r\n\tmyHeaders.append(\"Authorization\", `Bearer ${getToken()}`);\r\n\r\n\tlet response = await fetch(`${getBaseUrl()}${path}`, {\r\n\t\tmethod: \"GET\",\r\n\t\theaders: myHeaders,\r\n\t});\r\n\r\n\tif (response.ok) {\r\n\t\treturn response.blob();\r\n\t}\r\n\r\n\tthrow response;\r\n}\r\n\r\nexport async function post(path, dataObject) {\r\n\tconst headers = new Headers();\r\n\theaders.append(\"Authorization\", `Bearer ${getToken()}`);\r\n\r\n\tlet data = {\r\n\t\tmethod: \"POST\",\r\n\t\theaders: new Headers({\r\n\t\t\t\"Content-Type\": \"application/json\",\r\n\t\t\tAccept: \"application/json\",\r\n\t\t}),\r\n\r\n\t\tbody: JSON.stringify(dataObject),\r\n\t};\r\n\r\n\tlet response = await fetch(`${getBaseUrl()}${path}`, data);\r\n\r\n\tif (response.ok) {\r\n\t\treturn response.json();\r\n\t}\r\n\r\n\tthrow await response.json();\r\n}\r\n\r\nexport async function put(path, dataObject) {\r\n\tconst headers = new Headers();\t\r\n \r\n\tlet data = {\r\n\t\tmethod: \"PUT\",\r\n\t\theaders: new Headers({\r\n\t\t\t\"Content-Type\": \"application/json\",\r\n\t\t\t\"Authorization\": `Bearer ${getToken()}`,\r\n\t\t\tAccept: \"application/json\"\r\n\t\t}),\r\n\t\tbody: JSON.stringify(dataObject),\r\n\t};\r\n \r\n\ttry {\t\t\t\t\r\n\t const response = await fetch(`${getBaseUrl()}${path}`, data); \r\n\t if (response.ok) {\r\n\t\treturn response.json();\r\n\t } \r\n\t const errorResponse = await response.json();\r\n\t throw new Error(`Request failed with status ${response.status}: ${errorResponse.message}`);\r\n\t} catch (error) {\r\n\t throw new Error(`Error while updating data: ${error.message}`);\r\n\t}\r\n }\r\n\r\n","import { post } from \"./networkService\";\r\n\r\nfunction getBaseUrl() {\r\n let baseUrl;\r\n if (process.env.NODE_ENV !== \"production\") {\r\n baseUrl = \"https://localhost:44349/vlpclient\";\r\n } else {\r\n baseUrl = \"https://rateus.envirolabsinc.com/vlpclient\";\r\n }\r\n\r\n return baseUrl;\r\n}\r\n\r\nexport async function Authenticate(username, password) {\r\n return post(\"/Authentication/login\", { username, password });\r\n}\r\n\r\nexport async function ResetPasswordRequest(accountOrEmail) {\r\n return post(\"/Authentication/reset-password-request\", accountOrEmail);\r\n}\r\nexport async function SignUp(username, accountNumber) {\r\n return post(\"/authentication\", { username, accountNumber });\r\n}\r\n//reset-password-response\r\nexport async function ResetPasswordResponse(token, password) {\r\n return post(\"/Authentication/reset-password-response\", { token, password });\r\n}\r\n\r\nexport async function SetPassword(username, password, token) {\r\n const headers = new Headers();\r\n headers.append(\"Authorization\", `Bearer ${token}`);\r\n headers.append(\"Content-Type\", \"application/json\");\r\n headers.append(\"Accept\", \"application/json\");\r\n\r\n let data = {\r\n method: \"POST\",\r\n headers: headers,\r\n body: JSON.stringify({ username, password }),\r\n };\r\n\r\n let response = await fetch(\r\n `${getBaseUrl()}/authentication/setpassword`,\r\n data\r\n );\r\n\r\n if (response.ok) {\r\n return response.json();\r\n }\r\n\r\n throw await response.json();\r\n}\r\n","import React, { useState, useEffect } from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport {\r\n faEnvelope,\r\n faLock,\r\n faFileInvoice,\r\n faEye,\r\n} from \"@fortawesome/free-solid-svg-icons\";\r\nimport logo from \"../images/EnvironmentalLabsLogoHorizontal.png\";\r\nimport {\r\n Authenticate,\r\n SignUp,\r\n SetPassword,\r\n ResetPasswordRequest,\r\n ResetPasswordResponse,\r\n} from \"../services/userService\";\r\nimport { faEyeSlash } from \"@fortawesome/free-solid-svg-icons\";\r\nimport ReactGA from \"react-ga\";\r\nimport LogRocket from \"logrocket\";\r\nimport { Link, useNavigate } from \"react-router-dom\";\r\n\r\nReactGA.initialize(\"UA-193251731-1\");\r\n\r\nexport default function Login({ setToken }) {\r\n const [username, setUsername] = useState();\r\n const [password, setPassword] = useState();\r\n const [loading, setLoading] = useState(false);\r\n const [isResetPassword, setIsResetPassword] = useState(false);\r\n const [error, setError] = useState();\r\n const [signUp, setSignUp] = useState(false);\r\n const [createPassword, setCreatePassword] = useState(false);\r\n const [account, setAccount] = useState();\r\n const [showPasswords, setShowPasswords] = useState(false);\r\n const [showPasswordResetScreen, setShowPasswordResetScreen] = useState(false);\r\n const [tempToken, setTempToken] = useState();\r\n const [resetEmail, setResetEmail] = useState(\"\");\r\n const [resetLoading, setResetLoading] = useState(false);\r\n const [newPassword, setNewPassword] = useState(\"\");\r\n const [confirmPassword, setConfirmPassword] = useState(\"\");\r\n const [responseError, setResponseError] = useState(\"\");\r\n const [submitting, setSubmitting] = useState(false);\r\n useEffect(() => {\r\n const path = window.location.pathname;\r\n if (path.includes(\"/reset-password\")) {\r\n setShowPasswordResetScreen(true);\r\n // Extract the token from the URL\r\n const parts = path.split(\"/\");\r\n const tokenIndex = parts.indexOf(\"reset-password\") + 1;\r\n if (tokenIndex < parts.length) {\r\n const token = parts[tokenIndex];\r\n setTempToken(token);\r\n }\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n setPassword(\"\");\r\n }, [signUp]);\r\n\r\n const handleLogin = async (e) => {\r\n e.preventDefault();\r\n\r\n ReactGA.event({\r\n category: \"User\",\r\n action: `Logged in. Account ${username}}`,\r\n });\r\n\r\n setLoading(true);\r\n try {\r\n const body = await Authenticate(username, password);\r\n if (body) {\r\n LogRocket.identify(body.name);\r\n setToken(body);\r\n }\r\n } catch (err) {\r\n if (err) setError(err);\r\n } finally {\r\n setLoading(false);\r\n }\r\n };\r\n\r\n const handleSignUp = async (e) => {\r\n e.preventDefault();\r\n setLoading(true);\r\n try {\r\n const response = await SignUp(username, account);\r\n\r\n if (response) {\r\n setTempToken(response);\r\n setCreatePassword(true);\r\n }\r\n } catch (err) {\r\n } finally {\r\n }\r\n setLoading(false);\r\n };\r\n\r\n const handleSetPassword = async (e) => {\r\n e.preventDefault();\r\n try {\r\n const response = await SetPassword(username, password, tempToken);\r\n\r\n if (response) {\r\n setCreatePassword(false);\r\n setSignUp(false);\r\n setError(\"Password set. Please log in.\");\r\n }\r\n } catch (err) {\r\n } finally {\r\n }\r\n };\r\n const handleResetPasswordClicked = (e) => {\r\n debugger;\r\n e.preventDefault();\r\n localStorage.clear();\r\n setToken(null);\r\n setIsResetPassword(true);\r\n };\r\n const RenderLogin = () => {\r\n return (\r\n <>\r\n
\r\n
\r\n
\r\n
\r\n \"logo\"\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n setUsername(e.target.value)}\r\n required\r\n />\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n setPassword(e.target.value)}\r\n required\r\n />\r\n \r\n \r\n \r\n
\r\n setShowPasswords(!showPasswords)}\r\n >\r\n \r\n \r\n \r\n
\r\n {error ? (\r\n \r\n {error}\r\n \r\n ) : (\r\n \"\"\r\n )}\r\n \r\n Login\r\n \r\n handleResetPasswordClicked(e)\r\n // {\r\n // e.preventDefault();\r\n // setIsResetPassword(true);\r\n // }\r\n }\r\n className=\"button is-rounded has-text-weight-bold\"\r\n style={{ marginLeft: \"10px\" }}\r\n >\r\n Reset Password\r\n \r\n
\r\n
\r\n Have multiple accounts?\r\n {\r\n e.preventDefault();\r\n setSignUp(true);\r\n }}\r\n >\r\n Sign Up Here\r\n \r\n
\r\n \r\n \r\n );\r\n };\r\n\r\n const renderSetPassword = () => {\r\n return (\r\n <>\r\n
\r\n
\r\n \r\n \r\n setPassword(e.target.value)}\r\n required\r\n value={password}\r\n />\r\n \r\n \r\n \r\n
\r\n setShowPasswords(!showPasswords)}\r\n >\r\n \r\n \r\n \r\n
\r\n \r\n Set Password\r\n \r\n
\r\n \r\n \r\n );\r\n };\r\n\r\n const renderSignUp = () => {\r\n return (\r\n <>\r\n
\r\n
\r\n
\r\n
\r\n \"logo\"\r\n
\r\n
\r\n
\r\n {createPassword === true ? (\r\n renderSetPassword()\r\n ) : (\r\n <>\r\n
\r\n
\r\n \r\n
\r\n setUsername(e.target.value)}\r\n required\r\n />\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n setAccount(e.target.value)}\r\n required\r\n />\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n Sign up\r\n \r\n
\r\n
\r\n \r\n )}\r\n
\r\n \r\n );\r\n };\r\n\r\n const renderResetPassword = () => {\r\n const handleResetPassword = async (e) => {\r\n e.preventDefault();\r\n setResetLoading(true);\r\n try {\r\n const body = await ResetPasswordRequest(resetEmail);\r\n setResetLoading(false);\r\n setIsResetPassword(false);\r\n alert(\"Password reset link has been sent to your email.\");\r\n } catch (error) {\r\n console.error(\r\n \"Error occurred while sending password reset link:\",\r\n error\r\n );\r\n }\r\n };\r\n\r\n const handleCancel = () => {\r\n window.location.reload();\r\n };\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n \"logo\"\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n setResetEmail(e.target.value)}\r\n required\r\n />\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n Reset Password\r\n \r\n
\r\n
\r\n \r\n Cancel\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n };\r\n\r\n const renderResetPasswordResponse = () => {\r\n const handleResetPasswordResponse = async (e) => {\r\n e.preventDefault();\r\n if (newPassword !== confirmPassword) {\r\n setError(\"Passwords do not match.\");\r\n return;\r\n }\r\n if (\r\n newPassword.length < 4 ||\r\n confirmPassword.length < 4 ||\r\n newPassword.length > 8 ||\r\n confirmPassword.length > 8\r\n ) {\r\n setError(\"Passwords must be between 4-8 characters long.\");\r\n return;\r\n }\r\n\r\n setSubmitting(true);\r\n setError(\"\");\r\n try {\r\n const response = await ResetPasswordResponse(tempToken, newPassword);\r\n console.log(\"Reset password response:\", response);\r\n alert(\"Password reset successfully.\");\r\n window.labOrderViewWindow = window.open(\"/\");\r\n setNewPassword(\"\");\r\n setConfirmPassword(\"\");\r\n setResponseError(\"\");\r\n } catch (error) {\r\n console.error(\"Error resetting password:\", error);\r\n setResponseError(\"An error occurred while resetting password.\");\r\n } finally {\r\n setSubmitting(false);\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n
\r\n
\r\n
\r\n
\r\n \"logo\"\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n setNewPassword(e.target.value)}\r\n required\r\n />\r\n \r\n \r\n \r\n
\r\n setShowPasswords(!showPasswords)}\r\n >\r\n \r\n \r\n \r\n\r\n
\r\n \r\n \r\n setConfirmPassword(e.target.value)}\r\n required\r\n />\r\n \r\n \r\n \r\n
\r\n setShowPasswords(!showPasswords)}\r\n >\r\n \r\n \r\n \r\n
\r\n {error ? (\r\n \r\n {error}\r\n \r\n ) : (\r\n \"\"\r\n )}\r\n \r\n Update\r\n \r\n
\r\n \r\n \r\n );\r\n };\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {showPasswordResetScreen\r\n ? renderResetPasswordResponse()\r\n : isResetPassword\r\n ? renderResetPassword()\r\n : signUp\r\n ? renderSignUp()\r\n : RenderLogin()}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nLogin.propTypes = {\r\n setToken: PropTypes.func.isRequired,\r\n};\r\n","import React, { Fragment, useEffect, useState } from \"react\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faSearch } from \"@fortawesome/free-solid-svg-icons\";\r\n\r\nexport default function Filter({ searchFunction, loading, color }) {\r\n const [searchInput, setsearchInput] = useState(\"\");\r\n\r\n useEffect(() => {\r\n searchFunction(searchInput);\r\n }, [searchInput, searchFunction]);\r\n\r\n return (\r\n \r\n
\r\n setsearchInput(e.target.value)}\r\n disabled={loading}\r\n />\r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n}\r\n","import React, { Fragment, useEffect, useState } from \"react\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faSpinner, } from \"@fortawesome/free-solid-svg-icons\";\r\n\r\nexport default function CommonLoader({ loading, color }) {\r\n return (\r\n \r\n {loading ? (\r\n // Use our custom loading state to show a loading indicator\r\n \r\n \r\n \r\n ) : (\r\n \"\"\r\n )}\r\n \r\n );\r\n}\r\n","import React, { useEffect } from \"react\";\r\nimport { useTable, useSortBy, usePagination } from \"react-table\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport CommonLoader from './CommonLoader';\r\nimport {\r\n faSpinner,\r\n faArrowUp,\r\n faArrowDown,\r\n} from \"@fortawesome/free-solid-svg-icons\";\r\n\r\nexport default function Table({\r\n columns,\r\n data,\r\n color,\r\n loading,\r\n totalPage,\r\n currentpage,\r\n setPage,\r\n setSortBy,\r\n}) {\r\n const {\r\n getTableProps,\r\n getTableBodyProps,\r\n headerGroups,\r\n prepareRow,\r\n page,\r\n pageOptions,\r\n state: { sortBy },\r\n } = useTable(\r\n {\r\n columns,\r\n data,\r\n useControlledState: (state) => {\r\n return React.useMemo(\r\n () => ({\r\n ...state,\r\n pageIndex: currentpage,\r\n }),\r\n [state]\r\n );\r\n },\r\n initialState: { pageIndex: currentpage }, // Pass our hoisted table state\r\n manualPagination: true, // Tell the usePagination\r\n // hook that we'll handle our own data fetching\r\n // This means we'll also have to provide our own\r\n // pageCount.\r\n pageCount: totalPage,\r\n manualSortBy: true,\r\n },\r\n useSortBy,\r\n usePagination\r\n );\r\n\r\n useEffect(() => {\r\n if (setSortBy) setSortBy(sortBy);\r\n }, [sortBy]);\r\n\r\n return (\r\n <>\r\n \r\n \r\n {headerGroups.map((headerGroup) => (\r\n \r\n {headerGroup.headers.map((column) => (\r\n // Add the sorting props to control sorting. For this example\r\n // we can add them into the header props\r\n \r\n {column.render(\"Header\")}\r\n \r\n {column.isSorted ? (\r\n column.isSortedDesc ? (\r\n \r\n ) : (\r\n \r\n )\r\n ) : (\r\n \"\"\r\n )}\r\n \r\n \r\n ))}\r\n \r\n ))}\r\n \r\n \r\n {page.map((row, i) => {\r\n prepareRow(row);\r\n return (\r\n \r\n {row.cells.map((cell) => {\r\n return (\r\n \r\n {cell.render(\"Cell\")}\r\n \r\n );\r\n })}\r\n \r\n );\r\n })}\r\n \r\n \r\n
\r\n {\r\n setPage(1);\r\n }}\r\n disabled={currentpage === 1 || loading}\r\n >\r\n first\r\n {\" \"}\r\n {\r\n setPage((s) => (s === 0 ? 1 : s - 1));\r\n }}\r\n disabled={currentpage === 1 || loading}\r\n >\r\n prev\r\n {\" \"}\r\n {\r\n setPage((s) => s + 1);\r\n }}\r\n disabled={currentpage === totalPage || loading}\r\n >\r\n next\r\n {\" \"}\r\n {\r\n setPage(totalPage);\r\n }}\r\n disabled={currentpage === totalPage || loading}\r\n >\r\n last\r\n {\" \"}\r\n \r\n Page{\" \"}\r\n \r\n {currentpage} of {pageOptions.length}\r\n {\" \"}\r\n \r\n \r\n
\r\n \r\n );\r\n}\r\n","import { getText, post } from \"./networkService\";\r\n\r\nexport async function getStripeApiKey() {\r\n return getText(\"/checkout/api-key\");\r\n}\r\n\r\nexport async function createStripeSession(invoices) {\r\n return post(`/checkout`, { invoices });\r\n}\r\n","import React, { useState } from \"react\";\r\nimport { loadStripe } from \"@stripe/stripe-js\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faCreditCard } from \"@fortawesome/free-solid-svg-icons\";\r\nimport {getStripeApiKey, createStripeSession} from '../../services/stripeService'\r\n\r\n\r\nexport default function CheckoutButton({ invoices }) {\r\n const [isLoading, setIsLoading] = useState(false);\r\n\r\n const handleClick = async (event) => {\r\n setIsLoading(true);\r\n\r\n try {\r\n const key = await getStripeApiKey(); \r\n const stripe = await loadStripe(key);\r\n\r\n if(!Array.isArray(invoices))\r\n invoices = new Array(invoices);\r\n\r\n const session = await createStripeSession(invoices);\r\n const result = await stripe.redirectToCheckout({ sessionId: session });\r\n\r\n if (result.error) {\r\n console.error(result);\r\n } \r\n } catch (error) {\r\n console.log(error);\r\n } finally {\r\n setIsLoading(false);\r\n }\r\n };\r\n\r\n return (\r\n \r\n {\" \"}\r\n Pay\r\n \r\n );\r\n}\r\n","import React, { useEffect, useState } from \"react\";\r\nimport Filter from \"../common/Filter\";\r\nimport Table from \"../common/Table\";\r\nimport CheckoutButton from \"../invoice/Payment\";\r\n\r\nexport default function DashboardTable({\r\n accountNumber,\r\n title,\r\n columns,\r\n getData,\r\n color,\r\n invoices,\r\n isFromBottleOrder\r\n}) {\r\n const [data, setData] = useState({ loading: false, data: [] });\r\n const [page, setPage] = useState(1);\r\n const [pages, setPages] = useState(1);\r\n const [filter, setFilter] = useState(\"\");\r\n const [sort, setSort] = useState(\"\");\r\n const [fromDate, setFromDate] = useState();\r\n const [toDate, setToDate] = useState();\r\n\r\n useEffect(() => {\r\n onSearch()\r\n }, [page]);\r\n\r\n useEffect(() => {\r\n onSort()\r\n }, [sort]);\r\n\r\n useEffect(() => {\r\n const now = new Date();\r\n const tenDaysAgo = new Date(now);\r\n let initialFromDateTime;\r\n let initialToDateTime;\r\n if (isFromBottleOrder) {\r\n tenDaysAgo.setDate(now.getDate() + 365);\r\n initialFromDateTime = now.toISOString().slice(0, 10);\r\n initialToDateTime = tenDaysAgo.toISOString().slice(0, 10) ;\r\n setFromDate(initialFromDateTime);\r\n setToDate(initialToDateTime);\r\n }\r\n else {\r\n tenDaysAgo.setDate(now.getDate() - 365);\r\n initialFromDateTime = tenDaysAgo.toISOString().slice(0, 10);\r\n initialToDateTime = now.toISOString().slice(0, 10);\r\n setFromDate(initialFromDateTime);\r\n setToDate(initialToDateTime);\r\n }\r\n\r\n setData({ loading: true, data: [] });\r\n async function GetData(pg) {\r\n let sortOrder = \"\";\r\n\r\n if (sort.length > 0) {\r\n let so = sort[0].desc === true ? \"desc\" : \"\";\r\n sortOrder = `${sort[0].id}${so}`;\r\n }\r\n\r\n let data = await getData(initialFromDateTime, initialToDateTime, accountNumber, pg, filter, sortOrder);\r\n setPages(data.pages);\r\n setData({ loading: false, data: data.data });\r\n }\r\n GetData(page);\r\n\r\n }, []);\r\n\r\n\r\n const onSearch = () => {\r\n\r\n if (fromDate !== undefined && toDate !== undefined) {\r\n setData({ loading: true, data: [] });\r\n async function GetData(pg) {\r\n let sortOrder = \"\";\r\n\r\n if (sort.length > 0) {\r\n let so = sort[0].desc === true ? \"desc\" : \"\";\r\n sortOrder = `${sort[0].id}${so}`;\r\n }\r\n\r\n let data = await getData(fromDate, toDate, accountNumber, pg, filter, sortOrder);\r\n setPages(data.pages);\r\n setData({ loading: false, data: data.data });\r\n }\r\n GetData(page);\r\n }\r\n\r\n }\r\n\r\n const onSort = () => {\r\n if (sort.length > 0) {\r\n const sortId = sort[0].id;\r\n const sortDesc = sort[0].desc;\r\n const sortedData = [...data.data];\r\n\r\n const compareFunction = (a, b) => {\r\n const aValue = a[sortId];\r\n const bValue = b[sortId];\r\n\r\n if (aValue < bValue) return sortDesc ? 1 : -1;\r\n if (aValue > bValue) return sortDesc ? -1 : 1;\r\n return 0;\r\n };\r\n\r\n sortedData.sort(compareFunction);\r\n setData({ ...data, data: sortedData });\r\n }\r\n };\r\n\r\n\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n {title}\r\n

\r\n {title === \"Invoices\" && (\r\n \r\n )}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n setFromDate(e.target.value)}\r\n disabled={data.loading}\r\n />\r\n
\r\n\r\n
\r\n \r\n setToDate(e.target.value)}\r\n disabled={data.loading}\r\n />\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import { faSpinner } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport React, { useState } from \"react\";\r\n\r\nexport default function DownloadAnchor({\r\n func,\r\n cssClass,\r\n icon,\r\n hoverText,\r\n text,\r\n}) {\r\n const [loading, setLoading] = useState(false);\r\n\r\n return (\r\n // eslint-disable-next-line jsx-a11y/anchor-is-valid\r\n {\r\n setLoading(true);\r\n e.preventDefault();\r\n await func();\r\n setLoading(false);\r\n }}\r\n title={hoverText}\r\n style={{ marginRight: \"8px\", marginLeft: \"8px\", color: \"grey\" }}\r\n >\r\n {loading ? (\r\n \r\n ) : (\r\n \r\n )}{\" \"}\r\n {text}\r\n \r\n );\r\n}\r\n","import { getBlob } from \"./networkService\";\r\nimport { saveAs } from \"file-saver\";\r\n\r\nexport async function getCoc(recordId) {\r\n let blob = await getBlob(`/reports/coc/${recordId}`);\r\n saveAs(blob, `${recordId}-ChainOfCustody.pdf`);\r\n}\r\n\r\nexport async function getLabReport(orderNumber) {\r\n let blob = await getBlob(`/reports/lab/${orderNumber}`);\r\n saveAs(blob, `${orderNumber}.pdf`);\r\n}\r\n\r\nexport async function getInvoiceReport(invoiceNumber) {\r\n let blob = await getBlob(`/reports/invoice/${invoiceNumber}`);\r\n saveAs(blob, `${invoiceNumber}.pdf`);\r\n}\r\n","import React from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport DownloadAnchor from \"../common/DownloadAnchor\";\r\nimport { faFilePdf, faLink } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { getCoc, getLabReport } from \"../../services/reportService\";\r\n\r\nexport let OrderColumns = [\r\n {\r\n Header: \"Order Number\",\r\n accessor: \"orderNumber\",\r\n // disableSortBy: true,\r\n Cell: ({ cell }) => {\r\n return (\r\n \r\n {cell.row.values.orderNumber}\r\n \r\n );\r\n },\r\n },\r\n {\r\n Header: \"Sample Date\",\r\n accessor: \"sampleDate\",\r\n // disableSortBy: true,\r\n Cell: ({ cell }) => {\r\n let d = new Date(cell.row.values.sampleDate);\r\n\r\n return {d.toLocaleDateString(\"en-US\")};\r\n },\r\n },\r\n {\r\n Header: \"Project\",\r\n style: { textAlign: \"center\" },\r\n accessor: \"project\",\r\n // disableSortBy: true,\r\n Cell: ({ cell }) => {\r\n return (\r\n

\r\n {cell.row.values.project !==null ? cell.row.values.project.toLowerCase() : \"\"}\r\n

\r\n );\r\n },\r\n },\r\n {\r\n Header: \"Status\",\r\n style: { textAlign: \"center\" },\r\n accessor: \"status\",\r\n // disableSortBy: true,\r\n Cell: ({ cell }) => {\r\n let color = \"primary\";\r\n switch (cell.row.values.status.trim()) {\r\n case \"Invoiced\":\r\n color = \"warning\";\r\n break;\r\n case \"Paid\":\r\n color = \"success\";\r\n break;\r\n default:\r\n color = \"primary\";\r\n }\r\n return (\r\n \r\n {cell.row.values.status}\r\n \r\n );\r\n },\r\n },\r\n {\r\n Header: \"Downloads\",\r\n accessor: \"reportUrl\",\r\n disableSortBy: true,\r\n style: { textAlign: \"center\" },\r\n width: 50,\r\n Cell: ({ cell, data }) => {\r\n let d = data[cell.row.index];\r\n return (\r\n <>\r\n {d.hasReport === true ? (\r\n getLabReport(d.orderNumber)}\r\n icon={faFilePdf}\r\n hoverText=\"Order Results\"\r\n />\r\n ) : (\r\n \"\"\r\n )}\r\n {d.cocs?.map((s) => {\r\n return (\r\n getCoc(s)}\r\n icon={faLink}\r\n hoverText=\"Chain of Custody\"\r\n />\r\n );\r\n })}\r\n \r\n );\r\n },\r\n },\r\n];\r\n","import { getJson } from \"./networkService\";\r\n\r\nexport async function getDashboard(accountNumber) {\r\n return getJson(`/clients/${accountNumber}/dashboard`);\r\n}\r\n\r\nexport async function getMultiClientDashboard(email) {\r\n return getJson(`/clients/dashboard/${email}`);\r\n}\r\n","import { getJson } from \"./networkService\";\r\n\r\nexport async function getInvoice(invoiceNumber) {\r\n return getJson(`/invoices/${invoiceNumber}`);\r\n}\r\n\r\nexport async function getInvoices(fromDate, toDate, accountNumber, page, filter, sort) {\r\n return getJson(\r\n `/invoices/account/${accountNumber}?page=${page}&filter=${filter}&sortOrder=${sort}&fromDate=${fromDate}&toDate=${toDate}`\r\n );\r\n}\r\n","import { getJson } from \"./networkService\";\r\n\r\nexport async function getOrders(fromDate,toDate,accountNumber, page, filter) { \r\n return getJson(`/orders/${accountNumber}?page=${page}&filter=${filter}&fromDate=${fromDate}&toDate=${toDate}`);\r\n}\r\n\r\nexport async function getOrder(orderNumber) {\r\n return getJson(`/orders/order/${orderNumber}`);\r\n}\r\n","import { getJson } from \"./networkService\";\r\n\r\nexport async function getBottleOrderDashboard(fromDate,toDate,accountNumber, page, filter) {\r\n return getJson(`/bottleorders/account/${accountNumber}/dashboard?page=${page}&filter=${filter}&fromDate=${fromDate}&toDate=${toDate}`);\r\n}\r\n\r\nexport async function getBottleOrder(orderNumber) {\r\n return getJson(`/bottleorders/${orderNumber}`);\r\n}\r\n","import React, { useEffect, useState } from \"react\";\r\nimport DashboardTable from \"./DashboardTable\";\r\nimport { OrderColumns } from \"./orderColumns\";\r\nimport { GetInvoiceColumns } from \"./invoiceColumns\";\r\nimport { getDashboard } from \"../../services/dashboardService\";\r\nimport { getInvoices } from \"../../services/invoiceService\";\r\nimport { getOrders } from \"../../services/orderService\";\r\nimport { getBottleOrderDashboard } from \"../../services/bottleOrderService\";\r\nimport { GetBottleOrderColumns } from \"./bottleOrderColumns\";\r\n\r\nexport default function ClientDashboard({ accountNumber }) {\r\n const [dashboard, setDashboard] = useState({\r\n openOrders: 0,\r\n openInvoices: 0,\r\n outstandingBalance: 0,\r\n totalOrders: 0,\r\n name:''\r\n });\r\n const [selectedInvoices, setSelectedInvoices] = useState([]);\r\n\r\n useEffect(() => {\r\n async function GetDashboardInfo() {\r\n try {\r\n let data = await getDashboard(accountNumber);\r\n setDashboard(data);\r\n } catch (err) {\r\n console.error(err);\r\n }\r\n }\r\n if (accountNumber) {\r\n GetDashboardInfo();\r\n }\r\n }, [accountNumber]);\r\n\r\n const handleMultiSelect = (item) => {\r\n setSelectedInvoices((invoices) => {\r\n const invoiceInList = invoices.find((i) => i === item.invoiceNumber);\r\n if (invoiceInList) {\r\n return invoices.filter((i) => i !== item.invoiceNumber);\r\n } else {\r\n return [...invoices, item.invoiceNumber];\r\n }\r\n });\r\n };\r\n\r\n const invoiceColumns = React.useMemo(\r\n () => GetInvoiceColumns(handleMultiSelect),\r\n []\r\n );\r\n const orderColumns = React.useMemo(() => OrderColumns, []);\r\n const bottleOrderColumns = React.useMemo(() => GetBottleOrderColumns(), []);\r\n\r\n if (!accountNumber)\r\n return (\r\n

\r\n You must select an account that you have access to from the main screen\r\n

\r\n );\r\n return (\r\n <>\r\n
\r\n
\r\n
\r\n

\r\n {dashboard.name && <>Hi, {dashboard.name}}\r\n

\r\n
\r\n
\r\n
\r\n

\r\n Open Orders\r\n

\r\n

\r\n {dashboard.openOrders}\r\n

\r\n
\r\n
\r\n
\r\n
\r\n

\r\n Open Invoices\r\n

\r\n

\r\n {dashboard.openInvoices} - $\r\n {dashboard.outstandingBalance.toFixed(2)}\r\n

\r\n
\r\n
\r\n
\r\n
\r\n

\r\n Total Orders\r\n

\r\n

\r\n {dashboard.totalOrders}\r\n

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport DownloadAnchor from \"../common/DownloadAnchor\";\r\nimport { faFilePdf } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { getInvoiceReport } from \"../../services/reportService\";\r\n\r\nexport function GetInvoiceColumns(handleMultiSelect) {\r\n return [\r\n {\r\n Header: \"Invoice Number\",\r\n accessor: \"invoiceNumber\",\r\n // disableSortBy: true,\r\n Cell: ({ cell }) => {\r\n let values = cell.row.values;\r\n return (\r\n <>\r\n {values.balance > 0 && (\r\n handleMultiSelect(cell.row.values)}\r\n />\r\n )}\r\n 0 ? \"15px\" : \"30px\" }}\r\n >\r\n {cell.row.values.invoiceNumber}\r\n \r\n \r\n );\r\n },\r\n },\r\n {\r\n Header: \"Order Number\",\r\n accessor: \"orderNumber\",\r\n // disableSortBy: true,\r\n Cell: ({ cell }) => {cell.row.values.orderNumber},\r\n },\r\n {\r\n Header: \"Status\",\r\n accessor: \"status\",\r\n style: { textAlign: \"center\" },\r\n // disableSortBy: true,\r\n Cell: ({ cell }) => {\r\n let color = \"primary\";\r\n switch (cell.row.values.status.trim()) {\r\n case \"Unpaid\":\r\n color = \"warning\";\r\n break;\r\n case \"Paid\":\r\n color = \"success\";\r\n break;\r\n default:\r\n color = \"primary\";\r\n }\r\n return (\r\n \r\n {cell.row.values.status}\r\n \r\n );\r\n },\r\n },\r\n {\r\n Header: \"Date Sent\",\r\n accessor: \"sendDate\",\r\n // disableSortBy: true,\r\n style: { textAlign: \"right\" },\r\n Cell: ({ cell }) => {\r\n let d = new Date(cell.row.values.sendDate);\r\n\r\n return {d.toLocaleDateString(\"en-US\")};\r\n },\r\n },\r\n {\r\n Header: \"Amount\",\r\n accessor: \"amount\",\r\n // disableSortBy: true,\r\n style: { textAlign: \"right\" },\r\n Cell: ({ cell }) => ${cell.row.values.amount},\r\n className: \"\",\r\n },\r\n {\r\n Header: \"Balance\",\r\n accessor: \"balance\",\r\n style: { textAlign: \"right\" },\r\n // disableSortBy: false,\r\n Cell: ({ cell }) => ${cell.row.values.balance},\r\n },\r\n {\r\n Header: \"Invoice PDF\",\r\n accessor: \"invoiceUrl\",\r\n style: { textAlign: \"center\" },\r\n disableSortBy: true,\r\n Cell: ({ cell, data }) => {\r\n return (\r\n getInvoiceReport(cell.row.values.invoiceNumber)}\r\n icon={faFilePdf}\r\n hoverText=\"Invoice PDF\"\r\n />\r\n );\r\n },\r\n },\r\n ];\r\n}\r\n","import React from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\n\r\nexport function GetBottleOrderColumns() {\r\n return [\r\n {\r\n Header: \"Order Number\",\r\n accessor: \"bottleOrderNumber\",\r\n // disableSortBy: true,\r\n Cell: ({ cell }) => {\r\n return (\r\n <>\r\n \r\n {cell.row.values.bottleOrderNumber}\r\n \r\n \r\n );\r\n },\r\n },\r\n {\r\n Header: \"Description\",\r\n accessor: \"description\",\r\n style: { textAlign: \"center\" },\r\n // disableSortBy: true,\r\n Cell: ({ cell }) => {\r\n return {cell.row.values.description};\r\n },\r\n },\r\n {\r\n Header: \"Scheduled To Be Shipped\",\r\n accessor: \"dueDate\",\r\n style: { textAlign: \"right\" },\r\n // disableSortBy: true,\r\n Cell: ({ cell }) => {\r\n let d = new Date(cell.row.values.dueDate);\r\n\r\n return {d.toLocaleDateString(\"en-US\")};\r\n },\r\n },\r\n ];\r\n}\r\n","import React, { useState, useEffect } from \"react\";\r\nimport logo from \"../images/EnvironmentalLabsLogoHorizontal.png\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faUser } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { Link, useLocation } from \"react-router-dom\";\r\n\r\nexport default function Header({\r\n logout,\r\n isMultiClient,\r\n clearClient,\r\n accountNumber,\r\n}) {\r\n const [isDashboard, setIsDashboard] = useState(null);\r\n const location = useLocation();\r\n\r\n useEffect(() => {\r\n if (location.pathname === \"/client\") {\r\n setIsDashboard(true);\r\n } else {\r\n setIsDashboard(false);\r\n }\r\n }, []);\r\n\r\n const toggleViewOrDashboard = () => {\r\n setIsDashboard(!isDashboard);\r\n };\r\n return (\r\n <>\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n {isMultiClient && (\r\n
\r\n
\r\n \r\n Home\r\n \r\n
\r\n
\r\n )}\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n Account\r\n \r\n
\r\n {isDashboard ? (\r\n \r\n Dashboard\r\n \r\n ) : (\r\n \r\n View Details\r\n \r\n //
\r\n )}\r\n\r\n \r\n Logout\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nconst ToDate = (input) => {\r\n if (input) {\r\n return new Date(input).toLocaleDateString();\r\n } else {\r\n return \"\";\r\n }\r\n};\r\n\r\nexport default function Sample({ sample }) {\r\n return (\r\n
\r\n \r\n
\r\n
\r\n \r\n {sample.LabId}\r\n
\r\n
\r\n
\r\n
\r\n \r\n {sample.SampleDescription}\r\n
\r\n
\r\n
\r\n
\r\n \r\n {ToDate(sample.DateCollected)}\r\n
\r\n
\r\n
\r\n
\r\n \r\n {sample.CollectedBy}\r\n
\r\n
\r\n
\r\n \r\n );\r\n}\r\n","import { faCheckCircle } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { ProgressBar, Step } from \"react-step-progress-bar\";\r\n\r\nexport default function OrderProgressBar({ percentComplete }) {\r\n return (\r\n \r\n \r\n {({ accomplished }) => {\r\n return (\r\n
\r\n
\r\n \r\n \r\n Received\r\n

\r\n
\r\n
\r\n );\r\n }}\r\n
\r\n \r\n {({ accomplished }) => (\r\n
\r\n
\r\n \r\n \r\n Analysis In Progress\r\n

\r\n
\r\n
\r\n )}\r\n
\r\n \r\n {({ accomplished }) => (\r\n
\r\n
\r\n \r\n \r\n Analysis Complete\r\n

\r\n
\r\n
\r\n )}\r\n
\r\n \r\n {({ accomplished }) => (\r\n
\r\n
\r\n \r\n \r\n Invoiced\r\n

\r\n
\r\n
\r\n )}\r\n
\r\n \r\n {({ accomplished }) => (\r\n
\r\n
\r\n \r\n \r\n Paid\r\n

\r\n
\r\n
\r\n )}\r\n
\r\n \r\n );\r\n}\r\n","import { faAngleDown } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport React, { useEffect, useState, useRef } from \"react\";\r\nimport PropTypes from \"prop-types\";\r\n\r\n/**\r\n * Renders a dropdown and the children components\r\n * @param {Visible} bool : set to false to hide dropdown\r\n * @param {children} arrayofcomponents children to display in dropdown.\r\n * in div with dropdown-item class.\r\n * @returns Dropdown div\r\n */\r\nexport default function Dropdown({ visible = true, children }) {\r\n const [dropdown, setDropdown] = useState(false);\r\n const node = useRef();\r\n\r\n const handleClick = (e) => {\r\n if (node.current.contains(e.target)) {\r\n // inside click\r\n return;\r\n }\r\n setDropdown(false);\r\n };\r\n\r\n useEffect(() => {\r\n document.addEventListener(\"mousedown\", handleClick);\r\n return () => {\r\n document.removeEventListener(\"mousedown\", handleClick);\r\n };\r\n }, []);\r\n\r\n return (\r\n <>\r\n {visible && (\r\n \r\n
\r\n setDropdown(!dropdown)}\r\n >\r\n Downloads\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n {children && children.map((Component) => <>{Component})}\r\n
\r\n
\r\n \r\n )}\r\n \r\n );\r\n}\r\n\r\nDropdown.propTypes = {\r\n visible: PropTypes.bool,\r\n children: PropTypes.arrayOf(PropTypes.element),\r\n};\r\n","import { faFilePdf, faLink, faTimes } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport React, { useEffect, useState, useRef } from \"react\";\r\nimport { Link, useParams } from \"react-router-dom\";\r\nimport \"react-step-progress-bar/styles.css\";\r\nimport Sample from \"./Sample\";\r\nimport Slide from \"react-reveal/Slide\";\r\nimport Pulse from \"react-reveal/RubberBand\";\r\nimport DownloadAnchor from \"../common/DownloadAnchor\";\r\nimport OrderProgressBar from \"./OrderProgressbar\";\r\nimport Dropdown from \"../common/Dropdown\";\r\nimport { getOrder } from \"../../services/orderService\";\r\nimport { getCoc, getLabReport } from \"../../services/reportService\";\r\n\r\nconst ToDate = (input) => {\r\n if (input) {\r\n let date = new Date(input);\r\n let output = date.toLocaleDateString();\r\n //handle default date from API\r\n if (date.getYear() === 1) return \"\";\r\n return output;\r\n } else {\r\n return \"\";\r\n }\r\n};\r\n\r\nexport default function Order() {\r\n const { orderNumber } = useParams();\r\n const [percentComplete, setPercentComplete] = useState(0);\r\n const [order, setOrder] = useState();\r\n const hasDownloads = useRef(false);\r\n const hasReport = useRef(false);\r\n\r\n useEffect(() => {\r\n async function GetOrder() {\r\n let data = await getOrder(orderNumber);\r\n\r\n hasReport.current =\r\n data.Status === \"Analysis Complete\" ||\r\n data.Status === \"Reported\" ||\r\n data.Status === \"Invoiced\" ||\r\n data.Status === \"Paid\";\r\n\r\n if (data.Cocs === true || hasReport) hasDownloads.current = true;\r\n\r\n setOrder(data);\r\n\r\n setTimeout(() => {\r\n switch (data.Status) {\r\n case \"Analysis In Progress\":\r\n setPercentComplete(25);\r\n break;\r\n case \"Reported\":\r\n setPercentComplete(50);\r\n break;\r\n case \"Invoiced\":\r\n setPercentComplete(75);\r\n break;\r\n default:\r\n setPercentComplete(100);\r\n }\r\n }, 1500);\r\n }\r\n\r\n GetOrder();\r\n }, [orderNumber]);\r\n\r\n return (\r\n <>\r\n {!order ? (\r\n <>\r\n ) : (\r\n \r\n
\r\n
\r\n
\r\n \r\n # {orderNumber}\r\n

\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {\r\n return (\r\n
\r\n getCoc(s)}\r\n icon={faLink}\r\n hoverText=\"Chain of Custody\"\r\n style={{ marginRight: \"5px\" }}\r\n text=\"Chain of Custody\"\r\n />\r\n
\r\n );\r\n }),\r\n
\r\n {order.Status!==\"Analysis In Progress\" ? (\r\n getLabReport(orderNumber)}\r\n text=\" Order Results\"\r\n />\r\n ) : (\r\n \"\"\r\n )}\r\n \r\n
,\r\n ]}\r\n />\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n

Project Info

\r\n
\r\n
\r\n
\r\n
\r\n \r\n {order.ProjectCategory}\r\n
\r\n
\r\n \r\n {order.ProjectCategory}\r\n
\r\n
\r\n \r\n {order.PwsNumber}\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n {order.InvoiceNumber && (\r\n \r\n {order.InvoiceNumber}\r\n \r\n )}\r\n \r\n
\r\n
\r\n \r\n {ToDate(order.DateReceived)}\r\n
\r\n
\r\n \r\n {ToDate(order.DateReported)}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

Samples

\r\n
\r\n {order.Samples?.map((s) => {\r\n return ;\r\n })}\r\n
\r\n \r\n
\r\n )}\r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nconst ToDate = (input) => {\r\n if (input) {\r\n let date = new Date(input);\r\n let output = date.toLocaleDateString();\r\n //handle default date from API\r\n if (date.getYear() === 1) return \"\";\r\n return output;\r\n } else {\r\n return \"\";\r\n }\r\n};\r\nexport default function OrderedBottle({ bottle }) {\r\n return (\r\n
\r\n \r\n
\r\n
\r\n \r\n {bottle.Parameter}\r\n
\r\n
\r\n
\r\n
\r\n \r\n {bottle.SampleFrequency}\r\n
\r\n
{\" \"}\r\n
\r\n
\r\n \r\n \r\n {ToDate(bottle.MonitorStart)} - {ToDate(bottle.MonitorEnd)}\r\n \r\n
\r\n
\r\n
\r\n \r\n );\r\n}\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { faTimes } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { Link, useParams } from \"react-router-dom\";\r\nimport { getBottleOrder } from \"../../services/bottleOrderService\";\r\nimport Slide from \"react-reveal/Slide\";\r\nimport Pulse from \"react-reveal/RubberBand\";\r\nimport OrderedBottle from \"./OrderedBottle\";\r\n\r\nconst ToDate = (input) => {\r\n if (input) {\r\n let date = new Date(input);\r\n let output = date.toLocaleDateString();\r\n //handle default date from API\r\n if (date.getYear() === 1) return \"\";\r\n return output;\r\n } else {\r\n return \"\";\r\n }\r\n};\r\n\r\nexport default function BottleOrder() {\r\n const { orderNumber } = useParams();\r\n const [order, setOrder] = useState();\r\n\r\n useEffect(() => {\r\n async function GetBottleOrder() {\r\n if (orderNumber) {\r\n let data = await getBottleOrder(orderNumber);\r\n setOrder(data);\r\n }\r\n }\r\n GetBottleOrder();\r\n }, [orderNumber]);\r\n\r\n return (\r\n <>\r\n {!order ? (\r\n <>\r\n ) : (\r\n <>\r\n \r\n
\r\n
\r\n
\r\n \r\n # {orderNumber}\r\n

\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n

Information

\r\n
\r\n
\r\n
\r\n
\r\n \r\n {order.Description}\r\n
\r\n
\r\n \r\n {order.SampleMatrix}\r\n
\r\n
\r\n
\r\n
\r\n \r\n {ToDate(order.OrderDate)}\r\n
\r\n
\r\n \r\n {ToDate(order.DueDate)}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

Bottles

\r\n
\r\n {order.OrderedBottles?.map((s) => {\r\n return ;\r\n })}\r\n
\r\n
\r\n
\r\n \r\n )}\r\n \r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nexport default function Transaction({ trans }) {\r\n return (\r\n
\r\n \r\n
\r\n
\r\n \r\n {trans.Description}\r\n
\r\n
\r\n
\r\n
\r\n \r\n {trans.Quantity}\r\n
\r\n
\r\n
\r\n
\r\n \r\n ${trans.UnitPrice}\r\n
\r\n
\r\n
\r\n
\r\n \r\n ${trans.ListPrice}\r\n
\r\n
\r\n
\r\n \r\n );\r\n}\r\n","import { faCheckCircle } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { ProgressBar, Step } from \"react-step-progress-bar\";\r\n\r\nconst ToDate = (input) => {\r\n if (input) {\r\n return new Date(input).toLocaleDateString();\r\n } else {\r\n return \"\";\r\n }\r\n};\r\n\r\nexport default function InvoiceProgressBar({ percentComplete, dateSent }) {\r\n return (\r\n \r\n \r\n {({ accomplished }) => {\r\n return (\r\n
\r\n
\r\n \r\n \r\n Created\r\n

\r\n
\r\n
\r\n );\r\n }}\r\n
\r\n \r\n {({ accomplished }) => (\r\n
\r\n
\r\n \r\n \r\n Invoiced on {ToDate(dateSent)}\r\n

\r\n
\r\n
\r\n )}\r\n
\r\n \r\n {({ accomplished }) => (\r\n
\r\n
\r\n \r\n \r\n Payment Submitted\r\n

\r\n
\r\n
\r\n )}\r\n
\r\n \r\n {({ accomplished }) => (\r\n
\r\n
\r\n \r\n \r\n Paid\r\n

\r\n
\r\n
\r\n )}\r\n
\r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { useState, useEffect } from \"react\";\r\nimport { Link, useParams } from \"react-router-dom\";\r\nimport Zoom from \"react-reveal/Slide\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faFilePdf, faTimes } from \"@fortawesome/free-solid-svg-icons\";\r\nimport Transaction from \"./Transaction\";\r\nimport DownloadAnchor from \"../common/DownloadAnchor\";\r\nimport CheckoutButton from \"./Payment\";\r\nimport Lottie from \"react-lottie\";\r\nimport SuccessLottie from \"../../images/success.json\";\r\nimport InvoiceProgressBar from \"./InvoiceProgressbar\";\r\nimport Dropdown from \"../common/Dropdown\";\r\nimport { getInvoice } from \"../../services/invoiceService\";\r\nimport { getInvoiceReport } from \"../../services/reportService\";\r\nimport Pulse from \"react-reveal/RubberBand\";\r\nimport CommonLoader from '../common/CommonLoader'\r\nconst ToDate = (input) => {\r\n\tif (input) {\r\n\t\treturn new Date(input).toLocaleDateString();\r\n\t} else {\r\n\t\treturn \"\";\r\n\t}\r\n};\r\n\r\nexport default function Invoice() {\r\n\tconst { invoiceNumber } = useParams();\r\n\tconst [invoice, setInvoice] = useState();\r\n\tconst [percentComplete, setPercentComplete] = useState(0);\r\n\tconst [successModalVisible, setSuccessModalVisible] = useState(false);\r\n\tconst [zoomAnimationVisible, setZoomAnimationVisible] = useState(true);\r\n\r\n\t//Effect to run on first render\r\n\tuseEffect(() => {\r\n\t\tconst query = new URLSearchParams(window.location.search);\r\n\t\tif (query.get(\"success\")) {\r\n\t\t\tsetZoomAnimationVisible(false);\r\n\t\t\tsetSuccessModalVisible(true);\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tsetSuccessModalVisible(false);\r\n\t\t\t\t//Trigger API call to mark invoice as payment pending\r\n\t\t\t}, 3500);\r\n\t\t}\r\n\t\tif (query.get(\"canceled\")) {\r\n\t\t}\r\n\t}, []);\r\n\r\n\t//Effect to run when invoiceNumber is given\r\n\tuseEffect(() => {\r\n\t\tasync function GetOrder() {\r\n\t\t\tlet data = await getInvoice(invoiceNumber);\r\n\t\t\tsetInvoice(data);\r\n\t\t}\r\n\t\tGetOrder();\r\n\t}, [invoiceNumber]);\r\n\r\n\t//Effect to run when invoice is loaded\r\n\tuseEffect(() => {\r\n\t\tif (invoice?.InvoiceNumber) {\r\n\t\t\tlet percent = 0;\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tif (invoice?.DateSent) {\r\n\t\t\t\t\tpercent = 33;\r\n\t\t\t\t}\r\n\t\t\t\tif (invoice?.PaymentPending !== null) {\r\n\t\t\t\t\tpercent = 66;\r\n\t\t\t\t}\r\n\t\t\t\tif (invoice?.Deposit !== 0) {\r\n\t\t\t\t\tpercent =\r\n\t\t\t\t\t\t100 - (50 - (invoice?.Deposit / invoice?.InvoiceAmount) * 50);\r\n\t\t\t\t}\r\n\t\t\t\tsetPercentComplete(percent);\r\n\t\t\t}, 1500);\r\n\t\t}\r\n\t}, [invoice]);\r\n\r\n\tconst renderModal = () => {\r\n\t\treturn (\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t

\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t

\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t);\r\n\t};\r\n\r\n\tconst RenderBody = () => {\r\n\t\treturn (\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tInvoice: {invoiceNumber}\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t{invoice?.PoNumber?.trim()?.length ? (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tPO: {invoice?.PoNumber}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\"\"\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t getInvoiceReport(invoiceNumber)}\r\n\t\t\t\t\t\t\t\t\t\ticon={faFilePdf}\r\n\t\t\t\t\t\t\t\t\t\thoverText=\"Invoice PDF\"\r\n\t\t\t\t\t\t\t\t\t\ttext=\"Invoice PDF\"\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t
,\r\n\t\t\t\t\t\t\t]}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\r\n\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t{\" \"}\r\n\t\t\t\t\t\t\t\t

{invoice?.BillingName}

\r\n\t\t\t\t\t\t\t\t

{invoice?.BillingAddress}

\r\n\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t\t{invoice?.BillingCity?.trim()},{\" \"}\r\n\t\t\t\t\t\t\t\t\t{invoice?.BillingState?.trim()} {invoice?.BillingZip?.trim()}\r\n\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t${invoice?.InvoiceAmount}\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t${invoice?.Deposit}\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t${invoice && invoice.InvoiceAmount - invoice?.Deposit}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t{invoice &&\r\n\t\t\t\t\t\t\tinvoice.InvoiceAmount - invoice.Deposit === 0 &&\r\n\t\t\t\t\t\t\tinvoice.PaymentPending == null ? (\r\n\t\t\t\t\t\t\t\t\"\"\r\n\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\tIf you have already paid and the status hasn't changed try\r\n\t\t\t\t\t\t\t\t\t\tlogging out and checking again\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\r\n\t\t\t\t
\r\n\r\n\t\t\t\t\r\n\t\t\t\t\t

Order Info

\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{invoice?.OrderNumber}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{ToDate(invoice?.Order?.DateReceived)}\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{invoice?.Order?.ProjectCategory}\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{invoice?.ReportNotes}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\r\n\r\n\t\t\t\t
\r\n\r\n\t\t\t\t\r\n\t\t\t\t\t

Charges

\r\n\t\t\t\t\t{invoice?.Transactions?.map((t) => {\r\n\t\t\t\t\t\treturn ;\r\n\t\t\t\t\t})}\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t);\r\n\t};\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t{successModalVisible && renderModal()}\r\n\t\t\t{!invoice ? (\r\n\t\t\t\t<>\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t) : zoomAnimationVisible ? (\r\n\t\t\t\t{RenderBody()}\r\n\t\t\t) : (\r\n\t\t\t\tRenderBody()\r\n\t\t\t)}\r\n\t\t
\r\n\t);\r\n}\r\n","import { useEffect, useState, useMemo } from \"react\";\r\nimport {useHistory} from 'react-router-dom';\r\nimport Table from \"../common/Table\";\r\nimport {getMultiClientDashboard} from '../../services/dashboardService'\r\n\r\nexport default function MultiClientDashboard({ token, setAccount }) {\r\n let history = useHistory();\r\n const [dashboardData, setDashboardData] = useState({\r\n loading: false,\r\n items: [],\r\n });\r\n\r\n const selectAccount = (acc) => {\r\n setAccount(acc.trim());\r\n history.push(`/dashboard/${acc}`);\r\n };\r\n\r\n useEffect(() => {\r\n async function loadDashboard() {\r\n setDashboardData({ ...dashboardData, loading: true });\r\n let data = await getMultiClientDashboard(token.name);\r\n if (data.length > 50) {\r\n setDashboardData({ loading: false, items: data.sort(function(a,b) {\r\n var nameA = a.accountNumber.toUpperCase(); // ignore upper and lowercase\r\n var nameB = b.accountNumber.toUpperCase(); // ignore upper and lowercase\r\n if (nameA < nameB) {\r\n return -1;\r\n }\r\n if (nameA > nameB) {\r\n return 1;\r\n }\r\n return 0;\r\n }).slice(0, 50) });\r\n } else {\r\n setDashboardData({ loading: false, items: data.sort(function(a,b) {\r\n var nameA = a.accountNumber.toUpperCase(); // ignore upper and lowercase\r\n var nameB = b.accountNumber.toUpperCase(); // ignore upper and lowercase\r\n if (nameA < nameB) {\r\n return -1;\r\n }\r\n if (nameA > nameB) {\r\n return 1;\r\n }\r\n return 0;\r\n }) });\r\n }\r\n }\r\n\r\n loadDashboard();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n const columns = useMemo(\r\n () => [\r\n {\r\n Header: \"Account Number\",\r\n accessor: \"accountNumber\",\r\n Cell: ({ cell }) => {\r\n return (\r\n // eslint-disable-next-line jsx-a11y/anchor-is-valid\r\n selectAccount(cell.row.values.accountNumber)}>\r\n {cell.row.values.accountNumber}\r\n \r\n );\r\n },\r\n },\r\n {\r\n Header: \"Name\",\r\n accessor: \"clientName\",\r\n },\r\n {\r\n Header: \"Open Invoices\",\r\n accessor: \"openInvoices\",\r\n },\r\n {\r\n Header: \"Open Orders\",\r\n accessor: \"openOrders\",\r\n },\r\n ],\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n return (\r\n <>\r\n
\r\n \r\n
\r\n \r\n );\r\n}\r\n","import { useEffect, useState } from \"react\";\r\nimport { useLocation } from \"react-router-dom\";\r\nimport ReactGA from \"react-ga\";\r\n\r\nconst useGaTracker = () => {\r\n const location = useLocation();\r\n const [initialized, setInitialized] = useState(false);\r\n\r\n useEffect(() => {\r\n if (!window.location.href.includes(\"localhost\")) {\r\n ReactGA.initialize(\"UA-193251731-1\");\r\n }\r\n setInitialized(true);\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (initialized) {\r\n ReactGA.pageview(location.pathname + location.search);\r\n }\r\n }, [initialized, location]);\r\n};\r\n\r\nexport default useGaTracker;\r\n","import { getJson } from \"./networkService\";\r\nimport { put } from \"./networkService\";\r\n\r\nexport async function getClientDetails(accountNumber) {\r\n return getJson(`/clients/${accountNumber}/details`);\r\n}\r\n\r\nexport async function updateClientDetails(clientDetails) {\r\n return put(`/clients`, clientDetails );\r\n}","export const ContactTypes = {\r\n Work: { text: 'Work', value: 1 },\r\n Main: { text: 'Main', value: 2 },\r\n Office: { text: 'Office', value: 3 },\r\n Mobile: { text: 'Mobile', value: 4 },\r\n};\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { updateClientDetails } from \"../../services/clientService\";\r\nimport { NotificationManager } from \"react-notifications\";\r\nimport { ContactTypes } from '../../models/ContactTypes';\r\n\r\nexport default function ShippingTab({ clientDetails, navigateToDashboard }) {\r\n\r\n const [formData, setFormData] = useState(clientDetails);\r\n \r\n const handleChange = (e) => {\r\n const { name, value } = e.target;\r\n setFormData({\r\n ...formData,\r\n [name]: name.includes(\"Type\") ? +value : value,\r\n });\r\n };\r\n const handleSubmit = async (e) => {\r\n e.preventDefault();\r\n try {\r\n const response = await updateClientDetails(formData);\r\n if (response) {\r\n NotificationManager.success(\"Data updated successfully\");\r\n navigateToDashboard();\r\n }\r\n else {\r\n NotificationManager.error(\"Error while updating data\");\r\n }\r\n\r\n } catch (error) {\r\n NotificationManager.error(\"Error while updating data\");\r\n }\r\n };\r\n\r\n return (\r\n
\r\n

Shipping Information

\r\n
\r\n\r\n {/* Row 1 */}\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n\r\n
\r\n {/* Row 2 */}\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n\r\n
\r\n {/* Row 3 */}\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n \r\n {Object.entries(ContactTypes).map(([key, { text, value }]) => (\r\n \r\n ))}\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n\r\n\r\n\r\n
\r\n {/* Row 4 */}\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n {Object.entries(ContactTypes).map(([key, { text, value }]) => (\r\n \r\n ))}\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import React, { useState } from \"react\";\r\nimport { updateClientDetails } from \"../../services/clientService\";\r\nimport { NotificationManager } from \"react-notifications\";\r\nimport { ContactTypes } from '../../models/ContactTypes';\r\n\r\nexport default function BillingTab({ clientDetails, navigateToDashboard }) {\r\n const [formData, setFormData] = useState(clientDetails);\r\n\r\n const handleChange = (e) => {\r\n const { name, value } = e.target;\r\n setFormData({\r\n ...formData,\r\n [name]: name.includes(\"Type\") ? +value : value,\r\n });\r\n };\r\n\r\n const handleSubmit = async (e) => {\r\n e.preventDefault();\r\n try {\r\n const response = await updateClientDetails(formData);\r\n if (response) {\r\n NotificationManager.success(\"Data updated successfully\");\r\n navigateToDashboard();\r\n } else {\r\n NotificationManager.error(\"Error while updating data\");\r\n }\r\n } catch (error) {\r\n NotificationManager.error(\"Error while updating data\");\r\n }\r\n };\r\n\r\n return (\r\n
\r\n

Billing Information

\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n {Object.entries(ContactTypes).map(([key, { text, value }]) => (\r\n \r\n ))}\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n {Object.entries(ContactTypes).map(([key, { text, value }]) => (\r\n \r\n ))}\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import React, { useState } from \"react\";\r\nimport { updateClientDetails } from \"../../services/clientService\";\r\nimport { NotificationManager } from \"react-notifications\";\r\nimport { ContactTypes } from '../../models/ContactTypes';\r\n\r\nexport default function ReportTab({ clientDetails, navigateToDashboard }) {\r\n const [formData, setFormData] = useState(clientDetails);\r\n\r\n const handleChange = (e) => {\r\n const { name, value } = e.target;\r\n setFormData({\r\n ...formData,\r\n [name]: name.includes(\"Type\") ? +value : value,\r\n });\r\n };\r\n\r\n\r\n const handleSubmit = async (e) => {\r\n e.preventDefault();\r\n try {\r\n const response = await updateClientDetails(formData);\r\n if (response) {\r\n NotificationManager.success(\"Data updated successfully\");\r\n navigateToDashboard();\r\n } else {\r\n NotificationManager.error(\"Error while updating data\");\r\n }\r\n } catch (error) {\r\n NotificationManager.error(\"Error while updating data\");\r\n }\r\n };\r\n\r\n return (\r\n
\r\n

Report Information

\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n {Object.entries(ContactTypes).map(([key, { text, value }]) => (\r\n \r\n ))}\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n {Object.entries(ContactTypes).map(([key, { text, value }]) => (\r\n \r\n ))}\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n {/* Add more input fields for other report properties here */}\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import React, { useState, useEffect } from \"react\";\r\nimport InfoTab from \"./InfoTab\";\r\nimport ShippingTab from \"./ShippingTab\";\r\nimport BillingTab from \"./BillingTab\";\r\nimport ReportTab from \"./ReportTab\";\r\nimport { getClientDetails } from \"../../services/clientService\";\r\nimport CommonLoader from '../common/CommonLoader';\r\nimport { useHistory } from \"react-router-dom\";\r\n\r\nexport default function Client({ accountNumber }) {\r\n const [activeTab, setActiveTab] = useState(\"Shipping\");\r\n const [clientDetails, setClientDetails] = useState(null); \r\n const [loading, setLoading] = useState(true);\r\n const history = useHistory();\r\n useEffect(() => {\r\n async function GetDashboardInfo() {\r\n try {\r\n let data = await getClientDetails(accountNumber);\r\n setClientDetails(data);\r\n setLoading(false)\r\n } catch (err) {\r\n console.error(err);\r\n }\r\n }\r\n if (accountNumber) {\r\n GetDashboardInfo();\r\n }\r\n }, [accountNumber]);\r\n const navigateToDashboard = () => {\r\n history.push(\"/dashboard\");\r\n };\r\n const handleTabClick = (tab) => {\r\n setActiveTab(tab);\r\n };\r\n\r\n return (\r\n
\r\n {clientDetails ? ( \r\n <>\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n {/* {activeTab === \"Info\" && } */}\r\n {activeTab === \"Shipping\" && }\r\n {activeTab === \"Billing\" && }\r\n {activeTab === \"Report\" && }\r\n
\r\n
\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n );\r\n}\r\n","import {\r\n\tBrowserRouter as Router,\r\n\tSwitch,\r\n\tRoute,\r\n\tRedirect,\r\n} from \"react-router-dom\";\r\nimport Login from \"./components/Login\";\r\nimport Dashboard from \"./components/dashboard/ClientDashboard\";\r\nimport useToken from \"./services/useToken\";\r\nimport Header from \"./components/Header\";\r\nimport Order from \"./components/order/Order\";\r\nimport BottleOrder from \"./components/bottleorders/bottleorder\";\r\nimport Invoice from \"./components/invoice/Invoice\";\r\nimport { useEffect, useState } from \"react\";\r\nimport MultiClientDashboard from \"./components/dashboard/MultiClientDashboard\";\r\nimport useGaTracker from \"./usGaTracker\";\r\nimport LogRocket from \"logrocket\";\r\nimport Client from \"./components/client/Client\";\r\nimport { NotificationContainer } from \"react-notifications\";\r\n\r\nLogRocket.init(\"ghozmy/vlp-client\");\r\n\r\nconst RenderBody = ({ logout, token }) => {\r\n\tconst [selectedClient, setSelectedClient] = useState();\r\n\r\n\tuseEffect(() => {\t\t\r\n\t\tif (token.accountNumbers.length === 0) {\t\t\t\r\n\t\t\tsetSelectedClient(token.accountNumber);\r\n\t\t}\r\n\t\t// if (token.accountNumbers.length > 0) {\r\n\t\t// \tsetSelectedClient(token.accountNumbers[0]);\r\n\t\t// }\r\n\t}, [token]);\r\n\r\n\treturn (\t\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t 0}\r\n\t\t\t\tclearClient={() => {\r\n\t\t\t\t\tsetSelectedClient();\r\n\t\t\t\t\twindow.location.href = window.location.origin;\r\n\t\t\t\t}}\r\n\t\t\t/>\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{useGaTracker()}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{token.accountNumbers.length > 0 && !selectedClient ? (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n};\r\n\r\nfunction App() {\r\n\tconst { token, setToken, logout } = useToken();\r\n\r\n\tif (!token) {\r\n\t\treturn ;\r\n\t}\r\n\r\n\tconst now = Date.now().valueOf();\r\n\tconst tokeExp = token.expiration && Date.parse(token.expiration);\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t{tokeExp < now ? (\r\n\t\t\t\t\r\n\t\t\t) : (\r\n\t\t\t\t\r\n\t\t\t)}\r\n\t\t\r\n\t);\r\n}\r\n\r\nexport default App;\r\n","import { useState } from \"react\";\r\n\r\nexport default function useToken() {\r\n const getToken = () => {\r\n const tokenString = localStorage.getItem(\"token\");\r\n const userToken = JSON.parse(tokenString);\r\n return userToken;\r\n };\r\n\r\n const [token, setToken] = useState(getToken());\r\n\r\n const saveToken = (userToken) => {\r\n localStorage.setItem(\"token\", JSON.stringify(userToken));\r\n setToken(userToken);\r\n };\r\n\r\n const logout = () => {\r\n localStorage.clear();\r\n setToken(null);\r\n window.location.href = window.location.origin;\r\n };\r\n\r\n return {\r\n setToken: saveToken,\r\n token,\r\n logout,\r\n };\r\n}\r\n","import React from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport App from \"./App\";\r\nimport \"./styles/css/index.css\";\r\nimport { BrowserRouter as Router } from \"react-router-dom\";\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById(\"root\")\r\n);\r\n"],"sourceRoot":""}