{"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"}