{"version":3,"sources":["img/icons/ic_avatar.png","components/Inputs/FormInput/FormInput.js","img/loader.gif","components/Loader/Loader.js","components/FormButton/FormButton.js","img/icons/ic_info_yellow.png","components/dialogs/AlertDialog/AlertDialog.js","img/icons/ic_info_green.png","img/icons/ic_info_red.png","static/Validator/validator.js","Config.js","static/ApiClient/UsersApi.js","components/dialogs/ForgetPasswordDialog/ForgetPasswordDialog.js","img/dib-logo.png","static/ApiClient/BanksApi.js","pages/SignInSignUp/SignInSignUp.js","img/icons/ic_bell_blue.png","components/NotificationItem/NotificationItem.js","components/OutlineButton/OutlineButton.js","static/ApiClient/NotificationApi.js","components/Aside/Aside.js","img/icons/ic_mail_blue.png","components/dialogs/NotificationDialog/NotificationDialog.js","img/icons/ic_pdf_blue.png","components/SideNav/SideNav.js","img/icons/ic_pdf_black.png","img/icons/ic_users_black.png","img/icons/ic_users_blue.png","img/icons/ic_publication_black.png","img/icons/ic_publication_blue.png","img/icons/ic_user_black.png","img/icons/ic_user_blue.png","img/icons/ic_signout_black.png","components/UserItem/UserItem.js","img/icons/ic_add_blue.png","components/dialogs/ViewUserDialog/ViewUserDialog.js","pages/Users/Users.js","pages/ErrorPage/ErrorPage.js","img/icons/ic_attachment_black.png","components/PublicationItem/PublicationItem.js","components/ActionIcon/ActionIcon.js","components/QueryAttachment/QueryAttachment.js","components/QueryItem/QueryItem.js","img/icons/ic_verified.png","img/icons/ic_reply_black.png","img/icons/ic_delete_black.png","img/icons/ic_send_to_black.png","components/QueriesContainer/QueriesContainer.js","img/icons/ic_send_black.png","img/icons/ic_send_blue.png","components/dialogs/UserSelectDialog/UserSelectDialog.js","static/ApiClient/PublicationsApi.js","static/ApiClient/QueriesApi.js","components/dialogs/ViewPublicationDialog/ViewPublicationDialog.js","pages/Publications/Publications.js","components/EnquiryItem/EnquiryItem.js","static/ApiClient/EnquiriesApi.js","components/dialogs/ForumDialog/ForumDialog.js","pages/Enquiries/Enquiries.js","pages/Profile/Profile.js","pages/ChangePassword/ChangePassword.js","pages/UnauthorizedPage/UnauthorizedPage.js","App.js","index.js"],"names":["FormInput","type","name","placeholder","label","options","onChange","noLabel","min","max","maxLength","minLength","disabled","hidden","value","onKeyUp","className","map","option","index","selected","String","display","Loader","size","style","height","width","src","loaderGif","alt","FormButton","text","isProcessing","onClick","setIsProcessing","AlertDialog","isOpen","variation","onClose","positiveButtonMethod","message","negativeButtonText","positiveButtonText","isFixed","withTextField","onChangeTextField","textFieldLabel","textFieldPlaceholder","textFieldMaxLength","textFieldValue","zIndex","iconYellow","BuildIcon","validateFields","fields","i","length","toString","trim","console","warn","validatePassword","password","validateEmail","email","includes","validateAddress","address","validateSelect","BACKEND_URL","_apiKey","require","apiKey","signUpApi","data","headers","Authorization","axios","post","catch","e","log","res","parseInt","status","signInApi","getUserCategoriesApi","BankId","get","alert","JSON","stringify","getUserRolesApi","token","userToken","updateUserApi","patch","ID","updateUserSignUpStatusApi","updateUserPasswordApi","getUsersApi","signOutApi","getUserInfoApi","id","getUserByEmailApi","EMAIL","resetPasswordByCodeApi","obj","CODE","PASSWORD","USERID","resetPasswordByTokenApi","addUserApi","sendVerificationEmail","changeUserPasswordApi","ForgetPasswordDialog","useState","isOpenAlertDialog","setIsOpenAlertDialog","alertDialogVariation","setAlertDialogVariation","alertDialogType","setAlertDialogType","alertDialogMessage","setAlertDialogMessage","alertDialogPosBtnText","setAlertDialogPosBtnText","alertDialogNegBtnText","setAlertDialogNegBtnText","activeView","setActiveView","isGettingUser","setIsGettingUser","isResetingPassowrd","setIsResetingPassword","user","setUser","password1","setPassword1","password2","setPassword2","code","setCode","setEmail","getUser","apiRes","showAlertDialog","msg","posText","resetPassword","negText","BuildEmailView","target","BuildConfirmCodeView","BuildSuccessView","BuildDialogbBody","getBanksApi","SignInSignUp","activeTab","setActiveTab","isOpenForgetPwdDialog","setIsOpenForgetPwdDialog","userCategories","setUserCategories","banks","FIRSTNAME","MIDDLENAME","LASTNAME","ADDRESS","ACCOUNTNUMBER","BANKID","USERCATEGORY","signUpFormData","setSignUpFormData","isHiddenAccountNo","setIsHiddenAccountNo","setIsHiddenUserCategories","isSignUpSuccessful","setIsSignUpSuccessful","signInFormData","setSignInFormData","history","useHistory","useSession","store","setKey","deleteKey","sessionUserToken","sessionUser","useEffect","getUserCategories","signIn","setTimeout","push","handleSignOut","temp","forEach","item","CATEGORYNAME","USERCATEGORYID","signUp","handleChangeSignUpFormData","persist","checked","handleChangeSigninFormData","validateSignUp","mandatoryFields","validateSignIn","logoImage","keyCode","window","location","reload","NotificationItem","isDismissable","notification","dismiss","theme","NOTIFICATIONCONTENT","moment","DATENOTIFIED","format","OutlineButton","color","getButtonColorClass","getUserNotificationsApi","updateNotificationApi","NOTIFICATIONID","Aside","expandNotifications","isLoadingNotifications","setIsLoadingNotifications","notifications","setNotifcations","isErrorNotfications","setIsErrorNotifications","getNotifications","ROLEID","tmp","READFLAG","apiRes1","dismissNotification","notificationToDismiss","array","splice","iconBell","NotificationDialog","filter","SideNav","activePage","preventDefault","iconLogo","href","iconPdfBlue","UserItem","avatar","fullname","role","iconAvatar","toLowerCase","ViewUserDialog","reloadParentList","alertDialogWithTextField","setAlertDialogWithTextField","setBanks","userRoles","setUserRoles","userRequestDeclineTextLabel","setDeclineTextLabel","userRequestDeclineTextPh","setDeclineTextPh","declineReason","setDeclineReason","userFormData","setUserFormData","isUpdatingUserForm","setIsUpdatingUserForm","isUpdatingUserStatus","setIsUpdatingUserStatus","isUpdatingUserSignUpStatus","setIsUpdatingUserSignUpStatus","nextAction","setNextAction","getBanks","getRoles","tm","PHONENUMBER","bank","BANKNAME","ROLENAME","updateUserActiveStatus","dis","DISABLED","updateUserSignUpStatus","sts","SIGNUPSTATUS","SIGNUPREJECTREASON","updateUserForm","handleChangeuserFormData","validateUpdateUser","Users","isOPenNotification","setIsOpenNotification","isOpenUserViewDialog","setIsOpenUserViewDialog","newUserFormData","setNewUserFormData","users","setUsers","selectedUser","setSelectedUser","isGettingUsers","setIsGettingUsers","isErrorGetUsers","setIsErrorGetUsers","isAddingUser","setIsAddingUser","searchQuery","setSearchQuery","filteredListUsers","setFilteredListUsers","getUsers","searchUser","addUser","validateAddNewUser","handleChangeNewUserFormData","BuildTabViewAllUsers","BuildTabViewRequests","BuildTabViewAddUser","iconAdd","BuildTabViews","ErrorPage","goBack","PublicationItem","title","date","iconPdf","ActionIcon","toolTipMessage","icon","QueryAttachment","filePath","onRemove","removable","openDocument","open","QueryItem","query","assignUser","setQuotedQuery","deleteQuery","BuildQueryAttachments","ATTACHMENTS","attachment","DOCUMENTTITLE","DOCUMENTPATH","BuildQuotedQuery","QUOTEDQUERY","QUERIEDBY","QUERYCONTENT","DATEPOSTED","QUERYTYPE","getTagColorClass","content","background","border","padding","fontSize","fadeDuration","placement","QueriesContainer","onClickAssignUser","queries","refreshList","isLoadingQueries","isErrorQueries","postQuery","setAttachmentFiles","attachmentFiles","setQueryContent","queryContent","isSendingQuery","isRefreshingAttach","setIsRefreshingAttach","quotedQuery","hiddenFileInput","useRef","handleFileChange","files","isDuplicate","file","fileUploaded","split","pop","chooseFile","current","click","FLAG","VISIBLE","onClickAssign","iconAttachmentBlue","accept","multiple","ref","removeFile","UserSelectDialog","isOPen","selectUser","isLoadingUsers","setIsLoadingUsers","isErrorUsers","setIsErrorUsers","getPublicationsApi","postPublicationApi","formData","FormData","Date","dateTime","getFullYear","getMonth","getDay","getHours","getMinutes","getSeconds","append","docTitle","flag","userId","bankId","updatePublicationApi","DOCUMENTID","getQueryTypesApi","getDocumentQueriesApi","getEnquiriesQueriesApi","postQueryApi","FILES","ENQUIRYID","QUOTEDQUERYID","QUERYTYPEID","updateQueryApi","QUERYID","pdfjs","GlobalWorkerOptions","workerSrc","version","ViewPublicationDialog","document","setDocument","isOPenUserSelectDialog","setIsOpenUserSelectDialog","numPages","setNumPages","pageNumber","setPageNumber","isDeletingPublication","setIsDeletingPublication","isDraftingPublication","setIsDraftingPublication","queryTypeId","setQueryTypeId","setIsSendingQuery","setIsLoadingQueries","setIsErrorQueries","setQueries","queryOnHold","setQueryOnHold","assignedToUser","setAssignedToUser","getPublicationQueries","assignQueryToUser","flagPublication","flg","handleClickAssignUser","confirmDeleteQuery","onDocumentLoadSuccess","changePage","offset","prevPageNumber","previousPage","nextPage","BuildPDFView","DOCPATH","onLoadSuccess","loading","Publications","isOpenViewPubDialog","setIsOpenViewPubDialog","publications","setPublications","isErrorPublications","setIsErrorPublications","isGettingPublications","setIsGettingPublications","isPostingPubcalition","setIsPostingPublication","isSavingDraftPublication","setIsSavingDraftPublication","selectedPublication","setSelectedPublication","newPublicationTitle","setNewPublicationTitle","filteredListPublications","setFilteredListPublications","getPublications","searchPublication","postPublication","isDraft","verifyPostPublication","doc","DOCTITLE","BuildListDraftPublications","UPLOADDATE","BuildNewPublicationView","EnquiryItem","getAllEnquiriesApi","postEnquiryApi","ENQUIRYTITLE","ENQUIRYCONTENT","ACCESSIBILITY","getEnquiryAttachmentsApi","enquiryId","ForumDialog","enquiry","attachments","setAttachments","getAttachments","getEnquiryQueries","Enquiries","isOpenForumDialog","setIsOpenForumDialog","isLoadingEnquiries","setIsLoadingEnquiries","enquiries","setEnquires","isErrorEnqruiries","setIsErrorEnquiries","selectedEnquiry","setSelectedEnquiry","queryTypes","setQueryTypes","enquiryTitle","setEnquiryTitle","enquiryContent","setEnquiryContent","enquiryAccessibility","setEnquiryAccessibility","enquiryQueryType","setEnquiryQueryType","isSendingEnquiry","setIsSendingEnquiry","queryPrivacy","filteredListEnquiries","setFilteredListEnquiries","getQueryTypes","getEnquiries","searchEnquiries","queryType","postEnquiry","validatePostEnquiry","enq","BuildTabViewPublicEquiries","BuildTabViewPrivateEnquiries","ENQUIREDBY","BuildTabViewNewEnquiry","Profile","isGettingUserInfo","setIsGettingUserInfo","currentPassword","setCurrentPassword","isChangingPassword","setIsChangingPassword","isFixedAlertDialog","setIsFixedAlertDialog","setAddress","accountNumber","setAccountNumber","phone","setPhone","isUpdatingProfile","userProfileInfo","setUserProfileInfo","getUserInfo","changePassword","CURRENTPASSWORD","NEWPASSWORD","updateUserInfo","validateChangePassword","validateUpdateProfile","BuildProfileInfoView","BuildPasswordChangeView","ChangePassword","isLoadingPage","setIsLoadingPage","isTokenInvalid","setIsTokenInvalid","isPasswordReset","setIsPasswordReset","errorMessage","setErrorMessage","pass1","setPass1","pass2","setPass2","tokenKey","useParams","checkTokenValidity","TOKEN","validateChangePass","BuildInvalidRequest","BuildChangePasswordForm","flexDirection","alignItems","UnauthorizedPage","App","pKey","sessionName","path","component","exact","ReactDOM","render","StrictMode","getElementById"],"mappings":"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","file":"static/js/main.79918424.chunk.js","sourcesContent":["export default \"data:image/png;base64,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\"","import { React, useState } from \"react\";\r\nimport \"./FormInput.css\";\r\n\r\nconst FormInput = ({\r\n type = \"text\",\r\n name,\r\n placeholder = \"\",\r\n label,\r\n options = [],\r\n onChange,\r\n noLabel = false,\r\n min = \"\",\r\n max = \"\",\r\n maxLength = \"\",\r\n minLength = \"\",\r\n disabled = false,\r\n hidden = false,\r\n value,\r\n onKeyUp,\r\n}) => {\r\n const BuildInputItem = () => {\r\n if (type === \"select\") {\r\n return (\r\n \r\n );\r\n } else if (type === \"textarea\") {\r\n return (\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n );\r\n }\r\n };\r\n\r\n if (!hidden)\r\n return (\r\n
\r\n {!noLabel ?
{label}
: <>}\r\n {BuildInputItem()}\r\n
\r\n );\r\n else return <>;\r\n};\r\n\r\nexport default FormInput;\r\n","export default __webpack_public_path__ + \"static/media/loader.a3fbd8ca.gif\";","import React from \"react\";\r\nimport loaderGif from \"../../img/loader.gif\";\r\n\r\nimport \"./Loader.css\";\r\n\r\nconst Loader = ({ size = \"50\" }) => {\r\n return (\r\n \r\n \"Loading...\"\r\n \r\n );\r\n};\r\n\r\nexport default Loader;\r\n","import React, { useState } from \"react\";\r\nimport Loader from \"../Loader/Loader\"\r\nimport \"./FormButton.css\";\r\n\r\nconst FormButton = ({\r\n text,\r\n isProcessing = false,\r\n setIsProcessing,\r\n disabled,\r\n onClick,\r\n}) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default FormButton;\r\n","export default \"data:image/png;base64,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\"","import React from \"react\";\r\nimport iconYellow from \"../../../img/icons/ic_info_yellow.png\";\r\nimport iconRed from \"../../../img/icons/ic_info_red.png\";\r\nimport iconGreen from \"../../../img/icons/ic_info_green.png\";\r\n\r\nimport \"./AlertDialog.css\";\r\nimport FormInput from \"../../Inputs/FormInput/FormInput\";\r\n\r\n/* Use alert dialog with these states */\r\n\r\n// const [isOpenAlertDialog,setIsOpenAlertDialog] = useState(\"false\");\r\n// const [alertDialogVariation, setAlertDialogVariation] = useState(\"confirm\");\r\n// const [alertDialogType, setAlertDialogType] = useState(\"warn\");\r\n// const [alertDialogMessage, setAlertDialogMessage] = useState(\"\");\r\n// const [alertDialogPosBtnText, setAlertDialogPosBtnText] = useState(\"\");\r\n// const [alertDialogNegBtnText, setAlertDialogNegBtnText] = useState(\"\");\r\n\r\n/* methods to show dialog*/\r\n\r\n// const setShowAlertDialog = ({ msg=\"\", type=\"\", posText=\"\", negText=\"\", variation=\"\" }) => {\r\n// setAlertDialogMessage(msg);\r\n// setAlertDialogNegBtnText(negText);\r\n// setAlertDialogPosBtnText(posText);\r\n// setAlertDialogType(type);\r\n// setAlertDialogVariation(variation);\r\n// setIsOpenAlertDialog(true);\r\n// };\r\n\r\nconst AlertDialog = ({\r\n isOpen,\r\n type,\r\n variation,\r\n onClose,\r\n positiveButtonMethod,\r\n message,\r\n negativeButtonText,\r\n positiveButtonText,\r\n isFixed = false,\r\n withTextField = false,\r\n onChangeTextField,\r\n textFieldLabel = \"\",\r\n textFieldPlaceholder = \"\",\r\n textFieldMaxLength = \"500\",\r\n textFieldValue = \"\",\r\n}) => {\r\n const BuildButtons = () => {\r\n if (variation === \"confirm\")\r\n return (\r\n
\r\n \r\n \r\n
\r\n );\r\n else if (variation === \"alert\")\r\n return (\r\n
\r\n \r\n
\r\n );\r\n };\r\n\r\n const BuildIcon = () => {\r\n switch (type) {\r\n case \"success\":\r\n return \"i\";\r\n case \"error\":\r\n return \"i\";\r\n case \"warn\":\r\n return \"i\";\r\n default:\r\n return \"i\";\r\n }\r\n };\r\n\r\n const BuildTextField = () => {\r\n if (withTextField) {\r\n return (
\r\n \r\n
)\r\n } else return <>\r\n }\r\n if (isOpen)\r\n return (\r\n
\r\n
\r\n
\r\n
{BuildIcon()}
\r\n
{message}
\r\n {BuildTextField()}\r\n {BuildButtons()}\r\n
\r\n \r\n );\r\n else return <>;\r\n};\r\n\r\nexport default AlertDialog;\r\n","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export const validateFields = (fields) => {\r\n for (var i = 0; i < fields.length; i++) {\r\n if (fields[i].toString().trim() === \"\") {\r\n console.warn(\"field \" + i + \" is empty\");\r\n return false;\r\n }\r\n // console.warn(\"field \" + i + \" is not empty\");\r\n }\r\n return true;\r\n};\r\n\r\nexport const validatePassword = (password) => {\r\n if (password.trim().length === \"\") {\r\n return false;\r\n }\r\n if (password.length < 6) {\r\n return false;\r\n }\r\n return true;\r\n};\r\n\r\nexport const validatePhone = (phone) => {\r\n if (phone.length < 10) return false;\r\n return true;\r\n};\r\n\r\nexport const validateEmail = (email) => {\r\n if (\r\n email.includes(\"@\") &&\r\n email.includes(\".\") &&\r\n email.toString().trim().length >= 6\r\n ) {\r\n return true;\r\n } else return false;\r\n};\r\n\r\nexport const validateAddress = (address) => {\r\n if (\r\n address.toString().trim().length < 5 ||\r\n !address.toString().trim().includes(\" \")\r\n ) {\r\n return false;\r\n }\r\n return true;\r\n};\r\n\r\nexport const validateSelect = (value) => {\r\n if (value.toString().trim() === \"-1\") {\r\n return false;\r\n }\r\n return true;\r\n};\r\n","export const BACKEND_URL = \"https://dibportal.bot.go.tz:3023/\";\r\n// export const BACKEND_URL = \"http://localhost:3023/\";\r\n","import axios from \"axios\";\r\nimport { BACKEND_URL } from \"../../Config\";\r\nconst _apiKey = require(\"../apiKey.json\")?.apiKey;\r\n\r\n// axios.defaults.headers.post[\"Content-Type\"] = \"application/json;charset=utf-8\";\r\n// axios.defaults.headers.post[\"Access-Control-Allow-Origin\"] = \"*\";\r\n\r\nexport const signUpApi = async (data) => {\r\n const headers = {\r\n Authorization: \"Bearer my-token\",\r\n apiKey: _apiKey,\r\n };\r\n\r\n var res = await axios\r\n .post(BACKEND_URL + `users/SignUp`, data, { headers: headers })\r\n .catch((e) => {\r\n console.log(\"***** user signup api error *****\", e);\r\n });\r\n\r\n if (typeof res !== \"undefined\") {\r\n if (parseInt(res.status) === 200) {\r\n console.log(\"***** user sign up returned *****\", res.data);\r\n return res.data;\r\n } else {\r\n console.log(\r\n \"***** user signup api error with status code ***** \" + res.status\r\n );\r\n return { message: \"error \" + res.status, data: {} };\r\n }\r\n } else return { message: \"server error\", data: {} };\r\n};\r\n\r\nexport const signInApi = async (data) => {\r\n const headers = {\r\n Authorization: \"Bearer my-token\",\r\n apiKey: _apiKey,\r\n };\r\n\r\n var res = await axios\r\n .post(BACKEND_URL + `users/SignIn`, data, { headers: headers })\r\n .catch((e) => {\r\n console.log(\"***** user signin api error *****\", e);\r\n });\r\n\r\n if (typeof res !== \"undefined\") {\r\n if (parseInt(res.status) === 200) {\r\n // console.log(\"***** user signin returned *****\", res.data);\r\n return res.data;\r\n } else {\r\n console.log(\r\n \"***** user signin api error with status code ***** \" + res.status\r\n );\r\n return { message: \"error \" + res.status, data: {} };\r\n }\r\n } else return { message: \"server error\", data: {} };\r\n};\r\n\r\nexport const getUserCategoriesApi = async (BankId) => {\r\n try {\r\n const headers = {\r\n Authorization: \"Bearer my-token\",\r\n apiKey: _apiKey,\r\n };\r\n\r\n var res = await axios\r\n .get(BACKEND_URL + `users/categories/${BankId}`, { headers: headers })\r\n .catch((e) => {\r\n console.log(\"***** get user categories api error *****\", e);\r\n });\r\n\r\n if (typeof res !== \"undefined\") {\r\n if (parseInt(res.status) === 200) return res.data;\r\n else {\r\n console.log(\r\n \"***** get user category api error with status code ***** \" +\r\n res.status\r\n );\r\n return { message: \"error \" + res.status, data: {} };\r\n }\r\n } else return { message: \"server error \" + res.status, data: {} };\r\n } catch (err) {\r\n alert(JSON.stringify(\"An error occurred\"));\r\n return { message: \"unknown error \", data: err?.message || \"\" };\r\n }\r\n};\r\n\r\nexport const getUserRolesApi = async ({ token }) => {\r\n const headers = {\r\n Authorization: \"Bearer my-token\",\r\n userToken: token,\r\n apiKey: _apiKey,\r\n };\r\n\r\n var res = await axios\r\n .get(BACKEND_URL + `users/roles/all`, { headers: headers })\r\n .catch((e) => {\r\n console.log(\"***** user roles api error *****\", e);\r\n });\r\n\r\n if (typeof res !== \"undefined\") {\r\n if (parseInt(res.status) === 200) {\r\n console.log(\"***** user roles returned *****\", res.data);\r\n return res.data;\r\n } else {\r\n console.log(\r\n \"***** user role api error with status code ***** \" + res.status\r\n );\r\n return { message: \"error \" + res.status, data: {} };\r\n }\r\n } else return { message: \"server error\", data: {} };\r\n};\r\n\r\nexport const updateUserApi = async (data) => {\r\n const headers = {\r\n Authorization: \"Bearer my-token\",\r\n apiKey: _apiKey,\r\n };\r\n\r\n var res = await axios\r\n .patch(BACKEND_URL + `users/${data.ID}`, data, { headers: headers })\r\n .catch((e) => {\r\n console.log(\"***** user update api error *****\", e);\r\n });\r\n\r\n if (typeof res !== \"undefined\") {\r\n if (parseInt(res.status) === 200) {\r\n console.log(\"***** user update returned *****\", res.data);\r\n return res.data;\r\n } else {\r\n console.log(\r\n \"***** user update api error with status code ***** \" + res.status\r\n );\r\n return { message: \"error \" + res.status, data: {} };\r\n }\r\n } else return { message: \"server error\", data: {} };\r\n};\r\n\r\nexport const updateUserSignUpStatusApi = async ({ data, token }) => {\r\n const headers = {\r\n Authorization: \"Bearer my-token\",\r\n userToken: token,\r\n apiKey: _apiKey,\r\n };\r\n\r\n var res = await axios\r\n .patch(BACKEND_URL + `users/user/signupstatus`, data, { headers: headers })\r\n .catch((e) => {\r\n console.log(\"***** user update signupstatus api error *****\", e);\r\n });\r\n\r\n if (typeof res !== \"undefined\") {\r\n if (parseInt(res.status) === 200) {\r\n console.log(\"***** user update signupstatus returned *****\", res.data);\r\n return res.data;\r\n } else {\r\n console.log(\r\n \"***** user update signupstatus api error with status code ***** \" +\r\n res.status\r\n );\r\n return { message: \"error \" + res.status, data: {} };\r\n }\r\n } else return { message: \"server error\", data: {} };\r\n};\r\n\r\nexport const updateUserPasswordApi = async (data) => {\r\n const headers = {\r\n Authorization: \"Bearer my-token\",\r\n \"no-auth\": \"true\",\r\n apiKey: _apiKey,\r\n };\r\n\r\n var res = await axios\r\n .patch(BACKEND_URL + `users/password/${data.ID}`, data, {\r\n headers: headers,\r\n })\r\n .catch((e) => {\r\n console.log(\"***** user update password api error *****\", e);\r\n });\r\n\r\n if (typeof res !== \"undefined\") {\r\n if (parseInt(res.status) === 200) {\r\n console.log(\"***** user update password returned *****\", res.data);\r\n return res.data;\r\n } else {\r\n console.log(\r\n \"***** user update password api error with status code ***** \" +\r\n res.status\r\n );\r\n return { message: \"error \" + res.status, data: {} };\r\n }\r\n } else return { message: \"server error\", data: {} };\r\n};\r\n\r\nexport const getUsersApi = async ({ token }) => {\r\n const headers = {\r\n Authorization: \"Bearer my-token\",\r\n userToken: token,\r\n apiKey: _apiKey,\r\n };\r\n\r\n console.log(\"session\");\r\n\r\n var res = await axios\r\n .get(BACKEND_URL + `users`, {\r\n headers: headers,\r\n })\r\n .catch((e) => {\r\n console.log(\"***** user get api error *****\", e);\r\n });\r\n\r\n if (typeof res !== \"undefined\") {\r\n if (parseInt(res.status) === 200 && res.data.message !== \"unauthorized\") {\r\n console.log(\"***** user get returned *****\", res.data);\r\n return res.data;\r\n } else if (\r\n parseInt(res.status) === 200 &&\r\n res.data.message === \"unauthorized\"\r\n ) {\r\n console.log(\"***** session expired \");\r\n return { message: \"session expired\", data: {} };\r\n } else {\r\n console.log(\r\n \"***** user get api error with status code ***** \" + res.status\r\n );\r\n return { message: \"error \" + res.status, data: {} };\r\n }\r\n } else return { message: \"server error\", data: {} };\r\n};\r\n\r\nexport const signOutApi = async (token) => {\r\n const headers = {\r\n Authorization: \"Bearer my-token\",\r\n userToken: token,\r\n apiKey: _apiKey,\r\n };\r\n\r\n\r\n var res = await axios\r\n .post(\r\n BACKEND_URL + `users/user/signOut`,\r\n {\r\n userToken: token,\r\n },\r\n {\r\n headers: headers,\r\n }\r\n )\r\n .catch((e) => {\r\n console.log(\"***** user signout api error *****\", e);\r\n });\r\n\r\n if (typeof res !== \"undefined\") {\r\n if (parseInt(res.status) === 200) {\r\n console.log(\"***** user signout returned *****\", res.data);\r\n return res.data;\r\n } else {\r\n console.log(\r\n \"***** user signout api error with status code ***** \" + res.status\r\n );\r\n return { message: \"error \" + res.status, data: {} };\r\n }\r\n } else return { message: \"server error\", data: {} };\r\n};\r\n\r\nexport const getUserInfoApi = async ({ id, token }) => {\r\n const headers = {\r\n Authorization: \"Bearer my-token\",\r\n userToken: token,\r\n apiKey: _apiKey,\r\n };\r\n\r\n var res = await axios\r\n .get(BACKEND_URL + `users/${id}`, { headers: headers })\r\n .catch((e) => {\r\n console.log(\"***** user get api error *****\", e);\r\n });\r\n\r\n if (typeof res !== \"undefined\") {\r\n if (parseInt(res.status) === 200) {\r\n console.log(\"***** user get returned *****\", res.data);\r\n return res.data;\r\n } else {\r\n console.log(\r\n \"***** user get api error with status code ***** \" + res.status\r\n );\r\n return { message: \"error \" + res.status, data: {} };\r\n }\r\n } else return { message: \"server error\", data: {} };\r\n};\r\n\r\nexport const getUserByEmailApi = async (email) => {\r\n const headers = {\r\n Authorization: \"Bearer my-token\",\r\n apiKey: _apiKey,\r\n };\r\n\r\n const data = {\r\n EMAIL: email,\r\n };\r\n\r\n var res = await axios\r\n .post(BACKEND_URL + `users/user/byemail`, data, { headers: headers })\r\n .catch((e) => {\r\n console.log(\"***** user get by email api error *****\", e);\r\n });\r\n\r\n if (typeof res !== \"undefined\") {\r\n if (parseInt(res.status) === 200) {\r\n console.log(\"***** user get by email api returned *****\", res.data);\r\n return res.data;\r\n } else {\r\n console.log(\r\n \"***** user get by email api error with status code ***** \" + res.status\r\n );\r\n return { message: \"error \" + res.status, data: {} };\r\n }\r\n } else return { message: \"server error\", data: {} };\r\n};\r\n\r\nexport const resetPasswordByCodeApi = async (data) => {\r\n const headers = {\r\n Authorization: \"Bearer my-token\",\r\n apiKey: _apiKey,\r\n };\r\n\r\n let obj = {\r\n CODE: data.CODE,\r\n PASSWORD: data.PASSWORD,\r\n USERID: data.USERID,\r\n EMAIL: data.EMAIL,\r\n };\r\n\r\n var res = await axios\r\n .post(BACKEND_URL + `users/resetpassword`, obj, { headers: headers })\r\n .catch((e) => {\r\n console.log(\"***** user get by email api error *****\", e);\r\n });\r\n\r\n if (typeof res !== \"undefined\") {\r\n if (parseInt(res.status) === 200) {\r\n console.log(\"***** user get by email api returned *****\", res.data);\r\n return res.data;\r\n } else {\r\n console.log(\r\n \"***** user get by email api error with status code ***** \" + res.status\r\n );\r\n return { message: \"error \" + res.status, data: {} };\r\n }\r\n } else return { message: \"server error\", data: {} };\r\n};\r\n\r\nexport const resetPasswordByTokenApi = async (data) => {\r\n const headers = {\r\n Authorization: \"Bearer my-token\",\r\n apiKey: _apiKey,\r\n };\r\n\r\n var res = await axios\r\n .post(BACKEND_URL + `users/user/bypassresettoken`, data, {\r\n headers: headers,\r\n })\r\n .catch((e) => {\r\n console.log(\"***** user get by token api error *****\", e);\r\n });\r\n\r\n if (typeof res !== \"undefined\") {\r\n if (parseInt(res.status) === 200) {\r\n console.log(\"***** user get by token api returned *****\", res.data);\r\n return res.data;\r\n } else {\r\n console.log(\r\n \"***** user get by token api error with status code ***** \" + res.status\r\n );\r\n return { message: \"error \" + res.status, data: {} };\r\n }\r\n } else return { message: \"server error\", data: {} };\r\n};\r\n\r\nexport const addUserApi = async ({ data, token }) => {\r\n const headers = {\r\n Authorization: \"Bearer my-token\",\r\n userToken: token,\r\n sendVerificationEmail: \"true\",\r\n apiKey: _apiKey,\r\n };\r\n\r\n var res = await axios\r\n .post(BACKEND_URL + `users`, data, { headers: headers })\r\n .catch((e) => {\r\n console.log(\"***** user add api error *****\", e);\r\n });\r\n\r\n if (typeof res !== \"undefined\") {\r\n if (parseInt(res.status) === 200) {\r\n console.log(\"***** user add returned *****\", res.data);\r\n return res.data;\r\n } else {\r\n console.log(\r\n \"***** user add api error with status code ***** \" + res.status\r\n );\r\n return { message: \"error \" + res.status, data: {} };\r\n }\r\n } else return { message: \"server error\", data: {} };\r\n};\r\n\r\nexport const changeUserPasswordApi = async ({ token, data }) => {\r\n const headers = {\r\n Authorization: \"Bearer my-token\",\r\n userToken: token,\r\n apiKey: _apiKey,\r\n };\r\n\r\n var res = await axios\r\n .patch(BACKEND_URL + `users/user/changePassword`, data, {\r\n headers: headers,\r\n })\r\n .catch((e) => {\r\n console.log(\"***** Change password api error *****\", e);\r\n });\r\n\r\n if (typeof res !== \"undefined\") {\r\n if (parseInt(res.status) === 200) {\r\n console.log(\"***** Change password api returned *****\", res.data);\r\n return res.data;\r\n } else {\r\n console.log(\r\n \"***** Change password api error with status code ***** \" + res.status\r\n );\r\n return { message: \"error \" + res.status, data: {} };\r\n }\r\n } else return { message: \"server error\", data: {} };\r\n};\r\n","import { React, useState } from \"react\";\r\nimport \"./ForgetPasswordDialog.css\";\r\nimport iconAvatar from \"../../../img/icons/ic_avatar.png\";\r\nimport FormInput from \"../../Inputs/FormInput/FormInput\";\r\nimport FormButton from \"../../FormButton/FormButton\";\r\nimport AlertDialog from \"../AlertDialog/AlertDialog\";\r\nimport {\r\n validateFields,\r\n validateEmail,\r\n validatePassword,\r\n} from \"../../../static/Validator/validator\";\r\nimport {\r\n getUserByEmailApi,\r\n resetPasswordByCodeApi,\r\n} from \"../../../static/ApiClient/UsersApi\";\r\n\r\nconst ForgetPasswordDialog = ({ isOpen = false, onClose }) => {\r\n const [isOpenAlertDialog, setIsOpenAlertDialog] = useState(false);\r\n\r\n const [alertDialogVariation, setAlertDialogVariation] = useState(\"confirm\");\r\n const [alertDialogType, setAlertDialogType] = useState(\"warn\");\r\n const [alertDialogMessage, setAlertDialogMessage] = useState(\"\");\r\n const [alertDialogPosBtnText, setAlertDialogPosBtnText] = useState(\"\");\r\n const [alertDialogNegBtnText, setAlertDialogNegBtnText] = useState(\"\");\r\n const [activeView, setActiveView] = useState(1);\r\n\r\n const [isGettingUser, setIsGettingUser] = useState(false);\r\n const [isResetingPassowrd, setIsResetingPassword] = useState(false);\r\n const [user, setUser] = useState(null);\r\n\r\n const [password1, setPassword1] = useState(\"\");\r\n const [password2, setPassword2] = useState(\"\");\r\n const [code, setCode] = useState(\"\");\r\n const [email, setEmail] = useState(\"\");\r\n\r\n //api calls\r\n const getUser = async () => {\r\n setIsGettingUser(true);\r\n\r\n const apiRes = await getUserByEmailApi(email);\r\n\r\n switch (apiRes.message) {\r\n case \"success\":\r\n setUser(apiRes.data);\r\n setActiveView(2);\r\n break;\r\n case \"no match\":\r\n showAlertDialog({\r\n msg: \"No user with such email exists in the portal\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n break;\r\n default:\r\n showAlertDialog({\r\n msg: \"An error occurred, try later\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n }\r\n\r\n setIsGettingUser(false);\r\n };\r\n\r\n const resetPassword = async () => {\r\n setIsResetingPassword(true);\r\n let obj = {\r\n CODE: code,\r\n PASSWORD: password1,\r\n USERID: user.ID,\r\n EMAIL:email,\r\n };\r\n \r\n const apiRes = await resetPasswordByCodeApi(obj);\r\n\r\n switch (apiRes.message) {\r\n case \"success\":\r\n setActiveView(3);\r\n break;\r\n case \"invalid code\":\r\n showAlertDialog({\r\n msg: \"Invalid password reset code\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n break;\r\n case \"error\":\r\n showAlertDialog({\r\n msg: \"An error occurred, try again later\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n break;\r\n default:\r\n showAlertDialog({\r\n msg: \"An error occurred, try later\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n }\r\n\r\n setIsResetingPassword(false);\r\n };\r\n\r\n //validators\r\n\r\n const valideSendEmail = () => {\r\n if (validateFields([email])) {\r\n if (validateEmail(email)) {\r\n getUser();\r\n } else\r\n showAlertDialog({\r\n msg: \"Invalid email provided\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n } else\r\n showAlertDialog({\r\n msg: \"Provide your email\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n };\r\n\r\n const validatePasswordReset = () => {\r\n if (validateFields([code])) {\r\n if (validateFields([password1])) {\r\n if (validateFields([password2])) {\r\n if (password2 === password1) {\r\n resetPassword();\r\n } else\r\n showAlertDialog({\r\n msg: \"Passwords do not match\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n } else\r\n showAlertDialog({\r\n msg: \"Confirm your new password\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n } else\r\n showAlertDialog({\r\n msg: \"Provide a new password\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n } else\r\n showAlertDialog({\r\n msg: \"Provide the verification code\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n };\r\n\r\n //show dialog\r\n const showAlertDialog = ({\r\n msg = \"\",\r\n type = \"\",\r\n posText = \"\",\r\n negText = \"\",\r\n variation = \"\",\r\n }) => {\r\n setAlertDialogMessage(msg);\r\n setAlertDialogNegBtnText(negText);\r\n setAlertDialogPosBtnText(posText);\r\n setAlertDialogType(type);\r\n setAlertDialogVariation(variation);\r\n setIsOpenAlertDialog(true);\r\n };\r\n\r\n //view builders\r\n const BuildDialogbBody = () => {\r\n switch (activeView) {\r\n case 1:\r\n return BuildEmailView();\r\n case 2:\r\n return BuildConfirmCodeView();\r\n case 3:\r\n return BuildSuccessView();\r\n default:\r\n return <>;\r\n }\r\n };\r\n\r\n const BuildEmailView = () => {\r\n return (\r\n
\r\n
\r\n {\r\n setEmail(e.target.value);\r\n }}\r\n />\r\n {\r\n valideSendEmail();\r\n }}\r\n />\r\n
\r\n
\r\n );\r\n };\r\n\r\n const BuildConfirmCodeView = () => {\r\n return (\r\n
\r\n
\r\n We have sent you and email with a verification code please enter your\r\n code and new password\r\n
\r\n
\r\n {\r\n setCode(e.target.value);\r\n }}\r\n />\r\n {\r\n setPassword1(e.target.value);\r\n }}\r\n />\r\n {\r\n setPassword2(e.target.value);\r\n }}\r\n />\r\n {\r\n validatePasswordReset();\r\n }}\r\n />\r\n
\r\n
\r\n );\r\n };\r\n\r\n const BuildSuccessView = () => {\r\n return (\r\n <>\r\n
\r\n
\r\n
\r\n
\r\n Your password has been reset successfully\r\n
\r\n
\r\n \r\n
\r\n \r\n );\r\n };\r\n\r\n const BuildStepView = () => {\r\n return (\r\n
\r\n
= 1 ? \"al-active-step\" : \"\")}>\r\n 1\r\n
\r\n 1 ? \"al-active-line\" : \"\")}\r\n >
\r\n
= 2 ? \"al-active-step\" : \"\")}>\r\n 2\r\n
\r\n 2 ? \"al-active-line\" : \"\")}\r\n >\r\n
= 3 ? \"al-active-step\" : \"\")}>\r\n 3\r\n
\r\n \r\n );\r\n };\r\n\r\n if (isOpen)\r\n return (\r\n <>\r\n
\r\n
\r\n
\r\n

Forgot Password

\r\n {BuildStepView()}\r\n {BuildDialogbBody()}\r\n \r\n
\r\n
\r\n\r\n {}}\r\n onClose={() => {\r\n setIsOpenAlertDialog(false);\r\n }}\r\n positiveButtonText={alertDialogPosBtnText}\r\n negativeButtonText={alertDialogNegBtnText}\r\n />\r\n \r\n );\r\n else return <>;\r\n};\r\n\r\nexport default ForgetPasswordDialog;\r\n","export default __webpack_public_path__ + \"static/media/dib-logo.de6d6a22.png\";","import axios from \"axios\";\r\nimport { BACKEND_URL } from \"../../Config\";\r\nconst _apiKey = require(\"../apiKey.json\")?.apiKey;\r\n\r\nexport const getBanksApi = async () => {\r\n const headers = {\r\n Authorization: \"Bearer my-token\",\r\n apiKey: _apiKey,\r\n };\r\n\r\n var res = await axios\r\n .get(BACKEND_URL + \"banks\", { headers: headers })\r\n .catch((e) => {\r\n console.log(\"***** get banks api error *****\", e);\r\n })\r\n .catch((e) => {\r\n console.log(\"***** get banks api error *****\", e);\r\n });\r\n if (typeof res !== \"undefined\") {\r\n if (parseInt(res.status) === 200) return res.data;\r\n else {\r\n console.log(\r\n \"***** get banks api error with status code ***** \" + res.status\r\n );\r\n return { message: \"error \" + res.status, data: {} };\r\n }\r\n } else return { message: \"server error\", data: {} };\r\n};\r\n","import { React, useState, useEffect } from \"react\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport ForgetPasswordDialog from \"../../components/dialogs/ForgetPasswordDialog/ForgetPasswordDialog\";\r\nimport FormButton from \"../../components/FormButton/FormButton\";\r\nimport FormInput from \"../../components/Inputs/FormInput/FormInput\";\r\nimport logoImage from \"../../img/dib-logo.png\";\r\nimport AlertDialog from \"../../components/dialogs/AlertDialog/AlertDialog\";\r\nimport {\r\n validateFields,\r\n validateAddress,\r\n validateSelect,\r\n validatePassword,\r\n validateEmail,\r\n} from \"../../static/Validator/validator\";\r\nimport \"./SignInSignUp.css\";\r\nimport axios from \"axios\";\r\nimport { BACKEND_URL } from \"../../Config\";\r\nimport {\r\n getUserCategoriesApi,\r\n signInApi,\r\n signOutApi,\r\n signUpApi,\r\n} from \"../../static/ApiClient/UsersApi\";\r\nimport { getBanksApi } from \"../../static/ApiClient/BanksApi\";\r\nimport { useSession } from \"react-session-provider\";\r\n\r\nconst SignInSignUp = () => {\r\n const [activeTab, setActiveTab] = useState(\"signin\");\r\n const [isOpenForgetPwdDialog, setIsOpenForgetPwdDialog] = useState(false);\r\n const [isProcessing, setIsProcessing] = useState(false);\r\n const [userCategories, setUserCategories] = useState([]);\r\n const [banks, setBanks] = useState([]);\r\n\r\n const [signUpFormData, setSignUpFormData] = useState({\r\n FIRSTNAME: \"\",\r\n MIDDLENAME: \"\",\r\n LASTNAME: \"\",\r\n EMAIL: \"\",\r\n ADDRESS: \"\",\r\n ACCOUNTNUMBER: \"\",\r\n BANKID: \"\",\r\n USERCATEGORY: \"\",\r\n });\r\n const [isHiddenAccountNo, setIsHiddenAccountNo] = useState(true);\r\n const [isHiddenUserCategories, setIsHiddenUserCategories] = useState(true);\r\n\r\n const [isOpenAlertDialog, setIsOpenAlertDialog] = useState(false);\r\n const [alertDialogVariation, setAlertDialogVariation] = useState(\"confirm\");\r\n const [alertDialogType, setAlertDialogType] = useState(\"warn\");\r\n const [alertDialogMessage, setAlertDialogMessage] = useState(\"\");\r\n const [alertDialogPosBtnText, setAlertDialogPosBtnText] = useState(\"\");\r\n const [alertDialogNegBtnText, setAlertDialogNegBtnText] = useState(\"\");\r\n const [isSignUpSuccessful, setIsSignUpSuccessful] = useState(false);\r\n\r\n const [signInFormData, setSignInFormData] = useState({\r\n EMAIL: \"\",\r\n PASSWORD: \"\",\r\n });\r\n\r\n const history = useHistory();\r\n const { store = {}, setKey, deleteKey } = useSession();\r\n const { sessionUser, sessionUserToken } = store;\r\n\r\n //useEffects\r\n // useEffect(() => {\r\n // if (signUpFormData.BANKID && signUpFormData.BANKID !== -1) {\r\n // getUserCategories()\r\n // } else setIsHiddenUserCategories(true)\r\n // }, [signUpFormData.BANKID])\r\n\r\n useEffect(() => {\r\n // getBanks()\r\n setSignUpFormData({\r\n ...signUpFormData,\r\n [\"BANKID\"]: 1,\r\n });\r\n getUserCategories();\r\n }, []);\r\n\r\n //api calls\r\n const signIn = async () => {\r\n setIsProcessing(true);\r\n\r\n const res = await signInApi(signInFormData);\r\n\r\n switch (res.message) {\r\n case \"success\":\r\n setKey(\"sessionUser\", res.data.user);\r\n setKey(\"sessionUserToken\", res.data.token);\r\n setTimeout(() => {\r\n setIsProcessing(false);\r\n history.push(\"/publications\");\r\n }, 2000);\r\n\r\n //kill session after 20 minutes\r\n setTimeout(() => {\r\n handleSignOut();\r\n }, 1200000);\r\n\r\n break;\r\n case \"error\":\r\n showAlertDialog({\r\n msg: \"An error occurred, try again later\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n setIsProcessing(false);\r\n break;\r\n case \"inactive\":\r\n showAlertDialog({\r\n msg: \"User is inactive, please contact aministrator\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n setIsProcessing(false);\r\n break;\r\n case \"no match\":\r\n showAlertDialog({\r\n msg: \"Incorrect email or password provided\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n setIsProcessing(false);\r\n break;\r\n default:\r\n showAlertDialog({\r\n msg: res.message,\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n setIsProcessing(false);\r\n }\r\n };\r\n\r\n const handleSignOut = async () => {\r\n const apiRes = await signOutApi(sessionUserToken);\r\n if (apiRes.message === \"success\") {\r\n console.log(\"signout successful\");\r\n } else {\r\n console.log(apiRes.message);\r\n }\r\n //clear session\r\n deleteKey(\"sessionUser\");\r\n deleteKey(\"sessionUserToken\");\r\n\r\n history.push(\"/\");\r\n };\r\n\r\n const getUserCategories = async () => {\r\n const res = await getUserCategoriesApi(1);\r\n\r\n var temp = [];\r\n if (res.message === \"success\") {\r\n res.data.forEach((item, index) => {\r\n temp.push({ display: item.CATEGORYNAME, value: item.USERCATEGORYID });\r\n });\r\n\r\n setUserCategories(temp);\r\n\r\n console.log(\"User categories are\", temp);\r\n setIsHiddenUserCategories(false);\r\n }\r\n };\r\n\r\n const getBanks = async () => {\r\n const res = await getBanksApi();\r\n console.log(res);\r\n\r\n if (res.message === \"success\") {\r\n var temp = [];\r\n\r\n res.data.forEach((bank, index) => {\r\n temp.push({ display: bank.BANKNAME, value: bank.BANKID });\r\n });\r\n console.log(\"banks array has\", temp);\r\n setBanks(temp);\r\n }\r\n };\r\n\r\n const signUp = async () => {\r\n setIsProcessing(true);\r\n // alert(JSON.stringify(signUpFormData));\r\n const res = await signUpApi(signUpFormData);\r\n\r\n switch (res.message) {\r\n case \"success\":\r\n setIsSignUpSuccessful(true);\r\n showAlertDialog({\r\n msg: \"Your registration has been sent to Deposit Insurance Board for verification. Our system admin will contact you via email or phone where necessary. Please coorperate on the verification process. You will receive an email of confirmation once your account has been activated\",\r\n type: \"success\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n break;\r\n case \"error\":\r\n showAlertDialog({\r\n msg: \"An error occurred, try again later\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n break;\r\n case \"email exists\":\r\n showAlertDialog({\r\n msg: \"A user with similar email already exists in the portal, if you already have an account please sign in or reset password if you have forgotten it\",\r\n type: \"warn\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n break;\r\n default:\r\n showAlertDialog({\r\n msg: res.message,\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n }\r\n\r\n setIsProcessing(false);\r\n };\r\n\r\n const handleChangeSignUpFormData = (e) => {\r\n e.persist();\r\n if (e.target.name === \"USERCATEGORY\") {\r\n if (parseInt(e.target.value) === 2) {\r\n setIsHiddenAccountNo(false);\r\n } else setIsHiddenAccountNo(true);\r\n }\r\n setSignUpFormData({\r\n ...signUpFormData,\r\n [e.target.name]:\r\n e.target.type === \"checkbox\" ? e.target.checked : e.target.value,\r\n });\r\n };\r\n\r\n const handleChangeSigninFormData = (e) => {\r\n e.persist();\r\n\r\n setSignInFormData({\r\n ...signInFormData,\r\n [e.target.name]:\r\n e.target.type === \"checkbox\" ? e.target.checked : e.target.value,\r\n });\r\n };\r\n\r\n //validators\r\n const validateSignUp = () => {\r\n const mandatoryFields = [\r\n signUpFormData.FIRSTNAME ?? \"\",\r\n signUpFormData.MIDDLENAME ?? \"\",\r\n signUpFormData.LASTNAME ?? \"\",\r\n signUpFormData.EMAIL ?? \"\",\r\n signUpFormData.ADDRESS ?? \"\",\r\n signUpFormData.BANKID ?? \"\",\r\n signUpFormData.USERCATEGORY ?? \"\",\r\n ];\r\n\r\n if (validateFields(mandatoryFields)) {\r\n if (validateEmail(signUpFormData.EMAIL)) {\r\n if (validateAddress(signUpFormData.ADDRESS)) {\r\n if (validateSelect(signUpFormData.BANKID)) {\r\n if (validateSelect(signUpFormData.USERCATEGORY)) {\r\n if (\r\n (parseInt(signUpFormData.USERCATEGORY) === 2 &&\r\n validateFields([signUpFormData.ACCOUNTNUMBER ?? \"\"])) ||\r\n parseInt(signUpFormData.USERCATEGORY) !== 2\r\n ) {\r\n signUp();\r\n } else {\r\n showAlertDialog({\r\n msg: \"Please provide a valid account number\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n }\r\n } else\r\n showAlertDialog({\r\n msg: 'Pease choose one from \"Who are you?\", we need to know your role with the bank ',\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n } else\r\n showAlertDialog({\r\n msg: \"Please select your bank\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n } else\r\n showAlertDialog({\r\n msg: \"Please provide a valid address including your country.Example, Kinondoni Dar es salaam Tanzania\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n } else\r\n showAlertDialog({\r\n msg: \"Invalid email provided\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n } else\r\n showAlertDialog({\r\n msg: \"Provide all mandatory fields (With *)\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n };\r\n\r\n const validateSignIn = () => {\r\n if (validateFields([signInFormData.EMAIL ?? \"\"])) {\r\n if (validateEmail(signInFormData.EMAIL ?? \"\")) {\r\n if (validatePassword(signInFormData.PASSWORD ?? \"\")) {\r\n signIn();\r\n } else\r\n showAlertDialog({\r\n msg: \"Please provide a valid password. Your password should be at least 6 charactes long\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n } else\r\n showAlertDialog({\r\n msg: \"Please provide a valid email address\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n } else\r\n showAlertDialog({\r\n msg: \"Provide email\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n };\r\n\r\n //show dialog\r\n const showAlertDialog = ({\r\n msg = \"\",\r\n type = \"\",\r\n posText = \"\",\r\n negText = \"\",\r\n variation = \"\",\r\n }) => {\r\n setAlertDialogMessage(msg);\r\n setAlertDialogNegBtnText(negText);\r\n setAlertDialogPosBtnText(posText);\r\n setAlertDialogType(type);\r\n setAlertDialogVariation(variation);\r\n setIsOpenAlertDialog(true);\r\n };\r\n\r\n //view builders\r\n\r\n const BuildSignInTabView = () => {\r\n return (\r\n
\r\n
\r\n \"DIB\"\r\n
\r\n\r\n handleChangeSigninFormData(e)}\r\n onKeyUp={(e) => {\r\n if (e.keyCode === 13) {\r\n validateSignIn();\r\n }\r\n }}\r\n />\r\n\r\n handleChangeSigninFormData(e)}\r\n onKeyUp={(e) => {\r\n if (e.keyCode === 13) {\r\n validateSignIn();\r\n }\r\n }}\r\n />\r\n\r\n \r\n\r\n
\r\n
\r\n Forgot Password? Reset{\" \"}\r\n {\r\n if (!isProcessing) setIsOpenForgetPwdDialog(true);\r\n }}\r\n >\r\n here\r\n \r\n
\r\n
\r\n
\r\n );\r\n };\r\n\r\n const BuildSignUpTabView = () => {\r\n return (\r\n
\r\n
\r\n \"DIB\"\r\n
\r\n {\r\n handleChangeSignUpFormData(e);\r\n }}\r\n value={signUpFormData.FIRSTNAME}\r\n />\r\n {\r\n handleChangeSignUpFormData(e);\r\n }}\r\n value={signUpFormData.MIDDLENAME}\r\n />\r\n {\r\n handleChangeSignUpFormData(e);\r\n }}\r\n value={signUpFormData.LASTNAME}\r\n />\r\n {\r\n handleChangeSignUpFormData(e);\r\n }}\r\n value={signUpFormData.EMAIL}\r\n />\r\n {\r\n handleChangeSignUpFormData(e);\r\n }}\r\n value={signUpFormData.ADDRESS}\r\n />\r\n {\r\n handleChangeSignUpFormData(e);\r\n }}\r\n hidden={true}\r\n value={1}\r\n />\r\n {\r\n handleChangeSignUpFormData(e);\r\n }}\r\n placeholder=\"Choose one\"\r\n // hidden={isHiddenUserCategories}\r\n value={signUpFormData.USERCATEGORY}\r\n />\r\n\r\n
\r\n );\r\n };\r\n\r\n return (\r\n
\r\n
\r\n
\r\n

Welcome to Deposit Insurance Board Portal

\r\n
\r\n This portal provides a platform for information sharing among\r\n depositors, creditors as well as other stakeholders with interests\r\n and rights on the liquidation of banks in Tanzania. Membership to\r\n this platform is limited to members who will be given access by the\r\n portal administrator and share information accordingly. We welcome\r\n your comments, contributions and inquiries if any, on the on-going\r\n banks liquidation conducted by the Deposit Insurance Board (DIB).\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {\r\n if (!isProcessing) setActiveTab(\"signin\");\r\n }}\r\n >\r\n Sign in\r\n
\r\n {\r\n if (!isProcessing) setActiveTab(\"signup\");\r\n }}\r\n >\r\n Sign up\r\n
\r\n
\r\n
\r\n {activeTab === \"signin\"\r\n ? BuildSignInTabView()\r\n : BuildSignUpTabView()}\r\n
\r\n
\r\n \r\n\r\n {\r\n setIsOpenForgetPwdDialog(false);\r\n }}\r\n />\r\n\r\n {\r\n if (isSignUpSuccessful) {\r\n setActiveTab(\"signin\");\r\n setIsSignUpSuccessful(false);\r\n window.location.reload();\r\n }\r\n setIsOpenAlertDialog(false);\r\n }}\r\n positiveButtonText={alertDialogPosBtnText}\r\n negativeButtonText={alertDialogNegBtnText}\r\n />\r\n \r\n );\r\n};\r\n\r\nexport default SignInSignUp;\r\n","export default \"data:image/png;base64,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\"","import React from \"react\";\r\nimport \"./NotificationItem.css\";\r\nimport moment from \"moment\";\r\n\r\nconst NotificationItem = ({\r\n isDismissable = true,\r\n notification,\r\n dismiss,\r\n theme = \"\",\r\n}) => {\r\n return (\r\n
\r\n
\r\n {notification.NOTIFICATIONCONTENT}\r\n
\r\n
\r\n {moment(notification.DATENOTIFIED).format(\"D-MMM-YYYY hh:mma\")}\r\n
\r\n {isDismissable && (\r\n
\r\n
Dismiss
\r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default NotificationItem;\r\n","import React, { useState } from \"react\";\r\nimport Loader from \"../Loader/Loader\";\r\nimport \"./OutlineButton.css\";\r\n\r\nconst OutlineButton = ({\r\n text,\r\n isProcessing = false,\r\n disabled,\r\n onClick,\r\n color = \"blue\",\r\n width=\"\",\r\n}) => {\r\n const getButtonColorClass = () => {\r\n switch (color) {\r\n case \"blue\":\r\n return \"btn-blue\";\r\n case \"red\":\r\n return \"btn-red\";\r\n case \"green\":\r\n return \"btn-green\";\r\n default:\r\n return \"btn-blue\";\r\n }\r\n };\r\n\r\n return (\r\n\r\n \r\n {!isProcessing ? text ?? \"\" : }\r\n \r\n );\r\n};\r\n\r\nexport default OutlineButton;\r\n","import axios from \"axios\";\r\nimport { BACKEND_URL } from \"../../Config\";\r\nconst _apiKey = require(\"../apiKey.json\")?.apiKey;\r\n\r\nexport const getUserNotificationsApi = async ({ token, data }) => {\r\n const headers = {\r\n Authorization: \"Bearer my-token\",\r\n userToken: token,\r\n apiKey: _apiKey,\r\n };\r\n\r\n var res = await axios\r\n .post(BACKEND_URL + `notifications/user`, data, { headers: headers })\r\n .catch((e) => {\r\n console.log(\"***** user notifications get api error *****\", e);\r\n });\r\n\r\n if (typeof res !== \"undefined\") {\r\n if (parseInt(res.status) === 200 && res.data.message !== \"unauthorized\") {\r\n console.log(\"***** user notifications get returned *****\", res.data);\r\n return res.data;\r\n } else if (\r\n parseInt(res.status) === 200 &&\r\n res.data.message === \"unauthorized\"\r\n ) {\r\n console.log(\"***** session expired \");\r\n return { message: \"session expired\", data: {} };\r\n } else {\r\n console.log(\r\n \"***** user notifications get api error with status code ***** \" +\r\n res.status\r\n );\r\n return { message: \"error \" + res.status, data: {} };\r\n }\r\n } else return { message: \"server error\", data: {} };\r\n};\r\n\r\nexport const updateNotificationApi = async ({ token, data }) => {\r\n const headers = {\r\n Authorization: \"Bearer my-token\",\r\n userToken: token,\r\n apiKey: _apiKey,\r\n };\r\n\r\n var res = await axios\r\n .patch(BACKEND_URL + `notifications/${data.NOTIFICATIONID}`, data, {\r\n headers: headers,\r\n })\r\n .catch((e) => {\r\n console.log(\"***** notification update api error *****\", e);\r\n });\r\n\r\n if (typeof res !== \"undefined\") {\r\n if (parseInt(res.status) === 200) {\r\n console.log(\"***** notification update api returned *****\", res.data);\r\n return res.data;\r\n } else {\r\n console.log(\r\n \"***** notification update api error with status code ***** \" +\r\n res.status\r\n );\r\n return { message: \"error \" + res.status, data: {} };\r\n }\r\n } else return { message: \"server error\", data: {} };\r\n};\r\n","import { React, useEffect, useState } from \"react\";\r\nimport iconBell from \"../../img/icons/ic_bell_blue.png\";\r\nimport iconMail from \"../../img/icons/ic_mail_blue.png\";\r\nimport NotificationItem from \"../NotificationItem/NotificationItem\";\r\nimport OutlineButton from \"../OutlineButton/OutlineButton\";\r\nimport Loader from \"../Loader/Loader\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { useSession } from \"react-session-provider\";\r\nimport \"./Aside.css\";\r\nimport {\r\n getUserNotificationsApi,\r\n updateNotificationApi,\r\n} from \"../../static/ApiClient/NotificationApi\";\r\nimport { signOutApi } from \"../../static/ApiClient/UsersApi\";\r\n\r\nconst Aside = ({ expandNotifications }) => {\r\n const [isLoadingNotifications, setIsLoadingNotifications] = useState(false);\r\n const [notifications, setNotifcations] = useState([]);\r\n const [isErrorNotfications, setIsErrorNotifications] = useState(false);\r\n\r\n const history = useHistory();\r\n const { store = {}, setKey, deleteKey } = useSession();\r\n const { sessionUser, sessionUserToken } = store;\r\n\r\n //useEffects\r\n useEffect(() => {\r\n getNotifications();\r\n // setInterval(() => {\r\n // console.log(\"***** refreshing notifications...\");\r\n // getNotificationsSilent();\r\n // }, 60000);\r\n }, [sessionUser]);\r\n\r\n //api calls\r\n const getNotifications = async () => {\r\n if (sessionUser) {\r\n setIsLoadingNotifications(true);\r\n\r\n const apiRes = await getUserNotificationsApi({\r\n token: sessionUserToken,\r\n data: {\r\n ID: sessionUser.ID,\r\n ROLEID: sessionUser.ROLEID,\r\n },\r\n });\r\n\r\n switch (apiRes.message) {\r\n case \"success\":\r\n setIsErrorNotifications(false);\r\n var tmp = [];\r\n for (var item of apiRes.data) {\r\n if (item.READFLAG === 0) tmp.push(item);\r\n }\r\n setNotifcations(tmp);\r\n break;\r\n case \"session expired\":\r\n const apiRes1 = await signOutApi(sessionUserToken);\r\n if (apiRes1.message === \"success\") {\r\n console.log(\"signout successful\");\r\n } else {\r\n console.log(apiRes1.message);\r\n }\r\n //clear session\r\n deleteKey(\"sessionUser\");\r\n deleteKey(\"sessionUserToken\");\r\n history.push(\"/\");\r\n break;\r\n case \"error\":\r\n setIsErrorNotifications(true);\r\n break;\r\n default:\r\n setIsErrorNotifications(true);\r\n }\r\n\r\n setIsLoadingNotifications(false);\r\n }\r\n };\r\n\r\n const getNotificationsSilent = async () => {\r\n if (sessionUser) {\r\n const apiRes = await getUserNotificationsApi({\r\n token: sessionUserToken,\r\n data: {\r\n ID: sessionUser.ID,\r\n ROLEID: sessionUser.ROLEID,\r\n },\r\n });\r\n\r\n switch (apiRes.message) {\r\n case \"success\":\r\n setIsErrorNotifications(false);\r\n var tmp = [];\r\n for (var item of apiRes.data) {\r\n if (item.READFLAG === 0) tmp.push(item);\r\n }\r\n setNotifcations(tmp);\r\n\r\n break;\r\n case \"error\":\r\n setIsErrorNotifications(true);\r\n break;\r\n default:\r\n setIsErrorNotifications(true);\r\n }\r\n }\r\n };\r\n\r\n const dismissNotification = async (index) => {\r\n var notificationToDismiss = notifications[index];\r\n\r\n var array = [...notifications];\r\n\r\n if (index !== -1) {\r\n array.splice(index, 1);\r\n setNotifcations(array);\r\n }\r\n\r\n updateNotificationApi({\r\n token: sessionUserToken,\r\n data: {\r\n NOTIFICATIONID: notificationToDismiss.NOTIFICATIONID,\r\n READFLAG: 1,\r\n },\r\n });\r\n };\r\n\r\n //view builders\r\n\r\n const BuildListNotifications = () => {\r\n if (!isLoadingNotifications) {\r\n if (!isErrorNotfications) {\r\n if (notifications.length > 0) {\r\n return (\r\n
\r\n {notifications.map((notification, index) => (\r\n {\r\n dismissNotification(index);\r\n }}\r\n />\r\n ))}\r\n \r\n SEE ALL\r\n
\r\n \r\n );\r\n } else {\r\n return (\r\n
\r\n
\r\n
No new notifications
\r\n
\r\n \r\n SEE ALL NOTIFICATIONS\r\n
\r\n
\r\n \r\n );\r\n }\r\n } else {\r\n return (\r\n
\r\n
\r\n
Failed to load notifications
\r\n {\r\n getNotifications();\r\n }}\r\n />\r\n
\r\n
\r\n );\r\n }\r\n } else {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n };\r\n\r\n const BuildNotificationsCard = () => {\r\n return (\r\n
\r\n
\r\n
\r\n \"N\"\r\n
\r\n
Notifications
\r\n
\r\n {BuildListNotifications()}\r\n
\r\n );\r\n };\r\n\r\n const BuildMessagesCard = () => {\r\n return (\r\n
\r\n
\r\n
\r\n \"N\"\r\n
\r\n
Messages
\r\n
\r\n
\r\n
No messages
\r\n {/* \r\n EXPAND\r\n
*/}\r\n
\r\n \r\n );\r\n };\r\n\r\n return (\r\n
\r\n {BuildNotificationsCard()}\r\n\r\n {BuildMessagesCard()}\r\n
\r\n );\r\n};\r\n\r\nexport default Aside;\r\n","export default \"data:image/png;base64,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\"","import { React, useState, useEffect } from \"react\";\r\nimport iconBell from \"../../../img/icons/ic_bell_blue.png\";\r\nimport Loader from \"../../Loader/Loader\";\r\nimport NotificationItem from \"../../NotificationItem/NotificationItem\";\r\nimport OutlineButton from \"../../OutlineButton/OutlineButton\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { useSession } from \"react-session-provider\";\r\nimport {\r\n getUserNotificationsApi,\r\n updateNotificationApi,\r\n} from \"../../../static/ApiClient/NotificationApi\";\r\nimport \"./NotificationDialog.css\";\r\n\r\nconst NotificationDialog = ({ isOpen, onClose }) => {\r\n const [activeTab, setActiveTab] = useState(\"unread\");\r\n\r\n const [isLoadingNotifications, setIsLoadingNotifications] = useState(false);\r\n const [notifications, setNotifcations] = useState([]);\r\n const [isErrorNotfications, setIsErrorNotifications] = useState(false);\r\n\r\n const history = useHistory();\r\n const { store = {}, setKey } = useSession();\r\n const { sessionUser, sessionUserToken } = store;\r\n\r\n //useEffects\r\n useEffect(() => {\r\n if (isOpen && sessionUser) getNotifications();\r\n }, [sessionUser, isOpen]);\r\n\r\n //api calls\r\n const getNotifications = async () => {\r\n if (sessionUser) {\r\n setIsLoadingNotifications(true);\r\n\r\n const apiRes = await getUserNotificationsApi({\r\n token: sessionUserToken,\r\n data: {\r\n ID: sessionUser.ID,\r\n ROLEID: sessionUser.ROLEID,\r\n },\r\n });\r\n\r\n switch (apiRes.message) {\r\n case \"success\":\r\n setNotifcations(apiRes.data);\r\n break;\r\n case \"error\":\r\n setIsErrorNotifications(true);\r\n break;\r\n default:\r\n setIsErrorNotifications(true);\r\n }\r\n\r\n setIsLoadingNotifications(false);\r\n }\r\n };\r\n\r\n const dismissNotification = async (index) => {\r\n var notificationToDismiss = notifications.filter(\r\n (notification) => notification.READFLAG !== 1\r\n )[index];\r\n\r\n await updateNotificationApi({\r\n token: sessionUserToken,\r\n data: {\r\n NOTIFICATIONID: notificationToDismiss.NOTIFICATIONID,\r\n READFLAG: 1,\r\n },\r\n });\r\n\r\n getNotifications();\r\n };\r\n\r\n //view buiders\r\n\r\n const BuildNewNotificationViews = () => {\r\n if (!isLoadingNotifications) {\r\n if (!isErrorNotfications) {\r\n if (\r\n notifications.filter((notification) => notification.READFLAG !== 1)\r\n .length > 0\r\n ) {\r\n return (\r\n
\r\n {notifications\r\n .filter((notification) => notification.READFLAG !== 1)\r\n .map((notification, index) => (\r\n {\r\n dismissNotification(index);\r\n }}\r\n />\r\n ))}\r\n
\r\n );\r\n } else {\r\n return (\r\n
No notifications
\r\n );\r\n }\r\n } else {\r\n return (\r\n
\r\n
\r\n
Failed to load notifications
\r\n {\r\n getNotifications();\r\n }}\r\n />\r\n
\r\n
\r\n );\r\n }\r\n } else {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n };\r\n\r\n const BuildReadNotificationsView = () => {\r\n if (!isLoadingNotifications) {\r\n if (!isErrorNotfications) {\r\n if (\r\n notifications.filter((notification) => notification.READFLAG === 1)\r\n .length > 0\r\n ) {\r\n return (\r\n
\r\n {notifications\r\n .filter((notification) => notification.READFLAG === 1)\r\n .map((notification, index) => (\r\n \r\n ))}\r\n
\r\n );\r\n } else {\r\n return
Nothing here!
;\r\n }\r\n } else {\r\n return (\r\n
\r\n
\r\n
Failed to load notifications
\r\n {\r\n getNotifications();\r\n }}\r\n />\r\n
\r\n
\r\n );\r\n }\r\n } else {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n };\r\n\r\n if (isOpen)\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \"i\"\r\n
\r\n
All Notifications
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n {\r\n setActiveTab(\"unread\");\r\n }}\r\n >\r\n Unread\r\n
\r\n {\r\n setActiveTab(\"read\");\r\n }}\r\n >\r\n Read\r\n
\r\n
\r\n
\r\n
\r\n {activeTab === \"unread\"\r\n ? BuildNewNotificationViews()\r\n : BuildReadNotificationsView()}\r\n \r\n \r\n );\r\n else return <>;\r\n};\r\n\r\nexport default NotificationDialog;\r\n","export default \"data:image/png;base64,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\"","import { React, useState } from \"react\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { useSession } from \"react-session-provider\";\r\nimport axios from \"axios\";\r\n\r\nimport iconLogo from \"../../img/dib-logo.png\";\r\nimport iconPdfBlue from \"../../img/icons/ic_pdf_blue.png\";\r\nimport iconPdfBlack from \"../../img/icons/ic_pdf_black.png\";\r\nimport iconUsersBlue from \"../../img/icons/ic_users_blue.png\";\r\nimport iconUsersBlack from \"../../img/icons/ic_users_black.png\";\r\nimport iconUserBlue from \"../../img/icons/ic_user_blue.png\";\r\nimport iconUserBlack from \"../../img/icons/ic_user_black.png\";\r\nimport iconSignoutBlue from \"../../img/icons/ic_signout_blue.png\";\r\nimport iconSignoutBlack from \"../../img/icons/ic_signout_black.png\";\r\nimport iconPublicationBlue from \"../../img/icons/ic_publication_blue.png\";\r\nimport iconPublicationBlack from \"../../img/icons/ic_publication_black.png\";\r\nimport \"./SideNav.css\";\r\nimport { signOutApi } from \"../../static/ApiClient/UsersApi\";\r\n\r\nconst SideNav = ({ activePage }) => {\r\n const { store = {}, setKey, deleteKey } = useSession();\r\n const { sessionUser, sessionUserToken } = store;\r\n\r\n const history = useHistory();\r\n\r\n const handleSignOut = async (e) => {\r\n e.preventDefault();\r\n\r\n const apiRes = await signOutApi(sessionUserToken);\r\n if (apiRes.message === \"success\") {\r\n console.log(\"signout successful\");\r\n } else {\r\n console.log(apiRes.message);\r\n }\r\n //clear session\r\n deleteKey(\"sessionUser\");\r\n deleteKey(\"sessionUserToken\");\r\n\r\n history.push(\"/\");\r\n };\r\n\r\n return (\r\n
\r\n
\r\n \"DIB\"\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
Publications
\r\n \r\n {sessionUser && (sessionUser.ROLEID === 1 || sessionUser.ROLEID === 2) && (\r\n \r\n
\r\n \r\n
\r\n
Users
\r\n \r\n )}\r\n \r\n
\r\n \r\n
\r\n
Enquiries
\r\n \r\n \r\n
\r\n \r\n
\r\n
Me
\r\n \r\n \r\n
\r\n \"i\"\r\n
\r\n
Sign out
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default SideNav;\r\n","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFcAAABXCAYAAABxyNlsAAAACXBIWXMAAA36AAAN+gHZMNd/AAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAACUlJREFUeJztnXuMXFUdxz+/O/tuKd0llp3yUkRCFLGYQiAYtUF5lRoQXGNMKst25s52oVEEMSHiYCSIBILoMntmFlZKRLIaSAqEVkUaSwREoEV5GCKogLdsLV0o3e0+5vz8Y6ewLe323Hnc2dL5JE236e+c79lv754595zf+VWYhdxxxx2HTE5OngMsAU4o/GoCDgXeBV4H/i0iT6jqhiAINqTT6cnqjXjvSLUHMJ2+vr7FnuddrarLgMYQTd8E7gF6fd//Z2VGF55ZYe7tt99+bCwW6wXOKbGrCeAua226u7v7jTIMrSSqbq4xpge4EZhTxm6HReSyZDL5qzL2GZqqmWuMqQcM0FlBmTuDIPCrNR9XxdyBgYGmiYmJNar65Qjk1gIX+b4/EoHWbsSiFkyn015LS8uvgfMjkjwOWLR48eLB9evX24g0AfCiFAOIx+M3ABdFLLs0Ho/fHLFmtNNCJpM5w/O8P1GFf1QAETkvmUw+HJleVEK33XZbY2Nj4wvAsSGbjgN/BF5S1c0icghTLxWfBz4Ssq/XJicnP9nT0/NuyHZFUReFCEBTU1OXqoYx9l3ghlgs1rdixYq39vxLY0y9iFyoqtczNa+6cFQsFtu19Ks4kTy5hWXXK8CRjk2estZe6PIiMDAw0DQ2NpYRkUsc+x5qbm4+dvny5Tsc44smkrlPRM7G0VgR+T3wRdc3rM7Ozp2pVKoTyDgOZ8HIyEgkH6iRmKuq33QMfUFVv1bMmrS1tfVyVX3CJVZELg7bfzFU3FxVFeAst1Bd4fv+28XodHR05IEUoA7hZ91yyy3NxeiEoeLmZjKZ44E2h9D7U6nU46VopVKpTcA6h9DGuXPnnliKlgsVN7euru4zLnEiclc59ETkNy5xquo0rlKIYlpodwiz9fX1vyuHnog4Pf0hl4VFUXFzRcRlof9mZ2fnznLoNTY2/scxtKUcejNRcXOttS6bJWPl0mtqappwiRORA/8DTURGHcIWptPpsoxly5YthzuGFrUqCUMU5m52CGuIx+OnlEMvFos59aOqr5VDbyaiMPcllzhV/UaZ9C5wjHulHHozUXFzPc97nqmDwxkRkUQul3Pde9grxpijgQ6H0DzwWClaLlTc3K6uru2Ay/KoxVr788IbXWgK7X6B25H8X4t9EwxDVJvWDznGXZDNZq8rRiCbzV4LLHMMv6cYjbBEsp9bX18/MDEx8SPcnqofGGMOD4Kgx+XUdnBwMDY8PHy9ql7tOJyRfD5/t2NsSUTy5F566aVbAKfX0gLJ9vb2DZlM5tSZgnK53Gnbtm3bEMJYALNy5cptIeKLJrJjHmPMx4HnCZempEzN179V1RdFZEhVF4jIp5g65DyNcN/DloaGhuM7OzuHQ7QpmkgPKI0xNwDfj1JzOiKyPJlMRjIlQMSnsGNjY2ng6Sg1p3FnlMZCxOauWrVqDPg6EMmct4vCCcXlUWpCFfIHCimeXyI6gzdaa8+rRjpTVZIzfN9/RkTOB7ZWUkdV1zU0NCyJanWwJ1UxFyCZTP7ZWruYyszBVkRubGtrWxrVymBvVD0/t5DxeI2qXslUan6pbARSvu8/WYa+SqLq5u6isA7+MVPr1/oiutikqje2tbUNFk6Cq86sMXcXxpi4qnaJyLnAKezbaAVeBh4QkfsSicTjIuJyrB4Zs87c6axevXrO6Ojoiara7nneAmutFZF3PM/bPDo6umnVqlXvVHuMNWrUqFGjRo0aNWrUqFGjRo0aNWrUmM6s2XJUVclms+0i8jFr7TEicqSIHKaqrao6X0Smj3UnMCIiw6q6tZADHHie96958+a9elBvlvf29rbHYrFFnuedrKonAycBHyVcNs6+GANeBF4C/l7ID/5bIpF4OerN9EjM7e/vP85auwRYoqpfABZGobsHQ6q6HnhURNb7vu+UlF0KFTF3cHCwYXh4+EzgokKplaMroVMiAfCoqj7Y0tKyphIXrctmbjqdrlu4cOE5qnox8BWgtVx9R8AOEVkD3Dt//vy1HR0d4+XotGRze3t7j6qrq0sAXVTnx73cbBOR+/L5fLa7u/svpXRUtLnGmM8BVwFLqUIhooh4UlV/VuxxfWhzc7ncafl8/ppCOtLBwqvAT4IguDNMjTJnc/v7+4/L5/O3MvWkHqw8LyLfTiaTf3AJ3q+5hRIq3wWuBSp+pfNAQFXvz+fzK3t6ema8wDijucaYE4B7gUpfn58AAhF5zVr7hoj8t1CJaQcwrqrbRWRSVXeIyBxVrStUaWpQ1Tki0q6qCz3PO0JVjwLiFJcSFYatQLfv+/u867FPc7PZ7Nmqei8wv8yD2gw8C2wSkWcnJyc3DQ0NvZxOp8tWrS6dTnsLFiz4hOd5i0RkEbAIOBlwvRcchptbW1uv3tsH3l7NNcZcBtxKeVYBkyLymLV2bSwWeziRSDxXhj6LIpfLnZTP588t5KGdQZmuiqnqg+Pj4xcXMuff4wPmGmOuAn5aol4eeERV7xaRB6K4rRgWY8yhqrrM87zlqnompecqP9Ta2vrV6S8gu5mbzWavVNWbShB4Heiz1v5yNhQHdiWTyRzhed4lQDdwRAldGd/3U7v+8J65fX19V4hIscUknwJuCoLg/tlYO9yVdDpdF4/HLwS+Bywushvf9/0sFMw1xiwF1hD+R+Np4Ie+77ve7T0gUFXJ5XJLVfU64LMhm48Dp/u+/4xXqK+VJZyx/wMSQRCc+mEzFkBENJlMPhgEwSmAz9T360oD8HMA6evr6xKR/hCN11prv9Xd3T0Uos0BTS6XO9xauxq34nMAeJ53uud5XpgK9zcnk8nzDiZjARKJxJtBEJzL1PLUCWvtMjHGPAd8en/BqppLpVLJUgb5YSCbzfaratf+4lR1nYfbW8vWfD5/RelDO/CJxWLfAT5Qz3dPROQYD7d38I1RVUue7XR1dW1X1Y0OoYeKMWY7MHc/gQqsE5FHrLX/UNXXPc/b2tzcvDWKIr/VonCb6DBr7WGFo/4TVPVMETmL/e8oviXGmJ2UfqRteb8I2jiwy/ARCtXuVPVtESl6c0ZEdqjquIg0qGop/xtKDJhX+LqR98sOzmFqGQVTm1WlHoHtqKM8W3Me+zmQ3D2nIzyqutvvBwANHlW8XP0hp75mbAWpmVtBauZWkJq5FaRmbgWpmVtBauZWkP8DRY9W1qg/ixAAAAAASUVORK5CYII=\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFcAAABXCAYAAABxyNlsAAAACXBIWXMAAA36AAAN+gHZMNd/AAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAACOpJREFUeJztnX1sVfUZxz/Pue0tL0PqmLze3hZkSqZxMsRgXLYRJ/IiiwzGsixxEsZAkdIyGCYkriYzyAjtbZEobMM5N0OYkQQxwjanGSbgnArbUAyvvS1QXmpbofTt3vPsj7asILS/c+8557ZyPknT2/Q5z/fpN/f+zu93fi8VeiG3rtFBTTlMFWGyKuOAcUA/YDBwAahWqBTYK8Luyjp2UyKJjBZ9FSTTBXQlr1TvkhArUWYCOQ4uPS3wsm2xoapQjnhVn1N6hbnRMh0jwgaFqWmmakN40U5SUr1MTrhSXBpk3Nz8Ml2swhpgoItp60V5vLJY/uRiTsdkzNwJGzX7XBMbFeZ5paHC5qo6FmaqPc6IuQUvaD+7ge3A/V5rCexs68/skwvlotdaV2L5LUiJWnYDf8QHYwEUpmY1s5USzfJDryu+mxsdzGpgtq+iyoxoLut81cTnZiFapvci/INMfGIAUaZXFssbvun5JTS2QnNabT4Cxji8tFXg7woHgRoRBqkyTuBbCjc5zFXVlM3Xzi6WCw6vSwnf2qEWm/nizNgLCqvV5vnqZfLplb+csFGzzzYzC+VpYKxhzrz+bSwG1jioI2V8eedO2KjZZ5s4CkQML3nPtpllMhDo6Hk8BzximPtMSxtjTq+QRsP4lPGl7TvbxAOYG/vXRH++YzrCOj5PmuNFMk+E5wzzD83J9ueG6ou5Aj82DP0oq5kfpNInrRzBEoW9hgXNcZo/Fbw3V1UUpphEivLTo09IQ0o6cyWZZbEI0J6VmBIp1f4p6TjAc3NHl3ML8OWe4hS2VRbLnnS0jhXKfoFdBqE5YnF7OlomeG5uUvi6YeiLrggqfzYJs9S4rpTxoVlguEGUHRrMX1xSNHr3q+W4v+0Yz8017OifPj5Pmt3Qa04QNwq0GeCGXnd4bq6AbRDW4pbeVxppMwzt+zc0hCaDqJGUqCu11A1imFGgkFqvxAHeNws2NQZh4UguE93Qy7YM8whVbuh1h+fmhkIcNCpE+ZEbegoPmcSJzVE39LrDc3NzmjgABu2gsGBUhZoOka/KmHKNIsw1CE2GWngnHS0TPDf3k5VyHrPu0YAsm/WopvYwSVUS8CwGU/IC/0p5JOgAfx5aC6+bhCk8lBfjqVQkohU82bHewUTn5VQ0nOLLI8fhFXpT2KYK04UeyqZ4A4uNZm23aih6kqeBlYblXCRMJP6Y1BnGp4wv79yaQjkLZsNSAISf5eWyO1Kqd3cXVlChk6In2Y25sQhs9MPYDi1/yKvQm8XmAM6WKSmwR+EVFT4O2ZxJWgwNKbdp+yTnJBz8DQJnRbnleLHUOyw/JfydoIzpauAJPzUvQ3g4vlRe8kvO11nYsEUJ8L6fmp2osNlPY8Fncw8XSota/BDwpc3rRGFvsh9L/NSEDKwfqCqUI6J8F/8M3idhpl8fy5mAymL5QIQHgVqPpXZZymS/egdXktElpAVlWmALrwATXE5tA2vjI1nFXEm6nNuYjK/PLXhB+yUbWCWwnPal+emyz4ZF1UXyrgu50iLj5naSV6E3Wza/6ui/Zju9XpX9wJqqUWzN5Lu1K73G3E7yy3QEwnyFacBErm20inDIVl6zhFcrC9mDSM/T6j7S68ztyrC1OjA7m9tFGC7KUAFb4TO1qcnJYv/hQvks0zUGBAQEBAQEBAQEBAQEBAQEBAQEdKX3PHJUlfwYw7EYbdvkW0JEYQjKjUAu0qVWpRnhIlAvUKtCDTanbOV4dYRj1/XD8oINOjyR4E7LZjzCeOAOoABnq3GuRQvwscBBW/mvJRxMJPnPiWUc8vthui/mRkp1rGUxWWCywreBkX7oXsEZlLfV4q2QxdvHl4jRoux08MTc20o0fGEw99nCbOB+gagXOmlySuEtlB2tCbZ7sdHaPXNLNCuay1SUOQjfA250Lbf3NApst2HLDfXsPFAirW4kTdvckes0L2SxQIT5ZObj7jZ1Cq+qzabqZfLPdBKlbG60XL+JsgKYAYTSKaK3IvCurZSnOl3v2NyCCp1k26wCHnR6bR/mGMIz8To2OzmjzNjcSKmOtULEUGakVt8XggMoRfFi+ZtJcI/mdpwl83OUJ/FhS2dfQGFbKJvHji+WbjcwdmtuwXodl0ywRcy39adKm8IpgSqUEwgngRqBRhVa1ea8CAkRGlUZqEqWWAwSJaztZ0AORxmJMEohT2AEKSyJckgt8Gi8SK651+Oa5ubF9AGBLUCuy0XVKHwosB/hw5Cy/1g9hygRkw3YZpSoNTqXrybgTun4UhgPhvuCHaCwrmokK692w7uqufkxfVwhhju9gITCOwI7bXijukj+7ULOlIjE9A4LpokyTYV7ce/orx1hizmHC+Wy3fefMzc/pisUfp2mWBLlTYSXspp5zY/dik4Z84wOTvRjJvAwcB/pLgQXXh9Ux/e7DkAuMze/XJersjYNiWpVnlfl973hcGBTIqU6SoRHRHgUGJVGqo3xIlnU+cMlc/PKdJlIyodJvgesjdezrTeeHW5M+xB+FvAL4K6UcggL40tlU/tLIL9MZ6iwHecfjfdF+WVlsRjt7e0zqEq0nBnAU8A3HF7dKso9lcXygRUp1f4qbMKZsedEWRCv5+4vnLEAIhovkh3xeiYiLATOObg6rMJ6AMmP6XyF3xrrws6sNn5yZIWccVpzX2V0TIcllT8gRofPAWBZ3GOpmJ9wr7CucinTrydjAY4Vyel4A9No754aoTYzLeBWw/jfVBXJ8t6278A3SsSOF0mxwu9MwhUmWKjRqKW2KZtlaZb3hWBAC8XA587zvQr5FmZj8H1+nZbc2+k4VmafQehgicb0PPClHgJVYBfCm5rkE8miOqTUNrZS68chv5li2FodODDMkKQwRBNExGKcto/mptDzE8VPJRrTZtKf0rbh0iForUCn4Rf5/2l3DYjR6XjXUmhEaEUJY6Xx31CUEHBDx085cOnYwYFAuON1LulPgTVm4c6jOQuTCcl0boXS5XvfuKWGLTK0c/06IDsw1kMCcz0kMNdDAnM9JDDXQwJzPSQw10P+BzoX62au+HAlAAAAAElFTkSuQmCC\"","export default \"data:image/png;base64,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\"","import React from \"react\";\r\nimport \"./UserItem.css\";\r\nimport iconAvatar from \"../../img/icons/ic_avatar.png\"\r\n\r\nconst UserItem = ({avatar,fullname,role,status=\"\",onClick}) => {\r\n return (\r\n
\r\n
\r\n
\r\n \"</\" />\r\n
\r\n
{fullname}
\r\n
\r\n
\r\n
{status.toLowerCase()}
\r\n
{role}
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default UserItem;\r\n","export default \"data:image/png;base64,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\"","import { React, useState, useEffect } from \"react\";\r\nimport \"./ViewUserDialog.css\";\r\nimport iconAvatar from \"../../../img/icons/ic_avatar.png\";\r\nimport FormInput from \"../../Inputs/FormInput/FormInput\";\r\nimport FormButton from \"../../FormButton/FormButton\";\r\nimport AlertDialog from \"../AlertDialog/AlertDialog\";\r\nimport OutlineButton from \"../../OutlineButton/OutlineButton\";\r\nimport { getBanksApi } from \"../../../static/ApiClient/BanksApi\";\r\nimport { useSession } from \"react-session-provider\";\r\nimport {\r\n approveOrRejectApi,\r\n getUserCategoriesApi,\r\n getUserRolesApi,\r\n updateUserApi,\r\n updateUserSignUpStatusApi,\r\n} from \"../../../static/ApiClient/UsersApi\";\r\n\r\nimport {\r\n validateFields,\r\n validateEmail,\r\n validateAddress,\r\n validateSelect,\r\n} from \"../../../static/Validator/validator\";\r\n\r\n// import Tooltip from \"react-simple-tooltip\";\r\n// import { css } from \"styled-components\";\r\n\r\nconst ViewUserDialog = ({\r\n isOpen = false,\r\n onClose,\r\n user,\r\n setUser = () => {},\r\n reloadParentList,\r\n}) => {\r\n const [isOpenAlertDialog, setIsOpenAlertDialog] = useState(false);\r\n\r\n const [alertDialogVariation, setAlertDialogVariation] = useState(\"confirm\");\r\n const [alertDialogType, setAlertDialogType] = useState(\"warn\");\r\n const [alertDialogMessage, setAlertDialogMessage] = useState(\"\");\r\n const [alertDialogPosBtnText, setAlertDialogPosBtnText] = useState(\"\");\r\n const [alertDialogNegBtnText, setAlertDialogNegBtnText] = useState(\"\");\r\n const [alertDialogWithTextField, setAlertDialogWithTextField] =\r\n useState(false);\r\n const [userCategories, setUserCategories] = useState([]);\r\n const [banks, setBanks] = useState([]);\r\n const [userRoles, setUserRoles] = useState([]);\r\n const [userRequestDeclineTextLabel, setDeclineTextLabel] = useState(\"\");\r\n const [userRequestDeclineTextPh, setDeclineTextPh] = useState(\"\");\r\n const [declineReason, setDeclineReason] = useState(null);\r\n\r\n const [userFormData, setUserFormData] = useState({});\r\n const [isUpdatingUserForm, setIsUpdatingUserForm] = useState(false);\r\n const [isUpdatingUserStatus, setIsUpdatingUserStatus] = useState(false);\r\n const [isUpdatingUserSignUpStatus, setIsUpdatingUserSignUpStatus] =\r\n useState(false);\r\n const [nextAction, setNextAction] = useState(\"\");\r\n\r\n const { store = {}, setKey } = useSession();\r\n const { sessionUser, sessionUserToken } = store;\r\n\r\n //useEffects\r\n useEffect(() => {\r\n if (userFormData.BANKID && userFormData.BANKID !== -1) {\r\n getUserCategories();\r\n }\r\n }, [userFormData.BANKID]);\r\n\r\n useEffect(() => {\r\n getBanks();\r\n getRoles();\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (user) {\r\n let tm = {\r\n FIRSTNAME: user.FIRSTNAME,\r\n MIDDLENAME: user.MIDDLENAME,\r\n LASTNAME: user.LASTNAME,\r\n EMAIL: user.EMAIL,\r\n ADDRESS: user.ADDRESS,\r\n ACCOUNTNUMBER: user.ACCOUNTNUMBER,\r\n BANKID: user.BANKID,\r\n USERCATEGORY: user.USERCATEGORY,\r\n ROLEID: user.ROLEID,\r\n PHONENUMBER: user.PHONENUMBER,\r\n };\r\n\r\n setUserFormData(tm);\r\n setDeclineReason(null);\r\n }\r\n }, [user]);\r\n\r\n //api calls\r\n const getUserCategories = async () => {\r\n const res = await getUserCategoriesApi(userFormData.BANKID);\r\n\r\n var temp = [];\r\n if (res.message === \"success\") {\r\n res.data.forEach((item, index) => {\r\n temp.push({ display: item.CATEGORYNAME, value: item.USERCATEGORYID });\r\n });\r\n\r\n setUserCategories(temp);\r\n }\r\n };\r\n\r\n const getBanks = async () => {\r\n const res = await getBanksApi();\r\n console.log(res);\r\n\r\n if (res.message === \"success\") {\r\n var temp = [];\r\n\r\n res.data.forEach((bank, index) => {\r\n temp.push({ display: bank.BANKNAME, value: bank.BANKID });\r\n });\r\n\r\n setBanks(temp);\r\n }\r\n };\r\n\r\n const getRoles = async () => {\r\n const res = await getUserRolesApi({ token: sessionUserToken });\r\n console.log(res);\r\n\r\n if (res.message === \"success\") {\r\n var temp = [];\r\n\r\n res.data.forEach((role, index) => {\r\n temp.push({ display: role.ROLENAME, value: role.ROLEID });\r\n });\r\n\r\n setUserRoles(temp);\r\n }\r\n };\r\n\r\n const updateUserActiveStatus = async (dis) => {\r\n setNextAction(\"\");\r\n setIsUpdatingUserStatus(true);\r\n\r\n const res = await updateUserApi({\r\n EMAIL: user.EMAIL,\r\n DISABLED: dis,\r\n ID: user.ID,\r\n });\r\n\r\n switch (res.message) {\r\n case \"success\":\r\n user.DISABLED = dis;\r\n setUser(user);\r\n reloadParentList();\r\n showAlertDialog({\r\n msg: `User status updated successfully`,\r\n type: \"success\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n break;\r\n case \"error\":\r\n showAlertDialog({\r\n msg: `Failed to change user status`,\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n break;\r\n\r\n default:\r\n showAlertDialog({\r\n msg: res.message,\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n }\r\n\r\n setIsUpdatingUserStatus(false);\r\n };\r\n\r\n const updateUserSignUpStatus = async (sts) => {\r\n setNextAction(\"\");\r\n setIsUpdatingUserSignUpStatus(true);\r\n\r\n const res = await updateUserSignUpStatusApi({\r\n token: sessionUserToken,\r\n data: {\r\n EMAIL: user.EMAIL,\r\n ID: user.ID,\r\n SIGNUPSTATUS: sts,\r\n FIRSTNAME: user.FIRSTNAME,\r\n LASTNAME: user.LASTNAME,\r\n SIGNUPREJECTREASON: declineReason,\r\n },\r\n });\r\n\r\n switch (res.message) {\r\n case \"success\":\r\n showAlertDialog({\r\n msg: `User request updated successfully`,\r\n type: \"success\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n user.SIGNUPSTATUS = sts;\r\n setTimeout(() => {\r\n setUser(user);\r\n }, 2000);\r\n break;\r\n case \"error\":\r\n showAlertDialog({\r\n msg: `Failed to update request`,\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n break;\r\n default:\r\n showAlertDialog({\r\n msg: res.message,\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n }\r\n\r\n setIsUpdatingUserSignUpStatus(false);\r\n };\r\n\r\n const updateUserForm = async () => {\r\n setIsUpdatingUserForm(true);\r\n var tmp = userFormData;\r\n tmp.ID = user.ID;\r\n const res = await updateUserApi(tmp);\r\n\r\n switch (res.message) {\r\n case \"success\":\r\n setUser(userFormData);\r\n reloadParentList();\r\n showAlertDialog({\r\n msg: `User updated successfully`,\r\n type: \"success\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n break;\r\n case \"error\":\r\n showAlertDialog({\r\n msg: `Failed to update user`,\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n break;\r\n default:\r\n showAlertDialog({\r\n msg: res.message,\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n }\r\n\r\n setIsUpdatingUserForm(false);\r\n };\r\n\r\n //other methods\r\n const handleChangeuserFormData = (e) => {\r\n e.persist();\r\n\r\n setUserFormData({\r\n ...userFormData,\r\n [e.target.name]:\r\n e.target.type === \"checkbox\" ? e.target.checked : e.target.value,\r\n });\r\n };\r\n\r\n //show dialog\r\n const showAlertDialog = ({\r\n msg = \"\",\r\n type = \"\",\r\n posText = \"\",\r\n negText = \"\",\r\n variation = \"\",\r\n }) => {\r\n setAlertDialogMessage(msg);\r\n setAlertDialogNegBtnText(negText);\r\n setAlertDialogPosBtnText(posText);\r\n setAlertDialogType(type);\r\n setAlertDialogVariation(variation);\r\n setIsOpenAlertDialog(true);\r\n };\r\n\r\n //validator\r\n const validateUpdateUser = () => {\r\n const mandatoryFields = [\r\n userFormData.FIRSTNAME ?? \"\",\r\n userFormData.MIDDLENAME ?? \"\",\r\n userFormData.LASTNAME ?? \"\",\r\n userFormData.EMAIL ?? \"\",\r\n userFormData.ADDRESS ?? \"\",\r\n userFormData.BANKID ?? \"\",\r\n userFormData.USERCATEGORY ?? \"\",\r\n userFormData.ROLEID ?? \"\",\r\n ];\r\n\r\n if (validateFields(mandatoryFields)) {\r\n if (validateEmail(userFormData.EMAIL)) {\r\n if (validateAddress(userFormData.ADDRESS)) {\r\n if (validateSelect(userFormData.BANKID)) {\r\n if (validateSelect(userFormData.USERCATEGORY)) {\r\n if (\r\n (parseInt(userFormData.USERCATEGORY) === 2 &&\r\n validateFields([userFormData.ACCOUNTNUMBER ?? \"\"])) ||\r\n parseInt(userFormData.USERCATEGORY) !== 2\r\n ) {\r\n updateUserForm();\r\n } else {\r\n showAlertDialog({\r\n msg: \"Please provide a valid account number\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n }\r\n } else\r\n showAlertDialog({\r\n msg: 'Pease choose one from \"Who are you?\", we need to know your role with the bank ',\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n } else\r\n showAlertDialog({\r\n msg: \"Please select your bank\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n } else\r\n showAlertDialog({\r\n msg: \"Please provide a valid address including your country.Example, Kinondoni Dar es salaam Tanzania\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n } else\r\n showAlertDialog({\r\n msg: \"Invalid email provided\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n } else\r\n showAlertDialog({\r\n msg: \"Provide all mandatory fields (With *)\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n };\r\n\r\n //view builders\r\n\r\n const BuildUserStats = () => {\r\n return (\r\n <>\r\n

User Stats

\r\n
\r\n
\r\n
Total Queries
\r\n
--
\r\n
\r\n
\r\n
Complaints
\r\n
--
\r\n
\r\n
\r\n
Comments
\r\n
--
\r\n
\r\n
\r\n
Suggestions
\r\n
--
\r\n
\r\n
\r\n \r\n );\r\n };\r\n\r\n const BuildActionButtons = () => {\r\n return (\r\n <>\r\n

Actions

\r\n
\r\n {(() => {\r\n if (user.SIGNUPSTATUS === \"approved\") {\r\n if (parseInt(user.DISABLED) === 1) {\r\n return (\r\n {\r\n updateUserActiveStatus(0);\r\n }}\r\n isProcessing={isUpdatingUserStatus}\r\n />\r\n );\r\n } else {\r\n return (\r\n {\r\n setNextAction(\"deactivateUser\");\r\n setAlertDialogMessage(\r\n \"Are you sure you want to deactivate this user?\"\r\n );\r\n setAlertDialogNegBtnText(\"No\");\r\n setAlertDialogPosBtnText(\"Yes, I am\");\r\n setAlertDialogType(\"warn\");\r\n setAlertDialogVariation(\"confirm\");\r\n setIsOpenAlertDialog(true);\r\n }}\r\n />\r\n );\r\n }\r\n }\r\n })()}\r\n\r\n {(() => {\r\n if (user.SIGNUPSTATUS === \"pending\") {\r\n return (\r\n <>\r\n {\r\n setNextAction(\"acceptUserRequest\");\r\n setAlertDialogMessage(\r\n \"Are you sure you want to accept this user's registration request?\"\r\n );\r\n setAlertDialogNegBtnText(\"No\");\r\n setAlertDialogPosBtnText(\"Yes, I am\");\r\n setAlertDialogType(\"warn\");\r\n setAlertDialogVariation(\"confirm\");\r\n setIsOpenAlertDialog(true);\r\n }}\r\n />\r\n {\r\n setNextAction(\"rejectUserRequest\");\r\n setAlertDialogMessage(\r\n \"Are you sure you want to decline this user's registration request?\"\r\n );\r\n setAlertDialogNegBtnText(\"No\");\r\n setAlertDialogPosBtnText(\"Yes, I am\");\r\n setAlertDialogType(\"warn\");\r\n setAlertDialogVariation(\"confirm\");\r\n setAlertDialogWithTextField(true);\r\n setDeclineTextLabel(\"Decline Reason\");\r\n setDeclineTextPh(\r\n \"Enter decline reason (max 500 characters)\"\r\n );\r\n setIsOpenAlertDialog(true);\r\n }}\r\n />\r\n \r\n );\r\n }else if(user.SIGNUPSTATUS === \"rejected\"){\r\n return(\r\n
User request rejected
\r\n )\r\n }\r\n })()}\r\n
\r\n \r\n );\r\n };\r\n\r\n const BuildUserDetailsForm = () => {\r\n return (\r\n <>\r\n

User Details

\r\n
\r\n
\r\n \"</\" />\r\n
\r\n
\r\n\r\n
\r\n
\r\n {\r\n handleChangeuserFormData(e);\r\n }}\r\n />\r\n
\r\n
\r\n {\r\n handleChangeuserFormData(e);\r\n }}\r\n />\r\n
\r\n
\r\n {\r\n handleChangeuserFormData(e);\r\n }}\r\n />\r\n
\r\n
\r\n {\r\n handleChangeuserFormData(e);\r\n }}\r\n />\r\n
\r\n
\r\n {\r\n handleChangeuserFormData(e);\r\n }}\r\n />\r\n
\r\n
\r\n {\r\n handleChangeuserFormData(e);\r\n }}\r\n />\r\n
\r\n
\r\n {\r\n handleChangeuserFormData(e);\r\n }}\r\n />\r\n
\r\n
\r\n {\r\n handleChangeuserFormData(e);\r\n }}\r\n />\r\n
\r\n
\r\n {\r\n handleChangeuserFormData(e);\r\n }}\r\n />\r\n
\r\n
\r\n {\r\n handleChangeuserFormData(e);\r\n }}\r\n />\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n );\r\n };\r\n\r\n if (isOpen)\r\n return (\r\n <>\r\n
\r\n
\r\n
\r\n
{BuildUserDetailsForm()}
\r\n
\r\n {BuildUserStats()}\r\n {BuildActionButtons()}\r\n
\r\n \r\n
\r\n
\r\n {\r\n if (nextAction === \"deactivateUser\") {\r\n updateUserActiveStatus(1);\r\n setIsOpenAlertDialog(false);\r\n } else if (nextAction === \"rejectUserRequest\") {\r\n if (validateFields([declineReason ?? \"\"])) {\r\n updateUserSignUpStatus(\"rejected\");\r\n setIsOpenAlertDialog(false);\r\n setAlertDialogWithTextField(false);\r\n } else alert(\"Please provide the reason for declining\");\r\n } else if (nextAction === \"acceptUserRequest\") {\r\n updateUserSignUpStatus(\"approved\");\r\n setIsOpenAlertDialog(false);\r\n }\r\n }}\r\n onClose={() => {\r\n setIsOpenAlertDialog(false);\r\n }}\r\n positiveButtonText={alertDialogPosBtnText}\r\n negativeButtonText={alertDialogNegBtnText}\r\n onChangeTextField={(e) => {\r\n setDeclineReason(e.target.value);\r\n }}\r\n textFieldLabel={userRequestDeclineTextLabel}\r\n textFieldPlaceholder={userRequestDeclineTextPh}\r\n textFieldValue={declineReason}\r\n withTextField={alertDialogWithTextField}\r\n />\r\n \r\n );\r\n else return <>;\r\n};\r\n\r\nexport default ViewUserDialog;\r\n","import { React, useState, useEffect } from \"react\";\r\n\r\nimport Aside from \"../../components/Aside/Aside\";\r\nimport NotificationDialog from \"../../components/dialogs/NotificationDialog/NotificationDialog\";\r\nimport SideNav from \"../../components/SideNav/SideNav\";\r\nimport UserItem from \"../../components/UserItem/UserItem\";\r\nimport FormInput from \"../../components/Inputs/FormInput/FormInput\";\r\nimport FormButton from \"../../components/FormButton/FormButton\";\r\nimport iconAvatar from \"../../img/icons/ic_avatar.png\";\r\nimport iconAdd from \"../../img/icons/ic_add_blue.png\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport \"./Users.css\";\r\nimport Loader from \"../../components/Loader/Loader\";\r\nimport ViewUserDialog from \"../../components/dialogs/ViewUserDialog/ViewUserDialog\";\r\nimport AlertDialog from \"../../components/dialogs/AlertDialog/AlertDialog\";\r\nimport OutlineButton from \"../../components/OutlineButton/OutlineButton\";\r\nimport { useSession } from \"react-session-provider\";\r\nimport { getBanksApi } from \"../../static/ApiClient/BanksApi\";\r\nimport {\r\n addUserApi,\r\n getUserCategoriesApi,\r\n getUserRolesApi,\r\n getUsersApi,\r\n signOutApi,\r\n} from \"../../static/ApiClient/UsersApi\";\r\n\r\nimport {\r\n validateFields,\r\n validateEmail,\r\n validateAddress,\r\n validateSelect,\r\n validatePassword,\r\n} from \"../../static/Validator/validator\";\r\n\r\nconst Users = () => {\r\n const [isOPenNotification, setIsOpenNotification] = useState(false);\r\n const [activeTab, setActiveTab] = useState(\"all\");\r\n const [isOpenUserViewDialog, setIsOpenUserViewDialog] = useState(false);\r\n const [userCategories, setUserCategories] = useState([]);\r\n const [banks, setBanks] = useState([]);\r\n const [userRoles, setUserRoles] = useState([]);\r\n\r\n const [newUserFormData, setNewUserFormData] = useState({\r\n FIRSTNAME: \"\",\r\n MIDDLENAME: \"\",\r\n LASTNAME: \"\",\r\n EMAIL: \"\",\r\n ADDRESS: \"\",\r\n ACCOUNTNUMBER: \"\",\r\n BANKID: \"\",\r\n USERCATEGORY: \"\",\r\n ROLEID: \"\",\r\n PHONENUMBER: \"\",\r\n });\r\n\r\n const [users, setUsers] = useState([]);\r\n const [selectedUser, setSelectedUser] = useState(null);\r\n const [isGettingUsers, setIsGettingUsers] = useState(false);\r\n const [isErrorGetUsers, setIsErrorGetUsers] = useState(false);\r\n const [isAddingUser, setIsAddingUser] = useState(false);\r\n\r\n const [isOpenAlertDialog, setIsOpenAlertDialog] = useState(false);\r\n const [alertDialogVariation, setAlertDialogVariation] = useState(\"confirm\");\r\n const [alertDialogType, setAlertDialogType] = useState(\"warn\");\r\n const [alertDialogMessage, setAlertDialogMessage] = useState(\"\");\r\n const [alertDialogPosBtnText, setAlertDialogPosBtnText] = useState(\"\");\r\n const [alertDialogNegBtnText, setAlertDialogNegBtnText] = useState(\"\");\r\n const [isSignUpSuccessful, setIsSignUpSuccessful] = useState(false);\r\n\r\n const { store = {}, setKey, deleteKey } = useSession();\r\n const { sessionUser, sessionUserToken } = store;\r\n const history = useHistory();\r\n\r\n const [searchQuery, setSearchQuery] = useState(\"\");\r\n const [filteredListUsers, setFilteredListUsers] = useState([]);\r\n\r\n //useEffects\r\n //page security\r\n useEffect(() => {\r\n if (sessionUser) {\r\n if (sessionUser.ROLEID === 1 || sessionUser.ROLEID === 2) {\r\n console.log(\"session ok\");\r\n } else {\r\n history.push(\"/error\");\r\n }\r\n } else {\r\n history.push(\"/\");\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (newUserFormData.BANKID && newUserFormData.BANKID !== -1) {\r\n getUserCategories();\r\n }\r\n }, [newUserFormData.BANKID]);\r\n\r\n useEffect(() => {\r\n getBanks();\r\n getUsers();\r\n getRoles();\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (users.length > 0) {\r\n searchUser();\r\n }\r\n }, [searchQuery]);\r\n\r\n //api calls\r\n const getUserCategories = async () => {\r\n const res = await getUserCategoriesApi(newUserFormData.BANKID);\r\n\r\n var temp = [];\r\n if (res.message === \"success\") {\r\n res.data.forEach((item, index) => {\r\n temp.push({ display: item.CATEGORYNAME, value: item.USERCATEGORYID });\r\n });\r\n\r\n setUserCategories(temp);\r\n }\r\n };\r\n\r\n const getBanks = async () => {\r\n const res = await getBanksApi();\r\n console.log(res);\r\n\r\n if (res.message === \"success\") {\r\n var temp = [];\r\n\r\n res.data.forEach((bank, index) => {\r\n temp.push({ display: bank.BANKNAME, value: bank.BANKID });\r\n });\r\n\r\n setBanks(temp);\r\n }\r\n };\r\n\r\n const addUser = async () => {\r\n setIsAddingUser(true);\r\n var tmp = newUserFormData;\r\n tmp.SIGNUPSTATUS = \"approved\";\r\n const res = await addUserApi({ token: sessionUserToken, data: tmp });\r\n\r\n switch (res.message) {\r\n case \"success\":\r\n showAlertDialog({\r\n msg: \"User added successfully\",\r\n type: \"success\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n\r\n setNewUserFormData({\r\n FIRSTNAME: \"\",\r\n MIDDLENAME: \"\",\r\n LASTNAME: \"\",\r\n EMAIL: \"\",\r\n ADDRESS: \"\",\r\n ACCOUNTNUMBER: \"\",\r\n BANKID: \"\",\r\n USERCATEGORY: \"\",\r\n ROLEID: \"\",\r\n PHONENUMBER: \"\",\r\n });\r\n\r\n getUsers();\r\n\r\n break;\r\n case \"email exists\":\r\n showAlertDialog({\r\n msg: `Error, a user with email address \"${newUserFormData.EMAIL}\" already exists in the portal`,\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n break;\r\n case \"error\":\r\n showAlertDialog({\r\n msg: `An error occurred, try again later`,\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n break;\r\n default:\r\n showAlertDialog({\r\n msg: res.message,\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n }\r\n\r\n setIsAddingUser(false);\r\n };\r\n\r\n const getUsers = async () => {\r\n setIsErrorGetUsers(false);\r\n setIsGettingUsers(true);\r\n\r\n const res = await getUsersApi({ token: sessionUserToken });\r\n\r\n switch (res.message) {\r\n case \"success\":\r\n setUsers(res.data);\r\n break;\r\n case \"session expired\":\r\n setIsErrorGetUsers(true);\r\n const apiRes = await signOutApi(sessionUserToken);\r\n if (apiRes.message === \"success\") {\r\n console.log(\"signout successful\");\r\n } else {\r\n console.log(apiRes.message);\r\n }\r\n //clear session\r\n deleteKey(\"sessionUser\");\r\n deleteKey(\"sessionUserToken\");\r\n history.push(\"/\");\r\n break;\r\n case \"error\":\r\n setIsErrorGetUsers(true);\r\n break;\r\n default:\r\n setIsErrorGetUsers(true);\r\n }\r\n\r\n setIsGettingUsers(false);\r\n };\r\n\r\n const getRoles = async () => {\r\n const res = await getUserRolesApi({ token: sessionUserToken });\r\n console.log(res);\r\n\r\n if (res.message === \"success\") {\r\n var temp = [];\r\n\r\n res.data.forEach((role, index) => {\r\n temp.push({ display: role.ROLENAME, value: role.ROLEID });\r\n });\r\n\r\n setUserRoles(temp);\r\n }\r\n };\r\n\r\n //validators\r\n const validateAddNewUser = () => {\r\n const mandatoryFields = [\r\n newUserFormData.FIRSTNAME ?? \"\",\r\n newUserFormData.MIDDLENAME ?? \"\",\r\n newUserFormData.LASTNAME ?? \"\",\r\n newUserFormData.EMAIL ?? \"\",\r\n newUserFormData.ADDRESS ?? \"\",\r\n newUserFormData.BANKID ?? \"\",\r\n newUserFormData.USERCATEGORY ?? \"\",\r\n newUserFormData.ROLEID ?? \"\",\r\n ];\r\n\r\n if (validateFields(mandatoryFields)) {\r\n if (validateEmail(newUserFormData.EMAIL)) {\r\n if (validateAddress(newUserFormData.ADDRESS)) {\r\n if (validateSelect(newUserFormData.BANKID)) {\r\n if (validateSelect(newUserFormData.USERCATEGORY)) {\r\n if (\r\n (parseInt(newUserFormData.USERCATEGORY) === 2 &&\r\n validateFields([newUserFormData.ACCOUNTNUMBER ?? \"\"])) ||\r\n parseInt(newUserFormData.USERCATEGORY) !== 2\r\n ) {\r\n addUser();\r\n } else {\r\n showAlertDialog({\r\n msg: \"Please provide a valid account number\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n }\r\n } else\r\n showAlertDialog({\r\n msg: 'Pease choose one from \"Who are you?\", we need to know your role with the bank ',\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n } else\r\n showAlertDialog({\r\n msg: \"Please select your bank\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n } else\r\n showAlertDialog({\r\n msg: \"Please provide a valid address including your country.Example, Kinondoni Dar es salaam Tanzania\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n } else\r\n showAlertDialog({\r\n msg: \"Invalid email provided\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n } else\r\n showAlertDialog({\r\n msg: \"Provide all mandatory fields (With *)\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n };\r\n\r\n //other methods\r\n const handleChangeNewUserFormData = (e) => {\r\n e.persist();\r\n\r\n setNewUserFormData({\r\n ...newUserFormData,\r\n [e.target.name]:\r\n e.target.type === \"checkbox\" ? e.target.checked : e.target.value,\r\n });\r\n };\r\n\r\n const searchUser = () => {\r\n if (searchQuery.trim() !== \"\") {\r\n var temp = users.filter(\r\n (user) =>\r\n user.SIGNUPSTATUS === \"approved\" &&\r\n ((user.FIRSTNAME ?? \"\")\r\n .toLowerCase()\r\n .includes(searchQuery.trim().toLowerCase()) ||\r\n (user.MIDDLENAME ?? \"\")\r\n .toLowerCase()\r\n .includes(searchQuery.trim().toLowerCase()) ||\r\n (user.LASTNAME ?? \"\")\r\n .toLowerCase()\r\n .includes(searchQuery.trim().toLowerCase()) ||\r\n (user.PHONENUMBER ?? \"\")\r\n .toLowerCase()\r\n .includes(searchQuery.trim().toLowerCase()) ||\r\n (user.EMAIL ?? \"\")\r\n .toLowerCase()\r\n .includes(searchQuery.trim().toLowerCase()) ||\r\n (user.ROLENAME ?? \"\")\r\n .toLowerCase()\r\n .includes(searchQuery.trim().toLowerCase()) ||\r\n (user.ACCOUNTNUMBER ?? \"\")\r\n .toLowerCase()\r\n .includes(searchQuery.trim().toLowerCase()))\r\n );\r\n\r\n setFilteredListUsers(temp);\r\n } else {\r\n setFilteredListUsers([]);\r\n }\r\n };\r\n\r\n //show dialog\r\n const showAlertDialog = ({\r\n msg = \"\",\r\n type = \"\",\r\n posText = \"\",\r\n negText = \"\",\r\n variation = \"\",\r\n }) => {\r\n setAlertDialogMessage(msg);\r\n setAlertDialogNegBtnText(negText);\r\n setAlertDialogPosBtnText(posText);\r\n setAlertDialogType(type);\r\n setAlertDialogVariation(variation);\r\n setIsOpenAlertDialog(true);\r\n };\r\n\r\n //view builders\r\n\r\n const BuildTabViews = () => {\r\n switch (activeTab) {\r\n case \"all\":\r\n return BuildTabViewAllUsers();\r\n case \"requests\":\r\n return BuildTabViewRequests();\r\n case \"add\":\r\n return BuildTabViewAddUser();\r\n default:\r\n return <>;\r\n }\r\n };\r\n\r\n const BuildTabViewAllUsers = () => {\r\n if (!isGettingUsers) {\r\n if (!isErrorGetUsers) {\r\n if (searchQuery.trim().length === 0) {\r\n if (\r\n users.filter((user) => user.SIGNUPSTATUS === \"approved\").length > 0\r\n ) {\r\n return (\r\n
\r\n {users\r\n .filter((user) => user.SIGNUPSTATUS === \"approved\")\r\n .map((user, index) => (\r\n {\r\n setSelectedUser(user);\r\n setIsOpenUserViewDialog(true);\r\n }}\r\n />\r\n ))}\r\n
\r\n );\r\n } else {\r\n return (\r\n
No accepted users
\r\n );\r\n }\r\n } else {\r\n //search paramenters exist\r\n if (filteredListUsers.length > 0) {\r\n return (\r\n
\r\n {filteredListUsers.map((user, index) => (\r\n {\r\n setSelectedUser(user);\r\n setIsOpenUserViewDialog(true);\r\n }}\r\n />\r\n ))}\r\n
\r\n );\r\n } else {\r\n return (\r\n
No user found
\r\n );\r\n }\r\n }\r\n } else {\r\n return (\r\n
\r\n
\r\n
Failed to load Users
\r\n {\r\n getUsers();\r\n }}\r\n />\r\n
\r\n
\r\n );\r\n }\r\n } else {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n };\r\n\r\n const BuildTabViewRequests = () => {\r\n if (!isGettingUsers) {\r\n if (!isErrorGetUsers) {\r\n if (\r\n users.filter(\r\n (user) =>\r\n user.SIGNUPSTATUS !== \"approved\" &&\r\n user.SIGNUPSTATUS !== \"rejected\"\r\n ).length > 0\r\n ) {\r\n return (\r\n
\r\n {users\r\n .filter(\r\n (user) =>\r\n user.SIGNUPSTATUS !== \"approved\" &&\r\n user.SIGNUPSTATUS !== \"rejected\"\r\n )\r\n .map((user, index) => (\r\n {\r\n setSelectedUser(user);\r\n setIsOpenUserViewDialog(true);\r\n }}\r\n />\r\n ))}\r\n
\r\n );\r\n } else {\r\n return (\r\n
No user requests
\r\n );\r\n }\r\n } else {\r\n return (\r\n
\r\n
\r\n
Failed to load Users
\r\n {\r\n getUsers();\r\n }}\r\n />\r\n
\r\n
\r\n );\r\n }\r\n } else {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n };\r\n\r\n const BuildTabViewAddUser = () => {\r\n return (\r\n
\r\n

Add User

\r\n
\r\n
\r\n {\r\n handleChangeNewUserFormData(e);\r\n }}\r\n value={newUserFormData.FIRSTNAME}\r\n />\r\n
\r\n
\r\n {\r\n handleChangeNewUserFormData(e);\r\n }}\r\n value={newUserFormData.MIDDLENAME}\r\n />\r\n
\r\n
\r\n {\r\n handleChangeNewUserFormData(e);\r\n }}\r\n value={newUserFormData.LASTNAME}\r\n />\r\n
\r\n
\r\n {\r\n handleChangeNewUserFormData(e);\r\n }}\r\n value={newUserFormData.EMAIL}\r\n />\r\n
\r\n
\r\n {\r\n handleChangeNewUserFormData(e);\r\n }}\r\n value={newUserFormData.BANKID}\r\n />\r\n
\r\n
\r\n {\r\n handleChangeNewUserFormData(e);\r\n }}\r\n value={newUserFormData.USERCATEGORY}\r\n />\r\n
\r\n
\r\n {\r\n handleChangeNewUserFormData(e);\r\n }}\r\n value={newUserFormData.ROLEID}\r\n />\r\n
\r\n\r\n
\r\n {\r\n handleChangeNewUserFormData(e);\r\n }}\r\n value={newUserFormData.ACCOUNTNUMBER}\r\n />\r\n
\r\n\r\n
\r\n {\r\n handleChangeNewUserFormData(e);\r\n }}\r\n />\r\n
\r\n
\r\n {\r\n handleChangeNewUserFormData(e);\r\n }}\r\n />\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n };\r\n\r\n const BuildSearchView = () => {\r\n if (activeTab === \"all\") {\r\n return (\r\n
\r\n
\r\n {\r\n setSearchQuery(e.target.value);\r\n }}\r\n />\r\n
\r\n
\r\n );\r\n } else return <>;\r\n };\r\n\r\n const BuildTabs = () => {\r\n return (\r\n
\r\n {\r\n setActiveTab(\"all\");\r\n }}\r\n >\r\n
All Users
\r\n {(() => {\r\n if (\r\n users.filter((user) => user.SIGNUPSTATUS === \"approved\").length >\r\n 0\r\n )\r\n return (\r\n
\r\n {\r\n users.filter((user) => user.SIGNUPSTATUS === \"approved\")\r\n .length\r\n }\r\n
\r\n );\r\n })()}\r\n
\r\n {\r\n setActiveTab(\"requests\");\r\n }}\r\n >\r\n
User Requests
\r\n {(() => {\r\n if (\r\n users.filter(\r\n (user) =>\r\n user.SIGNUPSTATUS !== \"approved\" &&\r\n user.SIGNUPSTATUS !== \"rejected\"\r\n ).length > 0\r\n )\r\n return (\r\n
\r\n {\r\n users.filter(\r\n (user) =>\r\n user.SIGNUPSTATUS !== \"approved\" &&\r\n user.SIGNUPSTATUS !== \"rejected\"\r\n ).length\r\n }\r\n
\r\n );\r\n })()}\r\n \r\n {\r\n setActiveTab(\"add\");\r\n }}\r\n >\r\n
\r\n
\r\n \"+\"\r\n
\r\n New User\r\n
\r\n \r\n \r\n );\r\n };\r\n\r\n return (\r\n
\r\n \r\n
\r\n

Users

\r\n
\r\n {BuildTabs()}\r\n {BuildSearchView()}\r\n {BuildTabViews()}\r\n
\r\n
\r\n {\r\n setIsOpenNotification(true);\r\n }}\r\n />\r\n\r\n {\r\n setIsOpenNotification(false);\r\n }}\r\n isOpen={isOPenNotification}\r\n />\r\n\r\n {\r\n setIsOpenUserViewDialog(false);\r\n }}\r\n reloadParentList={() => {\r\n getUsers();\r\n }}\r\n setUsers={setUsers}\r\n />\r\n\r\n {\r\n if (isSignUpSuccessful) {\r\n setActiveTab(\"signin\");\r\n setIsSignUpSuccessful(false);\r\n window.location.reload();\r\n }\r\n setIsOpenAlertDialog(false);\r\n }}\r\n positiveButtonText={alertDialogPosBtnText}\r\n negativeButtonText={alertDialogNegBtnText}\r\n />\r\n
\r\n );\r\n};\r\n\r\nexport default Users;\r\n","import { React } from \"react\";\r\nimport { useHistory } from \"react-router-dom\";\r\n\r\nimport \"./ErrorPage.css\";\r\n\r\nconst ErrorPage = () => {\r\n const history = useHistory();\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
Oops!
\r\n
\r\n The page you are looking for is not found.\r\n
\r\n
\r\n {\r\n history.goBack();\r\n }}\r\n >\r\n GO BACK\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default ErrorPage;\r\n","export default \"data:image/png;base64,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\"","import React from \"react\";\r\nimport moment from \"moment\";\r\nimport iconPdf from \"../../img/icons/ic_pdf_blue.png\";\r\nimport \"./PublicationItem.css\";\r\n\r\nconst PublicationItem = ({title,date,onClick}) => {\r\n return (\r\n
\r\n
\r\n
\r\n \"PDF\"\r\n
\r\n
\r\n \r\n
\r\n
{title}
\r\n
{moment(date).format(\"D-MMM-YYYY hh:mma\")}
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default PublicationItem;\r\n","import React from \"react\";\r\nimport \"./ActionIcon.css\";\r\n\r\nconst ActionIcon = ({ toolTipMessage, icon, onClick }) => {\r\n return (\r\n
\r\n \"i\"\r\n
\r\n );\r\n};\r\n\r\nexport default ActionIcon;\r\n","import React from \"react\";\r\nimport \"./QueryAttachment.css\";\r\n\r\nimport iconPdf from \"../../img/icons/ic_pdf_blue.png\";\r\nimport { BACKEND_URL } from \"../../Config\";\r\n\r\nconst QueryAttachment = ({ title, filePath, onRemove, removable = false }) => {\r\n const openDocument = () => {\r\n window.open(`${BACKEND_URL}${filePath}`);\r\n };\r\n\r\n return (\r\n
\r\n
\r\n \"PDF\"\r\n
\r\n
\r\n {title}\r\n
\r\n {(() => {\r\n if (removable) {\r\n return (\r\n
\r\n X\r\n
\r\n );\r\n } else return <>;\r\n })()}\r\n
\r\n );\r\n};\r\n\r\nexport default QueryAttachment;\r\n","import React from \"react\";\r\nimport Tooltip from \"react-simple-tooltip\";\r\n\r\nimport iconReply from \"../../img/icons/ic_reply_black.png\";\r\nimport iconDelete from \"../../img/icons/ic_delete_black.png\";\r\nimport iconAvatar from \"../../img/icons/ic_avatar.png\";\r\nimport iconPdf from \"../../img/icons/ic_pdf_blue.png\";\r\nimport iconForward from \"../../img/icons/ic_send_to_black.png\";\r\nimport iconVerified from \"../../img/icons/ic_verified.png\";\r\nimport moment from \"moment\";\r\nimport \"./QueryItem.css\";\r\nimport QueryAttachment from \"../QueryAttachment/QueryAttachment\";\r\nimport { useSession } from \"react-session-provider\";\r\n\r\nconst QueryItem = ({ query, assignUser, setQuotedQuery, deleteQuery }) => {\r\n const { store = {}, setKey } = useSession();\r\n const { sessionUser, sessionUserToken } = store;\r\n const BuildAvatar = () => {\r\n return (\r\n
\r\n \"</\" />\r\n
\r\n );\r\n };\r\n\r\n const BuildQuery = () => {\r\n return (\r\n
\r\n {BuildQuotedQuery()}\r\n
{query.QUERYCONTENT}
\r\n
\r\n {moment(query.DATEPOSTED).format(\"D-MMM-YYYY hh:mma\")}\r\n
\r\n {BuildQueryAttachments()}\r\n
\r\n );\r\n };\r\n\r\n const BuildIcons = () => {\r\n return (\r\n
\r\n {(sessionUser.ROLEID === 1 || sessionUser.ROLEID === 2) && (\r\n \r\n {\r\n setQuotedQuery(query);\r\n }}\r\n >\r\n \"reply\"\r\n
\r\n \r\n )}\r\n {(query.QUERIEDBY === sessionUser.ID ||\r\n sessionUser.ROLEID === 1 ||\r\n sessionUser.ROLEID === 2) && (\r\n \r\n {\r\n deleteQuery(query);\r\n }}\r\n >\r\n \"delete\"\r\n \r\n \r\n )}\r\n\r\n {(sessionUser.ROLEID === 1 || sessionUser.ROLEID === 2) && (\r\n \r\n {\r\n assignUser(query);\r\n }}\r\n >\r\n \"assign\"\r\n \r\n \r\n )}\r\n \r\n );\r\n };\r\n\r\n const BuildQueryAttachments = () => {\r\n if (query.ATTACHMENTS && query.ATTACHMENTS.length > 0) {\r\n return (\r\n
\r\n {query.ATTACHMENTS.map((attachment) => (\r\n \r\n ))}\r\n
\r\n );\r\n } else return <>;\r\n };\r\n\r\n const BuildVerifiedIcon = () => {\r\n if (query.ROLEID === 1 || query.ROLEID === 2)\r\n return (\r\n \r\n \"✓\"\r\n \r\n );\r\n else return <>;\r\n };\r\n\r\n const BuildQuotedQuery = () => {\r\n if (query.QUOTEDQUERY !== null) {\r\n return (\r\n
\r\n
\r\n \r\n {query.QUOTEDQUERY.FIRSTNAME +\r\n \" \" +\r\n (sessionUser.ID === query.QUOTEDQUERY.QUERIEDBY\r\n ? \" (Me) \"\r\n : \"\")}\r\n \r\n said:\r\n
\r\n
\r\n {\" \"}\r\n {query.QUOTEDQUERY.QUERYCONTENT}\r\n
\r\n
\r\n {moment(query.QUOTEDQUERY.DATEPOSTED).format(\"D-MMM-YYYY hh:mma\")}\r\n
\r\n
\r\n );\r\n }\r\n };\r\n\r\n const getTagColorClass = () => {\r\n switch (query.QUERYTYPE.toLowerCase()) {\r\n case \"complaint\":\r\n return \"al-bg-red\";\r\n case \"suggestion\":\r\n return \"al-bg-gray\";\r\n case \"comment\":\r\n return \"al-bg-blue\";\r\n case \"question\":\r\n return \"al-bg-yellow\";\r\n case \"reply\":\r\n return \"al-bg-green\";\r\n default:\r\n return \"al-bg-blue\";\r\n }\r\n };\r\n\r\n return (\r\n
\r\n
{BuildAvatar()}
\r\n
\r\n
\r\n \r\n {query.FIRSTNAME +\r\n \" \" +\r\n query.LASTNAME +\r\n (sessionUser.ID === query.QUERIEDBY ? \" (Me)\" : \"\")}\r\n {BuildVerifiedIcon()}\r\n
\r\n
\r\n {query.QUERYTYPE}\r\n
\r\n
\r\n
\r\n {BuildQuery()}\r\n {BuildIcons()}\r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default QueryItem;\r\n","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEUAAABXCAYAAABSk4i5AAAACXBIWXMAAA36AAAN+gHZMNd/AAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAA8ZJREFUeJztnE2LHEUYgJ+3u3dFYogGhQXxC0HwEDAHyd18HEUCel92mN5hFyH/YP6BIuhSZtYfkBxEvBn3BxgiyRpB8aJERgIxMSaSxMxWlwcTmY93e2ZnenrG7feBPkx3ddXbD2911RQzJZSAc24BeAc4HkJ4WUReAJYAARLgYFfxu8AOEIDrwDUR+SXLsi0R+SJN086045VpN9BqtV7y3n8JHCmgum3g7TRNrxVQ165MVYpz7gjwFf9mRVFcz7LsZKPR+L7AOnsoXEqz2UyWlpbeEJH3gHXgyaLbAO6LyEcicr7dbm83m82dIisX59y5Ce5/ClgIITwhIs8Cj4+pd8suAvD7o+MG8BDoAH+NW2ECvDtpVCJlOhhsHnju0fF6ERVGRVSy3zApCiZFIQL+nnUQc8aDCLg36yjmjHsR8OOso5gnROSHSEQ+Bu7MOpg54U4I4ZP/JhgbGxvPR1H0OfDmkBv/9N6/Mt3YiiOO45+BQ3llROSi9/50o9FoQ9/M0zlXA84Oaed2mqbPTBRpiTjn/gCezisjIiv1ev2zx597huQsy76dUmxzTf9z90hJkuS3csOZD0Sk3f25R0q73b4B+FIjmj079Xr9ZveJHinNZjMDHpQa0uy5LyKh+4Q2zX9YUjDzwsDzmhTla04ySqG94px7UUReyysTx/E3Kysrd3e7vrm5edB7fyyvjhDCTwWs1w4shGtSisiU0yGED/IKeO+PAldyrr8aQrgwpJ0zwIdjxNfNQBJY97F3isrwTBGRqkkZnikhBJOiFKrUSpzWM7Tuk5UTznwQQhj4WmML1wraOyVoBfcxA89rmaJgmaJQ+UzpXzYAffSxTFHOVUqK9rqofPfRqHz3sUwZkcoPySONPoZlCtg0fzQqP/poVH7yZtP8Ean8O2WkyVsFR58BKp8pGiZFwaQomBQFk6JgUhRMioJJUTApCiZFwaQomBQFk6JgUhRMioJJUTApCiZFwaQomBQFk6Kg/bVlYkIIV0Xk07wynU7n5rDrSZLk1hFCuDpOfMOYipTV1dUtYGuSOtbW1n4F0mIi2hvWfRRMioJJUTApCiZFwaQomBSFceYpBybcRbBsDuz1hnGkLFDALoLzjHUfBe03b5XatEp7Xu3nXe+LyMVyQpo5l6MoOtN/Ut0e1Dl3CLjA8J28/s9cieP4eK1Wu9V/Ydc9U1ut1mHv/dfA0amGNhsux3F8QhMCOS/aWq12a3Fx8S3g0tRCmw3bnU7n5G5CYMjos7y8fNt7fwrYL1udfQecWF9fz13g+gfvNx0U1LzpjAAAAABJRU5ErkJggg==\"","export default \"data:image/png;base64,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\"","import React, { useState, useRef } from \"react\";\r\nimport iconSendBlue from \"../../img/icons/ic_send_blue.png\";\r\nimport iconSendBlack from \"../../img/icons/ic_send_black.png\";\r\nimport iconAttachmentBlue from \"../../img/icons/ic_attachment_black.png\";\r\nimport Tooltip from \"react-simple-tooltip\";\r\nimport Loader from \"../../components/Loader/Loader\";\r\nimport ActionIcon from \"../ActionIcon/ActionIcon\";\r\nimport OutlineButton from \"../OutlineButton/OutlineButton\";\r\nimport QueryAttachment from \"../QueryAttachment/QueryAttachment\";\r\nimport moment from \"moment\";\r\n\r\nimport \"./QueriesContainer.css\";\r\nimport QueryItem from \"../QueryItem/QueryItem\";\r\n\r\nconst QueriesContainer = ({\r\n onClickAssignUser,\r\n queries,\r\n refreshList,\r\n isLoadingQueries,\r\n isErrorQueries,\r\n postQuery,\r\n showAlertDialog,\r\n setAttachmentFiles,\r\n attachmentFiles,\r\n setQueryContent,\r\n queryContent,\r\n isSendingQuery,\r\n isRefreshingAttach,\r\n setIsRefreshingAttach,\r\n deleteQuery,\r\n setQuotedQuery,\r\n quotedQuery,\r\n assignUser,\r\n}) => {\r\n const hiddenFileInput = useRef(null);\r\n\r\n const validatePostQuery = () => {\r\n if (queryContent.trim().length > 0) {\r\n postQuery();\r\n }\r\n };\r\n\r\n /* Files */\r\n const handleFileChange = (e) => {\r\n setIsRefreshingAttach(true);\r\n\r\n if (typeof e.target.files[0] !== \"undefined\") {\r\n //check duplicate\r\n let isDuplicate = false;\r\n attachmentFiles.forEach((file, index) => {\r\n if (file.name === e.target.files[0].name) {\r\n showAlertDialog({\r\n msg: \"File has already been chosen\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n isDuplicate = true;\r\n }\r\n });\r\n\r\n if (!isDuplicate) {\r\n const fileUploaded = e.target.files[0];\r\n const extension = fileUploaded.name.split(\".\").pop();\r\n\r\n if (extension === \"pdf\") {\r\n var tmp = attachmentFiles;\r\n tmp.push(fileUploaded);\r\n setTimeout(() => {\r\n setAttachmentFiles(tmp);\r\n }, 500);\r\n } else\r\n showAlertDialog({\r\n msg: \"Invalid file type, only PDF format is allowed\",\r\n type: \"error\",\r\n posText: \"Got it\",\r\n variation: \"alert\",\r\n });\r\n }\r\n }\r\n setTimeout(() => {\r\n setIsRefreshingAttach(false);\r\n }, 3000);\r\n };\r\n\r\n const chooseFile = () => {\r\n hiddenFileInput.current.value = \"\";\r\n if (attachmentFiles.length < 2) {\r\n //maximum files\r\n hiddenFileInput.current.click();\r\n } else\r\n showAlertDialog({\r\n msg: \"Maximum upload is 2 files\",\r\n type: \"error\",\r\n posText: \"Got it\",\r\n variation: \"alert\",\r\n });\r\n };\r\n\r\n const removeFile = (index) => {\r\n setIsRefreshingAttach(true);\r\n var tmp = attachmentFiles;\r\n tmp.splice(index, 1);\r\n setAttachmentFiles(tmp);\r\n setTimeout(() => {\r\n setIsRefreshingAttach(false);\r\n }, 3000);\r\n };\r\n\r\n //view builders\r\n const BuildAttachmentPanel = () => {\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n };\r\n\r\n const BuildInputPanel = () => {\r\n return (\r\n
\r\n {\r\n setQueryContent(e.target.value);\r\n }}\r\n placeholder=\"Type something...\"\r\n >\r\n\r\n {\r\n if (!isSendingQuery) {\r\n validatePostQuery();\r\n }\r\n }}\r\n >\r\n \r\n \"\" />\r\n \r\n
\r\n \r\n );\r\n };\r\n\r\n const BuildQuotedMessage = () => {\r\n if (quotedQuery)\r\n return (\r\n
\r\n
{quotedQuery.FIRSTNAME} said:
\r\n
\r\n {\" \"}\r\n {quotedQuery.QUERYCONTENT}\r\n
\r\n
\r\n {moment(quotedQuery.DATEPOSTED).format(\"D-MMM-YYYY hh:mma\")}\r\n
\r\n {\r\n setQuotedQuery(null);\r\n }}\r\n >\r\n X\r\n \r\n
\r\n );\r\n else return <>;\r\n };\r\n\r\n const BuildQueriesList = () => {\r\n if (!isLoadingQueries)\r\n if (!isErrorQueries) {\r\n if (\r\n queries &&\r\n queries.filter(\r\n (query) => query.FLAG !== \"deleted\" && query.VISIBLE === 1\r\n ).length > 0\r\n ) {\r\n return (\r\n
\r\n {queries\r\n .filter(\r\n (query) => query.FLAG !== \"deleted\" && query.VISIBLE === 1\r\n )\r\n .map((query) => (\r\n \r\n ))}\r\n
\r\n );\r\n } else {\r\n return
No comments yet
;\r\n }\r\n } else {\r\n return (\r\n
\r\n
\r\n
Failed to load comments
\r\n \r\n
\r\n
\r\n );\r\n }\r\n else\r\n return (\r\n
\r\n \r\n
\r\n );\r\n };\r\n\r\n return (\r\n
\r\n {BuildQueriesList()}\r\n
\r\n {BuildQuotedMessage()}\r\n
\r\n {BuildAttachmentPanel()}\r\n {BuildInputPanel()}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default QueriesContainer;\r\n","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","import React, { useState, useEffect } from \"react\";\r\nimport { getUsersApi } from \"../../../static/ApiClient/UsersApi\";\r\nimport Loader from \"../../Loader/Loader\";\r\nimport OutlineButton from \"../../OutlineButton/OutlineButton\";\r\nimport UserItem from \"../../UserItem/UserItem\";\r\nimport \"./UserSelectDialog.css\";\r\nimport { useSession } from \"react-session-provider\";\r\n\r\nconst UserSelectDialog = ({ isOPen, onClose, selectUser }) => {\r\n const [isLoadingUsers, setIsLoadingUsers] = useState(false);\r\n const [isErrorUsers, setIsErrorUsers] = useState(false);\r\n const [users, setUsers] = useState([]);\r\n\r\n const { store = {}, setKey } = useSession();\r\n const { sessionUserToken, sessionUser } = store;\r\n\r\n //use effetcs\r\n useEffect(() => {\r\n getUsers();\r\n }, []);\r\n\r\n //api calls\r\n const getUsers = async () => {\r\n setIsErrorUsers(false);\r\n setIsLoadingUsers(true);\r\n\r\n const res = await getUsersApi({ token: sessionUserToken });\r\n\r\n switch (res.message) {\r\n case \"success\":\r\n setUsers(res.data);\r\n break;\r\n case \"error\":\r\n setIsErrorUsers(true);\r\n break;\r\n default:\r\n setIsErrorUsers(true);\r\n }\r\n\r\n setIsLoadingUsers(false);\r\n };\r\n\r\n //view builders\r\n const BuildHeader = () => {\r\n return
Select User
;\r\n };\r\n\r\n const BuildListView = () => {\r\n if (!isLoadingUsers) {\r\n if (!isErrorUsers) {\r\n if (\r\n users.filter(\r\n (user) =>\r\n user.SIGNUPSTATUS === \"approved\" &&\r\n user.DISABLED !== 1 &&\r\n user.ROLEID !== 1 &&\r\n user.ROLEID !== 2\r\n ).length > 0\r\n ) {\r\n return (\r\n
\r\n {users\r\n .filter(\r\n (user) =>\r\n user.SIGNUPSTATUS === \"approved\" &&\r\n user.DISABLED !== 1 &&\r\n user.ROLEID !== 1 &&\r\n user.ROLEID !== 2\r\n )\r\n .map((user, index) => (\r\n {\r\n selectUser(user);\r\n onClose();\r\n }}\r\n />\r\n ))}\r\n
\r\n );\r\n } else {\r\n return (\r\n
No accepted users
\r\n );\r\n }\r\n } else {\r\n return (\r\n
\r\n
\r\n
Failed to load Users
\r\n {\r\n getUsers();\r\n }}\r\n />\r\n
\r\n
\r\n );\r\n }\r\n } else {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n };\r\n\r\n if (isOPen)\r\n return (\r\n
\r\n
\r\n
\r\n {BuildHeader()}\r\n {BuildListView()}\r\n \r\n
\r\n
\r\n );\r\n else return <>;\r\n};\r\n\r\nexport default UserSelectDialog;\r\n","import axios from \"axios\";\r\nimport { BACKEND_URL } from \"../../Config\";\r\nconst _apiKey = require(\"../apiKey.json\")?.apiKey;\r\n\r\nexport const getPublicationsApi = async ({ token }) => {\r\n const headers = {\r\n Authorization: \"Bearer my-token\",\r\n userToken: token,\r\n apiKey:_apiKey\r\n };\r\n\r\n var res = await axios\r\n .get(BACKEND_URL + `publications`, { headers: headers })\r\n .catch((e) => {\r\n console.log(\"***** publications api error *****\", e);\r\n });\r\n\r\n if (typeof res !== \"undefined\") {\r\n if (parseInt(res.status) === 200 && res.data.message !== \"unauthorized\") {\r\n console.log(\"***** publications returned *****\", res.data);\r\n return res.data;\r\n } else if (\r\n parseInt(res.status) === 200 &&\r\n res.data.message === \"unauthorized\"\r\n ) {\r\n console.log(\"***** session expired \");\r\n return { message: \"session expired\", data: {} };\r\n } else {\r\n console.log(\r\n \"***** publications api error with status code ***** \" + res.status\r\n );\r\n return { message: \"error \" + res.status, data: {} };\r\n }\r\n } else return { message: \"server error\", data: {} };\r\n};\r\n\r\nexport const postPublicationApi = async ({ data, token }) => {\r\n const headers = {\r\n Authorization: \"Bearer my-token\",\r\n userToken: token,\r\n apiKey:_apiKey\r\n };\r\n\r\n console.log(\"***** files are \" + data.files);\r\n let formData = new FormData();\r\n\r\n console.log(\"file is\", data.files[0]);\r\n var date = new Date();\r\n var dateTime =\r\n date.getFullYear() +\r\n \"-\" +\r\n date.getMonth() +\r\n \"-\" +\r\n date.getDay() +\r\n \"_\" +\r\n date.getHours() +\r\n \"-\" +\r\n date.getMinutes() +\r\n \"-\" +\r\n date.getSeconds();\r\n\r\n formData.append(\"docTitle\", data.docTitle);\r\n formData.append(\"flag\", data.flag);\r\n formData.append(\"dateTime\", dateTime);\r\n formData.append(\"userId\", data.userId);\r\n formData.append(\"bankId\", data.bankId);\r\n formData.append(\"file\", data.files[0]);\r\n\r\n var res = await axios\r\n .post(BACKEND_URL + `publications`, formData, { headers: headers })\r\n .catch((e) => {\r\n console.log(\"***** post publication api error *****\", e);\r\n });\r\n\r\n if (typeof res !== \"undefined\") {\r\n if (parseInt(res.status) === 200) {\r\n console.log(\"***** post publication returned *****\", res.data);\r\n return res.data;\r\n } else {\r\n console.log(\r\n \"***** post publication api error with status code ***** \" + res.status\r\n );\r\n return { message: \"error \" + res.status, data: {} };\r\n }\r\n } else return { message: \"server error\", data: {} };\r\n};\r\n\r\nexport const updatePublicationApi = async ({ data, token }) => {\r\n const headers = {\r\n Authorization: \"Bearer my-token\",\r\n userToken: token,\r\n apiKey:_apiKey\r\n };\r\n\r\n var res = await axios\r\n .patch(BACKEND_URL + `publications/${data.DOCUMENTID}`, data, {\r\n headers: headers,\r\n })\r\n .catch((e) => {\r\n console.log(\"***** update publication api error *****\", e);\r\n });\r\n\r\n if (typeof res !== \"undefined\") {\r\n if (parseInt(res.status) === 200) {\r\n console.log(\"***** update publication returned *****\", res.data);\r\n return res.data;\r\n } else {\r\n console.log(\r\n \"***** update publication api error with status code ***** \" +\r\n res.status\r\n );\r\n return { message: \"error \" + res.status, data: {} };\r\n }\r\n } else return { message: \"server error\", data: {} };\r\n};\r\n","import axios from \"axios\";\r\nimport { BACKEND_URL } from \"../../Config\";\r\nconst _apiKey = require(\"../apiKey.json\")?.apiKey;\r\n\r\nexport const getQueryTypesApi = async () => {\r\n const headers = {\r\n Authorization: \"Bearer my-token\",\r\n apiKey: _apiKey,\r\n };\r\n\r\n var res = await axios\r\n .get(BACKEND_URL + \"queries/query/types\", { headers: headers })\r\n .catch((e) => {\r\n console.log(\"***** get query types api error *****\", e);\r\n })\r\n .catch((e) => {\r\n console.log(\"***** get query types api error *****\", e);\r\n });\r\n if (typeof res !== \"undefined\") {\r\n if (parseInt(res.status) === 200) return res.data;\r\n else {\r\n console.log(\r\n \"***** get query types api error with status code ***** \" + res.status\r\n );\r\n return { message: \"error \" + res.status, data: {} };\r\n }\r\n } else return { message: \"server error\", data: {} };\r\n};\r\n\r\nexport const getDocumentQueriesApi = async ({ token, id }) => {\r\n const headers = {\r\n Authorization: \"Bearer my-token\",\r\n userToken: token,\r\n };\r\n\r\n var res = await axios\r\n .get(BACKEND_URL + `queries/document/${id}`, { headers: headers })\r\n .catch((e) => {\r\n console.log(\"***** get document queries api error *****\", e);\r\n })\r\n .catch((e) => {\r\n console.log(\"***** get document queries api error *****\", e);\r\n });\r\n if (typeof res !== \"undefined\") {\r\n if (parseInt(res.status) === 200) return res.data;\r\n else {\r\n console.log(\r\n \"***** get document queries api error with status code ***** \" +\r\n res.status\r\n );\r\n return { message: \"error \" + res.status, data: {} };\r\n }\r\n } else return { message: \"server error\", data: {} };\r\n};\r\n\r\nexport const getEnquiriesQueriesApi = async ({ token, id }) => {\r\n const headers = {\r\n Authorization: \"Bearer my-token\",\r\n userToken: token,\r\n };\r\n\r\n var res = await axios\r\n .get(BACKEND_URL + `queries/enquiry/${id}`, { headers: headers })\r\n .catch((e) => {\r\n console.log(\"***** get enquiry queries api error *****\", e);\r\n })\r\n .catch((e) => {\r\n console.log(\"***** get enquiry queries api error *****\", e);\r\n });\r\n if (typeof res !== \"undefined\") {\r\n if (parseInt(res.status) === 200) return res.data;\r\n else {\r\n console.log(\r\n \"***** get enquiry queries api error with status code ***** \" +\r\n res.status\r\n );\r\n return { message: \"error \" + res.status, data: {} };\r\n }\r\n } else return { message: \"server error\", data: {} };\r\n};\r\n\r\nexport const postQueryApi = async ({ token, data }) => {\r\n const headers = {\r\n Authorization: \"Bearer my-token\",\r\n userToken: token,\r\n };\r\n\r\n console.log(\"***** files are \" + data.FILES);\r\n let formData = new FormData();\r\n var date = new Date();\r\n var dateTime =\r\n date.getFullYear() +\r\n \"-\" +\r\n date.getMonth() +\r\n \"-\" +\r\n date.getDay() +\r\n \"_\" +\r\n date.getHours() +\r\n \"-\" +\r\n date.getMinutes() +\r\n \"-\" +\r\n date.getSeconds();\r\n\r\n formData.append(\"DOCUMENTID\", data.DOCUMENTID);\r\n formData.append(\"ENQUIRYID\", data.ENQUIRYID);\r\n formData.append(\"QUOTEDQUERYID\", data.QUOTEDQUERYID);\r\n formData.append(\"QUERYCONTENT\", data.QUERYCONTENT);\r\n formData.append(\"DATETIME\", dateTime);\r\n formData.append(\"USERID\", data.USERID);\r\n formData.append(\"QUERYTYPEID\", data.QUERYTYPEID);\r\n formData.append(\"HASATTACHMENT\", data.FILES.length > 0 ? 1 : 0);\r\n\r\n data.FILES.forEach((item) => {\r\n console.log(\"*** appending\", item);\r\n formData.append(\"file\", item);\r\n });\r\n\r\n console.log(\"form data is\", formData.get(\"file\"));\r\n\r\n var res = await axios\r\n .post(BACKEND_URL + \"queries\", formData, { headers: headers })\r\n .catch((e) => {\r\n console.log(\"***** post query api error *****\", e);\r\n })\r\n .catch((e) => {\r\n console.log(\"***** post query api error *****\", e);\r\n });\r\n if (typeof res !== \"undefined\") {\r\n if (parseInt(res.status) === 200) return res.data;\r\n else {\r\n console.log(\r\n \"***** post query api error with status code ***** \" + res.status\r\n );\r\n return { message: \"error \" + res.status, data: {} };\r\n }\r\n } else return { message: \"server error\", data: {} };\r\n};\r\n\r\nexport const updateQueryApi = async ({ token, data }) => {\r\n const headers = {\r\n Authorization: \"Bearer my-token\",\r\n userToken: token,\r\n };\r\n\r\n let id = data.QUERYID;\r\n\r\n var res = await axios\r\n .patch(BACKEND_URL + `queries/${id}`, data, { headers: headers })\r\n .catch((e) => {\r\n console.log(\"***** update query api error *****\", e);\r\n })\r\n .catch((e) => {\r\n console.log(\"***** update query api error *****\", e);\r\n });\r\n if (typeof res !== \"undefined\") {\r\n if (parseInt(res.status) === 200) return res.data;\r\n else {\r\n console.log(\r\n \"***** update query api error with status code ***** \" + res.status\r\n );\r\n return { message: \"error \" + res.status, data: {} };\r\n }\r\n } else return { message: \"server error\", data: {} };\r\n};\r\n","import React, { useState, useEffect } from \"react\";\r\nimport \"./ViewPublicationDialog.css\";\r\nimport { pdfjs, Document, Page } from \"react-pdf\";\r\nimport Loader from \"../../Loader/Loader\";\r\nimport AlertDialog from \"../AlertDialog/AlertDialog\";\r\nimport QueriesContainer from \"../../QueriesContainer/QueriesContainer\";\r\nimport OutlineButton from \"../../OutlineButton/OutlineButton\";\r\nimport UserSelectDialog from \"../UserSelectDialog/UserSelectDialog\";\r\nimport { BACKEND_URL } from \"../../../Config\";\r\nimport { updatePublicationApi } from \"../../../static/ApiClient/PublicationsApi\";\r\nimport { useSession } from \"react-session-provider\";\r\nimport {\r\n getDocumentQueriesApi,\r\n postQueryApi,\r\n updateQueryApi,\r\n} from \"../../../static/ApiClient/QueriesApi\";\r\npdfjs.GlobalWorkerOptions.workerSrc = `//cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.min.js`;\r\n\r\nconst ViewPublicationDialog = ({\r\n isOpen,\r\n onClose,\r\n document,\r\n setDocument,\r\n reloadParentList,\r\n}) => {\r\n const [activeTab, setActiveTab] = useState(\"view\");\r\n const [isOPenUserSelectDialog, setIsOpenUserSelectDialog] = useState(false);\r\n\r\n const [numPages, setNumPages] = useState(null);\r\n const [pageNumber, setPageNumber] = useState(1);\r\n\r\n const [isOpenAlertDialog, setIsOpenAlertDialog] = useState(false);\r\n const [alertDialogVariation, setAlertDialogVariation] = useState(\"confirm\");\r\n const [alertDialogType, setAlertDialogType] = useState(\"warn\");\r\n const [alertDialogMessage, setAlertDialogMessage] = useState(\"\");\r\n const [alertDialogPosBtnText, setAlertDialogPosBtnText] = useState(\"\");\r\n const [alertDialogNegBtnText, setAlertDialogNegBtnText] = useState(\"\");\r\n\r\n const [nextAction, setNextAction] = useState(\"\");\r\n const [isDeletingPublication, setIsDeletingPublication] = useState(false);\r\n const [isDraftingPublication, setIsDraftingPublication] = useState(false);\r\n\r\n const [queryContent, setQueryContent] = useState(\"\");\r\n const [quotedQuery, setQuotedQuery] = useState(null);\r\n const [queryTypeId, setQueryTypeId] = useState(1);\r\n const [isSendingQuery, setIsSendingQuery] = useState(false);\r\n const [isRefreshingAttach, setIsRefreshingAttach] = useState(false);\r\n\r\n const [isLoadingQueries, setIsLoadingQueries] = useState(false);\r\n const [isErrorQueries, setIsErrorQueries] = useState(false);\r\n const [queries, setQueries] = useState([]);\r\n\r\n const [queryOnHold, setQueryOnHold] = useState(null);\r\n\r\n const [assignedToUser, setAssignedToUser] = useState(null);\r\n const [assignedQuery, setAssignedQuery] = useState(null);\r\n\r\n /* Files */\r\n const [attachmentFiles, setAttachmentFiles] = useState([]);\r\n /* Files */\r\n\r\n const { store = {}, setKey } = useSession();\r\n const { sessionUser, sessionUserToken } = store;\r\n\r\n //useEffect\r\n useEffect(() => {\r\n if (document) {\r\n getPublicationQueries();\r\n }\r\n }, [document]);\r\n\r\n useEffect(() => {\r\n if (assignedToUser) assignQueryToUser();\r\n }, [assignedToUser]);\r\n\r\n //api calls\r\n const flagPublication = async (flg) => {\r\n setNextAction(\"\");\r\n if (flg === \"draft\" || flg === \"published\") setIsDraftingPublication(true);\r\n else if (flg === \"deleted\") setIsDeletingPublication(true);\r\n\r\n const res = await updatePublicationApi({\r\n token: sessionUserToken,\r\n data: {\r\n DOCUMENTID: document.DOCUMENTID,\r\n FLAG: flg,\r\n },\r\n });\r\n\r\n switch (res.message) {\r\n case \"success\":\r\n document.FLAG = flg;\r\n setDocument(document);\r\n reloadParentList();\r\n showAlertDialog({\r\n msg: `Publication modified successfully`,\r\n type: \"success\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n break;\r\n case \"error\":\r\n showAlertDialog({\r\n msg: `An error occurred`,\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n break;\r\n\r\n default:\r\n showAlertDialog({\r\n msg: res.message,\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n }\r\n\r\n if (flg === \"draft\" || flg === \"published\") setIsDraftingPublication(false);\r\n else if (flg === \"deleted\") setIsDeletingPublication(false);\r\n };\r\n\r\n const getPublicationQueries = async () => {\r\n setIsLoadingQueries(true);\r\n setQueries([]);\r\n const res = await getDocumentQueriesApi({\r\n token: sessionUserToken,\r\n id: document.DOCUMENTID,\r\n });\r\n console.log(\"queries returned \", res);\r\n switch (res.message) {\r\n case \"success\":\r\n setIsErrorQueries(false);\r\n setQueries(res.data);\r\n break;\r\n case \"error\":\r\n setIsErrorQueries(true);\r\n setQueries([]);\r\n break;\r\n default:\r\n setQueries([]);\r\n }\r\n\r\n setIsLoadingQueries(false);\r\n };\r\n\r\n const postQuery = async () => {\r\n setIsSendingQuery(true);\r\n var data = {\r\n ENQUIRYID: null,\r\n DOCUMENTID: document ? document.DOCUMENTID : null,\r\n USERID: sessionUser.ID,\r\n QUERYCONTENT: queryContent,\r\n QUERYTYPEID: queryTypeId,\r\n QUOTEDQUERYID: quotedQuery ? quotedQuery.QUERYID : null,\r\n FILES: attachmentFiles,\r\n };\r\n\r\n // alert(\"Data is \" + JSON.stringify(data));\r\n\r\n const apiRes = await postQueryApi({ token: sessionUserToken, data: data });\r\n\r\n switch (apiRes.message) {\r\n case \"success\":\r\n setQueryContent(\"\");\r\n setQuotedQuery(null);\r\n setQueryTypeId(1);\r\n setIsRefreshingAttach(true);\r\n setAttachmentFiles([]);\r\n getPublicationQueries();\r\n setTimeout(() => {\r\n setIsRefreshingAttach(false);\r\n }, 2000);\r\n\r\n break;\r\n default:\r\n console.log(\"***** error occurred\", apiRes);\r\n showAlertDialog({\r\n msg: \"An error occurred, failed to post\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n }\r\n setIsSendingQuery(false);\r\n };\r\n\r\n const deleteQuery = async (query) => {\r\n var obj = {\r\n QUERYID: query.QUERYID,\r\n FLAG: \"deleted\",\r\n };\r\n\r\n const apiRes = await updateQueryApi({ token: sessionUserToken, data: obj });\r\n\r\n switch (apiRes.message) {\r\n case \"success\":\r\n setQueryOnHold(null);\r\n showAlertDialog({\r\n msg: \"Query successfully deleted\",\r\n type: \"success\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n getPublicationQueries();\r\n break;\r\n case \"error\":\r\n showAlertDialog({\r\n msg: \"An error occurred, failed to make changes\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n break;\r\n default:\r\n }\r\n };\r\n\r\n const assignQueryToUser = async () => {\r\n alert(\r\n `assigning query ${JSON.stringify(queryOnHold)} to user ${JSON.stringify(\r\n assignedToUser\r\n )}`\r\n );\r\n };\r\n\r\n //other methods\r\n const handleClickAssignUser = (query) => {\r\n setQueryOnHold(query);\r\n setIsOpenUserSelectDialog(true);\r\n };\r\n\r\n const confirmDeleteQuery = (query) => {\r\n setNextAction(\"deleteQuery\");\r\n setQueryOnHold(query);\r\n showAlertDialog({\r\n msg: \"Are you sure you want to delete this entry?\",\r\n type: \"warn\",\r\n posText: \"Yes, Delete\",\r\n negText: \"No\",\r\n variation: \"confirm\",\r\n });\r\n };\r\n\r\n //show dialog\r\n const showAlertDialog = ({\r\n msg = \"\",\r\n type = \"\",\r\n posText = \"\",\r\n negText = \"\",\r\n variation = \"\",\r\n }) => {\r\n setAlertDialogMessage(msg);\r\n setAlertDialogNegBtnText(negText);\r\n setAlertDialogPosBtnText(posText);\r\n setAlertDialogType(type);\r\n setAlertDialogVariation(variation);\r\n setIsOpenAlertDialog(true);\r\n };\r\n\r\n //pdf methods\r\n\r\n const onDocumentLoadSuccess = ({ numPages }) => {\r\n setNumPages(numPages);\r\n setPageNumber(1);\r\n };\r\n\r\n const changePage = (offset) => {\r\n setPageNumber((prevPageNumber) => prevPageNumber + offset);\r\n };\r\n\r\n const previousPage = () => {\r\n changePage(-1);\r\n };\r\n\r\n const nextPage = () => {\r\n changePage(1);\r\n };\r\n\r\n //view builders\r\n\r\n const BuildLoadingView = () => {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n };\r\n\r\n const BuildPDFView = () => {\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n Page {pageNumber || (numPages ? 1 : \"--\")} of {numPages || \"--\"}\r\n
\r\n \r\n Previous\r\n \r\n = numPages}\r\n onClick={nextPage}\r\n >\r\n Next\r\n \r\n
\r\n
\r\n );\r\n };\r\n\r\n const BuildTabs = () => {\r\n return (\r\n
\r\n {\r\n setActiveTab(\"view\");\r\n }}\r\n >\r\n View\r\n
\r\n {\r\n setActiveTab(\"comments\");\r\n }}\r\n >\r\n Comments\r\n \r\n {(sessionUser.ROLEID === 1 || sessionUser.ROLEID === 2) && (\r\n {\r\n setActiveTab(\"more\");\r\n }}\r\n >\r\n More\r\n \r\n )}\r\n \r\n );\r\n };\r\n\r\n const BuildCommentsView = () => {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n };\r\n\r\n const BuildMoreView = () => {\r\n return (\r\n
\r\n
\r\n {\r\n setNextAction(\"deletePublication\");\r\n setAlertDialogMessage(\r\n \"Are you sure you want to delete this publication?\"\r\n );\r\n setAlertDialogNegBtnText(\"No\");\r\n setAlertDialogPosBtnText(\"Yes, Delete\");\r\n setAlertDialogType(\"error\");\r\n setAlertDialogVariation(\"confirm\");\r\n setIsOpenAlertDialog(true);\r\n }}\r\n width=\"100%\"\r\n />\r\n
\r\n {document.FLAG === \"published\" && (\r\n
\r\n {\r\n setNextAction(\"pullToDraft\");\r\n setAlertDialogMessage(\r\n \"Are you sure you want to pull this publication back to drafts?\"\r\n );\r\n setAlertDialogNegBtnText(\"No\");\r\n setAlertDialogPosBtnText(\"Yes, I am\");\r\n setAlertDialogType(\"warn\");\r\n setAlertDialogVariation(\"confirm\");\r\n setIsOpenAlertDialog(true);\r\n }}\r\n width=\"100%\"\r\n />\r\n
\r\n )}\r\n\r\n {document.FLAG === \"draft\" && (\r\n
\r\n {\r\n flagPublication(\"published\");\r\n }}\r\n width=\"100%\"\r\n />\r\n
\r\n )}\r\n
\r\n );\r\n };\r\n\r\n const BuildTabViews = () => {\r\n switch (activeTab) {\r\n case \"view\":\r\n return BuildPDFView();\r\n case \"comments\":\r\n return BuildCommentsView();\r\n case \"more\":\r\n return BuildMoreView();\r\n default:\r\n return BuildPDFView();\r\n }\r\n };\r\n\r\n if (isOpen)\r\n return (\r\n <>\r\n
\r\n
\r\n
\r\n {BuildTabs()}\r\n {BuildTabViews()}\r\n \r\n
\r\n
\r\n\r\n {\r\n setIsOpenUserSelectDialog(false);\r\n }}\r\n />\r\n\r\n {\r\n if (nextAction === \"deletePublication\") flagPublication(\"deleted\");\r\n else if (nextAction === \"pullToDraft\") flagPublication(\"draft\");\r\n else if (nextAction === \"deleteQuery\") deleteQuery(queryOnHold);\r\n setIsOpenAlertDialog(false);\r\n }}\r\n onClose={() => {\r\n setIsOpenAlertDialog(false);\r\n }}\r\n positiveButtonText={alertDialogPosBtnText}\r\n negativeButtonText={alertDialogNegBtnText}\r\n />\r\n \r\n );\r\n else return <>;\r\n};\r\n\r\nexport default ViewPublicationDialog;\r\n","import { React, useState, useEffect, useRef } from \"react\";\r\n\r\nimport Aside from \"../../components/Aside/Aside\";\r\nimport NotificationDialog from \"../../components/dialogs/NotificationDialog/NotificationDialog\";\r\nimport SideNav from \"../../components/SideNav/SideNav\";\r\nimport FormInput from \"../../components/Inputs/FormInput/FormInput\";\r\nimport FormButton from \"../../components/FormButton/FormButton\";\r\nimport Tooltip from \"react-simple-tooltip\";\r\nimport AlertDialog from \"../../components/dialogs/AlertDialog/AlertDialog\";\r\n\r\nimport iconAttachmentBlue from \"../../img/icons/ic_attachment_black.png\";\r\n\r\nimport iconAdd from \"../../img/icons/ic_add_blue.png\";\r\n\r\nimport \"./Publications.css\";\r\nimport PublicationItem from \"../../components/PublicationItem/PublicationItem\";\r\nimport ViewPublicationDialog from \"../../components/dialogs/ViewPublicationDialog/ViewPublicationDialog\";\r\nimport Loader from \"../../components/Loader/Loader\";\r\nimport ActionIcon from \"../../components/ActionIcon/ActionIcon\";\r\nimport {\r\n getPublicationsApi,\r\n postPublicationApi,\r\n} from \"../../static/ApiClient/PublicationsApi\";\r\nimport OutlineButton from \"../../components/OutlineButton/OutlineButton\";\r\nimport QueryAttachment from \"../../components/QueryAttachment/QueryAttachment\";\r\nimport { validateFields } from \"../../static/Validator/validator\";\r\nimport { useSession } from \"react-session-provider\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { signOutApi } from \"../../static/ApiClient/UsersApi\";\r\n\r\nconst Publications = () => {\r\n const [isOPenNotification, setIsOpenNotification] = useState(false);\r\n const [isOpenViewPubDialog, setIsOpenViewPubDialog] = useState(false);\r\n const [activeTab, setActiveTab] = useState(\"all\");\r\n\r\n const [publications, setPublications] = useState([]);\r\n const [isErrorPublications, setIsErrorPublications] = useState(false);\r\n const [isGettingPublications, setIsGettingPublications] = useState(false);\r\n const [isPostingPubcalition, setIsPostingPublication] = useState(false);\r\n const [isSavingDraftPublication, setIsSavingDraftPublication] =\r\n useState(false);\r\n\r\n const [selectedPublication, setSelectedPublication] = useState(null);\r\n\r\n const [newPublicationTitle, setNewPublicationTitle] = useState(\"\");\r\n\r\n const [isOpenAlertDialog, setIsOpenAlertDialog] = useState(false);\r\n const [alertDialogVariation, setAlertDialogVariation] = useState(\"confirm\");\r\n const [alertDialogType, setAlertDialogType] = useState(\"warn\");\r\n const [alertDialogMessage, setAlertDialogMessage] = useState(\"\");\r\n const [alertDialogPosBtnText, setAlertDialogPosBtnText] = useState(\"\");\r\n const [alertDialogNegBtnText, setAlertDialogNegBtnText] = useState(\"\");\r\n\r\n /* Files */\r\n const [attachmentFiles, setAttachmentFiles] = useState([]);\r\n const hiddenFileInput = useRef(null);\r\n const [isRefreshingAttach, setIsRefreshingAttach] = useState(false);\r\n /* Files */\r\n\r\n const { store = {}, setKey, deleteKey } = useSession();\r\n const { sessionUser, sessionUserToken } = store;\r\n const history = useHistory();\r\n\r\n const [searchQuery, setSearchQuery] = useState(\"\");\r\n const [filteredListPublications, setFilteredListPublications] = useState([]);\r\n\r\n //useStates\r\n //page security\r\n useEffect(() => {\r\n if (sessionUser) {\r\n // if (sessionUser.ROLEID === 1 || sessionUser.ROLEID === 2) {\r\n // console.log(\"session ok\");\r\n // } else {\r\n // history.push(\"/error\");\r\n // }\r\n } else {\r\n history.push(\"/\");\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n getPublications();\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (publications.length > 0) {\r\n searchPublication();\r\n }\r\n }, [searchQuery]);\r\n\r\n //api calls\r\n const getPublications = async () => {\r\n setIsGettingPublications(true);\r\n const res = await getPublicationsApi({ token: sessionUserToken });\r\n switch (res.message) {\r\n case \"success\":\r\n setIsErrorPublications(false);\r\n setPublications(res.data);\r\n break;\r\n case \"error\":\r\n setIsErrorPublications(true);\r\n break;\r\n case \"session expired\":\r\n setIsErrorPublications(true);\r\n const apiRes = await signOutApi(sessionUserToken);\r\n if (apiRes.message === \"success\") {\r\n console.log(\"signout successful\");\r\n } else {\r\n console.log(apiRes.message);\r\n }\r\n //clear session\r\n deleteKey(\"sessionUser\");\r\n deleteKey(\"sessionUserToken\");\r\n history.push(\"/\");\r\n break;\r\n default:\r\n setIsErrorPublications(true);\r\n break;\r\n }\r\n setIsGettingPublications(false);\r\n };\r\n\r\n const postPublication = async ({ isDraft }) => {\r\n if (isDraft) setIsSavingDraftPublication(true);\r\n else setIsPostingPublication(true);\r\n console.log(attachmentFiles);\r\n const res = await postPublicationApi({\r\n token: sessionUserToken,\r\n data: {\r\n docTitle: newPublicationTitle,\r\n flag: isDraft ? \"draft\" : \"published\",\r\n files: attachmentFiles,\r\n bankId: sessionUser.BANKID,\r\n userId: sessionUser.ID,\r\n },\r\n });\r\n\r\n switch (res.message) {\r\n case \"success\":\r\n showAlertDialog({\r\n msg: \"Publication posted successfully\",\r\n type: \"success\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n getPublications();\r\n setNewPublicationTitle(\"\");\r\n setIsRefreshingAttach(true);\r\n setAttachmentFiles([]);\r\n setTimeout(() => {\r\n setIsRefreshingAttach(false);\r\n }, 2000);\r\n break;\r\n case \"error\":\r\n showAlertDialog({\r\n msg: \"An error occurred, try again later\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n break;\r\n default:\r\n showAlertDialog({\r\n msg: res.message,\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n }\r\n\r\n if (isDraft) setIsSavingDraftPublication(false);\r\n else setIsPostingPublication(false);\r\n };\r\n\r\n //other methods\r\n const verifyPostPublication = ({ isDraft = false }) => {\r\n if (validateFields([newPublicationTitle])) {\r\n if (attachmentFiles.length > 0) {\r\n postPublication({ isDraft: isDraft });\r\n } else\r\n showAlertDialog({\r\n msg: \"Provide a PDF file attachment for the publication\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n } else {\r\n showAlertDialog({\r\n msg: \"Provide a publication title\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n }\r\n };\r\n\r\n const searchPublication = () => {\r\n if (searchQuery.trim() !== \"\") {\r\n var temp = publications\r\n .filter((doc) => doc.FLAG === \"published\")\r\n .filter((doc) =>\r\n (doc.DOCTITLE ?? \"\")\r\n .toLowerCase()\r\n .includes(searchQuery.trim().toLowerCase())\r\n );\r\n setFilteredListPublications(temp);\r\n } else {\r\n setFilteredListPublications([]);\r\n }\r\n };\r\n\r\n /* Files */\r\n const handleFileChange = (e) => {\r\n setIsRefreshingAttach(true);\r\n\r\n if (typeof e.target.files[0] !== \"undefined\") {\r\n //check duplicate\r\n let isDuplicate = false;\r\n attachmentFiles.forEach((file, index) => {\r\n if (file.name === e.target.files[0].name) {\r\n showAlertDialog({\r\n msg: \"File has already been chosen\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n isDuplicate = true;\r\n }\r\n });\r\n\r\n if (!isDuplicate) {\r\n const fileUploaded = e.target.files[0];\r\n const extension = fileUploaded.name.split(\".\").pop();\r\n\r\n if (extension === \"pdf\") {\r\n var tmp = attachmentFiles;\r\n tmp.push(fileUploaded);\r\n setTimeout(() => {\r\n setAttachmentFiles(tmp);\r\n }, 500);\r\n } else\r\n showAlertDialog({\r\n msg: \"Invalid file type, only PDF format is allowed\",\r\n type: \"error\",\r\n posText: \"Got it\",\r\n variation: \"alert\",\r\n });\r\n }\r\n }\r\n setTimeout(() => {\r\n setIsRefreshingAttach(false);\r\n }, 3000);\r\n };\r\n\r\n const showAlertDialog = ({\r\n msg = \"\",\r\n type = \"\",\r\n posText = \"\",\r\n negText = \"\",\r\n variation = \"\",\r\n isFixed = false,\r\n }) => {\r\n setAlertDialogMessage(msg);\r\n setAlertDialogNegBtnText(negText);\r\n setAlertDialogPosBtnText(posText);\r\n setAlertDialogType(type);\r\n setAlertDialogVariation(variation);\r\n setIsOpenAlertDialog(true);\r\n };\r\n\r\n const chooseFile = () => {\r\n hiddenFileInput.current.value = \"\";\r\n if (attachmentFiles.length < 1) {\r\n //maximum files\r\n hiddenFileInput.current.click();\r\n } else\r\n showAlertDialog({\r\n msg: \"Maximum upload is 1 file(s)\",\r\n type: \"error\",\r\n posText: \"Got it\",\r\n variation: \"alert\",\r\n });\r\n };\r\n\r\n const removeFile = (index) => {\r\n setIsRefreshingAttach(true);\r\n var tmp = attachmentFiles;\r\n tmp.splice(index, 1);\r\n setAttachmentFiles(tmp);\r\n setTimeout(() => {\r\n setIsRefreshingAttach(false);\r\n }, 3000);\r\n };\r\n /* Files */\r\n\r\n //view builders\r\n const BuildListPublications = () => {\r\n if (!isGettingPublications) {\r\n if (!isErrorPublications) {\r\n if (searchQuery.trim().length === 0) {\r\n if (\r\n publications.filter((doc) => doc.FLAG === \"published\").length > 0\r\n ) {\r\n return (\r\n
\r\n {publications\r\n .filter((doc) => doc.FLAG === \"published\")\r\n .map((doc) => (\r\n {\r\n setSelectedPublication(doc);\r\n setIsOpenViewPubDialog(true);\r\n }}\r\n />\r\n ))}\r\n
\r\n );\r\n } else {\r\n return (\r\n
No publications
\r\n );\r\n }\r\n } else {\r\n //search paramenters exist\r\n if (filteredListPublications.length > 0) {\r\n return (\r\n
\r\n {filteredListPublications.map((doc, index) => (\r\n {\r\n setSelectedPublication(doc);\r\n setIsOpenViewPubDialog(true);\r\n }}\r\n />\r\n ))}\r\n
\r\n );\r\n } else {\r\n return (\r\n
No user found
\r\n );\r\n }\r\n }\r\n } else {\r\n return (\r\n
\r\n
\r\n
Failed to load pubcalitions
\r\n \r\n
\r\n
\r\n );\r\n }\r\n } else {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n };\r\n\r\n const BuildTabs = () => {\r\n return (\r\n
\r\n {\r\n setActiveTab(\"all\");\r\n }}\r\n >\r\n
All Publications
\r\n
\r\n {sessionUser && (sessionUser.ROLEID === 1 || sessionUser.ROLEID === 2) && (\r\n {\r\n setActiveTab(\"draft\");\r\n }}\r\n >\r\n
Drafts
\r\n \r\n )}\r\n {sessionUser && (sessionUser.ROLEID === 1 || sessionUser.ROLEID === 2) && (\r\n {\r\n setActiveTab(\"new\");\r\n }}\r\n >\r\n
\r\n
\r\n \"+\"\r\n
\r\n New Publication\r\n
\r\n \r\n )}\r\n \r\n );\r\n };\r\n\r\n const BuildSearchView = () => {\r\n if (activeTab === \"all\")\r\n return (\r\n
\r\n
\r\n {\r\n setSearchQuery(e.target.value);\r\n }}\r\n />\r\n
\r\n
\r\n );\r\n else return <>;\r\n };\r\n\r\n const BuildTabViews = () => {\r\n if (activeTab === \"all\") {\r\n return BuildListPublications();\r\n } else if (activeTab === \"draft\") {\r\n return BuildListDraftPublications();\r\n } else if (activeTab === \"new\") {\r\n return BuildNewPublicationView();\r\n }\r\n };\r\n\r\n const BuildListDraftPublications = () => {\r\n if (!isGettingPublications) {\r\n if (!isErrorPublications) {\r\n if (publications.filter((doc) => doc.FLAG === \"draft\").length > 0) {\r\n return (\r\n
\r\n {publications\r\n .filter((doc) => doc.FLAG === \"draft\")\r\n .map((doc) => (\r\n {\r\n setSelectedPublication(doc);\r\n setIsOpenViewPubDialog(true);\r\n }}\r\n />\r\n ))}\r\n
\r\n );\r\n } else {\r\n return
No drafts
;\r\n }\r\n } else {\r\n return (\r\n
\r\n
\r\n
Failed to load pubcalitions
\r\n \r\n
\r\n
\r\n );\r\n }\r\n } else {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n };\r\n\r\n const BuildNewPublicationView = () => {\r\n return (\r\n
\r\n

New Publication

\r\n
\r\n
\r\n {\r\n setNewPublicationTitle(e.target.value);\r\n }}\r\n />\r\n
\r\n\r\n
\r\n
PDF File
\r\n
\r\n
\r\n {/* */}\r\n \r\n \r\n \r\n
\r\n
\r\n {(() => {\r\n if (!isRefreshingAttach)\r\n if (attachmentFiles.length > 0) {\r\n return attachmentFiles.map((file, index) => (\r\n {\r\n removeFile(index);\r\n }}\r\n />\r\n ));\r\n } else {\r\n return (\r\n
No attachments
\r\n );\r\n }\r\n else {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n })()}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n );\r\n };\r\n\r\n return (\r\n
\r\n \r\n
\r\n

Publications

\r\n
\r\n {BuildTabs()}\r\n {BuildSearchView()}\r\n {BuildTabViews()}\r\n
\r\n
\r\n {\r\n setIsOpenNotification(true);\r\n }}\r\n />\r\n\r\n {\r\n setIsOpenNotification(false);\r\n }}\r\n isOpen={isOPenNotification}\r\n />\r\n\r\n {\r\n getPublications();\r\n }}\r\n setDocument={setSelectedPublication}\r\n isOpen={isOpenViewPubDialog}\r\n onClose={() => {\r\n setIsOpenViewPubDialog(false);\r\n }}\r\n />\r\n\r\n {\r\n setIsOpenAlertDialog(false);\r\n }}\r\n positiveButtonText={alertDialogPosBtnText}\r\n negativeButtonText={alertDialogNegBtnText}\r\n />\r\n
\r\n );\r\n};\r\n\r\nexport default Publications;\r\n","import React from \"react\";\r\nimport moment from \"moment\";\r\nimport \"./EnquiryItem.css\";\r\n\r\nconst EnquiryItem = ({title,date,onClick}) => {\r\n return (\r\n
\r\n
{title}
\r\n
{moment(date).format(\"D-MMM-YYYY hh:mma\")}
\r\n
\r\n );\r\n};\r\n\r\nexport default EnquiryItem;\r\n","import axios from \"axios\";\r\nimport { BACKEND_URL } from \"../../Config\";\r\nconst _apiKey = require(\"../apiKey.json\")?.apiKey;\r\n\r\nexport const getAllEnquiriesApi = async ({ token }) => {\r\n const headers = {\r\n Authorization: \"Bearer my-token\",\r\n userToken: token,\r\n apiKey: _apiKey,\r\n };\r\n\r\n var res = await axios\r\n .get(BACKEND_URL + \"enquiries\", { headers: headers })\r\n .catch((e) => {\r\n console.log(\"***** get enquiries api error *****\", e);\r\n })\r\n .catch((e) => {\r\n console.log(\"***** get enquiries api error *****\", e);\r\n });\r\n if (typeof res !== \"undefined\") {\r\n if (parseInt(res.status) === 200 && res.data.message !== \"unauthorized\") {\r\n return res.data;\r\n } else if (\r\n parseInt(res.status) === 200 &&\r\n res.data.message === \"unauthorized\"\r\n ) {\r\n console.log(\"***** session expired \");\r\n return { message: \"session expired\", data: {} };\r\n } else {\r\n console.log(\r\n \"***** get enquiries api error with status code ***** \" + res.status\r\n );\r\n return { message: \"error \" + res.status, data: {} };\r\n }\r\n } else return { message: \"server error\", data: {} };\r\n};\r\n\r\nexport const postEnquiryApi = async ({ data, token }) => {\r\n const headers = {\r\n Authorization: \"Bearer my-token\",\r\n userToken: token,\r\n apiKey: _apiKey,\r\n };\r\n\r\n console.log(\"***** files are \" + data.FILES);\r\n let formData = new FormData();\r\n var date = new Date();\r\n var dateTime =\r\n date.getFullYear() +\r\n \"-\" +\r\n date.getMonth() +\r\n \"-\" +\r\n date.getDay() +\r\n \"_\" +\r\n date.getHours() +\r\n \"-\" +\r\n date.getMinutes() +\r\n \"-\" +\r\n date.getSeconds();\r\n\r\n formData.append(\"ENQUIRYTITLE\", data.ENQUIRYTITLE);\r\n formData.append(\"ENQUIRYCONTENT\", data.ENQUIRYCONTENT);\r\n formData.append(\"DATETIME\", dateTime);\r\n formData.append(\"USERID\", data.USERID);\r\n formData.append(\"ACCESSIBILITY\", data.ACCESSIBILITY);\r\n formData.append(\"BANKID\", data.BANKID);\r\n formData.append(\"QUERYTYPEID\", data.QUERYTYPEID);\r\n formData.append(\"HASATTACHMENT\", data.FILES.length > 0 ? 1 : 0);\r\n\r\n data.FILES.forEach((item) => {\r\n console.log(\"*** appending\", item);\r\n formData.append(\"file\", item);\r\n });\r\n\r\n var res = await axios\r\n .post(BACKEND_URL + \"enquiries\", formData, { headers: headers })\r\n .catch((e) => {\r\n console.log(\"***** post enquiry api error *****\", e);\r\n })\r\n .catch((e) => {\r\n console.log(\"***** post enquiry api error *****\", e);\r\n });\r\n if (typeof res !== \"undefined\") {\r\n if (parseInt(res.status) === 200) return res.data;\r\n else {\r\n console.log(\r\n \"***** post enquiry api error with status code ***** \" + res.status\r\n );\r\n return { message: \"error \" + res.status, data: {} };\r\n }\r\n } else return { message: \"server error\", data: {} };\r\n};\r\n\r\nexport const updateEnquiryApi = async ({ data, token }) => {\r\n const headers = {\r\n Authorization: \"Bearer my-token\",\r\n userToken: token,\r\n apiKey: _apiKey,\r\n };\r\n\r\n var res = await axios\r\n .patch(BACKEND_URL + \"enquiries\", data, { headers: headers })\r\n .catch((e) => {\r\n console.log(\"***** update enquiries api error *****\", e);\r\n })\r\n .catch((e) => {\r\n console.log(\"***** update enquiries api error *****\", e);\r\n });\r\n if (typeof res !== \"undefined\") {\r\n if (parseInt(res.status) === 200) return res.data;\r\n else {\r\n console.log(\r\n \"***** update enquiries api error with status code ***** \" + res.status\r\n );\r\n return { message: \"error \" + res.status, data: {} };\r\n }\r\n } else return { message: \"server error\", data: {} };\r\n};\r\n\r\nexport const getEnquiryAttachmentsApi = async ({ token, enquiryId }) => {\r\n const headers = {\r\n Authorization: \"Bearer my-token\",\r\n userToken: token,\r\n apiKey: _apiKey,\r\n };\r\n\r\n var res = await axios\r\n .get(BACKEND_URL + `enquiries/attachments/${enquiryId}`, {\r\n headers: headers,\r\n })\r\n .catch((e) => {\r\n console.log(\"***** get enquiry attachments api error *****\", e);\r\n })\r\n .catch((e) => {\r\n console.log(\"***** get enquiry attachments api error *****\", e);\r\n });\r\n if (typeof res !== \"undefined\") {\r\n if (parseInt(res.status) === 200) return res.data;\r\n else {\r\n console.log(\r\n \"***** get enquiry attachments api error with status code ***** \" +\r\n res.status\r\n );\r\n return { message: \"error \" + res.status, data: {} };\r\n }\r\n } else return { message: \"server error\", data: {} };\r\n};\r\n","import React, { useState, useEffect, useRef } from \"react\";\r\nimport moment from \"moment\";\r\nimport { getEnquiryAttachmentsApi } from \"../../../static/ApiClient/EnquiriesApi\";\r\nimport {\r\n getEnquiriesQueriesApi,\r\n postQueryApi,\r\n updateQueryApi,\r\n} from \"../../../static/ApiClient/QueriesApi\";\r\nimport QueriesContainer from \"../../QueriesContainer/QueriesContainer\";\r\nimport QueryAttachment from \"../../QueryAttachment/QueryAttachment\";\r\nimport UserSelectDialog from \"../UserSelectDialog/UserSelectDialog\";\r\nimport AlertDialog from \"../AlertDialog/AlertDialog\";\r\nimport { useSession } from \"react-session-provider\";\r\n\r\nimport \"./ForumDialog.css\";\r\n\r\nconst ForumDialog = ({ isOpen, onClose, enquiry }) => {\r\n const [attachments, setAttachments] = useState([]);\r\n const [isOPenUserSelectDialog, setIsOpenUserSelectDialog] = useState(false);\r\n\r\n const [queries, setQueries] = useState([]);\r\n const [isLoadingQueries, setIsLoadingQueries] = useState(false);\r\n const [isErrorQueries, setIsErrorQueries] = useState(false);\r\n\r\n const [isOpenAlertDialog, setIsOpenAlertDialog] = useState(false);\r\n const [alertDialogVariation, setAlertDialogVariation] = useState(\"confirm\");\r\n const [alertDialogType, setAlertDialogType] = useState(\"warn\");\r\n const [alertDialogMessage, setAlertDialogMessage] = useState(\"\");\r\n const [alertDialogPosBtnText, setAlertDialogPosBtnText] = useState(\"\");\r\n const [alertDialogNegBtnText, setAlertDialogNegBtnText] = useState(\"\");\r\n\r\n const [queryContent, setQueryContent] = useState(\"\");\r\n const [queryTypeId, setQueryTypeId] = useState(1);\r\n const [quotedQuery, setQuotedQuery] = useState(null);\r\n const [isSendingQuery, setIsSendingQuery] = useState(false);\r\n const [isRefreshingAttach, setIsRefreshingAttach] = useState(false);\r\n\r\n const [nextAction, setNextAction] = useState(\"\");\r\n const [queryOnHold, setQueryOnHold] = useState(null);\r\n\r\n const [assignedToUser, setAssignedToUser] = useState(null);\r\n const [assignedQuery, setAssignedQuery] = useState(null);\r\n\r\n /* Files */\r\n const [attachmentFiles, setAttachmentFiles] = useState([]);\r\n /* Files */\r\n\r\n const { store = {}, setKey } = useSession();\r\n const { sessionUser, sessionUserToken } = store;\r\n\r\n //useEffect\r\n useEffect(() => {\r\n if (enquiry) {\r\n getAttachments();\r\n getEnquiryQueries();\r\n }\r\n }, [enquiry]);\r\n\r\n useEffect(() => {\r\n if (assignedToUser) assignQueryToUser();\r\n }, [assignedToUser]);\r\n\r\n //api calls\r\n const getAttachments = async () => {\r\n setAttachments([]);\r\n const res = await getEnquiryAttachmentsApi({\r\n token: sessionUserToken,\r\n enquiryId: enquiry.ENQUIRYID,\r\n });\r\n switch (res.message) {\r\n case \"success\":\r\n setAttachments(res.data);\r\n break;\r\n default:\r\n setAttachments([]);\r\n }\r\n };\r\n\r\n const getEnquiryQueries = async () => {\r\n setIsLoadingQueries(true);\r\n setQueries([]);\r\n const res = await getEnquiriesQueriesApi({\r\n token: sessionUserToken,\r\n id: enquiry.ENQUIRYID,\r\n });\r\n console.log(\"queries returned \", res);\r\n switch (res.message) {\r\n case \"success\":\r\n setIsErrorQueries(false);\r\n setQueries(res.data);\r\n break;\r\n case \"error\":\r\n setIsErrorQueries(true);\r\n setQueries([]);\r\n break;\r\n default:\r\n setQueries([]);\r\n }\r\n\r\n setIsLoadingQueries(false);\r\n };\r\n\r\n const postQuery = async () => {\r\n setIsSendingQuery(true);\r\n var data = {\r\n ENQUIRYID: enquiry ? enquiry.ENQUIRYID : null,\r\n DOCUMENTID: null,\r\n USERID: sessionUser.ID,\r\n QUERYCONTENT: queryContent,\r\n QUERYTYPEID: queryTypeId,\r\n QUOTEDQUERYID: quotedQuery ? quotedQuery.QUERYID : null,\r\n FILES: attachmentFiles,\r\n };\r\n\r\n const apiRes = await postQueryApi({ token: sessionUserToken, data: data });\r\n\r\n switch (apiRes.message) {\r\n case \"success\":\r\n setQueryContent(\"\");\r\n setQuotedQuery(null);\r\n setQueryTypeId(1);\r\n setIsRefreshingAttach(true);\r\n setAttachmentFiles([]);\r\n getEnquiryQueries();\r\n setTimeout(() => {\r\n setIsRefreshingAttach(false);\r\n }, 2000);\r\n\r\n break;\r\n default:\r\n console.log(\"***** error occurred\", apiRes);\r\n showAlertDialog({\r\n msg: \"An error occurred, failed to post\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n }\r\n setIsSendingQuery(false);\r\n };\r\n\r\n const deleteQuery = async (query) => {\r\n var obj = {\r\n QUERYID: query.QUERYID,\r\n FLAG: \"deleted\",\r\n };\r\n\r\n const apiRes = await updateQueryApi({ token: sessionUserToken, data: obj });\r\n\r\n switch (apiRes.message) {\r\n case \"success\":\r\n setQueryOnHold(null);\r\n showAlertDialog({\r\n msg: \"Query successfully deleted\",\r\n type: \"success\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n getEnquiryQueries();\r\n break;\r\n case \"error\":\r\n showAlertDialog({\r\n msg: \"An error occurred, failed to make changes\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n break;\r\n default:\r\n }\r\n };\r\n\r\n const assignQueryToUser = async () => {\r\n alert(\r\n `assigning query ${JSON.stringify(queryOnHold)} to user ${JSON.stringify(\r\n assignedToUser\r\n )}`\r\n );\r\n };\r\n\r\n //other methods\r\n const showAlertDialog = ({\r\n msg = \"\",\r\n type = \"\",\r\n posText = \"\",\r\n negText = \"\",\r\n variation = \"\",\r\n isFixed = false,\r\n }) => {\r\n setAlertDialogMessage(msg);\r\n setAlertDialogNegBtnText(negText);\r\n setAlertDialogPosBtnText(posText);\r\n setAlertDialogType(type);\r\n setAlertDialogVariation(variation);\r\n setIsOpenAlertDialog(true);\r\n };\r\n\r\n //other methods\r\n const handleClickAssignUser = (query) => {\r\n setIsOpenUserSelectDialog(true);\r\n };\r\n\r\n const confirmDeleteQuery = (query) => {\r\n setNextAction(\"deleteQuery\");\r\n setQueryOnHold(query);\r\n showAlertDialog({\r\n msg: \"Are you sure you want to delete this entry?\",\r\n type: \"warn\",\r\n posText: \"Yes, Delete\",\r\n negText: \"No\",\r\n variation: \"confirm\",\r\n });\r\n };\r\n\r\n //view builders\r\n const BuildHeader = () => {\r\n return (\r\n
\r\n
{enquiry.ENQUIRYTITLE}
\r\n
\r\n {enquiry.FIRSTNAME + \" \" + enquiry.LASTNAME}\r\n
\r\n
{enquiry.ENQUIRYCONTENT}
\r\n
\r\n {attachments.map((attachment) => (\r\n \r\n ))}\r\n
\r\n
\r\n
\r\n {enquiry.QUERYTYPE}\r\n
\r\n
\r\n
\r\n {moment(enquiry.DATEPOSTED).format(\"D-MMM-YYYY hh:mma\")}\r\n
\r\n
\r\n );\r\n };\r\n\r\n const BuildCommentsList = () => {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n };\r\n\r\n const getTagColorClass = () => {\r\n switch (enquiry.QUERYTYPE) {\r\n case \"complaint\":\r\n return \"al-bg-red\";\r\n case \"suggestion\":\r\n return \"al-bg-gray\";\r\n case \"comment\":\r\n return \"al-bg-blue\";\r\n case \"question\":\r\n return \"al-bg-yellow\";\r\n case \"reply\":\r\n return \"al-bg-green\";\r\n default:\r\n return \"al-bg-blue\";\r\n }\r\n };\r\n\r\n if (isOpen)\r\n return (\r\n
\r\n
\r\n
\r\n {BuildHeader()}\r\n {BuildCommentsList()}\r\n \r\n
\r\n\r\n {\r\n setIsOpenUserSelectDialog(false);\r\n }}\r\n />\r\n\r\n {\r\n if (nextAction === \"deleteQuery\") deleteQuery(queryOnHold);\r\n setIsOpenAlertDialog(false);\r\n }}\r\n onClose={() => {\r\n setIsOpenAlertDialog(false);\r\n }}\r\n positiveButtonText={alertDialogPosBtnText}\r\n negativeButtonText={alertDialogNegBtnText}\r\n />\r\n
\r\n );\r\n else return <>;\r\n};\r\n\r\nexport default ForumDialog;\r\n","import { React, useEffect, useState, useRef } from \"react\";\r\n\r\nimport Aside from \"../../components/Aside/Aside\";\r\nimport NotificationDialog from \"../../components/dialogs/NotificationDialog/NotificationDialog\";\r\nimport SideNav from \"../../components/SideNav/SideNav\";\r\nimport iconAdd from \"../../img/icons/ic_add_blue.png\";\r\nimport FormInput from \"../../components/Inputs/FormInput/FormInput\";\r\nimport FormButton from \"../../components/FormButton/FormButton\";\r\nimport Loader from \"../../components/Loader/Loader\";\r\nimport iconAttachmentBlue from \"../../img/icons/ic_attachment_black.png\";\r\nimport Tooltip from \"react-simple-tooltip\";\r\nimport OutlineButton from \"../../components/OutlineButton/OutlineButton\";\r\nimport AlertDialog from \"../../components/dialogs/AlertDialog/AlertDialog\";\r\nimport ActionIcon from \"../../components/ActionIcon/ActionIcon\";\r\nimport QueryAttachment from \"../../components/QueryAttachment/QueryAttachment\";\r\nimport { useSession } from \"react-session-provider\";\r\n// import Tooltip from \"react-simple-tooltip\";\r\n\r\nimport \"./Enquiries.css\";\r\nimport EnquiryItem from \"../../components/EnquiryItem/EnquiryItem\";\r\nimport ForumDialog from \"../../components/dialogs/ForumDialog/ForumDialog\";\r\nimport {\r\n getAllEnquiriesApi,\r\n postEnquiryApi,\r\n} from \"../../static/ApiClient/EnquiriesApi\";\r\nimport { getQueryTypesApi } from \"../../static/ApiClient/QueriesApi\";\r\nimport {\r\n validateFields,\r\n validateSelect,\r\n} from \"../../static/Validator/validator\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { signOutApi } from \"../../static/ApiClient/UsersApi\";\r\n\r\nconst Enquiries = () => {\r\n const [isOPenNotification, setIsOpenNotification] = useState(false);\r\n const [activeTab, setActiveTab] = useState(\"public\");\r\n\r\n const [isOpenForumDialog, setIsOpenForumDialog] = useState(false);\r\n\r\n const [isLoadingEnquiries, setIsLoadingEnquiries] = useState(false);\r\n const [enquiries, setEnquires] = useState([]);\r\n const [isErrorEnqruiries, setIsErrorEnquiries] = useState(false);\r\n const [selectedEnquiry, setSelectedEnquiry] = useState(null);\r\n const [queryTypes, setQueryTypes] = useState([]);\r\n\r\n const [isOpenAlertDialog, setIsOpenAlertDialog] = useState(false);\r\n const [alertDialogVariation, setAlertDialogVariation] = useState(\"confirm\");\r\n const [alertDialogType, setAlertDialogType] = useState(\"warn\");\r\n const [alertDialogMessage, setAlertDialogMessage] = useState(\"\");\r\n const [alertDialogPosBtnText, setAlertDialogPosBtnText] = useState(\"\");\r\n const [alertDialogNegBtnText, setAlertDialogNegBtnText] = useState(\"\");\r\n\r\n const [enquiryTitle, setEnquiryTitle] = useState(\"\");\r\n const [enquiryContent, setEnquiryContent] = useState(\"\");\r\n const [enquiryAccessibility, setEnquiryAccessibility] = useState(\"-1\");\r\n const [enquiryQueryType, setEnquiryQueryType] = useState(\"-1\");\r\n const [isSendingEnquiry, setIsSendingEnquiry] = useState(false);\r\n\r\n /* Files */\r\n const [attachmentFiles, setAttachmentFiles] = useState([]);\r\n const hiddenFileInput = useRef(null);\r\n const [isRefreshingAttach, setIsRefreshingAttach] = useState(false);\r\n /* Files */\r\n\r\n const queryPrivacy = [\r\n { display: \"Private\", value: 0 },\r\n { display: \"Pubilc\", value: 1 },\r\n ];\r\n\r\n const { store = {}, setKey, deleteKey } = useSession();\r\n const { sessionUser, sessionUserToken } = store;\r\n const history = useHistory();\r\n\r\n const [searchQuery, setSearchQuery] = useState(\"\");\r\n const [filteredListEnquiries, setFilteredListEnquiries] = useState([]);\r\n\r\n //useEffects\r\n\r\n //page security\r\n useEffect(() => {\r\n if (sessionUser) {\r\n // if (sessionUser.ROLEID === 1 || sessionUser.ROLEID === 2) {\r\n // console.log(\"session ok\");\r\n // } else {\r\n // history.push(\"/error\");\r\n // }\r\n } else {\r\n history.push(\"/\");\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n getQueryTypes();\r\n getEnquiries();\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (enquiries.length > 0) searchEnquiries();\r\n }, [searchQuery]);\r\n\r\n //api calls\r\n\r\n const getEnquiries = async () => {\r\n setIsLoadingEnquiries(true);\r\n\r\n const res = await getAllEnquiriesApi({ token: sessionUserToken });\r\n\r\n switch (res.message) {\r\n case \"success\":\r\n setIsErrorEnquiries(false);\r\n setEnquires(res.data);\r\n break;\r\n case \"session expired\":\r\n setIsErrorEnquiries(true);\r\n const apiRes = await signOutApi(sessionUserToken);\r\n if (apiRes.message === \"success\") {\r\n console.log(\"signout successful\");\r\n } else {\r\n console.log(apiRes.message);\r\n }\r\n //clear session\r\n deleteKey(\"sessionUser\");\r\n deleteKey(\"sessionUserToken\");\r\n history.push(\"/\");\r\n break;\r\n case \"error\":\r\n setIsErrorEnquiries(true);\r\n break;\r\n default:\r\n setIsErrorEnquiries(true);\r\n break;\r\n }\r\n setIsLoadingEnquiries(false);\r\n };\r\n\r\n const getQueryTypes = async () => {\r\n const res = await getQueryTypesApi();\r\n switch (res.message) {\r\n case \"success\":\r\n var tmp = [];\r\n res.data.forEach((queryType) => {\r\n tmp.push({\r\n display: queryType.QUERYTYPE,\r\n value: queryType.QUERYTYPEID,\r\n });\r\n });\r\n setQueryTypes(tmp);\r\n break;\r\n case \"error\":\r\n break;\r\n default:\r\n break;\r\n }\r\n };\r\n\r\n const postEnquiry = async () => {\r\n setIsSendingEnquiry(true);\r\n\r\n var data = {\r\n BANKID: sessionUser.BANKID,\r\n ACCESSIBILITY: parseInt(enquiryAccessibility),\r\n USERID: sessionUser.ID,\r\n ENQUIRYCONTENT: enquiryContent,\r\n ENQUIRYTITLE: enquiryTitle,\r\n QUERYTYPEID: enquiryQueryType,\r\n FILES: attachmentFiles,\r\n };\r\n\r\n const res = await postEnquiryApi({ token: sessionUserToken, data: data });\r\n\r\n switch (res.message) {\r\n case \"success\":\r\n showAlertDialog({\r\n msg: \"Query posted successfully\",\r\n type: \"success\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n getEnquiries();\r\n\r\n setEnquiryTitle(\"\");\r\n setEnquiryContent(\"\");\r\n setEnquiryQueryType(\"-1\");\r\n setEnquiryAccessibility(\"-1\");\r\n\r\n setIsRefreshingAttach(true);\r\n setAttachmentFiles([]);\r\n setTimeout(() => {\r\n setIsRefreshingAttach(false);\r\n }, 2000);\r\n break;\r\n default:\r\n showAlertDialog({\r\n msg: \"An error occurred, failed to post query\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n }\r\n\r\n setIsSendingEnquiry(false);\r\n };\r\n\r\n //other methods\r\n const validatePostEnquiry = () => {\r\n if (validateFields([enquiryTitle])) {\r\n if (validateFields([enquiryContent])) {\r\n if (validateSelect(enquiryQueryType)) {\r\n if (validateSelect(enquiryAccessibility)) {\r\n postEnquiry();\r\n } else {\r\n showAlertDialog({\r\n msg: \"Choose a query privacy\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n }\r\n } else {\r\n showAlertDialog({\r\n msg: \"Chose a query type\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n }\r\n } else\r\n showAlertDialog({\r\n msg: \"Provide query details\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n } else\r\n showAlertDialog({\r\n msg: \"Provide query title\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n };\r\n\r\n const searchEnquiries = () => {\r\n if (searchQuery.trim() !== \"\") {\r\n var temp = [];\r\n if (activeTab === \"public\") {\r\n temp = enquiries\r\n .filter(\r\n (enq) => enq.ACCESSIBILITY === 1 && (enq.FLAG ?? \"\") !== \"deleted\"\r\n )\r\n .filter(\r\n (enq) =>\r\n (enq.ENQUIRYTITLE ?? \"\")\r\n .toLowerCase()\r\n .includes(searchQuery.trim().toLowerCase()) ||\r\n (enq.ENQUIRYCONTENT ?? \"\")\r\n .toLowerCase()\r\n .includes(searchQuery.trim().toLowerCase())\r\n );\r\n } else if (activeTab === \"private\") {\r\n temp = enquiries\r\n .filter(\r\n (enq) => enq.ACCESSIBILITY === 0 && (enq.FLAG ?? \"\") !== \"deleted\"\r\n )\r\n .filter(\r\n (enq) =>\r\n (enq.ENQUIRYTITLE ?? \"\")\r\n .toLowerCase()\r\n .includes(searchQuery.trim().toLowerCase()) ||\r\n (enq.ENQUIRYCONTENT ?? \"\")\r\n .toLowerCase()\r\n .includes(searchQuery.trim().toLowerCase())\r\n );\r\n }\r\n setFilteredListEnquiries(temp);\r\n } else {\r\n setFilteredListEnquiries([]);\r\n }\r\n };\r\n\r\n /* Files */\r\n const handleFileChange = (e) => {\r\n setIsRefreshingAttach(true);\r\n\r\n if (typeof e.target.files[0] !== \"undefined\") {\r\n //check duplicate\r\n let isDuplicate = false;\r\n attachmentFiles.forEach((file, index) => {\r\n if (file.name === e.target.files[0].name) {\r\n showAlertDialog({\r\n msg: \"File has already been chosen\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n isDuplicate = true;\r\n }\r\n });\r\n\r\n if (!isDuplicate) {\r\n const fileUploaded = e.target.files[0];\r\n const extension = fileUploaded.name.split(\".\").pop();\r\n\r\n if (extension === \"pdf\") {\r\n var tmp = attachmentFiles;\r\n tmp.push(fileUploaded);\r\n setTimeout(() => {\r\n setAttachmentFiles(tmp);\r\n }, 500);\r\n } else\r\n showAlertDialog({\r\n msg: \"Invalid file type, only PDF format is allowed\",\r\n type: \"error\",\r\n posText: \"Got it\",\r\n variation: \"alert\",\r\n });\r\n }\r\n }\r\n setTimeout(() => {\r\n setIsRefreshingAttach(false);\r\n }, 3000);\r\n };\r\n\r\n const showAlertDialog = ({\r\n msg = \"\",\r\n type = \"\",\r\n posText = \"\",\r\n negText = \"\",\r\n variation = \"\",\r\n isFixed = false,\r\n }) => {\r\n setAlertDialogMessage(msg);\r\n setAlertDialogNegBtnText(negText);\r\n setAlertDialogPosBtnText(posText);\r\n setAlertDialogType(type);\r\n setAlertDialogVariation(variation);\r\n setIsOpenAlertDialog(true);\r\n };\r\n\r\n const chooseFile = () => {\r\n hiddenFileInput.current.value = \"\";\r\n if (attachmentFiles.length < 3) {\r\n //maximum files\r\n hiddenFileInput.current.click();\r\n } else\r\n showAlertDialog({\r\n msg: \"Maximum upload is 3 files\",\r\n type: \"error\",\r\n posText: \"Got it\",\r\n variation: \"alert\",\r\n });\r\n };\r\n\r\n const removeFile = (index) => {\r\n setIsRefreshingAttach(true);\r\n var tmp = attachmentFiles;\r\n tmp.splice(index, 1);\r\n setAttachmentFiles(tmp);\r\n setTimeout(() => {\r\n setIsRefreshingAttach(false);\r\n }, 3000);\r\n };\r\n /* Files */\r\n\r\n //view builders\r\n\r\n const BuildSearchView = () => {\r\n if (activeTab === \"private\" || activeTab === \"public\") {\r\n return (\r\n
\r\n
\r\n {\r\n setSearchQuery(e.target.value);\r\n }}\r\n />\r\n
\r\n
\r\n );\r\n } else return <>;\r\n };\r\n\r\n const BuildTabViews = () => {\r\n switch (activeTab) {\r\n case \"public\":\r\n return BuildTabViewPublicEquiries();\r\n case \"private\":\r\n return BuildTabViewPrivateEnquiries();\r\n case \"new\":\r\n return BuildTabViewNewEnquiry();\r\n default:\r\n return <>;\r\n }\r\n };\r\n\r\n const BuildTabViewPublicEquiries = () => {\r\n if (!isLoadingEnquiries) {\r\n if (!isErrorEnqruiries) {\r\n if (searchQuery !== \"\" && activeTab === \"public\") {\r\n //seach parameters exist\r\n if (filteredListEnquiries.length > 0) {\r\n return (\r\n
\r\n {filteredListEnquiries.map((enq) => (\r\n {\r\n setSelectedEnquiry(enq);\r\n setIsOpenForumDialog(true);\r\n }}\r\n title={enq.ENQUIRYTITLE}\r\n date={enq.DATEPOSTED}\r\n />\r\n ))}\r\n
\r\n );\r\n } else {\r\n return (\r\n
Nothing found!
\r\n );\r\n }\r\n } else {\r\n if (\r\n enquiries.filter(\r\n (enq) => enq.ACCESSIBILITY === 1 && (enq.FLAG ?? \"\") !== \"deleted\"\r\n ).length > 0\r\n ) {\r\n return (\r\n
\r\n {enquiries\r\n .filter(\r\n (enq) =>\r\n enq.ACCESSIBILITY === 1 && (enq.FLAG ?? \"\") !== \"deleted\"\r\n )\r\n .map((enq) => (\r\n {\r\n setSelectedEnquiry(enq);\r\n setIsOpenForumDialog(true);\r\n }}\r\n title={enq.ENQUIRYTITLE}\r\n date={enq.DATEPOSTED}\r\n />\r\n ))}\r\n
\r\n );\r\n } else {\r\n return (\r\n
\r\n No public enquiries, click on private enquiries to see your\r\n private enquiries\r\n
\r\n );\r\n }\r\n }\r\n } else {\r\n return (\r\n
\r\n
\r\n
Failed to load enquiries
\r\n \r\n
\r\n
\r\n );\r\n }\r\n } else {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n };\r\n\r\n const BuildTabViewPrivateEnquiries = () => {\r\n if (!isLoadingEnquiries) {\r\n if (!isErrorEnqruiries) {\r\n if (searchQuery !== \"\" && activeTab === \"private\") {\r\n //seach parameters exist\r\n if (filteredListEnquiries.length > 0) {\r\n return (\r\n
\r\n {filteredListEnquiries.map((enq) => (\r\n {\r\n setSelectedEnquiry(enq);\r\n setIsOpenForumDialog(true);\r\n }}\r\n title={enq.ENQUIRYTITLE}\r\n date={enq.DATEPOSTED}\r\n />\r\n ))}\r\n
\r\n );\r\n } else {\r\n return (\r\n
Nothing found!
\r\n );\r\n }\r\n } else {\r\n if (sessionUser.ROLEID === 1 || sessionUser.ROLEID === 2) {\r\n //is administrator or DIB\r\n if (\r\n enquiries.filter(\r\n (enq) =>\r\n enq.ACCESSIBILITY === 0 && (enq.FLAG ?? \"\") !== \"deleted\"\r\n ).length > 0\r\n ) {\r\n return (\r\n
\r\n {enquiries\r\n .filter(\r\n (enq) =>\r\n enq.ACCESSIBILITY === 0 &&\r\n (enq.FLAG ?? \"\") !== \"deleted\"\r\n )\r\n .map((enq) => (\r\n {\r\n setSelectedEnquiry(enq);\r\n setIsOpenForumDialog(true);\r\n }}\r\n title={enq.ENQUIRYTITLE}\r\n date={enq.DATEPOSTED}\r\n />\r\n ))}\r\n
\r\n );\r\n } else {\r\n return (\r\n
\r\n No private enquiries by any user\r\n
\r\n );\r\n }\r\n } else {\r\n //not admin or dib\r\n if (\r\n enquiries.filter(\r\n (enq) =>\r\n enq.ACCESSIBILITY === 0 && enq.ENQUIREDBY === sessionUser.ID\r\n ).length > 0\r\n ) {\r\n return (\r\n
\r\n {enquiries\r\n .filter(\r\n (enq) =>\r\n enq.ACCESSIBILITY === 0 &&\r\n enq.ENQUIREDBY === sessionUser.ID\r\n )\r\n .map((enq) => (\r\n {\r\n setSelectedEnquiry(enq);\r\n setIsOpenForumDialog(true);\r\n }}\r\n title={enq.ENQUIRYTITLE}\r\n date={enq.DATEPOSTED}\r\n />\r\n ))}\r\n
\r\n );\r\n } else {\r\n return (\r\n
\r\n No private enquiries, click on new enquiry to post a new one\r\n or go to public enquires to see what others have enquired.\r\n
\r\n );\r\n }\r\n }\r\n }\r\n } else {\r\n return (\r\n
\r\n
\r\n
Failed to load enquiries
\r\n \r\n
\r\n
\r\n );\r\n }\r\n } else {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n };\r\n\r\n const BuildTabViewNewEnquiry = () => {\r\n return (\r\n
\r\n

New Query

\r\n
\r\n
\r\n {\r\n setEnquiryTitle(e.target.value);\r\n }}\r\n />\r\n
\r\n
\r\n {\r\n setEnquiryQueryType(e.target.value);\r\n }}\r\n />\r\n
\r\n\r\n
\r\n {\r\n setEnquiryAccessibility(e.target.value);\r\n }}\r\n />\r\n
\r\n\r\n
\r\n {\r\n setEnquiryContent(e.target.value);\r\n }}\r\n />\r\n
\r\n
\r\n
Attachments
\r\n
\r\n
\r\n {/* */}\r\n \r\n \r\n \r\n
\r\n
\r\n {(() => {\r\n if (!isRefreshingAttach)\r\n if (attachmentFiles.length > 0) {\r\n return attachmentFiles.map((file, index) => (\r\n {\r\n removeFile(index);\r\n }}\r\n />\r\n ));\r\n } else {\r\n return (\r\n
No attachments
\r\n );\r\n }\r\n else {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n })()}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n };\r\n\r\n const BuildTabs = () => {\r\n return (\r\n
\r\n {\r\n setSearchQuery(\"\");\r\n setFilteredListEnquiries([]);\r\n setActiveTab(\"public\");\r\n }}\r\n >\r\n
Public Enquiries
\r\n {/*
120
*/}\r\n
\r\n {\r\n setSearchQuery(\"\");\r\n setFilteredListEnquiries([]);\r\n setActiveTab(\"private\");\r\n }}\r\n >\r\n
Private Enquiries
\r\n {/*
5
*/}\r\n \r\n {\r\n setActiveTab(\"new\");\r\n }}\r\n >\r\n
\r\n
\r\n \"+\"\r\n
\r\n New Query\r\n
\r\n \r\n \r\n );\r\n };\r\n\r\n return (\r\n
\r\n \r\n
\r\n

Enquiries

\r\n
\r\n {BuildTabs()}\r\n {BuildSearchView()}\r\n {BuildTabViews()}\r\n
\r\n
\r\n {\r\n setIsOpenNotification(true);\r\n }}\r\n />\r\n\r\n {\r\n setIsOpenNotification(false);\r\n }}\r\n isOpen={isOPenNotification}\r\n />\r\n\r\n {\r\n setSelectedEnquiry(null);\r\n setIsOpenForumDialog(false);\r\n }}\r\n />\r\n\r\n {\r\n setIsOpenAlertDialog(false);\r\n }}\r\n positiveButtonText={alertDialogPosBtnText}\r\n negativeButtonText={alertDialogNegBtnText}\r\n />\r\n
\r\n );\r\n};\r\n\r\nexport default Enquiries;\r\n","import { React, useState, useEffect } from \"react\";\r\n\r\nimport Aside from \"../../components/Aside/Aside\";\r\nimport NotificationDialog from \"../../components/dialogs/NotificationDialog/NotificationDialog\";\r\nimport FormButton from \"../../components/FormButton/FormButton\";\r\nimport FormInput from \"../../components/Inputs/FormInput/FormInput\";\r\nimport Loader from \"../../components/Loader/Loader\";\r\nimport SideNav from \"../../components/SideNav/SideNav\";\r\nimport { useSession } from \"react-session-provider\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport iconAvatar from \"../../img/icons/ic_avatar.png\";\r\nimport {\r\n validateAddress,\r\n validateFields,\r\n validatePassword,\r\n} from \"../../static/Validator/validator\";\r\nimport AlertDialog from \"../../components/dialogs/AlertDialog/AlertDialog\";\r\n// import Tooltip from \"react-simple-tooltip\";\r\nimport \"./Profile.css\";\r\nimport {\r\n changeUserPasswordApi,\r\n getUserInfoApi,\r\n updateUserApi,\r\n} from \"../../static/ApiClient/UsersApi\";\r\n\r\nconst Profile = () => {\r\n const [isOPenNotification, setIsOpenNotification] = useState(false);\r\n const [activeTab, setActiveTab] = useState(\"profileInfo\");\r\n const [isGettingUserInfo, setIsGettingUserInfo] = useState(false);\r\n\r\n const [currentPassword, setCurrentPassword] = useState(\"\");\r\n const [password1, setPassword1] = useState(\"\");\r\n const [password2, setPassword2] = useState(\"\");\r\n const [isChangingPassword, setIsChangingPassword] = useState(false);\r\n\r\n const [isOpenAlertDialog, setIsOpenAlertDialog] = useState(false);\r\n const [alertDialogVariation, setAlertDialogVariation] = useState(\"confirm\");\r\n const [alertDialogType, setAlertDialogType] = useState(\"warn\");\r\n const [alertDialogMessage, setAlertDialogMessage] = useState(\"\");\r\n const [alertDialogPosBtnText, setAlertDialogPosBtnText] = useState(\"\");\r\n const [alertDialogNegBtnText, setAlertDialogNegBtnText] = useState(\"\");\r\n const [isFixedAlertDialog, setIsFixedAlertDialog] = useState(false);\r\n\r\n const [address, setAddress] = useState(\"\");\r\n const [accountNumber, setAccountNumber] = useState(\"\");\r\n const [phone, setPhone] = useState(\"\");\r\n const [isUpdatingProfile, setpdatingProfile] = useState(false);\r\n const [userProfileInfo, setUserProfileInfo] = useState(null);\r\n\r\n const { store = {}, setKey } = useSession();\r\n const { sessionUser, sessionUserToken } = store;\r\n const history = useHistory();\r\n\r\n //use effects\r\n useEffect(() => {\r\n getUserInfo();\r\n }, []);\r\n\r\n //page security\r\n useEffect(() => {\r\n if (sessionUser) {\r\n // if (sessionUser.ROLEID === 1 || sessionUser.ROLEID === 2) {\r\n // console.log(\"session ok\");\r\n // } else {\r\n // history.push(\"/error\");\r\n // }\r\n } else {\r\n history.push(\"/\");\r\n }\r\n }, []);\r\n\r\n //api calls\r\n const changePassword = async () => {\r\n setIsChangingPassword(true);\r\n\r\n let obj = {\r\n USERID: sessionUser.ID,\r\n CURRENTPASSWORD: currentPassword,\r\n NEWPASSWORD: password1,\r\n };\r\n\r\n const apiRes = await changeUserPasswordApi({\r\n token: sessionUserToken,\r\n data: obj,\r\n });\r\n\r\n switch (apiRes.message) {\r\n case \"success\":\r\n setPassword1(\"\");\r\n setPassword2(\"\");\r\n setCurrentPassword(\"\");\r\n\r\n showAlertDialog({\r\n msg: \"Password changed successfully\",\r\n type: \"success\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n break;\r\n case \"no match\":\r\n showAlertDialog({\r\n msg: \"Incorrect current password provided\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n break;\r\n case \"error\":\r\n showAlertDialog({\r\n msg: \"An error occurred, try again later\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n break;\r\n default:\r\n showAlertDialog({\r\n msg: apiRes.message,\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n }\r\n\r\n setIsChangingPassword(false);\r\n };\r\n\r\n const updateUserInfo = async () => {\r\n setIsGettingUserInfo(true);\r\n\r\n var obj = {\r\n ACCOUNTNUMBER: accountNumber,\r\n PHONENUMBER: phone,\r\n ADDRESS: address,\r\n ID: sessionUser.ID,\r\n };\r\n\r\n const apiRes = await updateUserApi(obj);\r\n\r\n switch (apiRes.message) {\r\n case \"success\":\r\n showAlertDialog({\r\n msg: \"Info updated successfully\",\r\n type: \"success\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n break;\r\n case \"error\":\r\n showAlertDialog({\r\n msg: \"An error occurred\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n break;\r\n default:\r\n showAlertDialog({\r\n msg: apiRes.message,\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n }\r\n\r\n setIsGettingUserInfo(false);\r\n };\r\n\r\n const getUserInfo = async () => {\r\n setIsGettingUserInfo(true);\r\n\r\n const apiRes = await getUserInfoApi({\r\n token: sessionUserToken,\r\n id: sessionUser.ID,\r\n });\r\n\r\n switch (apiRes.message) {\r\n case \"success\":\r\n setUserProfileInfo(apiRes.data);\r\n setAccountNumber(apiRes.data.ACCOUNTNUMBER);\r\n setPhone(apiRes.data.PHONENUMBER);\r\n setAddress(apiRes.data.ADDRESS);\r\n break;\r\n case \"error\":\r\n showAlertDialog({\r\n msg: \"An error occurred\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n break;\r\n default:\r\n showAlertDialog({\r\n msg: apiRes.message,\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n }\r\n\r\n setIsGettingUserInfo(false);\r\n };\r\n\r\n //other methods\r\n const validateChangePassword = () => {\r\n if (validateFields([currentPassword])) {\r\n if (validateFields([password1])) {\r\n if (validatePassword(password1)) {\r\n if (validateFields([password2])) {\r\n if (password2 === password1) {\r\n changePassword();\r\n } else\r\n showAlertDialog({\r\n msg: \"Passwords do not math\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n } else\r\n showAlertDialog({\r\n msg: \"Confirm your new password\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n } else\r\n showAlertDialog({\r\n msg: \"Please provide a valid password. Your password should be at least 6 charactes long\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n } else\r\n showAlertDialog({\r\n msg: \"Provide a new password\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n } else\r\n showAlertDialog({\r\n msg: \"Please provide a valid password. Your password should be at least 6 charactes long\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n };\r\n\r\n const validateUpdateProfile = () => {\r\n if (validateFields([address])) {\r\n if (validateAddress(address)) {\r\n updateUserInfo();\r\n } else\r\n showAlertDialog({\r\n msg: \"Please provide a valid address including your country.Example, Kinondoni Dar es salaam Tanzania\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n } else\r\n showAlertDialog({\r\n msg: \"Provide your addres\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n };\r\n\r\n //show dialog\r\n const showAlertDialog = ({\r\n msg = \"\",\r\n type = \"\",\r\n posText = \"\",\r\n negText = \"\",\r\n variation = \"\",\r\n isFixed = false,\r\n }) => {\r\n setAlertDialogMessage(msg);\r\n setAlertDialogNegBtnText(negText);\r\n setAlertDialogPosBtnText(posText);\r\n setAlertDialogType(type);\r\n setAlertDialogVariation(variation);\r\n setIsFixedAlertDialog(isFixed);\r\n setIsOpenAlertDialog(true);\r\n };\r\n\r\n //view builders\r\n\r\n const BuildTabs = () => {\r\n return (\r\n
\r\n {\r\n setActiveTab(\"profileInfo\");\r\n }}\r\n >\r\n Personal Information\r\n
\r\n {\r\n setActiveTab(\"changePassword\");\r\n }}\r\n >\r\n Change Password\r\n \r\n \r\n );\r\n };\r\n\r\n const BuildTabViews = () => {\r\n switch (activeTab) {\r\n case \"profileInfo\":\r\n return BuildProfileInfoView();\r\n case \"changePassword\":\r\n return BuildPasswordChangeView();\r\n default:\r\n return <>;\r\n }\r\n };\r\n\r\n const BuildProfileInfoView = () => {\r\n if (!isGettingUserInfo) {\r\n if (userProfileInfo) {\r\n return (\r\n
\r\n
\r\n
\r\n \"</\" />\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
First Name
\r\n
{userProfileInfo.FIRSTNAME}
\r\n
\r\n
\r\n
\r\n
\r\n
Middle Name
\r\n
{userProfileInfo.MIDDLENAME}
\r\n
\r\n
\r\n
\r\n
\r\n
Last Name
\r\n
{userProfileInfo.LASTNAME}
\r\n
\r\n
\r\n
\r\n
\r\n
Email
\r\n
{userProfileInfo.EMAIL}
\r\n
\r\n
\r\n
\r\n
\r\n
Bank
\r\n
{userProfileInfo.BANKNAME}
\r\n
\r\n
\r\n
\r\n
\r\n
I am
\r\n
{userProfileInfo.CATEGORYNAME}
\r\n
\r\n
\r\n\r\n
\r\n
Update my info
\r\n
\r\n\r\n
\r\n {\r\n setAccountNumber(e.target.value);\r\n }}\r\n />\r\n
\r\n
\r\n {\r\n setAddress(e.target.value);\r\n }}\r\n />\r\n
\r\n
\r\n {\r\n setPhone(e.target.value);\r\n }}\r\n />\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n } else return <>;\r\n } else {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n };\r\n\r\n const BuildPasswordChangeView = () => {\r\n return (\r\n
\r\n
\r\n
\r\n {\r\n setCurrentPassword(e.target.value);\r\n }}\r\n />\r\n
\r\n
\r\n
\r\n {\r\n setPassword1(e.target.value);\r\n }}\r\n />\r\n
\r\n
\r\n
\r\n {\r\n setPassword2(e.target.value);\r\n }}\r\n />\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n );\r\n };\r\n\r\n const BuildContent = () => {\r\n return (\r\n
\r\n {BuildTabs()}\r\n {BuildTabViews()}\r\n
\r\n );\r\n };\r\n return (\r\n
\r\n \r\n
\r\n

My Profile

\r\n {BuildContent()}\r\n
\r\n {\r\n setIsOpenNotification(true);\r\n }}\r\n />\r\n\r\n {\r\n setIsOpenNotification(false);\r\n }}\r\n isOpen={isOPenNotification}\r\n />\r\n\r\n {\r\n setIsOpenAlertDialog(false);\r\n }}\r\n positiveButtonText={alertDialogPosBtnText}\r\n negativeButtonText={alertDialogNegBtnText}\r\n />\r\n
\r\n );\r\n};\r\n\r\nexport default Profile;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { useParams, useHistory } from \"react-router-dom\";\r\nimport FormButton from \"../../components/FormButton/FormButton\";\r\nimport FormInput from \"../../components/Inputs/FormInput/FormInput\";\r\nimport {\r\n updateUserApi,\r\n resetPasswordByTokenApi,\r\n updateUserPasswordApi,\r\n} from \"../../static/ApiClient/UsersApi\";\r\nimport AlertDialog from \"../../components/dialogs/AlertDialog/AlertDialog\";\r\n\r\nimport \"./ChangePassword.css\";\r\nimport Loader from \"../../components/Loader/Loader\";\r\nimport {\r\n validateFields,\r\n validatePassword,\r\n} from \"../../static/Validator/validator\";\r\n\r\nconst ChangePassword = () => {\r\n const [isLoadingPage, setIsLoadingPage] = useState(false);\r\n const [isProcessing, setIsProcessing] = useState(false);\r\n const [isTokenInvalid, setIsTokenInvalid] = useState(false);\r\n const [isPasswordReset, setIsPasswordReset] = useState(false);\r\n const [errorMessage, setErrorMessage] = useState(\"\");\r\n\r\n const [isOpenAlertDialog, setIsOpenAlertDialog] = useState(false);\r\n const [alertDialogVariation, setAlertDialogVariation] = useState(\"confirm\");\r\n const [alertDialogType, setAlertDialogType] = useState(\"warn\");\r\n const [alertDialogMessage, setAlertDialogMessage] = useState(\"\");\r\n const [alertDialogPosBtnText, setAlertDialogPosBtnText] = useState(\"\");\r\n const [alertDialogNegBtnText, setAlertDialogNegBtnText] = useState(\"\");\r\n const [isFixedAlertDialog, setIsFixedAlertDialog] = useState(false);\r\n\r\n const [pass1, setPass1] = useState(\"\");\r\n const [pass2, setPass2] = useState(\"\");\r\n\r\n const [user, setUser] = useState(null);\r\n\r\n let { tokenKey } = useParams();\r\n const history = useHistory();\r\n\r\n useEffect(() => {\r\n checkTokenValidity();\r\n }, [tokenKey]);\r\n\r\n //api calls\r\n const checkTokenValidity = async () => {\r\n setIsLoadingPage(true);\r\n if (tokenKey) {\r\n const res = await resetPasswordByTokenApi({ TOKEN: tokenKey });\r\n\r\n switch (res.message) {\r\n case \"success\":\r\n setIsTokenInvalid(false);\r\n setUser(res.data);\r\n break;\r\n case \"expired\":\r\n setIsTokenInvalid(true);\r\n setErrorMessage(\"The password reset link has expired!\");\r\n break;\r\n case \"invalid\":\r\n setIsTokenInvalid(true);\r\n setErrorMessage(\"Invalid request made\");\r\n break;\r\n default:\r\n setIsTokenInvalid(true);\r\n setErrorMessage(\"Something went wrong, try again later\");\r\n }\r\n setIsLoadingPage(false);\r\n }\r\n };\r\n\r\n const changePassword = async () => {\r\n setIsProcessing(true);\r\n\r\n let obj = {\r\n ID:user.ID,\r\n PASSWORD:pass1,\r\n }\r\n\r\n const res = await updateUserPasswordApi(obj);\r\n\r\n switch (res.message) {\r\n case \"success\":\r\n setIsPasswordReset(true);\r\n showAlertDialog({\r\n msg: \"Your password has been reset successfully\",\r\n type: \"success\",\r\n posText: \"Go To Sign In\",\r\n variation: \"alert\",\r\n isFixed: true,\r\n });\r\n break;\r\n case \"error\":\r\n showAlertDialog({\r\n msg: \"An error occurred, try again later\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n break;\r\n default:\r\n showAlertDialog({\r\n msg: res.message,\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n }\r\n\r\n setIsProcessing(false);\r\n };\r\n\r\n //show dialog\r\n const showAlertDialog = ({\r\n msg = \"\",\r\n type = \"\",\r\n posText = \"\",\r\n negText = \"\",\r\n variation = \"\",\r\n isFixed = false,\r\n }) => {\r\n setAlertDialogMessage(msg);\r\n setAlertDialogNegBtnText(negText);\r\n setAlertDialogPosBtnText(posText);\r\n setAlertDialogType(type);\r\n setAlertDialogVariation(variation);\r\n setIsFixedAlertDialog(isFixed);\r\n setIsOpenAlertDialog(true);\r\n };\r\n\r\n const validateChangePass = () => {\r\n if (validateFields([pass1])) {\r\n if (validateFields([pass2])) {\r\n if (pass1 === pass2) {\r\n if (validatePassword(pass1)) {\r\n changePassword();\r\n } else\r\n showAlertDialog({\r\n msg: \"Please provide a valid password. Your password should be at least 6 charactes long\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n } else\r\n showAlertDialog({\r\n msg: \"Your passwords do not match\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n } else\r\n showAlertDialog({\r\n msg: \"Confirm new passowrd\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n } else\r\n showAlertDialog({\r\n msg: \"Provide new passowrd\",\r\n type: \"error\",\r\n posText: \"Ok\",\r\n variation: \"alert\",\r\n });\r\n };\r\n\r\n //view builders\r\n const BuildContent = () => {\r\n if (!isLoadingPage) {\r\n if (!isTokenInvalid) {\r\n return BuildChangePasswordForm();\r\n } else {\r\n return BuildInvalidRequest();\r\n }\r\n } else\r\n return (\r\n \r\n
Just a moment ...
\r\n
\r\n \r\n
\r\n \r\n );\r\n };\r\n\r\n const BuildInvalidRequest = () => {\r\n return (\r\n <>\r\n
Error!
\r\n
{errorMessage}
\r\n \r\n );\r\n };\r\n\r\n const BuildChangePasswordForm = () => {\r\n return (\r\n <>\r\n
Create Your Password
\r\n
\r\n {\r\n setPass1(e.target.value);\r\n }}\r\n />\r\n
\r\n
\r\n {\r\n setPass2(e.target.value);\r\n }}\r\n />\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n );\r\n };\r\n\r\n return (\r\n
\r\n
\r\n
{BuildContent()}
\r\n
\r\n {\r\n if (isPasswordReset) history.push(\"/\");\r\n setIsOpenAlertDialog(false);\r\n }}\r\n positiveButtonText={alertDialogPosBtnText}\r\n negativeButtonText={alertDialogNegBtnText}\r\n />\r\n
\r\n );\r\n};\r\n\r\nexport default ChangePassword;\r\n","import { React } from \"react\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { useSession } from \"react-session-provider\";\r\n\r\nimport \"./UnauthorizedPage.css\";\r\n\r\nconst UnauthorizedPage = () => {\r\n const history = useHistory();\r\n\r\n const { store = {}, deleteKey } = useSession();\r\n const { sessionUser, sessionUserToken } = store;\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
Oops!
\r\n
Invalid request made!
\r\n
\r\n {\r\n deleteKey(\"sessionUser\");\r\n deleteKey(\"sessionUserToken\");\r\n history.push(\"/\");\r\n }}\r\n >\r\n Get me out of here!\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default UnauthorizedPage;\r\n","import React from \"react\";\r\nimport { BrowserRouter, Route, Switch } from \"react-router-dom\";\r\nimport SessionProvider from \"react-session-provider\";\r\nimport \"./App.css\";\r\nimport SignInSignUp from \"./pages/SignInSignUp/SignInSignUp\";\r\nimport TemplatePage from \"./pages/TemplatePage/TemplatePage\";\r\nimport Users from \"./pages/Users/Users\";\r\nimport ErrorPage from \"./pages/ErrorPage/ErrorPage\";\r\nimport Publications from \"./pages/Publications/Publications\";\r\nimport Enquiries from \"./pages/Enquiries/Enquiries\";\r\nimport Profile from \"./pages/Profile/Profile\";\r\nimport ChangePassword from \"./pages/ChangePassword/ChangePassword\";\r\nimport UnauthorizedPage from \"./pages/UnauthorizedPage/UnauthorizedPage\";\r\n\r\nfunction App() {\r\n return (\r\n \r\n \r\n \r\n \r\n {/* */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default App;\r\n","import React from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport App from \"./App\";\r\nimport \"./App.css\";\r\n\r\nReactDOM.render(\r\n \r\n \r\n ,\r\n document.getElementById(\"root\")\r\n);\r\n"],"sourceRoot":""}