You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
ecommerce_docker/frontend_server/node_modules/.cache/babel-loader/f99e061651e36edac616009ef3f...

1 lines
154 KiB

{"ast":null,"code":"var _jsxFileName = \"/home/sigonasr2/Please-Contain-Yourself/ecommerce_docker/frontend_server/src/App.js\";\nimport React, { useState, useEffect } from 'react';\nimport logo from \"./logo.svg\";\nimport './App.css';\n\nvar md5 = require('md5');\n\nvar axios = require('axios');\n\nvar moment = require('moment');\n\nconst DisplayRegisterForm = p => {\n const [userType, setUserType] = useState(\"Customer\");\n const [registerState, setRegisterState] = useState(\"REGISTER\");\n const [status, setStatus] = useState(\"Contacting Server...\");\n const [contents, setContents] = useState(\"\");\n const [errorMessage, setErrorMessage] = useState(\"\");\n var fields = {\n \"Customer\": [{\n name: \"Company Name\",\n value: \"companyname\"\n }, {\n name: \"Name\",\n value: \"customername\"\n }, {\n name: \"Email\",\n value: \"customeremail\"\n }, {\n name: \"Phone Number\",\n value: \"customerphonenumber\"\n }],\n \"User\": [{\n name: \"First Name\",\n value: \"firstname\"\n }, {\n name: \"Last Name\",\n value: \"lastname\"\n }, {\n name: \"Email\",\n value: \"email\"\n }],\n \"Manufacturer\": [{\n name: \"Company Name\",\n value: \"companyname\"\n }, {\n name: \"Contact Name\",\n value: \"contactname\"\n }, {\n name: \"Contact Email\",\n value: \"contactemail\"\n }, {\n name: \"Contact Phone Number\",\n value: \"contactphonenumber\"\n }]\n }; //var contents;\n //var errorMessage;\n\n var RegisterUser = () => {\n //First add a new customer/manufacturer/user\n var convertName = type => {\n if (type !== \"User\") {\n return userType[0].toLowerCase() + userType.slice(1);\n } else {\n return \"users\";\n }\n };\n\n var myObj = {};\n var myData = {};\n var uniqueid = undefined;\n fields[userType].forEach(field => myObj[field.value] = document.getElementById(field.name).value); //console.log(myObj)\n\n axios.get('http://localhost:3001/login/' + p.username).then(data => {\n //setRegisterState(\"SERVER_CONTACT\");\n setStatus(\"Preparing Account...\");\n console.log(data.data);\n\n if (data.data.length > 0) {\n return Promise.reject(new Error(\"Duplicate user detected\"));\n } else {\n if (userType === \"User\") {\n return axios.post('http://localhost:3001/' + convertName(userType) + '/adduser', myObj);\n } else {\n return axios.post('http://localhost:3001/' + convertName(userType) + '/add', myObj);\n }\n }\n }).then(data => {\n //console.log(JSON.stringify(data));\n //data.id\n //setStatus(data);\n //myData = JSON.stringify(data);\n setStatus(\"Registering Account...\");\n var uniqueid = data.data[0].id;\n var myObj = {\n uniqueid: uniqueid,\n username: p.username,\n password: md5(p.password),\n role: userType\n };\n return axios.post(\"http://localhost:3001/logininfo/add\", myObj);\n }).then(data => {\n //console.log(data)\n setStatus(\"Your account has been successfully registered! Please try logging in! (You will be redirected to the login page...)\");\n p.setPassword(\"\");\n p.setLoginPageMessage(\"Your account has been successfully registered! Please try logging in!\");\n p.setReloadUserDatabase(true);\n p.setPageView(\"LOGIN\");\n }).catch(err => {\n setRegisterState(\"REGISTER\");\n setContents( /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"h2\", {\n style: {\n color: \"red\"\n },\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 88,\n columnNumber: 9\n }\n }, err.message)));\n }); //Then register a new user using the returned ID.\n };\n\n function Validated() {\n var inputs = document.getElementsByTagName(\"input\");\n setErrorMessage(\"\");\n\n for (var i = 0; i < inputs.length; i++) {\n var input = inputs[i];\n input.classList.remove(\"error\");\n }\n\n var empty_inputs = [];\n\n for (var i = 0; i < inputs.length; i++) {\n var input = inputs[i];\n\n if (input.value.length === 0) {\n empty_inputs.push(input);\n }\n }\n\n ;\n\n if (empty_inputs.length > 0) {\n setErrorMessage( /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"h2\", {\n style: {\n color: \"red\"\n },\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 104,\n columnNumber: 9\n }\n }, \"Please fix invalid fields!\")));\n\n for (var i = 0; i < empty_inputs.length; i++) {\n var input = empty_inputs[i];\n input.classList.add(\"error\");\n }\n\n return false;\n } else {\n return true;\n }\n }\n\n if (registerState !== \"SERVER_CONTACT\") {\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n className: \"offset-md-3 col-md-6\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 116,\n columnNumber: 7\n }\n }, errorMessage, contents, /*#__PURE__*/React.createElement(\"h2\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 119,\n columnNumber: 11\n }\n }, \"Register\"), /*#__PURE__*/React.createElement(\"br\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 119,\n columnNumber: 28\n }\n }), /*#__PURE__*/React.createElement(\"label\", {\n for: \"type\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 120,\n columnNumber: 11\n }\n }, \"User Type:\"), /*#__PURE__*/React.createElement(\"select\", {\n onChange: e => {\n setUserType(e.currentTarget.value);\n },\n value: userType,\n name: \"type\",\n id: \"type\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 121,\n columnNumber: 11\n }\n }, /*#__PURE__*/React.createElement(\"option\", {\n value: \"Customer\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 122,\n columnNumber: 13\n }\n }, \"Customer\"), /*#__PURE__*/React.createElement(\"option\", {\n value: \"User\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 123,\n columnNumber: 13\n }\n }, \"User\"), /*#__PURE__*/React.createElement(\"option\", {\n value: \"Manufacturer\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 124,\n columnNumber: 13\n }\n }, \"Manufacturer\")), /*#__PURE__*/React.createElement(\"br\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 125,\n columnNumber: 22\n }\n }), /*#__PURE__*/React.createElement(\"br\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 125,\n columnNumber: 27\n }\n }), fields[userType].map(field => /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"br\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 126,\n columnNumber: 46\n }\n }), /*#__PURE__*/React.createElement(\"label\", {\n for: field.name,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 126,\n columnNumber: 51\n }\n }, /*#__PURE__*/React.createElement(\"b\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 126,\n columnNumber: 75\n }\n }, field.name, \":\")), /*#__PURE__*/React.createElement(\"input\", {\n type: \"text\",\n name: field.name,\n id: field.name,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 126,\n columnNumber: 103\n }\n }))), /*#__PURE__*/React.createElement(\"br\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 127,\n columnNumber: 13\n }\n }), /*#__PURE__*/React.createElement(\"br\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 127,\n columnNumber: 18\n }\n }), /*#__PURE__*/React.createElement(\"label\", {\n for: \"username\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 128,\n columnNumber: 13\n }\n }, /*#__PURE__*/React.createElement(\"b\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 128,\n columnNumber: 35\n }\n }, \"Username:\")), /*#__PURE__*/React.createElement(\"input\", {\n type: \"text\",\n onChange: e => {\n p.setUsername(e.currentTarget.value);\n },\n id: \"username\",\n name: \"username\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 128,\n columnNumber: 59\n }\n }), /*#__PURE__*/React.createElement(\"br\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 128,\n columnNumber: 164\n }\n }), /*#__PURE__*/React.createElement(\"label\", {\n for: \"password\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 129,\n columnNumber: 13\n }\n }, /*#__PURE__*/React.createElement(\"b\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 129,\n columnNumber: 35\n }\n }, \"Password:\")), /*#__PURE__*/React.createElement(\"input\", {\n type: \"password\",\n onChange: e => {\n p.setPassword(e.currentTarget.value);\n },\n id: \"password\",\n name: \"password\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 129,\n columnNumber: 59\n }\n }), /*#__PURE__*/React.createElement(\"br\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 129,\n columnNumber: 168\n }\n }), /*#__PURE__*/React.createElement(\"br\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 129,\n columnNumber: 173\n }\n }), /*#__PURE__*/React.createElement(\"button\", {\n onClick: () => {\n if (Validated()) {\n RegisterUser();\n setRegisterState(\"SERVER_CONTACT\");\n }\n },\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 130,\n columnNumber: 13\n }\n }, \"Register\")));\n } else {\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n className: \"offset-md-3 col-md-6\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 140,\n columnNumber: 7\n }\n }, /*#__PURE__*/React.createElement(\"h2\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 141,\n columnNumber: 7\n }\n }, \"Registering new \", userType), status));\n }\n};\n\nconst DisplayLoginForm = p => {\n const [status, setStatus] = useState(\"Contacting Server...\");\n var contents = null;\n\n var LoginUser = () => {\n axios.get(\"http://localhost:3001/login/\" + p.username + \"/\" + md5(p.password)).then(data => {\n //setStatus(JSON.stringify(data))\n if (Array.isArray(data.data) && data.data.length > 0) {\n //The first value should hold our uniqueid plus our role type.\n p.setRole(data.data[0].role);\n p.setUniqueId(data.data[0].uniqueid);\n setStatus(\"Found your data... Sending you to \" + data.data[0].role + \" homepage.\");\n p.setPageView(data.data[0].role.toUpperCase());\n } else {\n Promise.reject(\"Invalid Username/Password Combination!\");\n }\n }).catch(err => {\n setStatus(err.message);\n p.setLoginState(\"COULDNOTCONNECT\");\n });\n };\n\n var VerifyFormInputs = () => {\n if (p.username && p.password && p.username.length > 0 && p.password.length > 0) {\n p.setLoginState(\"LOGGING IN\");\n p.setLoginPageMessage(\"\");\n LoginUser();\n } else {\n p.setLoginState(\"INVALID\");\n }\n };\n\n switch (p.loginState) {\n case \"FAILED\":\n {\n contents = /*#__PURE__*/React.createElement(\"h3\", {\n style: {\n color: \"red\"\n },\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 185,\n columnNumber: 18\n }\n }, \"Incorrect Credentials!\");\n }\n break;\n\n case \"COULDNOTCONNECT\":\n {\n contents = /*#__PURE__*/React.createElement(\"h3\", {\n style: {\n color: \"red\"\n },\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 188,\n columnNumber: 18\n }\n }, \"Could not contact server! Please try again!\");\n }\n break;\n\n case \"INVALID\":\n {\n contents = /*#__PURE__*/React.createElement(\"h3\", {\n style: {\n color: \"red\"\n },\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 191,\n columnNumber: 18\n }\n }, \"Please provide a valid username and password!\");\n }\n break;\n }\n\n if (p.loginState !== \"LOGGING IN\") {\n return /*#__PURE__*/React.createElement(React.Fragment, null, contents, /*#__PURE__*/React.createElement(\"div\", {\n className: \"offset-md-3 col-md-6\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 199,\n columnNumber: 9\n }\n }, /*#__PURE__*/React.createElement(\"h2\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 200,\n columnNumber: 9\n }\n }, \"Login\"), /*#__PURE__*/React.createElement(\"br\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 200,\n columnNumber: 23\n }\n }), /*#__PURE__*/React.createElement(\"label\", {\n for: \"username\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 201,\n columnNumber: 9\n }\n }, /*#__PURE__*/React.createElement(\"b\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 201,\n columnNumber: 31\n }\n }, \"Username: \")), /*#__PURE__*/React.createElement(\"input\", {\n type: \"text\",\n name: \"username\",\n id: \"username\",\n onChange: e => {\n p.setUsername(e.currentTarget.value);\n },\n value: p.username,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 202,\n columnNumber: 9\n }\n }), /*#__PURE__*/React.createElement(\"br\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 203,\n columnNumber: 9\n }\n }), /*#__PURE__*/React.createElement(\"br\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 203,\n columnNumber: 14\n }\n }), /*#__PURE__*/React.createElement(\"label\", {\n for: \"password\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 204,\n columnNumber: 9\n }\n }, /*#__PURE__*/React.createElement(\"b\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 204,\n columnNumber: 31\n }\n }, \"Password: \")), /*#__PURE__*/React.createElement(\"input\", {\n type: \"password\",\n name: \"password\",\n id: \"password\",\n onChange: e => {\n p.setPassword(e.currentTarget.value);\n },\n value: p.password,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 205,\n columnNumber: 9\n }\n }), /*#__PURE__*/React.createElement(\"br\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 206,\n columnNumber: 9\n }\n }), /*#__PURE__*/React.createElement(\"br\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 206,\n columnNumber: 14\n }\n }), /*#__PURE__*/React.createElement(\"input\", {\n type: \"submit\",\n onClick: () => {\n VerifyFormInputs();\n },\n value: \"Login\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 207,\n columnNumber: 9\n }\n }), /*#__PURE__*/React.createElement(\"br\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 208,\n columnNumber: 9\n }\n }), /*#__PURE__*/React.createElement(\"br\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 208,\n columnNumber: 14\n }\n }), /*#__PURE__*/React.createElement(\"span\", {\n className: \"link\",\n onClick: () => {\n p.setPageView(\"REGISTER\");\n },\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 209,\n columnNumber: 9\n }\n }, \"Need an account?\")));\n } else {\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"h2\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 216,\n columnNumber: 7\n }\n }, \"Logging you in...\"), status);\n }\n};\n\nconst Item = p => {\n var contents;\n\n if (p.items) {\n var thisItem = p.items.filter(item => item.id == p.id)[0];\n\n if (thisItem) {\n contents = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n className: \"row\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 229,\n columnNumber: 7\n }\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"col-md-4\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 230,\n columnNumber: 9\n }\n }, /*#__PURE__*/React.createElement(\"b\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 231,\n columnNumber: 11\n }\n }, thisItem.name)), /*#__PURE__*/React.createElement(\"div\", {\n className: \"col-md-8\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 233,\n columnNumber: 9\n }\n }, thisItem.description)));\n } else {\n contents = \"Could not find item \" + p.id;\n }\n }\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, contents);\n};\n\nconst User = p => {\n var contents;\n\n if (p.users) {\n var thisUser = p.users.filter(user => user.id == p.id)[0];\n\n if (thisUser) {\n contents = thisUser.firstname + \" \" + thisUser.lastname;\n }\n }\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, contents);\n};\n\nconst Manufacturer = p => {\n var contents;\n\n if (p.manufacturers) {\n var thisManufacturer = p.manufacturers.filter(manufacturer => manufacturer.id == p.id)[0];\n\n if (thisManufacturer) {\n contents = thisManufacturer.companyname;\n }\n }\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, contents);\n};\n\nconst SalesOrder = p => {\n const CompleteOrder = () => {\n var myObj = {\n datereceived: moment().format()\n };\n axios.put(\"http://localhost:3001/salesorder/setreceived/\" + p.order.id, myObj).then(data => {\n p.setReload(true);\n });\n };\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, p.completeOrder && !p.order.datereceived ? /*#__PURE__*/React.createElement(\"button\", {\n onClick: () => {\n CompleteOrder();\n },\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 291,\n columnNumber: 49\n }\n }, \"Complete Order\") : /*#__PURE__*/React.createElement(React.Fragment, null), /*#__PURE__*/React.createElement(Item, {\n id: p.id,\n items: p.items,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 291,\n columnNumber: 120\n }\n }), \"x\", p.order.quantity, \" - \", /*#__PURE__*/React.createElement(\"b\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 291,\n columnNumber: 176\n }\n }, \"Submitted \"), \" to \", /*#__PURE__*/React.createElement(\"b\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 291,\n columnNumber: 197\n }\n }, /*#__PURE__*/React.createElement(User, {\n id: p.order.userid,\n users: p.users,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 291,\n columnNumber: 200\n }\n })), /*#__PURE__*/React.createElement(\"br\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 291,\n columnNumber: 247\n }\n }), /*#__PURE__*/React.createElement(\"br\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 291,\n columnNumber: 252\n }\n }), \" \", /*#__PURE__*/React.createElement(\"b\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 291,\n columnNumber: 258\n }\n }, \"Ordered:\"), \" \", p.order.dateordered, \" - \", /*#__PURE__*/React.createElement(\"b\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 291,\n columnNumber: 300\n }\n }, \"Received:\"), \" \", p.order.datereceived ? /*#__PURE__*/React.createElement(\"div\", {\n className: \"orderdone\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 291,\n columnNumber: 341\n }\n }, p.order.datereceived) : \"Order Pending...\");\n};\n\nconst PurchaseOrder = p => {\n const CompleteOrder = () => {\n var myObj = {\n datereceived: moment().format()\n };\n axios.put(\"http://localhost:3001/purchaseorder/setreceived/\" + p.order.id, myObj).then(data => {\n p.setReload(true);\n });\n };\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, p.completeOrder && !p.order.datereceived ? /*#__PURE__*/React.createElement(\"button\", {\n onClick: () => {\n CompleteOrder();\n },\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 308,\n columnNumber: 49\n }\n }, \"Complete Order\") : /*#__PURE__*/React.createElement(React.Fragment, null), /*#__PURE__*/React.createElement(Item, {\n id: p.id,\n items: p.items,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 308,\n columnNumber: 120\n }\n }), \"x\", p.order.quantity, \" - \", /*#__PURE__*/React.createElement(\"b\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 308,\n columnNumber: 176\n }\n }, \"Submitted \"), \" to \", /*#__PURE__*/React.createElement(\"b\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 308,\n columnNumber: 197\n }\n }, /*#__PURE__*/React.createElement(Manufacturer, {\n id: p.order.manufacturerid,\n manufacturers: p.manufacturers,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 308,\n columnNumber: 200\n }\n })), /*#__PURE__*/React.createElement(\"br\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 308,\n columnNumber: 279\n }\n }), /*#__PURE__*/React.createElement(\"br\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 308,\n columnNumber: 284\n }\n }), \" \", /*#__PURE__*/React.createElement(\"b\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 308,\n columnNumber: 290\n }\n }, \"Ordered:\"), \" \", p.order.dateordered, \" - \", /*#__PURE__*/React.createElement(\"b\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 308,\n columnNumber: 332\n }\n }, \"Received:\"), \" \", p.order.datereceived ? /*#__PURE__*/React.createElement(\"div\", {\n className: \"orderdone\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 308,\n columnNumber: 373\n }\n }, p.order.datereceived) : \"Order Pending...\");\n};\n\nconst ItemsSelectionList = p => {\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"select\", {\n name: \"item\",\n id: \"item\",\n value: p.itemId,\n onChange: e => {\n p.setItemId(e.currentTarget.value);\n },\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 316,\n columnNumber: 5\n }\n }, p.items.map(item => /*#__PURE__*/React.createElement(\"option\", {\n value: item.id,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 317,\n columnNumber: 29\n }\n }, item.name))));\n};\n\nconst UsersSelectionList = p => {\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"select\", {\n name: \"user\",\n id: \"user\",\n value: p.userId,\n onChange: e => {\n p.setUserId(e.currentTarget.value);\n },\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 326,\n columnNumber: 5\n }\n }, p.users.map(user => /*#__PURE__*/React.createElement(\"option\", {\n value: user.id,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 327,\n columnNumber: 29\n }\n }, \"[\", user.id, \"] \", user.firstname + \" \" + user.lastname))));\n};\n\nconst ManufacturerSelectionList = p => {\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"select\", {\n name: \"manufacturer\",\n id: \"manufacturer\",\n value: p.manufacturerId,\n onChange: e => {\n p.setManufacturerId(e.currentTarget.value);\n },\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 336,\n columnNumber: 5\n }\n }, p.manufacturers.map(manufacturer => /*#__PURE__*/React.createElement(\"option\", {\n value: manufacturer.id,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 337,\n columnNumber: 45\n }\n }, \"[\", manufacturer.id, \"] \", manufacturer.companyname))));\n};\n\nconst ModifyProfilePage = p => {\n const [fields, setFields] = useState([]);\n const [updateRequired, setUpdateRequired] = useState(true);\n const [statusMessage, setStatusMessage] = useState(\"Retrieving data...\");\n const [updatingProfile, setUpdatingProfile] = useState(false); //p.users,p.role,p.callback,p.username\n\n var data;\n\n if (updateRequired) {\n setUpdateRequired(false);\n\n switch (p.role) {\n case \"User\":\n {\n var user = p.users.filter(user => user.id === p.id)[0];\n setStatusMessage(\"\");\n setFields([{\n name: \"First Name\",\n value: \"firstname\",\n field: user.firstname\n }, {\n name: \"Last Name\",\n value: \"lastname\",\n field: user.lastname\n }, {\n name: \"Email\",\n value: \"email\",\n field: user.email\n }]);\n }\n break;\n\n case \"Customer\":\n {\n axios.get(\"http://localhost:3001/customer/view/\" + p.id).then(data => {\n if (Array.isArray(data.data) && data.data.length > 0) {\n setFields([{\n name: \"Company Name\",\n value: \"companyname\",\n field: data.data[0].companyname\n }, {\n name: \"Name\",\n value: \"customername\",\n field: data.data[0].customername\n }, {\n name: \"Email\",\n value: \"customeremail\",\n field: data.data[0].customeremail\n }, {\n name: \"Phone Number\",\n value: \"customerphonenumber\",\n field: data.data[0].customerphonenumber\n }]);\n setStatusMessage(\"\");\n } else {\n Promise.reject(new Error(\"Failed to retrieve data!\"));\n }\n }).catch(err => {\n setStatusMessage(err.message);\n });\n }\n break;\n\n case \"Manufacturer\":\n {\n axios.get(\"http://localhost:3001/manufacturer/view/\" + p.id).then(data => {\n if (Array.isArray(data.data) && data.data.length > 0) {\n setFields([{\n name: \"Company Name\",\n value: \"companyname\",\n field: data.data[0].companyname\n }, {\n name: \"Contact Name\",\n value: \"contactname\",\n field: data.data[0].contactname\n }, {\n name: \"Contact Email\",\n value: \"contactemail\",\n field: data.data[0].contactemail\n }, {\n name: \"Contact Phone Number\",\n value: \"contactphonenumber\",\n field: data.data[0].contactphonenumber\n }]);\n setStatusMessage(\"\");\n } else {\n Promise.reject(new Error(\"Failed to retrieve data!\"));\n }\n }).catch(err => {\n setStatusMessage(err.message);\n });\n }\n break;\n }\n }\n\n function Validated() {\n var inputs = document.getElementsByTagName(\"input\");\n setStatusMessage(\"\");\n\n for (var i = 0; i < inputs.length; i++) {\n var input = inputs[i];\n input.classList.remove(\"error\");\n }\n\n var empty_inputs = [];\n\n for (var i = 0; i < inputs.length; i++) {\n var input = inputs[i];\n\n if (input.value.length === 0) {\n empty_inputs.push(input);\n }\n }\n\n ;\n\n if (empty_inputs.length > 0) {\n setStatusMessage( /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"h2\", {\n style: {\n color: \"red\"\n },\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 409,\n columnNumber: 9\n }\n }, \"Please fix invalid fields!\")));\n\n for (var i = 0; i < empty_inputs.length; i++) {\n var input = empty_inputs[i];\n input.classList.add(\"error\");\n }\n\n return false;\n } else {\n return true;\n }\n }\n\n function UpdateProfile() {\n setStatusMessage( /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"h2\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 419,\n columnNumber: 24\n }\n }, \"Contacting Server...\"), \"Submitting updated profile...\"));\n\n switch (p.role) {\n case \"User\":\n {\n var myObj = {};\n fields.forEach(field => {\n myObj[field.value] = document.getElementById(field.value).value;\n });\n axios.put(\"http://localhost:3001/users/update/\" + p.id, myObj).then(data => {\n setStatusMessage(\"Success! Profile updated. Returning to previous page.\");\n p.setReloadUserDatabase(true);\n p.call();\n }).catch(err => {\n setUpdatingProfile(false);\n setStatusMessage(err.message);\n });\n }\n break;\n\n case \"Customer\":\n {\n var myObj = {};\n fields.forEach(field => {\n myObj[field.value] = document.getElementById(field.value).value;\n });\n axios.put(\"http://localhost:3001/customer/update/\" + p.id, myObj).then(data => {\n setStatusMessage(\"Success! Profile updated. Returning to previous page.\");\n p.call();\n }).catch(err => {\n setUpdatingProfile(false);\n setStatusMessage(err.message);\n });\n }\n break;\n\n case \"Manufacturer\":\n {\n var myObj = {};\n fields.forEach(field => {\n myObj[field.value] = document.getElementById(field.value).value;\n });\n axios.put(\"http://localhost:3001/manufacturer/update/\" + p.id, myObj).then(data => {\n setStatusMessage(\"Success! Profile updated. Returning to previous page.\");\n p.call();\n }).catch(err => {\n setUpdatingProfile(false);\n setStatusMessage(err.message);\n });\n }\n break;\n }\n }\n\n if (updatingProfile) {\n return /*#__PURE__*/React.createElement(React.Fragment, null, statusMessage);\n } else {\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"button\", {\n onClick: () => {\n p.call();\n },\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 474,\n columnNumber: 9\n }\n }, \"< Back\"), /*#__PURE__*/React.createElement(\"br\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 475,\n columnNumber: 9\n }\n }), /*#__PURE__*/React.createElement(\"h3\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 476,\n columnNumber: 9\n }\n }, \"Modify Profile for \", p.username), /*#__PURE__*/React.createElement(\"b\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 477,\n columnNumber: 9\n }\n }, \"Role: \", p.role), /*#__PURE__*/React.createElement(\"br\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 477,\n columnNumber: 30\n }\n }), /*#__PURE__*/React.createElement(\"br\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 477,\n columnNumber: 35\n }\n }), statusMessage, /*#__PURE__*/React.createElement(\"br\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 478,\n columnNumber: 24\n }\n }), fields ? fields.map((field, count) => /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"label\", {\n for: field.value,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 479,\n columnNumber: 47\n }\n }, field.name), /*#__PURE__*/React.createElement(\"input\", {\n type: \"text\",\n name: field.value,\n id: field.value,\n defaultValue: field.field,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 479,\n columnNumber: 92\n }\n }), /*#__PURE__*/React.createElement(\"br\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 479,\n columnNumber: 175\n }\n }))) : /*#__PURE__*/React.createElement(React.Fragment, null), /*#__PURE__*/React.createElement(\"button\", {\n onClick: () => {\n if (Validated()) {\n UpdateProfile();\n }\n },\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 480,\n columnNumber: 9\n }\n }, \"Update Profile\"), /*#__PURE__*/React.createElement(\"br\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 481,\n columnNumber: 9\n }\n }));\n }\n};\n\nconst CreateCustomerSalesOrder = p => {\n const [itemId, setItemId] = useState(p.items[0].id);\n const [itemQuantity, setItemQuantity] = useState(1);\n const [userId, setUserId] = useState(p.users[0].id);\n const [status, setStatus] = useState(null);\n const [lastError, setLastError] = useState(null);\n\n function SubmitSalesOrder() {\n setStatus(\"Submitting Sales Order...\");\n var obj = {\n customerid: p.id,\n itemid: itemId,\n userid: userId,\n quantity: itemQuantity,\n dateordered: moment().format()\n };\n axios.post(\"http://localhost:3001/salesorder/add\", obj).then(data => {\n if (Array.isArray(data.data) && data.data.length > 0) {\n //Successfully submitted order.\n setStatus(\"Order submitted! Returning back to orders page...\");\n p.setPage(null);\n } else {\n Promise.reject(\"Order failed to submit!\");\n setStatus(null);\n }\n }).catch(err => {\n setLastError(err.message);\n setStatus(null);\n });\n }\n\n if (status === null) {\n return /*#__PURE__*/React.createElement(React.Fragment, null, lastError, /*#__PURE__*/React.createElement(\"br\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 517,\n columnNumber: 20\n }\n }), /*#__PURE__*/React.createElement(\"button\", {\n onClick: () => {\n p.setPage(null);\n },\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 518,\n columnNumber: 9\n }\n }, \"< Back\"), /*#__PURE__*/React.createElement(\"br\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 519,\n columnNumber: 9\n }\n }), /*#__PURE__*/React.createElement(\"br\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 519,\n columnNumber: 14\n }\n }), /*#__PURE__*/React.createElement(\"label\", {\n for: \"item\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 520,\n columnNumber: 9\n }\n }, /*#__PURE__*/React.createElement(\"b\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 520,\n columnNumber: 27\n }\n }, \"Requested Item:\")), /*#__PURE__*/React.createElement(ItemsSelectionList, {\n itemId: itemId,\n setItemId: setItemId,\n items: p.items,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 520,\n columnNumber: 57\n }\n }), \" \", /*#__PURE__*/React.createElement(\"label\", {\n for: \"quantity\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 520,\n columnNumber: 133\n }\n }, /*#__PURE__*/React.createElement(\"b\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 520,\n columnNumber: 155\n }\n }, \"Quantity:\")), \" x\", /*#__PURE__*/React.createElement(\"input\", {\n type: \"number\",\n style: {\n width: \"60px\"\n },\n name: \"quantity\",\n id: \"quantity\",\n value: itemQuantity,\n onChange: e => {\n setItemQuantity(e.currentTarget.value);\n },\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 520,\n columnNumber: 181\n }\n }), /*#__PURE__*/React.createElement(Item, {\n id: itemId,\n items: p.items,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 521,\n columnNumber: 9\n }\n }), /*#__PURE__*/React.createElement(\"br\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 522,\n columnNumber: 9\n }\n }), /*#__PURE__*/React.createElement(\"br\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 522,\n columnNumber: 14\n }\n }), /*#__PURE__*/React.createElement(\"label\", {\n for: \"user\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 523,\n columnNumber: 9\n }\n }, /*#__PURE__*/React.createElement(\"b\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 523,\n columnNumber: 27\n }\n }, \"Sales User:\")), /*#__PURE__*/React.createElement(UsersSelectionList, {\n users: p.users,\n userId: userId,\n setUserId: setUserId,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 523,\n columnNumber: 53\n }\n }), /*#__PURE__*/React.createElement(\"button\", {\n onClick: () => {\n SubmitSalesOrder();\n },\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 524,\n columnNumber: 9\n }\n }, \"Submit\"));\n } else {\n return /*#__PURE__*/React.createElement(React.Fragment, null, status);\n }\n};\n\nconst DisplayCustomerOrders = p => {\n const [status, setStatus] = useState(\"Fetching orders...\");\n const [orders, setOrders] = useState([]);\n const [reload, setReload] = useState(true);\n\n var FetchOrders = () => {\n axios.get(\"http://localhost:3001/salesorder/bycustomerid/\" + p.id).then(data => {\n setOrders(data.data);\n setStatus(\"Done! (\" + data.data.length + \") orders found.\");\n });\n };\n\n if (reload) {\n FetchOrders();\n setReload(false);\n }\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n className: \"row\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 556,\n columnNumber: 5\n }\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"col-md-4\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 557,\n columnNumber: 7\n }\n }, /*#__PURE__*/React.createElement(\"button\", {\n onClick: () => {\n p.setPage(\"PROFILE\");\n },\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 558,\n columnNumber: 9\n }\n }, \"Edit Profile\")), /*#__PURE__*/React.createElement(\"div\", {\n className: \"offset-md-4 col-md-4\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 560,\n columnNumber: 7\n }\n }, /*#__PURE__*/React.createElement(\"button\", {\n onClick: () => {\n p.setPage(\"PLACEORDER\");\n },\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 561,\n columnNumber: 9\n }\n }, \"New Sales Order +\"))), /*#__PURE__*/React.createElement(\"div\", {\n className: \"row\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 564,\n columnNumber: 5\n }\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"col-md-12\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 565,\n columnNumber: 7\n }\n }, status, orders.map(order => /*#__PURE__*/React.createElement(\"div\", {\n className: \"order\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 567,\n columnNumber: 28\n }\n }, /*#__PURE__*/React.createElement(SalesOrder, {\n order: order,\n users: p.users,\n id: order.itemid,\n items: p.items,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 567,\n columnNumber: 51\n }\n }))))));\n};\n\nconst DisplayUserOrders = p => {\n const [status, setStatus] = useState(\"Fetching orders...\");\n const [orders, setOrders] = useState([]);\n const [reload, setReload] = useState(true);\n\n var FetchOrders = () => {\n axios.get(\"http://localhost:3001/salesorder/byuserid/\" + p.id).then(data => {\n setOrders(data.data);\n setStatus(\"Done! (\" + data.data.length + \") orders found.\");\n });\n };\n\n if (reload) {\n FetchOrders();\n setReload(false);\n }\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n className: \"row\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 594,\n columnNumber: 5\n }\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"col-md-12\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 595,\n columnNumber: 7\n }\n }, status, orders.map(order => /*#__PURE__*/React.createElement(\"div\", {\n className: \"order\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 597,\n columnNumber: 28\n }\n }, /*#__PURE__*/React.createElement(SalesOrder, {\n setReload: setReload,\n completeOrder: p.completeOrder,\n order: order,\n users: p.users,\n id: order.itemid,\n items: p.items,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 597,\n columnNumber: 51\n }\n }))))));\n};\n\nconst CustomerPage = p => {\n const [page, setPage] = useState(null); //This view has 3 pages: View orders, place orders, view / edit profile\n\n var contents;\n\n const changePage = () => {\n setPage(null);\n };\n\n switch (page) {\n case \"PLACEORDER\":\n {\n contents = /*#__PURE__*/React.createElement(CreateCustomerSalesOrder, {\n items: p.items,\n id: p.id,\n users: p.users,\n setPage: setPage,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 615,\n columnNumber: 16\n }\n });\n }\n break;\n\n case \"PROFILE\":\n {\n contents = /*#__PURE__*/React.createElement(ModifyProfilePage, {\n id: p.id,\n users: p.users,\n role: p.role,\n call: changePage,\n username: p.username,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 618,\n columnNumber: 16\n }\n });\n }\n break;\n\n default:\n {\n contents = /*#__PURE__*/React.createElement(DisplayCustomerOrders, {\n setPage: setPage,\n id: p.id,\n items: p.items,\n users: p.users,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 621,\n columnNumber: 16\n }\n });\n }\n }\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, contents);\n};\n\nconst CreateUserPurchaseOrder = p => {\n const [itemId, setItemId] = useState(p.items[0].id);\n const [itemQuantity, setItemQuantity] = useState(1);\n const [manufacturerId, setManufacturerId] = useState(p.manufacturers[0].id);\n const [status, setStatus] = useState(null);\n const [lastError, setLastError] = useState(null);\n\n function SubmitPurchaseOrder() {\n setStatus(\"Submitting Purchase Order...\");\n var obj = {\n userid: p.id,\n itemid: itemId,\n manufacturerid: manufacturerId,\n quantity: itemQuantity,\n dateordered: moment().format()\n };\n axios.post(\"http://localhost:3001/purchaseorder/add\", obj).then(data => {\n if (Array.isArray(data.data) && data.data.length > 0) {\n //Successfully submitted order.\n setStatus(\"Order submitted! Returning back to orders page...\");\n p.setPage(null);\n } else {\n Promise.reject(\"Order failed to submit!\");\n setStatus(null);\n }\n }).catch(err => {\n setLastError(err.message);\n setStatus(null);\n });\n }\n\n if (status === null) {\n return /*#__PURE__*/React.createElement(React.Fragment, null, lastError, /*#__PURE__*/React.createElement(\"br\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 662,\n columnNumber: 20\n }\n }), /*#__PURE__*/React.createElement(\"button\", {\n onClick: () => {\n p.setPage(null);\n },\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 663,\n columnNumber: 9\n }\n }, \"< Back\"), /*#__PURE__*/React.createElement(\"br\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 664,\n columnNumber: 9\n }\n }), /*#__PURE__*/React.createElement(\"br\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 664,\n columnNumber: 14\n }\n }), /*#__PURE__*/React.createElement(\"label\", {\n for: \"item\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 665,\n columnNumber: 9\n }\n }, /*#__PURE__*/React.createElement(\"b\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 665,\n columnNumber: 27\n }\n }, \"Requested Item:\")), /*#__PURE__*/React.createElement(ItemsSelectionList, {\n itemId: itemId,\n setItemId: setItemId,\n items: p.items,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 665,\n columnNumber: 57\n }\n }), \" \", /*#__PURE__*/React.createElement(\"label\", {\n for: \"quantity\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 665,\n columnNumber: 133\n }\n }, /*#__PURE__*/React.createElement(\"b\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 665,\n columnNumber: 155\n }\n }, \"Quantity:\")), \" x\", /*#__PURE__*/React.createElement(\"input\", {\n type: \"number\",\n style: {\n width: \"60px\"\n },\n name: \"quantity\",\n id: \"quantity\",\n value: itemQuantity,\n onChange: e => {\n setItemQuantity(e.currentTarget.value);\n },\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 665,\n columnNumber: 181\n }\n }), /*#__PURE__*/React.createElement(Item, {\n id: itemId,\n items: p.items,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 666,\n columnNumber: 9\n }\n }), /*#__PURE__*/React.createElement(\"br\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 667,\n columnNumber: 9\n }\n }), /*#__PURE__*/React.createElement(\"br\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 667,\n columnNumber: 14\n }\n }), /*#__PURE__*/React.createElement(\"label\", {\n for: \"user\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 668,\n columnNumber: 9\n }\n }, /*#__PURE__*/React.createElement(\"b\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 668,\n columnNumber: 27\n }\n }, \"Manufacturer:\")), /*#__PURE__*/React.createElement(ManufacturerSelectionList, {\n manufacturers: p.manufacturers,\n manufacturerId: manufacturerId,\n setManufacturerId: setManufacturerId,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 668,\n columnNumber: 55\n }\n }), /*#__PURE__*/React.createElement(\"button\", {\n onClick: () => {\n SubmitPurchaseOrder();\n },\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 669,\n columnNumber: 9\n }\n }, \"Submit\"));\n } else {\n return /*#__PURE__*/React.createElement(React.Fragment, null, status);\n }\n};\n\nconst DisplayPurchaseOrders = p => {\n const [status, setStatus] = useState(\"Fetching orders...\");\n const [orders, setOrders] = useState([]);\n const [reload, setReload] = useState(true);\n\n var FetchOrders = () => {\n axios.get(\"http://localhost:3001/purchaseorder/byuserid/\" + p.id).then(data => {\n setOrders(data.data);\n setStatus(\"Done! (\" + data.data.length + \") orders found.\");\n });\n };\n\n if (reload) {\n FetchOrders();\n setReload(false);\n }\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n className: \"row\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 701,\n columnNumber: 5\n }\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"col-md-12\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 702,\n columnNumber: 7\n }\n }, status, orders.map(order => /*#__PURE__*/React.createElement(\"div\", {\n className: \"order\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 704,\n columnNumber: 28\n }\n }, /*#__PURE__*/React.createElement(PurchaseOrder, {\n setReload: setReload,\n completeOrder: p.completeOrder,\n order: order,\n manufacturers: p.manufacturers,\n id: order.itemid,\n items: p.items,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 704,\n columnNumber: 51\n }\n }))))));\n};\n\nconst DisplayManufacturerPurchaseOrders = p => {\n const [status, setStatus] = useState(\"Fetching orders...\");\n const [orders, setOrders] = useState([]);\n const [reload, setReload] = useState(true);\n\n var FetchOrders = () => {\n axios.get(\"http://localhost:3001/purchaseorder/bymanufacturerid/\" + p.id).then(data => {\n setOrders(data.data);\n setStatus(\"Done! (\" + data.data.length + \") orders found.\");\n });\n };\n\n if (reload) {\n FetchOrders();\n setReload(false);\n }\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n className: \"row\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 731,\n columnNumber: 5\n }\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"col-md-12\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 732,\n columnNumber: 7\n }\n }, status, orders.map(order => /*#__PURE__*/React.createElement(\"div\", {\n className: \"order\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 734,\n columnNumber: 28\n }\n }, /*#__PURE__*/React.createElement(PurchaseOrder, {\n setReload: setReload,\n completeOrder: p.completeOrder,\n order: order,\n manufacturers: p.manufacturers,\n id: order.itemid,\n items: p.items,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 734,\n columnNumber: 51\n }\n }))))));\n};\n\nconst UserPage = p => {\n const [page, setPage] = useState(null); //This view has 3 pages: View orders, place orders, view / edit profile\n\n var contents;\n\n const changePage = () => {\n setPage(null);\n };\n\n switch (page) {\n case \"PLACEORDER\":\n {\n contents = /*#__PURE__*/React.createElement(CreateUserPurchaseOrder, {\n items: p.items,\n id: p.id,\n manufacturers: p.manufacturers,\n users: p.users,\n setPage: setPage,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 752,\n columnNumber: 16\n }\n });\n }\n break;\n\n case \"PROFILE\":\n {\n contents = /*#__PURE__*/React.createElement(ModifyProfilePage, {\n setReloadUserDatabase: p.setReloadUserDatabase,\n id: p.id,\n users: p.users,\n role: p.role,\n call: changePage,\n username: p.username,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 755,\n columnNumber: 16\n }\n });\n }\n break;\n\n default:\n {\n contents = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n className: \"row\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 760,\n columnNumber: 7\n }\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"col-md-4\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 761,\n columnNumber: 9\n }\n }, /*#__PURE__*/React.createElement(\"button\", {\n onClick: () => {\n setPage(\"PROFILE\");\n },\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 762,\n columnNumber: 11\n }\n }, \"Edit Profile\")), /*#__PURE__*/React.createElement(\"div\", {\n className: \"offset-md-4 col-md-4\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 764,\n columnNumber: 9\n }\n }, /*#__PURE__*/React.createElement(\"button\", {\n onClick: () => {\n setPage(\"PLACEORDER\");\n },\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 765,\n columnNumber: 11\n }\n }, \"New Purchase Order +\"))), /*#__PURE__*/React.createElement(\"div\", {\n className: \"row\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 768,\n columnNumber: 7\n }\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"col-md-6\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 769,\n columnNumber: 9\n }\n }, /*#__PURE__*/React.createElement(\"h3\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 770,\n columnNumber: 11\n }\n }, \"Current Purchase Orders:\"), /*#__PURE__*/React.createElement(DisplayPurchaseOrders, {\n setPage: setPage,\n id: p.id,\n items: p.items,\n manufacturers: p.manufacturers,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 771,\n columnNumber: 11\n }\n })), /*#__PURE__*/React.createElement(\"div\", {\n className: \"col-md-6\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 773,\n columnNumber: 9\n }\n }, /*#__PURE__*/React.createElement(\"h3\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 774,\n columnNumber: 11\n }\n }, \"Your Sales Orders:\"), /*#__PURE__*/React.createElement(DisplayUserOrders, {\n completeOrder: true,\n setPage: setPage,\n id: p.id,\n items: p.items,\n users: p.users,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 775,\n columnNumber: 11\n }\n }))));\n }\n }\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, contents);\n};\n\nconst ModifyProducts = p => {\n const [disabled, setDisabled] = useState(false);\n const [name, setName] = useState(\"\");\n const [description, setDescription] = useState(\"\");\n\n function SubmitItem() {\n setDisabled(true);\n var myObj = {\n name: document.getElementById(\"name\").value,\n description: document.getElementById(\"description\").value\n };\n axios.post(\"http://localhost:3001/item/add\", myObj).then(data => {\n p.setReloadItemDatabase(true);\n setDisabled(false);\n });\n }\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"button\", {\n onClick: () => {\n p.call();\n },\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 806,\n columnNumber: 9\n }\n }, \"< Back\"), /*#__PURE__*/React.createElement(\"br\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 807,\n columnNumber: 9\n }\n }), /*#__PURE__*/React.createElement(\"br\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 807,\n columnNumber: 14\n }\n }), p.items.map(item => /*#__PURE__*/React.createElement(Item, {\n items: p.items,\n id: item.id,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 808,\n columnNumber: 30\n }\n })), /*#__PURE__*/React.createElement(\"div\", {\n className: \"row text-center\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 809,\n columnNumber: 9\n }\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"col-md-4\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 810,\n columnNumber: 11\n }\n }, /*#__PURE__*/React.createElement(\"label\", {\n for: \"name\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 810,\n columnNumber: 37\n }\n }, /*#__PURE__*/React.createElement(\"b\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 810,\n columnNumber: 55\n }\n }, \"Item Name:\")), /*#__PURE__*/React.createElement(\"input\", {\n type: \"text\",\n onChange: e => {\n setName(e.currentTarget.value);\n },\n value: name,\n id: \"name\",\n disabled: disabled,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 810,\n columnNumber: 80\n }\n })), /*#__PURE__*/React.createElement(\"div\", {\n className: \"col-md-8\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 811,\n columnNumber: 11\n }\n }, /*#__PURE__*/React.createElement(\"label\", {\n for: \"description\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 811,\n columnNumber: 37\n }\n }, /*#__PURE__*/React.createElement(\"b\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 811,\n columnNumber: 62\n }\n }, \"Description:\")), /*#__PURE__*/React.createElement(\"input\", {\n type: \"text\",\n onChange: e => {\n setDescription(e.currentTarget.value);\n },\n disabled: disabled,\n value: description,\n id: \"description\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 811,\n columnNumber: 89\n }\n })), /*#__PURE__*/React.createElement(\"br\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 812,\n columnNumber: 11\n }\n }), /*#__PURE__*/React.createElement(\"button\", {\n disabled: disabled,\n onClick: () => {\n SubmitItem();\n },\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 813,\n columnNumber: 11\n }\n }, \"Submit New Product\")));\n};\n\nconst ManufacturerPage = p => {\n const [page, setPage] = useState(null); //This view has 3 pages: Create new Products, View orders, view / edit profile\n\n var contents;\n\n const changePage = () => {\n setPage(null);\n };\n\n switch (page) {\n case \"PRODUCTS\":\n {\n contents = /*#__PURE__*/React.createElement(ModifyProducts, {\n setReloadItemDatabase: p.setReloadItemDatabase,\n id: p.id,\n items: p.items,\n users: p.users,\n role: p.role,\n call: changePage,\n username: p.username,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 830,\n columnNumber: 16\n }\n });\n }\n break;\n\n case \"PROFILE\":\n {\n contents = /*#__PURE__*/React.createElement(ModifyProfilePage, {\n id: p.id,\n users: p.users,\n role: p.role,\n call: changePage,\n username: p.username,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 833,\n columnNumber: 16\n }\n });\n }\n break;\n\n default:\n {\n contents = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n className: \"row\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 838,\n columnNumber: 7\n }\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"col-md-4\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 839,\n columnNumber: 9\n }\n }, /*#__PURE__*/React.createElement(\"button\", {\n onClick: () => {\n setPage(\"PROFILE\");\n },\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 840,\n columnNumber: 11\n }\n }, \"Edit Profile\")), /*#__PURE__*/React.createElement(\"div\", {\n className: \"offset-md-4 col-md-4\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 842,\n columnNumber: 9\n }\n }, /*#__PURE__*/React.createElement(\"button\", {\n onClick: () => {\n setPage(\"PRODUCTS\");\n },\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 843,\n columnNumber: 11\n }\n }, \"+ Add Products\"))), /*#__PURE__*/React.createElement(\"div\", {\n className: \"row\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 846,\n columnNumber: 7\n }\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"col-md-12\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 847,\n columnNumber: 9\n }\n }, /*#__PURE__*/React.createElement(\"h3\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 848,\n columnNumber: 11\n }\n }, \"Your Purchase Orders:\"), /*#__PURE__*/React.createElement(DisplayManufacturerPurchaseOrders, {\n completeOrder: true,\n setPage: setPage,\n id: p.id,\n items: p.items,\n manufacturers: p.manufacturers,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 849,\n columnNumber: 11\n }\n }))));\n }\n }\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, contents);\n};\n\nfunction App() {\n const [itemDatabase, setItemDatabase] = useState([]);\n const [userDatabase, setUserDatabase] = useState([]);\n const [customerDatabase, setCustomerDatabase] = useState([]);\n const [manufacturerDatabase, setManufacturerDatabase] = useState([]);\n const [password, setPassword] = useState(null);\n const [username, setUsername] = useState(null);\n const [uniqueid, setUniqueId] = useState(null);\n const [role, setRole] = useState(null);\n const [loginState, setLoginState] = useState(null);\n const [pageView, setPageView] = useState(\"LOGIN\");\n const [loginPageMessage, setLoginPageMessage] = useState(\"\");\n const [reloadItemDatabase, setReloadItemDatabase] = useState(true);\n const [reloadUserDatabase, setReloadUserDatabase] = useState(true);\n const [reloadCustomerDatabase, setReloadCustomerDatabase] = useState(true);\n const [reloadManufacturerDatabase, setReloadManufacturerDatabase] = useState(true);\n\n if (reloadItemDatabase) {\n axios.get(\"http://localhost:3001/item/view\").then(data => {\n setItemDatabase(data.data);\n setReloadItemDatabase(false);\n });\n }\n\n if (reloadUserDatabase) {\n axios.get(\"http://localhost:3001/\").then(data => {\n setUserDatabase(data.data);\n setReloadUserDatabase(false);\n });\n }\n\n if (reloadCustomerDatabase) {\n axios.get(\"http://localhost:3001/customer/view\").then(data => {\n setCustomerDatabase(data.data);\n setReloadCustomerDatabase(false);\n });\n }\n\n if (reloadManufacturerDatabase) {\n axios.get(\"http://localhost:3001/manufacturer/view\").then(data => {\n setManufacturerDatabase(data.data);\n setReloadManufacturerDatabase(false);\n });\n }\n\n var contents = null;\n\n switch (pageView) {\n case \"LOGIN\":\n {\n contents = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"h3\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 915,\n columnNumber: 7\n }\n }, loginPageMessage), /*#__PURE__*/React.createElement(DisplayLoginForm, {\n setUniqueId: setUniqueId,\n role: role,\n setRole: setRole,\n setLoginPageMessage: setLoginPageMessage,\n setPageView: setPageView,\n setUsername: setUsername,\n setPassword: setPassword,\n setLoginState: setLoginState,\n loginState: loginState,\n username: username,\n password: password,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 916,\n columnNumber: 7\n }\n }));\n }\n break;\n\n case \"REGISTER\":\n {\n contents = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(DisplayRegisterForm, {\n setReloadUserDatabase: setReloadUserDatabase,\n setPageView: setPageView,\n setLoginPageMessage: setLoginPageMessage,\n username: username,\n password: password,\n setUsername: setUsername,\n setPassword: setPassword,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 923,\n columnNumber: 7\n }\n }));\n }\n break;\n\n case \"MANUFACTURER\":\n {\n contents = /*#__PURE__*/React.createElement(\"div\", {\n className: \"col-md-12\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 927,\n columnNumber: 16\n }\n }, /*#__PURE__*/React.createElement(\"h3\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 928,\n columnNumber: 7\n }\n }, \"Manufacturer's Dashboard\"), /*#__PURE__*/React.createElement(ManufacturerPage, {\n setReloadItemDatabase: setReloadItemDatabase,\n setReloadManufacturerDatabase: setReloadManufacturerDatabase,\n id: uniqueid,\n customers: customerDatabase,\n manufacturers: manufacturerDatabase,\n items: itemDatabase,\n username: username,\n role: role,\n users: userDatabase,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 929,\n columnNumber: 7\n }\n }));\n }\n break;\n\n case \"USER\":\n {\n contents = /*#__PURE__*/React.createElement(\"div\", {\n className: \"col-md-12\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 933,\n columnNumber: 16\n }\n }, /*#__PURE__*/React.createElement(\"h3\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 934,\n columnNumber: 7\n }\n }, \"User Dashboard\"), /*#__PURE__*/React.createElement(UserPage, {\n setReloadUserDatabase: setReloadUserDatabase,\n id: uniqueid,\n customers: customerDatabase,\n manufacturers: manufacturerDatabase,\n items: itemDatabase,\n username: username,\n role: role,\n users: userDatabase,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 935,\n columnNumber: 7\n }\n }));\n }\n break;\n\n case \"CUSTOMER\":\n {\n contents = /*#__PURE__*/React.createElement(\"div\", {\n className: \"col-md-12\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 939,\n columnNumber: 16\n }\n }, /*#__PURE__*/React.createElement(\"h3\", {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 940,\n columnNumber: 7\n }\n }, \"Customer Dashboard\"), /*#__PURE__*/React.createElement(CustomerPage, {\n id: uniqueid,\n items: itemDatabase,\n username: username,\n role: role,\n users: userDatabase,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 941,\n columnNumber: 7\n }\n }));\n }\n break;\n }\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n className: \"container\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 948,\n columnNumber: 5\n }\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"row pt-5 pb-5 card border text-center\",\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 949,\n columnNumber: 5\n }\n }, contents)));\n}\n\nconst DisplayUserOrderForm = p => {};\n\nexport default App;","map":{"version":3,"sources":["/home/sigonasr2/Please-Contain-Yourself/ecommerce_docker/frontend_server/src/App.js"],"names":["React","useState","useEffect","md5","require","axios","moment","DisplayRegisterForm","p","userType","setUserType","registerState","setRegisterState","status","setStatus","contents","setContents","errorMessage","setErrorMessage","fields","name","value","RegisterUser","convertName","type","toLowerCase","slice","myObj","myData","uniqueid","undefined","forEach","field","document","getElementById","get","username","then","data","console","log","length","Promise","reject","Error","post","id","password","role","setPassword","setLoginPageMessage","setReloadUserDatabase","setPageView","catch","err","color","message","Validated","inputs","getElementsByTagName","i","input","classList","remove","empty_inputs","push","add","e","currentTarget","map","setUsername","DisplayLoginForm","LoginUser","Array","isArray","setRole","setUniqueId","toUpperCase","setLoginState","VerifyFormInputs","loginState","Item","items","thisItem","filter","item","description","User","users","thisUser","user","firstname","lastname","Manufacturer","manufacturers","thisManufacturer","manufacturer","companyname","SalesOrder","CompleteOrder","datereceived","format","put","order","setReload","completeOrder","quantity","userid","dateordered","PurchaseOrder","manufacturerid","ItemsSelectionList","itemId","setItemId","UsersSelectionList","userId","setUserId","ManufacturerSelectionList","manufacturerId","setManufacturerId","ModifyProfilePage","setFields","updateRequired","setUpdateRequired","statusMessage","setStatusMessage","updatingProfile","setUpdatingProfile","email","customername","customeremail","customerphonenumber","contactname","contactemail","contactphonenumber","UpdateProfile","call","count","CreateCustomerSalesOrder","itemQuantity","setItemQuantity","lastError","setLastError","SubmitSalesOrder","obj","customerid","itemid","setPage","width","DisplayCustomerOrders","orders","setOrders","reload","FetchOrders","DisplayUserOrders","CustomerPage","page","changePage","CreateUserPurchaseOrder","SubmitPurchaseOrder","DisplayPurchaseOrders","DisplayManufacturerPurchaseOrders","UserPage","ModifyProducts","disabled","setDisabled","setName","setDescription","SubmitItem","setReloadItemDatabase","ManufacturerPage","App","itemDatabase","setItemDatabase","userDatabase","setUserDatabase","customerDatabase","setCustomerDatabase","manufacturerDatabase","setManufacturerDatabase","pageView","loginPageMessage","reloadItemDatabase","reloadUserDatabase","reloadCustomerDatabase","setReloadCustomerDatabase","reloadManufacturerDatabase","setReloadManufacturerDatabase","DisplayUserOrderForm"],"mappings":"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","sourcesContent":["import React,{useState,useEffect} from 'react';\nimport logo from './logo.svg';\nimport './App.css';\n\nvar md5 = require('md5');\nvar axios = require('axios');\nvar moment = require('moment');\n\nconst DisplayRegisterForm = (p)=>{\n const [userType,setUserType] = useState(\"Customer\");\n const [registerState,setRegisterState] = useState(\"REGISTER\");\n const [status,setStatus] = useState(\"Contacting Server...\");\n const [contents,setContents] = useState(\"\");\n const [errorMessage,setErrorMessage] = useState(\"\");\n\n var fields = {\n \"Customer\":[\n {name:\"Company Name\",value:\"companyname\"},\n {name:\"Name\",value:\"customername\"},\n {name:\"Email\",value:\"customeremail\"},\n {name:\"Phone Number\",value:\"customerphonenumber\"},],\n \"User\":[\n {name:\"First Name\",value:\"firstname\"},\n {name:\"Last Name\",value:\"lastname\"},\n {name:\"Email\",value:\"email\"},],\n \"Manufacturer\":[\n {name:\"Company Name\",value:\"companyname\"},\n {name:\"Contact Name\",value:\"contactname\"},\n {name:\"Contact Email\",value:\"contactemail\"},\n {name:\"Contact Phone Number\",value:\"contactphonenumber\"},],\n }\n\n //var contents;\n //var errorMessage;\n\n var RegisterUser = ()=>{\n //First add a new customer/manufacturer/user\n\n var convertName = (type)=>{\n if (type!==\"User\") {\n return userType[0].toLowerCase()+userType.slice(1)\n } else {\n return \"users\"\n }\n }\n\n var myObj = {}\n var myData = {}\n var uniqueid = undefined;\n fields[userType].forEach((field)=>myObj[field.value]=document.getElementById(field.name).value)\n //console.log(myObj)\n axios.get('http://localhost:3001/login/'+p.username)\n .then((data)=>{\n //setRegisterState(\"SERVER_CONTACT\");\n setStatus(\"Preparing Account...\");\n console.log(data.data)\n if (data.data.length>0) {\n return Promise.reject(new Error(\"Duplicate user detected\"));\n } else {\n if (userType===\"User\") {\n return axios.post('http://localhost:3001/'+convertName(userType)+'/adduser',myObj)\n } else {\n return axios.post('http://localhost:3001/'+convertName(userType)+'/add',myObj)\n }\n }\n })\n .then((data)=>{\n //console.log(JSON.stringify(data));\n //data.id\n //setStatus(data);\n //myData = JSON.stringify(data);\n setStatus(\"Registering Account...\");\n var uniqueid = data.data[0].id;\n var myObj = {uniqueid:uniqueid,username:p.username,password:md5(p.password),role:userType}\n return axios.post(\"http://localhost:3001/logininfo/add\",myObj)\n })\n .then((data)=>{\n //console.log(data)\n setStatus(\"Your account has been successfully registered! Please try logging in! (You will be redirected to the login page...)\");\n p.setPassword(\"\")\n p.setLoginPageMessage(\"Your account has been successfully registered! Please try logging in!\")\n p.setReloadUserDatabase(true)\n p.setPageView(\"LOGIN\")\n })\n .catch((err)=>{\n setRegisterState(\"REGISTER\");\n setContents(<>\n <h2 style={{color:\"red\"}}>{err.message}</h2>\n </>);\n });\n //Then register a new user using the returned ID.\n }\n\n function Validated() {\n var inputs = document.getElementsByTagName(\"input\");\n setErrorMessage(\"\")\n for (var i=0;i<inputs.length;i++){var input=inputs[i]; input.classList.remove(\"error\")}\n \n var empty_inputs = [] \n for (var i=0;i<inputs.length;i++) {var input=inputs[i]; if (input.value.length===0){empty_inputs.push(input)}};\n\n if (empty_inputs.length>0) {\n setErrorMessage(<>\n <h2 style={{color:\"red\"}}>Please fix invalid fields!</h2>\n </>);\n for (var i=0;i<empty_inputs.length;i++){var input=empty_inputs[i]; input.classList.add(\"error\")}\n return false;\n } else {\n return true;\n }\n }\n \n if (registerState!==\"SERVER_CONTACT\") {\n return (\n <>\n <div className=\"offset-md-3 col-md-6\">\n {errorMessage}\n {contents}\n <h2>Register</h2><br/>\n <label for=\"type\">User Type:</label>\n <select onChange={(e)=>{setUserType(e.currentTarget.value)}} value={userType} name=\"type\" id=\"type\">\n <option value=\"Customer\">Customer</option>\n <option value=\"User\">User</option>\n <option value=\"Manufacturer\">Manufacturer</option>\n </select><br/><br/>\n {fields[userType].map((field)=><><br/><label for={field.name}><b>{field.name}:</b></label><input type=\"text\" name={field.name} id={field.name}/></>)}\n <br/><br/>\n <label for=\"username\"><b>Username:</b></label><input type=\"text\" onChange={(e)=>{p.setUsername(e.currentTarget.value)}} id=\"username\" name=\"username\"/><br/>\n <label for=\"password\"><b>Password:</b></label><input type=\"password\" onChange={(e)=>{p.setPassword(e.currentTarget.value)}} id=\"password\" name=\"password\"/><br/><br/>\n <button onClick={()=>{if (Validated()) {\n RegisterUser();\n setRegisterState(\"SERVER_CONTACT\")\n }}}>Register</button>\n </div>\n </>\n );\n } else {\n return (\n <>\n <div className=\"offset-md-3 col-md-6\">\n <h2>Registering new {userType}</h2>\n {status}\n </div>\n </>\n )\n }\n}\n\nconst DisplayLoginForm = (p)=>{\n const [status,setStatus] = useState(\"Contacting Server...\")\n var contents = null;\n\n var LoginUser = ()=>{\n axios.get(\"http://localhost:3001/login/\"+p.username+\"/\"+md5(p.password))\n .then((data)=>{\n //setStatus(JSON.stringify(data))\n if (Array.isArray(data.data) && data.data.length>0) {\n //The first value should hold our uniqueid plus our role type.\n p.setRole(data.data[0].role)\n p.setUniqueId(data.data[0].uniqueid)\n setStatus(\"Found your data... Sending you to \"+data.data[0].role+\" homepage.\")\n p.setPageView(data.data[0].role.toUpperCase())\n } else {\n Promise.reject(\"Invalid Username/Password Combination!\")\n }\n })\n .catch((err)=>{\n setStatus(err.message);\n p.setLoginState(\"COULDNOTCONNECT\")\n })\n }\n\n var VerifyFormInputs = ()=>{\n if (p.username && p.password && p.username.length>0 && p.password.length>0) {\n p.setLoginState(\"LOGGING IN\")\n p.setLoginPageMessage(\"\")\n LoginUser();\n } else {\n p.setLoginState(\"INVALID\")\n }\n }\n\n switch (p.loginState) {\n case \"FAILED\":{\n contents = <h3 style={{color:\"red\"}}>Incorrect Credentials!</h3>;\n }break;\n case \"COULDNOTCONNECT\":{\n contents = <h3 style={{color:\"red\"}}>Could not contact server! Please try again!</h3>;\n }break;\n case \"INVALID\":{\n contents = <h3 style={{color:\"red\"}}>Please provide a valid username and password!</h3>;\n }break;\n }\n\n if (p.loginState!==\"LOGGING IN\") {\n return (\n <>\n {contents}\n <div className=\"offset-md-3 col-md-6\">\n <h2>Login</h2><br/>\n <label for=\"username\"><b>Username: </b></label>\n <input type=\"text\" name=\"username\" id=\"username\" onChange={(e)=>{p.setUsername(e.currentTarget.value)}} value={p.username}/>\n <br/><br/>\n <label for=\"password\"><b>Password: </b></label>\n <input type=\"password\" name=\"password\" id=\"password\" onChange={(e)=>{p.setPassword(e.currentTarget.value)}} value={p.password}/>\n <br/><br/>\n <input type=\"submit\" onClick={()=>{VerifyFormInputs()}} value=\"Login\"/>\n <br/><br/>\n <span className=\"link\" onClick={()=>{p.setPageView(\"REGISTER\")}}>Need an account?</span>\n </div>\n </>\n );\n } else {\n return (\n <>\n <h2>Logging you in...</h2>\n {status}\n </>\n );\n }\n}\n\nconst Item = (p)=>{\n var contents;\n if (p.items) {\n var thisItem = p.items.filter((item)=>item.id==p.id)[0];\n if (thisItem) {\n contents=<>\n <div className=\"row\">\n <div className=\"col-md-4\">\n <b>{thisItem.name}</b>\n </div>\n <div className=\"col-md-8\">\n {thisItem.description}\n </div>\n </div>\n </>;\n } else {\n contents = \"Could not find item \"+p.id\n }\n }\n return (\n <>\n {contents}\n </>\n )\n}\n\nconst User = (p)=>{\n var contents;\n if (p.users) {\n var thisUser = p.users.filter((user)=>user.id==p.id)[0];\n if (thisUser) {\n contents = thisUser.firstname +\" \"+thisUser.lastname\n }\n }\n return (\n <>\n {contents}\n </>\n )\n}\n\nconst Manufacturer = (p)=>{\n var contents;\n if (p.manufacturers) {\n var thisManufacturer = p.manufacturers.filter((manufacturer)=>manufacturer.id==p.id)[0];\n if (thisManufacturer) {\n contents = thisManufacturer.companyname\n }\n }\n return (\n <>\n {contents}\n </>\n )\n}\n\nconst SalesOrder = (p)=>{\n\n const CompleteOrder=()=>{\n var myObj={datereceived:moment().format()}\n axios.put(\"http://localhost:3001/salesorder/setreceived/\"+p.order.id,myObj)\n .then((data)=>{\n p.setReload(true)\n })\n }\n\n return (\n <>\n {(p.completeOrder && !p.order.datereceived)?<button onClick={()=>{CompleteOrder()}}>Complete Order</button>:<></>}{<Item id={p.id} items={p.items}/>}x{p.order.quantity} - <b>Submitted </b> to <b><User id={p.order.userid} users={p.users}/></b><br/><br/> <b>Ordered:</b> {p.order.dateordered} - <b>Received:</b> {(p.order.datereceived)?<div className=\"orderdone\">{p.order.datereceived}</div>:\"Order Pending...\"}\n </>\n )\n}\n\nconst PurchaseOrder = (p)=>{\n\n const CompleteOrder=()=>{\n var myObj={datereceived:moment().format()}\n axios.put(\"http://localhost:3001/purchaseorder/setreceived/\"+p.order.id,myObj)\n .then((data)=>{\n p.setReload(true)\n })\n }\n\n return (\n <>\n {(p.completeOrder && !p.order.datereceived)?<button onClick={()=>{CompleteOrder()}}>Complete Order</button>:<></>}{<Item id={p.id} items={p.items}/>}x{p.order.quantity} - <b>Submitted </b> to <b><Manufacturer id={p.order.manufacturerid} manufacturers={p.manufacturers}/></b><br/><br/> <b>Ordered:</b> {p.order.dateordered} - <b>Received:</b> {(p.order.datereceived)?<div className=\"orderdone\">{p.order.datereceived}</div>:\"Order Pending...\"}\n </>\n )\n}\n\nconst ItemsSelectionList = (p)=>{\n return (\n <>\n <select name=\"item\" id=\"item\" value={p.itemId} onChange={(e)=>{p.setItemId(e.currentTarget.value);}}>\n {p.items.map((item)=><option value={item.id}>{item.name}</option>)}\n </select>\n </>\n );\n}\n\nconst UsersSelectionList = (p)=>{\n return (\n <>\n <select name=\"user\" id=\"user\" value={p.userId} onChange={(e)=>{p.setUserId(e.currentTarget.value);}}>\n {p.users.map((user)=><option value={user.id}>[{user.id}] {user.firstname+\" \"+user.lastname}</option>)}\n </select>\n </>\n );\n}\n\nconst ManufacturerSelectionList = (p)=>{\n return (\n <>\n <select name=\"manufacturer\" id=\"manufacturer\" value={p.manufacturerId} onChange={(e)=>{p.setManufacturerId(e.currentTarget.value);}}>\n {p.manufacturers.map((manufacturer)=><option value={manufacturer.id}>[{manufacturer.id}] {manufacturer.companyname}</option>)}\n </select>\n </>\n );\n}\n\nconst ModifyProfilePage = (p)=>{\n const [fields,setFields] = useState([]);\n const [updateRequired,setUpdateRequired] = useState(true);\n const [statusMessage,setStatusMessage] = useState(\"Retrieving data...\");\n const [updatingProfile,setUpdatingProfile] = useState(false);\n //p.users,p.role,p.callback,p.username\n var data;\n\n if (updateRequired) { \n setUpdateRequired(false)\n switch (p.role) {\n case \"User\":{\n var user = p.users.filter((user)=>user.id===p.id)[0]\n setStatusMessage(\"\")\n setFields([{name:\"First Name\",value:\"firstname\",field:user.firstname},\n {name:\"Last Name\",value:\"lastname\",field:user.lastname},\n {name:\"Email\",value:\"email\",field:user.email}])\n }break;\n case \"Customer\":{\n axios.get(\"http://localhost:3001/customer/view/\"+p.id)\n .then((data)=>{\n if (Array.isArray(data.data) && data.data.length>0) {\n setFields([{name:\"Company Name\",value:\"companyname\",field:data.data[0].companyname},\n {name:\"Name\",value:\"customername\",field:data.data[0].customername},\n {name:\"Email\",value:\"customeremail\",field:data.data[0].customeremail},\n {name:\"Phone Number\",value:\"customerphonenumber\",field:data.data[0].customerphonenumber}])\n setStatusMessage(\"\")\n } else {\n Promise.reject(new Error(\"Failed to retrieve data!\"))\n }\n })\n .catch((err)=>{\n setStatusMessage(err.message)\n })\n }break;\n case \"Manufacturer\":{\n axios.get(\"http://localhost:3001/manufacturer/view/\"+p.id)\n .then((data)=>{\n if (Array.isArray(data.data) && data.data.length>0) {\n setFields([{name:\"Company Name\",value:\"companyname\",field:data.data[0].companyname},\n {name:\"Contact Name\",value:\"contactname\",field:data.data[0].contactname},\n {name:\"Contact Email\",value:\"contactemail\",field:data.data[0].contactemail},\n {name:\"Contact Phone Number\",value:\"contactphonenumber\",field:data.data[0].contactphonenumber}])\n setStatusMessage(\"\")\n } else {\n Promise.reject(new Error(\"Failed to retrieve data!\"))\n }\n })\n .catch((err)=>{\n setStatusMessage(err.message)\n })\n }break;\n }\n\n }\n\n function Validated() {\n var inputs = document.getElementsByTagName(\"input\");\n setStatusMessage(\"\")\n for (var i=0;i<inputs.length;i++){var input=inputs[i]; input.classList.remove(\"error\")}\n \n var empty_inputs = [] \n for (var i=0;i<inputs.length;i++) {var input=inputs[i]; if (input.value.length===0){empty_inputs.push(input)}};\n\n if (empty_inputs.length>0) {\n setStatusMessage(<>\n <h2 style={{color:\"red\"}}>Please fix invalid fields!</h2>\n </>);\n for (var i=0;i<empty_inputs.length;i++){var input=empty_inputs[i]; input.classList.add(\"error\")}\n return false;\n } else {\n return true;\n }\n }\n\n function UpdateProfile() {\n setStatusMessage(<><h2>Contacting Server...</h2>\n Submitting updated profile...</>)\n switch (p.role) {\n case \"User\":{\n var myObj = {}\n fields.forEach((field)=>{myObj[field.value]=document.getElementById(field.value).value})\n axios.put(\"http://localhost:3001/users/update/\"+p.id,myObj)\n .then((data)=>{\n setStatusMessage(\"Success! Profile updated. Returning to previous page.\")\n p.setReloadUserDatabase(true)\n p.call();\n })\n .catch((err)=>{\n setUpdatingProfile(false)\n setStatusMessage(err.message)\n })\n }break;\n case \"Customer\":{\n var myObj = {}\n fields.forEach((field)=>{myObj[field.value]=document.getElementById(field.value).value})\n axios.put(\"http://localhost:3001/customer/update/\"+p.id,myObj)\n .then((data)=>{\n setStatusMessage(\"Success! Profile updated. Returning to previous page.\")\n p.call();\n })\n .catch((err)=>{\n setUpdatingProfile(false)\n setStatusMessage(err.message)\n })\n }break;\n case \"Manufacturer\":{\n var myObj = {}\n fields.forEach((field)=>{myObj[field.value]=document.getElementById(field.value).value})\n axios.put(\"http://localhost:3001/manufacturer/update/\"+p.id,myObj)\n .then((data)=>{\n setStatusMessage(\"Success! Profile updated. Returning to previous page.\")\n p.call();\n })\n .catch((err)=>{\n setUpdatingProfile(false)\n setStatusMessage(err.message)\n })\n }break;\n }\n }\n\n if (updatingProfile) {\n return (\n <>\n {statusMessage}\n </>\n )\n } else {\n return (\n <>\n <button onClick={()=>{p.call()}}>{\"< Back\"}</button>\n <br/>\n <h3>Modify Profile for {p.username}</h3>\n <b>Role: {p.role}</b><br/><br/>\n {statusMessage}<br/>\n {(fields)?fields.map((field,count)=><><label for={field.value}>{field.name}</label><input type=\"text\" name={field.value} id={field.value} defaultValue={field.field}/><br/></>):<></>}\n <button onClick={()=>{if (Validated()) {UpdateProfile()}}}>Update Profile</button>\n <br/>\n </>\n )\n }\n}\n\nconst CreateCustomerSalesOrder = (p)=>{\n const [itemId,setItemId] = useState(p.items[0].id);\n const [itemQuantity,setItemQuantity] = useState(1);\n const [userId,setUserId] = useState(p.users[0].id);\n const [status,setStatus] = useState(null);\n const [lastError,setLastError] = useState(null);\n\n function SubmitSalesOrder(){\n setStatus(\"Submitting Sales Order...\");\n var obj = {customerid:p.id,itemid:itemId,userid:userId,quantity:itemQuantity,dateordered:moment().format()}\n axios.post(\"http://localhost:3001/salesorder/add\",obj)\n .then((data)=>{\n if (Array.isArray(data.data) && data.data.length>0) {\n //Successfully submitted order.\n setStatus(\"Order submitted! Returning back to orders page...\")\n p.setPage(null);\n } else {\n Promise.reject(\"Order failed to submit!\")\n setStatus(null)\n }\n })\n .catch((err)=>{\n setLastError(err.message)\n setStatus(null)\n })\n }\n\n if (status===null) {\n return (\n <>\n {lastError}<br/>\n <button onClick={()=>{p.setPage(null);}}>{\"< Back\"}</button>\n <br/><br/>\n <label for=\"item\"><b>Requested Item:</b></label><ItemsSelectionList itemId={itemId} setItemId={setItemId} items={p.items}/> <label for=\"quantity\"><b>Quantity:</b></label> x<input type=\"number\" style={{width:\"60px\"}} name=\"quantity\" id=\"quantity\" value={itemQuantity} onChange={(e)=>{setItemQuantity(e.currentTarget.value)}}/>\n <Item id={itemId} items={p.items}/>\n <br/><br/>\n <label for=\"user\"><b>Sales User:</b></label><UsersSelectionList users={p.users} userId={userId} setUserId={setUserId}/>\n <button onClick={()=>{SubmitSalesOrder()}}>Submit</button>\n </>\n )\n } else {\n return (\n <>\n {status}\n </>\n )\n }\n}\n\nconst DisplayCustomerOrders = (p)=>{\n const [status,setStatus] = useState(\"Fetching orders...\");\n const [orders,setOrders] = useState([]);\n const [reload,setReload] = useState(true);\n\n var FetchOrders = ()=>{\n axios.get(\"http://localhost:3001/salesorder/bycustomerid/\"+p.id)\n .then((data)=>{\n setOrders(data.data);\n setStatus(\"Done! (\"+data.data.length+\") orders found.\")\n })\n }\n\n if (reload) {\n FetchOrders();\n setReload(false)\n }\n\n return(\n <>\n <div className=\"row\">\n <div className=\"col-md-4\">\n <button onClick={()=>{p.setPage(\"PROFILE\")}}>Edit Profile</button>\n </div>\n <div className=\"offset-md-4 col-md-4\">\n <button onClick={()=>{p.setPage(\"PLACEORDER\")}}>New Sales Order +</button>\n </div>\n </div>\n <div className=\"row\">\n <div className=\"col-md-12\">\n {status}\n {orders.map((order)=><div className=\"order\"><SalesOrder order={order} users={p.users} id={order.itemid} items={p.items}/></div>)}\n </div>\n </div>\n </>\n )\n}\n\nconst DisplayUserOrders = (p)=>{\n const [status,setStatus] = useState(\"Fetching orders...\");\n const [orders,setOrders] = useState([]);\n const [reload,setReload] = useState(true);\n\n var FetchOrders = ()=>{\n axios.get(\"http://localhost:3001/salesorder/byuserid/\"+p.id)\n .then((data)=>{\n setOrders(data.data);\n setStatus(\"Done! (\"+data.data.length+\") orders found.\")\n })\n }\n\n if (reload) {\n FetchOrders();\n setReload(false)\n }\n\n return(\n <>\n <div className=\"row\">\n <div className=\"col-md-12\">\n {status}\n {orders.map((order)=><div className=\"order\"><SalesOrder setReload={setReload} completeOrder={p.completeOrder} order={order} users={p.users} id={order.itemid} items={p.items}/></div>)}\n </div>\n </div>\n </>\n )\n}\n\nconst CustomerPage = (p)=>{\n const [page,setPage] = useState(null); //This view has 3 pages: View orders, place orders, view / edit profile\n\n var contents;\n\n const changePage = ()=>{\n setPage(null)\n }\n\n switch (page) {\n case \"PLACEORDER\":{\n contents=<CreateCustomerSalesOrder items={p.items} id={p.id} users={p.users} setPage={setPage}/>;\n }break;\n case \"PROFILE\":{\n contents=<ModifyProfilePage id={p.id} users={p.users} role={p.role} call={changePage} username={p.username}/>;\n }break;\n default:{\n contents=<DisplayCustomerOrders setPage={setPage} id={p.id} items={p.items} users={p.users}/>;\n }\n }\n\n return (\n <>\n {contents}\n </>\n );\n}\n\nconst CreateUserPurchaseOrder = (p)=>{\n const [itemId,setItemId] = useState(p.items[0].id);\n const [itemQuantity,setItemQuantity] = useState(1);\n const [manufacturerId,setManufacturerId] = useState(p.manufacturers[0].id);\n const [status,setStatus] = useState(null);\n const [lastError,setLastError] = useState(null);\n\n function SubmitPurchaseOrder(){\n setStatus(\"Submitting Purchase Order...\");\n var obj = {userid:p.id,itemid:itemId,manufacturerid:manufacturerId,quantity:itemQuantity,dateordered:moment().format()}\n axios.post(\"http://localhost:3001/purchaseorder/add\",obj)\n .then((data)=>{\n if (Array.isArray(data.data) && data.data.length>0) {\n //Successfully submitted order.\n setStatus(\"Order submitted! Returning back to orders page...\")\n p.setPage(null);\n } else {\n Promise.reject(\"Order failed to submit!\")\n setStatus(null)\n }\n })\n .catch((err)=>{\n setLastError(err.message)\n setStatus(null)\n })\n }\n\n if (status===null) {\n return (\n <>\n {lastError}<br/>\n <button onClick={()=>{p.setPage(null);}}>{\"< Back\"}</button>\n <br/><br/>\n <label for=\"item\"><b>Requested Item:</b></label><ItemsSelectionList itemId={itemId} setItemId={setItemId} items={p.items}/> <label for=\"quantity\"><b>Quantity:</b></label> x<input type=\"number\" style={{width:\"60px\"}} name=\"quantity\" id=\"quantity\" value={itemQuantity} onChange={(e)=>{setItemQuantity(e.currentTarget.value)}}/>\n <Item id={itemId} items={p.items}/>\n <br/><br/>\n <label for=\"user\"><b>Manufacturer:</b></label><ManufacturerSelectionList manufacturers={p.manufacturers} manufacturerId={manufacturerId} setManufacturerId={setManufacturerId}/>\n <button onClick={()=>{SubmitPurchaseOrder()}}>Submit</button>\n </>\n )\n } else {\n return (\n <>\n {status}\n </>\n )\n }\n}\n\nconst DisplayPurchaseOrders = (p)=>{\n const [status,setStatus] = useState(\"Fetching orders...\");\n const [orders,setOrders] = useState([]);\n const [reload,setReload] = useState(true);\n\n var FetchOrders = ()=>{\n axios.get(\"http://localhost:3001/purchaseorder/byuserid/\"+p.id)\n .then((data)=>{\n setOrders(data.data);\n setStatus(\"Done! (\"+data.data.length+\") orders found.\")\n })\n }\n\n if (reload) {\n FetchOrders();\n setReload(false)\n }\n\n return(\n <>\n <div className=\"row\">\n <div className=\"col-md-12\">\n {status}\n {orders.map((order)=><div className=\"order\"><PurchaseOrder setReload={setReload} completeOrder={p.completeOrder} order={order} manufacturers={p.manufacturers} id={order.itemid} items={p.items}/></div>)}\n </div>\n </div>\n </>\n )\n}\n\nconst DisplayManufacturerPurchaseOrders = (p)=>{\n const [status,setStatus] = useState(\"Fetching orders...\");\n const [orders,setOrders] = useState([]);\n const [reload,setReload] = useState(true);\n\n var FetchOrders = ()=>{\n axios.get(\"http://localhost:3001/purchaseorder/bymanufacturerid/\"+p.id)\n .then((data)=>{\n setOrders(data.data);\n setStatus(\"Done! (\"+data.data.length+\") orders found.\")\n })\n }\n\n if (reload) {\n FetchOrders();\n setReload(false)\n }\n\n return(\n <>\n <div className=\"row\">\n <div className=\"col-md-12\">\n {status}\n {orders.map((order)=><div className=\"order\"><PurchaseOrder setReload={setReload} completeOrder={p.completeOrder} order={order} manufacturers={p.manufacturers} id={order.itemid} items={p.items}/></div>)}\n </div>\n </div>\n </>\n )\n}\n\nconst UserPage = (p)=>{\n const [page,setPage] = useState(null); //This view has 3 pages: View orders, place orders, view / edit profile\n\n var contents;\n\n const changePage = ()=>{\n setPage(null)\n }\n\n switch (page) {\n case \"PLACEORDER\":{\n contents=<CreateUserPurchaseOrder items={p.items} id={p.id} manufacturers={p.manufacturers} users={p.users} setPage={setPage}/>;\n }break;\n case \"PROFILE\":{\n contents=<ModifyProfilePage setReloadUserDatabase={p.setReloadUserDatabase} id={p.id} users={p.users} role={p.role} call={changePage} username={p.username}/>;\n }break;\n default:{\n contents=\n <>\n <div className=\"row\">\n <div className=\"col-md-4\">\n <button onClick={()=>{setPage(\"PROFILE\")}}>Edit Profile</button>\n </div>\n <div className=\"offset-md-4 col-md-4\">\n <button onClick={()=>{setPage(\"PLACEORDER\")}}>New Purchase Order +</button>\n </div>\n </div>\n <div className=\"row\">\n <div className=\"col-md-6\">\n <h3>Current Purchase Orders:</h3>\n <DisplayPurchaseOrders setPage={setPage} id={p.id} items={p.items} manufacturers={p.manufacturers}/>\n </div>\n <div className=\"col-md-6\">\n <h3>Your Sales Orders:</h3>\n <DisplayUserOrders completeOrder={true} setPage={setPage} id={p.id} items={p.items} users={p.users}/>\n </div>\n </div>\n </>\n }\n }\n\n return (\n <>\n {contents}\n </>\n );\n}\n\nconst ModifyProducts = (p)=>{\n const [disabled,setDisabled] = useState(false)\n const [name,setName] = useState(\"\")\n const [description,setDescription] = useState(\"\")\n\n function SubmitItem() {\n setDisabled(true)\n var myObj={name:document.getElementById(\"name\").value,description:document.getElementById(\"description\").value}\n axios.post(\"http://localhost:3001/item/add\",myObj)\n .then((data)=>{\n p.setReloadItemDatabase(true)\n setDisabled(false)\n })\n }\n\n return (\n <>\n <button onClick={()=>{p.call()}}>{\"< Back\"}</button>\n <br/><br/>\n {p.items.map((item)=><Item items={p.items} id={item.id}/>)}\n <div className=\"row text-center\">\n <div className=\"col-md-4\"><label for=\"name\"><b>Item Name:</b></label><input type=\"text\" onChange={(e)=>{setName(e.currentTarget.value)}} value={name} id=\"name\" disabled={disabled} /></div>\n <div className=\"col-md-8\"><label for=\"description\"><b>Description:</b></label><input type=\"text\" onChange={(e)=>{setDescription(e.currentTarget.value)}} disabled={disabled} value={description} id=\"description\"/></div>\n <br/>\n <button disabled={disabled} onClick={()=>{SubmitItem()}}>Submit New Product</button>\n </div>\n </>\n );\n}\n\nconst ManufacturerPage = (p)=>{\n const [page,setPage] = useState(null); //This view has 3 pages: Create new Products, View orders, view / edit profile\n\n var contents;\n\n const changePage = ()=>{\n setPage(null)\n }\n\n switch (page) {\n case \"PRODUCTS\":{\n contents=<ModifyProducts setReloadItemDatabase={p.setReloadItemDatabase} id={p.id} items={p.items} users={p.users} role={p.role} call={changePage} username={p.username}/>;\n }break;\n case \"PROFILE\":{\n contents=<ModifyProfilePage id={p.id} users={p.users} role={p.role} call={changePage} username={p.username}/>;\n }break;\n default:{\n contents=\n <>\n <div className=\"row\">\n <div className=\"col-md-4\">\n <button onClick={()=>{setPage(\"PROFILE\")}}>Edit Profile</button>\n </div>\n <div className=\"offset-md-4 col-md-4\">\n <button onClick={()=>{setPage(\"PRODUCTS\")}}>+ Add Products</button>\n </div>\n </div>\n <div className=\"row\">\n <div className=\"col-md-12\">\n <h3>Your Purchase Orders:</h3>\n <DisplayManufacturerPurchaseOrders completeOrder={true} setPage={setPage} id={p.id} items={p.items} manufacturers={p.manufacturers}/>\n </div>\n </div>\n </>\n }\n }\n\n return (\n <>\n {contents}\n </>\n );\n}\n\nfunction App() {\n const [itemDatabase,setItemDatabase] = useState([]);\n const [userDatabase,setUserDatabase] = useState([]);\n const [customerDatabase,setCustomerDatabase] = useState([]);\n const [manufacturerDatabase,setManufacturerDatabase] = useState([]);\n const [password,setPassword] = useState(null);\n const [username,setUsername] = useState(null);\n const [uniqueid,setUniqueId] = useState(null);\n const [role,setRole] = useState(null);\n const [loginState,setLoginState] = useState(null);\n const [pageView,setPageView] = useState(\"LOGIN\");\n const [loginPageMessage,setLoginPageMessage] = useState(\"\");\n const [reloadItemDatabase,setReloadItemDatabase] = useState(true);\n const [reloadUserDatabase,setReloadUserDatabase] = useState(true);\n const [reloadCustomerDatabase,setReloadCustomerDatabase] = useState(true);\n const [reloadManufacturerDatabase,setReloadManufacturerDatabase] = useState(true);\n\n if (reloadItemDatabase) {\n axios.get(\"http://localhost:3001/item/view\")\n .then((data)=>{\n setItemDatabase(data.data);\n setReloadItemDatabase(false);\n })\n }\n if (reloadUserDatabase) {\n axios.get(\"http://localhost:3001/\")\n .then((data)=>{\n setUserDatabase(data.data);\n setReloadUserDatabase(false);\n })\n }\n if (reloadCustomerDatabase) {\n axios.get(\"http://localhost:3001/customer/view\")\n .then((data)=>{\n setCustomerDatabase(data.data);\n setReloadCustomerDatabase(false);\n })\n }\n if (reloadManufacturerDatabase) {\n axios.get(\"http://localhost:3001/manufacturer/view\")\n .then((data)=>{\n setManufacturerDatabase(data.data);\n setReloadManufacturerDatabase(false);\n })\n }\n\n var contents = null;\n\n switch (pageView) {\n case \"LOGIN\":{\n contents=\n <>\n <h3>{loginPageMessage}</h3>\n <DisplayLoginForm setUniqueId={setUniqueId} role={role} setRole={setRole} setLoginPageMessage={setLoginPageMessage} setPageView={setPageView} setUsername={setUsername} setPassword={setPassword} setLoginState={setLoginState} loginState={loginState} username={username} password={password} />\n </>\n ;\n }break;\n case \"REGISTER\":{\n contents=\n <>\n <DisplayRegisterForm setReloadUserDatabase={setReloadUserDatabase} setPageView={setPageView} setLoginPageMessage={setLoginPageMessage} username={username} password={password} setUsername={setUsername} setPassword={setPassword}/>\n </>\n }break;\n case \"MANUFACTURER\":{\n contents=<div className=\"col-md-12\">\n <h3>Manufacturer's Dashboard</h3>\n <ManufacturerPage setReloadItemDatabase={setReloadItemDatabase} setReloadManufacturerDatabase={setReloadManufacturerDatabase} id={uniqueid} customers={customerDatabase} manufacturers={manufacturerDatabase} items={itemDatabase} username={username} role={role} users={userDatabase} />\n </div>;\n }break;\n case \"USER\":{\n contents=<div className=\"col-md-12\">\n <h3>User Dashboard</h3>\n <UserPage setReloadUserDatabase={setReloadUserDatabase} id={uniqueid} customers={customerDatabase} manufacturers={manufacturerDatabase} items={itemDatabase} username={username} role={role} users={userDatabase} />\n </div>;\n }break;\n case \"CUSTOMER\":{\n contents=<div className=\"col-md-12\">\n <h3>Customer Dashboard</h3>\n <CustomerPage id={uniqueid} items={itemDatabase} username={username} role={role} users={userDatabase} />\n </div>;\n }break;\n }\n\n return (\n <>\n <div className=\"container\">\n <div className=\"row pt-5 pb-5 card border text-center\">\n {contents}\n </div>\n </div>\n </>\n );\n}\n\nconst DisplayUserOrderForm = (p)=>{\n\n \n \n}\n\nexport default App;\n"]},"metadata":{},"sourceType":"module"}