You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

240 lines
10 KiB

  1. // material-ui
  2. import {
  3. Grid, Typography, Button,
  4. // Dialog, DialogTitle, DialogContent, DialogActions,
  5. } from '@mui/material';
  6. import MainCard from "components/MainCard";
  7. import * as React from "react";
  8. import * as FieldUtils from "utils/FieldUtils";
  9. import * as HttpUtils from 'utils/HttpUtils';
  10. import * as UrlUtils from "utils/ApiPathConst";
  11. import { useFormik } from 'formik';
  12. import * as yup from 'yup';
  13. const LoadingComponent = Loadable(lazy(() => import('../../extra-pages/LoadingComponent')));
  14. import Loadable from 'components/Loadable';
  15. import { lazy } from 'react';
  16. import { notifySaveSuccess, } from 'utils/CommonFunction';
  17. import {FormattedMessage, useIntl} from "react-intl";
  18. import {PNSPS_BUTTON_THEME} from "../../../themes/buttonConst";
  19. import {ThemeProvider} from "@emotion/react";
  20. // import {
  21. // isPrimaryLoggedIn,
  22. // } from "utils/Utils";
  23. // ==============================|| DASHBOARD - DEFAULT ||============================== //
  24. const UserInformationCard_Organization_Pub = ({ userData, loadDataFun,}) => {
  25. const intl = useIntl();
  26. const [currentUserData, setCurrentUserData] = React.useState(userData);
  27. // const [isWarningPopUp, setIsWarningPopUp] = React.useState(false);
  28. // const [warningText, setWarningText] = React.useState("");
  29. // const [isConfirmPopUp, setIsConfirmPopUp] = React.useState(false);
  30. // const [confirmText, setConfirmText] = React.useState("");
  31. // const [confirmAction, setConfirmAction] = React.useState();
  32. const [editMode, setEditMode] = React.useState(false);
  33. const [onReady, setOnReady] = React.useState(false);
  34. React.useEffect(() => {
  35. //if state data are ready and assign to different field
  36. // console.log(currentApplicationDetailData)
  37. if (Object.keys(currentUserData).length > 0) {
  38. setOnReady(true);
  39. console.log(currentUserData)
  40. }
  41. }, [currentUserData]);
  42. function displayErrorMsg(errorMsg) {
  43. return <Typography variant="errorMessage1">{errorMsg}</Typography>
  44. }
  45. const formik = useFormik({
  46. enableReinitialize: true,
  47. initialValues: currentUserData,
  48. validationSchema: yup.object().shape({
  49. tel_countryCode: yup.string().min(3, displayErrorMsg(intl.formatMessage({id: 'require3Number'}))).required(displayErrorMsg(intl.formatMessage({id: 'requireDialingCode'}))),
  50. phoneNumber: yup.string().min(8, displayErrorMsg(intl.formatMessage({id: 'require8Number'}))).required(displayErrorMsg(intl.formatMessage({id: 'requireContactNumber'}))),
  51. }),
  52. onSubmit: (values) => {
  53. console.log(values);
  54. HttpUtils.post({
  55. url: UrlUtils.POST_PUB_ORG_USER,
  56. params: {
  57. contactTel: {
  58. countryCode: values.tel_countryCode,
  59. phoneNumber: values.phoneNumber
  60. },
  61. },
  62. onSuccess: function () {
  63. notifySaveSuccess()
  64. loadDataFun();
  65. }
  66. });
  67. }
  68. });
  69. React.useEffect(() => {
  70. if (Object.keys(userData).length > 0) {
  71. setCurrentUserData(userData);
  72. }
  73. }, [userData]);
  74. const onEditClick = () => {
  75. setEditMode(true);
  76. };
  77. // const onFocus = () => {
  78. // loadDataFun();
  79. // window.removeEventListener("focus", onFocus)
  80. // }
  81. return (
  82. <MainCard elevation={0}
  83. border={false}
  84. content={false}
  85. >
  86. {!onReady ?
  87. <LoadingComponent />
  88. :
  89. <form onSubmit={formik.handleSubmit}>
  90. {/*top button*/}
  91. <Grid item s={12} md={12} lg={12} sx={{ mb: 3, mt: 2 }} alignItems={"start"} justifyContent="center">
  92. <Grid container maxWidth justifyContent="flex-start">
  93. {editMode ?
  94. <>
  95. <ThemeProvider theme={PNSPS_BUTTON_THEME}>
  96. <Grid item sx={{ ml: 3, mr: 3 }}>
  97. <Button
  98. variant="contained"
  99. onClick={loadDataFun}
  100. >
  101. <FormattedMessage id="resetAndBack" />
  102. </Button>
  103. </Grid>
  104. <Grid item sx={{ ml: 3, mr: 3 }}>
  105. <Button
  106. variant="contained"
  107. type="submit"
  108. color="success"
  109. >
  110. <FormattedMessage id="save" />
  111. </Button>
  112. </Grid>
  113. </ThemeProvider>
  114. </>
  115. :
  116. <>
  117. <ThemeProvider theme={PNSPS_BUTTON_THEME}>
  118. <Grid item sx={{ ml: 3, mr: 3 }}>
  119. <Button
  120. variant="contained"
  121. onClick={onEditClick}
  122. >
  123. <FormattedMessage id="edit" />
  124. </Button>
  125. </Grid>
  126. </ThemeProvider>
  127. </>
  128. }
  129. </Grid>
  130. </Grid>
  131. {/*end top button*/}
  132. <div style={{ paddingLeft: 24, paddingRight: 24 }}>
  133. <Typography variant="h4" sx={{ mt: 3, mb: 2, mr: 3, borderBottom: "1px solid black" }}>
  134. <FormattedMessage id="userDetail" />
  135. </Typography>
  136. <Grid container spacing={1}>
  137. <Grid item lg={12}>
  138. {FieldUtils.getTextField({
  139. label: intl.formatMessage({id: 'userLoginName'}) + ":",
  140. valueName: "username",
  141. disabled: true,
  142. form: formik
  143. })}
  144. </Grid>
  145. <Grid item lg={12}>
  146. {FieldUtils.getTextField({
  147. label: intl.formatMessage({id: 'userContactName'}) + ":",
  148. valueName: "contactPerson",
  149. disabled: true,
  150. form: formik
  151. })}
  152. </Grid>
  153. <Grid item lg={12}>
  154. {FieldUtils.getTextField({
  155. label: intl.formatMessage({id: 'userContactEmail'}) + ":",
  156. valueName: "emailBus",
  157. disabled: true,
  158. form: formik
  159. })}
  160. </Grid>
  161. <Grid item lg={12}>
  162. {FieldUtils.getPhoneField({
  163. label: intl.formatMessage({id: 'userContactNumber'}) + ":",
  164. valueName: {
  165. code: "tel_countryCode",
  166. num: "phoneNumber"
  167. },
  168. disabled: (!editMode),
  169. form: formik
  170. })}
  171. </Grid>
  172. <Grid item lg={12}>
  173. {FieldUtils.getTextField({
  174. label: intl.formatMessage({id: 'primaryUser'}) + ":",
  175. valueName: "primaryUser",
  176. disabled: true,
  177. form: formik
  178. })}
  179. </Grid>
  180. </Grid>
  181. </div>
  182. <br />
  183. </form>
  184. }
  185. {/* <div>
  186. <Dialog open={isWarningPopUp} onClose={() => setIsWarningPopUp(false)} >
  187. <DialogTitle><Typography variant="h3">Warning</Typography></DialogTitle>
  188. <DialogContent style={{ display: 'flex', }}>
  189. <Typography variant="h4" style={{ padding: '16px' }}>{warningText}</Typography>
  190. </DialogContent>
  191. <DialogActions>
  192. <Button onClick={() => setIsWarningPopUp(false)}><Typography variant="h5">Close</Typography></Button>
  193. </DialogActions>
  194. </Dialog>
  195. </div>
  196. <div>
  197. <Dialog open={isConfirmPopUp} onClose={() => setIsConfirmPopUp(false)} >
  198. <DialogTitle><Typography variant="h3">Confirm</Typography></DialogTitle>
  199. <DialogContent style={{ display: 'flex', }}>
  200. <Typography variant="h4" style={{ padding: '16px' }}>{confirmText}</Typography>
  201. </DialogContent>
  202. <DialogActions>
  203. <Button onClick={() => { setIsConfirmPopUp(false) }}><Typography variant="h5">Close</Typography></Button>
  204. <Button onClick={() => { confirmAction?.function(); }}><Typography variant="h5">Confirm</Typography></Button>
  205. </DialogActions>
  206. </Dialog>
  207. </div> */}
  208. </MainCard>
  209. );
  210. };
  211. export default UserInformationCard_Organization_Pub;