{"ast":null,"code":"var _jsxFileName = \"C:\\\\laragon\\\\www\\\\itokin\\\\DriverOPCDA\\\\frontend\\\\src\\\\components\\\\pages\\\\Users\\\\UserFormEdit.jsx\";\nimport React from \"react\";\nimport { withStyles } from \"@material-ui/core/styles\";\nimport { Grid, Box, MenuItem } from \"@material-ui/core\";\nimport Button from \"@material-ui/core/Button\";\nimport { withRouter } from \"react-router-dom\";\nimport { connect } from \"react-redux\";\nimport { ValidatorForm, TextValidator, SelectValidator } from \"react-material-ui-form-validator\";\nimport axios from \"axios\";\nimport { setUserAuth } from \"../../../redux/UserLogin/userLogin.action\";\nimport userServices from \"./UserServicesClass\";\nimport { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\nconst userServ = new userServices();\n\nconst useStyles = theme => ({\n  root: {\n    \"& .MuiTextField-root\": {\n      margin: theme.spacing(1),\n      width: \"90%\"\n    }\n  },\n  gridColor: {\n    background: \"white\"\n  },\n  button: {\n    marginTop: theme.spacing(1),\n    color: \"#ffffff\",\n    background: theme.palette.success.main,\n    \"&:hover\": {\n      backgroundColor: theme.palette.success.dark,\n      borderColor: theme.palette.success.light,\n      boxShadow: \"none\"\n    }\n  },\n  form: {\n    background: \"white\"\n  },\n  textField: {\n    width: \"100%\",\n    marginTop: 10\n  },\n  selectField: {\n    width: \"100%\",\n    marginTop: 20\n  }\n});\n\nclass UserFormEdit extends React.Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      user: {\n        email: \"\",\n        username: \"\",\n        name: \"\",\n        avatar: \"\",\n        roleid: \"\",\n        password: \"\",\n        repeatPassword: \"\"\n      },\n      roles: []\n    };\n\n    this.handleChange = event => {\n      const {\n        user\n      } = this.state;\n      user[event.target.name] = event.target.value;\n      this.setState({\n        user\n      });\n    };\n\n    this.handleSubmit = async () => {\n      const {\n        user\n      } = this.state;\n      let paramInsert = {\n        Email: user.email,\n        UserName: user.username,\n        Name: user.name,\n        Avatar: user.avatar,\n        RoleId: user.roleid\n      };\n\n      if (user.password !== \"\") {\n        paramInsert[\"Password\"] = user.password;\n      }\n\n      console.log(paramInsert); // save user data\n\n      const resp = await userServ.updateUser(this.props.match.params.id, paramInsert);\n\n      if (resp.success) {\n        alert(resp.message);\n        this.onSuccess();\n      } else {\n        alert(resp.message);\n      }\n    };\n\n    this.onSuccess = this.onSuccess.bind(this);\n  }\n\n  onSuccess(e) {\n    this.props.history.push(\"/users\");\n  }\n\n  async componentDidMount() {\n    // find user data\n    this.findUser(this.props.match.params.id); // get data roles\n\n    await axios.get(process.env.REACT_APP_BASE_URL + \"/roles\").then(res => {\n      const roles = res.data.data;\n      this.setState({\n        roles: roles\n      });\n    }); // custom validation password\n\n    ValidatorForm.addValidationRule(\"isPasswordMatch\", value => {\n      if (value !== this.state.user.password) {\n        return false;\n      }\n\n      return true;\n    }); // custom validation username\n\n    ValidatorForm.addValidationRule(\"userName\", value => {\n      const nameRegex = /^[A-z]{2,}[A-z0-9]{0,}$/;\n\n      if (!value.match(nameRegex)) {\n        return false;\n      }\n\n      return true;\n    });\n  }\n\n  async findUser(id) {\n    const resp = await userServ.findUser(id);\n    const data = resp.data;\n\n    if (data != null) {\n      const {\n        user\n      } = this.state;\n      user[\"email\"] = data.Email;\n      user[\"username\"] = data.UserName;\n      user[\"name\"] = data.Name;\n      user[\"avatar\"] = data.Avatar;\n      user[\"roleid\"] = data.RoleId;\n      this.props.setUserAuth(user);\n      this.setState({\n        user\n      });\n    } // console.log(this.state);\n\n\n    console.log(this.props);\n  }\n\n  componentWillUnmount() {\n    // remove rule when it is not needed\n    ValidatorForm.removeValidationRule(\"isPasswordMatch\");\n    ValidatorForm.removeValidationRule(\"userName\");\n  }\n\n  render() {\n    const {\n      classes\n    } = this.props;\n    const {\n      user\n    } = this.state;\n    return /*#__PURE__*/_jsxDEV(Grid, {\n      container: true,\n      spacing: 1,\n      children: /*#__PURE__*/_jsxDEV(Grid, {\n        item: true,\n        lg: 5,\n        xs: 12,\n        children: /*#__PURE__*/_jsxDEV(Box, {\n          p: 3,\n          boxShadow: 3,\n          className: classes.form,\n          children: /*#__PURE__*/_jsxDEV(ValidatorForm, {\n            ref: \"form\",\n            onSubmit: this.handleSubmit,\n            onError: errors => console.log(errors),\n            children: [/*#__PURE__*/_jsxDEV(TextValidator, {\n              label: \"Email\",\n              onChange: this.handleChange,\n              name: \"email\",\n              value: user.email,\n              validators: [\"required\", \"isEmail\"],\n              errorMessages: [\"this field is required\", \"email is not valid\"],\n              className: classes.textField\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 173,\n              columnNumber: 15\n            }, this), /*#__PURE__*/_jsxDEV(TextValidator, {\n              label: \"Username\",\n              onChange: this.handleChange,\n              name: \"username\",\n              value: user.username,\n              validators: [\"required\", \"userName\"],\n              errorMessages: [\"this field is required\", \"Illegal Caracter in Username\"],\n              className: classes.textField\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 182,\n              columnNumber: 15\n            }, this), /*#__PURE__*/_jsxDEV(TextValidator, {\n              label: \"Full Name\",\n              onChange: this.handleChange,\n              name: \"name\",\n              value: user.name,\n              validators: [\"required\"],\n              errorMessages: [\"this field is required\"],\n              className: classes.textField\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 195,\n              columnNumber: 15\n            }, this), /*#__PURE__*/_jsxDEV(SelectValidator, {\n              id: \"demo-simple-select-helper\",\n              value: user.roleid,\n              onChange: this.handleChange,\n              validators: [\"required\"],\n              errorMessages: [\"this field is required\"],\n              className: classes.selectField,\n              name: \"roleid\",\n              children: [/*#__PURE__*/_jsxDEV(MenuItem, {\n                value: \"\",\n                children: /*#__PURE__*/_jsxDEV(\"em\", {\n                  children: \"None\"\n                }, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 215,\n                  columnNumber: 19\n                }, this)\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 214,\n                columnNumber: 17\n              }, this), this.state.roles.map((role, i) => /*#__PURE__*/_jsxDEV(MenuItem, {\n                value: role.id,\n                children: role.RoleName\n              }, role.id, false, {\n                fileName: _jsxFileName,\n                lineNumber: 218,\n                columnNumber: 19\n              }, this))]\n            }, void 0, true, {\n              fileName: _jsxFileName,\n              lineNumber: 205,\n              columnNumber: 15\n            }, this), /*#__PURE__*/_jsxDEV(TextValidator, {\n              label: \"New Password\",\n              onChange: this.handleChange,\n              name: \"password\",\n              type: \"password\",\n              validators: [],\n              errorMessages: [\"this field is required\"],\n              value: user.password,\n              className: classes.textField\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 224,\n              columnNumber: 15\n            }, this), /*#__PURE__*/_jsxDEV(TextValidator, {\n              label: \"Repeat New password\",\n              onChange: this.handleChange,\n              name: \"repeatPassword\",\n              type: \"password\",\n              validators: [\"isPasswordMatch\"],\n              errorMessages: [\"password mismatch\"],\n              value: user.repeatPassword,\n              className: classes.textField\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 234,\n              columnNumber: 15\n            }, this), /*#__PURE__*/_jsxDEV(Button, {\n              type: \"submit\",\n              className: classes.button,\n              children: \"Submit\"\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 245,\n              columnNumber: 15\n            }, this)]\n          }, void 0, true, {\n            fileName: _jsxFileName,\n            lineNumber: 168,\n            columnNumber: 13\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 167,\n          columnNumber: 11\n        }, this)\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 166,\n        columnNumber: 9\n      }, this)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 165,\n      columnNumber: 7\n    }, this);\n  }\n\n}\n\nconst mapStateToProps = state => {\n  return {\n    auth: state.auth\n  };\n};\n\nconst mapDispatchToProps = dispatch => {\n  return {\n    setUserAuth: p => dispatch(setUserAuth(p))\n  };\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(withRouter(withStyles(useStyles)(UserFormEdit)));","map":{"version":3,"sources":["C:/laragon/www/itokin/DriverOPCDA/frontend/src/components/pages/Users/UserFormEdit.jsx"],"names":["React","withStyles","Grid","Box","MenuItem","Button","withRouter","connect","ValidatorForm","TextValidator","SelectValidator","axios","setUserAuth","userServices","userServ","useStyles","theme","root","margin","spacing","width","gridColor","background","button","marginTop","color","palette","success","main","backgroundColor","dark","borderColor","light","boxShadow","form","textField","selectField","UserFormEdit","Component","constructor","props","state","user","email","username","name","avatar","roleid","password","repeatPassword","roles","handleChange","event","target","value","setState","handleSubmit","paramInsert","Email","UserName","Name","Avatar","RoleId","console","log","resp","updateUser","match","params","id","alert","message","onSuccess","bind","e","history","push","componentDidMount","findUser","get","process","env","REACT_APP_BASE_URL","then","res","data","addValidationRule","nameRegex","componentWillUnmount","removeValidationRule","render","classes","errors","map","role","i","RoleName","mapStateToProps","auth","mapDispatchToProps","dispatch","p"],"mappings":"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","sourcesContent":["import React from \"react\";\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\nimport { Grid, Box, MenuItem } from \"@material-ui/core\";\r\nimport Button from \"@material-ui/core/Button\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport { connect } from \"react-redux\";\r\n\r\nimport {\r\n  ValidatorForm,\r\n  TextValidator,\r\n  SelectValidator,\r\n} from \"react-material-ui-form-validator\";\r\nimport axios from \"axios\";\r\nimport {setUserAuth} from  \"../../../redux/UserLogin/userLogin.action\"\r\nimport userServices from \"./UserServicesClass\";\r\nconst userServ = new userServices();\r\n\r\nconst useStyles = (theme) => ({\r\n  root: {\r\n    \"& .MuiTextField-root\": {\r\n      margin: theme.spacing(1),\r\n      width: \"90%\",\r\n    },\r\n  },\r\n  gridColor: {\r\n    background: \"white\",\r\n  },\r\n  button: {\r\n    marginTop: theme.spacing(1),\r\n    color: \"#ffffff\",\r\n    background: theme.palette.success.main,\r\n    \"&:hover\": {\r\n      backgroundColor: theme.palette.success.dark,\r\n      borderColor: theme.palette.success.light,\r\n      boxShadow: \"none\",\r\n    },\r\n  },\r\n  form: {\r\n    background: \"white\",\r\n  },\r\n  textField: {\r\n    width: \"100%\",\r\n    marginTop: 10,\r\n  },\r\n  selectField: {\r\n    width: \"100%\",\r\n    marginTop: 20,\r\n  },\r\n});\r\nclass UserFormEdit extends React.Component {\r\n  constructor(props) {\r\n    super(props);\r\n    this.onSuccess = this.onSuccess.bind(this);\r\n  }\r\n  state = {\r\n    user: {\r\n      email: \"\",\r\n      username: \"\",\r\n      name: \"\",\r\n      avatar: \"\",\r\n      roleid: \"\",\r\n      password: \"\",\r\n      repeatPassword: \"\",\r\n    },\r\n    roles: [],\r\n  };\r\n\r\n  onSuccess(e) {\r\n    this.props.history.push(\"/users\");\r\n  }\r\n\r\n  handleChange = (event) => {\r\n    const { user } = this.state;\r\n    user[event.target.name] = event.target.value;\r\n    this.setState({ user });\r\n  };\r\n\r\n  handleSubmit = async () => {\r\n    const { user } = this.state;\r\n    let paramInsert = {\r\n      Email: user.email,\r\n      UserName: user.username,\r\n      Name: user.name,\r\n      Avatar: user.avatar,\r\n      RoleId: user.roleid,\r\n    };\r\n\r\n    if (user.password !== \"\") {\r\n      paramInsert[\"Password\"] = user.password;\r\n    }\r\n\r\n    console.log(paramInsert);\r\n\r\n    // save user data\r\n    const resp = await userServ.updateUser(\r\n      this.props.match.params.id,\r\n      paramInsert\r\n    );\r\n    if (resp.success) {\r\n      alert(resp.message);\r\n      this.onSuccess();\r\n    } else {\r\n      alert(resp.message);\r\n    }\r\n  };\r\n\r\n  async componentDidMount() {\r\n    // find user data\r\n    this.findUser(this.props.match.params.id);\r\n    // get data roles\r\n    await axios.get(process.env.REACT_APP_BASE_URL + \"/roles\").then((res) => {\r\n      const roles = res.data.data;\r\n      this.setState({\r\n        roles: roles,\r\n      });\r\n    });\r\n\r\n    // custom validation password\r\n    ValidatorForm.addValidationRule(\"isPasswordMatch\", (value) => {\r\n      if (value !== this.state.user.password) {\r\n        return false;\r\n      }\r\n      return true;\r\n    });\r\n\r\n    // custom validation username\r\n    ValidatorForm.addValidationRule(\"userName\", (value) => {\r\n      const nameRegex = /^[A-z]{2,}[A-z0-9]{0,}$/;\r\n      if (!value.match(nameRegex)) {\r\n        return false;\r\n      }\r\n      return true;\r\n    });\r\n  }\r\n\r\n  async findUser(id) {\r\n    const resp = await userServ.findUser(id);\r\n    const data = resp.data;\r\n    if (data != null) {\r\n      const { user } = this.state;\r\n      user[\"email\"] = data.Email;\r\n      user[\"username\"] = data.UserName;\r\n      user[\"name\"] = data.Name;\r\n      user[\"avatar\"] = data.Avatar;\r\n      user[\"roleid\"] = data.RoleId;\r\n      this.props.setUserAuth(user)\r\n      this.setState({ user });\r\n    }\r\n    // console.log(this.state);\r\n    console.log(this.props);\r\n\r\n  }\r\n\r\n  componentWillUnmount() {\r\n    // remove rule when it is not needed\r\n    ValidatorForm.removeValidationRule(\"isPasswordMatch\");\r\n    ValidatorForm.removeValidationRule(\"userName\");\r\n  }\r\n\r\n  render() {\r\n    const { classes } = this.props;\r\n    const { user } = this.state;\r\n\r\n    return (\r\n      <Grid container spacing={1}>\r\n        <Grid item lg={5} xs={12}>\r\n          <Box p={3} boxShadow={3} className={classes.form}>\r\n            <ValidatorForm\r\n              ref=\"form\"\r\n              onSubmit={this.handleSubmit}\r\n              onError={(errors) => console.log(errors)}\r\n            >\r\n              <TextValidator\r\n                label=\"Email\"\r\n                onChange={this.handleChange}\r\n                name=\"email\"\r\n                value={user.email}\r\n                validators={[\"required\", \"isEmail\"]}\r\n                errorMessages={[\"this field is required\", \"email is not valid\"]}\r\n                className={classes.textField}\r\n              />\r\n              <TextValidator\r\n                label=\"Username\"\r\n                onChange={this.handleChange}\r\n                name=\"username\"\r\n                value={user.username}\r\n                validators={[\"required\", \"userName\"]}\r\n                errorMessages={[\r\n                  \"this field is required\",\r\n                  \"Illegal Caracter in Username\",\r\n                ]}\r\n                className={classes.textField}\r\n              />\r\n\r\n              <TextValidator\r\n                label=\"Full Name\"\r\n                onChange={this.handleChange}\r\n                name=\"name\"\r\n                value={user.name}\r\n                validators={[\"required\"]}\r\n                errorMessages={[\"this field is required\"]}\r\n                className={classes.textField}\r\n              />\r\n\r\n              <SelectValidator\r\n                id=\"demo-simple-select-helper\"\r\n                value={user.roleid}\r\n                onChange={this.handleChange}\r\n                validators={[\"required\"]}\r\n                errorMessages={[\"this field is required\"]}\r\n                className={classes.selectField}\r\n                name=\"roleid\"\r\n              >\r\n                <MenuItem value=\"\">\r\n                  <em>None</em>\r\n                </MenuItem>\r\n                {this.state.roles.map((role, i) => (\r\n                  <MenuItem key={role.id} value={role.id}>\r\n                    {role.RoleName}\r\n                  </MenuItem>\r\n                ))}\r\n              </SelectValidator>\r\n\r\n              <TextValidator\r\n                label=\"New Password\"\r\n                onChange={this.handleChange}\r\n                name=\"password\"\r\n                type=\"password\"\r\n                validators={[]}\r\n                errorMessages={[\"this field is required\"]}\r\n                value={user.password}\r\n                className={classes.textField}\r\n              />\r\n              <TextValidator\r\n                label=\"Repeat New password\"\r\n                onChange={this.handleChange}\r\n                name=\"repeatPassword\"\r\n                type=\"password\"\r\n                validators={[\"isPasswordMatch\"]}\r\n                errorMessages={[\"password mismatch\"]}\r\n                value={user.repeatPassword}\r\n                className={classes.textField}\r\n              />\r\n\r\n              <Button type=\"submit\" className={classes.button}>\r\n                Submit\r\n              </Button>\r\n            </ValidatorForm>\r\n          </Box>\r\n        </Grid>\r\n      </Grid>\r\n    );\r\n  }\r\n}\r\n\r\nconst mapStateToProps = (state)=>{\r\n return {\r\n   auth: state.auth,\r\n };\r\n}\r\n\r\nconst mapDispatchToProps = (dispatch) => {\r\n  return {\r\n    setUserAuth: (p) => dispatch(setUserAuth(p)),\r\n  };\r\n};\r\nexport default connect(\r\n  mapStateToProps,\r\n  mapDispatchToProps\r\n)(withRouter(withStyles(useStyles)(UserFormEdit)));\r\n"]},"metadata":{},"sourceType":"module"}