{"version":3,"sources":["assets/images/Agora_Icon.png","assets/images/empty-inbox.png","assets/images/agora-app-featured.jpg","assets/images/business.png","util/EncryptionHandler.js","util/live_api.js","components/NavBar.jsx","components/Layout/SideMenu.jsx","routes/PrivateRoute.jsx","routes/AdminRoute.jsx","components/LinearInderterminate.jsx","components/CheckSession.jsx","global/spinner/globalspinner.js","components/ExportFile.jsx","components/KycApproval.jsx","components/Users.jsx","components/PrivacyPolicy.jsx","components/BankInclusion.jsx","components/ContactUs.jsx","components/DisapprovedRemarks.jsx","components/Newsletter/Spinner.jsx","components/FeaturesControl.jsx","components/Login/Login.jsx","components/Newsletter/NLNavBar.jsx","components/Newsletter/NewsFeeds/EditNLModal.jsx","components/Newsletter/NewsFeeds/NewsletterCard.jsx","components/Newsletter/NewsFeeds/CreateNLModal.jsx","components/Newsletter/Delights/EditDelights.jsx","components/Newsletter/Delights/DelightsCard.jsx","components/Newsletter/Delights/CreateDelights.jsx","components/Newsletter/Main.jsx","components/Newsletter/Delights/Stores.jsx","components/Newsletter/Delights/Category.jsx","components/DoctorsDashboard/DocDashboard.jsx","components/ForgotPassword/ForgotPassword.jsx","components/OTPVerification/OTP.jsx","components/DoctorsAnnouncement/Spinner.jsx","components/DoctorsAnnouncement/EditANModal.jsx","components/DoctorsAnnouncement/AnnouncementCard.jsx","components/DoctorsAnnouncement/Announcement.jsx","components/Concurrent/ConcurrentReset.jsx","components/LockedOut/LockedOut.jsx","components/AgoraAdvisory.jsx","components/ArugaAdvisory.jsx","components/Suspend/Suspend.jsx","components/DisableFeatures/DisableFeatures.jsx","components/EmailFeatures/EmailFeatures.jsx","components/EmailFeatures/EmailMaintenance.jsx","components/AutoLogout.jsx","components/Digicard/Digicard.jsx","components/SysAccessManagement/SysAccessManageAccess.jsx","components/Layout/Dashboard.jsx","components/RequestLogs.jsx","components/UploadATD.jsx","components/ArugaFeaturesControl.jsx","components/Survey/SurveyReport.jsx","components/Kiosk/KioskManagement.jsx","components/AgoraPod/AgoraPodManagement.jsx","global/GlobalLoadingContext.js","components/AventusMarketplace/AventusMarketplace.jsx","components/RCSValidityController/AcctRCSConfiguration.jsx","App.js","serviceWorker.js","index.js"],"names":["module","exports","Encrypt","text","CryptoJS","AES","encrypt","process","toString","EncryptHeader","Decrypt","decrypt","enc","Utf8","Encrypt2","JSON","stringify","ImgEncrypt","Decrypt2","bytes","parse","VNIDecryptBody","QMSEncryptBody","QMSDecryptBody","DOCTOR_API_DOMAIN","WORKATO_API_DOMAIN","AZURE_AGORA_API_DOMAIN","AZURE_QMS_API_DOMAIN","ADMIN_LOCKEDOUT","POST_AVENTUS_SERVICES","ALL_USERS","ADD_USER","UPDATE_USER","APPROVED_APPLICATION","CHANGE_PW","DELETE_AVENTUS_SERVICES","POST_DIGICARD","APPROVAL_REQUEST","FP_CHANGE_PW","GET_AVENTUS_SERVICES","REACT_APP_GET_HMO_TAGGING","USER_LOGIN","REACT_APP_SEND_OTP","REACT_APP_VALIDATE_OTP","REAPPROVED_APPLICATION","ADD_REMARKS","DISAPPROVED_REMARKS","UPDATE_REMARKS","RESET_PASSWORD","APPROVAL_HISTORY_PCIMEMB","APPROVAL_HISTORY_REPORT","APPROVAL_HISTORY_SEARCH","UPDATE_AVENTUS_SERVICES","UPDATE_AVENTUS_SERVICES_STATUS","REACT_APP_WAIVE_PASSWORD","GET_CORPACCT","SYSACCESS_DELETE_MODACCESS","SYSACCESS_GET_MODACCESS","SYSACCESS_ADD_MODACCESS","SYSACCESS_EDIT_MODACCESS","SYSACCESS_DELETE_ROLES","SYSACCESS_GET_ROLES","SYSACCESS_ADD_ROLES","SYSACCESS_EDIT_ROLES","SYSACCESS_DELETE_ROLESACCESS","SYSACCESS_GET_ROLESACCESS","SYSACCESS_INSERT_ROLESACCESS","SYSACCESS_DELETE_TABACCESS","SYSACCESS_GET_TABACCESS","SYSACCESS_ADD_TABACCESS","SYSACCESS_EDIT_TABACCESS","SYSACCESS_GET_USERSYSTEMACCESS","GET_ALL_ADVISORY","POST_ADVISORY","UPDATE_ADVISORY","REACT_APP_AGORAPOD_ADD_TERMINAL","REACT_APP_AGORAPOD_TERMINAL_ALL","REACT_APP_AGORAPOD_UPDATE_TERMINAL","POST_DIGICARD_CONFIG","DISABLE_FEATURE","GET_ACCOUNT_BY_CORPACCT","GET_ACCOUNT_BY_NAME","GET_ALL_SUSPENDED","GET_DIGICARD_CONFIG","GET_DIGICARD_DETAILS","GET_DIGICARD_CONFIG_UI","GET_DISABLED_FEATURES","ADD_SUSPENDED_ACCOUNT","UNDO_DISABLE_FEATURE","UPDATE_DIGICARD_CONFIG","UPDATE_SUSPENDED_STATUS","ADD_DELIGHTS","ADD_CATEGORY","ADD_STORE","GET_DELIGHTS_CATEGORY","GET_DELIGHTS","GET_STORES","UPDATE_DELIGHTS_wo_PIC","UPDATE_DELIGHTS_w_PIC","UPDATE_CATEGORY","UPDATE_STORE","DOWNLOADIMAGE_RENEWAL","GET_RENEWAL_FILES","UPLOADIMAGE_RENEWAL","ADD_FEATURES","DELETE_FEATURES","EDIT_FEATURES","GET_ALL_FEATURES","ADD_SVRCONFIG","GET_ALLSVRCONFIG","UPDATE_SVRLISTCONFIG","ADD_SVRLIST","GET_ALLSVRLIST","UPDATE_SVRLIST","ADD_SVRURL","GET_ALLSVRURL","UPDATE_SVRURL","DOWNLOADIMAGE","IMAGES_PATH","MEMBER_FILES","GET_CUSTOMIZED_FIELDS","GET_CUSTOMIZED_ACCOUNTS","ADD_NEWSLETTER","GET_NEWSLETTER","UPDATE_NEWSLETTER_w_PIC","UPDATE_NEWSLETTER_wo_PIC","REACT_APP_GET_RATING_REPORT","MEMBERFILE_UPLOAD_V2","REACT_APP_ADD_BANKS","REACT_APP_GET_CORPORATE_PLAN","REACT_APP_GET_CURRENT_BANKS","REACT_APP_GET_BANKLIST","REACT_APP_UPDATE_BANK_INCLUSION","GET_REQUEST_LOGS","AGORA_LOCKEDOUT","POST_USER_STAT","CHECK_SESSION","LOGOUT_USER_STAT","FORGOT_PASSWORD","VERIFY_OTP","CONCURRENTLOGIN","GET_DIGICARD_BASE64","GET_DIGICARD_MEMBER","GET_ALL_RCS_VALIDITY_CONFIG","ADD_RCS_VALIDITY_CONFIG","UPDATE_RCS_VALIDITY_CONFIG","DELETE_RCS_VALIDITY_CONFIG","SEARCH_RCS_VALIDITY_CONFIG","INSERT_BANK_RECORDS","DOCTORSAPP_FOR_APPROVAL","DOCTORSAPP_APPROVE_APPLICATION","DOCTORSAPP_APPROVAL_HISTORY","DOCTORSAPP_APPROVAL_HISTORY_MONTHLY","DOCTORSAPP_APPROVAL_HISTORY_SEARCH","DOCTORSAPP_DISAPPROVE_REMARKS","DOCTORSAPP_GETIMAGE","DOCTORSAPP_GETFILES","USER_LOGIN_DOCTORS","POST_USER_STAT_DOCTORS","LOGOUT_USER_STAT_DOCTORS","ADD_USER_ARUGA","ALL_USERS_ARUGA","UPDATE_USER_ARUGA","FORGOT_PASSWORD_DOCTORS","VERIFY_OTP_DOCTORS","FP_CHANGE_PW_DOCTORS","CONCURRENTLOGIN_DOCTORS","ARUGA_LOCKEDOUT","ADMIN_LOCKEDOUT_DOCTORS","GET_ALL_ANNOUNCEMENT","ADD_ANNOUNCEMENT","UPDATE_ANNOUNCEMENT","UPDATE_ANNOUNCEMENT_IMAGE","DOCTORS_GET_ALL_ADVISORY","DOCTORS_POST_ADVISORY","REACT_APP_GET_ALL_FEATURES_ARUGA","REACT_APP_EDIT_FEAUTES_ARUGA","REACT_APP_ADD_FEATURE_ARUGA","REACT_APP_DELETE_FEATURE_ARUGA","REACT_APP_SEND_OTP_DOCTORS","REACT_APP_VALIDATE_OTP_DOCTORS","DOCTORS_UPDATE_ADVISORY","REACT_APP_KIOSK_TERMINAL_ADD","REACT_APP_KIOSK_TERMINAL_ALL","REACT_APP_KIOSK_TERMINAL_EDIT","GET_WORKATOMEMBER_INFO","Recaptcha","require","recaptchaInstance","SubMenu","Menu","Option","Select","RangePicker","DatePicker","NavBar","filetype","setFiletype","useState","visible","setVisible","isVisible","setVisibleLogsModal","privacyModal","setPrivacyModal","oldPassword","setOldPassword","newPassword","setNewPassword","confirmPass","setConfirmPass","startDate","setStartDate","endDate","setEndDate","recaptchaVerified","setRecaptchaVerified","filterType","setFilterType","filterTypeSource","setFilterTypeSource","filterTypeApp","setFilterTypeApp","filename","setFilename","applicationname","localStorage","getItem","xlsreport","history","useHistory","user_info","current_pw","appName","addToast","useToasts","async","handleRequestLogs","alert","EncStartDate","EncEndDate","logresp","fetch","API","method","headers","DateFrom","DateTo","logrespJson","json","xlsdata","filter","data","statuscode","application","source","forEach","report","concat","Request_Time","reqtime","Request_Body","reqbody","Request_URI","uri","Request_Status","Request_Message","errormsg","Request_App","Response_Time","resptime","Request_Source","Request_Account","acctnum","Request_Mobile","mobileno","wb","Sheets","Request_Logs","XLSX","json_to_sheet","SheetNames","excelBuffer","bookType","type","Blob","FileSaver","exportToXLSX","map","error_message","appearance","autoDismiss","autoDismissTimeout","handleSaveChangePass","regularExpression","RegExp","length","test","Value","recordid","emailaddress","oldpassword","newpassword","edited_by","resp","Authorization","access_token","body","respText","respJson","success","reset","SessionUpdate","message","error","EncryptedEmail","stat_respJson","stat_resp","Email","stat_respText","replace","LogoutStatus","removeItem","push","React","createElement","mode","style","backgroundColor","Item","disabled","department","color","Link","to","key","Icon","role","title","className","onClick","float","Modal","height","fontSize","width","closable","footer","Button","shape","top","marginTop","borderRadius","overflowY","href","trim","Alert","showIcon","banner","paddingTop","Input","value","onChange","e","target","ref","elementID","sitekey","render","verifyCallback","response","fontWeight","allowEmpty","format","date","dateString","placeholder","Sider","Header","Content","Layout","anchorStyle","display","alignItems","imgStyle","verticalAlign","margin","menuStyle","siderStyle","backgroundImage","overflow","overflowX","headerStyle","background","padding","contentStyle","paddingBottom","rowStyle","colStyle","AccountStyle","foldIcon","marginLeft","userIcon","cursor","SideMenu","_ref","children","showDrawer","setShowDrawer","drawer","setDrawer","hideSider","setHideSider","hideDrawer","setHideDrawer","nameVariable","setnameVariable","decrypted","uniqueTabaccess","index","self","findIndex","v","tabaccessid","uniqueModaccess","modaccessid","tabaccess","navKey","tabname","icon","tabicon","modaccess","labelname","modicon","link","routename","collapsed","setCollapsed","useEffect","firstname","trigger","collapsible","hidden","breakpoint","onBreakpoint","broken","onCollapse","alt","src","logo","marginBottom","theme","defaultSelectedKeys","items","_ref2","item","_ref3","_ref4","antd","drawerStyle","placement","onClose","_ref5","_ref6","_ref7","Row","Col","span","xs","lg","xxl","Tooltip","marginRight","minHeight","PrivateRoute","component","Component","rest","_objectWithoutProperties","_excluded","Route","Object","assign","props","Redirect","pathname","state","from","location","AdminRoute","useStyles","makeStyles","root","spacing","LinearInderterminate","classes","LinearProgress","CheckSession","uuid","email","deviceid","window","origin","GetSession","LoadSpinner","ExportFile","exportdata","loading","reapp_remarks","modal","setModal","HistoryReport","setHistoryReport","handleSubmitExport","Filteredby","Reapprove","FilterBy","newD","fullname","txt","charAt","toUpperCase","substr","toLowerCase","Counter","increment_id","Posted_Date","posted_date","Member_Type","membType","Company","company","Employee_ID","pci_employee_id","Members_Status","member_status","AccountNo","accountno","Fullname","Card_Number","cardno","Status","status","Approved_Date","approved_date","Approved_By","approved_by","Disapproved_Remarks","remarks","Registration_Attempts","regcount","Email_Verification_Date","email_verdate","kyc_report","doc","jsPDF","setFontSize","element","moment","employee_id","stats","content","styles","cellWidth","font","left","right","startY","head","autoTable","save","exportToPDF","console","log","GenerateReport","MDBBtn","size","MDBIcon","allowClear","undefined","Dashboard","sessionStorage","document","removeToast","isLoaded","setIsLoaded","setData","tempData","setTempData","approvalHistory","setApprovalHistory","tempHistory","setTempHistory","reapproveHistory","setReapproveHistory","FetchingAllReapprove","setFetchingAllReapprove","AllReapprove","setAllReapprove","AllApprovalHistory","setAllApprovalHistory","HistoryMembUser","setHistoryMembUser","HistoryPciMemb","setHistoryPciMemb","ReapporoveSearchValue","setReapproveSearchValue","tempReapproved","setTempReapproved","searchTempData","setsearchTempData","modCardWarn","setmodCardWarn","request","setRequest","photoIndex","setPhotoIndex","isOpen","setIsOpen","setRecordId","modDisapprove","setModDisapprove","disapproveRemarks","setDisapproveRemarks","disapproveMessage","setDisapproveMessage","intIdImg","setIntIdImg","govIdImg","setGovIdImg","images","setImages","imgLoad","setImgLoad","reason","setReason","lstReasons","setLstReasons","current","setCurrent","filterNumTo","setFilterNumTo","filterNumFrom","setFilterNumFrom","HistoryStartDate","setHistoryStartDate","HistoryEndDate","setHistoryEndDate","clicked","setClicked","fetching","setFetching","historyFetching","setHistoryFetching","reappNotif","setReappNotif","memberProfile","setMemberProfile","modalSize","setModalSize","membProfButtonCaption","setMembProfButtonCaption","warningTime","logoutTime","addDetails","setaddDetails","currentScreen","pageNumber","pageRow","totalRecord","multipleReason","SpecialInstructions","GetApprovalRequests","activeOnly","GetDisapproveRemarks","loadComponent","columns","dataIndex","ellipsis","showTitle","incremental_id","membStatus","Tag","columnApproval","selector","columnReapprove","options","buttons","label","memberid","toTitleCase","lastname","toggleModal","GetApprovalHistory","final_reappnotif","i","data_rec","special_instructions","reapprove_notification","toggleModDisapprove","closeOnEscape","closeOnClickOutside","willUnmount","rowStart","rowEnd","recordStart","recordEnd","avega","recordcount","gnder","pci_gnder","getMembType","pci_membType","AvegaTag","filtered_decrypt","avegatag","sort","a","b","Date","historyStartDate","historyendDate","dateNow","setDate","getDate","getMonth","slice","getFullYear","reapproved","reapp","is_reapprove","all","filtered_reapproved","filtered_all","ApprovalHistoryFilterByDate","historyEndDate","startdate","enddate","dateLimit","ApprovalHistory_AdvanceSearch","SeachValue","TextValue","SEARCHTEXT","handleOnSelectRow","memberInfoRequest","getWorkatoMemberInfo","middlename","birthdate","civil_status","issued_date","issued","street","city_municipal","province","is_for_reapprove","pci_lastname","pci_firstname","pci_middlename","pci_birthdate","birth_date","pci_civil_status","gender","member_type","pci_accountno","account_no","pci_covperiod","coverage_period","pci_card_no","card_no","pci_printeddate","card_printed_date","pci_refdate","pci_rendate","pci_termdate","pci_enddate","getUploadedFiles","retriesWorkatoMembInfo","paramAcctno","paramToken","token","contract","app","respStatus","Promise","resolve","setTimeout","handleOnSelectHistoryRow","memberId","member_id","file_type","files","sharepoint","processImage","processID","filteredID","tag","blob_new","convertBase64ToBlob","path","ext","reader","FileReader","readAsDataURL","onload","result","oldArray","json_processID","filepath","filetag","processIDparam","processIDresp","ImageBase64","ImageDetails","processIDrespJson","base64","posted_from","postedfrom","UploadMemberFile","Imgparam","ImagePath","respBlob","blob","Ref_File","convert_String","fileName","substring","lastIndexOf","fileExt","onloadend","base64data","Imgparameters","Imageparam","newResp","renderImg","base64Image","fileext","imageType","decodedData","atob","uInt8Array","Uint8Array","charCodeAt","details","Image_datails","formBody","property","encodedKey","encodeURIComponent","encodedValue","join","toggleModCardWarn","Confirm","confirmAlert","handleModalCardWarning","renderStatus","getpci_membprofile","Account","pci_cardno","Pci_membApprovalHistory","SearchData","searchedData","itemData","textData","indexOf","selectedKeys","dropdownMatchSelectWidth","onSelect","filterApprove","filterDisapprove","FilterHistory","TextField","id","variant","InputProps","startAdornment","InputAdornment","position","defaultValue","numFrom","numTo","warning","newref","filtered_date","counter","convertToNumber","filtered_num","Filter","current_menu","Table","dataSource","onRow","rowKey","scroll","x","y","pagination","showSizeChanger","pageSizeOptions","total","showTotal","page","pageSize","onShowSizeChange","justifyContent","menuDataTable","MDBModal","toggle","centered","noValidate","MDBModalHeader","MDBModalFooter","MDBModalBody","MDBRow","MDBCol","htmlFor","readOnly","getCivilStatus","MDBView","waves","img","preventDefault","lenght","search","NewElement","SpecialInstructionsFiltered","handleDisapproveApplication","Number","reapp_notif","rows","Viewer","zoomable","str","civilStatus","Users","setdataSource","dataSourceRoles","setdataSourceRoles","appname","setAppName","setEmailAddress","setLastname","setFirstname","setMiddlename","empid","setEmpid","setDepartment","intavega_tag","setIntavega_tag","setRecordid","setStatus","setRole","userrole","setUserRole","password","setPassword","newUser","setNewUser","emailExist","setemailExist","setLoading","syscode","setSyscode","header","setHeader","username","Application","ADD_USER_API","U","GET_USER_API","getAllUsers","active","resetRecaptcha","gatherRoles","record","rolesid","userrolesid","intellicareavega_tag","_objectSpread","rowClassName","onBlur","EmailUsed","find","isEmailExists","textAlign","roles","name","Popconfirm","okText","cancelText","onConfirm","PrivacyPolicy","plan_columns","label_columns","BankInclusion","searchValue","setsearchValue","selectedAccount","setselectedAccount","selectedContract","setselectedContract","displayedAccount","setdisplayedAccount","lstFeatures","setlstFeatures","lstPlan","setlstPlan","ribanksID","setribanksID","setCompany","hasDataFeatures","setHasDataFeature","hasDataPlan","setHasDataPlan","setUsername","addBank","setAddBank","bankcode","setBankCode","bankname","setBankName","avega_bit","setAvegaBit","lstBanks","setlstBanks","SubMenusDropDown","setSubMenusDropDown","modal_features","setModalFeatures","modal_plan","setModalPlan","modal_confirm","setModalConfirm","modal_add_bank","setModalAddBank","onClickAddBank","newdata","bankcode2","swiftcode","GetBankList","SaveBank","bank_exist","fdata","corpacct","bankcodeandswiftcodeRecID","excl","is_success","GetConfigs","account","hacct","hcont","acct","Corp_RIBanksID","onClickAccount","GetCorporatePlan","getFeatureData","minWidth","header_param","Array","isArray","final_plan","onSearchCompany","onClickSaveBank","submenu","exclusion","editedby","onClickUpdateInclusion","TextArea","DisapprovedRemarks","lstRemarks","setLstRemarks","setRemarks","setSpecial_Instructions","postedDate","setPostedDate","postedBy","setPostedBy","editedDate","setEditedDate","editedBy","setEditedBy","hasData","setHasData","toDate","posted_by","edited_date","reappnotif","handleAddRemarks","handleEditRemarks","Spinner","modalLoading","close","successMsg","savingMsg","this","zIndex","Spin","Result","subTitle","extra","Search","FeaturesControl","features","setFeatures","temp","setTemp","setDetails","featurerecid","feature","cbmsg","url","postedby","posted","edited","newFeature","setNewFeature","setModalLoading","setSuccess","setSuccessMsg","setSavingMsg","Fragment","handleRowClick","handleDeleteFeature","decryptedJson","GetAllFeatures","LinearIndeterminate","by","sorted","prevFeatures","all_features","handleAddFeature","handleEditFeature","val","prevState","Footer","Login","setEmail","sub_loading","setSubLoading","rs_loading","setRsLoading","wp_loading","setWPLoading","cp_loading","setCPLoading","emailFeedback","setEmailFeedback","passwordFeedback","setPasswordFeedback","changePw","setChangePw","click","setClick","otpModal","setOTPModal","waiveModal","setWaiveModal","userData","setUserData","setMessage","isError","setIsError","login","setLogin","isExpired","setIsExpired","isWaiving","setIsWaiving","DoctorsData","setDoctorsData","setVal","val_hmo","setValHMO","val_expired","setValExpired","otp","setOTP","seconds","setSeconds","interval","setInterval","clearInterval","closeMobileMenu","handleLogin","login_url","baseurl","LoginOTPDoctors","expired","GetHMOTagging","LoginOTP","hmo_tag","waiving","intellicare","is_expired","is_waiving","email_address","LoginStatus","randomBytes","setItem","DeviceType","isMobile","CheckSessionBody","devicename","param","handleClick","AppName","autoFocus","borderBottomWidth","prefix","UserOutlined","Password","LockOutlined","onPressEnter","block","LoginOutlined","packageJson","version","gcemail","gcotp","paramRolesID","gatherUserSystemAccess","is_exceed","vercode","onPressClose","maxLength","onPressResend","alignSelf","onPressChangePass","onPressWaivePass","WaivePassword","onPressedCancel","changPWModal","setChangePWModal","spinnerLoading","setSpinnerLoading","handleChangePassword","EditNL","modalEditNL","imgPath","imageLoad","getAllNL","newsdate","intellicare_tag","postdate","isactive","newsletterid","enable","setEnable","editCaption","setEditCaption","closeCaption","setCloseCaption","image","setImage","imgUri","setImgUri","fileSizeMsg","setFileSizeMsg","onEditClick","formdata","FormData","append","respUpdate","NL_API","respUpdateText","respUpdateJson","err","handleUpdateNL","handleUpdateNLwoPic","Form","hover","cascade","MDBMask","overlay","MDBCard","bottom","MDBCardBody","accept","fsize","file","Math","round","URL","createObjectURL","handleUploadChange","autoSize","NewsletterCard","imgpath","getAll","setImageLoad","setModalEditNL","btnColors","toggleEditModal","colorValues","floor","random","getRandomColor","EditNLModal","layout","labelCol","wrapperCol","CreateNLModal","modalNewNL","closeCreateNL","respAdd","respAddText","respAddJson","handleCreateFeed","toLocaleString","EditDelights","open","delightdetailid","delightdetailID","validfromdate","validtodate","branches","editby","contactnumber","delightcategoryID","delightstoreID","category","setCategory","handleUpdateDelightsWPic","handleUpdateDelightsWoPic","delights","getAllDelightsCategory","storename","showSearch","optionFilterProp","categoryname","DelightsCard","getNewDelights","editDelights","setEditDelights","md","catIcon","getCategoryIcon","CreateDelights","stores","setStores","resJSON","getAllDelightsStore","handleCreateDelights","TabPane","Tabs","NewsFeed","setKey","newsletterData","setNewsletterData","delightsData","setDelightsData","delightsCategory","setDelightsCategory","setModalNewNL","newDelights","setNewDelights","warnTimeout","logoutTimeout","toastId","warn","logout","setTimeouts","clearTimeouts","clearTimeout","resetTimeout","getAllNewsLetter","newsletter","sortToNewestDelights","toggleTabChange","getAllDelights","actvieOnly","events","addEventListener","removeEventListener","tabPosition","tabBarGutter","tab","prevNewsletter","toggleSortToNewest","Empty","sortByCategory","toggleSortByCategory","Store","delightstoreid","editeddate","newStore","setNewStore","GetAllStores","posteddate","editdate","handleAddStore","handleEditStore","Category","GetAllCategory","handleAddCategory","handleEditCategory","approvalDocHistoryMonthly","setApprovalHistoryMonthly","selfie","setSelfie","prcid","setPrcid","hide","maxWidth","DOCUSER_ID","Docuser_ID","prcnumber","drcode","doc_code","bankacct","doc_gender","GetApprovalHistoryMonthly","Approvedby","Approveddate","Birthdate","PRCnumber","drtype","DrType","DrCode","mobilenumber","Contactno","RegStatus","docId","filesHolder","doctor_id","NoDataFound","approvalDoctorHistory","DataTable","defaultSortField","defaultSortAsc","keyField","highlightOnHover","pointerOnHover","onRowClicked","responsive","progressPending","progressComponent","noDataComponent","persistTableHead","actions","ForgotPassword","MailOutlined","handleForgotPassword","EmailAddress","then","forgotResp","catch","OTP","useLocation","verification_code","setVerification_code","confirmpassword","setConfirmpassword","verified","setVerified","useParams","handleVerifyOTP","handleChangPassword","new_password","KeyOutlined","class","iconRender","EyeTwoTone","EyeInvisibleOutlined","EditANModal","modalEditAN","getAllAN","announcementdate","announcementid","image_type","handleUpdateAN","handleUpdateANwoPic","AnnouncementCard","setModalEditAN","object-fit","Announcement","addmodal","setAddModal","viewmodal","setViewModal","closecaption","detailsinput","setDetailsInput","editcaption","saveinput","setSaveInput","action","setStateAction","lstAnnouncement","setLstAnnoucement","lsttmp","setLsttmp","setanncid","modaldetails","setModalDetails","closeModal","GetAnnouncement","MDBContainer","prevAnnouncement","CloseButtonHandle","ConcurrentReset","spin","setSpin","checked","setChecked","resultMsg","setResultMsg","Checkbox","handleResetLogin","HandleResetLoginKYC","LockedOut","handleMobileLockedOutReset","arogaLocked","handleAdminLockedOutReset","adminLocked","AgoraAdvisory","advisory","setAdvisory","adv_id","advisoryname","datefrom","dateto","newAdvisory","setNewAdvisory","selectedYear","setSelectedYear","selectedMonth","setSelectedMonth","currentYear","years","generateYears","startYear","endYear","year","GetAllAdvisory","filterByYear","filtered","parseInt","prevAdvisory","filterByMonth","month","itemDate","all_advisory","handleAddAdvisory","advisory_id","handleEditAdvisory","ArugaAdvisory","suspended_columns","tags","SuspendMaintenance","pickedACCT","setpickedACCT","lstSuspended","setlstSuspended","setCorpacct","plancompany","setPlanCompany","is_Suspended","setIs_Suspended","hasDataSuspended","setHasDataSuspended","modal_suspend","setModalSuspend","getSuspendedData","is_suspended","onClickSaveSuspend","onClickUpdateSuspend","feature_columns","DisableFeatureMaintenance","displayedACCT","setdisplayedACCT","corpfeaturesid","setCorpfeaturesid","setFeature","is_disabled","setIs_disabled","hasDataFeaturesDisabled","setHasDataFeatureDisabled","RequeryFeatures","respJson2","final_output2","decrypted2","newD2","is_disabled_output","corpfeaturesid_temp","temp_tag","onClickUpdateFeatureStatus","emailfeature_columns","EmailFeature","srvlistNameValue","setsrvlistNameValue","appValue","setappValue","apiCodeValue","setapiCodeValue","servValue","setservValue","servURLIDValue","setservURLIDValue","endPointValue","setendPointValue","lstURLs","setlstURLs","lstSRVs","setlstSRVs","hasDataURL","sethasDataURL","modal_Add","setModal_Add","modal_Edit","setModal_Edit","getEmailURLData","resp_srvurl","resp_srvlist","respJson_url","respJson_list","captureSelectedService","service_name","emailsrvname","emailsrvlistid","apicode","emailsrvurlid","onClickSaveService","onClickUpdateService","emailconfig_columns","emailservice_columns","keyValue","setkeyValue","valValue","setvalValue","servNameValue","setservNameValue","emailsrvID","setemailsrvID","emailconfigID","setemailconfigID","lstServices","setlstServices","lstConfigs","setlstConfigs","is_disabledService","setIs_disabledService","is_disabledConfig","setIs_disabledConfig","hasDataService","sethasDataService","hasDataConfig","sethasDataConfig","modal_Add_Config","setModal_Add_Config","modal_Edit_Config","setModal_Edit_Config","getSRVListData","getSRVConfigList","act_status","servername","isActive","onAddConfig","emailsrvconfigid","onSaveEditConfig","useLogout","startTime","timer","setTimer","setToastID","toastId5mins","setToastID5mins","fivemins","myInterval","IDCardContainer","styled","div","_templateObject","_taggedTemplateLiteral","IDCardContent","_templateObject2","IDCardImageContainer","_templateObject3","IDCardImage","_templateObject4","IDCardFieldsContainer","_templateObject5","IDCardField","_templateObject6","DigiCard","setSelectedAccount","selectedCompany","setSelectedCompany","selectedImage","setSelectedImage","selectedFileBase64","setSelectedFileBase64","isactive_output","setIsActiveOutput","setLabel","setAvega","incomp","setIncomp","setFileExt","prevPosition","setPrevPosition","setPosition","finalpos","setFinalPos","field","setField","addLabel","setAddLabel","accounts","setAccounts","fields","setFields","previewAccount","setPreviewAccount","previewCorpAccount","setPreviewCorpAccount","previewContract","setPreviewContract","previewData","setPreviewData","setBase64","modal_digicard","setModalDigiCard","modal_add_label","setModalAddLabel","modal_preview","setModalPreview","getCorporatePlan","getCustomizedAccounts","getCustomizedFields","GetDigicardConfig","onClickUpdateStatus","String","isNaN","fieldval","onPlanRowClick","getPreviewBackground","DecryptResp","membacct","hmo","onSaveDigiCard","isexist","is_exist","in_comp","gcAccount","getPreviewMember","final_data","flexDirection","filterOption","input","option","includes","border","boxShadow","onGetDigicardDetails","alignContent","event","imgtype","onClickSaveLabel","SysAccessManageAccess","detailsRoles","setDetailsRoles","iscritical","detailsRolesAccess","setDetailsRolesAccess","rolesaccessid","detailsMainMenu","setDetailsMainMenu","detailsSubMenu","setDetailsSubMenu","hasDataRoles","setHasDataRoles","dataSourceRolesAccess","setdataSourceRolesAccess","hasDataMainMenus","setHasDataMainMenus","dataSourceMainMenus","setdataSourceMainMenus","hasDataSubMenus","setHasDataSubMenus","dataSourceSubMenus","setdataSourceSubMenus","dataSourceSubMenusDropDownTemp","setdataSourceSubMenusDropDownTemp","dataSourceSubMenusDropDown","setdataSourceSubMenusDropDown","hasDataSubMenusRoute","setHasDataSubMenusRoute","dataSourceSubMenusRoute","setdataSourceSubMenusRoute","mainMenuLabel","setMainMenuLabel","newRoles","setNewRoles","newMainMenu","setNewMainMenu","newSubMenuRoute","setSubMenuRoute","modalRoles","setModalRoles","modalRolesManage","setModalRolesManage","modalMainMenus","setModalMainMenus","modalMainMenusManage","setModalMainMenusManage","modalSubMenus","setModalSubMenus","modalSubMenusRoute","setModalSubMenusRoute","roles_columns","onClickAddRoles","fixed","onClickEditRoles","getRolesAccessList","gatherRolesAccess","filteredRolesAccessList","filterRolesAccessPerRoles","onClickManageRoles","onClickDeleteRoles","menu_columns","onClickEditMainMenus","getSubMenuList","gatherSubMenus","filteredSubMenuList","filterSubMenusPerTabAccess","onClickManageMainMenus","tabid","gatherMainMenus","onClickDeleteMainMenus","submenuList_columns","newArrayList","submenus","isExistModaccess","objIndex","obj","splice","onClickAddSubMenus","loadSubMenus","onClickDeleteSubMenus","submenuRouteList_columns","onClickEditSubMenusRoute","onClickDeleteSubMenusRoute","filteredRolesAccessListPerRoles","filteredRolesAccessListPerTabAccess","filterRolesAccessPerTabAccess","borderStyle","borderWidth","borderColor","Divider","bordered","defaultPageSize","count","range","handleAddRoles","handleEditRoles","align","filteredData","handleAddASubMenus","handleAddMainMenus","handleEditMainMenus","handleAddSubMenusRoute","handleEditSubMenusRoute","maxHeight","RequestLogs","setCount","start","end","loop","newDate","UploadATD","detailsUploadATD","setdetailsUploadATD","detailsUploadEPLAN","setdetailsUploadEPLAN","setContract","loadingSpinner","setLoadingSpinner","disabledButtonUploadATD","setdisabledButtonUploadATD","disabledButtonUploadEPLAN","setdisabledButtonUploadEPLAN","selectedImageATD","setSelectedImageATD","selectedImageEPLAN","setSelectedImageEPLAN","hasUploadFileATD","setHasUploadFileATD","hasUploadFileEPLAN","setHasUploadFileEPLAN","disabledButtonSelect","setdisabledButtonSelect","previewVisibleATD","setPreviewVisibleATD","previewVisibleEPLAN","setPreviewVisibleEPLAN","inputFileATD","useRef","inputFileEPLAN","DisplayUploadImage","renewalData","Corpacct","Contract","CorpAcct","getRenewalFiles","renewalDataATD","filterRenewalDataPerType","imageBase64ATD","getSharepointImage","blob_atd","readerATD","renewalDataEPLAN","imageBase64eplan","blob_eplan","readerEPLAN","paramRenewalData","SaveUploadFile","addonBefore","gutter","xl","spinning","delay","emptyStyle","imageStyle","description","r","onClickSelectAccount","enterButton","onSearch","FeaturesControlAruga","featcon_ID","SurveyReport","FilterPlatform","setFilterPlatform","FilterCompany","setFilterCompany","handleSurveyGather","platform","Name","Acct","Source","Platform","Feature","RatingDate","ratingdatetime","PostedDate","Ratings","ratings","Reviews","reviews","terminals_columns","KioskTerminal","lstTerminals","setlstTerminals","HospitalDeviceID","setHospitalDeviceID","TerminalID","setTerminalID","DeviceID","setDeviceID","HsCode","setHsCode","MacAddress","setMacAddress","is_Active","setIs_Active","hasDataTerminal","setHasDataTerminal","setAccesstoken","modal_terminal","setModalTerminal","modal_terminal_edit","setModalTerminalEdit","getTerminalData","sessionid","respToken","respTokenJson","respTokenJsonDecypted","AdminSysDecryptBody","respData","respDataJson","device_hospitalid","terminalid","hscode","macaddress","response_message","onClickSaveTerminal","onClickUpdateTerminal","hospname","hospaddress","AgoraPodTerminal","hasRequiredField","setHasRequiredField","hasRequiredFieldMsg","setHasRequiredFieldMsg","modal_terminal_add","setModalTerminalAdd","detailsTerminal","setDetailsTerminal","agorapoddeviceid","hospcode","rcs1printcopy","rcs2printcopy","serialno","propertytag","onKeyPress","GlobalLoadingContext","createContext","globalLoading","setGlobalLoading","AventusMarketplace","services","setServices","tableLoading","setTableLoading","saveLoading","setSaveLoading","deleteLoading","setDeleteLoading","setPagination","newServices","setNewServices","selectedFile","setSelectedFile","addservicesmodal","showServicesModal","confirmModal","setConfirmModal","recID","setRecID","useContext","productID","productName","deleted","fetchData","useCallback","decryptedData","updateServiceStatus","isbanner","Switch","stopPropagation","handleToggle","updatedServices","DeleteOutlined","onClickAddServices","_user_info$data2","_user_info$data","productname","onRowClick","handleTableChange","pag","filters","sorter","isBefore","_user_info$data4","onSaveServices","_user_info$data3","onUpdateServices","flex","isValid","disabledDate","subtract","imgType","extension","split","maxSizeMB","maxWidthOrHeight","useWebWorker","fileType","compressedFile","imageCompression","base64String","rcs_columns","RCS_TYPES","parseWordToNumber","wordString","baseWords","one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen","tensWords","twenty","thirty","forty","fifty","sixty","seventy","eighty","ninety","parts","tens","ones","NaN","AcctRCSConfiguration","setSearchValue","setLstPlan","rcsConfigList","setRcsConfigList","hasDataRcs","setHasDataRcs","loadingModal","setLoadingModal","loadingSearch","setLoadingSearch","modal_add","setModalAdd","selectedTypes","setSelectedTypes","rcsFormat","setRcsFormat","setValue","modal_edit","setModalEdit","rcsConfigId","setRcsConfigId","currentRecord","setCurrentRecord","modal_delete","setModalDelete","currentPage","setCurrentPage","totalRecords","setTotalRecords","totalPages","setTotalPages","searchTerm","setSearchTerm","activeSearchTerm","setActiveSearchTerm","debouncedSearch","debounce","performSearch","fetchRCSConfigList","arguments","Data","PageNumber","TotalRecords","TotalPages","dec","AcctApp_ConfigurationId","Type","Format","Recordid","danger","handleDelete","encryptedBody","PageSize","decryptedResponse","cancel","suffix","locale","emptyText","s","handleEdit","numVal","parsedVal","insertionPromises","ValueEncrypted","PostedBy","results","successTypes","failedTypes","resp2","tip","t","Radio","Group","typePayload","EditedBy","App","Router","basename","exact","ContactUs","KycApproval","DocDashboard","Newsletter","EmailMaintenance","Boolean","hostname","match","ReactDOM","ToastProvider","getElementById","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.d4a08a09.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/Agora_Icon.f78bf01c.png\";","module.exports = __webpack_public_path__ + \"static/media/empty-inbox.9f2cecae.png\";","module.exports = __webpack_public_path__ + \"static/media/agora-app-featured.4793fdcf.jpg\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAApgAAAKYB3X3/OAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAKmSURBVEiJrZZLSBVhFMd/55vxWvda9hBTE/MFYmXNooflIgopXBRRtHHR0mXQIjN6L60WQSBSiwqioiIigqJNRLQqpNRaJJoWvTBf6TW715nTQkvHrjXe/MMs5nz/c/7nO4c5Z0RVCYqVDd1pUcLFi+3Iq+c1xIP42NMd5J8fzsbFsXAdVXEQHGRusaCmx43uh8jZQAJyEyuvd6jE9sRRcFB1EFYbyARQBMTvZFQXBAkOYBd8HXoMVCjjpZK/8mcMA1TMbkg/pKBhMHiXx+EOfuuK9/R0/jO48GDaJicLhZDABgBVNiUlYKfNv9RVm3Niqj33YHOuitxSRQU6FIrMVJJlYO9Ki3OVKRzdaLMi48+ujw5HK7MONEcm27IONW/xkCaFUoFdoFdgrMkTmRm4WJXC4XIbJ1OoLrW4tj3E5jx/HhqPVRgjrTl1L7cBLK1rqTWePAS+WJ675kN92Z1fXJ9n9XKL9dmGM89G2XI9xo7bMToHlJMVNnMnFdMKhy8C31HzIKeu5ZUq9cANz9Py96ectskxfQI7iy0+RZULL13iHrT1KZdbXZZEhPKcCapJSX23KGw5ipxAJVNU9n2sL6v+fHpVdGo5fU0uSBfutrs+wuP33u+zR5PsrceXx4CT48+08N2g/4eSN8/f1Lz5Y+8DP/4WJqBAS7eyLtuQnjph25o/Rmnu9pIS8JXoXNMolctC3NsdovGFy9osQ1Wh4V67R1vfjD94YMoN2vqUmodxQhYc22hTVWi43+Fx5Emg0Z8QCWeRJVC0UOgehr6RPzMPNos0H2RZwlHhKrzpTa4kE5BOERpndRYlggGeJiMSOJm3GWmbEq1MxlfmfwvoHlxIew28Bq7+Oki49KEYMJ5If1ABmelvy4hESuZkhFta9xAL4vMTZmbza9DbJUoAAAAASUVORK5CYII=\"","import CryptoJS from \"crypto-js\";\r\n\r\nexport function Encrypt(text) {\r\n return CryptoJS.AES.encrypt(\r\n text,\r\n process.env.REACT_APP_A\r\n ).toString();\r\n}\r\n\r\nexport function EncryptHeader(text) {\r\n return CryptoJS.AES.encrypt(\r\n text,\r\n process.env.REACT_APP_B\r\n ).toString();\r\n}\r\n\r\nexport function Decrypt(text) {\r\n var bytes = CryptoJS.AES.decrypt(text, process.env.REACT_APP_A);\r\n return bytes.toString(CryptoJS.enc.Utf8);\r\n}\r\n\r\nexport function DecryptResp(text) {\r\n var bytes = CryptoJS.AES.decrypt(text, process.env.REACT_APP_B);\r\n return JSON.parse(bytes.toString(CryptoJS.enc.Utf8));\r\n}\r\n\r\nexport function Encrypt2(text) {\r\n return CryptoJS.AES.encrypt(\r\n JSON.stringify(text),\r\n process.env.REACT_APP_B\r\n ).toString();\r\n}\r\nexport function ImgEncrypt(text) {\r\n return CryptoJS.AES.encrypt(\r\n text,\r\n process.env.REACT_APP_B\r\n ).toString();\r\n}\r\nexport function DecryptTxt(text) {\r\n var bytes = CryptoJS.AES.decrypt(text, process.env.REACT_APP_B);\r\n return bytes.toString(CryptoJS.enc.Utf8);\r\n}\r\n\r\nexport function Decrypt2(text) {\r\n var bytes = CryptoJS.AES.decrypt(text, process.env.REACT_APP_B);\r\n return JSON.parse(bytes.toString(CryptoJS.enc.Utf8));\r\n}\r\n\r\nexport function VNIEncryptHeader(text) {\r\n return CryptoJS.AES.encrypt(text, process.env.REACT_APP_E).toString();\r\n}\r\nexport function VNIDecryptHeader(text) {\r\n var bytes = CryptoJS.AES.decrypt(text, process.env.REACT_APP_E);\r\n return JSON.parse(bytes.toString(CryptoJS.enc.Utf8));\r\n}\r\nexport function VNIEncryptBody(text) {\r\n return CryptoJS.AES.encrypt(JSON.stringify(text), process.env.REACT_APP_E).toString();\r\n}\r\nexport function VNIDecryptBody(text) {\r\n var bytes = CryptoJS.AES.decrypt(text, process.env.REACT_APP_E);\r\n return JSON.parse(bytes.toString(CryptoJS.enc.Utf8));\r\n}\r\n\r\n// QMS KIOSK\r\nexport function AdminSysEncryptHeader(text) {\r\n return CryptoJS.AES.encrypt(text, process.env.REACT_APP_K).toString();\r\n}\r\nexport function AdminSysDecryptHeader(text) {\r\n var bytes = CryptoJS.AES.decrypt(text, process.env.REACT_APP_K);\r\n return JSON.parse(bytes.toString(CryptoJS.enc.Utf8));\r\n}\r\nexport function AdminSysEncryptBody(text) {\r\n return CryptoJS.AES.encrypt(JSON.stringify(text), process.env.REACT_APP_K).toString();\r\n}\r\nexport function AdminSysDecryptBody(text) {\r\n var bytes = CryptoJS.AES.decrypt(text, process.env.REACT_APP_K);\r\n return JSON.parse(bytes.toString(CryptoJS.enc.Utf8));\r\n}\r\n\r\nexport function QMSEncryptHeader(text) {\r\n return CryptoJS.AES.encrypt(text, process.env.REACT_APP_J).toString();\r\n}\r\nexport function QMSDecryptHeader(text) {\r\n var bytes = CryptoJS.AES.decrypt(text, process.env.REACT_APP_J);\r\n return JSON.parse(bytes.toString(CryptoJS.enc.Utf8));\r\n}\r\nexport function QMSEncryptBody(text) {\r\n return CryptoJS.AES.encrypt(JSON.stringify(text), process.env.REACT_APP_J).toString();\r\n}\r\nexport function QMSDecryptBody(text) {\r\n var bytes = CryptoJS.AES.decrypt(text, process.env.REACT_APP_J);\r\n return JSON.parse(bytes.toString(CryptoJS.enc.Utf8));\r\n}","import { Encrypt, Decrypt } from \"./EncryptionHandler\";\r\n\r\n//BASE\r\nexport const AGORA_KYC_BASE = Decrypt(process.env.REACT_APP_webBaseUrl);\r\n\r\n// DOMAIN\r\nexport const AGORA_API_DOMAIN = Decrypt(process.env.REACT_APP_AGORA_API_DOMAIN);\r\nexport const DOCTOR_API_DOMAIN = Decrypt(process.env.REACT_APP_DOCTOR_API_DOMAIN);\r\nexport const WORKATO_API_DOMAIN = Decrypt(process.env.REACT_APP_WORKATO_API_DOMAIN);\r\n\r\nexport const AZURE_AGORA_API_DOMAIN = Decrypt(process.env.REACT_APP_AZURE_AGORA_API_DOMAIN);\r\nexport const AZURE_QMS_API_DOMAIN = Decrypt(process.env.REACT_APP_AZURE_QMS_API_DOMAIN);\r\n\r\n// AGORA API\r\nexport const ADMIN_LOCKEDOUT = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_ADMIN_LOCKEDOUT ));\r\nexport const POST_AVENTUS_SERVICES = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_POST_AVENTUS_SERVICES));\r\nexport const ALL_USERS = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_ALL_USERS));\r\nexport const ADD_USER = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_ADD_USER));\r\nexport const UPDATE_USER = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_UPDATE_USER));\r\nexport const APPROVED_APPLICATION = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_APPROVED_APPLICATION));\r\nexport const CHANGE_PW = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_CHANGE_PW));\r\nexport const DELETE_AVENTUS_SERVICES = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_DELETE_AVENTUS_SERVICES));\r\nexport const POST_DIGICARD = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_POST_DIGICARD));\r\nexport const APPROVAL_REQUEST = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_APPROVAL_REQUEST));\r\nexport const FP_CHANGE_PW = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_FP_CHANGE_PW));\r\nexport const GET_AVENTUS_SERVICES = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_GET_AVENTUS_SERVICES));\r\nexport const REACT_APP_GET_HMO_TAGGING = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_GET_HMO_TAGGING));\r\nexport const USER_LOGIN = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_USER_LOGIN));\r\nexport const REACT_APP_SEND_OTP = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_SEND_OTP));\r\nexport const REACT_APP_VALIDATE_OTP = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_VALIDATE_OTP));\r\nexport const REAPPROVED_APPLICATION = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_REAPPROVED_APPLICATION));\r\nexport const ADD_REMARKS = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_ADD_REMARKS));\r\nexport const DISAPPROVED_REMARKS = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_DISAPPROVED_REMARKS));\r\nexport const ALL_DISAPPROVED_REMARKS = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_ALL_DISAPPROVED_REMARKS));\r\nexport const UPDATE_REMARKS = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_UPDATE_REMARKS));\r\nexport const RESET_PASSWORD = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_RESET_PASSWORD));\r\nexport const APPROVAL_HISTORY = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_APPROVAL_HISTORY));\r\nexport const APPROVAL_HISTORY_MEMBUSER = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_APPROVAL_HISTORY_MEMBUSER));\r\nexport const APPROVAL_HISTORY_MONTHLY = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_APPROVAL_HISTORY_MONTHLY));\r\nexport const APPROVAL_HISTORY_PCIMEMB = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_APPROVAL_HISTORY_PCIMEMB));\r\nexport const APPROVAL_HISTORY_REPORT = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_APPROVAL_HISTORY_REPORT));\r\nexport const APPROVAL_HISTORY_SEARCH = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_APPROVAL_HISTORY_SEARCH));\r\nexport const UPDATE_AVENTUS_SERVICES = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_UPDATE_AVENTUS_SERVICES));\r\nexport const UPDATE_AVENTUS_SERVICES_STATUS = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_UPDATE_AVENTUS_SERVICES_STATUS));\r\nexport const REACT_APP_WAIVE_PASSWORD = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_WAIVE_PASSWORD));\r\nexport const GET_CORPACCT = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_GET_CORPACCT));\r\nexport const SYSACCESS_DELETE_MODACCESS = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_SYSACCESS_DELETE_MODACCESS));\r\nexport const SYSACCESS_GET_MODACCESS = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_SYSACCESS_GET_MODACCESS));\r\nexport const SYSACCESS_ADD_MODACCESS = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_SYSACCESS_ADD_MODACCESS));\r\nexport const SYSACCESS_EDIT_MODACCESS = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_SYSACCESS_EDIT_MODACCESS));\r\nexport const SYSACCESS_DELETE_ROLES = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_SYSACCESS_DELETE_ROLES));\r\nexport const SYSACCESS_GET_ROLES = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_SYSACCESS_GET_ROLES));\r\nexport const SYSACCESS_ADD_ROLES = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_SYSACCESS_ADD_ROLES));\r\nexport const SYSACCESS_EDIT_ROLES = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_SYSACCESS_EDIT_ROLES));\r\nexport const SYSACCESS_DELETE_ROLESACCESS = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_SYSACCESS_DELETE_ROLESACCESS));\r\nexport const SYSACCESS_GET_ROLESACCESS = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_SYSACCESS_GET_ROLESACCESS));\r\nexport const SYSACCESS_INSERT_ROLESACCESS = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_SYSACCESS_INSERT_ROLESACCESS));\r\nexport const SYSACCESS_DELETE_TABACCESS = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_SYSACCESS_DELETE_TABACCESS));\r\nexport const SYSACCESS_GET_TABACCESS = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_SYSACCESS_GET_TABACCESS));\r\nexport const SYSACCESS_ADD_TABACCESS = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_SYSACCESS_ADD_TABACCESS));\r\nexport const SYSACCESS_EDIT_TABACCESS = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_SYSACCESS_EDIT_TABACCESS));\r\nexport const SYSACCESS_GET_USERSYSTEMACCESS = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_SYSACCESS_GET_USERSYSTEMACCESS));\r\nexport const GET_ALL_ADVISORY = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_GET_ALL_ADVISORY));\r\nexport const POST_ADVISORY = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_POST_ADVISORY));\r\nexport const UPDATE_ADVISORY = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_UPDATE_ADVISORY));\r\nexport const REACT_APP_AGORAPOD_ADD_TERMINAL = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_AGORAPOD_ADD_TERMINAL));\r\nexport const REACT_APP_AGORAPOD_TERMINAL_ALL = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_AGORAPOD_TERMINAL_ALL));\r\nexport const REACT_APP_AGORAPOD_UPDATE_TERMINAL = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_AGORAPOD_UPDATE_TERMINAL));\r\nexport const POST_DIGICARD_CONFIG = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_POST_DIGICARD_CONFIG));\r\nexport const DISABLE_FEATURE = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_DISABLE_FEATURE));\r\nexport const GET_ACCOUNT_BY_CORPACCT = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_GET_ACCOUNT_BY_CORPACCT));\r\nexport const GET_ACCOUNT_BY_NAME = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_GET_ACCOUNT_BY_NAME));\r\nexport const GET_ALL_SUSPENDED = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_GET_ALL_SUSPENDED));\r\nexport const GET_DIGICARD_CONFIG = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_GET_DIGICARD_CONFIG));\r\nexport const GET_DIGICARD_DETAILS = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_GET_DIGICARD_DETAILS));\r\nexport const GET_DIGICARD_CONFIG_UI = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_GET_DIGICARD_CONFIG_UI));\r\nexport const GET_DISABLED_FEATURES = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_GET_DISABLED_FEATURES));\r\nexport const ADD_SUSPENDED_ACCOUNT = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_ADD_SUSPENDED_ACCOUNT));\r\nexport const UNDO_DISABLE_FEATURE = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_UNDO_DISABLE_FEATURE));\r\nexport const UPDATE_DIGICARD_CONFIG = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_UPDATE_DIGICARD_CONFIG));\r\nexport const UPDATE_SUSPENDED_STATUS = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_UPDATE_SUSPENDED_STATUS));\r\nexport const ADD_DELIGHTS = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_ADD_DELIGHTS));\r\nexport const ADD_CATEGORY = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_ADD_CATEGORY));\r\nexport const ADD_STORE = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_ADD_STORE));\r\nexport const GET_DELIGHTS_CATEGORY = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_GET_DELIGHTS_CATEGORY));\r\nexport const GET_DELIGHTS = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_GET_DELIGHTS));\r\nexport const GET_STORES = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_GET_STORES));\r\nexport const UPDATE_DELIGHTS_wo_PIC = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_UPDATE_DELIGHTS_wo_PIC));\r\nexport const UPDATE_DELIGHTS_w_PIC = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_UPDATE_DELIGHTS_w_PIC));\r\nexport const UPDATE_CATEGORY = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_UPDATE_CATEGORY));\r\nexport const UPDATE_STORE = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_UPDATE_STORE));\r\nexport const DOWNLOADIMAGE_RENEWAL = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_DOWNLOADIMAGE_RENEWAL));\r\nexport const GET_RENEWAL_FILES = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_GET_RENEWAL_FILES));\r\nexport const UPLOADIMAGE_RENEWAL = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_UPLOADIMAGE_RENEWAL));\r\nexport const ADD_FEATURES = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_ADD_FEATURES));\r\nexport const DELETE_FEATURES = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_DELETE_FEATURES));\r\nexport const EDIT_FEATURES = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_EDIT_FEATURES));\r\nexport const GET_ALL_FEATURES = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_GET_ALL_FEATURES));\r\nexport const ADD_SVRCONFIG = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_ADD_SVRCONFIG));\r\nexport const GET_ALLSVRCONFIG = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_GET_ALLSVRCONFIG));\r\nexport const UPDATE_SVRLISTCONFIG = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_UPDATE_SVRCONFIG));\r\nexport const ADD_SVRLIST = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_ADD_SVRLIST));\r\nexport const GET_ALLSVRLIST = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_GET_ALLSVRLIST));\r\nexport const UPDATE_SVRLIST = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_UPDATE_SVRLIST));\r\nexport const ADD_SVRURL = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_ADD_SVRURL));\r\nexport const GET_ALLSVRURL = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_GET_ALLSVRURL));\r\nexport const UPDATE_SVRURL = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_UPDATE_SVRURL));\r\nexport const DOWNLOADIMAGE = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_DOWNLOADIMAGE));\r\nexport const IMAGES_PATH = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_IMAGES_PATH));\r\nexport const MEMBER_FILES = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_MEMBER_FILES));\r\nexport const GET_CUSTOMIZED_FIELDS = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_GET_CUSTOMIZED_FIELDS));\r\nexport const GET_CUSTOMIZED_ACCOUNTS = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_GET_CUSTOMIZED_ACCOUNTS));\r\nexport const ADD_NEWSLETTER = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_ADD_NEWSLETTER));\r\nexport const GET_NEWSLETTER = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_GET_NEWSLETTER));\r\nexport const UPDATE_NEWSLETTER_w_PIC = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_UPDATE_NEWSLETTER_w_PIC));\r\nexport const UPDATE_NEWSLETTER_wo_PIC = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_UPDATE_NEWSLETTER_wo_PIC));\r\nexport const REACT_APP_GET_RATING_REPORT = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_GET_RATING_REPORT));\r\nexport const MEMBERFILE_UPLOAD_V2 = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_MEMBERFILE_UPLOAD_V2));\r\nexport const REACT_APP_ADD_BANKS = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_ADD_BANKS));\r\nexport const GET_ALL_BANKS = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_GET_ALL_BANKS));\r\nexport const REACT_APP_GET_CORPORATE_PLAN = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_GET_CORPORATE_PLAN));\r\nexport const REACT_APP_GET_CURRENT_BANKS = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_GET_CURRENT_BANKS));\r\nexport const REACT_APP_GET_BANKLIST = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_GET_BANKLIST));\r\nexport const REACT_APP_UPDATE_BANK_INCLUSION = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_UPDATE_BANK_INCLUSION));\r\nexport const GET_REQUEST_LOGS = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_GET_REQUEST_LOGS));\r\nexport const AGORA_LOCKEDOUT = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_AGORA_LOCKEDOUT));\r\nexport const POST_USER_STAT = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_POST_USER_STAT));\r\nexport const CHECK_SESSION = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_CHECK_SESSION));\r\nexport const LOGOUT_USER_STAT = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_LOGOUT_USER_STAT));\r\nexport const FORGOT_PASSWORD = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_FORGOT_PASSWORD));\r\nexport const VERIFY_OTP = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_VERIFY_OTP));\r\nexport const CONCURRENTLOGIN = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_CONCURRENTLOGIN));\r\nexport const GET_DIGICARD_BASE64 = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_GET_DIGICARD_BASE64));\r\nexport const GET_DIGICARD_MEMBER = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_GET_DIGICARD_MEMBER));\r\nexport const GET_ALL_RCS_VALIDITY_CONFIG = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_GET_ALL_RCS_VALIDITY_CONFIG));\r\nexport const ADD_RCS_VALIDITY_CONFIG = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_ADD_RCS_VALIDITY_CONFIG));\r\nexport const UPDATE_RCS_VALIDITY_CONFIG = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_UPDATE_RCS_VALIDITY_CONFIG));\r\nexport const DELETE_RCS_VALIDITY_CONFIG = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_DELETE_RCS_VALIDITY_CONFIG));\r\nexport const SEARCH_RCS_VALIDITY_CONFIG = Encrypt(AZURE_AGORA_API_DOMAIN + Decrypt(process.env.REACT_APP_SEARCH_RCS_VALIDITY_CONFIG));\r\n\r\n\r\n// DOCTOR API\r\nexport const INSERT_BANK_RECORDS = Encrypt(DOCTOR_API_DOMAIN + Decrypt(process.env.REACT_APP_INSERTBANKRECORD));\r\nexport const DOCTORSAPP_FOR_APPROVAL = Encrypt(DOCTOR_API_DOMAIN + Decrypt(process.env.REACT_APP_DOCTORSAPP_FOR_APPROVAL));\r\nexport const DOCTORSAPP_APPROVE_APPLICATION = Encrypt(DOCTOR_API_DOMAIN + Decrypt(process.env.REACT_APP_DOCTORSAPP_APPROVE_APPLICATION));\r\nexport const DOCTORSAPP_APPROVAL_HISTORY = Encrypt(DOCTOR_API_DOMAIN + Decrypt(process.env.REACT_APP_DOCTORSAPP_APPROVAL_HISTORY));\r\nexport const DOCTORSAPP_APPROVAL_HISTORY_MONTHLY = Encrypt(DOCTOR_API_DOMAIN + Decrypt(process.env.REACT_APP_DOCTORSAPP_APPROVAL_HISTORY_MONTHLY));\r\nexport const DOCTORSAPP_APPROVAL_HISTORY_SEARCH = Encrypt(DOCTOR_API_DOMAIN + Decrypt(process.env.REACT_APP_DOCTORSAPP_APPROVAL_HISTORY_SEARCH));\r\nexport const DOCTORSAPP_DISAPPROVE_REMARKS = Encrypt(DOCTOR_API_DOMAIN + Decrypt(process.env.REACT_APP_DOCTORSAPP_DISAPPROVE_REMARKS));\r\nexport const DOCTORSAPP_GETIMAGE = Encrypt(DOCTOR_API_DOMAIN + Decrypt(process.env.REACT_APP_DOCTORSAPP_GETIMAGE));\r\nexport const DOCTORSAPP_GETFILES = Encrypt(DOCTOR_API_DOMAIN + Decrypt(process.env.REACT_APP_DOCTORSAPP_GETFILES));\r\nexport const USER_LOGIN_DOCTORS = Encrypt(DOCTOR_API_DOMAIN + Decrypt(process.env.REACT_APP_USER_LOGIN_DOCTORS));\r\nexport const POST_USER_STAT_DOCTORS = Encrypt(DOCTOR_API_DOMAIN + Decrypt(process.env.REACT_APP_POST_USER_STAT_DOCTORS));\r\nexport const LOGOUT_USER_STAT_DOCTORS = Encrypt(DOCTOR_API_DOMAIN + Decrypt(process.env.REACT_APP_LOGOUT_USER_STAT_DOCTORS));\r\nexport const ADD_USER_ARUGA = Encrypt(DOCTOR_API_DOMAIN + Decrypt(process.env.REACT_APP_ADD_USER_ARUGA));\r\nexport const ALL_USERS_ARUGA = Encrypt(DOCTOR_API_DOMAIN + Decrypt(process.env.REACT_APP_ALL_USERS_ARUGA));\r\nexport const UPDATE_USER_ARUGA = Encrypt(DOCTOR_API_DOMAIN + Decrypt(process.env.REACT_APP_UPDATE_USER_ARUGA));\r\nexport const FORGOT_PASSWORD_DOCTORS = Encrypt(DOCTOR_API_DOMAIN + Decrypt(process.env.REACT_APP_FORGOT_PASSWORD_DOCTORS));\r\nexport const VERIFY_OTP_DOCTORS = Encrypt(DOCTOR_API_DOMAIN + Decrypt(process.env.REACT_APP_VERIFY_OTP_DOCTORS));\r\nexport const FP_CHANGE_PW_DOCTORS = Encrypt(DOCTOR_API_DOMAIN + Decrypt(process.env.REACT_APP_FP_CHANGE_PW_DOCTORS));\r\nexport const CONCURRENTLOGIN_DOCTORS = Encrypt(DOCTOR_API_DOMAIN + Decrypt(process.env.REACT_APP_CONCURRENTLOGIN_DOCTORS));\r\nexport const ARUGA_LOCKEDOUT = Encrypt(DOCTOR_API_DOMAIN + Decrypt(process.env.REACT_APP_ARUGA_LOCKEDOUT));\r\nexport const ADMIN_LOCKEDOUT_DOCTORS = Encrypt(DOCTOR_API_DOMAIN + Decrypt(process.env.REACT_APP_ADMIN_LOCKEDOUT_DOCTORS));\r\nexport const GET_ALL_ANNOUNCEMENT = Encrypt(DOCTOR_API_DOMAIN + Decrypt(process.env.REACT_APP_GET_ALL_ANNOUNCEMENT));\r\nexport const ADD_ANNOUNCEMENT = Encrypt(DOCTOR_API_DOMAIN + Decrypt(process.env.REACT_APP_ADD_ANNOUNCEMENT));\r\nexport const UPDATE_ANNOUNCEMENT = Encrypt(DOCTOR_API_DOMAIN + Decrypt(process.env.REACT_APP_UPDATE_ANNOUNCEMENT));\r\nexport const UPDATE_ANNOUNCEMENT_IMAGE = Encrypt(DOCTOR_API_DOMAIN + Decrypt(process.env.REACT_APP_UPDATE_ANNOUNCEMENT_IMAGE));\r\nexport const DOCTORS_GET_ALL_ADVISORY = Encrypt(DOCTOR_API_DOMAIN + Decrypt(process.env.REACT_APP_DOCTORS_GET_ALL_ADVISORY));\r\nexport const DOCTORS_GET_CURRENT_ADVISORY = Encrypt(DOCTOR_API_DOMAIN + Decrypt(process.env.REACT_APP_DOCTORS_GET_CURRENT_ADVISORY));\r\nexport const DOCTORS_MODIFY_ADVISORY = Encrypt(DOCTOR_API_DOMAIN + Decrypt(process.env.REACT_APP_DOCTORS_MODIFY_ADVISORY));\r\nexport const DOCTORS_POST_ADVISORY = Encrypt(DOCTOR_API_DOMAIN + Decrypt(process.env.REACT_APP_DOCTORS_POST_ADVISORY));\r\nexport const REACT_APP_GET_ALL_FEATURES_ARUGA = Encrypt(DOCTOR_API_DOMAIN + Decrypt(process.env.REACT_APP_GET_ALL_FEATURES_ARUGA));\r\nexport const REACT_APP_EDIT_FEAUTES_ARUGA = Encrypt(DOCTOR_API_DOMAIN + Decrypt(process.env.REACT_APP_EDIT_FEAUTES_ARUGA));\r\nexport const REACT_APP_ADD_FEATURE_ARUGA = Encrypt(DOCTOR_API_DOMAIN + Decrypt(process.env.REACT_APP_ADD_FEATURE_ARUGA));\r\nexport const REACT_APP_DELETE_FEATURE_ARUGA = Encrypt(DOCTOR_API_DOMAIN + Decrypt(process.env.REACT_APP_DELETE_FEATURE_ARUGA));\r\nexport const REACT_APP_SEND_OTP_DOCTORS = Encrypt(DOCTOR_API_DOMAIN + Decrypt(process.env.REACT_APP_SEND_OTP_DOCTORS));\r\nexport const REACT_APP_VALIDATE_OTP_DOCTORS = Encrypt(DOCTOR_API_DOMAIN + Decrypt(process.env.REACT_APP_VALIDATE_OTP_DOCTORS));\r\nexport const EBILLING_GETEMAILASSIGNMENT = Encrypt(DOCTOR_API_DOMAIN + Decrypt(process.env.REACT_APP_EBILLING_GETEMAILASSIGNMENT));\r\nexport const EBILLING_GETREGION = Encrypt(DOCTOR_API_DOMAIN + Decrypt(process.env.REACT_APP_EBILLING_GETREGION));\r\nexport const EBILLING_GETPROVINCE = Encrypt(DOCTOR_API_DOMAIN + Decrypt(process.env.REACT_APP_EBILLING_GETPROVINCE));\r\nexport const EBILLING_GETPMUNICIPAL = Encrypt(DOCTOR_API_DOMAIN + Decrypt(process.env.REACT_APP_EBILLING_GETPMUNICIPAL));\r\nexport const EBILLING_UPDATE = Encrypt(DOCTOR_API_DOMAIN + Decrypt(process.env.REACT_APP_EBILLING_UPDATE));\r\nexport const EBILLING_INSERT = Encrypt(DOCTOR_API_DOMAIN + Decrypt(process.env.REACT_APP_EBILLING_INSERT));\r\nexport const DOCTORS_UPDATE_ADVISORY = Encrypt(DOCTOR_API_DOMAIN + Decrypt(process.env.REACT_APP_DOCTORS_UPDATE_ADVISORY));\r\n\r\n\r\n// AZURE QMS API\r\nexport const REACT_APP_SHAREDLOGIN_AUTHORIZED = process.env.REACT_APP_SHAREDLOGIN_AUTHORIZED;\r\nexport const REACT_APP_KIOSK_TERMINAL_ADD = Encrypt(AZURE_QMS_API_DOMAIN + Decrypt(process.env.REACT_APP_KIOSK_TERMINAL_ADD));\r\nexport const REACT_APP_KIOSK_TERMINAL_ALL = Encrypt(AZURE_QMS_API_DOMAIN + Decrypt(process.env.REACT_APP_KIOSK_TERMINAL_ALL));\r\nexport const REACT_APP_KIOSK_TERMINAL_EDIT = Encrypt(AZURE_QMS_API_DOMAIN + Decrypt(process.env.REACT_APP_KIOSK_TERMINAL_EDIT));\r\n\r\n// WORKATO API\r\nexport const WORKATO_ACCESSTOKEN = process.env.REACT_APP_WORKATO_ACCESSTOKEN;\r\nexport const GET_WORKATOMEMBER_INFO = Encrypt(WORKATO_API_DOMAIN + Decrypt(process.env.REACT_APP_GET_WORKATOMEMBER_INFO));\r\n\r\n\r\n// VARIABLES\r\nexport const REACT_APP_A = process.env.REACT_APP_A;\r\nexport const REACT_APP_B = process.env.REACT_APP_B;\r\nexport const REACT_APP_C = process.env.REACT_APP_C;\r\nexport const REACT_APP_D = process.env.REACT_APP_D;\r\nexport const REACT_APP_E = process.env.REACT_APP_E;\r\nexport const REACT_APP_F = process.env.REACT_APP_F;\r\nexport const REACT_APP_G = process.env.REACT_APP_G;\r\nexport const REACT_APP_H = process.env.REACT_APP_H;\r\nexport const REACT_APP_I = process.env.REACT_APP_I;\r\nexport const REACT_APP_J = process.env.REACT_APP_J;\r\nexport const REACT_APP_K = process.env.REACT_APP_K;\r\nexport const REACT_APP_L = process.env.REACT_APP_L;\r\nexport const REACT_APP_M = process.env.REACT_APP_M;\r\n","import React, { useState } from \"react\";\r\nimport { useHistory, Link } from \"react-router-dom\";\r\nimport { useToasts } from \"react-toast-notifications\";\r\nimport {\r\n Select,\r\n Menu,\r\n Icon,\r\n Modal,\r\n Input,\r\n Button,\r\n Alert,\r\n DatePicker,\r\n} from \"antd\";\r\nimport * as FileSaver from \"file-saver\";\r\nimport * as XLSX from \"xlsx\";\r\nimport jsPDF from \"jspdf\";\r\nimport \"jspdf-autotable\";\r\n\r\nimport { CHANGE_PW } from \"../util/live_api\";\r\nimport {\r\n Decrypt,\r\n EncryptHeader,\r\n Encrypt2,\r\n Decrypt2,\r\n} from \"../util/EncryptionHandler\";\r\nimport * as API from \"../util/live_api\";\r\nvar Recaptcha = require(\"react-recaptcha\");\r\nlet recaptchaInstance;\r\nconst { SubMenu } = Menu;\r\nconst { Option } = Select;\r\nconst { RangePicker } = DatePicker;\r\n\r\nexport default function NavBar() {\r\n const [filetype, setFiletype] = useState(\"\");\r\n const [visible, setVisible] = useState(false);\r\n const [isVisible, setVisibleLogsModal] = useState(false);\r\n const [privacyModal, setPrivacyModal] = useState(false);\r\n const [oldPassword, setOldPassword] = useState(\"\");\r\n const [newPassword, setNewPassword] = useState(\"\");\r\n const [confirmPass, setConfirmPass] = useState(\"\");\r\n const [startDate, setStartDate] = useState(\"\");\r\n const [endDate, setEndDate] = useState(\"\");\r\n const [recaptchaVerified, setRecaptchaVerified] = useState(false);\r\n const [filterType, setFilterType] = useState(\"\");\r\n const [filterTypeSource, setFilterTypeSource] = useState(\"\");\r\n const [filterTypeApp, setFilterTypeApp] = useState(\"\");\r\n const [filename, setFilename] = useState(\"\");\r\n let applicationname = JSON.parse(localStorage.getItem(\"appName\"));\r\n\r\n let xlsreport = [];\r\n const file_Type =\r\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8\";\r\n const fileExtension = \".xlsx\";\r\n\r\n const formatDateRequestLog = \"YYYY-MM-DD\";\r\n let history = useHistory();\r\n let user_info = JSON.parse(localStorage.getItem(\"user_info\"));\r\n let current_pw = localStorage.getItem(\"current_pw\");\r\n let appName = JSON.parse(localStorage.getItem(\"appName\"));\r\n\r\n const { addToast } = useToasts();\r\n\r\n if (!user_info) return null;\r\n\r\n function renderDisabledSave() {\r\n if (\r\n oldPassword.trim() === \"\" ||\r\n newPassword.trim() === \"\" ||\r\n confirmPass.trim() === \"\" ||\r\n newPassword.length < 8 ||\r\n newPassword !== confirmPass\r\n )\r\n return true;\r\n return false;\r\n }\r\n\r\n function exportToXLSX(xlsdata) {\r\n let filterdate = xlsdata.filter((data) => {\r\n switch (filterType) {\r\n case \"Success\":\r\n return data.statuscode == \"200\" || data.statuscode == \"201\";\r\n case \"Failed\":\r\n return data.statuscode != \"201\" && data.statuscode != \"200\";\r\n default:\r\n return data;\r\n }\r\n });\r\n\r\n let filterapp = filterdate.filter((data) => {\r\n switch (filterTypeApp) {\r\n case \"Telaventus\":\r\n return data.application == \"TelAventus\";\r\n case \"Medgate\":\r\n return data.application == \"Medgate\";\r\n default:\r\n return data;\r\n }\r\n });\r\n\r\n let filtersource = filterapp.filter((data) => {\r\n switch (filterTypeSource) {\r\n case \"Agoraapp\":\r\n return data.source == \"AgoraApp\";\r\n case \"Agoraweb\":\r\n return data.source == \"AgoraWeb\";\r\n default:\r\n return data;\r\n }\r\n });\r\n filtersource.forEach((report) => {\r\n xlsreport = xlsreport.concat({\r\n Request_Time: report.reqtime,\r\n Request_Body: report.reqbody,\r\n Request_URI: report.uri,\r\n Request_Status: report.statuscode,\r\n Request_Message: report.errormsg,\r\n Request_App: report.application,\r\n Response_Time: report.resptime,\r\n Request_Source: report.source,\r\n Request_Account: report.acctnum,\r\n Request_Mobile: report.mobileno,\r\n });\r\n });\r\n const ws = XLSX.utils.json_to_sheet(xlsreport);\r\n const wb = { Sheets: { Request_Logs: ws }, SheetNames: [\"Request_Logs\"] };\r\n const excelBuffer = XLSX.write(wb, { bookType: \"xlsx\", type: \"array\" });\r\n const data = new Blob([excelBuffer], { type: file_Type });\r\n FileSaver.saveAs(data, filename + fileExtension);\r\n setFilename(\"\");\r\n // setFilterType(\"\");\r\n // setFilterTypeApp(\"\");\r\n // setFilterTypeSource(\"\");\r\n }\r\n\r\n async function handleRequestLogs() {\r\n if (startDate == \"\" || endDate == \"\")\r\n return alert(\"Please input date range.\");\r\n if (filterType == \"\") return alert(\"Select status filter\");\r\n if (filterTypeApp == \"\") return alert(\"Select application filter\");\r\n // if (filterTypeSource == \"\") return alert(\"Select source filter\");\r\n\r\n let EncStartDate = EncryptHeader(startDate);\r\n let EncEndDate = EncryptHeader(endDate);\r\n\r\n let logresp = await fetch(Decrypt(API.GET_REQUEST_LOGS), {\r\n method: \"GET\",\r\n headers: {\r\n DateFrom: EncStartDate,\r\n DateTo: EncEndDate,\r\n },\r\n });\r\n\r\n let logrespJson = await logresp.json();\r\n\r\n if (logrespJson) {\r\n let decrypted = logrespJson.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n return newD;\r\n });\r\n\r\n return exportToXLSX(decrypted);\r\n } else {\r\n addToast(logrespJson.error_message, {\r\n appearance: \"error\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n }\r\n }\r\n\r\n async function handleSaveChangePass() {\r\n var regularExpression = new RegExp(\r\n \"^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#$%^&*_])(?=.{8,50})\"\r\n );\r\n if (newPassword.length < 6) {\r\n return alert(\"Oops, Password too short\");\r\n }\r\n if (!regularExpression.test(newPassword)) {\r\n return alert(\r\n \"Oops, Password should contain atleast one number, one upper case and one special character.\"\r\n );\r\n }\r\n if (recaptchaVerified === false) {\r\n return alert(\"Please verified that you are human!\");\r\n }\r\n try {\r\n let Value = Encrypt2({\r\n recordid: user_info.data.recordid,\r\n emailaddress: user_info.data.emailaddress,\r\n oldpassword: oldPassword,\r\n newpassword: newPassword,\r\n edited_by: user_info.data.emailaddress,\r\n });\r\n let resp = await fetch(Decrypt(CHANGE_PW), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ Value }),\r\n });\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText);\r\n if (respJson.success) {\r\n addToast(\"Password Successfully Updated\", {\r\n appearance: \"success\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n setVisible(false);\r\n // localStorage.removeItem(\"user_info\");\r\n // localStorage.removeItem(\"current_pw\");\r\n resetRecaptcha();\r\n // history.push(\"/\");\r\n SessionUpdate();\r\n } else {\r\n addToast(respJson.message, {\r\n appearance: \"warning\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n }\r\n } catch (error) {\r\n alert(\"Internal Server Error\");\r\n }\r\n }\r\n function verifyCallback(response) {\r\n if (response) {\r\n setRecaptchaVerified(true);\r\n }\r\n }\r\n function resetRecaptcha() {\r\n recaptchaInstance.reset();\r\n }\r\n async function SessionUpdate() {\r\n let EncryptedEmail = EncryptHeader(user_info.data.emailaddress);\r\n\r\n let stat_respJson = await LogoutStatus(EncryptedEmail);\r\n\r\n if (stat_respJson.success) {\r\n localStorage.removeItem(\"user_info\");\r\n localStorage.removeItem(\"current_pw\");\r\n history.push(\"/\");\r\n } else {\r\n addToast(stat_respJson.message, {\r\n appearance: \"error\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 2000,\r\n });\r\n }\r\n }\r\n\r\n async function LogoutStatus(EncryptedEmail) {\r\n if (appName === \"AGORA\") {\r\n let stat_resp = await fetch(Decrypt(API.LOGOUT_USER_STAT), {\r\n method: \"POST\",\r\n headers: {\r\n Email: EncryptedEmail,\r\n },\r\n });\r\n let stat_respText = await stat_resp.text();\r\n let stat_respJson = await Decrypt2(stat_respText.replace(/\"/g, \"\"));\r\n\r\n return stat_respJson;\r\n } else {\r\n let stat_resp = await fetch(Decrypt(API.LOGOUT_USER_STAT_DOCTORS), {\r\n method: \"POST\",\r\n headers: {\r\n Email: EncryptedEmail,\r\n },\r\n });\r\n let stat_respText = await stat_resp.text();\r\n let stat_respJson = await Decrypt2(stat_respText.replace(/\"/g, \"\"));\r\n\r\n return stat_respJson;\r\n }\r\n }\r\n return (\r\n
\r\n \r\n \r\n \r\n {user_info.data.department === \"INT MRD\"\r\n ? \"Intellicare Doctors Portal\"\r\n : \"Intellicare Admin\"}{\" \"}\r\n \r\n \r\n \r\n \r\n \r\n Dashboard\r\n \r\n \r\n\r\n {/* FOR INTELLICARE APD USERS */}\r\n {user_info.data.department === \"INT APD\" ? (\r\n \r\n \r\n Suspend Corporate Account\r\n \r\n \r\n ) : null}\r\n\r\n {user_info.data.department === \"INT APD\" ? (\r\n \r\n \r\n \r\n Disable Features per CorpAccount\r\n \r\n \r\n \r\n ) : null}\r\n\r\n {/* FOR AVEGA APD USERS */}\r\n {user_info.data.department === \"AVG APD\" ? (\r\n \r\n \r\n Suspend Corporate Account\r\n \r\n \r\n ) : null}\r\n\r\n {user_info.data.department === \"AVG APD\" ? (\r\n \r\n \r\n \r\n Disable Features per CorpAccount\r\n \r\n \r\n \r\n ) : null}\r\n\r\n {user_info.data.department === \"INT MRD\" ? (\r\n \r\n \r\n Announcement\r\n \r\n \r\n ) : null}\r\n {user_info.data.role === \"1\" ? (\r\n \r\n \r\n File Management\r\n \r\n }\r\n >\r\n \r\n \r\n Users\r\n \r\n \r\n \r\n \r\n Suspend Corporate Account\r\n \r\n \r\n \r\n \r\n Disable Features per CorpAccount\r\n \r\n \r\n \r\n \r\n Survey Report\r\n \r\n \r\n \r\n \r\n QMS KIOSK\r\n \r\n \r\n \r\n \r\n Disapproved Remarks\r\n \r\n \r\n {\r\n setVisibleLogsModal(true);\r\n }}\r\n >\r\n \r\n Medgate and TelAventus Request Logs\r\n \r\n \r\n \r\n Features Control\r\n \r\n \r\n \r\n \r\n Email Features Configuration\r\n \r\n \r\n \r\n \r\n Email Maintenance Configuration\r\n \r\n \r\n {/* \r\n \r\n DigiCard\r\n \r\n */}\r\n \r\n \r\n Concurrent Reset\r\n \r\n \r\n \r\n \r\n Locked Out Reset\r\n \r\n \r\n {\r\n setVisibleLogsModal(true);\r\n }}\r\n >\r\n \r\n Request Logs\r\n \r\n {appName === \"AGORA\" ? (\r\n \r\n \r\n Agora Advisory\r\n \r\n \r\n ) : (\r\n \r\n \r\n Aruga Advisory\r\n \r\n \r\n )}\r\n \r\n ) : null}\r\n\r\n \r\n \r\n Account\r\n \r\n }\r\n style={{ float: \"right\" }}\r\n >\r\n {\r\n setOldPassword(\"\");\r\n setNewPassword(\"\");\r\n setConfirmPass(\"\");\r\n setVisible(true);\r\n }}\r\n >\r\n \r\n Change Password\r\n \r\n setPrivacyModal(true)}>\r\n \r\n Privacy Policy\r\n \r\n {\r\n SessionUpdate();\r\n }}\r\n >\r\n \r\n Logout\r\n \r\n \r\n \r\n \r\n
\r\n Agora App Privacy Notice\r\n
\r\n \r\n Updated May 18, 2020\r\n \r\n
,\r\n ]}\r\n width={800}\r\n closable={false}\r\n visible={privacyModal}\r\n footer={[\r\n setPrivacyModal(false)}\r\n >\r\n Understood\r\n ,\r\n ]}\r\n style={{ top: 10 }}\r\n >\r\n
\r\n \r\n
Hi Agora App User,
\r\n

\r\n Asalus Corporation (Intellicare) and Avega Managed Care (Avega)\r\n values your privacy and this notice are meant to help you\r\n understand how we protect the information you provide.\r\n

\r\n

\r\n Our people are working hard to ensure you remain in control of\r\n your data. So please take time to read this before you continue\r\n signing up.\r\n

\r\n\r\n
What we collect and why.
\r\n

\r\n We built this App to provide you with the most efficient services\r\n we can offer in the market, improve our services and personalize\r\n them to your needs to the extent possible. This App allows us to\r\n provide you information on your HMO coverage, our partner medical\r\n institutions and our Company and to interact with you directly.\r\n But to do this we need the following information from your end\r\n

\r\n
  • \r\n 1. Your name, sex, and age\r\n
  • \r\n
  • \r\n 2. Your address\r\n
  • \r\n
  • \r\n 3. Your contact number\r\n
  • \r\n
  • \r\n 4. Intellicare Account Number\r\n
  • \r\n
  • \r\n 5. Intellicare Card Number\r\n
  • \r\n
  • \r\n 6. Copy of a Government Issued ID\r\n
  • \r\n
  • \r\n 7. Copy of your Intellicare Card ID\r\n
  • \r\n

    \r\n This set of information will be used further for other purposes.\r\n Specifically, we collect your name, sex, age, address,\r\n Intellicare/Avega Details, and Identification Cards to verify your\r\n identity and membership in the Intellicare/Avega Network and to\r\n reach out to you in cases of public service announcements.\r\n Collecting your contact details like mobile number and email\r\n allows us to send you confirmation of registration in this App, as\r\n well as updates and materials you may like. For example, if there\r\n are updates in our services, you will know them with a\r\n notification sent via this App. Please note, we will only send you\r\n marketing materials if you give your specific consent, which you\r\n will see later on.\r\n

    \r\n

    \r\n All those we collect from you are treated as private and\r\n confidential.\r\n

    \r\n\r\n
    \r\n Reviewing, Updating, Removing and deleting your information\r\n
    \r\n

    \r\n You can request to update and delete App account information by\r\n sending your request to our data protection officer, via\r\n dpo@intellicare.net.ph\r\n

    \r\n

    \r\n Note, however, that deleting your account information will\r\n automatically result in the deactivation of your access to this\r\n App.\r\n

    \r\n

    \r\n To be clear, your HMO information is treated separately and is\r\n subject to the Privacy Policy of Intellicare/Avega and the Benefit\r\n Plan of your Employer. In other words, deleting App account\r\n information does not result in the deletion of your HMO\r\n information as the latter is governed by the Benefit Plan provided\r\n by your employer. But if you want to withdraw your consent to our\r\n use and/or disclosure of your personal data for the delivery of\r\n HMO services, just bear in mind that we may no longer be able to\r\n serve you nor provide you with the products and services that you\r\n require.\r\n

    \r\n\r\n
    \r\n When Intellicare/Avega shares your information\r\n
    \r\n

    \r\n Intellicare/Avega will only share your information if:\r\n

    \r\n
  • \r\n 1. You gave your consent;\r\n
  • \r\n
  • \r\n 2. The processing of personal information is necessary and is\r\n related to the fulfillment of the HMO contract with your Employer,\r\n
  • \r\n
  • \r\n 3. The processing is necessary for compliance with a legal\r\n obligation to which Intellicare/Avega or your Employer is subject,\r\n
  • \r\n
  • \r\n 4. The processing is necessary to protect your vitally important\r\n interests, including life and health,\r\n
  • \r\n
  • \r\n 5. The processing is necessary in order to respond to national\r\n emergency, to comply with the requirements of public order and\r\n safety, or to fulfill functions of public authority which\r\n necessarily includes the processing of personal data for the\r\n fulfillment of its mandate; or\r\n
  • \r\n
  • \r\n 6. The processing is necessary for the purposes of the legitimate\r\n interests pursued by Intellicare/Avega or your Employer or by a\r\n third party or parties to whom the data are disclosed, except\r\n where such interests are overridden by fundamental rights and\r\n freedoms of the data subject which require protection under the\r\n Philippine Constitution.\r\n
  • \r\n\r\n
    To whom we may Disclose
    \r\n

    \r\n Your information may be disclosed subject to the above-stated\r\n conditions only and the requirements of the Data Privacy Act to:\r\n

    \r\n
  • \r\n 1. Your Human Resource Department as far as HMO utilization is\r\n concerned and your eligibility as a member of the\r\n Intellicare/Avega Network\r\n
  • \r\n
  • \r\n 2. Courts, Law Enforcement Authorities and Regulators but only\r\n upon their lawful orders\r\n
  • \r\n
  • \r\n 3. Lawyers or any person whenever there is a need to protect the\r\n rights of Intellicare/Avega and your Employer; provided that the\r\n information is absolutely necessary.\r\n
  • \r\n\r\n
    \r\n We build security into our services to protect your information\r\n
    \r\n

    \r\n We strive to build the best security precautions to ensure that\r\n the information you provide is protected against unauthorized or\r\n unintended access. We can assure you that internationally\r\n acceptable standards are in place so you will feel comfortable\r\n trusting us with your data.\r\n

    \r\n\r\n
    Retention
    \r\n

    \r\n Your information is retained for the period of time for as long as\r\n the purpose for which the personal data was collected continues.\r\n

    \r\n

    \r\n We will destroy the personal data thereafter, unless it is\r\n necessary to retain the personal data longer for our satisfaction\r\n and compliance of legal, regulatory or accounting requirements, or\r\n to protect our interest.\r\n

    \r\n\r\n
    Complaints
    \r\n

    \r\n If you have complaints, our lines are open. Kindly contact our\r\n Data Protection Officer via email via\r\n dpo@intellicare.net.ph\r\n

    \r\n
    \r\n \r\n \r\n handleSaveChangePass()}\r\n >\r\n Save\r\n ,\r\n ,\r\n ]}\r\n >\r\n {current_pw !== oldPassword && oldPassword !== \"\" ? (\r\n \r\n ) : null}\r\n {newPassword.length < 8 ? (\r\n \r\n ) : null}\r\n {newPassword.length > 0 &&\r\n confirmPass.length > 0 &&\r\n newPassword !== confirmPass ? (\r\n \r\n ) : null}\r\n 0 && newPassword !== confirmPass)\r\n ? 10\r\n : 0,\r\n }}\r\n >\r\n Old Password\r\n \r\n setOldPassword(e.target.value)}\r\n type=\"password\"\r\n />\r\n \r\n setNewPassword(e.target.value)}\r\n type=\"password\"\r\n />\r\n \r\n setConfirmPass(e.target.value)}\r\n type=\"password\"\r\n />\r\n (recaptchaInstance = e)}\r\n elementID=\"changepw\"\r\n sitekey=\"6LfoHLgZAAAAAMNMXXajVsJva8MgZT0JfKPAODkk\"\r\n render=\"onload\"\r\n verifyCallback={verifyCallback}\r\n />\r\n \r\n handleRequestLogs()}>\r\n Export\r\n ,\r\n ,\r\n ]}\r\n >\r\n \r\n {\r\n setStartDate(dateString[0]);\r\n setEndDate(dateString[1]);\r\n }}\r\n />\r\n
    \r\n setFilterType(e)}\r\n >\r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n setFilterTypeApp(e)}\r\n >\r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n setFilterTypeSource(e)}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport '../.././index.css'\r\nimport * as antd from \"antd\";\r\nimport * as icon from \"@ant-design/icons\";\r\nimport { BrowserRouter as Router, Route, Switch, useHistory, Link, useLocation, RouteProps } from \"react-router-dom\";\r\nimport './SideMenu.css';\r\nimport { useToasts } from \"react-toast-notifications\";\r\n\r\nimport logo from \"../../assets/images/Agora_Icon.png\";\r\n// import { useSpring, animated } from \"react-spring\";\r\n\r\n//apis\r\nimport { CHANGE_PW } from \"../../util/live_api\";\r\n\r\nimport * as API from \"../../util/live_api\";\r\nimport {\r\n Decrypt,\r\n Decrypt2,\r\n EncryptHeader,\r\n Encrypt2,\r\n ImgEncrypt,\r\n DecryptTxt,\r\n} from \"../../util/EncryptionHandler\";\r\n\r\nimport {\r\n Layout,\r\n Menu,\r\n Icon,\r\n Row,\r\n Col,\r\n Modal,\r\n Input,\r\n Button,\r\n Alert,\r\n DatePicker,\r\n Tooltip\r\n} from \"antd\";\r\nimport { tuple } from 'antd/lib/_util/type';\r\n\r\nvar Recaptcha = require(\"react-recaptcha\");\r\nlet recaptchaInstance;\r\n\r\nconst { Sider, Header, Content } = Layout;\r\n\r\n\r\nconst SideMenu = ({ children }) => {\r\n\r\n // state = { visible: false };\r\n\r\n // showDrawer = () => {\r\n // this.setState({\r\n // visible: true,\r\n // });\r\n // };\r\n \r\n // onClose = () => {\r\n // this.setState({\r\n // visible: false,\r\n // });\r\n // };\r\n\r\n const [showDrawer, setShowDrawer] = useState(true);\r\n // const [closeDrawer, setCloseDrawer] = useState(false);\r\n const [drawer, setDrawer] = useState(false);\r\n // const [isOpen, setIsOpen] = useState(false);\r\n\r\n const [hideSider, setHideSider] = useState(false);\r\n const [hideDrawer, setHideDrawer] = useState(true);\r\n\r\n const [nameVariable, setnameVariable] = useState(\"\");\r\n const [visible, setVisible] = useState(false);\r\n const [privacyModal, setPrivacyModal] = useState(false);\r\n const [oldPassword, setOldPassword] = useState(\"\");\r\n const [newPassword, setNewPassword] = useState(\"\");\r\n const [confirmPass, setConfirmPass] = useState(\"\");\r\n const [recaptchaVerified, setRecaptchaVerified] = useState(false);\r\n const { addToast } = useToasts();\r\n\r\n let user_info = JSON.parse(localStorage.getItem(\"user_info\"));\r\n let current_pw = localStorage.getItem(\"current_pw\");\r\n let appName = JSON.parse(localStorage.getItem(\"appName\"));\r\n\r\n\r\n let user_systemaccess = JSON.parse(localStorage.getItem(\"user_systemaccess\"));\r\n\r\n let decrypted = user_systemaccess.map((data) => {\r\n let newD = Decrypt2(data);\r\n return newD;\r\n });\r\n\r\n // Get Tabaccess (MAIN MENU)\r\n let uniqueTabaccess = decrypted.filter((value, index, self) => {\r\n return self.findIndex(v => v.tabaccessid === value.tabaccessid) === index;\r\n });\r\n\r\n // Get Modaccess (SUB MENU)\r\n let uniqueModaccess = decrypted.filter((value, index, self) => {\r\n return self.findIndex(v => v.modaccessid === value.modaccessid) === index;\r\n });\r\n\r\n const tabaccess = uniqueTabaccess.map(v => ({ navKey: v.tabaccessid, tabaccessid: v.tabaccessid, title: v.tabname, icon: v.tabicon }));\r\n\r\n const modaccess = uniqueModaccess.map(v => ({ navKey: v.modaccessid, tabaccessid: v.tabaccessid, title: v.labelname, icon: v.modicon, link: v.routename }));\r\n\r\n const { SubMenu } = Menu;\r\n const [collapsed, setCollapsed] = useState(false);\r\n\r\n function handleCloseDrawer(value) {\r\n setDrawer(value);\r\n }\r\n\r\n\r\n function renderDisabledSave() {\r\n if (\r\n oldPassword.trim() === \"\" ||\r\n newPassword.trim() === \"\" ||\r\n confirmPass.trim() === \"\" ||\r\n newPassword.length < 8 ||\r\n newPassword !== confirmPass\r\n )\r\n return true;\r\n return false;\r\n }\r\n\r\n async function handleSaveChangePass() {\r\n var regularExpression = new RegExp(\r\n \"^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#$%^&*_])(?=.{8,50})\"\r\n );\r\n if (newPassword.length < 6) {\r\n return alert(\"Oops, Password too short\");\r\n }\r\n if (!regularExpression.test(newPassword)) {\r\n return alert(\r\n \"Oops, Password should contain atleast one number, one upper case and one special character.\"\r\n );\r\n }\r\n if (recaptchaVerified === false) {\r\n return alert(\"Please verified that you are human!\");\r\n }\r\n try {\r\n let Value = Encrypt2({\r\n recordid: user_info.data.recordid,\r\n emailaddress: user_info.data.emailaddress,\r\n oldpassword: oldPassword,\r\n newpassword: newPassword,\r\n edited_by: user_info.data.emailaddress,\r\n });\r\n let resp = await fetch(Decrypt(CHANGE_PW), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ Value }),\r\n });\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText);\r\n if (respJson.success) {\r\n addToast(\"Password Successfully Updated\", {\r\n appearance: \"success\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n setVisible(false);\r\n // localStorage.removeItem(\"user_info\");\r\n // localStorage.removeItem(\"current_pw\");\r\n resetRecaptcha();\r\n // history.push(\"/\");\r\n SessionUpdate();\r\n } else {\r\n addToast(respJson.message, {\r\n appearance: \"warning\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n }\r\n } catch (error) {\r\n alert(\"Internal Server Error\");\r\n }\r\n }\r\n function verifyCallback(response) {\r\n if (response) {\r\n setRecaptchaVerified(true);\r\n }\r\n }\r\n function resetRecaptcha() {\r\n recaptchaInstance.reset();\r\n }\r\n async function SessionUpdate() {\r\n let EncryptedEmail = EncryptHeader(user_info.data.emailaddress);\r\n\r\n let stat_respJson = await LogoutStatus(EncryptedEmail);\r\n\r\n if (stat_respJson.success) {\r\n localStorage.removeItem(\"user_info\");\r\n localStorage.removeItem(\"current_pw\");\r\n history.push(\"/\");\r\n } else {\r\n addToast(stat_respJson.message, {\r\n appearance: \"error\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 2000,\r\n });\r\n }\r\n }\r\n async function LogoutStatus(EncryptedEmail) {\r\n if (appName === \"AGORA\") {\r\n let stat_resp = await fetch(Decrypt(API.LOGOUT_USER_STAT), {\r\n method: \"POST\",\r\n headers: {\r\n Email: EncryptedEmail,\r\n },\r\n });\r\n let stat_respText = await stat_resp.text();\r\n let stat_respJson = await Decrypt2(stat_respText.replace(/\"/g, \"\"));\r\n\r\n return stat_respJson;\r\n } else {\r\n let stat_resp = await fetch(Decrypt(API.LOGOUT_USER_STAT_DOCTORS), {\r\n method: \"POST\",\r\n headers: {\r\n Email: EncryptedEmail,\r\n },\r\n });\r\n let stat_respText = await stat_resp.text();\r\n let stat_respJson = await Decrypt2(stat_respText.replace(/\"/g, \"\"));\r\n\r\n return stat_respJson;\r\n }\r\n }\r\n // ====================================================================================\r\n\r\n\r\n const history = useHistory();\r\n\r\n useEffect(() => {\r\n\r\n setnameVariable(user_info.data.firstname);\r\n\r\n // history.push(\"/dashboard\")\r\n }, []);\r\n\r\n return (\r\n \r\n \r\n\r\n \r\n\r\n\r\n );\r\n}\r\n\r\nconst anchorStyle = {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n height: \"64px\",\r\n};\r\n\r\nconst imgStyle = {\r\n display: \"inline-block\",\r\n height: \"32px\",\r\n verticalAlign: \"middle\",\r\n width: 40,\r\n height: 40,\r\n margin: 20\r\n};\r\n\r\nconst menuStyle = {\r\n backgroundColor: \"transparent\",\r\n}\r\n\r\nconst siderStyle = {\r\n // backgroundImage: \"linear-gradient(60deg, #64b3f4 0%, #c2e59c 100%)\",\r\n backgroundImage: \"linear-gradient(40deg, #05ffa3 0%, #2096ff 45%)\",\r\n height: \"100vh\",\r\n // boxShadow: \"rgba(29, 35, 41, 0.05) 2px 0px 8px 0px\",\r\n overflow: \"auto\",\r\n overflowX: \"hidden\"\r\n // overflow: \"hidden\" /* Hide horizontal scrollbar */\r\n}\r\n\r\nconst h1Style = {\r\n display: \"inline-block\",\r\n fontWeight: \"600\",\r\n fontSize: \"20px\",\r\n verticalAlign: \"middle\",\r\n margin: \"0px 0px 0px 12px\",\r\n};\r\n\r\nconst headerStyle = {\r\n\r\n margin: \"20px 20px 0px 20px\",\r\n background: \"white\",\r\n padding: 0,\r\n height: 55,\r\n // box-shadow: rgba(29, 35, 41, 0.05) 2px 0px 8px 0px;\r\n // width: \"calc(100% - 40px);\r\n borderRadius: 15,\r\n}\r\n\r\nconst contentStyle = {\r\n margin: '20px 20px 20px 20px',\r\n padding: 0,\r\n paddingBottom: '10px',\r\n background: 'rgb(255, 255, 255)',\r\n borderRadius: 15\r\n\r\n}\r\n\r\nconst rowStyle = {\r\n height: 55\r\n}\r\n\r\nconst colStyle = {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n height: 55\r\n}\r\n\r\nconst AccountStyle = {\r\n backgroundColor: \"transparent\",\r\n height: 55,\r\n alignItems: \"center\",\r\n float: \"right\",\r\n}\r\n\r\nconst foldIcon = {\r\n\r\n fontSize: \"18pt\",\r\n verticalAlign: \"center\",\r\n color: \"rgb(0, 153, 204)\",\r\n marginLeft: 10,\r\n}\r\n\r\nconst userIcon = {\r\n color: \"white\",\r\n backgroundColor: \"rgb(0, 153, 204)\", //\"gray\",\r\n padding: 9,\r\n borderRadius: \"50%\",\r\n cursor: \"pointer\",\r\n marginTop: 12\r\n}\r\n\r\n\r\nexport default SideMenu ","import React from \"react\";\r\nimport NavBar from \"../components/NavBar\";\r\nimport { Redirect, Route } from \"react-router-dom\";\r\nimport Layout from \"../components/Layout/SideMenu\";\r\n\r\nexport const PrivateRoute = ({ component: Component, ...rest }) => (\r\n
    \r\n {JSON.parse(localStorage.getItem(\"appName\")) === \"ARUGA\" ? : null}\r\n \r\n localStorage.getItem(\"user_info\") ? (\r\n JSON.parse(localStorage.getItem(\"appName\")) === \"AGORA\" ? (\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","import React from \"react\";\r\nimport NavBar from \"../components/NavBar\";\r\nimport { Redirect, Route } from \"react-router-dom\";\r\n\r\nexport const AdminRoute = ({ component: Component, ...rest }) => (\r\n
    \r\n \r\n \r\n localStorage.getItem(\"user_info\") &&\r\n JSON.parse(localStorage.getItem(\"user_info\")).data.role === \"1\" ? (\r\n \r\n ) : (\r\n \r\n )\r\n }\r\n />\r\n
    \r\n);\r\n","import React from \"react\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport LinearProgress from \"@material-ui/core/LinearProgress\";\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n root: {\r\n width: \"100%\",\r\n \"& > * + *\": {\r\n marginTop: theme.spacing(2)\r\n }\r\n }\r\n}));\r\n\r\nexport default function LinearInderterminate() {\r\n const classes = useStyles();\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n}\r\n","import React, { useEffect, useState } from \"react\";\r\nimport * as API from \"../util/live_api\";\r\nimport { Decrypt, Decrypt2, EncryptHeader } from \"../util/EncryptionHandler\";\r\n\r\nexport default function CheckSession() {\r\n let user_info = JSON.parse(localStorage.getItem(\"user_info\"));\r\n let uuid = localStorage.getItem(\"uuid\");\r\n\r\n GetSession();\r\n\r\n async function GetSession() {\r\n let resp = await fetch(Decrypt(API.CHECK_SESSION), {\r\n method: \"GET\",\r\n headers: {\r\n email: EncryptHeader(user_info.data.emailaddress),\r\n },\r\n });\r\n let respJson = await resp.json();\r\n let respText = await Decrypt2(respJson.replace(/\"/g, \"\"));\r\n\r\n if (respText.data) {\r\n let decrypted = respText.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n return newD;\r\n });\r\n\r\n let deviceid = decrypted[0].deviceid;\r\n\r\n if (uuid !== deviceid) {\r\n alert(\r\n \"We have detected that you are currently on another session. For your security, we logged you out from all active devices. Thank you.\"\r\n );\r\n SessionUpdate();\r\n } else {\r\n // do nothing\r\n }\r\n }\r\n }\r\n\r\n function logout() {\r\n window.location.assign(window.location.origin);\r\n }\r\n\r\n async function SessionUpdate() {\r\n let EncryptedEmail = EncryptHeader(user_info.data.emailaddress);\r\n let stat_resp = await fetch(Decrypt(API.LOGOUT_USER_STAT), {\r\n method: \"POST\",\r\n headers: {\r\n Email: EncryptedEmail,\r\n },\r\n });\r\n let stat_respText = await stat_resp.text();\r\n let stat_respJson = await Decrypt2(stat_respText.replace(/\"/g, \"\"));\r\n if (stat_respJson.success) {\r\n logout();\r\n }\r\n }\r\n}\r\n","import React from 'react';\r\nimport '../spinner/globalspinner.css';\r\n\r\nconst LoadSpinner = () => (\r\n
    \r\n
    \r\n
    \r\n {/*
    \r\n Loading ...\r\n
    */}\r\n
    \r\n);\r\n\r\nexport default LoadSpinner;","import React, { useState } from \"react\";\r\nimport { MDBBtn, MDBIcon } from \"mdbreact\";\r\nimport { Select, Modal, Input, Button, DatePicker } from \"antd\";\r\nimport * as FileSaver from \"file-saver\";\r\nimport * as XLSX from \"xlsx\";\r\nimport jsPDF from \"jspdf\";\r\nimport \"jspdf-autotable\";\r\nimport moment from \"moment\";\r\nimport * as API from \"../util/live_api\";\r\nimport {\r\n Decrypt,\r\n Decrypt2,\r\n EncryptHeader,\r\n Encrypt2,\r\n ImgEncrypt,\r\n DecryptTxt,\r\n} from \"../util/EncryptionHandler\";\r\n\r\nconst { RangePicker } = DatePicker;\r\nconst { Option } = Select;\r\nexport default function ExportFile({ exportdata, loading, reapp_remarks }) {\r\n const [filetype, setFiletype] = useState(\"\");\r\n const [filterType, setFilterType] = useState(\"\");\r\n const [filename, setFilename] = useState(\"\");\r\n const [startDate, setStartDate] = useState(\"\");\r\n const [endDate, setEndDate] = useState(\"\");\r\n const [modal, setModal] = useState(false);\r\n\r\n const [HistoryReport, setHistoryReport] = useState([]);\r\n\r\n let xlsreport = [];\r\n const file_Type =\r\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8\";\r\n const fileExtension = \".xlsx\";\r\n const formatDate = \"MM-DD-YYYY\"; \r\n\r\n function handleSubmitExport() {\r\n if (startDate === \"\" && endDate === \"\" && filterType !== \"\") return alert(\"Please pick date range\");\r\n if (filename.trim() === \"\") return alert(\"Please input your filename\"); \r\n\r\n GenerateReport();\r\n }\r\n\r\n function toTitleCase(str) {\r\n return str.replace(/\\w\\S*/g, function (txt) {\r\n return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();\r\n });\r\n }\r\n\r\n async function GenerateReport() {\r\n let Filteredby = \"\";\r\n let Reapprove = \"\";\r\n\r\n let user_info = JSON.parse(localStorage.getItem(\"user_info\"));\r\n if (exportdata === \"AllReapprove\") {Reapprove = \"TRUE\"};\r\n if (exportdata === \"AllApprovalHistory\") {Reapprove = \"FALSE\"}; \r\n switch (filterType) {\r\n case \"posted\":\r\n Filteredby = \"POSTED\";\r\n case \"approved\":\r\n Filteredby = \"APPROVED\";\r\n case \"disapproved\":\r\n Filteredby = \"APPROVED\";\r\n\r\n case \"reapproved\":\r\n Filteredby = \"APPROVED\";\r\n };\r\n\r\n try {\r\n let resp = await fetch(Decrypt(API.APPROVAL_HISTORY_REPORT), {\r\n method: \"GET\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n DateFrom: EncryptHeader(startDate),\r\n DateTo : EncryptHeader(endDate),\r\n FilterBy : EncryptHeader(Filteredby),\r\n Reapprove: EncryptHeader(Reapprove),\r\n },\r\n });\r\n let respJson = await resp.json();\r\n if (respJson.data !== null) { \r\n if (respJson.success === true) {\r\n let decrypted = respJson.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n\r\n newD.fullname = toTitleCase(\r\n newD[\"lastname\"] +\r\n \", \" +\r\n newD[\"firstname\"] +\r\n \" \" +\r\n newD[\"middlename\"]\r\n );\r\n\r\n HistoryReport.push(newD);\r\n return newD;\r\n });\r\n\r\n switch (filetype) {\r\n case \"Excel\":\r\n return exportToXLSX();\r\n case \"PDF\":\r\n return exportToPDF();\r\n default:\r\n break;\r\n }\r\n }\r\n else \r\n {\r\n alert(respJson.message);\r\n return;\r\n }\r\n } \r\n else\r\n { \r\n alert(respJson.message); \r\n return;\r\n }\r\n\r\n } catch (error) {\r\n console.log(error);\r\n alert(\"Internal Server Error\");\r\n }\r\n }\r\n\r\n function exportToXLSX() {\r\n let xlsdata = HistoryReport;\r\n xlsdata.forEach((report) => {\r\n xlsreport = xlsreport.concat({\r\n Counter: report.increment_id,\r\n Posted_Date: report.posted_date,\r\n Member_Type: report.membType,\r\n Company: report.company,\r\n Employee_ID: report.pci_employee_id,\r\n Members_Status: report.member_status,\r\n AccountNo: report.accountno,\r\n Fullname: report.fullname,\r\n Card_Number: report.cardno,\r\n Status: report.status,\r\n Approved_Date: report.approved_date,\r\n Approved_By: report.approved_by,\r\n Disapproved_Remarks: report.remarks + \", \" + reapp_remarks,\r\n Registration_Attempts: report.regcount,\r\n Email_Verification_Date: report.email_verdate,\r\n });\r\n });\r\n const ws = XLSX.utils.json_to_sheet(xlsreport);\r\n const wb = { Sheets: { kyc_report: ws }, SheetNames: [\"kyc_report\"] };\r\n const excelBuffer = XLSX.write(wb, { bookType: \"xlsx\", type: \"array\" });\r\n const data = new Blob([excelBuffer], { type: file_Type });\r\n FileSaver.saveAs(data, filename + fileExtension);\r\n setFilename(\"\");\r\n setFilterType(\"\");\r\n }\r\n\r\n function exportToPDF() {\r\n let xlsdata = HistoryReport;\r\n const unit = \"pt\";\r\n const size = \"legal\";\r\n const orientation = \"landscape\";\r\n const doc = new jsPDF(orientation, unit, size);\r\n doc.setFontSize(15);\r\n\r\n const title = \"KYC Report\";\r\n const headers = [\r\n [\r\n \"Counter\",\r\n \"Posted Date\",\r\n \"Member Type\",\r\n \"Company\",\r\n \"Employee ID\",\r\n \"Members Status\",\r\n \"AccountNo\",\r\n \"Fullname\",\r\n \"Card Number\",\r\n \"Status\",\r\n \"Approved Date\",\r\n \"Approved By\",\r\n \"Disapproved Remarks\",\r\n \"Registration Attempts\",\r\n \"Email Verification Date \",\r\n ],\r\n ];\r\n const data = xlsdata.map((element) => [\r\n element.increment_id,\r\n moment(element.posted_date).format(\"MM-DD-YYYY\"),\r\n element.membType,\r\n element.company,\r\n element.employee_id,\r\n element.member_status,\r\n element.accountno,\r\n element.fullname,\r\n element.cardno,\r\n element.stats,\r\n moment(element.approved_date).format(\"MM-DD-YYYY\"),\r\n element.approved_by,\r\n element.remarks + \", \" + reapp_remarks,\r\n element.regcount,\r\n moment(element.email_verdate).format(\"MM-DD-YYYY\"),\r\n ]);\r\n let content = {\r\n styles: {\r\n cellWidth: \"auto\",\r\n font: \"times\",\r\n fontSize: 8,\r\n },\r\n margin: { left: 10, right: 10 },\r\n startY: 50,\r\n head: headers,\r\n body: data,\r\n };\r\n\r\n doc.text(title, 40, 40);\r\n doc.autoTable(content);\r\n doc.save(filename + \".pdf\");\r\n setFilename(\"\");\r\n setFilterType(\"\");\r\n }\r\n return (\r\n
    \r\n setFiletype(e)}\r\n >\r\n \r\n \r\n \r\n \r\n setModal(true)}\r\n >\r\n Export\r\n \r\n ,\r\n ,\r\n ]}\r\n footer={[\r\n {\r\n setModal(false);\r\n handleSubmitExport();\r\n }}\r\n >\r\n Submit\r\n ,\r\n {\r\n setModal(false);\r\n setFilename(\"\");\r\n setFilterType(\"\");\r\n setStartDate(null);\r\n setEndDate(null);\r\n }}\r\n >\r\n Return\r\n ,\r\n ]}\r\n >\r\n
    \r\n setFilename(e.target.value)}\r\n />\r\n
    \r\n {\r\n setFilterType(e);\r\n }}\r\n >\r\n \r\n {reapp_remarks === \"Reapprove\" ? null : (\r\n \r\n )}\r\n {reapp_remarks === \"Reapprove\" ? null : (\r\n \r\n )}\r\n {reapp_remarks === \"Reapprove\" ? (\r\n \r\n ) : null}\r\n \r\n
    \r\n \r\n {\r\n setStartDate(dateString[0]);\r\n setEndDate(dateString[1]);\r\n }}\r\n />\r\n
    \r\n \r\n
    \r\n );\r\n}\r\n","import React, { useEffect, useState } from \"react\";\r\nimport {\r\n MDBModal,\r\n MDBModalBody,\r\n MDBModalFooter,\r\n MDBModalHeader,\r\n MDBBtn,\r\n MDBRow,\r\n MDBCol,\r\n MDBView,\r\n MDBIcon,\r\n} from \"mdbreact\";\r\n\r\nimport TextField from \"@material-ui/core/TextField\";\r\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\r\n// import Lightbox from \"react-image-lightbox\";\r\nimport moment from \"moment\";\r\nimport DataTable from \"react-data-table-component\";\r\nimport LinearIndeterminate from \"./LinearInderterminate\";\r\nimport { useToasts } from \"react-toast-notifications\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { confirmAlert } from \"react-confirm-alert\";\r\nimport \"react-confirm-alert/src/react-confirm-alert.css\"; // Import css\r\nimport { Menu, Icon, Select, Modal, Button, DatePicker, message, Table, Tag, Tooltip } from \"antd\";\r\nimport Viewer from \"react-viewer\";\r\nimport CheckSession from \"./CheckSession\";\r\nimport LoadSpinner from \"../global/spinner/globalspinner\";\r\n\r\n//apis\r\nimport * as API from \"../util/live_api\";\r\nimport {\r\n Decrypt,\r\n Decrypt2,\r\n EncryptHeader,\r\n Encrypt2,\r\n ImgEncrypt,\r\n DecryptTxt,\r\n VNIEncryptBody,\r\n VNIDecryptBody\r\n} from \"../util/EncryptionHandler\";\r\n\r\nimport ExportFile from \"./ExportFile\";\r\nimport { Portal } from \"@material-ui/core\";\r\n// import { ConsoleSqlOutlined } from \"@ant-design/icons\";\r\n\r\nconst { RangePicker } = DatePicker;\r\nconst { Option } = Select;\r\n\r\nexport default function Dashboard() {\r\n\r\n const formatDate = \"MM/DD/YYYY\";\r\n\r\n let user_info = JSON.parse(localStorage.getItem(\"user_info\"));\r\n let history = useHistory();\r\n if (user_info.data.department === \"MIS TECH\") {\r\n history.push(\"/users\");\r\n }\r\n if (!sessionStorage.getItem(\"logged_in\")) {\r\n SessionUpdate();\r\n localStorage.removeItem(\"user_info\");\r\n localStorage.removeItem(\"current_pw\");\r\n history.push(\"/\");\r\n }\r\n\r\n document.title = \"Intellicare Admin - Dashboard\";\r\n\r\n const { addToast, removeToast } = useToasts();\r\n const [isLoaded, setIsLoaded] = useState(false); // global loading spinner\r\n const [data, setData] = useState([]);\r\n const [tempData, setTempData] = useState([]);\r\n const [approvalHistory, setApprovalHistory] = useState([]);\r\n const [tempHistory, setTempHistory] = useState([]);\r\n const [reapproveHistory, setReapproveHistory] = useState([]);\r\n const [FetchingAllReapprove, setFetchingAllReapprove] = useState(false);\r\n const [AllReapprove, setAllReapprove] = useState([]);\r\n const [AllApprovalHistory, setAllApprovalHistory] = useState([]);\r\n\r\n const [HistoryMembUser, setHistoryMembUser] = useState({});\r\n const [HistoryPciMemb, setHistoryPciMemb] = useState({});\r\n \r\n const [ReapporoveSearchValue, setReapproveSearchValue] = useState([]);\r\n const [tempReapproved, setTempReapproved] = useState([]);\r\n const [searchTempData, setsearchTempData] = useState([]);\r\n const [modal, setModal] = useState(false);\r\n const [modCardWarn, setmodCardWarn] = useState(false);\r\n const [request, setRequest] = useState({}); \r\n const [photoIndex, setPhotoIndex] = useState(0);\r\n const [isOpen, setIsOpen] = useState(false);\r\n const [recordid, setRecordId] = useState(\"\");\r\n const [modDisapprove, setModDisapprove] = useState(false);\r\n const [disapproveRemarks, setDisapproveRemarks] = useState(\"\");\r\n const [disapproveMessage, setDisapproveMessage] = useState(\"\");\r\n const [intIdImg, setIntIdImg] = useState(null);\r\n const [govIdImg, setGovIdImg] = useState(null);\r\n const [images, setImages] = useState([]);\r\n const [imgLoad, setImgLoad] = useState(false);\r\n const [reason, setReason] = useState([]);\r\n\r\n const [lstReasons, setLstReasons] = useState([]);\r\n const [current, setCurrent] = useState(\"pending\");\r\n // const [HMOPicked, SetHMOPicked] = useState(\r\n // user_info.data.department === \"INT APD\" ? \"Intellicare\" : \"Avega\"\r\n // );\r\n const [filterNumTo, setFilterNumTo] = useState(0);\r\n const [filterNumFrom, setFilterNumFrom] = useState(0);\r\n const [startDate, setStartDate] = useState(\"\");\r\n\r\n const [HistoryStartDate, setHistoryStartDate] = useState(\"\");\r\n const [HistoryEndDate, setHistoryEndDate] = useState(\"\");\r\n \r\n const [loading] = useState(false);\r\n const [clicked, setClicked] = useState(\"Approve\");\r\n const [fetching, setFetching] = useState(false);\r\n const [historyFetching, setHistoryFetching] = useState(false);\r\n const [reappNotif, setReappNotif] = useState(null);\r\n const [memberProfile, setMemberProfile] = useState(false);\r\n const [modalSize, setModalSize] = useState(\"lg\");\r\n const [membProfButtonCaption, setMembProfButtonCaption] = useState(\r\n \"View Member Profile\"\r\n );\r\n const [warningTime] = useState(15 * 60 * 1000);\r\n const [logoutTime] = useState(10 * 1000);\r\n\r\n const [addDetails, setaddDetails] = useState({\r\n currentScreen: \"\",\r\n pageNumber: 1,\r\n pageRow: 10,\r\n totalRecord: 0\r\n })\r\n\r\n let multipleReason = [];\r\n let SpecialInstructions = [];\r\n let warnTimeout;\r\n let logoutTimeout;\r\n let toastId;\r\n\r\n useEffect(() => {\r\n\r\n loadComponent();\r\n\r\n }, []);\r\n\r\n async function loadComponent() {\r\n \r\n // CheckSession();\r\n await GetApprovalRequests();\r\n await GetDisapproveRemarks();\r\n }\r\n\r\n const columns = [\r\n {\r\n dataIndex: \"recordid\",\r\n className: \"hide\",\r\n width: 100,\r\n },\r\n {\r\n title: \"Counter\",\r\n dataIndex: \"incremental_id\",\r\n width: 180,\r\n ellipsis: {\r\n showTitle: false,\r\n },\r\n render: (incremental_id) => (\r\n \r\n {incremental_id}\r\n \r\n ),\r\n },\r\n {\r\n title: \"Posted Date\",\r\n dataIndex: \"posted_date\",\r\n width: 180,\r\n },\r\n {\r\n title: \"Email Verification Date\",\r\n dataIndex: \"email_verdate\",\r\n width: 180,\r\n },\r\n {\r\n title: \"Account Number\",\r\n dataIndex: \"accountno\",\r\n width: 200,\r\n },\r\n {\r\n title: \"Full Name\",\r\n dataIndex: \"fullname\",\r\n width: 300,\r\n },\r\n {\r\n title: \"Company\",\r\n dataIndex: \"company\",\r\n width: 150,\r\n ellipsis: {\r\n showTitle: false,\r\n },\r\n render: (company) => (\r\n \r\n {company}\r\n \r\n ),\r\n },\r\n {\r\n title: \"Member Status\",\r\n dataIndex: \"membStatus\",\r\n width: 160,\r\n render: (membStatus) => {\r\n let color = \"\";\r\n let style = \"\";\r\n if (membStatus === \"Active\") {\r\n color = \"green\";\r\n style = {\r\n cursor: \"pointer\",\r\n };\r\n }\r\n if (membStatus === \"Terminated\") {\r\n color = \"red\";\r\n style = {\r\n cursor: \"pointer\",\r\n };\r\n }\r\n if (membStatus === \"Disapproved\") {\r\n color = \"tomato\";\r\n style = {\r\n cursor: \"not-allowed\",\r\n };\r\n }\r\n if (membStatus === \"Waiting\") {\r\n color = \"yellow\";\r\n style = {\r\n cursor: \"not-allowed\",\r\n };\r\n }\r\n return (\r\n \r\n {membStatus.toUpperCase()}\r\n \r\n );\r\n },\r\n },\r\n {\r\n title: \"Card Number\",\r\n dataIndex: \"cardno\",\r\n width: 100,\r\n },\r\n {\r\n title: \"Gender\",\r\n dataIndex: \"gnder\",\r\n width: 130,\r\n },\r\n {\r\n title: \"Employee ID\",\r\n dataIndex: \"employee_id\",\r\n width: 160,\r\n },\r\n {\r\n title: \"Member Type\",\r\n dataIndex: \"membType\",\r\n width: 100,\r\n },\r\n {\r\n title: \"Registration Attempts\",\r\n dataIndex: \"regcount\",\r\n width: 50,\r\n },\r\n ];\r\n const columnApproval = [\r\n {\r\n selector: \"recordid\",\r\n className: \"hide\",\r\n width: 100,\r\n },\r\n {\r\n title: \"Counter\",\r\n dataIndex: \"increment_id\",\r\n width: 180,\r\n ellipsis: {\r\n showTitle: false,\r\n },\r\n render: (increment_id) => (\r\n \r\n {increment_id}\r\n \r\n ),\r\n },\r\n {\r\n title: \"Account Number\",\r\n dataIndex: \"accountno\",\r\n width: 200,\r\n },\r\n {\r\n title: \"Full Name\",\r\n dataIndex: \"fullname\",\r\n width: 100,\r\n },\r\n {\r\n title: \"Gender\",\r\n dataIndex: \"gnder\",\r\n width: 130,\r\n },\r\n {\r\n title: \"Employee ID\",\r\n dataIndex: \"employee_id\",\r\n width: 160,\r\n },\r\n {\r\n title: \"Member Type\",\r\n dataIndex: \"membType\",\r\n width: 160,\r\n },\r\n {\r\n title: \"Status\",\r\n dataIndex: \"stats\",\r\n width: 180,\r\n render: (stats) => {\r\n let color = \"\";\r\n let style = \"\";\r\n if (stats === \"Approved\") {\r\n color = \"geekblue\";\r\n style = {\r\n cursor: \"pointer\",\r\n };\r\n }\r\n if (stats === \"Disapproved\") {\r\n color = \"tomato\";\r\n style = {\r\n cursor: \"not-allowed\",\r\n };\r\n }\r\n return (\r\n \r\n {stats.toUpperCase()}\r\n \r\n )\r\n },\r\n },\r\n {\r\n title: \"Approved Date\",\r\n dataIndex: \"approved_date\",\r\n width: 180,\r\n },\r\n {\r\n title: \"Approved By\",\r\n dataIndex: \"approved_by\",\r\n width: 100,\r\n },\r\n {\r\n title: \"Registration Attempts\",\r\n dataIndex: \"regcount\",\r\n width: 50,\r\n },\r\n ];\r\n const columnReapprove = [\r\n {\r\n selector: \"recordid\",\r\n className: \"hide\",\r\n width: 100,\r\n },\r\n {\r\n title: \"Counter\",\r\n dataIndex: \"increment_id\",\r\n width: 180,\r\n ellipsis: {\r\n showTitle: false,\r\n },\r\n render: (increment_id) => (\r\n \r\n {increment_id}\r\n \r\n ),\r\n },\r\n {\r\n title: \"Account Number\",\r\n dataIndex: \"accountno\",\r\n width: 200,\r\n },\r\n {\r\n title: \"Full Name\",\r\n dataIndex: \"fullname\",\r\n width: 160,\r\n },\r\n {\r\n title: \"Company\",\r\n dataIndex: \"company\",\r\n width: 150,\r\n ellipsis: {\r\n showTitle: false,\r\n },\r\n render: (company) => (\r\n \r\n {company}\r\n \r\n ),\r\n },\r\n {\r\n title: \"Member Status\",\r\n dataIndex: \"membStatus\",\r\n width: 160,\r\n render: (membStatus) => {\r\n let color = \"\";\r\n let style = \"\";\r\n if (membStatus === \"Active\") {\r\n color = \"green\";\r\n style = {\r\n cursor: \"pointer\",\r\n };\r\n }\r\n if (membStatus === \"Terminated\") {\r\n color = \"red\";\r\n style = {\r\n cursor: \"pointer\",\r\n };\r\n }\r\n if (membStatus === \"Disapproved\") {\r\n color = \"tomato\";\r\n style = {\r\n cursor: \"not-allowed\",\r\n };\r\n }\r\n if (membStatus === \"Waiting\") {\r\n color = \"yellow\";\r\n style = {\r\n cursor: \"not-allowed\",\r\n };\r\n }\r\n return (\r\n \r\n {membStatus.toUpperCase()}\r\n \r\n );\r\n },\r\n },\r\n {\r\n title: \"Card Number\",\r\n dataIndex: \"cardno\",\r\n width: 100,\r\n },\r\n {\r\n title: \"Gender\",\r\n dataIndex: \"gnder\",\r\n width: 130,\r\n },\r\n {\r\n title: \"Employee ID\",\r\n dataIndex: \"employee_id\",\r\n width: 160,\r\n },\r\n {\r\n title: \"Member Type\",\r\n dataIndex: \"membType\",\r\n width: 100,\r\n },\r\n {\r\n title: \"Status\",\r\n dataIndex: \"stats\",\r\n width: 180,\r\n render: (stats) => {\r\n let color = \"geekblue\";\r\n let style = {\r\n cursor: \"pointer\",\r\n };\r\n return (\r\n \r\n {stats.toUpperCase()}\r\n \r\n );\r\n },\r\n },\r\n {\r\n title: \"Reapproved Date\",\r\n dataIndex: \"approved_date\",\r\n width: 180,\r\n },\r\n {\r\n title: \"Reapproved By\",\r\n dataIndex: \"approved_by\",\r\n width: 100,\r\n },\r\n {\r\n title: \"Registration Attempts\",\r\n dataIndex: \"regcount\",\r\n width: 50,\r\n },\r\n ];\r\n const options = {\r\n message:\r\n clicked === \"Approve\"\r\n ? \"Please Confirm Application Approval\"\r\n : \"Please Confirm Application Disapproval\",\r\n buttons: [\r\n {\r\n label: \"Confirm\",\r\n onClick:\r\n clicked === \"Approve\" && current === \"pending\"\r\n ? handleApproveApplication\r\n : clicked === \"Approve\" && current === \"history\"\r\n ? handleReapproveApplication\r\n : handleConfirmDisapproveApplication,\r\n },\r\n {\r\n label: \"Cancel\",\r\n onClick: () => setModal(true),\r\n },\r\n ],\r\n closeOnEscape: false,\r\n closeOnClickOutside: false,\r\n willUnmount: () => {},\r\n };\r\n function warn() {\r\n document.title = \"Logging Out...\";\r\n setModal(false);\r\n setModDisapprove(false);\r\n setIsOpen(false);\r\n // confirmAlert(warnOptions);\r\n addToast(\r\n \"You are about to logout in \" +\r\n logoutTime / 1000 +\r\n \" seconds due to inactivity.\",\r\n {\r\n appearance: \"warning\",\r\n autoDismiss: true,\r\n autoDismissTimeout: logoutTime,\r\n },\r\n (id) => {\r\n toastId = id;\r\n }\r\n );\r\n }\r\n function logout() {\r\n localStorage.removeItem(\"user_info\");\r\n localStorage.removeItem(\"current_pw\");\r\n history.push(\"/\");\r\n }\r\n async function SessionUpdate() {\r\n let EncryptedEmail = EncryptHeader(user_info.data.emailaddress);\r\n\r\n let stat_resp = await fetch(Decrypt(API.LOGOUT_USER_STAT), {\r\n method: \"POST\",\r\n headers: {\r\n Email: EncryptedEmail,\r\n },\r\n });\r\n\r\n let stat_respText = await stat_resp.text();\r\n let stat_respJson = await Decrypt2(stat_respText.replace(/\"/g, \"\"));\r\n\r\n if (stat_respJson.success) {\r\n logout();\r\n } else {\r\n addToast(stat_respJson.message, {\r\n appearance: \"error\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 2000,\r\n });\r\n }\r\n }\r\n function setTimeouts() {\r\n warnTimeout = setTimeout(warn, warningTime);\r\n logoutTimeout = setTimeout(SessionUpdate, warningTime + logoutTime);\r\n }\r\n function clearTimeouts() {\r\n if (warnTimeout) clearTimeout(warnTimeout);\r\n if (SessionUpdate) clearTimeout(logoutTimeout);\r\n }\r\n function resetTimeout() {\r\n document.title = \"Intellicare Admin - Dashboard\";\r\n removeToast(toastId);\r\n clearTimeouts();\r\n setTimeouts();\r\n }\r\n\r\n\r\n function handleNavigate(e) {\r\n setCurrent(e.key);\r\n addDetails.currentScreen = e.key;\r\n if (e.key === \"history\" || e.key === \"reapproved\") GetApprovalHistory();\r\n else GetApprovalRequests();\r\n }\r\n\r\n async function GetApprovalRequests() {\r\n setFetching(true);\r\n\r\n let rowStart = ((addDetails.pageNumber * addDetails.pageRow) - addDetails.pageRow).toString();\r\n let rowEnd = (addDetails.pageNumber * addDetails.pageRow).toString();\r\n let recordStart = EncryptHeader(rowStart);\r\n let recordEnd = EncryptHeader(rowEnd);\r\n let avega = EncryptHeader(user_info.data.department === \"INT APD\" ? \"0\" : \"1\");\r\n\r\n try {\r\n let resp = await fetch(Decrypt(API.APPROVAL_REQUEST), {\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n \"RecordStart\": recordStart,\r\n \"RecordEnd\": recordEnd,\r\n \"Avega\": avega\r\n },\r\n });\r\n\r\n let respJson = await resp.json();\r\n if (respJson.data) {\r\n\r\n addDetails.totalRecord=respJson.recordcount;\r\n\r\n let decrypted = respJson.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n return newD;\r\n });\r\n for (let data of decrypted) {\r\n data.fullname = toTitleCase(\r\n data[\"lastname\"] +\r\n \", \" +\r\n data[\"firstname\"] +\r\n \" \" +\r\n data[\"middlename\"]\r\n );\r\n data.gnder = data[\"gender\"].toUpperCase() === \"M\" ? \"Male\" : \"Female\";\r\n data.pci_gnder =\r\n data[\"pci_gender\"].toUpperCase() === \"M\" ? \"Male\" : \"Female\";\r\n data.membType = getMembType(data[\"membertype\"]);\r\n data.pci_membType = getMembType(data[\"pci_membertype\"]);\r\n data.membStatus =\r\n data[\"member_status\"] === \"A\"\r\n ? \"Active\"\r\n : data[\"member_status\"] === \"T\"\r\n ? \"Terminated\"\r\n : data[\"member_status\"] === \"D\"\r\n ? \"Disapproved\"\r\n : data[\"member_status\"] === \"W\"\r\n ? \"Waiting\"\r\n : \"\";\r\n }\r\n\r\n let AvegaTag = user_info.data.department === \"INT APD\" ? false : true;\r\n\r\n let filtered_decrypt = decrypted.filter((data) => {\r\n return data.avegatag === AvegaTag;\r\n });\r\n\r\n filtered_decrypt.sort(function (a, b) {\r\n return new Date(b.email_verdate) - new Date(a.email_verdate);\r\n });\r\n\r\n setData(filtered_decrypt);\r\n setTempData(filtered_decrypt);\r\n }else{\r\n\r\n addDetails.pageNumber = addDetails.pageNumber - 1 // if last page is only 1 record\r\n GetApprovalRequests()\r\n // do nothing\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n setFetching(false);\r\n }\r\n async function GetDisapproveRemarks() {\r\n try {\r\n let resp = await fetch(Decrypt(API.DISAPPROVED_REMARKS), {\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n },\r\n });\r\n let respJson = await resp.json();\r\n let decrypted = respJson.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n return newD;\r\n });\r\n let activeOnly = decrypted.filter((data) => {\r\n return data.status === \"A\";\r\n });\r\n setLstReasons(activeOnly);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function GetAllReapproveRecords() {\r\n // setFetchingAllReapprove(true);\r\n try {\r\n let resp = await fetch(Decrypt(API.APPROVAL_HISTORY), {\r\n method: \"GET\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n },\r\n });\r\n let respJson = await resp.json();\r\n if (respJson.data) {\r\n let decrypted = respJson.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n return newD;\r\n });\r\n for (let data of decrypted) {\r\n data.fullname = toTitleCase(\r\n data[\"lastname\"] +\r\n \", \" +\r\n data[\"firstname\"] +\r\n \" \" +\r\n data[\"middlename\"]\r\n );\r\n data.gnder = data[\"gender\"].toUpperCase() === \"M\" ? \"Male\" : \"Female\";\r\n data.membType = getMembType(data[\"membertype\"]);\r\n data.stats =\r\n data[\"status\"] === \"A\" && data[\"is_reapprove\"] === false\r\n ? \"Approved\"\r\n : data[\"status\"] === \"D\"\r\n ? \"Disapproved\"\r\n : data[\"status\"] === \"A\" && data[\"is_reapprove\"] === true\r\n ? \"Reapproved\"\r\n : \"Waiting\";\r\n data.pci_membType = getMembType(data[\"pci_membertype\"]);\r\n data.membStatus =\r\n data[\"member_status\"] === \"A\"\r\n ? \"Active\"\r\n : data[\"member_status\"] === \"T\"\r\n ? \"Terminated\"\r\n : data[\"member_status\"] === \"D\"\r\n ? \"Disapproved\"\r\n : data[\"member_status\"] === \"W\"\r\n ? \"Waiting\"\r\n : \"\";\r\n }\r\n let AvegaTag = user_info.data.department === \"INT APD\" ? false : true;\r\n\r\n let reapproved = decrypted.filter((reapp) => {\r\n return reapp.is_reapprove === true;\r\n });\r\n let all = decrypted.filter((all) => {\r\n return all.is_reapprove === false;\r\n });\r\n\r\n let filtered_reapproved = reapproved.filter((data) => {\r\n return data.avegatag === AvegaTag;\r\n });\r\n\r\n let filtered_all = all.filter((data) => {\r\n return data.avegatag === AvegaTag;\r\n });\r\n\r\n setAllApprovalHistory(filtered_all);\r\n setAllReapprove(filtered_reapproved);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n // setFetchingAllReapprove(false);\r\n addToast(\"Records ready for export.\", {\r\n appearance: \"success\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 2000,\r\n });\r\n }\r\n\r\n async function GetApprovalHistory(historyStartDate, historyendDate) {\r\n setHistoryFetching(true);\r\n let startDate = \"\";\r\n let endDate = \"\";\r\n let FilterBy = EncryptHeader(\"APPROVED\");\r\n let Reapprove = \"\";\r\n\r\n if (historyStartDate == undefined || historyStartDate == \"\") {\r\n let dateNow = new Date();\r\n dateNow.setDate(dateNow.getDate() - 2);\r\n\r\n let formattedDate =\r\n (\"0\" + (dateNow.getMonth() + 1)).slice(-2) + \"/\" + // Month is 0-indexed, so add 1\r\n (\"0\" + dateNow.getDate()).slice(-2) + \"/\" + // Add leading zero to date if necessary\r\n dateNow.getFullYear();\r\n\r\n startDate = EncryptHeader(formattedDate);\r\n } else {\r\n startDate = EncryptHeader(historyStartDate);\r\n }\r\n\r\n if (historyendDate == undefined | historyendDate == \"\") {\r\n let dateNow = new Date();\r\n\r\n let formattedDate =\r\n (\"0\" + (dateNow.getMonth() + 1)).slice(-2) + \"/\" + // Month is 0-indexed, so add 1\r\n (\"0\" + dateNow.getDate()).slice(-2) + \"/\" + // Add leading zero to date if necessary\r\n dateNow.getFullYear();\r\n\r\n endDate = EncryptHeader(formattedDate);\r\n } else {\r\n endDate = EncryptHeader(historyendDate);\r\n }\r\n\r\n if (addDetails.currentScreen == \"reapproved\") {\r\n Reapprove = EncryptHeader(\"TRUE\");\r\n } else {\r\n Reapprove = EncryptHeader(\"FALSE\");\r\n }\r\n\r\n try {\r\n let resp = await fetch(Decrypt(API.APPROVAL_HISTORY_REPORT), {\r\n method: \"GET\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n DateFrom: startDate,\r\n DateTo: endDate,\r\n FilterBy: FilterBy,\r\n Reapprove: Reapprove,\r\n },\r\n });\r\n let respJson = await resp.json();\r\n if (respJson.data) {\r\n let decrypted = respJson.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n return newD;\r\n });\r\n for (let data of decrypted) {\r\n data.fullname = toTitleCase(\r\n data[\"lastname\"] +\r\n \", \" +\r\n data[\"firstname\"] +\r\n \" \" +\r\n data[\"middlename\"]\r\n );\r\n data.gnder = data[\"gender\"].toUpperCase() === \"M\" ? \"Male\" : \"Female\";\r\n data.membType = getMembType(data[\"membertype\"]);\r\n data.stats =\r\n data[\"status\"] === \"A\" && data[\"is_reapprove\"] === false\r\n ? \"Approved\"\r\n : data[\"status\"] === \"D\"\r\n ? \"Disapproved\"\r\n : data[\"status\"] === \"A\" && data[\"is_reapprove\"] === true\r\n ? \"Reapproved\"\r\n : data[\"status\"] === \"T\"\r\n ? \"Terminated\"\r\n : \"Waiting\";\r\n data.membStatus =\r\n data[\"status\"] === \"A\"\r\n ? \"Active\"\r\n : data[\"status\"] === \"T\"\r\n ? \"Terminated\"\r\n : data[\"status\"] === \"D\"\r\n ? \"Disapproved\"\r\n : data[\"status\"] === \"W\"\r\n ? \"Waiting\"\r\n : data[\"status\"] === \"P\"\r\n ? \"Pre-Emplyment\"\r\n : data[\"status\"] === \"S\"\r\n ? \"Suspend\"\r\n : data[\"status\"] === \"U\"\r\n ? \"Under-Process\"\r\n : \"\";\r\n }\r\n\r\n let AvegaTag = user_info.data.department === \"INT APD\" ? false : true;\r\n let reapproved = decrypted.filter((reapp) => {\r\n return reapp.is_reapprove === true;\r\n });\r\n let all = decrypted.filter((all) => {\r\n return all.is_reapprove === false;\r\n });\r\n let filtered_reapproved = reapproved.filter((data) => {\r\n return data.avegatag === AvegaTag;\r\n });\r\n\r\n let filtered_all = all.filter((data) => {\r\n return data.avegatag === AvegaTag;\r\n });\r\n\r\n setReapproveHistory(filtered_reapproved);\r\n setTempReapproved(filtered_reapproved);\r\n setApprovalHistory(filtered_all);\r\n setTempHistory(filtered_all);\r\n } else {\r\n setReapproveHistory([]);\r\n setTempReapproved([]);\r\n setApprovalHistory([]);\r\n setTempHistory([]);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n setHistoryFetching(false);\r\n }\r\n\r\n async function ApprovalHistoryFilterByDate(historyStartDate, historyEndDate) {\r\n\r\n setHistoryFetching(true);\r\n\r\n if (historyStartDate.length == 0) {\r\n setHistoryFetching(false);\r\n alert(\"Please select Start date.\");\r\n return;\r\n }\r\n if (historyEndDate.length == 0) {\r\n setHistoryFetching(false);\r\n alert(\"Please select End date.\");\r\n return;\r\n }\r\n\r\n let dateNow = new Date();\r\n let startdate = new Date(historyStartDate);\r\n let enddate = new Date(historyEndDate);\r\n let dateLimit = new Date(historyStartDate);\r\n dateLimit.setDate(dateLimit.getDate() + 6);\r\n\r\n if (startdate > dateNow) {\r\n setHistoryFetching(false);\r\n alert(\"Start date must start on or before current date.\");\r\n return;\r\n }\r\n if (enddate > dateNow) {\r\n setHistoryFetching(false);\r\n alert(\"End date must start on or before current date.\");\r\n return;\r\n }\r\n if (enddate > dateLimit) {\r\n setHistoryFetching(false);\r\n alert(\"Date selection range limit is 7 days only.\");\r\n return;\r\n }\r\n\r\n setHistoryStartDate(\"\");\r\n setHistoryEndDate(\"\");\r\n GetApprovalHistory(historyStartDate, historyEndDate);\r\n }\r\n\r\n async function ApprovalHistory_AdvanceSearch(SeachValue) {\r\n setHistoryFetching(true);\r\n if (SeachValue.length == 0) {\r\n setHistoryFetching(false);\r\n alert(\"Search field is empty.\");\r\n return;\r\n }\r\n\r\n try {\r\n let TextValue = EncryptHeader(SeachValue);\r\n let resp = await fetch(Decrypt(API.APPROVAL_HISTORY_SEARCH), {\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n SEARCHTEXT: TextValue,\r\n },\r\n });\r\n let respJson = await resp.json();\r\n\r\n if (respJson.data) {\r\n let decrypted = respJson.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n return newD;\r\n });\r\n\r\n for (let data of decrypted) {\r\n data.fullname = toTitleCase(\r\n data[\"lastname\"] +\r\n \", \" +\r\n data[\"firstname\"] +\r\n \" \" +\r\n data[\"middlename\"]\r\n );\r\n data.gnder = data[\"gender\"].toUpperCase() === \"M\" ? \"Male\" : \"Female\";\r\n data.membType = getMembType(data[\"membertype\"]);\r\n data.stats =\r\n data[\"status\"] === \"A\" && data[\"is_reapprove\"] === false\r\n ? \"Approved\"\r\n : data[\"status\"] === \"D\"\r\n ? \"Disapproved\"\r\n : data[\"status\"] === \"A\" && data[\"is_reapprove\"] === true\r\n ? \"Reapproved\"\r\n : data[\"status\"] === \"T\"\r\n ? \"Terminated\"\r\n : \"Waiting\";\r\n data.pci_membType = getMembType(data[\"pci_membertype\"]);\r\n data.membStatus =\r\n data[\"member_status\"] === \"A\"\r\n ? \"Active\"\r\n : data[\"member_status\"] === \"T\"\r\n ? \"Terminated\"\r\n : data[\"member_status\"] === \"D\"\r\n ? \"Disapproved\"\r\n : data[\"member_status\"] === \"W\"\r\n ? \"Waiting\"\r\n : data[\"status\"] === \"P\"\r\n ? \"Pre-Emplyment\"\r\n : data[\"status\"] === \"S\"\r\n ? \"Suspend\"\r\n : data[\"status\"] === \"U\"\r\n ? \"Under-Process\"\r\n : \"\";\r\n }\r\n let AvegaTag = user_info.data.department === \"INT APD\" ? false : true;\r\n\r\n let reapproved = decrypted.filter((reapp) => {\r\n return reapp.is_reapprove === true;\r\n });\r\n let all = decrypted.filter((all) => {\r\n return all.is_reapprove === false;\r\n });\r\n\r\n let filtered_reapproved = reapproved.filter((data) => {\r\n return data.avegatag === AvegaTag;\r\n });\r\n\r\n let filtered_all = all.filter((data) => {\r\n return data.avegatag === AvegaTag;\r\n });\r\n\r\n setReapproveHistory(filtered_reapproved);\r\n setTempReapproved(filtered_reapproved);\r\n setApprovalHistory(filtered_all);\r\n setTempHistory(filtered_all);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n setHistoryFetching(false);\r\n }\r\n\r\n const handleOnSelectRow = (e) => {\r\n return {\r\n onClick: async () => {\r\n\r\n setFetching(true);\r\n setRecordId(e.recordid);\r\n\r\n let memberInfoRequest = await getWorkatoMemberInfo(e.accountno, user_info.access_token)\r\n\r\n if (memberInfoRequest === undefined) {\r\n setFetching(false);\r\n return alert(\"Issue #KA101 \\n\\nSorry, we're having trouble connecting to our server. Try again later.\");\r\n }\r\n\r\n if (memberInfoRequest.status.success === false) {\r\n setFetching(false);\r\n return alert(\"Issue #KA102 \\n\\n\" + memberInfoRequest.status.message);\r\n }\r\n\r\n setRequest({\r\n fullname: e.fullname,\r\n lastname: e.lastname,\r\n firstname: e.firstname,\r\n middlename: e.middlename,\r\n membStatus: e.membStatus,\r\n company: e.company,\r\n employee_id: e.employee_id,\r\n avegatag: e.avegatag,\r\n birthdate: e.birthdate,\r\n civil_status: e.civil_status,\r\n gnder: e.gnder,\r\n issued_date: e.issued,\r\n membType: e.membType,\r\n accountno: e.accountno,\r\n cardno: e.cardno,\r\n mobileno: e.mobileno,\r\n email: e.email,\r\n street: e.street,\r\n city_municipal: e.city_municipal,\r\n province: e.province,\r\n status: e.stats,\r\n regcount: e.regcount,\r\n remarks: e.remarks,\r\n approved_date: e.approved_date,\r\n approved_by: e.approved_by,\r\n email_verdate: e.email_verdate,\r\n is_for_reapprove: e.is_for_reapprove,\r\n pci_lastname: memberInfoRequest.data.lastname,\r\n pci_firstname: memberInfoRequest.data.firstname,\r\n pci_middlename: memberInfoRequest.data.middlename,\r\n pci_employee_id: memberInfoRequest.data.employee_id,\r\n pci_birthdate: memberInfoRequest.data.birth_date,\r\n pci_civil_status: memberInfoRequest.data.civil_status,\r\n pci_gnder: memberInfoRequest.data.gender,\r\n pci_membType: memberInfoRequest.data.member_type,\r\n pci_accountno: memberInfoRequest.data.account_no,\r\n pci_covperiod: memberInfoRequest.data.coverage_period,\r\n pci_card_no: memberInfoRequest.data.card_no,\r\n pci_printeddate: memberInfoRequest.data.card_printed_date,\r\n pci_refdate: e.pci_refdate,\r\n pci_rendate: e.pci_rendate,\r\n pci_termdate: e.pci_termdate,\r\n pci_enddate: e.pci_enddate,\r\n });\r\n\r\n setGovIdImg(null);\r\n setIntIdImg(null);\r\n setImages([]);\r\n setDisapproveRemarks(\"\");\r\n setClicked(\"Approve\");\r\n getUploadedFiles(e);\r\n if (e.cardno === \"\") {\r\n setmodCardWarn(true);\r\n } else {\r\n setModal(true);\r\n }\r\n setFetching(false);\r\n },\r\n };\r\n \r\n // let membinfo = null;\r\n // let himstag = false;\r\n \r\n // let vni_token = vniToken; //VNI Token\r\n\r\n // let tempValue = { \r\n // account_no: e.accountno, // acct \r\n // token: user_info.access_token, \r\n // app: \"1\"\r\n // };\r\n\r\n // let Value = await VNIEncryptBody(tempValue);\r\n // let respMembInfo = await fetch(Decrypt(API.GET_VNIMEMBER_INFO), {\r\n // method: 'POST',\r\n // headers: {\r\n // Authorization: 'Bearer ' + vni_token,\r\n // \"Content-Type\": \"application/json\",\r\n // \"Accept\": \"application/json\",\r\n // },\r\n // body: JSON.stringify({Value}),\r\n // });\r\n\r\n // let responseJson = await respMembInfo.json();\r\n\r\n // if (responseJson != null) {\r\n // if (responseJson.data == null) {\r\n // setIsLoaded(false);\r\n // return alert('No PCI member info found.');\r\n // }\r\n // membinfo = await VNIDecryptBody(responseJson.data);\r\n // himstag = membinfo.hims;\r\n // }\r\n\r\n // let VNIValue = await VNIEncryptBody({\r\n // account_no: membinfo.account_no,\r\n // token: user_info.access_token,\r\n // app: \"1\",\r\n // hims: himstag\r\n // });\r\n\r\n // let respPrincipalMemb = await fetch(Decrypt(API.GET_VNIMEMBER_LIST), {\r\n // method: 'POST',\r\n // headers: {\r\n // \"Content-Type\": \"application/json\",\r\n // \"Accept\": \"application/json\",\r\n // Authorization: 'Bearer ' + vni_token,\r\n // },\r\n // body: JSON.stringify({\"Value\":VNIValue})\r\n // });\r\n\r\n // let responsePrincipalJson = await respPrincipalMemb.json();\r\n\r\n // if (responsePrincipalJson != null) {\r\n // if (responsePrincipalJson.data == null) {\r\n // setIsLoaded(false);\r\n // return alert('No PCI member details found.');\r\n // }\r\n\r\n // let tmp_array = [];\r\n // for (let index = 0; index < responsePrincipalJson.data.length; index++) {\r\n // const element = responsePrincipalJson.data[index];\r\n // tmp_array.push(VNIDecryptBody(element));\r\n // }\r\n\r\n // let acctnum = e.accountno;\r\n // let NewDataSource = tmp_array.filter(function(e) {\r\n // return e.account_no === acctnum;\r\n // });\r\n\r\n // setRequest({\r\n // fullname: e.fullname,\r\n // lastname: e.lastname,\r\n // firstname: e.firstname,\r\n // middlename: e.middlename,\r\n // membStatus: e.membStatus,\r\n // company: e.company,\r\n // employee_id: e.employee_id,\r\n // avegatag: e.avegatag,\r\n // birthdate: e.birthdate,\r\n // civil_status: e.civil_status,\r\n // gnder: e.gnder,\r\n // issued_date: e.issued,\r\n // membType: e.membType,\r\n // accountno: e.accountno,\r\n // cardno: e.cardno,\r\n // mobileno: e.mobileno,\r\n // email: e.email,\r\n // street: e.street,\r\n // city_municipal: e.city_municipal,\r\n // province: e.province,\r\n // status: e.stats,\r\n // regcount: e.regcount,\r\n // remarks: e.remarks,\r\n // approved_date: e.approved_date,\r\n // approved_by: e.approved_by,\r\n // email_verdate: e.email_verdate,\r\n // is_for_reapprove: e.is_for_reapprove,\r\n // pci_lastname: NewDataSource[0].lastname,\r\n // pci_firstname: NewDataSource[0].firstname,\r\n // pci_middlename: NewDataSource[0].middlename,\r\n // pci_employee_id: NewDataSource[0].employee_id,\r\n // pci_birthdate: NewDataSource[0].birth_date,\r\n // pci_civil_status: NewDataSource[0].civil_status,\r\n // pci_gnder: NewDataSource[0].gender,\r\n // pci_membType: NewDataSource[0].member_type,\r\n // pci_accountno: NewDataSource[0].account_no,\r\n // pci_covperiod: NewDataSource[0].coverage_period,\r\n // pci_card_no: NewDataSource[0].card_no,\r\n // pci_printeddate: NewDataSource[0].card_printed_date,\r\n // pci_refdate: e.pci_refdate,\r\n // pci_rendate: e.pci_rendate,\r\n // pci_termdate: e.pci_termdate,\r\n // pci_enddate: e.pci_enddate,\r\n // });\r\n\r\n // setGovIdImg(null);\r\n // setIntIdImg(null);\r\n // setImages([]);\r\n // setDisapproveRemarks(\"\");\r\n // setClicked(\"Approve\");\r\n // getUploadedFiles(e);\r\n // if (e.cardno === \"\") {\r\n // setmodCardWarn(true);\r\n // } else {\r\n // setModal(true);\r\n // }\r\n // setIsLoaded(false);\r\n // }\r\n //// Backup\r\n // setRequest({\r\n // fullname: e.fullname,\r\n // lastname: e.lastname,\r\n // firstname: e.firstname,\r\n // middlename: e.middlename,\r\n // membStatus: e.membStatus,\r\n // company: e.company,\r\n // employee_id: e.employee_id,\r\n // avegatag: e.avegatag,\r\n // birthdate: e.birthdate,\r\n // civil_status: e.civil_status,\r\n // gnder: e.gnder,\r\n // issued_date: e.issued,\r\n // membType: e.membType,\r\n // accountno: e.accountno,\r\n // cardno: e.cardno,\r\n // mobileno: e.mobileno,\r\n // email: e.email,\r\n // street: e.street,\r\n // city_municipal: e.city_municipal,\r\n // province: e.province,\r\n // status: e.stats,\r\n // regcount: e.regcount,\r\n // remarks: e.remarks,\r\n // approved_date: e.approved_date,\r\n // approved_by: e.approved_by,\r\n // email_verdate: e.email_verdate,\r\n // is_for_reapprove: e.is_for_reapprove,\r\n // pci_lastname: e.pci_lastname,\r\n // pci_firstname: e.pci_firstname,\r\n // pci_middlename: e.pci_middlename,\r\n // pci_employee_id: e.pci_employee_id,\r\n // pci_birthdate: e.pci_birthdate,\r\n // pci_civil_status: e.pci_civil_status,\r\n // pci_gnder: e.pci_gnder,\r\n // pci_membType: e.pci_membType,\r\n // pci_accountno: e.pci_accountno,\r\n // pci_refdate: e.pci_refdate,\r\n // pci_rendate: e.pci_rendate,\r\n // pci_termdate: e.pci_termdate,\r\n // pci_enddate: e.pci_enddate,\r\n // });\r\n }\r\n\r\n let retriesWorkatoMembInfo = 0\r\n async function getWorkatoMemberInfo(paramAcctno, paramToken) {\r\n\r\n // Get Workato Token\r\n let token = Decrypt(API.WORKATO_ACCESSTOKEN);\r\n let tempValue = {\r\n account_no: paramAcctno,\r\n contract: 'N/A',\r\n token: paramToken,\r\n app: \"1\"\r\n };\r\n\r\n // Get Workato Member Information\r\n let Value = VNIEncryptBody(tempValue);\r\n\r\n try {\r\n const response = await fetch(Decrypt(API.GET_WORKATOMEMBER_INFO), {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'api-token': token\r\n },\r\n body: JSON.stringify({ Value })\r\n })\r\n let resp = await response.json();\r\n let respStatus = VNIDecryptBody(resp.status);\r\n\r\n if (respStatus.success === true) {\r\n let decrypted = await VNIDecryptBody(resp.data);\r\n return ({ status: respStatus, data: decrypted });\r\n }\r\n if (respStatus.success === false) {\r\n return ({ status: respStatus, data: null });\r\n }\r\n\r\n } catch (e) {\r\n if (retriesWorkatoMembInfo < 3) {\r\n retriesWorkatoMembInfo++;\r\n // console.log(`Retry attempt ${retriesWorkatoMembInfo}`);\r\n // Optionally add a delay before retrying\r\n await new Promise(resolve => setTimeout(resolve, 1000)); // 1 second delay\r\n return getWorkatoMemberInfo(paramAcctno, paramToken); // Retry the operation\r\n } else {\r\n // console.log('Fetch Error :-S', e.message);\r\n }\r\n }\r\n\r\n }\r\n\r\n const handleOnSelectHistoryRow = (e) => {\r\n return {\r\n onClick: async () => {\r\n\r\n setFetching(true);\r\n setRecordId(e.recordid);\r\n setHistoryMembUser({\r\n fullname: e.fullname,\r\n lastname: e.lastname,\r\n firstname: e.firstname,\r\n middlename: e.middlename,\r\n membStatus: e.membStatus,\r\n company: e.company,\r\n employee_id: e.employee_id,\r\n avegatag: e.avegatag,\r\n birthdate: e.birthdate,\r\n civil_status: e.civil_status,\r\n gnder: e.gnder,\r\n membType: e.membType,\r\n accountno: e.accountno,\r\n mobileno: e.mobileno,\r\n email: e.email,\r\n street: e.street,\r\n city_municipal: e.city_municipal,\r\n province: e.province,\r\n status: e.stats,\r\n regcount: e.regcount,\r\n remarks: e.remarks,\r\n approved_date: e.approved_date,\r\n approved_by: e.approved_by,\r\n email_verdate: e.email_verdate,\r\n is_for_reapprove: e.is_for_reapprove,\r\n });\r\n setGovIdImg(null);\r\n setIntIdImg(null);\r\n setImages([]);\r\n setDisapproveRemarks(\"\");\r\n setClicked(\"Approve\");\r\n getUploadedFiles(e);\r\n setModal(true);\r\n setFetching(false);\r\n }\r\n };\r\n }\r\n \r\n async function Pci_membApprovalHistory(e) {\r\n // setIsLoaded(true);\r\n\r\n let memberInfoRequest = await getWorkatoMemberInfo(e.pci_accountno, user_info.access_token)\r\n\r\n if (memberInfoRequest === undefined) {\r\n setFetching(false);\r\n return alert(\"Issue #KA103 \\n\\nSorry, we're having trouble connecting to our server. Try again later.\");\r\n }\r\n\r\n if (memberInfoRequest.status.success === false) {\r\n setFetching(false);\r\n return alert(\"Issue #KA104 \\n\\n\" + memberInfoRequest.status.message);\r\n }\r\n\r\n setHistoryPciMemb({\r\n membStatus: e.membStatus,\r\n issued_date: e.issued,\r\n cardno: e.pci_cardno,\r\n pci_gnder: memberInfoRequest.data.gender,\r\n pci_lastname: memberInfoRequest.data.lastname,\r\n pci_firstname: memberInfoRequest.data.firstname,\r\n pci_middlename: memberInfoRequest.data.middlename,\r\n pci_employee_id: memberInfoRequest.data.employee_id,\r\n pci_birthdate: memberInfoRequest.data.birth_date,\r\n pci_civil_status: memberInfoRequest.data.civil_status,\r\n pci_membType: memberInfoRequest.data.member_type,\r\n pci_accountno: memberInfoRequest.data.account_no,\r\n pci_covperiod: memberInfoRequest.data.coverage_period,\r\n pci_card_no: memberInfoRequest.data.card_no,\r\n pci_printeddate: memberInfoRequest.data.card_printed_date,\r\n pci_refdate: e.pci_refdate,\r\n pci_rendate: e.pci_rendate,\r\n pci_termdate: e.pci_termdate,\r\n pci_enddate: e.pci_enddate,\r\n });\r\n setDisapproveRemarks(\"\");\r\n setClicked(\"Approve\");\r\n if (e.pci_cardno === \"\") {\r\n setmodCardWarn(true);\r\n } else {\r\n setModal(true);\r\n }\r\n\r\n setFetching(false);\r\n\r\n return\r\n\r\n // let membinfo = null;\r\n // let himstag = false;\r\n // let vni_token = vniToken; //VNI Token\r\n\r\n // let tempValue = { \r\n // account_no: e.pci_accountno, // acct \r\n // token: user_info.access_token, \r\n // app: \"1\"\r\n // };\r\n\r\n // let Value = await VNIEncryptBody(tempValue);\r\n // let respMembInfo = await fetch(Decrypt(API.GET_VNIMEMBER_INFO), {\r\n // method: 'POST',\r\n // headers: {\r\n // Authorization: 'Bearer ' + vni_token,\r\n // \"Content-Type\": \"application/json\",\r\n // \"Accept\": \"application/json\",\r\n // },\r\n // body: JSON.stringify({Value}),\r\n // });\r\n\r\n // let responseJson = await respMembInfo.json();\r\n\r\n // if (responseJson != null) {\r\n // if (responseJson.data == null) {\r\n // setIsLoaded(false);\r\n // return alert('No PCI member info found.'); \r\n // }\r\n\r\n // membinfo = await VNIDecryptBody(responseJson.data);\r\n // himstag = membinfo.hims;\r\n // }\r\n\r\n // let VNIValue = await VNIEncryptBody({\r\n // account_no: membinfo.account_no,\r\n // token: user_info.access_token,\r\n // app: \"1\",\r\n // hims: himstag\r\n // });\r\n\r\n // let respPrincipalMemb = await fetch(Decrypt(API.GET_VNIMEMBER_LIST), {\r\n // method: 'POST',\r\n // headers: {\r\n // \"Content-Type\": \"application/json\",\r\n // \"Accept\": \"application/json\",\r\n // Authorization: 'Bearer ' + vni_token,\r\n // },\r\n // body: JSON.stringify({\"Value\":VNIValue})\r\n // });\r\n\r\n // let responsePrincipalJson = await respPrincipalMemb.json();\r\n\r\n // if (responsePrincipalJson != null) {\r\n // if (responsePrincipalJson.data == null) {\r\n // setIsLoaded(false);\r\n // return alert('No PCI member details found.');\r\n // }\r\n\r\n // let tmp_array = [];\r\n // for (let index = 0; index < responsePrincipalJson.data.length; index++) {\r\n // const element = responsePrincipalJson.data[index];\r\n // tmp_array.push(VNIDecryptBody(element));\r\n // }\r\n\r\n // let acctnum = e.accountno;\r\n // let NewDataSource = tmp_array.filter(function(e) {\r\n // return e.pci_accountno === acctnum;\r\n // });\r\n\r\n // setHistoryPciMemb({\r\n // membStatus: e.membStatus,\r\n // issued_date: e.issued,\r\n // cardno: e.pci_cardno,\r\n // pci_gnder: NewDataSource[0].gender,\r\n // pci_lastname: NewDataSource[0].lastname,\r\n // pci_firstname: NewDataSource[0].firstname,\r\n // pci_middlename: NewDataSource[0].middlename,\r\n // pci_employee_id: NewDataSource[0].employee_id,\r\n // pci_birthdate: NewDataSource[0].birth_date,\r\n // pci_civil_status: NewDataSource[0].civil_status,\r\n // pci_membType: NewDataSource[0].member_type,\r\n // pci_accountno: NewDataSource[0].account_no,\r\n // pci_covperiod: NewDataSource[0].coverage_period,\r\n // pci_card_no: NewDataSource[0].card_no,\r\n // pci_printeddate: NewDataSource[0].card_printed_date,\r\n // pci_refdate: e.pci_refdate,\r\n // pci_rendate: e.pci_rendate,\r\n // pci_termdate: e.pci_termdate,\r\n // pci_enddate: e.pci_enddate,\r\n // });\r\n\r\n //backup\r\n // setHistoryPciMemb({\r\n // membStatus: e.membStatus,\r\n // issued_date: e.issued,\r\n // cardno: e.pci_cardno,\r\n // pci_gnder: e.pci_gnder,\r\n // pci_lastname: e.pci_lastname,\r\n // pci_firstname: e.pci_firstname,\r\n // pci_middlename: e.pci_middlename,\r\n // pci_employee_id: e.pci_employeeid,\r\n // pci_birthdate: e.pci_birthdate,\r\n // pci_civil_status: e.pci_civil_status,\r\n // pci_membType: e.pci_membType,\r\n // pci_accountno: e.pci_accountno,\r\n // pci_refdate: e.pci_refdate,\r\n // pci_rendate: e.pci_rendate,\r\n // pci_termdate: e.pci_termdate,\r\n // pci_enddate: e.pci_enddate,\r\n // });\r\n\r\n // setDisapproveRemarks(\"\");\r\n // setClicked(\"Approve\");\r\n // if (e.pci_cardno === \"\") {\r\n // setmodCardWarn(true);\r\n // } else {\r\n // setModal(true);\r\n // }\r\n\r\n // setIsLoaded(false);\r\n // }\r\n }\r\n\r\n async function getUploadedFiles(memberId) {\r\n try {\r\n setImgLoad(true);\r\n let Value = Encrypt2({ member_id: memberId.recordid, file_type: \"\" });\r\n let resp = await fetch(Decrypt(API.MEMBER_FILES), {\r\n method: 'POST',\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ Value }),\r\n });\r\n let respJson = await resp.json();\r\n\r\n if (resp.status === 200) {\r\n let files = respJson.data.map((data) => {\r\n return Decrypt2(data);\r\n });\r\n\r\n if (respJson.sharepoint === false) {\r\n await processImage(files, \"intid\");\r\n await processImage(files, \"govid\");\r\n }\r\n \r\n if (respJson.sharepoint === true) {\r\n\r\n await processID(files, memberId, \"intid\");\r\n await processID(files, memberId, \"govid\");\r\n\r\n }\r\n\r\n } else {\r\n // let filesHolder;\r\n let decrypt = Decrypt2(respJson)\r\n if (decrypt.message === \"File does not exist.\") {\r\n setImgLoad(false);\r\n }\r\n }\r\n } catch (error) {\r\n alert(\"Internal Server Error\");\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function processImage(files, filteredID) {\r\n\r\n let filesHolder = files;\r\n let processID = filesHolder.filter(data => data.tag === filteredID);\r\n\r\n let blob_new = await convertBase64ToBlob(processID[0].path, processID[0].ext);\r\n let reader = new FileReader();\r\n reader.readAsDataURL(blob_new);\r\n reader.onload = () => {\r\n if (processID[0].tag === \"intid\") {\r\n setIntIdImg(reader.result);\r\n } else if (processID[0].tag === \"govid\") {\r\n setGovIdImg(reader.result);\r\n }\r\n setImages((oldArray) => [...oldArray, reader.result]);\r\n setImgLoad(false)\r\n };\r\n }\r\n\r\n async function processID(files, memberId, filteredID) {\r\n let filesHolder = files;\r\n let processID = filesHolder.filter(data => data.tag === filteredID);\r\n let json_processID = {\r\n recordid: memberId.recordid,\r\n avega: memberId.avegatag,\r\n accountno: memberId.accountno,\r\n filename: processID[0].filename,\r\n filepath: processID[0].path,\r\n filetype: processID[0].ext,\r\n filetag: processID[0].tag\r\n };\r\n\r\n let processIDparam = await Encrypt2(json_processID);\r\n let processIDresp = await fetch(Decrypt(API.DOWNLOADIMAGE), {\r\n method: 'POST',\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ ImageBase64: \"\", ImageDetails: processIDparam }),\r\n });\r\n let processIDrespJson = await processIDresp.json();\r\n\r\n if (processIDrespJson.success) {\r\n let blob_new = await convertBase64ToBlob(processIDrespJson.base64, processID[0].ext);\r\n let reader = new FileReader();\r\n reader.readAsDataURL(blob_new);\r\n reader.onload = () => {\r\n if (processID[0].tag === \"intid\") {\r\n setIntIdImg(reader.result);\r\n } else if (processID[0].tag === \"govid\") {\r\n setGovIdImg(reader.result);\r\n }\r\n setImages((oldArray) => [...oldArray, reader.result]);\r\n setImgLoad(false)\r\n };\r\n\r\n \r\n let posted_from = \"\";\r\n if (memberId.avegatag) {\r\n posted_from = \"Avega_Agora_Android\";\r\n } else {\r\n posted_from = \"Intellicare_Agora_Android\";\r\n }\r\n\r\n let Value = Encrypt2({\r\n memberid: memberId.recordid,\r\n accountno: memberId.accountno,\r\n filetag: filteredID,\r\n filename: processID[0].filename,\r\n filetype: processID[0].ext,\r\n postedfrom: posted_from,\r\n });\r\n\r\n await UploadMemberFile(Value, processIDrespJson.base64);\r\n }\r\n else {\r\n await renderImg(json_processID);\r\n };\r\n }\r\n\r\n async function convertBase64ToBlob(base64Image, fileext) {\r\n // Hold the content type\r\n const imageType = fileext;\r\n // Decode Base64 string\r\n const decodedData = window.atob(base64Image);\r\n // Create UNIT8ARRAY of size same as row data length\r\n const uInt8Array = new Uint8Array(decodedData.length);\r\n // Insert all character code into uInt8Array\r\n for (let i = 0; i < decodedData.length; ++i) {\r\n uInt8Array[i] = decodedData.charCodeAt(i);\r\n }\r\n // Return BLOB image after conversion\r\n return new Blob([uInt8Array], { type: imageType });\r\n }\r\n\r\n async function UploadMemberFile(Value, base64) {\r\n try {\r\n var details = {\r\n base64: base64,\r\n Image_datails: Value\r\n };\r\n var formBody = [];\r\n for (var property in details) {\r\n var encodedKey = encodeURIComponent(property);\r\n var encodedValue = encodeURIComponent(details[property]);\r\n formBody.push(encodedKey + '=' + encodedValue);\r\n }\r\n formBody = formBody.join('&');\r\n \r\n let resp = await fetch(Decrypt(API.MEMBERFILE_UPLOAD_V2), {\r\n method: 'POST',\r\n headers: {\r\n Authorization: 'Bearer ' + user_info.access_token,\r\n 'Content-Type': 'application/x-www-form-urlencoded'\r\n },\r\n body: formBody,\r\n });\r\n let respJson = await resp.json();\r\n \r\n } catch (e) {\r\n // console.log('Fetch Error :-S', e);\r\n }\r\n };\r\n\r\n async function renderImg(Imgparam) {\r\n try {\r\n let ImagePath = ImgEncrypt(Imgparam.filepath);\r\n let resp = await fetch(Decrypt(API.IMAGES_PATH), {\r\n\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n Authorization: \"bearer \" + user_info.access_token,\r\n ImagePath,\r\n },\r\n });\r\n let respBlob = await resp.blob();\r\n let reader = new FileReader();\r\n reader.readAsDataURL(respBlob);\r\n\r\n reader.onload = () => {\r\n if (Imgparam.filetag === \"govid\") setGovIdImg(reader.result);\r\n else if (Imgparam.filetag === \"intid\") setIntIdImg(reader.result);\r\n setImages((oldArray) => [...oldArray, reader.result]);\r\n setImgLoad(false);\r\n };\r\n\r\n let Ref_File= Imgparam.filename;\r\n let convert_String = \"\";\r\n convert_String = Ref_File.toString();\r\n\r\n // get filename only\r\n let fileName = convert_String.substring(0, convert_String.lastIndexOf(\".\"));\r\n // get file extension only\r\n let fileExt = Ref_File.substring(Ref_File.lastIndexOf(\".\") + 1);\r\n\r\n reader.onloadend = async function () {\r\n let base64data = reader.result.substring(reader.result.lastIndexOf(\",\") + 1);\r\n let Imgparameters = {\r\n recordid: Imgparam.recordid,\r\n avega: Imgparam.avega,\r\n filename: fileName,\r\n filepath: Imgparam.filepath, // \"\", include for deleting filepath in file serve\r\n filetype: fileExt,\r\n filetag: Imgparam.filetag,\r\n accountno: Imgparam.accountno\r\n };\r\n let Imageparam = await Encrypt2(Imgparameters);\r\n\r\n let resp = await fetch(Decrypt(API.DOWNLOADIMAGE), {\r\n method: 'POST',\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ ImageBase64: base64data, ImageDetails: Imageparam }),\r\n });\r\n let newResp = await resp.json()\r\n if (newResp.success == true) {\r\n //alert(newResp.message); //File Successfully Saved in Database.\r\n }\r\n else {\r\n let NewResponse = Decrypt2(newResp);\r\n // alert(NewResponse.message);\r\n }\r\n\r\n let posted_from = \"\";\r\n if (Imgparam.avega) {\r\n posted_from = \"Avega_Agora_Android\";\r\n } else {\r\n posted_from = \"Intellicare_Agora_Android\";\r\n }\r\n\r\n let Value = Encrypt2({\r\n memberid: Imgparam.recordid,\r\n accountno: Imgparam.accountno,\r\n filetag: Imgparam.filetag,\r\n filename: fileName,\r\n filetype: fileExt,\r\n postedfrom: posted_from,\r\n });\r\n\r\n await UploadMemberFile(Value, base64data);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n function toggleModal() {\r\n setModal(!modal);\r\n setMemberProfile(false);\r\n setMembProfButtonCaption(\"View Member Profile\");\r\n setModalSize(\"lg\");\r\n }\r\n function toggleModDisapprove() {\r\n setDisapproveRemarks(\"\");\r\n setDisapproveMessage(\"\");\r\n setModDisapprove(!modDisapprove);\r\n }\r\n function toggleModCardWarn() {\r\n setmodCardWarn(!modCardWarn);\r\n }\r\n function Confirm() {\r\n setModDisapprove(false);\r\n setModal(false);\r\n setReason([]);\r\n\r\n confirmAlert(options);\r\n }\r\n async function handleApproveApplication() {\r\n try {\r\n let Value = Encrypt2({\r\n memberid: recordid,\r\n status: \"A\",\r\n approved_by: user_info.data.email,\r\n remarks: null,\r\n fullname: toTitleCase(request.firstname + \" \" + request.lastname),\r\n email: request.email,\r\n });\r\n let resp = await fetch(Decrypt(API.APPROVED_APPLICATION), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n Value,\r\n }),\r\n });\r\n let respText = await resp.text();\r\n\r\n let respJson = await Decrypt2(respText.replace(/\"/g, \"\"));\r\n if (respJson.success)\r\n addToast(\"Application Successfully Approved!\", {\r\n appearance: \"success\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n else\r\n addToast(respJson.message, {\r\n appearance: \"error\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n toggleModal();\r\n GetApprovalRequests();\r\n } catch (error) {\r\n console.log(error);\r\n alert(\"Internal Server Error\");\r\n }\r\n }\r\n async function handleReapproveApplication() {\r\n try {\r\n let Value = Encrypt2({\r\n memberid: recordid,\r\n email: HistoryMembUser.email,\r\n fullname: toTitleCase(HistoryMembUser.firstname + \" \" + HistoryMembUser.lastname),\r\n });\r\n let resp = await fetch(Decrypt(API.REAPPROVED_APPLICATION), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n Value,\r\n }),\r\n });\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText.replace(/\"/g, \"\"));\r\n if (respJson.success)\r\n addToast(\"Application Successfully Reapproved!\", {\r\n appearance: \"success\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n else\r\n addToast(respJson.error_message, {\r\n appearance: \"error\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n\r\n toggleModal();\r\n GetApprovalHistory();\r\n } catch (error) {\r\n console.log(error);\r\n alert(\"Internal Server Error\");\r\n }\r\n }\r\n async function handleDisapproveApplication(e) {\r\n e.preventDefault();\r\n e.target.className += \" was-validated\";\r\n\r\n if (reason.lenght === 0) {\r\n setDisapproveMessage(\"Required!\");\r\n return;\r\n }\r\n //\r\n setClicked(\"Disapprove\");\r\n\r\n if (reason.length >= 1) {\r\n reason.forEach((element) => {\r\n multipleReason = multipleReason.concat(\r\n element.toString().slice(0, element.search(\"•\"))\r\n );\r\n\r\n if (element.search(\"•\") > 0) {\r\n let NewElement = element.substr(0, element.toString().length - 1);\r\n SpecialInstructions = SpecialInstructions.concat(\r\n NewElement.substr(\r\n NewElement.search(\"•\") + 1,\r\n NewElement.toString().length\r\n )\r\n );\r\n }\r\n });\r\n }\r\n\r\n let SpecialInstructionsFiltered = SpecialInstructions.filter((data) => {\r\n return data !== \"\";\r\n });\r\n SpecialInstructions = SpecialInstructionsFiltered;\r\n\r\n Confirm();\r\n }\r\n\r\n async function handleConfirmDisapproveApplication() {\r\n try {\r\n let final_reappnotif = 0;\r\n\r\n for (let i = 0; i < reason.length; i++) {\r\n let data_rec = reason[i];\r\n let reapp_notif = data_rec.substr(data_rec.length - 1);\r\n\r\n if (reapp_notif == 1) {\r\n final_reappnotif = 1;\r\n }\r\n }\r\n\r\n let Value = Encrypt2({\r\n memberid: recordid,\r\n status: \"D\",\r\n approved_by: user_info.data.email,\r\n remarks:\r\n disapproveRemarks.trim() === \"\"\r\n ? multipleReason.toString().trim()\r\n : multipleReason.toString().trim() + \", \" + disapproveRemarks,\r\n special_instructions: SpecialInstructions.toString().trim(),\r\n fullname: toTitleCase(request.firstname + \" \" + request.lastname),\r\n email: request.email,\r\n reapprove_notification: final_reappnotif,\r\n });\r\n\r\n let resp = await fetch(Decrypt(API.APPROVED_APPLICATION), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n Value,\r\n }),\r\n });\r\n let respText = await resp.text();\r\n let respJson = await Decrypt2(respText.replace(/\"/g, \"\"));\r\n if (respJson.success)\r\n addToast(\"Application Successfully Disapproved!\", {\r\n appearance: \"success\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n else\r\n addToast(respJson.message, {\r\n appearance: \"error\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n\r\n toggleModDisapprove();\r\n GetApprovalRequests();\r\n } catch (error) {\r\n alert(\"Internal Server Error\");\r\n console.log(error);\r\n }\r\n }\r\n\r\n function handleModalCardWarning() {\r\n setmodCardWarn(!modCardWarn);\r\n if (current === 'pending') {setModal(!modal)}; \r\n }\r\n\r\n function NoDataFound() {\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {current === \"reapproved\" ? (\r\n

    No Reapprove History Right Now

    \r\n ) : current === \"history\" ? (\r\n

    No Approval History Right Now

    \r\n ) : (\r\n

    No Pending Requests Right Now

    \r\n )}\r\n
    \r\n
    \r\n );\r\n }\r\n\r\n function renderStatus(status) {\r\n if (current === \"history\" || current === \"reapproved\") {\r\n if (status === \"Waiting\")\r\n return (\r\n \r\n {\" - \"}\r\n WAITING\r\n \r\n );\r\n else if (status === \"Approved\")\r\n return (\r\n \r\n {\" - \"}\r\n APPROVED\r\n \r\n );\r\n else if (status === \"Reapproved\")\r\n return (\r\n \r\n {\" - \"}\r\n REAPPROVED\r\n \r\n );\r\n else\r\n return (\r\n \r\n {\" - \"}\r\n DISAPPROVED\r\n \r\n );\r\n } else return null;\r\n }\r\n\r\n function FilterHistory(status) {\r\n if (status === \"None\") setApprovalHistory(tempHistory);\r\n else if (status === \"Approved\") {\r\n let filterApprove = tempHistory.filter((data) => {\r\n return data.stats === \"Approved\";\r\n });\r\n setApprovalHistory(filterApprove);\r\n } else {\r\n let filterDisapprove = tempHistory.filter((data) => {\r\n return data.stats === \"Disapproved\";\r\n });\r\n setApprovalHistory(filterDisapprove);\r\n }\r\n }\r\n\r\n async function getpci_membprofile() {\r\n try {\r\n let resp = await fetch(Decrypt(API.APPROVAL_HISTORY_PCIMEMB), {\r\n method: \"GET\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n Account: EncryptHeader(HistoryMembUser.accountno)\r\n },\r\n });\r\n let respJson = await resp.json();\r\n if (respJson.data) {\r\n let decrypted = respJson.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n return newD;\r\n });\r\n\r\n for (let data of decrypted) {\r\n data.pci_gnder = data[\"pci_gender\"].toUpperCase() === \"M\" ? \"Male\" : \"Female\";\r\n data.pci_membType = getMembType(data[\"pci_membertype\"]);\r\n data.membStatus =\r\n data[\"member_status\"] === \"A\"\r\n ? \"Active\"\r\n : data[\"member_status\"] === \"T\"\r\n ? \"Terminated\"\r\n : data[\"member_status\"] === \"D\"\r\n ? \"Disapproved\"\r\n : data[\"member_status\"] === \"W\"\r\n ? \"Waiting\"\r\n : data[\"member_status\"] === \"U\"\r\n ? \"Under-Process\"\r\n : data[\"member_status\"] === \"S\"\r\n ? \"Suspended\"\r\n : \"\";\r\n }\r\n\r\n Pci_membApprovalHistory(decrypted[0]);\r\n }\r\n else \r\n {\r\n alert(respJson.message);\r\n }\r\n\r\n } catch (error) {\r\n console.log(error);\r\n alert(\"Internal Server Error\");\r\n }\r\n }\r\n\r\n // async function FilterByHmo(HMOFilter) {\r\n // if (current === \"pending\") {\r\n // if (HMOFilter === \"All\") {\r\n // setData(tempData);\r\n // } else if (HMOFilter === \"Intellicare\") {\r\n // let filterHMOIntellicare = tempData.filter((data) => {\r\n // return data.avegatag === false;\r\n // });\r\n // setData(filterHMOIntellicare);\r\n // } else {\r\n // let filterHMOAvega = tempData.filter((data) => {\r\n // return data.avegatag === true;\r\n // });\r\n // setData(filterHMOAvega);\r\n // }\r\n // } else if (current === \"history\") {\r\n // if (HMOFilter === \"All\") {\r\n // setApprovalHistory(tempHistory);\r\n // } else if (HMOFilter === \"Intellicare\") {\r\n // let filterHMOIntellicare = tempHistory.filter((data) => {\r\n // return data.avegatag === false;\r\n // });\r\n // setApprovalHistory(filterHMOIntellicare);\r\n // } else {\r\n // let filterHMOAvega = tempHistory.filter((data) => {\r\n // return data.avegatag === true;\r\n // });\r\n // setApprovalHistory(filterHMOAvega);\r\n // }\r\n // } else {\r\n // if (HMOFilter === \"All\") {\r\n // setReapproveHistory(tempReapproved);\r\n // } else if (HMOFilter === \"Intellicare\") {\r\n // let filterHMOIntellicare = tempReapproved.filter((data) => {\r\n // return data.avegatag === false;\r\n // });\r\n // setReapproveHistory(filterHMOIntellicare);\r\n // } else {\r\n // let filterHMOAvega = tempReapproved.filter((data) => {\r\n // return data.avegatag === true;\r\n // });\r\n // setReapproveHistory(filterHMOAvega);\r\n // }\r\n // }\r\n // }\r\n\r\n function Filter(date, numFrom, numTo) {\r\n if (date === \"\") return message.warning(\"Please select date\", 2);\r\n let ref = date.replace(\"-\", \"\");\r\n let newref = ref.replace(\"-20\", \"\");\r\n let filtered_date = tempData.filter((item) => {\r\n const itemData = `${item.incremental_id.toUpperCase()}`;\r\n const textData = newref.toUpperCase();\r\n return itemData.indexOf(textData) > -1;\r\n });\r\n for (let data of filtered_date) {\r\n data.counter = convertToNumber(data.incremental_id);\r\n }\r\n if (numFrom > numTo) {\r\n return alert(\"Invalid filter number range!\");\r\n }\r\n if (numFrom === 0 && numTo === 0) {\r\n setData(filtered_date);\r\n } else {\r\n let filtered_num = filtered_date.filter((item) => {\r\n return item.counter >= numFrom && item.counter <= numTo;\r\n });\r\n setData(filtered_num);\r\n }\r\n }\r\n\r\n function SearchData(text) {\r\n if (current === \"pending\") {\r\n setsearchTempData(tempData);\r\n } else if (current === \"reapproved\") {\r\n setsearchTempData(tempReapproved);\r\n } else {\r\n setsearchTempData(tempHistory);\r\n }\r\n\r\n let searchedData = searchTempData.filter((item) => {\r\n const itemData = `${item.fullname.toUpperCase()} ${item.accountno.toUpperCase()} ${\r\n current === \"pending\"\r\n ? item.incremental_id.toUpperCase()\r\n : item.increment_id.toUpperCase()\r\n }`;\r\n const textData = text.toUpperCase();\r\n return itemData.indexOf(textData) > -1;\r\n });\r\n if (current === \"pending\") {\r\n setData(searchedData);\r\n } else if (current === \"reapproved\") {\r\n setReapproveHistory(searchedData);\r\n } else {\r\n setApprovalHistory(searchedData);\r\n }\r\n }\r\n\r\n function menuDataTable(current_menu) {\r\n switch (current_menu) {\r\n case \"pending\":\r\n return (\r\n `Total ${addDetails.totalRecord} items`,\r\n onChange: (page, pageSize) => {\r\n addDetails.pageNumber = page;\r\n addDetails.pageRow = pageSize;\r\n GetApprovalRequests();\r\n },\r\n onShowSizeChange: (page, pageSize) => {\r\n addDetails.pageNumber = page; // Reset to the first page on size change\r\n addDetails.pageRow = pageSize; // Update the page size\r\n GetApprovalRequests(); // Fetch data with the new page size\r\n },\r\n }}\r\n title={() => (\r\n
    \r\n
    Pending Request
    \r\n
    \r\n )}\r\n />\r\n );\r\n case \"history\":\r\n return (\r\n
    \r\n `Total ${total} items`,\r\n }}\r\n title={() => (\r\n
    \r\n
    Approval History
    \r\n \r\n
    \r\n )}\r\n />\r\n
    \r\n );\r\n case \"reapproved\":\r\n return (\r\n `Total ${total} items`,\r\n }}\r\n title={() => (\r\n
    \r\n
    Reapproved History
    \r\n \r\n
    \r\n )}\r\n />\r\n );\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n function viewMembProfile() {\r\n if (membProfButtonCaption === \"View Member Profile\") { \r\n if (current === \"reapproved\" || current === \"history\") {\r\n getpci_membprofile();\r\n } \r\n setMemberProfile(true);\r\n setMembProfButtonCaption(\"Hide Member Profile\");\r\n setModalSize(\"fluid\");\r\n } else {\r\n setMemberProfile(false);\r\n setMembProfButtonCaption(\"View Member Profile\");\r\n setModalSize(\"lg\");\r\n }\r\n }\r\n\r\n if (isLoaded) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n else {\r\n return (\r\n
    \r\n {/* Comment this portion if live api */}\r\n {/* \r\n
    */}\r\n {/* Comment this portion if live api */}\r\n \r\n \r\n \r\n Pending Requests\r\n \r\n \r\n \r\n Approval History\r\n \r\n \r\n \r\n Reapproved History\r\n \r\n \r\n {current === \"history\" ? (\r\n
    \r\n
    \r\n Filter: \r\n {\r\n FilterHistory(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 setHistoryStartDate(dateString[0]);\r\n setHistoryEndDate(dateString[1]);\r\n }}\r\n />\r\n\r\n \r\n ApprovalHistoryFilterByDate(HistoryStartDate, HistoryEndDate)\r\n }\r\n color=\"primary\"\r\n size=\"sm\"\r\n loading={loading.toString()}\r\n >\r\n Apply\r\n \r\n\r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n ),\r\n }}\r\n onChange={(e) => SearchData(e.target.value)}\r\n />\r\n
    \r\n
    \r\n \r\n \r\n \r\n ),\r\n }}\r\n onChange={(e) =>\r\n e.target.value === \"\"\r\n ? GetApprovalHistory(e.target.value)\r\n : setReapproveSearchValue(e.target.value)\r\n }\r\n />\r\n \r\n ApprovalHistory_AdvanceSearch(ReapporoveSearchValue)\r\n }\r\n color=\"primary\"\r\n size=\"sm\"\r\n loading={loading.toString()}\r\n >\r\n Proceed\r\n \r\n
    \r\n
    \r\n ) : null}\r\n {current === \"pending\" ? (\r\n
    \r\n
    \r\n Filter: \r\n setStartDate(dateString)}\r\n />\r\n setFilterNumFrom(e.target.value.trim())}\r\n />\r\n \r\n setFilterNumTo(e.target.value.trim())}\r\n />\r\n Filter(startDate, filterNumFrom, filterNumTo)}\r\n color=\"primary\"\r\n size=\"sm\"\r\n style={{ height: 29 }}\r\n >\r\n Search\r\n \r\n {\r\n setData(tempData);\r\n setFilterNumFrom(0);\r\n setFilterNumTo(0);\r\n }}\r\n color=\"primary\"\r\n size=\"sm\"\r\n style={{ height: 29 }}\r\n >\r\n Reset\r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n ),\r\n }}\r\n style={{ marginLeft: 20 }}\r\n onChange={(e) => SearchData(e.target.value)}\r\n />\r\n
    \r\n
    \r\n ) : null}\r\n {current === \"reapproved\" ? (\r\n \r\n
    \r\n \r\n \r\n \r\n ),\r\n }}\r\n style={{ marginLeft: 20 }}\r\n onChange={(e) => SearchData(e.target.value)}\r\n />\r\n\r\n

    \r\n

    \r\n\r\n \r\n {\r\n setHistoryStartDate(dateString[0]);\r\n setHistoryEndDate(dateString[1]);\r\n }}\r\n />\r\n\r\n \r\n ApprovalHistoryFilterByDate(HistoryStartDate, HistoryEndDate)\r\n }\r\n color=\"primary\"\r\n size=\"sm\"\r\n loading={loading.toString()}\r\n >\r\n Apply\r\n \r\n\r\n
    \r\n
    \r\n \r\n \r\n \r\n ),\r\n }}\r\n onChange={(e) =>\r\n e.target.value === \"\"\r\n ? GetApprovalHistory()\r\n : setReapproveSearchValue(e.target.value)\r\n }\r\n />\r\n \r\n ApprovalHistory_AdvanceSearch(ReapporoveSearchValue)\r\n }\r\n color=\"primary\"\r\n size=\"sm\"\r\n style={{ height: 29 }}\r\n loading={loading.toString()}\r\n >\r\n Proceed\r\n \r\n
    \r\n
    \r\n ) : null}\r\n {menuDataTable(current)}\r\n {current === \"pending\" ? (\r\n \r\n
    \r\n \r\n {\" \"}\r\n Member has no card number\r\n \r\n \r\n {\r\n toggleModCardWarn();\r\n }}\r\n >\r\n Close\r\n \r\n {\r\n handleModalCardWarning();\r\n }}\r\n >\r\n Continue...\r\n \r\n \r\n
    \r\n
    \r\n ) : null}\r\n \r\n {current === \"history\" || current === \"reapproved\" ? (\r\n \r\n
    \r\n \r\n {\" \"}\r\n Member has no card number\r\n \r\n \r\n {\r\n toggleModCardWarn();\r\n }}\r\n >\r\n Close\r\n \r\n {\r\n handleModalCardWarning();\r\n }}\r\n >\r\n Continue...\r\n \r\n \r\n
    \r\n
    \r\n ) : null} \r\n \r\n {(current === \"history\" || current === \"reapproved\") ? HistoryMembUser.fullname : request.fullname} \r\n {current === \"pending\" ? (\r\n \r\n {toTitleCase(\" - \" + request.company)}\r\n \r\n ) : null}\r\n {(current === \"history\" || current === \"reapproved\") ? renderStatus(HistoryMembUser.status) : renderStatus(request.status)}{\" \"}\r\n {(current === \"history\" || current === \"reapproved\") &&\r\n request.status !== \"Waiting\" ? (\r\n \r\n {\" \"}\r\n by {HistoryMembUser.approved_by} at {HistoryMembUser.approved_date}{\" \"}\r\n \r\n ) : null}\r\n \r\n Registration Attempts :{\" \"}\r\n \r\n {request.regcount}\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\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\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\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 {(current === \"reapproved\" || current === \"history\") && HistoryMembUser.status === \"Disapproved\" ? (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : null}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {govIdImg ? (\r\n {\r\n setPhotoIndex(\r\n images.findIndex((img) => img === govIdImg)\r\n );\r\n toggleModal();\r\n setIsOpen(true);\r\n }}\r\n >\r\n \r\n \r\n ) : govIdImg === null && !imgLoad ? (\r\n
    \r\n No Uploaded Files Found!\r\n
    \r\n ) : (\r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n {intIdImg ? (\r\n {\r\n setPhotoIndex(\r\n images.findIndex((img) => img === intIdImg)\r\n );\r\n toggleModal();\r\n setIsOpen(true);\r\n }}\r\n >\r\n \r\n \r\n ) : intIdImg === null && !imgLoad ? (\r\n
    \r\n No Uploaded Files Found!\r\n
    \r\n ) : (\r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {/* Member Profile */}\r\n {memberProfile ? (\r\n \r\n
    Member Profile(PCI)
    \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\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\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\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\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 ) : null}\r\n
    \r\n
    \r\n \r\n \r\n Close\r\n \r\n
    \r\n \r\n {membProfButtonCaption}\r\n \r\n \r\n {current === \"reapproved\" || current === \"history\" ? null : (\r\n {\r\n toggleModal();\r\n toggleModDisapprove();\r\n setReason(\"\");\r\n setClicked(\"Disapprove\");\r\n }}\r\n >\r\n Disapprove\r\n \r\n )}\r\n {current === \"reapproved\" || current === \"history\" ? null : (\r\n {\r\n setClicked(\"Approve\");\r\n Confirm();\r\n }}\r\n >\r\n Approve\r\n \r\n )}\r\n
    \r\n {(current === \"reapproved\" || current === \"history\") && HistoryMembUser.status === \"Disapproved\" && \r\n HistoryMembUser.is_for_reapprove === true ? (\r\n {\r\n setClicked(\"Approve\");\r\n Confirm();\r\n }}\r\n >\r\n Reapprove\r\n \r\n ) : null}\r\n
    \r\n
    \r\n ,\r\n ,\r\n ]}\r\n footer={[\r\n {\r\n toggleModDisapprove();\r\n toggleModal();\r\n setClicked(\"Approve\");\r\n }}\r\n >\r\n Return\r\n ,\r\n handleDisapproveApplication(e)}\r\n >\r\n Disapprove\r\n ,\r\n ]}\r\n >\r\n \r\n
    \r\n
    \r\n {/* SPECIAL INSTRUCTIONS */}\r\n \r\n {\r\n setReason(e);\r\n setReappNotif(\r\n e.length > 1\r\n ? 0\r\n : Number(e.toString().slice(e.toString().length - 1))\r\n );\r\n }}\r\n >\r\n {lstReasons.map((reason) => (\r\n \r\n {toTitleCase(reason.remarks)}\r\n \r\n ))}\r\n \r\n
    {disapproveMessage}
    \r\n \r\n setDisapproveRemarks(e.target.value)}\r\n />\r\n \r\n {isOpen ? (\r\n {\r\n setIsOpen(false);\r\n toggleModal();\r\n }}\r\n images={[{ src: images[photoIndex] }]}\r\n />\r\n ) : null}\r\n \r\n );\r\n }\r\n }\r\n \r\nfunction convertToNumber(e) {\r\n const itemNumber = Number(e.slice(7, 12));\r\n return itemNumber;\r\n}\r\n\r\nfunction toTitleCase(str) {\r\n return str.replace(/\\w\\S*/g, function (txt) {\r\n return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();\r\n });\r\n}\r\nfunction getMembType(membType) {\r\n switch (membType.toUpperCase()) {\r\n case \"P\":\r\n return \"Principal\";\r\n case \"D\":\r\n return \"Dependent\";\r\n case \"E\":\r\n return \"Extended\";\r\n default:\r\n return \"N/A\";\r\n }\r\n}\r\n\r\nfunction getCivilStatus(civilStatus) {\r\n switch (civilStatus) {\r\n case \"S\":\r\n return \"Single\";\r\n case \"M\":\r\n return \"Married\";\r\n case \"W\":\r\n return \"Widowed\";\r\n case \"A\":\r\n return \"Annuled\";\r\n case \"C\":\r\n return \"Domestic Partner/Common Law Spouse\";\r\n case \"D\":\r\n return \"Divorced\";\r\n case \"X\":\r\n return \"Separated\";\r\n case \"P\":\r\n return \"Single Parent\";\r\n default:\r\n return \"N/A\";\r\n }\r\n}\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { Table, Modal, Input, Button, Select, Alert, Popconfirm } from \"antd\";\r\nimport { useToasts } from \"react-toast-notifications\";\r\nimport CheckSession from \"./CheckSession\";\r\n\r\nimport * as U from \"../util/live_api\";\r\nimport { Decrypt, Decrypt2, Encrypt2 } from \"../util/EncryptionHandler\";\r\nvar Recaptcha = require(\"react-recaptcha\");\r\nlet recaptchaInstance;\r\n// const low = require(\"lowdb\");\r\n// const LocalStorage = require(\"lowdb/adapters/LocalStorage\");\r\n// const adapter = new LocalStorage(\"db\");\r\n// const db = low(adapter);\r\n// db.defaults({\r\n// dataSource: [\r\n// {\r\n// username: \"rbaes\",\r\n// lastname: \"BAES\",\r\n// firstname: \"ROMMEL\",\r\n// middlename: \"JUELAR\",\r\n// employeeid: \"18-0398\",\r\n// role: \"1\",\r\n// type: \"Administrator\"\r\n// }\r\n// ]\r\n// }).write();\r\n\r\nconst { Option } = Select;\r\nconst columns = [\r\n {\r\n title: \"Email\",\r\n dataIndex: \"emailaddress\",\r\n },\r\n {\r\n title: \"Last Name\",\r\n dataIndex: \"lastname\",\r\n },\r\n {\r\n title: \"First Name\",\r\n dataIndex: \"firstname\",\r\n },\r\n {\r\n title: \"Middle Name\",\r\n dataIndex: \"middlename\",\r\n },\r\n {\r\n title: \"Department\",\r\n dataIndex: \"department\",\r\n },\r\n {\r\n title: \"Company\",\r\n dataIndex: \"company\",\r\n },\r\n {\r\n title: \"Employee ID\",\r\n dataIndex: \"employee_id\",\r\n },\r\n // {\r\n // key: \"role\",\r\n // dataIndex: \"role\",\r\n // className: \"hide\",\r\n // },\r\n {\r\n title: \"Role\",\r\n dataIndex: \"role\",\r\n // dataIndex: \"type\",\r\n },\r\n];\r\n\r\n// let dataSource = JSON.parse(localStorage.getItem(\"db\")).dataSource;\r\n\r\nexport default function Users() {\r\n const [dataSource, setdataSource] = useState([]);\r\n const [dataSourceRoles, setdataSourceRoles] = useState([]); // mbalgoma\r\n const [appname, setAppName] = useState(\"\");\r\n const [modal, setModal] = useState(false);\r\n const [emailaddress, setEmailAddress] = useState(\"\");\r\n const [lastname, setLastname] = useState(\"\");\r\n const [firstname, setFirstname] = useState(\"\");\r\n const [middlename, setMiddlename] = useState(\"\");\r\n const [empid, setEmpid] = useState(\"\");\r\n const [department, setDepartment] = useState(\"\");\r\n const [intavega_tag, setIntavega_tag] = useState(false);\r\n const [recordid, setRecordid] = useState(\"\");\r\n const [status, setStatus] = useState(\"\");\r\n const [role, setRole] = useState(undefined);\r\n const [userrole, setUserRole] = useState(\"\"); // mbalgoma\r\n const [password, setPassword] = useState(\"\");\r\n const [confirmPass, setConfirmPass] = useState(\"\");\r\n const [newUser, setNewUser] = useState(false);\r\n const [emailExist, setemailExist] = useState(false);\r\n const [loading, setLoading] = useState(false);\r\n const [syscode, setSyscode] = useState(\"SC00999\"); // mbalgoma\r\n const [header, setHeader] = useState({\r\n lastname: \"\",\r\n firstname: \"\",\r\n username: \"\",\r\n });\r\n const [recaptchaVerified, setRecaptchaVerified] = useState(false);\r\n\r\n let user_info = JSON.parse(localStorage.getItem(\"user_info\"));\r\n let applicationname = JSON.parse(localStorage.getItem(\"appName\"));\r\n let Application = applicationname;\r\n\r\n const { addToast } = useToasts();\r\n const ADD_USER_API = (applicationname === \"AGORA\" ? U.ADD_USER : U.ADD_USER_ARUGA);\r\n const GET_USER_API = (applicationname === \"AGORA\" ? U.ALL_USERS : U.ALL_USERS_ARUGA);\r\n const UPDATE_USER = (applicationname === \"AGORA\" ? U.UPDATE_USER : U.UPDATE_USER_ARUGA);\r\n\r\n useEffect(() => {\r\n CheckSession();\r\n }, []);\r\n\r\n useEffect(() => {\r\n // async function getAllUsers() {\r\n\r\n // try {\r\n // let Email = Encrypt2(user_info.data.emailaddress);\r\n // let resp = await fetch(Decrypt(GET_USER_API), {\r\n // headers: {\r\n // Authorization: \"Bearer \" + user_info.access_token,\r\n // Email: Email,\r\n // },\r\n // });\r\n // let respJson = await resp.json();\r\n // if (respJson) {\r\n // let decrypted = respJson.data.map((data) => {\r\n // let newD = Decrypt2(data);\r\n // return newD;\r\n // });\r\n // let active = decrypted.filter((data) => {\r\n // return data.emailaddress.length !== 0;\r\n // });\r\n\r\n // setdataSource(active);\r\n // } else {\r\n // alert(\"Unable to get the admin users!\");\r\n // localStorage.removeItem(\"user_info\");\r\n // }\r\n // } catch (error) {\r\n // console.log(error);\r\n // }\r\n // }\r\n\r\n gatherRoles();\r\n getAllUsers();\r\n\r\n // [user_info.access_token]\r\n }, []);\r\n\r\n async function getAllUsers() {\r\n try {\r\n let Email = Encrypt2(user_info.data.emailaddress);\r\n let resp = await fetch(Decrypt(GET_USER_API), {\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n Email: Email,\r\n },\r\n });\r\n let respJson = await resp.json();\r\n if (respJson) {\r\n let decrypted = respJson.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n return newD;\r\n });\r\n let active = decrypted.filter((data) => {\r\n return data.emailaddress.length !== 0;\r\n });\r\n setdataSource(active);\r\n } else {\r\n alert(\"Unable to get the admin users!\");\r\n localStorage.removeItem(\"user_info\");\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function gatherRoles() {\r\n try {\r\n let Value = Encrypt2({\r\n syscode: syscode,\r\n });\r\n\r\n let resp = await fetch(Decrypt(U.SYSACCESS_GET_ROLES), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ Value }),\r\n });\r\n let respJson = await resp.json();\r\n\r\n if (respJson.success) {\r\n let decrypted = respJson.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n return newD;\r\n });\r\n\r\n setdataSourceRoles(decrypted)\r\n } else {\r\n setdataSourceRoles([])\r\n }\r\n\r\n } catch (error) {\r\n console.log(error);\r\n // setHasDataSuspended(false);\r\n }\r\n\r\n return\r\n }\r\n\r\n function handleRowClick(record) {\r\n return {\r\n onClick: () => {\r\n setNewUser(false);\r\n // setDetails({ ...record });\r\n setRecordid(record.recordid);\r\n setEmailAddress(record.emailaddress);\r\n setLastname(record.lastname);\r\n setFirstname(record.firstname);\r\n setMiddlename(record.middlename);\r\n // setRole(record.role); // mbalgoma\r\n setRole(record.rolesid.toUpperCase()); // mbalgoma\r\n setUserRole(record.userrolesid.toUpperCase()) // mbalgoma\r\n setStatus(record.status);\r\n setDepartment(record.department);\r\n setIntavega_tag(record.intellicareavega_tag);\r\n setHeader({ ...record });\r\n setModal(true);\r\n },\r\n };\r\n }\r\n\r\n function handleAddUserOnClick() {\r\n setNewUser(true);\r\n setEmailAddress(\"\");\r\n setLastname(\"\");\r\n setFirstname(\"\");\r\n setMiddlename(\"\");\r\n setEmpid(\"\");\r\n setPassword(\"\");\r\n setConfirmPass(\"\");\r\n setRole(\"\");\r\n setUserRole(\"\");\r\n setModal(true);\r\n }\r\n\r\n function renderDisabled() {\r\n if (\r\n !newUser &&\r\n (emailaddress == \"\" ||\r\n lastname === \"\" ||\r\n firstname === \"\" ||\r\n middlename === \"\" ||\r\n empid === \"\" ||\r\n role === \"\")\r\n )\r\n return true;\r\n if (\r\n newUser &&\r\n (lastname === \"\" ||\r\n emailaddress == \"\" ||\r\n firstname === \"\" ||\r\n middlename === \"\" ||\r\n empid === \"\" ||\r\n role === \"\" ||\r\n password.length < 8 ||\r\n password === \"\")\r\n )\r\n return true;\r\n if (loading) return true;\r\n return false;\r\n }\r\n\r\n async function handleAddUserSave() {\r\n // db.get(\"dataSource\")\r\n // .push({ ...details })\r\n // .write();\r\n // dataSource = JSON.parse(localStorage.getItem(\"db\")).dataSource;\r\n let resp = '';\r\n var regularExpression = new RegExp(\r\n \"^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#$%^&*_])(?=.{8,50})\"\r\n );\r\n\r\n if (\r\n /^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,3})+$/.test(emailaddress) ==\r\n false\r\n ) {\r\n return alert(\"Invalid Email.\");\r\n }\r\n\r\n if (emailExist) {\r\n return alert(\"Email already used.\");\r\n }\r\n\r\n if (password.length < 8) {\r\n return alert(\"Oops, Password too short\");\r\n }\r\n if (!regularExpression.test(password)) {\r\n return alert(\r\n \"Oops, Password should contain atleast one number, one upper case and one special character.\"\r\n );\r\n }\r\n if (recaptchaVerified === false) {\r\n return alert(\"Please verify that you are human!\");\r\n }\r\n try {\r\n setLoading(true);\r\n let Value = Encrypt2({\r\n emailaddress: emailaddress,\r\n password: password,\r\n lastname: lastname,\r\n firstname: firstname,\r\n middlename: middlename,\r\n // role: role,\r\n rolesid: role,\r\n userrolesid: userrole,\r\n syscode: syscode,\r\n employee_id: empid,\r\n department: department,\r\n intellicareavega_tag: intavega_tag,\r\n });\r\n\r\n let resp = await fetch(Decrypt(ADD_USER_API), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ Value }),\r\n });\r\n\r\n let respText = await resp.text();\r\n let respJson = await Decrypt2(respText.replace(/\"/g, \"\"));\r\n if (respJson.success) {\r\n addToast(\r\n role === \"1\"\r\n ? emailaddress +\r\n \" has now been added to Users List as Administrator\"\r\n : emailaddress +\r\n \" has now been added to Users List as Standard User\",\r\n {\r\n appearance: \"success\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n }\r\n );\r\n getAllUsers();\r\n setModal(false);\r\n setLoading(false);\r\n setRecaptchaVerified(false);\r\n resetRecaptcha();\r\n } else {\r\n addToast(respJson.message, {\r\n appearance: \"error\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n setModal(false);\r\n setLoading(false);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function handleEditUserSave() {\r\n // db.get(\"dataSource\")\r\n // .find({ username: details.username })\r\n // .assign({\r\n // lastname: details.lastname,\r\n // firstname: details.firstname,\r\n // middlename: details.middlename,\r\n // employeeid: details.employeeid,\r\n // role: details.role\r\n // })\r\n // .write();\r\n // dataSource = JSON.parse(localStorage.getItem(\"db\")).dataSource;\r\n if (recaptchaVerified === false) {\r\n return alert(\"Please verified that you are human!\");\r\n }\r\n setLoading(true);\r\n try {\r\n let Value = Encrypt2({\r\n emailaddress: emailaddress,\r\n lastname: lastname,\r\n firstname: firstname,\r\n middlename: middlename,\r\n status: status,\r\n employee_id: empid,\r\n edited_by: user_info.data.emailaddress,\r\n department: department,\r\n intellicareavega_tag: intavega_tag,\r\n // role: role,\r\n rolesid: role,\r\n userrolesid: userrole,\r\n syscode: syscode,\r\n recordid: recordid,\r\n });\r\n let resp = await fetch(Decrypt(UPDATE_USER), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ Value }),\r\n });\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText.replace(/\"/g, \"\"));\r\n if (respJson.success) {\r\n addToast(\"User Successfully Updated\", {\r\n appearance: \"success\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n getAllUsers();\r\n setModal(false);\r\n setLoading(false);\r\n setRecaptchaVerified(false);\r\n resetRecaptcha();\r\n } else {\r\n addToast(respJson.message, {\r\n appearance: \"error\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n setModal(false);\r\n setLoading(false);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function handleResetPassword() {\r\n if (recaptchaVerified === false) {\r\n return alert(\"Please verify that you are human!\");\r\n }\r\n try {\r\n let Value = Encrypt2({\r\n recordid: recordid,\r\n emailaddress: emailaddress,\r\n edited_by: user_info.data.emailaddress,\r\n });\r\n let resp = await fetch(Decrypt(U.RESET_PASSWORD), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ Value }),\r\n });\r\n\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText);\r\n if (respJson.success) {\r\n addToast(\"Password Has Been Reset Successfully\", {\r\n appearance: \"success\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n setModal(false);\r\n setRecaptchaVerified(false);\r\n resetRecaptcha();\r\n } else {\r\n addToast(respJson.error_message, {\r\n appearance: \"error\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n setModal(false);\r\n setLoading(false);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n function isEmailExists(emailaddress) {\r\n const EmailUsed = dataSource.find(\r\n (element) => element.emailaddress === emailaddress\r\n );\r\n\r\n if (EmailUsed) setemailExist(true);\r\n else setemailExist(false);\r\n }\r\n\r\n function verifyCallback(response) {\r\n if (response) {\r\n setRecaptchaVerified(true);\r\n }\r\n }\r\n function resetRecaptcha() {\r\n recaptchaInstance.reset();\r\n }\r\n\r\n return (\r\n
    \r\n {/* \r\n
    */}\r\n \r\n {\r\n // if (record.role === \"1\") {\r\n // record.type = \"Administrator\";\r\n // } else {\r\n // record.type = \"Standard\";\r\n // }\r\n if (record.intellicareavega_tag === true) {\r\n record.company = \"Intellicare\";\r\n } else {\r\n record.company = \"Avega\";\r\n }\r\n }}\r\n loading={dataSource.length > 0 ? false : true}\r\n >\r\n \r\n {loading ? (\r\n
    \r\n
    {\" \"}\r\n Saving...\r\n
    \r\n ) : (\r\n \"Save\"\r\n )}\r\n ,\r\n setModal(false)}\r\n key=\"close\"\r\n disabled={loading ? true : false}\r\n >\r\n Close\r\n ,\r\n ]}\r\n >\r\n {newUser && emailExist ? (\r\n \r\n ) : null}\r\n\r\n {newUser &&\r\n emailaddress.length !== 0 &&\r\n /^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,3})+$/.test(emailaddress) ===\r\n false ? (\r\n \r\n ) : null}\r\n\r\n {newUser && password.length < 8 ? (\r\n \r\n ) : null}\r\n {newUser &&\r\n password !== \"\" &&\r\n confirmPass !== \"\" &&\r\n password !== confirmPass ? (\r\n \r\n ) : null}\r\n
    \r\n
    \r\n \r\n {\r\n setEmailAddress(e.target.value);\r\n }}\r\n onBlur={(e) => isEmailExists(e.target.value)}\r\n readOnly={newUser ? false : true}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n setLastname(e.target.value)}\r\n />\r\n
    \r\n
    \r\n \r\n setFirstname(e.target.value)}\r\n />\r\n
    \r\n
    \r\n \r\n setMiddlename(e.target.value)}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n setIntavega_tag(e)}\r\n >\r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n setEmpid(e.target.value)} />\r\n
    \r\n
    \r\n \r\n {/* setDepartment(e.target.value)}\r\n /> */}\r\n setDepartment(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 {/* setRole(e)}\r\n >\r\n \r\n \r\n */}\r\n setRole(e)}\r\n >\r\n {dataSourceRoles.map((roles, index) => (\r\n \r\n {roles.name}\r\n \r\n ))}\r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n {!newUser ? (\r\n
    \r\n \r\n setStatus(e)}\r\n >\r\n \r\n \r\n \r\n
    \r\n ) : null}\r\n
    \r\n\r\n {!newUser ? (\r\n
    \r\n \r\n \r\n \r\n
    \r\n ) : null}\r\n\r\n {newUser ? (\r\n
    \r\n
    \r\n \r\n setPassword(e.target.value)}\r\n type=\"password\"\r\n />\r\n
    \r\n
    \r\n \r\n setConfirmPass(e.target.value)}\r\n type=\"password\"\r\n disabled={password === \"\" ? true : false}\r\n />\r\n
    \r\n
    \r\n ) : null}\r\n (recaptchaInstance = e)}\r\n elementID=\"adduser\"\r\n sitekey=\"6LfoHLgZAAAAAMNMXXajVsJva8MgZT0JfKPAODkk\"\r\n render=\"explicit\"\r\n verifyCallback={verifyCallback}\r\n />\r\n \r\n
    \r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nexport default function PrivacyPolicy() {\r\n return (\r\n
    \r\n \r\n

    \r\n Agora App Privacy Notice\r\n

    \r\n \r\n Updated May 18, 2020\r\n \r\n
    \r\n \r\n
    Hi Agora App User,
    \r\n

    \r\n Asalus Corporation (Intellicare) and Avega Managed Care (Avega) values\r\n your privacy and this notice are meant to help you understand how we\r\n protect the information you provide.\r\n

    \r\n

    \r\n Our people are working hard to ensure you remain in control of your\r\n data. So please take time to read this before you continue signing up.\r\n

    \r\n\r\n
    What we collect and why.
    \r\n

    \r\n We built this App to provide you with the most efficient services we\r\n can offer in the market, improve our services and personalize them to\r\n your needs to the extent possible. This App allows us to provide you\r\n information on your HMO coverage, our partner medical institutions and\r\n our Company and to interact with you directly. But to do this we need\r\n the following information from your end\r\n

    \r\n
  • \r\n 1. Your name, sex, and age\r\n
  • \r\n
  • \r\n 2. Your address\r\n
  • \r\n
  • \r\n 3. Your contact number\r\n
  • \r\n
  • \r\n 4. Intellicare Account Number\r\n
  • \r\n
  • \r\n 5. Intellicare Card Number\r\n
  • \r\n
  • \r\n 6. Copy of a Government Issued ID\r\n
  • \r\n
  • \r\n 7. Copy of your Intellicare Card ID\r\n
  • \r\n

    \r\n This set of information will be used further for other purposes.\r\n Specifically, we collect your name, sex, age, address,\r\n Intellicare/Avega Details, and Identification Cards to verify your\r\n identity and membership in the Intellicare/Avega Network and to reach\r\n out to you in cases of public service announcements. Collecting your\r\n contact details like mobile number and email allows us to send you\r\n confirmation of registration in this App, as well as updates and\r\n materials you may like. For example, if there are updates in our\r\n services, you will know them with a notification sent via this App.\r\n Please note, we will only send you marketing materials if you give\r\n your specific consent, which you will see later on.\r\n

    \r\n

    \r\n All those we collect from you are treated as private and confidential.\r\n

    \r\n\r\n
    \r\n Reviewing, Updating, Removing and deleting your information\r\n
    \r\n

    \r\n You can request to update and delete App account information by\r\n sending your request to our data protection officer, via\r\n dpo@intellicare.net.ph\r\n

    \r\n

    \r\n Note, however, that deleting your account information will\r\n automatically result in the deactivation of your access to this App.\r\n

    \r\n

    \r\n To be clear, your HMO information is treated separately and is subject\r\n to the Privacy Policy of Intellicare/Avega and the Benefit Plan of\r\n your Employer. In other words, deleting App account information does\r\n not result in the deletion of your HMO information as the latter is\r\n governed by the Benefit Plan provided by your employer. But if you\r\n want to withdraw your consent to our use and/or disclosure of your\r\n personal data for the delivery of HMO services, just bear in mind that\r\n we may no longer be able to serve you nor provide you with the\r\n products and services that you require.\r\n

    \r\n\r\n
    \r\n When Intellicare/Avega shares your information\r\n
    \r\n

    \r\n Intellicare/Avega will only share your information if:\r\n

    \r\n
  • \r\n 1. You gave your consent;\r\n
  • \r\n
  • \r\n 2. The processing of personal information is necessary and is related\r\n to the fulfillment of the HMO contract with your Employer,\r\n
  • \r\n
  • \r\n 3. The processing is necessary for compliance with a legal obligation\r\n to which Intellicare/Avega or your Employer is subject,\r\n
  • \r\n
  • \r\n 4. The processing is necessary to protect your vitally important\r\n interests, including life and health,\r\n
  • \r\n
  • \r\n 5. The processing is necessary in order to respond to national\r\n emergency, to comply with the requirements of public order and safety,\r\n or to fulfill functions of public authority which necessarily includes\r\n the processing of personal data for the fulfillment of its mandate; or\r\n
  • \r\n
  • \r\n 6. The processing is necessary for the purposes of the legitimate\r\n interests pursued by Intellicare/Avega or your Employer or by a third\r\n party or parties to whom the data are disclosed, except where such\r\n interests are overridden by fundamental rights and freedoms of the\r\n data subject which require protection under the Philippine\r\n Constitution.\r\n
  • \r\n\r\n
    To whom we may Disclose
    \r\n

    \r\n Your information may be disclosed subject to the above-stated\r\n conditions only and the requirements of the Data Privacy Act to:\r\n

    \r\n
  • \r\n 1. Your Human Resource Department as far as HMO utilization is\r\n concerned and your eligibility as a member of the Intellicare/Avega\r\n Network\r\n
  • \r\n
  • \r\n 2. Courts, Law Enforcement Authorities and Regulators but only upon\r\n their lawful orders\r\n
  • \r\n
  • \r\n 3. Lawyers or any person whenever there is a need to protect the\r\n rights of Intellicare/Avega and your Employer; provided that the\r\n information is absolutely necessary.\r\n
  • \r\n\r\n
    \r\n We build security into our services to protect your information\r\n
    \r\n

    \r\n We strive to build the best security precautions to ensure that the\r\n information you provide is protected against unauthorized or\r\n unintended access. We can assure you that internationally acceptable\r\n standards are in place so you will feel comfortable trusting us with\r\n your data.\r\n

    \r\n\r\n
    Retention
    \r\n

    \r\n Your information is retained for the period of time for as long as the\r\n purpose for which the personal data was collected continues.\r\n

    \r\n

    \r\n We will destroy the personal data thereafter, unless it is necessary\r\n to retain the personal data longer for our satisfaction and compliance\r\n of legal, regulatory or accounting requirements, or to protect our\r\n interest.\r\n

    \r\n\r\n
    Complaints
    \r\n

    \r\n If you have complaints, our lines are open. Kindly contact our Data\r\n Protection Officer via email via\r\n dpo@intellicare.net.ph\r\n

    \r\n
    \r\n \r\n );\r\n}\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { Table, Modal, Input, Button, Select, Tag } from \"antd\";\r\nimport { useToasts } from \"react-toast-notifications\";\r\nimport * as API from \"../util/live_api\";\r\nimport CheckSession from \"./CheckSession\";\r\nimport {\r\n Decrypt,\r\n Decrypt2,\r\n EncryptHeader,\r\n Encrypt2,\r\n} from \"../util/EncryptionHandler\";\r\n\r\nconst { Option } = Select;\r\n\r\nconst plan_columns = [\r\n {\r\n title: \"Corporate Account\",\r\n dataIndex: \"account\",\r\n key: \"account\",\r\n },\r\n {\r\n title: \"Company\",\r\n dataIndex: \"company\",\r\n },\r\n {\r\n dataIndex: \"avega\",\r\n className: \"hide\",\r\n },\r\n {\r\n dataIndex: \"recordid\",\r\n className: \"hide\",\r\n },\r\n];\r\n\r\nconst label_columns = [\r\n {\r\n title: \"Bank Code\",\r\n dataIndex: \"bankcode\",\r\n key: \"bankcode\",\r\n },\r\n {\r\n title: \"Bank Name\",\r\n dataIndex: \"bankname\",\r\n key: \"bankname\",\r\n },\r\n {\r\n title: \"Account\",\r\n dataIndex: \"corpacct\",\r\n key: \"corpacct\",\r\n className: \"hide\",\r\n },\r\n {\r\n title: \"Contract\",\r\n dataIndex: \"contract\",\r\n key: \"contract\",\r\n className: \"hide\",\r\n },\r\n {\r\n title: \"Swift Code\",\r\n dataIndex: \"swiftcode\",\r\n key: \"swiftcode\",\r\n },\r\n {\r\n title: \"Status\",\r\n dataIndex: \"status\",\r\n key: \"status\",\r\n },\r\n];\r\n\r\nexport default function BankInclusion() {\r\n //For Plan table\r\n const [searchValue, setsearchValue] = useState(\"\");\r\n const [selectedAccount, setselectedAccount] = useState(\"\");\r\n const [selectedContract, setselectedContract] = useState(\"\");\r\n const [displayedAccount, setdisplayedAccount] = useState(\"\");\r\n\r\n //For Suspended table\r\n const [lstFeatures, setlstFeatures] = useState([]);\r\n const [lstPlan, setlstPlan] = useState([]);\r\n const [ribanksID, setribanksID] = useState(\"\");\r\n const [company, setCompany] = useState(\"\");\r\n\r\n const [hasDataFeatures, setHasDataFeature] = useState(false);\r\n const [hasDataPlan, setHasDataPlan] = useState(false);\r\n const [loading, setLoading] = useState(false);\r\n const [username, setUsername] = useState(\"\");\r\n\r\n const [addBank, setAddBank] = useState(false);\r\n const [bankcode, setBankCode] = useState(\"\");\r\n const [bankname, setBankName] = useState(\"\");\r\n const [status, setStatus] = useState(\"\");\r\n const [avega_bit, setAvegaBit] = useState(true);\r\n const [lstBanks, setlstBanks] = useState([]);\r\n const [SubMenusDropDown, setSubMenusDropDown] = useState(\"\");\r\n\r\n //Modals\r\n const [modal_features, setModalFeatures] = useState(false);\r\n const [modal_plan, setModalPlan] = useState(false);\r\n const [modal_confirm, setModalConfirm] = useState(false);\r\n const [modal_add_bank, setModalAddBank] = useState(false);\r\n\r\n let user_info = JSON.parse(localStorage.getItem(\"user_info\"));\r\n\r\n const { addToast } = useToasts();\r\n\r\n useEffect(() => {\r\n CheckSession();\r\n getFeatureData();\r\n }, []);\r\n\r\n async function getFeatureData() {\r\n setHasDataFeature(true);\r\n setUsername(user_info.data.emailaddress);\r\n return;\r\n }\r\n\r\n function onLabelRowClick(record) {\r\n return {\r\n onClick: () => {\r\n if (record.status === \"I\") {\r\n setStatus(\"Yes\");\r\n } else {\r\n setStatus(\"No\");\r\n }\r\n setModalFeatures(true);\r\n setribanksID(record.Corp_RIBanksID);\r\n setBankCode(record.bankcode);\r\n setBankName(record.bankname);\r\n },\r\n };\r\n }\r\n\r\n async function onClickUpdateInclusion() {\r\n setModalConfirm(false);\r\n\r\n let exclusion = \"\";\r\n\r\n if (status == 1) {\r\n exclusion = \"X\";\r\n } else {\r\n exclusion = \"I\";\r\n }\r\n\r\n let Value = Encrypt2({\r\n Corp_RIBanksID: ribanksID,\r\n editedby: username,\r\n excl: exclusion,\r\n });\r\n\r\n let resp = await fetch(Decrypt(API.REACT_APP_UPDATE_BANK_INCLUSION), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ Value }),\r\n });\r\n\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText);\r\n\r\n if (respJson.success) {\r\n addToast(\"Bank inclusion updated\", {\r\n appearance: \"success\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n GetConfigs(selectedAccount, selectedContract);\r\n setModalFeatures(false);\r\n setLoading(false);\r\n } else {\r\n addToast(respJson.message, {\r\n appearance: \"warning\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n setModalFeatures(false);\r\n setLoading(false);\r\n }\r\n }\r\n\r\n function onPlanRowClick(record) {\r\n return {\r\n onClick: () => {\r\n if (record.avega) {\r\n setAvegaBit(true);\r\n } else {\r\n setAvegaBit(false);\r\n }\r\n setselectedAccount(record.account);\r\n setCompany(record.company);\r\n },\r\n };\r\n }\r\n\r\n function onClickSearchCompany() {\r\n setsearchValue(\"\");\r\n setselectedAccount(\"\");\r\n setHasDataPlan(true);\r\n setlstPlan([]);\r\n setModalPlan(true);\r\n }\r\n\r\n function onClickAddBank() {\r\n GetBankList();\r\n setLoading(false);\r\n setModalAddBank(true);\r\n setSubMenusDropDown(\"\");\r\n }\r\n\r\n async function GetBankList() {\r\n try {\r\n let resp = await fetch(Decrypt(API.REACT_APP_GET_BANKLIST), {\r\n method: \"GET\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n },\r\n });\r\n\r\n let respJson = await resp.json();\r\n if (respJson.data) {\r\n let decrypted = respJson.data.map((data) => {\r\n let newdata = Decrypt2(data);\r\n\r\n let final_data = {\r\n recordid: newdata.recordid,\r\n bankcode: avega_bit ? newdata.bankcode2 : newdata.bankcode,\r\n bankname: newdata.bankname,\r\n swiftcode: newdata.swiftcode,\r\n status: \"I\",\r\n };\r\n\r\n return final_data;\r\n });\r\n\r\n setlstBanks(decrypted);\r\n setHasDataFeature(true);\r\n }\r\n } catch (error) {\r\n // error\r\n }\r\n }\r\n\r\n async function SaveBank(bank_exist) {\r\n if (!bank_exist) {\r\n let filteredData = lstBanks;\r\n let fdata = filteredData.filter((data) => {\r\n return data.bankname === SubMenusDropDown;\r\n });\r\n\r\n let Value = Encrypt2({\r\n corpacct: selectedAccount,\r\n contract: selectedContract,\r\n bankcodeandswiftcodeRecID: fdata[0].recordid,\r\n excl: fdata[0].status,\r\n });\r\n\r\n let resp = await fetch(Decrypt(API.REACT_APP_ADD_BANKS), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ Value }),\r\n });\r\n\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText);\r\n\r\n if (respJson.is_success) {\r\n addToast(\"Bank successfully added.\", {\r\n appearance: \"success\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n\r\n GetConfigs(selectedAccount, selectedContract);\r\n setdisplayedAccount(selectedAccount + \" / \" + company);\r\n setModalAddBank(false);\r\n setLoading(false);\r\n } else {\r\n addToast(respJson.message, {\r\n appearance: \"warning\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n setLoading(false);\r\n }\r\n }\r\n }\r\n\r\n async function onClickSaveBank(SubMenusDropDown) {\r\n if (SubMenusDropDown == \"\") {\r\n alert(\"No bank selected.\");\r\n return;\r\n }\r\n\r\n setLoading(true);\r\n let bank_exist = false;\r\n\r\n lstFeatures.forEach((item) => {\r\n if (item.bankname.trim() === SubMenusDropDown.trim()) {\r\n setLoading(false);\r\n bank_exist = true;\r\n return alert(\"Bank already added on this plan.\");\r\n }\r\n });\r\n\r\n SaveBank(bank_exist);\r\n }\r\n\r\n async function GetConfigs(account, contract) {\r\n setAddBank(true);\r\n setlstFeatures([]);\r\n setselectedContract(contract);\r\n\r\n if (account === \"\" || account === null) {\r\n alert(\"Error no account gathered.\");\r\n return;\r\n }\r\n\r\n try {\r\n let hacct = EncryptHeader(account);\r\n let hcont = EncryptHeader(contract);\r\n\r\n let resp = await fetch(Decrypt(API.REACT_APP_GET_CURRENT_BANKS), {\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n acct: hacct,\r\n contract: hcont,\r\n },\r\n });\r\n\r\n let respJson = await resp.json();\r\n if (respJson.data) {\r\n let decrypted = respJson.data.map((data) => {\r\n let newdata = Decrypt2(data);\r\n\r\n let final_data = {\r\n recordid: newdata.recordid,\r\n Corp_RIBanksID: newdata.Corp_RIBanksID,\r\n bankcode: avega_bit ? newdata.bankcode2 : newdata.bankcode,\r\n bankname: newdata.bankname,\r\n corpacct: newdata.corpacct,\r\n contract: newdata.contract,\r\n swiftcode: newdata.swiftcode,\r\n status: newdata.excl,\r\n };\r\n\r\n return final_data;\r\n });\r\n\r\n setlstFeatures(decrypted);\r\n setHasDataFeature(true);\r\n }\r\n } catch (error) {\r\n setHasDataFeature(false);\r\n }\r\n }\r\n\r\n async function GetCorporatePlan() {\r\n let acct = EncryptHeader(selectedAccount);\r\n let resp = await fetch(Decrypt(API.REACT_APP_GET_CORPORATE_PLAN), {\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n acct: acct,\r\n },\r\n });\r\n\r\n let respJson = await resp.json();\r\n if (respJson.data) {\r\n let decrypted = respJson.data.map((data) => {\r\n let newdata = Decrypt2(data);\r\n\r\n let final_data = {\r\n recordid: newdata.recordid,\r\n acct: newdata.acct,\r\n contract: newdata.contract,\r\n company: newdata.company,\r\n avega: newdata.avega,\r\n };\r\n\r\n return final_data;\r\n });\r\n\r\n let contract = decrypted[0].contract;\r\n GetConfigs(selectedAccount, contract);\r\n }\r\n }\r\n\r\n async function onClickAccount() {\r\n if (selectedAccount.length == 0) {\r\n alert(\"No selected company.\");\r\n return;\r\n }\r\n\r\n GetCorporatePlan();\r\n setdisplayedAccount(selectedAccount + \" / \" + company);\r\n setLoading(false);\r\n setModalPlan(false);\r\n }\r\n\r\n async function onSearchCompany() {\r\n if (searchValue.length == 0) {\r\n alert(\"Search field is empty.\");\r\n return;\r\n }\r\n\r\n setlstPlan([]);\r\n setHasDataPlan(false);\r\n\r\n try {\r\n let header_param = EncryptHeader(searchValue);\r\n let resp = await fetch(Decrypt(API.GET_ACCOUNT_BY_NAME), {\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n company: header_param,\r\n },\r\n });\r\n let respJson = await resp.json();\r\n if (respJson === \"Invalid Access Token\") {\r\n setHasDataPlan(false);\r\n return;\r\n } else {\r\n if (Array.isArray(respJson.data)) {\r\n if (respJson.data.length > 0) {\r\n let decrypted = respJson.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n return newD;\r\n });\r\n\r\n setHasDataPlan(true);\r\n setlstPlan(decrypted);\r\n } else {\r\n setHasDataPlan(false);\r\n setLoading(false);\r\n }\r\n } else {\r\n let header_param = EncryptHeader(searchValue);\r\n let resp = await fetch(Decrypt(API.GET_ACCOUNT_BY_CORPACCT), {\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n corpacct: header_param,\r\n },\r\n });\r\n\r\n let respJson = await resp.json();\r\n if (respJson === \"Invalid Access Token\") {\r\n setHasDataPlan(false);\r\n return;\r\n } else {\r\n let result = Decrypt2(respJson);\r\n if (result.is_success) {\r\n let final_plan = [];\r\n\r\n final_plan.push(result.data);\r\n setHasDataPlan(true);\r\n setlstPlan(final_plan);\r\n } else {\r\n setHasDataPlan(true);\r\n alert(result.message);\r\n }\r\n }\r\n }\r\n }\r\n } catch (error) {\r\n // error\r\n setHasDataPlan(false);\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n onClickSearchCompany()}\r\n >\r\n Search Account\r\n \r\n

    \r\n

    \r\n \r\n

    \r\n

    \r\n {addBank ? (\r\n \r\n ) : null}\r\n
    \r\n \r\n setModalConfirm(true)}\r\n >\r\n {loading ? (\r\n
    \r\n
    {\" \"}\r\n Saving...\r\n
    \r\n ) : (\r\n \"Update\"\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 setStatus(e)}\r\n >\r\n \r\n \r\n \r\n
    \r\n \r\n onClickAccount()}>\r\n {loading ? (\r\n
    \r\n
    {\" \"}\r\n Selecting...\r\n
    \r\n ) : (\r\n \"Select\"\r\n )}\r\n ,\r\n ,\r\n ]}\r\n >\r\n
    \r\n \r\n setsearchValue(e.target.value)}\r\n />\r\n onSearchCompany()}\r\n >\r\n {!hasDataPlan ? (\r\n
    \r\n
    {\" \"}\r\n Searching...\r\n
    \r\n ) : (\r\n \"Search\"\r\n )}\r\n \r\n

    \r\n \r\n \r\n \r\n
    \r\n \r\n onClickSaveBank(SubMenusDropDown)}\r\n >\r\n {loading ? (\r\n
    \r\n {\" \"}\r\n Saving...\r\n
    \r\n ) : (\r\n \"Save\"\r\n )}\r\n ,\r\n ,\r\n ]}\r\n >\r\n \r\n setSubMenusDropDown(e)}\r\n >\r\n {lstBanks.map((submenu, index) => (\r\n \r\n ))}\r\n \r\n \r\n onClickUpdateInclusion()}\r\n >\r\n {loading ? (\r\n
    \r\n
    {\" \"}\r\n Saving...\r\n
    \r\n ) : (\r\n \"YES\"\r\n )}\r\n ,\r\n ,\r\n ]}\r\n >\r\n

    Proceed with the changes?

    \r\n \r\n
    \r\n
    \r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nexport default function PrivacyPolicy() {\r\n return (\r\n
    \r\n \r\n

    \r\n Contact us\r\n

    \r\n
    \r\n \r\n
    Email
    \r\n \r\n
    \r\n
    \r\n );\r\n}\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { Table, Modal, Input, Button, Select, Alert } from \"antd\";\r\nimport { useToasts } from \"react-toast-notifications\";\r\nimport moment from \"moment\";\r\nimport CheckSession from \"./CheckSession\";\r\n\r\nimport * as API from \"../util/live_api\";\r\nimport { Decrypt, Decrypt2, Encrypt2 } from \"../util/EncryptionHandler\";\r\n\r\nconst { Option } = Select;\r\nconst { TextArea } = Input;\r\n\r\nconst columns = [\r\n {\r\n title: \"Remarks\",\r\n dataIndex: \"remarks\",\r\n key: \"remarks\",\r\n },\r\n {\r\n title: \"Special Instructions\",\r\n dataIndex: \"special_instructions\",\r\n },\r\n {\r\n title: \"Status\",\r\n dataIndex: \"status\",\r\n },\r\n {\r\n title: \"Posted Date\",\r\n dataIndex: \"posted_date\",\r\n },\r\n {\r\n title: \"Posted by\",\r\n dataIndex: \"posted_by\",\r\n },\r\n {\r\n title: \"Edited Date\",\r\n dataIndex: \"edited_date\",\r\n },\r\n {\r\n title: \"Edited by\",\r\n dataIndex: \"edited_by\",\r\n },\r\n {\r\n dataIndex: \"recordid\",\r\n className: \"hide\",\r\n },\r\n];\r\n\r\nexport default function DisapprovedRemarks() {\r\n const [lstRemarks, setLstRemarks] = useState([]);\r\n const [recordid, setRecordid] = useState(\"\");\r\n const [remarks, setRemarks] = useState(\"\");\r\n const [special_instructions, setSpecial_Instructions] = useState(\"\");\r\n const [status, setStatus] = useState(\"\");\r\n const [postedDate, setPostedDate] = useState(undefined);\r\n const [postedBy, setPostedBy] = useState(\"\");\r\n const [editedDate, setEditedDate] = useState(undefined);\r\n const [editedBy, setEditedBy] = useState(\"\");\r\n const [reappNotif, setReappNotif] = useState(undefined);\r\n const [modal, setModal] = useState(false);\r\n const [newUser, setNewUser] = useState(false);\r\n const [hasData, setHasData] = useState(false);\r\n const [loading, setLoading] = useState(false);\r\n\r\n let user_info = JSON.parse(localStorage.getItem(\"user_info\"));\r\n const { addToast } = useToasts();\r\n\r\n useEffect(() => {\r\n CheckSession();\r\n GetDisapproveRemarks();\r\n }, []);\r\n async function GetDisapproveRemarks() {\r\n try {\r\n let resp = await fetch(Decrypt(API.DISAPPROVED_REMARKS), {\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n },\r\n });\r\n let respJson = await resp.json();\r\n if (respJson === \"Invalid Access Token\") {\r\n setHasData(false);\r\n return;\r\n } else {\r\n let decrypted = respJson.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n return newD;\r\n });\r\n\r\n // let activeOnly = decrypted.filter((data) => {\r\n // return data.status === \"A\";\r\n // });\r\n setLstRemarks(decrypted);\r\n setHasData(true);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n setHasData(false);\r\n }\r\n }\r\n function handleRowClick(record) {\r\n return {\r\n onClick: () => {\r\n setNewUser(false);\r\n setModal(true);\r\n setRecordid(record.recordid);\r\n setRemarks(record.remarks);\r\n setSpecial_Instructions(record.special_instructions);\r\n setStatus(record.status);\r\n setReappNotif(record.reapp_notif);\r\n setPostedDate(record.posted_date);\r\n setPostedBy(record.posted_by);\r\n setEditedDate(record.edited_date);\r\n setEditedBy(record.edited_by);\r\n },\r\n };\r\n }\r\n function handleAddRemarksOnClick() {\r\n setNewUser(true);\r\n setModal(true);\r\n setRemarks(\"\");\r\n setSpecial_Instructions(\"\");\r\n setStatus(\"\");\r\n setReappNotif(undefined);\r\n setPostedDate(moment(new Date()).toDate());\r\n setPostedBy(user_info.data.emailaddress);\r\n setEditedDate(undefined);\r\n setEditedBy(\"\");\r\n }\r\n async function handleAddRemarks() {\r\n setLoading(true);\r\n try {\r\n let Value = Encrypt2({\r\n remarks: remarks,\r\n special_instructions: special_instructions,\r\n posted_by: user_info.data.emailaddress,\r\n reappnotif: Number(reappNotif),\r\n });\r\n let resp = await fetch(Decrypt(API.ADD_REMARKS), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ Value }),\r\n });\r\n\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText);\r\n if (respJson.success) {\r\n addToast(\"New Remark has been added\", {\r\n appearance: \"success\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n GetDisapproveRemarks();\r\n setModal(false);\r\n setLoading(false);\r\n } else {\r\n addToast(respJson.message, {\r\n appearance: \"warning\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n setModal(false);\r\n setLoading(false);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function handleEditRemarks() {\r\n setLoading(true);\r\n try {\r\n let Value = Encrypt2({\r\n recordid: recordid,\r\n remarks: remarks,\r\n special_instructions: special_instructions,\r\n status: status,\r\n reappnotif: Number(reappNotif),\r\n });\r\n let resp = await fetch(Decrypt(API.UPDATE_REMARKS), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ Value }),\r\n });\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText);\r\n if (respJson.success) {\r\n addToast(\"Remarks Successfully Updated\", {\r\n appearance: \"success\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n GetDisapproveRemarks();\r\n setModal(false);\r\n setLoading(false);\r\n } else {\r\n addToast(respJson.message, {\r\n appearance: \"warning\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n setModal(false);\r\n setLoading(false);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n {/* Comment this portion if live api */}\r\n {/* \r\n
    */}\r\n \r\n \r\n (newUser ? handleAddRemarks() : handleEditRemarks())}\r\n >\r\n {loading ? (\r\n
    \r\n
    {\" \"}\r\n Saving...\r\n
    \r\n ) : (\r\n \"Save\"\r\n )}\r\n ,\r\n ,\r\n ]}\r\n >\r\n
    \r\n \r\n setRemarks(e.target.value)} />\r\n \r\n setSpecial_Instructions(e.target.value)}\r\n style={{ marginBottom: 5 }}\r\n />\r\n
    \r\n \r\n setStatus(e)}\r\n >\r\n \r\n \r\n \r\n \r\n setReappNotif(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
    \r\n \r\n
    \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { Spin, Modal, Result, Button } from \"antd\";\r\n\r\nexport default class Spinner extends React.Component {\r\n render() {\r\n const { modalLoading, success, close, successMsg, savingMsg } = this.props;\r\n return (\r\n
    \r\n \r\n {success !== null ? null : (\r\n
    \r\n \r\n \r\n {savingMsg}\r\n \r\n
    \r\n )}\r\n {success !== null && (\r\n close()}>\r\n Okay\r\n ,\r\n ]}\r\n />\r\n )}\r\n \r\n
    \r\n );\r\n }\r\n}\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { Table, Modal, Input, Button, Select, Tag, Popconfirm } from \"antd\";\r\nimport moment from \"moment\";\r\nimport * as FileSaver from \"file-saver\";\r\nimport * as XLSX from \"xlsx\";\r\nimport jsPDF from \"jspdf\";\r\nimport \"jspdf-autotable\";\r\nimport CheckSession from \"./CheckSession\";\r\n\r\nimport LinearIndeterminate from \"./LinearInderterminate\";\r\nimport Spinner from \"./Newsletter/Spinner\";\r\nimport * as API from \"../util/live_api\";\r\nimport { Decrypt, Decrypt2, Encrypt2 } from \"../util/EncryptionHandler\";\r\n\r\nconst { Option } = Select;\r\nconst { Search, TextArea } = Input;\r\n\r\nexport default function FeaturesControl() {\r\n let user_info = JSON.parse(localStorage.getItem(\"user_info\"));\r\n let xlsreport = [];\r\n const file_Type =\r\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8\";\r\n const fileExtension = \".xlsx\";\r\n const [features, setFeatures] = useState([]);\r\n const [temp, setTemp] = useState([]);\r\n const [details, setDetails] = useState({\r\n featurerecid: \"\",\r\n feature: \"\",\r\n cbmsg: \"\",\r\n status: \"\",\r\n url: \"\",\r\n postedby: \"\",\r\n posted: undefined,\r\n editedby: \"\",\r\n edited: undefined,\r\n });\r\n const [modal, setModal] = useState(false);\r\n const [newFeature, setNewFeature] = useState(false);\r\n const [loading, setLoading] = useState(false);\r\n const [modalLoading, setModalLoading] = React.useState(false);\r\n const [success, setSuccess] = React.useState(null);\r\n const [successMsg, setSuccessMsg] = React.useState(\"\");\r\n const [savingMsg, setSavingMsg] = React.useState(\"\");\r\n const [filetype, setFiletype] = useState(\"\");\r\n\r\n const columns = [\r\n {\r\n title: \"Feature\",\r\n dataIndex: \"feature\",\r\n width: \"170px\",\r\n },\r\n {\r\n title: \"Message\",\r\n dataIndex: \"cbmsg\",\r\n key: \"cbmsg\",\r\n width: \"350px\",\r\n },\r\n {\r\n title: \"URL/Link\",\r\n dataIndex: \"url\",\r\n key: \"url\",\r\n width: \"350px\",\r\n },\r\n {\r\n title: \"Status\",\r\n dataIndex: \"status\",\r\n render: (status) => {\r\n let color = \"geekblue\";\r\n if (status === \"D\") {\r\n color = \"volcano\";\r\n }\r\n return (\r\n \r\n {status.toUpperCase()}\r\n \r\n );\r\n },\r\n },\r\n {\r\n title: \"Posted Date\",\r\n dataIndex: \"posted\",\r\n width: \"160px\",\r\n },\r\n {\r\n title: \"Posted by\",\r\n dataIndex: \"postedby\",\r\n },\r\n {\r\n title: \"Edited Date\",\r\n dataIndex: \"edited\",\r\n width: \"160px\",\r\n },\r\n {\r\n title: \"Edited by\",\r\n dataIndex: \"editedby\",\r\n },\r\n {\r\n dataIndex: \"featurerecid\",\r\n className: \"hide\",\r\n },\r\n {\r\n title: \"Action\",\r\n key: \"action\",\r\n render: (record) =>\r\n features.length >= 1 ? (\r\n <>\r\n handleRowClick(record)}\r\n >\r\n Edit\r\n \r\n handleDeleteFeature(record.featurerecid)}\r\n >\r\n \r\n \r\n \r\n ) : null,\r\n },\r\n ];\r\n\r\n useEffect(() => {\r\n CheckSession();\r\n }, []);\r\n\r\n useEffect(() => {\r\n async function GetAllFeatures() {\r\n try {\r\n setLoading(true);\r\n let resp = await fetch(Decrypt(API.GET_ALL_FEATURES),{\r\n method: \"Get\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n },\r\n });\r\n let respJson = await resp.json();\r\n if (respJson === \"Invalid Access Token\") {\r\n setLoading(false);\r\n } else {\r\n let decrypted = Decrypt2(respJson);\r\n let decryptedJson = decrypted.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n return newD;\r\n });\r\n setFeatures(decryptedJson);\r\n setTemp(decryptedJson);\r\n setLoading(false);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n setLoading(false);\r\n }\r\n }\r\n GetAllFeatures();\r\n }, [user_info.access_token]);\r\n async function GetAllFeatures() {\r\n try {\r\n setLoading(true);\r\n let resp = await fetch(Decrypt(API.GET_ALL_FEATURES),{\r\n method: \"Get\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n },\r\n });\r\n let respJson = await resp.json();\r\n if (respJson === \"Invalid Access Token\") {\r\n setLoading(false);\r\n } else {\r\n let decrypted = Decrypt2(respJson);\r\n let decryptedJson = decrypted.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n return newD;\r\n });\r\n setFeatures(decryptedJson);\r\n setTemp(decryptedJson);\r\n setLoading(false);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n setLoading(false);\r\n }\r\n }\r\n function handleRowClick(record) {\r\n setNewFeature(false);\r\n setModal(true);\r\n setDetails({\r\n featurerecid: record.featurerecid,\r\n feature: record.feature,\r\n cbmsg: record.cbmsg,\r\n url: record.url,\r\n status: record.status,\r\n postedby: record.postedby,\r\n posted: record.posted,\r\n editedby: record.editedby,\r\n edited: record.edited,\r\n });\r\n }\r\n function handleAddFeatureOnClick() {\r\n setNewFeature(true);\r\n setModal(true);\r\n setDetails({\r\n featurerecid: \"\",\r\n feature: \"\",\r\n cbmsg: \"\",\r\n url: \"\",\r\n status: \"\",\r\n postedby: \"\",\r\n posted: moment(new Date()).format(\"LL\"),\r\n editedby: \"\",\r\n edited: undefined,\r\n });\r\n }\r\n async function handleAddFeature() {\r\n try {\r\n setModalLoading(true);\r\n setSuccess(null);\r\n setSavingMsg(\"Saving new feature...\");\r\n let value = Encrypt2({\r\n feature: details.feature,\r\n status: details.status,\r\n cbmsg: details.cbmsg,\r\n url: details.url,\r\n postedby: user_info.data.emailaddress,\r\n });\r\n let resp = await fetch(Decrypt(API.ADD_FEATURES), {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ value }),\r\n });\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText);\r\n if (respJson.is_success) {\r\n setSuccess(true);\r\n setSuccessMsg(\"New feature has been added.\");\r\n } else {\r\n setSuccess(false);\r\n setSuccessMsg(respJson.error_message);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function handleEditFeature() {\r\n try {\r\n setModalLoading(true);\r\n setSuccess(null);\r\n setSavingMsg(\"Saving changes...\");\r\n let value = Encrypt2({\r\n featurerecid: details.featurerecid,\r\n feature: details.feature,\r\n status: details.status,\r\n cbmsg: details.cbmsg,\r\n url: details.url,\r\n editedby: user_info.data.emailaddress,\r\n });\r\n\r\n let resp = await fetch(Decrypt(API.EDIT_FEATURES), {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ value }),\r\n });\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText);\r\n if (respJson.is_success) {\r\n setSuccess(true);\r\n setSuccessMsg(\"Feature Successfully Updated\");\r\n } else {\r\n setSuccess(false);\r\n setSuccessMsg(respJson.error_message);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function handleDeleteFeature(id) {\r\n try {\r\n setModalLoading(true);\r\n setSuccess(null);\r\n setSavingMsg(\"Saving changes...\");\r\n let value = Encrypt2({\r\n featurerecid: id,\r\n });\r\n let resp = await fetch(Decrypt(API.DELETE_FEATURES), {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ value }),\r\n });\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText);\r\n if (respJson.is_success) {\r\n setSuccess(true);\r\n setSuccessMsg(\"Feature Successfully Deleted\");\r\n } else {\r\n setSuccess(false);\r\n setSuccessMsg(respJson.error_message);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n function closeSpinner() {\r\n setModalLoading(false);\r\n if (success === true) {\r\n setModal(false);\r\n setLoading(false);\r\n GetAllFeatures();\r\n }\r\n }\r\n function search(str) {\r\n let searchedData = temp.filter((item) => {\r\n const itemData = `${item.feature.toUpperCase()}`;\r\n const textData = str.toUpperCase();\r\n return itemData.indexOf(textData) > -1;\r\n });\r\n setFeatures(searchedData);\r\n }\r\n function sort(by) {\r\n setFeatures([]);\r\n let sorted = temp.sort((a, b) => {\r\n if (by === \"P\") {\r\n return new Date(b.posted) - new Date(a.posted);\r\n } else if (by === \"A\") {\r\n return a.feature > b.feature ? 1 : -1;\r\n } else if (by === \"D\") {\r\n return a.feature < b.feature ? 1 : -1;\r\n }\r\n return 0;\r\n });\r\n setFeatures((prevFeatures) => [...prevFeatures, ...sorted]);\r\n }\r\n function exportToXLSX(xlsdata) {\r\n xlsdata.forEach((report) => {\r\n xlsreport = xlsreport.concat({\r\n featurerecid: report.featurerecid,\r\n feature: report.feature,\r\n cbmsg: report.cbmsg,\r\n url: report.url,\r\n status: report.status,\r\n postedby: report.postedby,\r\n posted: report.posted,\r\n editedby: report.editedby,\r\n edited: report.edited,\r\n });\r\n });\r\n const ws = XLSX.utils.json_to_sheet(xlsreport);\r\n const wb = { Sheets: { all_features: ws }, SheetNames: [\"all_features\"] };\r\n const excelBuffer = XLSX.write(wb, { bookType: \"xlsx\", type: \"array\" });\r\n const data = new Blob([excelBuffer], { type: file_Type });\r\n FileSaver.saveAs(data, \"features\" + fileExtension);\r\n }\r\n function exportToPDF(xlsdata) {\r\n const unit = \"pt\";\r\n const size = \"A4\";\r\n const orientation = \"landscape\";\r\n const doc = new jsPDF(orientation, unit, size);\r\n doc.setFontSize(15);\r\n\r\n const title = \"Agora App Features\";\r\n const headers = [\r\n [\r\n \"ID\",\r\n \"Feature\",\r\n \"Message\",\r\n \"URL\",\r\n \"Status\",\r\n \"Posted by\",\r\n \"Posted date\",\r\n \"Edited by\",\r\n \"Edited date\",\r\n ],\r\n ];\r\n const data = xlsdata.map((element) => [\r\n element.featurerecid,\r\n element.feature,\r\n element.cbmsg,\r\n element.url,\r\n element.status,\r\n element.postedby,\r\n element.posted,\r\n element.editedby,\r\n element.edited,\r\n ]);\r\n let content = {\r\n styles: {\r\n cellWidth: \"auto\",\r\n font: \"times\",\r\n fontSize: 8,\r\n },\r\n margin: { left: 10, right: 10 },\r\n startY: 50,\r\n head: headers,\r\n body: data,\r\n };\r\n\r\n doc.text(title, 40, 40);\r\n doc.autoTable(content);\r\n doc.save(\"features\" + \".pdf\");\r\n }\r\n\r\n return (\r\n
    \r\n {loading ? : null}\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n sort(e)}\r\n >\r\n \r\n \r\n \r\n \r\n setFiletype(e)}\r\n >\r\n \r\n \r\n \r\n \r\n filetype === \"\"\r\n ? alert(\"Please select file type\")\r\n : filetype === \"Excel\"\r\n ? exportToXLSX(features)\r\n : exportToPDF(features)\r\n }\r\n >\r\n Export\r\n \r\n
    \r\n\r\n search(e.target.value)}\r\n allowClear\r\n />\r\n
    \r\n 0 ? features : null}\r\n columns={columns}\r\n rowKey=\"featurerecid\"\r\n style={{ paddingTop: 10, overflow: \"scroll\" }}\r\n loading={loading}\r\n size=\"middle\"\r\n />\r\n
    \r\n \r\n newFeature ? handleAddFeature() : handleEditFeature()\r\n }\r\n >\r\n Save\r\n ,\r\n ,\r\n ]}\r\n >\r\n
    \r\n \r\n {\r\n const val = e.target.value;\r\n setDetails((prevState) => {\r\n return { ...prevState, feature: val };\r\n });\r\n }}\r\n style={{ marginBottom: 5 }}\r\n />\r\n \r\n {\r\n const val = e.target.value;\r\n setDetails((prevState) => {\r\n return { ...prevState, cbmsg: val };\r\n });\r\n }}\r\n style={{ marginBottom: 5 }}\r\n />\r\n
    \r\n \r\n {\r\n const val = e.target.value;\r\n setDetails((prevState) => {\r\n return { ...prevState, url: val };\r\n });\r\n }}\r\n style={{ marginBottom: 5 }}\r\n />\r\n\r\n \r\n \r\n setDetails((prevState) => {\r\n return { ...prevState, status: 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 {newFeature ? null : (\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","import React, { useState, useEffect } from \"react\";\r\nimport { Input, Button, Layout, Modal, Select, Alert } from \"antd\";\r\nimport { UserOutlined, LockOutlined, LoginOutlined } from \"@ant-design/icons\";\r\nimport { useHistory, Link } from \"react-router-dom\";\r\nimport { useToasts } from \"react-toast-notifications\";\r\nimport { isMobile } from \"react-device-detect\";\r\nimport \"./Login.css\";\r\nimport * as API from \"../../util/live_api\";\r\nimport {\r\n Decrypt,\r\n Encrypt2,\r\n Decrypt2,\r\n EncryptHeader,\r\n} from \"../../util/EncryptionHandler\";\r\nimport packageJson from \"../../../package.json\";\r\nvar Recaptcha = require(\"react-recaptcha\");\r\nlet recaptchaInstance;\r\n\r\nconst { Header, Footer } = Layout;\r\nconst { Option } = Select;\r\n\r\nexport default function Login() {\r\n const { addToast } = useToasts();\r\n const [emailaddress, setEmail] = useState(\"\");\r\n const [password, setPassword] = useState(\"\");\r\n const [loading, setLoading] = useState(false);\r\n const [sub_loading, setSubLoading] = useState(false);\r\n const [rs_loading, setRsLoading] = useState(false);\r\n const [wp_loading, setWPLoading] = useState(false);\r\n const [cp_loading, setCPLoading] = useState(false);\r\n const [emailFeedback, setEmailFeedback] = useState(\"\");\r\n const [passwordFeedback, setPasswordFeedback] = useState(\"\");\r\n const [changePw, setChangePw] = useState(false);\r\n const [newPassword, setNewPassword] = useState(\"\");\r\n const [confirmPass, setConfirmPass] = useState(\"\");\r\n const [applicationname, setAppName] = useState(\"AGORA\");\r\n const [click, setClick] = useState(false);\r\n const [recaptchaVerified, setRecaptchaVerified] = useState(false);\r\n const [otpModal, setOTPModal] = useState(false);\r\n const [waiveModal, setWaiveModal] = useState(false);\r\n const [userData, setUserData] = useState([]);\r\n const [message, setMessage] = useState(\"\");\r\n const [isError, setIsError] = useState(false);\r\n const [login, setLogin] = useState(false);\r\n const [isExpired, setIsExpired] = useState(false);\r\n const [modal_confirm, setModalConfirm] = useState(false);\r\n const [isWaiving, setIsWaiving] = useState(false);\r\n const [DoctorsData, setDoctorsData] = useState([]);\r\n\r\n // var for resending\r\n const [val, setVal] = useState(false);\r\n const [val_hmo, setValHMO] = useState(false);\r\n const [val_expired, setValExpired] = useState(false);\r\n\r\n //timer\r\n const [otp, setOTP] = useState(\"\");\r\n const [seconds, setSeconds] = useState(5);\r\n\r\n document.title = \"AGORA ADMIN - LOGIN\";\r\n let history = useHistory();\r\n let user_info = JSON.parse(localStorage.getItem(\"user_info\"));\r\n if (user_info) {\r\n if (\r\n user_info.data.department === \"INT MRKTG\" ||\r\n user_info.data.department === \"AVG MRKTG\"\r\n ) {\r\n history.push(\"/newsletter\");\r\n } else {\r\n history.push(\"/dashboard\");\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n localStorage.removeItem(\"user_info\");\r\n localStorage.removeItem(\"current_pw\");\r\n }, []);\r\n\r\n useEffect(() => {\r\n const interval = setInterval(() => {\r\n if (seconds > 0) {\r\n setSeconds(seconds - 1);\r\n }\r\n\r\n if (seconds === 0) {\r\n setSeconds(0);\r\n clearInterval(interval);\r\n }\r\n }, 1000);\r\n\r\n return () => {\r\n clearInterval(interval);\r\n };\r\n }, [seconds]);\r\n\r\n async function loginAruga(respJson) {\r\n let stat_respJson = LoginStatus(applicationname, respJson.access_token);\r\n if (stat_respJson) {\r\n localStorage.setItem(\"user_info\", JSON.stringify(respJson));\r\n localStorage.setItem(\"appName\", JSON.stringify(applicationname));\r\n localStorage.setItem(\"current_pw\", password);\r\n sessionStorage.setItem(\"logged_in\", true);\r\n\r\n if (respJson.data.department === \"MIS TECH\") {\r\n history.push(\"/users\", respJson);\r\n } else if (\r\n respJson.data.department === \"INT MRD\" ||\r\n respJson.data.department === \"AVG MRD\"\r\n ) {\r\n history.push(\"/docdashboard\");\r\n } else if (\r\n respJson.data.department === \"INT APD\" ||\r\n respJson.data.department === \"AVG APD\"\r\n ) {\r\n history.push(\"/dashboard\", respJson);\r\n } else {\r\n history.push(\"/newsletter\", respJson);\r\n }\r\n setEmail(\"\");\r\n } else {\r\n addToast(stat_respJson.message, {\r\n appearance: \"error\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 2000,\r\n });\r\n }\r\n }\r\n\r\n const handleClick = () => setClick(!click);\r\n const closeMobileMenu = () => setClick(false);\r\n async function handleLogin(e) {\r\n e.preventDefault();\r\n e.target.className += \" was-validated\";\r\n\r\n if (emailaddress.trim() === \"\")\r\n setEmailFeedback(\"Please input your Email!\");\r\n if (password.trim() === \"\")\r\n setPasswordFeedback(\"Please input your Password!\");\r\n\r\n if (emailaddress.trim() === \"\" || password.trim() === \"\") return;\r\n\r\n try {\r\n setLoading(true);\r\n\r\n let login_url = baseurl(applicationname);\r\n let Value = Encrypt2({\r\n emailaddress,\r\n password,\r\n });\r\n\r\n let resp = await fetch(Decrypt(login_url), {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n Value,\r\n }),\r\n });\r\n\r\n let respText = await resp.text();\r\n let respJson = await Decrypt2(respText.replace(/\"/g, \"\"));\r\n if (respJson.data) {\r\n if (applicationname === \"ARUGA\") {\r\n // await loginAruga(respJson);\r\n setUserData(respJson);\r\n setLogin(true);\r\n await LoginOTPDoctors();\r\n } else {\r\n setUserData(respJson);\r\n setLogin(true);\r\n setIsExpired(false);\r\n let expired = false;\r\n await GetHMOTagging(expired);\r\n }\r\n } else {\r\n if (respJson.message === \"Password is expired.\") {\r\n setLogin(false);\r\n setIsExpired(true);\r\n addToast(\r\n respJson.message,\r\n {\r\n appearance: \"error\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 2000,\r\n },\r\n setWaiveModal(true)\r\n );\r\n } else {\r\n addToast(respJson.message, {\r\n appearance: \"error\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 5000,\r\n });\r\n }\r\n }\r\n } catch (error) {\r\n alert(\"Internal Server Error\");\r\n }\r\n setPassword(\"\");\r\n setLoading(false);\r\n }\r\n\r\n async function onPressedCancel() {\r\n setWaiveModal(true);\r\n setModalConfirm(false);\r\n }\r\n\r\n async function onPressChangePass() {\r\n setCPLoading(true);\r\n let expired = true;\r\n let value = \"cp\";\r\n await GetHMOTagging(expired, value);\r\n }\r\n\r\n async function onPressWaivePass() {\r\n setWPLoading(true);\r\n let expired = true;\r\n let value = \"wp\";\r\n await GetHMOTagging(expired, value);\r\n }\r\n\r\n async function onPressResend() {\r\n setRsLoading(true);\r\n if (applicationname === \"AGORA\") {\r\n await LoginOTP(val_hmo, val_expired, val);\r\n } else {\r\n await LoginOTPDoctors();\r\n }\r\n }\r\n\r\n async function onPressClose() {\r\n if (login) {\r\n setWaiveModal(false);\r\n setOTPModal(false);\r\n } else {\r\n setWaiveModal(true);\r\n setOTPModal(false);\r\n }\r\n }\r\n\r\n async function WaivePassword() {\r\n let Value = Encrypt2({\r\n email: emailaddress,\r\n });\r\n\r\n let resp = await fetch(Decrypt(API.REACT_APP_WAIVE_PASSWORD), {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n Value,\r\n }),\r\n });\r\n\r\n let respText = await resp.text();\r\n let respJson = await Decrypt2(respText.replace(/\"/g, \"\"));\r\n\r\n if (respJson.success) {\r\n setModalConfirm(false);\r\n addToast(respJson.message, {\r\n appearance: \"success\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 2000,\r\n });\r\n } else {\r\n addToast(\"Password waiving failed.\", {\r\n appearance: \"error\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 2000,\r\n });\r\n }\r\n }\r\n\r\n async function GetHMOTagging(expired, value) {\r\n let resp = await fetch(Decrypt(API.REACT_APP_GET_HMO_TAGGING), {\r\n method: \"GET\",\r\n headers: {\r\n email: EncryptHeader(emailaddress),\r\n },\r\n });\r\n\r\n let respJson = await resp.json();\r\n let result = Decrypt2(respJson);\r\n\r\n if (result.success) {\r\n let decrypted = result.data.map((data) => {\r\n return Decrypt2(data);\r\n });\r\n\r\n await LoginOTP(decrypted[0].hmo_tag, expired, value);\r\n } else {\r\n addToast(result.message, {\r\n appearance: \"error\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 5000,\r\n });\r\n }\r\n }\r\n\r\n async function LoginOTP(hmo_tag, expired, value) {\r\n setRsLoading(true);\r\n setValHMO(hmo_tag);\r\n setValExpired(expired);\r\n setVal(value);\r\n\r\n let waiving;\r\n if (value === \"wp\") {\r\n setIsWaiving(true);\r\n waiving = true;\r\n } else {\r\n setIsWaiving(false);\r\n waiving = false;\r\n }\r\n\r\n let is_intellicare = hmo_tag;\r\n\r\n let Value = Encrypt2({\r\n email: emailaddress,\r\n intellicare: is_intellicare,\r\n is_expired: expired,\r\n is_waiving: waiving,\r\n });\r\n\r\n let resp = await fetch(Decrypt(API.REACT_APP_SEND_OTP), {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n Value,\r\n }),\r\n });\r\n\r\n let respText = await resp.text();\r\n let respJson = await Decrypt2(respText.replace(/\"/g, \"\"));\r\n\r\n if (respJson.success) {\r\n setOTP(\"\");\r\n setIsError(false);\r\n setWaiveModal(false);\r\n setOTPModal(true);\r\n setSeconds(60);\r\n setLoading(false);\r\n setCPLoading(false);\r\n setWPLoading(false);\r\n setRsLoading(false);\r\n setMessage(\r\n \"One-time password (OTP) has been sent to your email. Please enter the code below.\"\r\n );\r\n } else {\r\n setWaiveModal(false);\r\n setMessage(respJson.message);\r\n setLoading(false);\r\n setCPLoading(false);\r\n setWPLoading(false);\r\n setRsLoading(false);\r\n addToast(respJson.message, {\r\n appearance: \"error\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 5000,\r\n });\r\n }\r\n }\r\n\r\n async function LoginOTPDoctors() {\r\n setRsLoading(true);\r\n setLogin(true);\r\n let Value = Encrypt2({\r\n email_address: emailaddress,\r\n });\r\n\r\n let resp = await fetch(Decrypt(API.REACT_APP_SEND_OTP_DOCTORS), {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n Value,\r\n }),\r\n });\r\n\r\n let respText = await resp.text();\r\n let respJson = await Decrypt2(respText.replace(/\"/g, \"\"));\r\n\r\n if (respJson.success) {\r\n setOTP(\"\");\r\n setIsError(false);\r\n setWaiveModal(false);\r\n setOTPModal(true);\r\n setSeconds(60);\r\n setLoading(false);\r\n setCPLoading(false);\r\n setWPLoading(false);\r\n setRsLoading(false);\r\n setMessage(\r\n \"One-time password (OTP) has been sent to your email. Please enter the code below.\"\r\n );\r\n } else {\r\n setWaiveModal(false);\r\n setMessage(respJson.message);\r\n setLoading(false);\r\n setCPLoading(false);\r\n setWPLoading(false);\r\n setRsLoading(false);\r\n addToast(respJson.message, {\r\n appearance: \"error\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 5000,\r\n });\r\n }\r\n }\r\n\r\n async function ValidateOTP() {\r\n setSubLoading(true);\r\n\r\n if (otp.length <= 0) {\r\n alert(\"Please input OTP.\");\r\n setSubLoading(false);\r\n return;\r\n }\r\n\r\n try {\r\n let gcemail = EncryptHeader(emailaddress);\r\n let gcotp = EncryptHeader(otp);\r\n\r\n let resp = await fetch(Decrypt(API.REACT_APP_VALIDATE_OTP), {\r\n method: \"GET\",\r\n headers: {\r\n email: gcemail,\r\n otp: gcotp,\r\n },\r\n });\r\n\r\n let respJson = await resp.json();\r\n let result = Decrypt2(respJson);\r\n\r\n if (result.success) {\r\n if (!login) {\r\n if (isWaiving) {\r\n setSubLoading(false);\r\n setOTPModal(false);\r\n setModalConfirm(true);\r\n return;\r\n } else {\r\n setSubLoading(false);\r\n setOTPModal(false);\r\n setChangePw(true);\r\n return;\r\n }\r\n }\r\n\r\n let stat_respJson = LoginStatus(applicationname, userData.access_token);\r\n if (stat_respJson) {\r\n if (applicationname === \"AGORA\") {\r\n await gatherUserSystemAccess(userData);\r\n }\r\n\r\n localStorage.setItem(\"user_info\", JSON.stringify(userData));\r\n localStorage.setItem(\"appName\", JSON.stringify(applicationname));\r\n localStorage.setItem(\"current_pw\", password);\r\n sessionStorage.setItem(\"logged_in\", true);\r\n\r\n if (userData.data.department === \"MIS TECH\") {\r\n history.push(\"/users\", userData);\r\n } else if (\r\n userData.data.department === \"INT MRD\" ||\r\n userData.data.department === \"AVG MRD\"\r\n ) {\r\n history.push(\"/docdashboard\");\r\n } else if (\r\n userData.data.department === \"INT APD\" ||\r\n userData.data.department === \"AVG APD\"\r\n ) {\r\n history.push(\"/dashboard\", userData);\r\n } else {\r\n history.push(\"/newsletter\", userData);\r\n }\r\n setEmail(\"\");\r\n } else {\r\n history.push(\"/dashboard\", userData);\r\n }\r\n } else {\r\n if (result.is_exceed) {\r\n setOTPModal(false);\r\n setWaiveModal(false);\r\n addToast(result.message, {\r\n appearance: \"error\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 5000,\r\n });\r\n } else {\r\n setSubLoading(false);\r\n setMessage(result.message);\r\n setIsError(true);\r\n }\r\n }\r\n } catch (error) {\r\n // error\r\n }\r\n }\r\n\r\n async function ValidateOTPDoctors() {\r\n setSubLoading(true);\r\n\r\n if (otp.length <= 0) {\r\n alert(\"Please input OTP.\");\r\n setSubLoading(false);\r\n return;\r\n }\r\n try {\r\n let Value = Encrypt2({\r\n email_address: emailaddress,\r\n vercode: otp,\r\n });\r\n\r\n let resp = await fetch(Decrypt(API.REACT_APP_VALIDATE_OTP_DOCTORS), {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n Value,\r\n }),\r\n });\r\n\r\n let respJson = await resp.json();\r\n let result = Decrypt2(respJson);\r\n\r\n if (result.success) {\r\n let stat_respJson = LoginStatus(applicationname, userData.access_token);\r\n if (stat_respJson) {\r\n localStorage.setItem(\"user_info\", JSON.stringify(userData));\r\n localStorage.setItem(\"appName\", JSON.stringify(applicationname));\r\n localStorage.setItem(\"current_pw\", password);\r\n sessionStorage.setItem(\"logged_in\", true);\r\n\r\n if (userData.data.department === \"MIS TECH\") {\r\n history.push(\"/users\", userData);\r\n } else if (\r\n userData.data.department === \"INT MRD\" ||\r\n userData.data.department === \"AVG MRD\"\r\n ) {\r\n history.push(\"/docdashboard\");\r\n } else if (\r\n userData.data.department === \"INT APD\" ||\r\n userData.data.department === \"AVG APD\"\r\n ) {\r\n history.push(\"/dashboard\", userData);\r\n } else {\r\n history.push(\"/newsletter\", userData);\r\n }\r\n setEmail(\"\");\r\n } else {\r\n addToast(stat_respJson.message, {\r\n appearance: \"error\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 5000,\r\n });\r\n }\r\n } else {\r\n if (result.is_exceed) {\r\n setOTPModal(false);\r\n setWaiveModal(false);\r\n addToast(result.message, {\r\n appearance: \"error\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 5000,\r\n });\r\n } else {\r\n setSubLoading(false);\r\n setMessage(result.message);\r\n setIsError(true);\r\n }\r\n }\r\n } catch (error) {\r\n // error\r\n }\r\n }\r\n\r\n async function gatherUserSystemAccess(respJson) {\r\n let paramRolesID = respJson.data.rolesid;\r\n let paramToken = respJson.access_token;\r\n\r\n try {\r\n let Value = Encrypt2({\r\n rolesid: paramRolesID,\r\n });\r\n\r\n let resp = await fetch(Decrypt(API.SYSACCESS_GET_USERSYSTEMACCESS), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + paramToken,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ Value }),\r\n });\r\n let respJson = await resp.json();\r\n\r\n localStorage.setItem(\"user_systemaccess\", JSON.stringify(respJson.data));\r\n } catch (error) {\r\n alert(error);\r\n }\r\n\r\n return;\r\n }\r\n\r\n const handleChangPassword = async () => {\r\n var regularExpression = new RegExp(\r\n \"^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#$%^&*_])(?=.{8,50})\"\r\n );\r\n if (newPassword.length < 6) {\r\n return alert(\"Oops, Password too short\");\r\n }\r\n if (newPassword !== confirmPass) {\r\n return alert(\"Oops, Password does not match!\");\r\n }\r\n if (!regularExpression.test(newPassword)) {\r\n return alert(\r\n \"Oops, Password should contain atleast one number, one upper case and one special character.\"\r\n );\r\n }\r\n if (recaptchaVerified === false) {\r\n return alert(\"Please verify that you are human!\");\r\n }\r\n try {\r\n let Value = Encrypt2({\r\n emailaddress,\r\n newpassword: newPassword,\r\n });\r\n let resp = await fetch(Decrypt(API.FP_CHANGE_PW), {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ Value }),\r\n });\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText);\r\n if (respJson.success) {\r\n addToast(\"Password successfully updated.\", {\r\n appearance: \"success\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 2000,\r\n });\r\n resetRecaptcha();\r\n setChangePw(false);\r\n setWaiveModal(false);\r\n } else {\r\n resetRecaptcha();\r\n setChangePw(false);\r\n setWaiveModal(false);\r\n addToast(respJson.message, {\r\n appearance: \"warning\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 5000,\r\n });\r\n }\r\n } catch (error) {\r\n alert(\"Internal Server Error\");\r\n }\r\n };\r\n function verifyCallback(response) {\r\n if (response) {\r\n setRecaptchaVerified(true);\r\n }\r\n }\r\n function resetRecaptcha() {\r\n recaptchaInstance.reset();\r\n }\r\n\r\n function baseurl(app) {\r\n if (app == \"AGORA\") {\r\n let loginurl = API.USER_LOGIN;\r\n return loginurl;\r\n } else {\r\n let loginurl = API.USER_LOGIN_DOCTORS;\r\n return loginurl;\r\n }\r\n }\r\n async function LoginStatus(app, access_token) {\r\n const crypto = require(\"crypto\");\r\n const uuid = crypto.randomBytes(32).toString(\"hex\");\r\n localStorage.setItem(\"uuid\", uuid);\r\n\r\n let SessionToken = access_token;\r\n let DeviceType = isMobile ? \"MOBILE\" : \"PC-WEB-BROWSER\";\r\n\r\n let CheckSessionBody = Encrypt2({\r\n email: emailaddress,\r\n devicename: DeviceType,\r\n deviceid: uuid,\r\n });\r\n let param = JSON.stringify({\r\n Value: CheckSessionBody,\r\n });\r\n if (app === \"AGORA\") {\r\n let stat_resp = await fetch(Decrypt(API.POST_USER_STAT), {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: param,\r\n });\r\n\r\n let stat_respText = await stat_resp.text();\r\n let stat_respJson = await Decrypt2(stat_respText.replace(/\"/g, \"\"));\r\n return stat_respJson;\r\n } else {\r\n let stat_resp = await fetch(Decrypt(API.POST_USER_STAT_DOCTORS), {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: param,\r\n });\r\n\r\n let stat_respText = await stat_resp.text();\r\n let stat_respJson = await Decrypt2(stat_respText.replace(/\"/g, \"\"));\r\n return stat_respJson;\r\n }\r\n }\r\n return (\r\n <>\r\n \r\n
    \r\n \r\n {applicationname} ADMIN\r\n \r\n \r\n
    \r\n \r\n
    \r\n
      \r\n
    • \r\n \r\n Privacy Policy\r\n \r\n
    • \r\n
    • \r\n \r\n Contact Us\r\n \r\n
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n {applicationname} ADMIN \r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Application: \r\n setAppName(AppName)}\r\n >\r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n placeholder=\"Email\"\r\n value={emailaddress}\r\n onChange={(e) => {\r\n setEmail(e.target.value);\r\n setEmailFeedback(\"\");\r\n }}\r\n />\r\n
    \r\n {emailFeedback}\r\n
    \r\n }\r\n type=\"password\"\r\n placeholder=\"Password\"\r\n value={password}\r\n onChange={(e) => {\r\n setPassword(e.target.value);\r\n setPasswordFeedback(\"\");\r\n }}\r\n onPressEnter={handleLogin}\r\n />\r\n
    {passwordFeedback}
    \r\n
    \r\n Forgot Password?\r\n
    \r\n
    \r\n \r\n {loading ? null : }\r\n {loading ? \"Logging in...\" : \"Login\"}\r\n \r\n
    \r\n
    \r\n
    \r\n © {new Date().getFullYear()} Copyright:{\" \"}\r\n \r\n
    \r\n \r\n Save\r\n ,\r\n ,\r\n ]}\r\n >\r\n \r\n setNewPassword(e.target.value)}\r\n type=\"password\"\r\n />\r\n \r\n setConfirmPass(e.target.value)}\r\n type=\"password\"\r\n />\r\n (recaptchaInstance = e)}\r\n elementID=\"changepw\"\r\n sitekey=\"6LfoHLgZAAAAAMNMXXajVsJva8MgZT0JfKPAODkk\"\r\n render=\"onload\"\r\n verifyCallback={verifyCallback}\r\n />\r\n \r\n \r\n {sub_loading ? \"Validating...\" : \"Submit\"}\r\n ,\r\n ,\r\n ]}\r\n >\r\n {isError ? (\r\n \r\n ) : (\r\n \r\n )}\r\n\r\n

    \r\n {\r\n setOTP(e.target.value.toUpperCase());\r\n }}\r\n />\r\n

    \r\n

    \r\n
    \r\n {seconds > 0 ? (\r\n

    \r\n Time Remaining: 00:\r\n {seconds < 10 ? `0${seconds}` : seconds}\r\n

    \r\n ) : (\r\n

    Didn't receive code?

    \r\n )}\r\n 0}\r\n style={{\r\n color: seconds > 0 ? \"#DFE3E8\" : \"#FF5630\",\r\n marginRight: 15,\r\n }}\r\n onClick={() => onPressResend()}\r\n >\r\n {rs_loading ? \"Resending...\" : \"Resend OTP\"}\r\n \r\n
    \r\n \r\n setWaiveModal(false)}>Close]}\r\n >\r\n
    \r\n onPressChangePass()}\r\n >\r\n Change Password\r\n \r\n onPressWaivePass()}\r\n >\r\n Waive Password\r\n \r\n
    \r\n \r\n WaivePassword()}>\r\n {loading ? (\r\n
    \r\n
    {\" \"}\r\n Waving...\r\n
    \r\n ) : (\r\n \"YES\"\r\n )}\r\n ,\r\n ,\r\n ]}\r\n >\r\n

    Continue waiving password?

    \r\n \r\n \r\n \r\n );\r\n}\r\n","import React, { useState } from \"react\";\r\nimport { Menu, Icon, Input, Modal, Alert, Button } from \"antd\";\r\nimport { useHistory, Link } from \"react-router-dom\";\r\nimport { useToasts } from \"react-toast-notifications\";\r\nimport Spinner from \"./Spinner\";\r\nimport { CHANGE_PW, LOGOUT_USER_STAT } from \"../../util/live_api\";\r\nimport {\r\n Decrypt,\r\n Encrypt2,\r\n Decrypt2,\r\n EncryptHeader,\r\n} from \"../../util/EncryptionHandler\";\r\nvar Recaptcha = require(\"react-recaptcha\");\r\nlet recaptchaInstance;\r\nconst { SubMenu } = Menu;\r\nconst { Search } = Input;\r\nexport default function NavBar({ search }) {\r\n let history = useHistory();\r\n let current_pw = localStorage.getItem(\"current_pw\");\r\n let user_info = JSON.parse(localStorage.getItem(\"user_info\"));\r\n\r\n const [oldPassword, setOldPassword] = useState(\"\");\r\n const [newPassword, setNewPassword] = useState(\"\");\r\n const [confirmPass, setConfirmPass] = useState(\"\");\r\n const [changPWModal, setChangePWModal] = useState(false);\r\n const [spinnerLoading, setSpinnerLoading] = useState(false);\r\n const [success, setSuccess] = useState(null);\r\n const [successMsg, setSuccessMsg] = useState(\"\");\r\n const [savingMsg, setSavingMsg] = useState(\"\");\r\n const [recaptchaVerified, setRecaptchaVerified] = useState(false);\r\n\r\n const { addToast } = useToasts();\r\n async function handleChangePassword() {\r\n var regularExpression = new RegExp(\r\n \"^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#$%^&*_])(?=.{8,50})\"\r\n );\r\n if (newPassword.length < 6) {\r\n return alert(\"Oops, Password too short\");\r\n }\r\n if (!regularExpression.test(newPassword)) {\r\n return alert(\r\n \"Oops, Password should contain atleast one number, one upper case and one special character.\"\r\n );\r\n }\r\n if (recaptchaVerified === false) {\r\n return alert(\"Please verified that you are human!\");\r\n }\r\n try {\r\n setSpinnerLoading(true);\r\n setSavingMsg(\"Saving Password...\");\r\n let Value = Encrypt2({\r\n recordid: user_info.data.recordid,\r\n username: user_info.data.emailaddress,\r\n oldpassword: oldPassword,\r\n newpassword: newPassword,\r\n edited_by: user_info.data.emailaddress,\r\n });\r\n let resp = await fetch(Decrypt(CHANGE_PW), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n Value,\r\n }),\r\n });\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText);\r\n if (respJson.success) {\r\n setSuccess(true);\r\n setSuccessMsg(\"Password Successfully Updated\");\r\n resetRecaptcha();\r\n } else {\r\n setSuccess(true);\r\n setSuccessMsg(respJson.error_message);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n alert(\"Internal Server Error\");\r\n }\r\n }\r\n function renderDisabledSave() {\r\n if (\r\n oldPassword.trim() === \"\" ||\r\n newPassword.trim() === \"\" ||\r\n confirmPass.trim() === \"\" ||\r\n newPassword.length < 8 ||\r\n newPassword !== confirmPass\r\n )\r\n return true;\r\n return false;\r\n }\r\n function closeSpinner() {\r\n setSpinnerLoading(false);\r\n if (success === true) {\r\n setChangePWModal(false);\r\n localStorage.removeItem(\"user_info\");\r\n localStorage.removeItem(\"current_pw\");\r\n history.push(\"/\");\r\n }\r\n }\r\n function verifyCallback(response) {\r\n if (response) {\r\n setRecaptchaVerified(true);\r\n }\r\n }\r\n function resetRecaptcha() {\r\n recaptchaInstance.reset();\r\n }\r\n async function SessionUpdate() {\r\n let EncryptedEmail = EncryptHeader(user_info.data.emailaddress);\r\n\r\n let stat_resp = await fetch(Decrypt(LOGOUT_USER_STAT), {\r\n method: \"POST\",\r\n headers: {\r\n Email: EncryptedEmail,\r\n },\r\n });\r\n\r\n let stat_respText = await stat_resp.text();\r\n let stat_respJson = await Decrypt2(stat_respText.replace(/\"/g, \"\"));\r\n\r\n if (stat_respJson.success) {\r\n localStorage.removeItem(\"user_info\");\r\n history.push(\"/\");\r\n } else {\r\n addToast(stat_respJson.message, {\r\n appearance: \"error\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 2000,\r\n });\r\n }\r\n }\r\n return (\r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n Intellicare Newsletter &{\" \"}\r\n {user_info.data.intellicareavega_tag ? \"Delights\" : \"Treats\"}\r\n \r\n \r\n
    \r\n
    \r\n alert(value)}\r\n onChange={(e) => search(e.target.value)}\r\n allowClear\r\n />\r\n
    \r\n {/* \r\n
    \r\n \r\n \r\n \r\n Dashboard\r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n DigiCard\r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n {user_info.data.intellicareavega_tag\r\n ? \"Delights\"\r\n : \"Treats\"}\r\n \r\n \r\n }\r\n >\r\n \r\n \r\n Store\r\n \r\n \r\n \r\n \r\n Category\r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n Account\r\n \r\n }\r\n >\r\n setChangePWModal(true)}\r\n >\r\n \r\n Change Password\r\n \r\n {\r\n SessionUpdate();\r\n }}\r\n >\r\n \r\n Logout\r\n \r\n \r\n \r\n
    \r\n
    */}\r\n
    \r\n
    \r\n \r\n handleChangePassword()}\r\n >\r\n Save\r\n ,\r\n ,\r\n ]}\r\n >\r\n {current_pw !== oldPassword && oldPassword !== \"\" ? (\r\n \r\n ) : null}\r\n {newPassword.length < 8 ? (\r\n \r\n ) : null}\r\n {newPassword.length > 0 &&\r\n confirmPass.length > 0 &&\r\n newPassword !== confirmPass ? (\r\n \r\n ) : null}\r\n 0 && newPassword !== confirmPass)\r\n ? 10\r\n : 0,\r\n }}\r\n >\r\n Old Password\r\n \r\n setOldPassword(e.target.value)}\r\n type=\"password\"\r\n />\r\n \r\n setNewPassword(e.target.value)}\r\n type=\"password\"\r\n />\r\n \r\n setConfirmPass(e.target.value)}\r\n type=\"password\"\r\n />\r\n (recaptchaInstance = e)}\r\n elementID=\"nl_changepw\"\r\n sitekey=\"6LfoHLgZAAAAAMNMXXajVsJva8MgZT0JfKPAODkk\"\r\n render=\"explicit\"\r\n verifyCallback={verifyCallback}\r\n />\r\n \r\n
    \r\n );\r\n}\r\n","import React from \"react\";\r\nimport moment from \"moment\";\r\nimport { Input, Modal, Button, Form, DatePicker, Select } from \"antd\";\r\nimport { MDBIcon, MDBView, MDBMask, MDBCard, MDBCardBody } from \"mdbreact\";\r\nimport LinearIndeterminate from \"../../LinearInderterminate\";\r\nimport Spinner from \"../Spinner\";\r\n\r\nimport * as NL_API from \"../../../util/live_api\";\r\nimport { Decrypt, Decrypt2, Encrypt2 } from \"../../../util/EncryptionHandler\";\r\n\r\nconst { Option } = Select;\r\n\r\nexport default function EditNL({\r\n modalEditNL,\r\n data,\r\n imgPath,\r\n close,\r\n imageLoad,\r\n getAllNL,\r\n}) {\r\n let user_info = JSON.parse(localStorage.getItem(\"user_info\"));\r\n\r\n const [details, setDetails] = React.useState({\r\n title: data.title,\r\n content: data.content,\r\n newsdate: data.newsdate,\r\n intellicare_tag: data.intellicare_tag,\r\n editedby: user_info.data.emailaddress,\r\n postedby: data.postedby,\r\n postdate: data.posted,\r\n isactive: data.isactive,\r\n status: data.status,\r\n newsletterid: data.newsletterid,\r\n });\r\n const [enable, setEnable] = React.useState(true);\r\n const [editCaption, setEditCaption] = React.useState(\"Edit\");\r\n const [closeCaption, setCloseCaption] = React.useState(\"Close\");\r\n const [image, setImage] = React.useState(\"\");\r\n const [imgUri, setImgUri] = React.useState(\"\");\r\n const [modalLoading, setModalLoading] = React.useState(false);\r\n const [success, setSuccess] = React.useState(null);\r\n const [successMsg, setSuccessMsg] = React.useState(\"\");\r\n const [savingMsg, setSavingMsg] = React.useState(\"\");\r\n const [fileSizeMsg, setFileSizeMsg] = React.useState(\"\");\r\n\r\n const dateFormat = \"MM/DD/YYYY hh:mm:ss\";\r\n\r\n function onEditClick() {\r\n if (editCaption === \"Save\") {\r\n if (image !== \"\") {\r\n handleUpdateNL();\r\n } else {\r\n handleUpdateNLwoPic();\r\n }\r\n setCloseCaption(\"Close\");\r\n setEnable(true);\r\n setEditCaption(\"Edit\");\r\n }\r\n setEnable(false);\r\n setEditCaption(\"Save\");\r\n setCloseCaption(\"Cancel\");\r\n }\r\n\r\n function onCloseClick() {\r\n if (closeCaption === \"Close\") {\r\n close();\r\n } else {\r\n setDetails({\r\n title: data.title,\r\n content: data.content,\r\n newsdate: data.newsdate,\r\n intellicare_tag: data.intellicare_tag,\r\n editedby: user_info.data.emailaddress,\r\n postedby: data.postedby,\r\n postdate: data.posted,\r\n newsletterid: data.newsletterid,\r\n });\r\n setCloseCaption(\"Close\");\r\n setEnable(true);\r\n setEditCaption(\"Edit\");\r\n }\r\n }\r\n\r\n function handleUploadChange(e) {\r\n const fsize = e.target.files[0].size;\r\n const file = Math.round(fsize / 1024);\r\n if (\r\n e.target.files[0].type !== \"image/png\" &&\r\n e.target.files[0].type !== \"image/jpeg\"\r\n ) {\r\n return alert(\"File is not image type!\");\r\n }\r\n if (file > 4096) {\r\n setFileSizeMsg(\"File too Big, please select a file max of 4mb\");\r\n setImgUri(\"\");\r\n setImage(\"\");\r\n } else {\r\n setFileSizeMsg(\"\");\r\n setImgUri(URL.createObjectURL(e.target.files[0]));\r\n setImage(e.target.files[0]);\r\n }\r\n }\r\n\r\n async function handleUpdateNL() {\r\n let formdata = new FormData();\r\n formdata.append(\"newsletter_image\", image);\r\n formdata.append(\"newsletter_details\", Encrypt2(details));\r\n try {\r\n setModalLoading(true);\r\n setSuccess(null);\r\n setSavingMsg(\"Saving Changes...\");\r\n let respUpdate = await fetch(Decrypt(NL_API.UPDATE_NEWSLETTER_w_PIC), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n },\r\n body: formdata,\r\n });\r\n let respUpdateText = await respUpdate.json();\r\n let respUpdateJson = await Decrypt2(respUpdateText);\r\n if (respUpdateJson.is_success) {\r\n setSuccessMsg(\"Newsletter has been updated!\");\r\n setImage(\"\");\r\n setSuccess(true);\r\n setEditCaption(\"Edit\");\r\n setCloseCaption(\"Close\");\r\n } else {\r\n setSuccess(false);\r\n setImage(\"\");\r\n setSuccessMsg(respUpdateJson.error_message);\r\n }\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n }\r\n\r\n async function handleUpdateNLwoPic() {\r\n try {\r\n setModalLoading(true);\r\n setSuccess(null);\r\n setSavingMsg(\"Saving Changes...\");\r\n let value = Encrypt2(details);\r\n let respUpdate = await fetch(Decrypt(NL_API.UPDATE_NEWSLETTER_wo_PIC), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ value }),\r\n });\r\n let respUpdateText = await respUpdate.json();\r\n let respUpdateJson = await Decrypt2(respUpdateText);\r\n if (respUpdateJson.is_success) {\r\n setSuccessMsg(\"Newsletter has been updated!\");\r\n setImage(\"\");\r\n setSuccess(true);\r\n setEditCaption(\"Edit\");\r\n setCloseCaption(\"Close\");\r\n } else {\r\n setSuccess(false);\r\n setImage(\"\");\r\n setSuccessMsg(respUpdateJson.error_message);\r\n }\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n }\r\n\r\n function closeSpinner() {\r\n setModalLoading(false);\r\n if (success === true) {\r\n getAllNL();\r\n close();\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n \r\n // \r\n //
    ,\r\n // ]\r\n }\r\n footer={[\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 {imageLoad ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n */}\r\n \r\n {imageLoad ? (\r\n \r\n ) : (\r\n \"img\"\r\n )}\r\n \r\n \r\n \r\n \r\n
    {details.title}
    \r\n

    \r\n Posted by\r\n {data.postedby}, {details.newsdate}\r\n

    \r\n
    \r\n \r\n
    \r\n {editCaption === \"Save\" && (\r\n \r\n handleUploadChange(e)}\r\n />\r\n

    \r\n {fileSizeMsg}\r\n

    \r\n {imgUri && (\r\n \r\n )}\r\n \r\n )}\r\n {editCaption === \"Edit\" && (\r\n

    {details.content}

    \r\n )}\r\n {editCaption === \"Save\" && (\r\n {\r\n const val = e.target.value;\r\n setDetails((prevState) => {\r\n return { ...prevState, content: val };\r\n });\r\n }}\r\n readOnly={enable}\r\n />\r\n )}\r\n\r\n {editCaption === \"Save\" && (\r\n
    \r\n
    \r\n \r\n {\r\n const val = dateString;\r\n setDetails((prevState) => {\r\n return {\r\n ...prevState,\r\n newsdate: val,\r\n };\r\n });\r\n }}\r\n style={{ width: \"100%\" }}\r\n />\r\n
    \r\n
    \r\n \r\n {\r\n setDetails((prevState) => {\r\n return {\r\n ...prevState,\r\n isactive: value,\r\n status: value === true ? \"A\" : \"D\",\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\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","import React from \"react\";\r\nimport { MDBRow, MDBCol, MDBMask, MDBIcon, MDBView, MDBBtn } from \"mdbreact\";\r\nimport LinearIndeterminate from \"../../LinearInderterminate\";\r\nimport EditNLModal from \"./EditNLModal\";\r\n\r\nimport * as NL_API from \"../../../util/live_api\";\r\nimport { Decrypt, ImgEncrypt } from \"../../../util/EncryptionHandler\";\r\n\r\nexport default function NewsletterCard({ data, token, imgpath, getAll }) {\r\n const [images, setImages] = React.useState(\"\");\r\n const [imageLoad, setImageLoad] = React.useState(false);\r\n const [modalEditNL, setModalEditNL] = React.useState(false);\r\n const [btnColors] = React.useState([\r\n \"elegant\",\r\n \"unique\",\r\n \"pink\",\r\n \"purple\",\r\n \"deep-purple\",\r\n \"indigo\",\r\n \"light-blue\",\r\n \"cyan\",\r\n \"dark-green\",\r\n \"light-green\",\r\n \"yellow\",\r\n \"amber\",\r\n \"deep-orange\",\r\n \"brown\",\r\n \"blue-grey\",\r\n \"mdb-color\",\r\n ]);\r\n\r\n React.useEffect(() => {\r\n async function renderImg(imgpath) {\r\n let ImagePath = ImgEncrypt(imgpath);\r\n try {\r\n setImageLoad(true);\r\n let resp = await fetch(Decrypt(NL_API.IMAGES_PATH), {\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n Authorization: \"Bearer \" + token,\r\n ImagePath,\r\n },\r\n });\r\n let respBlob = await resp.blob();\r\n let reader = new FileReader();\r\n reader.readAsDataURL(respBlob);\r\n reader.onload = () => {\r\n setImageLoad(false);\r\n setImages(reader.result);\r\n };\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n renderImg(imgpath);\r\n }, [imgpath, token]);\r\n\r\n function getRandomColor() {\r\n let colorValues = btnColors;\r\n return colorValues[Math.floor(Math.random() * colorValues.length)];\r\n }\r\n function toggleEditModal() {\r\n setModalEditNL(!modalEditNL);\r\n }\r\n function getAllNL() {\r\n getAll();\r\n }\r\n return (\r\n
    \r\n \r\n \r\n \r\n {imageLoad ? (\r\n \r\n ) : (\r\n \"\"\r\n )}\r\n \r\n \r\n \r\n \r\n
    \r\n \r\n {data.intellicare_tag ? \"Intellicare\" : \"Avega\"}\r\n
    \r\n
    \r\n {/* */}\r\n {data.title}\r\n {/* */}\r\n
    \r\n

    {data.content.substring(0, 200)}

    \r\n

    \r\n by\r\n {data.postedby},{\" \"}\r\n {data.newsdate}\r\n

    \r\n toggleEditModal()}\r\n color={getRandomColor()}\r\n style={{ borderRadius: 20 }}\r\n >\r\n Read more\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n );\r\n}\r\n","import React from \"react\";\r\nimport moment from \"moment\";\r\nimport { Input, Modal, Button, Form, DatePicker } from \"antd\";\r\nimport { MDBIcon } from \"mdbreact\";\r\n\r\nimport Spinner from \"../Spinner\";\r\nimport * as NL_API from \"../../../util/live_api\";\r\nimport { Decrypt, Encrypt2, Decrypt2 } from \"../../../util/EncryptionHandler\";\r\n\r\nconst layout = {\r\n labelCol: { span: 4 },\r\n wrapperCol: { span: 19 },\r\n};\r\nconst dateFormat = \"MM/DD/YYYY hh:mm:ss\";\r\nexport default function CreateNLModal({\r\n key,\r\n modalNewNL,\r\n closeCreateNL,\r\n getAll,\r\n}) {\r\n let user_info = JSON.parse(localStorage.getItem(\"user_info\"));\r\n\r\n const [image, setImage] = React.useState(null);\r\n const [details, setDetails] = React.useState({\r\n title: \"\",\r\n content: \"\",\r\n newsdate: moment(new Date(), dateFormat),\r\n intellicare_tag: user_info.data.intellicareavega_tag,\r\n postedby: user_info.data.emailaddress,\r\n isactive: true,\r\n status: \"A\",\r\n editedby: null,\r\n });\r\n const [imgUri, setImgUri] = React.useState(\"\");\r\n const [modalLoading, setModalLoading] = React.useState(false);\r\n const [success, setSuccess] = React.useState(null);\r\n const [successMsg, setSuccessMsg] = React.useState(\"\");\r\n const [savingMsg, setSavingMsg] = React.useState(\"\");\r\n const [fileSizeMsg, setFileSizeMsg] = React.useState(\"\");\r\n\r\n // function getBase64(file) {\r\n // return new Promise((resolve, reject) => {\r\n // const reader = new FileReader();\r\n // reader.readAsDataURL(file);\r\n // reader.onload = () => resolve(reader.result);\r\n // reader.onerror = (error) => reject(error);\r\n // });\r\n // }\r\n function handleUploadChange(e) {\r\n const fsize = e.target.files[0].size;\r\n const file = Math.round(fsize / 1024);\r\n if (\r\n e.target.files[0].type !== \"image/png\" &&\r\n e.target.files[0].type !== \"image/jpeg\"\r\n ) {\r\n return alert(\"File is not image type!\");\r\n }\r\n if (file > 4096) {\r\n setFileSizeMsg(\"File too Big, please select a file max of 4mb\");\r\n setImgUri(\"\");\r\n setImage(\"\");\r\n } else {\r\n setFileSizeMsg(\"\");\r\n setImgUri(URL.createObjectURL(e.target.files[0]));\r\n setImage(e.target.files[0]);\r\n }\r\n }\r\n async function handleCreateFeed() {\r\n if (image === null) {\r\n return alert(\"Please add image of newsletter!\");\r\n }\r\n if (details.title.trim() === \"\") {\r\n return alert(\"Please add title of newsletter!\");\r\n }\r\n if (details.content.trim() === \"\") {\r\n return alert(\"Please add content of newsletter!\");\r\n }\r\n let formdata = new FormData();\r\n formdata.append(\"newsletter_image\", image);\r\n formdata.append(\"newsletter_details\", Encrypt2(details));\r\n formdata.forEach((value, key) => {\r\n // cs.log removed\r\n });\r\n try {\r\n setModalLoading(true);\r\n setSuccess(null);\r\n setSavingMsg(\"Saving Newsletter...\");\r\n let respAdd = await fetch(Decrypt(NL_API.ADD_NEWSLETTER), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n },\r\n body: formdata,\r\n });\r\n let respAddText = await respAdd.json();\r\n let respAddJson = await Decrypt2(respAddText);\r\n if (respAddJson.is_success) {\r\n setDetails({\r\n title: \"\",\r\n content: \"\",\r\n intellicare_tag: false,\r\n postedby: user_info.data.emailaddress,\r\n editedby: null,\r\n });\r\n setImage(null);\r\n setSuccess(true);\r\n setSuccessMsg(\"Newsletter has been added!\");\r\n } else {\r\n setSuccess(false);\r\n setSuccessMsg(respAddJson.error_message);\r\n }\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n }\r\n function closeModal() {\r\n setDetails({\r\n title: \"\",\r\n content: \"\",\r\n newsdate: moment(new Date(), dateFormat),\r\n intellicare_tag: user_info.data.intellicareavega_tag,\r\n postedby: user_info.data.emailaddress,\r\n editedby: null,\r\n });\r\n closeCreateNL();\r\n }\r\n\r\n function closeSpinner() {\r\n setModalLoading(false);\r\n if (success === true) {\r\n closeCreateNL();\r\n getAll();\r\n }\r\n }\r\n return (\r\n
    \r\n ,\r\n ,\r\n ]}\r\n footer={[\r\n handleCreateFeed()}\r\n >\r\n \r\n Create\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 val = e.target.value;\r\n setDetails((prevState) => {\r\n return { ...prevState, title: val };\r\n });\r\n }}\r\n />\r\n \r\n *,\r\n ,\r\n ]}\r\n >\r\n {\r\n const val = e.target.value;\r\n setDetails((prevState) => {\r\n return { ...prevState, content: val };\r\n });\r\n }}\r\n />\r\n \r\n \r\n {\r\n const val = dateString;\r\n setDetails((prevState) => {\r\n return { ...prevState, newsdate: val.toLocaleString() };\r\n });\r\n }}\r\n style={{ width: \"100%\" }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n * Max. file size(4MB)\r\n \r\n }\r\n >\r\n handleUploadChange(e)}\r\n />\r\n

    \r\n {fileSizeMsg}\r\n

    \r\n {imgUri && (\r\n \r\n )}\r\n \r\n \r\n
    \r\n \r\n \r\n
    \r\n );\r\n}\r\n","import React from \"react\";\r\nimport moment from \"moment\";\r\nimport { Input, Modal, Button, Form, DatePicker, Select } from \"antd\";\r\nimport { MDBMask, MDBIcon, MDBView, MDBCard, MDBCardBody } from \"mdbreact\";\r\nimport { useToasts } from \"react-toast-notifications\";\r\n\r\nimport Spinner from \"../Spinner\";\r\nimport LinearIndeterminate from \"../../LinearInderterminate\";\r\nimport * as NL_API from \"../../../util/live_api\";\r\nimport { Decrypt, Decrypt2, Encrypt2 } from \"../../../util/EncryptionHandler\";\r\n\r\nconst { Option } = Select;\r\nconst { RangePicker } = DatePicker;\r\nconst layout = {\r\n labelCol: { span: 4 },\r\n wrapperCol: { span: 19 },\r\n};\r\nconst dateFormat = \"MM/DD/YYYY\";\r\n\r\nexport default function EditDelights({\r\n open,\r\n close,\r\n data,\r\n img,\r\n imageLoad,\r\n getAll,\r\n}) {\r\n const { addToast } = useToasts();\r\n let user_info = JSON.parse(localStorage.getItem(\"user_info\"));\r\n\r\n const [editCaption, setEditCaption] = React.useState(\"Edit\");\r\n const [closeCaption, setCloseCaption] = React.useState(\"Close\");\r\n const [details, setDetails] = React.useState({\r\n delightdetailid: data.delightdetailID,\r\n validfromdate: data.validfromdate,\r\n validtodate: data.validtodate,\r\n branches: data.branches,\r\n details: data.details,\r\n intellicare_tag: data.intellicare_tag,\r\n editby: user_info.data.emailaddress,\r\n postedby: data.postedby,\r\n postdate: data.postdate,\r\n contactnumber: data.contactnumber,\r\n isactive: data.isactive,\r\n status: data.status,\r\n delightcategoryID: data.delightcategoryID,\r\n delightstoreID: data.delightstoreID,\r\n });\r\n const [image, setImage] = React.useState(\"\");\r\n const [imgUri, setImgUri] = React.useState(\"\");\r\n const [category, setCategory] = React.useState([]);\r\n const [modalLoading, setModalLoading] = React.useState(false);\r\n const [success, setSuccess] = React.useState(null);\r\n const [successMsg, setSuccessMsg] = React.useState(\"\");\r\n const [savingMsg, setSavingMsg] = React.useState(\"\");\r\n const [fileSizeMsg, setFileSizeMsg] = React.useState(\"\");\r\n\r\n React.useEffect(() => {\r\n async function getAllDelightsCategory() {\r\n try {\r\n let delights = await fetch(Decrypt(NL_API.GET_DELIGHTS_CATEGORY), {\r\n method: \"GET\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n },\r\n });\r\n let respJson = await delights.json();\r\n if (respJson) {\r\n let decrypted = respJson.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n return newD;\r\n });\r\n setCategory(decrypted);\r\n } else {\r\n addToast(respJson.error_message, {\r\n appearance: \"error\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n getAllDelightsCategory();\r\n }, [user_info.access_token, addToast]);\r\n function onEditClick() {\r\n if (editCaption === \"Save\") {\r\n if (image !== \"\") {\r\n handleUpdateDelightsWPic();\r\n } else {\r\n handleUpdateDelightsWoPic();\r\n }\r\n setCloseCaption(\"Close\");\r\n setEditCaption(\"Edit\");\r\n }\r\n setEditCaption(\"Save\");\r\n setCloseCaption(\"Cancel\");\r\n }\r\n function onCloseClick() {\r\n if (closeCaption === \"Close\") {\r\n close();\r\n } else {\r\n setCloseCaption(\"Close\");\r\n setEditCaption(\"Edit\");\r\n setDetails({\r\n delightdetailid: data.delightdetailID,\r\n validfromdate: data.validfromdate,\r\n validtodate: data.validtodate,\r\n branches: data.branches,\r\n details: data.details,\r\n intellicare_tag: data.intellicare_tag,\r\n editby: data.editby,\r\n postedby: data.postedby,\r\n postdate: data.postdate,\r\n contactnumber: data.contactnumber,\r\n delightcategoryID: data.delightcategoryID,\r\n delightstoreID: data.delightstoreID,\r\n });\r\n }\r\n }\r\n function handleUploadChange(e) {\r\n const fsize = e.target.files[0].size;\r\n const file = Math.round(fsize / 1024);\r\n if (\r\n e.target.files[0].type !== \"image/png\" &&\r\n e.target.files[0].type !== \"image/jpeg\"\r\n ) {\r\n return alert(\"File is not image type!\");\r\n }\r\n if (file > 4096) {\r\n setFileSizeMsg(\"File too Big, please select a file max of 4mb\");\r\n setImgUri(\"\");\r\n setImage(\"\");\r\n } else {\r\n setFileSizeMsg(\"\");\r\n setImgUri(URL.createObjectURL(e.target.files[0]));\r\n setImage(e.target.files[0]);\r\n }\r\n }\r\n async function handleUpdateDelightsWPic() {\r\n let formdata = new FormData();\r\n formdata.append(\"delights_image\", image);\r\n formdata.append(\"Delights_details\", Encrypt2(details));\r\n formdata.forEach((value, key) => {\r\n // cs.log removed\r\n });\r\n try {\r\n setModalLoading(true);\r\n setSuccess(null);\r\n setSavingMsg(\"Saving Changes...\");\r\n let respUpdate = await fetch(Decrypt(NL_API.UPDATE_DELIGHTS_w_PIC), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n },\r\n body: formdata,\r\n });\r\n let respUpdateText = await respUpdate.json();\r\n let respUpdateJson = await Decrypt2(respUpdateText);\r\n if (respUpdateJson.is_success) {\r\n setDetails({\r\n delightdetailid: \"\",\r\n validfromdate: \"\",\r\n validtodate: \"\",\r\n branches: \"\",\r\n details: \"\",\r\n intellicare_tag: \"\",\r\n editby: \"\",\r\n postedby: \"\",\r\n postdate: \"\",\r\n contactnumber: \"\",\r\n delightcategoryID: \"\",\r\n delightstoreID: \"\",\r\n });\r\n setSuccessMsg(\r\n user_info.data.intellicareavega_tag\r\n ? \"Delights has been updated!\"\r\n : \"Treats has been updated!\"\r\n );\r\n setImage(\"\");\r\n setSuccess(true);\r\n } else {\r\n setSuccess(false);\r\n setImage(\"\");\r\n setSuccessMsg(respUpdateJson.error_message);\r\n }\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n }\r\n async function handleUpdateDelightsWoPic() {\r\n try {\r\n setModalLoading(true);\r\n setSuccess(null);\r\n setSavingMsg(\"Saving Changes...\");\r\n let value = Encrypt2(details);\r\n let respUpdate = await fetch(Decrypt(NL_API.UPDATE_DELIGHTS_wo_PIC), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ value }),\r\n });\r\n let respUpdateText = await respUpdate.json();\r\n let respUpdateJson = await Decrypt2(respUpdateText);\r\n if (respUpdateJson.is_success) {\r\n setDetails({\r\n delightdetailid: \"\",\r\n validfromdate: \"\",\r\n validtodate: \"\",\r\n branches: \"\",\r\n details: \"\",\r\n intellicare_tag: \"\",\r\n editby: \"\",\r\n postedby: \"\",\r\n postdate: \"\",\r\n contactnumber: \"\",\r\n delightcategoryID: \"\",\r\n delightstoreID: \"\",\r\n });\r\n setSuccessMsg(\r\n user_info.data.intellicareavega_tag\r\n ? \"Delights has been updated!\"\r\n : \"Treats has been updated!\"\r\n );\r\n setImage(\"\");\r\n setSuccess(true);\r\n } else {\r\n setSuccess(false);\r\n setImage(\"\");\r\n setSuccessMsg(respUpdateJson.error_message);\r\n }\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n }\r\n function closeSpinner() {\r\n setModalLoading(false);\r\n if (success === true) {\r\n setEditCaption(\"Edit\");\r\n setCloseCaption(\"Close\");\r\n getAll();\r\n close();\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n onEditClick()}>\r\n \r\n {editCaption}\r\n ,\r\n ,\r\n ]}\r\n >\r\n
    \r\n
    \r\n \r\n {imageLoad ? (\r\n \r\n ) : (\r\n \"First\"\r\n )}\r\n \r\n \r\n \r\n \r\n

    {data.storename}

    \r\n

    \r\n \r\n Valid Through: {moment(details.validfromdate).format(\"LL\")}{\" \"}\r\n - {moment(details.validtodate).format(\"LL\")}\r\n \r\n

    \r\n
    \r\n \r\n {editCaption === \"Save\" && (\r\n
    \r\n
    \r\n \r\n
    \r\n handleUploadChange(e)}\r\n />\r\n

    \r\n {fileSizeMsg}\r\n

    \r\n {imgUri && (\r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n \r\n {\r\n setDetails((prevState) => {\r\n return {\r\n ...prevState,\r\n isactive: value,\r\n status: value === true ? \"A\" : \"D\",\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 {editCaption === \"Save\" ? (\r\n {\r\n const val = e.target.value;\r\n setDetails((prevState) => {\r\n return { ...prevState, branches: val };\r\n });\r\n }}\r\n />\r\n ) : (\r\n

    {details.branches}

    \r\n )}\r\n
    \r\n
    \r\n \r\n {editCaption === \"Save\" ? (\r\n {\r\n const val = e.target.value;\r\n setDetails((prevState) => {\r\n return { ...prevState, contactnumber: val };\r\n });\r\n }}\r\n />\r\n ) : (\r\n

    \r\n {details.contactnumber}\r\n

    \r\n )}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {editCaption === \"Save\" ? (\r\n {\r\n setDetails((prevState) => {\r\n return { ...prevState, delightcategoryID: value };\r\n });\r\n }}\r\n >\r\n {category.map((item) => (\r\n \r\n ))}\r\n \r\n ) : (\r\n

    {data.categoryname}

    \r\n )}\r\n
    \r\n {editCaption === \"Save\" && (\r\n
    \r\n \r\n {\r\n setDetails((prevState) => {\r\n return { ...prevState, validfromdate: dateString[0] };\r\n });\r\n setDetails((prevState) => {\r\n return { ...prevState, validtodate: dateString[1] };\r\n });\r\n }}\r\n />\r\n
    \r\n )}\r\n
    \r\n
    \r\n \r\n {editCaption === \"Save\" ? (\r\n {\r\n const val = e.target.value;\r\n setDetails((prevState) => {\r\n return { ...prevState, details: val };\r\n });\r\n }}\r\n />\r\n ) : (\r\n

    \r\n \r\n {\"\\u2B24\"} {details.details}\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","import React from \"react\";\r\nimport { MDBCol, MDBMask, MDBIcon, MDBView, MDBBtn } from \"mdbreact\";\r\nimport LinearIndeterminate from \"../../LinearInderterminate\";\r\n\r\nimport EditDelights from \"./EditDelights\";\r\nimport * as NL_API from \"../../../util/live_api\";\r\nimport { Decrypt, ImgEncrypt } from \"../../../util/EncryptionHandler\";\r\n\r\nexport default function DelightsCard({ data, token, imgpath, getNewDelights }) {\r\n const [image, setImage] = React.useState(\"\");\r\n const [imageLoad, setImageLoad] = React.useState(false);\r\n const [editDelights, setEditDelights] = React.useState(false);\r\n const [btnColors] = React.useState([\r\n \"elegant\",\r\n \"unique\",\r\n \"pink\",\r\n \"purple\",\r\n \"deep-purple\",\r\n \"indigo\",\r\n \"light-blue\",\r\n \"cyan\",\r\n \"dark-green\",\r\n \"light-green\",\r\n \"yellow\",\r\n \"amber\",\r\n \"deep-orange\",\r\n \"brown\",\r\n \"blue-grey\",\r\n \"mdb-color\",\r\n ]);\r\n\r\n React.useEffect(() => {\r\n async function renderImg(imgpath) {\r\n try {\r\n let ImagePath = ImgEncrypt(imgpath);\r\n setImageLoad(true);\r\n let resp = await fetch(Decrypt(NL_API.IMAGES_PATH), {\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n Authorization: \"Bearer \" + token,\r\n ImagePath,\r\n },\r\n });\r\n let respBlob = await resp.blob();\r\n let reader = new FileReader();\r\n reader.readAsDataURL(respBlob);\r\n reader.onload = () => {\r\n setImageLoad(false);\r\n setImage(reader.result);\r\n };\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n renderImg(imgpath);\r\n }, [imgpath, token]);\r\n function getCategoryIcon(catIcon) {\r\n switch (catIcon) {\r\n case \"Beauty & Wellness\":\r\n return \"spa\";\r\n case \"Dining & Cafe\":\r\n return \"coffee\";\r\n case \"Fitness\":\r\n return \"running\";\r\n case \"Hotels & Resorts\":\r\n return \"hotel\";\r\n case \"Optical\":\r\n return \"eye\";\r\n case \"Leisure & Recreation\":\r\n return \"swimming-pool\";\r\n case \"Other Services\":\r\n return \"cart-plus\";\r\n case \"Retail\":\r\n return \"shopping-bag\";\r\n default:\r\n return \"shopping-cart\";\r\n }\r\n }\r\n function getRandomColor() {\r\n let colorValues = btnColors;\r\n return colorValues[Math.floor(Math.random() * colorValues.length)];\r\n }\r\n function closeEdit() {\r\n setEditDelights(false);\r\n }\r\n\r\n return (\r\n \r\n \r\n {imageLoad ? (\r\n \r\n ) : (\r\n \"\"\r\n )}\r\n \r\n \r\n \r\n \r\n {data.categoryname}\r\n \r\n {/*
    */}\r\n
    {data.storename}
    \r\n {/* */}\r\n

    {data.details}

    \r\n setEditDelights(true)}\r\n >\r\n View Details\r\n \r\n \r\n
    \r\n );\r\n}\r\n","import React from \"react\";\r\nimport moment from \"moment\";\r\nimport { Input, Modal, Button, Form, DatePicker, Select } from \"antd\";\r\nimport { MDBIcon } from \"mdbreact\";\r\nimport { useToasts } from \"react-toast-notifications\";\r\n\r\nimport Spinner from \"../Spinner\";\r\nimport * as NL_API from \"../../../util/live_api\";\r\nimport { Decrypt, Decrypt2, Encrypt2 } from \"../../../util/EncryptionHandler\";\r\n\r\nconst { Option } = Select;\r\nconst { RangePicker } = DatePicker;\r\nconst layout = {\r\n labelCol: { span: 4 },\r\n wrapperCol: { span: 19 },\r\n};\r\nconst dateFormat = \"MM/DD/YYYY\";\r\nexport default function CreateDelights({ open, close, getAll }) {\r\n let user_info = JSON.parse(localStorage.getItem(\"user_info\"));\r\n const { addToast } = useToasts();\r\n\r\n const [stores, setStores] = React.useState([]);\r\n const [category, setCategory] = React.useState([]);\r\n const [details, setDetails] = React.useState({\r\n validfromdate: \"\",\r\n validtodate: \"\",\r\n branches: \"\",\r\n details: \"\",\r\n intellicare_tag: user_info.data.intellicareavega_tag,\r\n postedby: user_info.data.emailaddress,\r\n contactnumber: \"\",\r\n isactive: true,\r\n status: \"A\",\r\n delightcategoryID: \"\",\r\n delightstoreID: \"\",\r\n });\r\n const [image, setImage] = React.useState(null);\r\n const [imgUri, setImgUri] = React.useState(\"\");\r\n const [modalLoading, setModalLoading] = React.useState(false);\r\n const [success, setSuccess] = React.useState(null);\r\n const [successMsg, setSuccessMsg] = React.useState(\"\");\r\n const [savingMsg, setSavingMsg] = React.useState(\"\");\r\n const [fileSizeMsg, setFileSizeMsg] = React.useState(\"\");\r\n\r\n React.useEffect(() => {\r\n async function getAllDelightsStore() {\r\n try {\r\n let delights = await fetch(Decrypt(NL_API.GET_STORES), {\r\n method: \"GET\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n },\r\n });\r\n let resJSON = await delights.json();\r\n if (resJSON) {\r\n let decrypted = resJSON.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n return newD;\r\n });\r\n let activeOnly = decrypted.filter((item) => {\r\n return item.active === true;\r\n });\r\n setStores(activeOnly);\r\n } else {\r\n addToast(resJSON.error_message, {\r\n appearance: \"error\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function getAllDelightsCategory() {\r\n try {\r\n let delights = await fetch(Decrypt(NL_API.GET_DELIGHTS_CATEGORY), {\r\n method: \"GET\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n },\r\n });\r\n let resJSON = await delights.json();\r\n if (resJSON) {\r\n let decrypted = resJSON.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n return newD;\r\n });\r\n let activeOnly = decrypted.filter((item) => {\r\n return item.isactive === true;\r\n });\r\n setCategory(activeOnly);\r\n } else {\r\n addToast(resJSON.error_message, {\r\n appearance: \"error\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n getAllDelightsStore();\r\n getAllDelightsCategory();\r\n }, [user_info.access_token, addToast]);\r\n\r\n function handleUploadChange(e) {\r\n const fsize = e.target.files[0].size;\r\n const file = Math.round(fsize / 1024);\r\n if (\r\n e.target.files[0].type !== \"image/png\" &&\r\n e.target.files[0].type !== \"image/jpeg\"\r\n ) {\r\n return alert(\"File is not image type!\");\r\n }\r\n if (file > 4096) {\r\n setFileSizeMsg(\"File too Big, please select a file max of 4mb\");\r\n setImgUri(\"\");\r\n setImage(\"\");\r\n } else {\r\n setFileSizeMsg(\"\");\r\n setImgUri(URL.createObjectURL(e.target.files[0]));\r\n setImage(e.target.files[0]);\r\n }\r\n }\r\n async function handleCreateDelights() {\r\n if (image === null) {\r\n return alert(\"Please add image!\");\r\n }\r\n if (details.delightcategoryID.trim() === \"\") {\r\n return alert(\"Please add category!\");\r\n }\r\n if (details.delightstoreID.trim() === \"\") {\r\n return alert(\"Please add store!\");\r\n }\r\n if (details.branches.trim() === \"\") {\r\n return alert(\"Please add branch!\");\r\n }\r\n if (details.details.trim() === \"\") {\r\n return alert(\"Please add details!\");\r\n }\r\n if (details.contactnumber.trim() === \"\") {\r\n return alert(\"Please add contact details!\");\r\n }\r\n let formdata = new FormData();\r\n formdata.append(\"delights_image\", image);\r\n formdata.append(\"Delights_details\", Encrypt2(details));\r\n formdata.forEach((value, key) => {\r\n // cs.log removed\r\n });\r\n try {\r\n setModalLoading(true);\r\n setSuccess(null);\r\n setSavingMsg(\r\n user_info.data.intellicareavega_tag\r\n ? \"Saving new delights...\"\r\n : \"Saving new treats...\"\r\n );\r\n let respAdd = await fetch(Decrypt(NL_API.ADD_DELIGHTS), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n },\r\n body: formdata,\r\n });\r\n let respAddText = await respAdd.json();\r\n let respAddJson = await Decrypt2(respAddText);\r\n if (respAddJson.is_success) {\r\n setDetails({\r\n validfromdate: \"\",\r\n validtodate: \"\",\r\n branches: \"\",\r\n details: \"\",\r\n intellicare_tag: user_info.data.intellicareavega_tag,\r\n postedby: user_info.data.emailaddress,\r\n contactnumber: \"\",\r\n delightcategoryID: \"\",\r\n delightstoreID: \"\",\r\n });\r\n setImage(null);\r\n setSuccess(true);\r\n setSuccessMsg(\r\n user_info.data.intellicareavega_tag\r\n ? \"New delights has been added!\"\r\n : \"New treats has been added!\"\r\n );\r\n } else {\r\n setSuccess(false);\r\n setSuccessMsg(respAddJson.error_message);\r\n }\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n }\r\n function closeModal() {\r\n setDetails({\r\n validfromdate: \"\",\r\n validtodate: \"\",\r\n branches: \"\",\r\n details: \"\",\r\n intellicare_tag: user_info.data.intellicareavega_tag,\r\n postedby: user_info.data.emailaddress,\r\n contactnumber: \"\",\r\n delightcategoryID: \"\",\r\n delightstoreID: \"\",\r\n });\r\n close();\r\n }\r\n function closeSpinner() {\r\n setModalLoading(false);\r\n if (success === true) {\r\n close();\r\n getAll();\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n ,\r\n ,\r\n ]}\r\n footer={[\r\n handleCreateDelights()}\r\n >\r\n \r\n Create\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 setDetails((prevState) => {\r\n return { ...prevState, delightstoreID: value };\r\n });\r\n }}\r\n >\r\n {stores.map((item) => (\r\n \r\n ))}\r\n \r\n \r\n *,\r\n ,\r\n ]}\r\n >\r\n {\r\n setDetails((prevState) => {\r\n return { ...prevState, delightcategoryID: value };\r\n });\r\n }}\r\n >\r\n {category.map((item) => (\r\n \r\n ))}\r\n \r\n \r\n *,\r\n ,\r\n ]}\r\n >\r\n {\r\n const val = e.target.value;\r\n setDetails((prevState) => {\r\n return { ...prevState, branches: val };\r\n });\r\n }}\r\n />\r\n \r\n *,\r\n ,\r\n ]}\r\n >\r\n {\r\n const val = e.target.value;\r\n setDetails((prevState) => {\r\n return { ...prevState, details: val };\r\n });\r\n }}\r\n />\r\n \r\n *,\r\n ,\r\n ]}\r\n >\r\n {\r\n const val = e.target.value;\r\n setDetails((prevState) => {\r\n return { ...prevState, contactnumber: val };\r\n });\r\n }}\r\n />\r\n \r\n \r\n {\r\n setDetails((prevState) => {\r\n return { ...prevState, validfromdate: dateString[0] };\r\n });\r\n setDetails((prevState) => {\r\n return { ...prevState, validtodate: dateString[1] };\r\n });\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n * Max. file size(4MB)\r\n \r\n }\r\n >\r\n handleUploadChange(e)}\r\n />\r\n

    \r\n {fileSizeMsg}\r\n

    \r\n {imgUri && (\r\n \r\n )}\r\n \r\n \r\n
    \r\n \r\n \r\n
    \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { Select, Tabs, Empty } from \"antd\";\r\nimport { useToasts } from \"react-toast-notifications\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { MDBRow, MDBCard, MDBCardBody, MDBIcon, MDBBtn } from \"mdbreact\";\r\nimport LinearIndeterminate from \"../LinearInderterminate\";\r\n\r\nimport NavBar from \"./NLNavBar\";\r\nimport NewsletterCard from \"./NewsFeeds/NewsletterCard\";\r\nimport CreateNLModal from \"./NewsFeeds/CreateNLModal\";\r\nimport DelightsCard from \"./Delights/DelightsCard\";\r\nimport CreateDelights from \"./Delights/CreateDelights\";\r\n\r\nimport * as API from \"../../util/live_api\";\r\nimport { Decrypt, Decrypt2 } from \"../../util/EncryptionHandler\";\r\n\r\nconst { TabPane } = Tabs;\r\nconst { Option } = Select;\r\n\r\nexport default function NewsFeed() {\r\n let user_info = JSON.parse(localStorage.getItem(\"user_info\"));\r\n let history = useHistory();\r\n if (!sessionStorage.getItem(\"logged_in\")) {\r\n localStorage.removeItem(\"user_info\");\r\n localStorage.removeItem(\"current_pw\");\r\n history.push(\"/\");\r\n }\r\n\r\n document.title = \"Intellicare Newsletter\";\r\n\r\n const { addToast, removeToast } = useToasts();\r\n const [key, setKey] = React.useState(\"news\");\r\n const [loading, setLoading] = React.useState(false);\r\n\r\n const [newsletterData, setNewsletterData] = React.useState([]);\r\n const [delightsData, setDelightsData] = React.useState([]);\r\n const [delightsCategory, setDelightsCategory] = React.useState([]);\r\n const [tempData, setTempData] = React.useState([]);\r\n const [modalNewNL, setModalNewNL] = React.useState(false);\r\n const [newDelights, setNewDelights] = React.useState(false);\r\n const [warningTime] = React.useState(15 * 60 * 1000);\r\n const [logoutTime] = React.useState(10 * 1000);\r\n\r\n let warnTimeout;\r\n let logoutTimeout;\r\n let toastId;\r\n\r\n function warn() {\r\n document.title = \"Logging Out...\";\r\n addToast(\r\n \"You are about to logout in \" +\r\n logoutTime / 1000 +\r\n \" seconds due to inactivity.\",\r\n {\r\n appearance: \"warning\",\r\n autoDismiss: true,\r\n autoDismissTimeout: logoutTime,\r\n },\r\n (id) => {\r\n toastId = id;\r\n }\r\n );\r\n }\r\n function logout() {\r\n localStorage.removeItem(\"user_info\");\r\n localStorage.removeItem(\"current_pw\");\r\n history.push(\"/\");\r\n }\r\n function setTimeouts() {\r\n warnTimeout = setTimeout(warn, warningTime);\r\n logoutTimeout = setTimeout(logout, warningTime + logoutTime);\r\n }\r\n function clearTimeouts() {\r\n if (warnTimeout) clearTimeout(warnTimeout);\r\n if (logout) clearTimeout(logoutTimeout);\r\n }\r\n function resetTimeout() {\r\n document.title = \"Intellicare Newsletter\";\r\n removeToast(toastId);\r\n clearTimeouts();\r\n setTimeouts();\r\n }\r\n React.useEffect(() => {\r\n async function getAllNewsLetter() {\r\n try {\r\n setLoading(true);\r\n let newsletter = await fetch(Decrypt(API.GET_NEWSLETTER), {\r\n method: \"GET\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n },\r\n });\r\n let resJSON = await newsletter.json();\r\n if (resJSON) {\r\n let decrypted = resJSON.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n return newD;\r\n });\r\n let newest = decrypted.sort(function (a, b) {\r\n return new Date(b.newsdate) - new Date(a.newsdate);\r\n });\r\n let iOnly = newest.filter((item) => {\r\n return item.intellicare_tag === user_info.data.intellicareavega_tag;\r\n });\r\n let activeOnly = iOnly.filter((item) => {\r\n return item.isactive === true && item.status === \"A\";\r\n });\r\n setNewsletterData(activeOnly);\r\n setTempData(activeOnly);\r\n setLoading(false);\r\n } else {\r\n addToast(resJSON.error_message, {\r\n appearance: \"error\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n setLoading(false);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n setLoading(false);\r\n }\r\n }\r\n getAllNewsLetter();\r\n\r\n const events = [\r\n \"load\",\r\n \"mousemove\",\r\n \"mousedown\",\r\n \"click\",\r\n \"scroll\",\r\n \"keypress\",\r\n ];\r\n for (let i in events) window.addEventListener(events[i], resetTimeout);\r\n setTimeouts();\r\n return () => {\r\n for (let i in events) {\r\n window.removeEventListener(events[i], resetTimeout);\r\n clearTimeouts();\r\n }\r\n };\r\n }, [user_info.access_token, user_info.data.intellicareavega_tag]);\r\n\r\n async function getAllNewsLetter() {\r\n try {\r\n setLoading(true);\r\n let newsletter = await fetch(Decrypt(API.GET_NEWSLETTER), {\r\n method: \"GET\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n },\r\n });\r\n let resJSON = await newsletter.json();\r\n if (resJSON) {\r\n let decrypted = resJSON.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n return newD;\r\n });\r\n let newest = decrypted.sort(function (a, b) {\r\n return new Date(b.newsdate) - new Date(a.newsdate);\r\n });\r\n let iOnly = newest.filter((item) => {\r\n return item.intellicare_tag === user_info.data.intellicareavega_tag;\r\n });\r\n let activeOnly = iOnly.filter((item) => {\r\n return item.isactive === true && item.status === \"A\";\r\n });\r\n setNewsletterData(activeOnly);\r\n setTempData(activeOnly);\r\n setLoading(false);\r\n } else {\r\n addToast(resJSON.error_message, {\r\n appearance: \"error\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n setLoading(false);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n setLoading(false);\r\n }\r\n }\r\n async function getAllDelights() {\r\n try {\r\n setLoading(true);\r\n let delights = await fetch(Decrypt(API.GET_DELIGHTS), {\r\n method: \"GET\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n },\r\n });\r\n let resJSON = await delights.json();\r\n if (resJSON) {\r\n let decrypted = resJSON.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n return newD;\r\n });\r\n let newest = decrypted.sort(function (a, b) {\r\n return new Date(b.postdate) - new Date(a.postdate);\r\n });\r\n let iOnly = newest.filter((item) => {\r\n return item.intellicare_tag === user_info.data.intellicareavega_tag;\r\n });\r\n let activeOnly = iOnly.filter((item) => {\r\n return item.isactive === true && item.status === \"A\";\r\n });\r\n setDelightsData(activeOnly);\r\n setTempData(activeOnly);\r\n setLoading(false);\r\n } else {\r\n addToast(resJSON.error_message, {\r\n appearance: \"error\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n setLoading(false);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n setLoading(false);\r\n }\r\n }\r\n async function getAllDelightsCategory() {\r\n try {\r\n setLoading(true);\r\n let delights = await fetch(Decrypt(API.GET_DELIGHTS_CATEGORY), {\r\n method: \"GET\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n },\r\n });\r\n let resJSON = await delights.json();\r\n if (resJSON) {\r\n let decrypted = resJSON.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n return newD;\r\n });\r\n let actvieOnly = decrypted.filter((item) => {\r\n return item.isactive === true;\r\n });\r\n setDelightsCategory(actvieOnly);\r\n setLoading(false);\r\n } else {\r\n addToast(resJSON.error_message, {\r\n appearance: \"error\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n setLoading(false);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n setLoading(false);\r\n }\r\n }\r\n async function sortToNewestDelights() {\r\n try {\r\n setLoading(true);\r\n setDelightsData([]);\r\n let newsletter = await fetch(Decrypt(API.GET_DELIGHTS), {\r\n method: \"GET\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n },\r\n });\r\n let resJSON = await newsletter.json();\r\n if (resJSON) {\r\n let decrypted = resJSON.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n return newD;\r\n });\r\n let newest = decrypted.sort(function (a, b) {\r\n return new Date(b.postdate) - new Date(a.postdate);\r\n });\r\n let iOnly = newest.filter((item) => {\r\n return item.intellicare_tag === user_info.data.intellicareavega_tag;\r\n });\r\n let activeOnly = iOnly.filter((item) => {\r\n return item.isactive === true && item.status === \"A\";\r\n });\r\n setDelightsData(activeOnly);\r\n setTempData(activeOnly);\r\n setLoading(false);\r\n } else {\r\n addToast(resJSON.error_message, {\r\n appearance: \"error\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n setLoading(false);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n setLoading(false);\r\n }\r\n }\r\n function toggleSortToNewest(e) {\r\n setNewsletterData([]);\r\n let sorted = tempData.sort(function (a, b) {\r\n if (e === \"newest\") {\r\n return new Date(b.newsdate) - new Date(a.newsdate);\r\n } else {\r\n return new Date(a.newsdate) - new Date(b.newsdate);\r\n }\r\n });\r\n setNewsletterData((prevNewsletter) => [...prevNewsletter, ...sorted]);\r\n }\r\n function toggleSortByCategory(e) {\r\n let sortByCategory = tempData.filter((data) => {\r\n if (e === \"all\") {\r\n return data;\r\n } else {\r\n return data.categoryname === e;\r\n }\r\n });\r\n setDelightsData(sortByCategory);\r\n }\r\n function toggleTabChange(key) {\r\n setKey(key);\r\n if (key === \"news\") {\r\n setNewsletterData([]);\r\n getAllNewsLetter();\r\n } else {\r\n setDelightsData([]);\r\n getAllDelights();\r\n getAllDelightsCategory();\r\n }\r\n }\r\n function search(str) {\r\n let searchedData = tempData.filter((item) => {\r\n const itemData = `${\r\n key === \"news\" ? item.title.toUpperCase() : item.storename.toUpperCase()\r\n }`;\r\n const textData = str.toUpperCase();\r\n return itemData.indexOf(textData) > -1;\r\n });\r\n if (key === \"news\") setNewsletterData(searchedData);\r\n else setDelightsData(searchedData);\r\n }\r\n function closeCreateNL() {\r\n setModalNewNL(!modalNewNL);\r\n }\r\n function closeCreateDelights() {\r\n setNewDelights(false);\r\n }\r\n\r\n if (!user_info) return null;\r\n return (\r\n
    \r\n \r\n {loading ? : null}\r\n
    \r\n toggleTabChange(key)}\r\n >\r\n \r\n Newsletter\r\n \r\n }\r\n key=\"news\"\r\n disabled={loading ? true : false}\r\n >\r\n \r\n \r\n
    \r\n setModalNewNL(true)}\r\n >\r\n ADD \r\n \r\n toggleSortToNewest(e)}\r\n disabled={loading ? true : false}\r\n >\r\n \r\n \r\n \r\n
    \r\n

    \r\n BE IN THE KNOW\r\n

    \r\n

    \r\n \r\n Keep tabs on breaking news, noteworthy activities, and\r\n announcements from\r\n {user_info.data.intellicareavega_tag === true\r\n ? \" Intellicare\"\r\n : \" Avega\"}\r\n \r\n

    \r\n {newsletterData.length === 0 && !loading && }\r\n {newsletterData.map((item) => (\r\n \r\n ))}\r\n
    \r\n
    \r\n \r\n {/* Delights */}\r\n \r\n {user_info.data.intellicareavega_tag\r\n ? \"Intellicare Delights\"\r\n : \"Avega Treats\"}\r\n \r\n }\r\n key=\"delights\"\r\n disabled={loading ? true : false}\r\n >\r\n \r\n \r\n
    \r\n setNewDelights(true)}\r\n >\r\n ADD \r\n \r\n toggleSortByCategory(e)}\r\n disabled={loading ? true : false}\r\n >\r\n \r\n {delightsCategory.map((category) => (\r\n \r\n {category.categoryname}\r\n \r\n ))}\r\n \r\n
    \r\n

    \r\n {user_info.data.intellicareavega_tag ? \"DELIGHTS\" : \"TREATS\"}\r\n

    \r\n

    \r\n \r\n Click the details to know about the promos and discounts you\r\n can enjoy. Don't forget to present your health card!\r\n \r\n

    \r\n {delightsData.length === 0 && !loading ? (\r\n \r\n ) : (\r\n \r\n {delightsData.map((data) => (\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","import React, { useState, useEffect } from \"react\";\r\nimport { Table, Modal, Input, Button, Select } from \"antd\";\r\nimport moment from \"moment\";\r\n\r\nimport LinearIndeterminate from \"../../LinearInderterminate\";\r\nimport NavBar from \"../NLNavBar\";\r\nimport Spinner from \"../Spinner\";\r\nimport * as NL_API from \"../../../util/live_api\";\r\nimport { Decrypt, Decrypt2, Encrypt2 } from \"../../../util/EncryptionHandler\";\r\n\r\nconst { Option } = Select;\r\nconst { Search } = Input;\r\nconst columns = [\r\n {\r\n title: \"Store Name\",\r\n dataIndex: \"storename\",\r\n key: \"storename\",\r\n },\r\n // {\r\n // title: \"Status\",\r\n // dataIndex: \"active\",\r\n // },\r\n {\r\n title: \"Posted Date\",\r\n dataIndex: \"posteddate\",\r\n },\r\n {\r\n title: \"Posted by\",\r\n dataIndex: \"postedby\",\r\n },\r\n {\r\n title: \"Edited Date\",\r\n dataIndex: \"editdate\",\r\n },\r\n {\r\n title: \"Edited by\",\r\n dataIndex: \"editedby\",\r\n },\r\n {\r\n dataIndex: \"delightstoreID\",\r\n className: \"hide\",\r\n },\r\n];\r\n\r\nexport default function Store() {\r\n let user_info = JSON.parse(localStorage.getItem(\"user_info\"));\r\n\r\n const [stores, setStores] = useState([]);\r\n const [temp, setTemp] = useState([]);\r\n const [details, setDetails] = useState({\r\n delightstoreid: \"\",\r\n storename: \"\",\r\n isactive: false,\r\n postedby: \"\",\r\n postdate: undefined,\r\n editby: \"\",\r\n });\r\n const [editeddate, setEditedDate] = useState(undefined);\r\n const [modal, setModal] = useState(false);\r\n const [newStore, setNewStore] = useState(false);\r\n const [loading, setLoading] = useState(false);\r\n const [modalLoading, setModalLoading] = React.useState(false);\r\n const [success, setSuccess] = React.useState(null);\r\n const [successMsg, setSuccessMsg] = React.useState(\"\");\r\n const [savingMsg, setSavingMsg] = React.useState(\"\");\r\n\r\n useEffect(() => {\r\n async function GetAllStores() {\r\n try {\r\n setLoading(true);\r\n let resp = await fetch(Decrypt(NL_API.GET_STORES), {\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n },\r\n });\r\n\r\n let respJson = await resp.json();\r\n if (respJson === \"Invalid Access Token\") {\r\n setLoading(false);\r\n } else {\r\n let decrypted = respJson.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n return newD;\r\n });\r\n setStores(decrypted);\r\n setTemp(decrypted);\r\n setLoading(false);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n setLoading(false);\r\n }\r\n }\r\n GetAllStores();\r\n }, [user_info.access_token]);\r\n async function GetAllStores() {\r\n try {\r\n setLoading(true);\r\n let resp = await fetch(Decrypt(NL_API.GET_STORES), {\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n },\r\n });\r\n\r\n let respJson = await resp.json();\r\n if (respJson === \"Invalid Access Token\") {\r\n setLoading(false);\r\n } else {\r\n let decrypted = respJson.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n return newD;\r\n });\r\n setStores(decrypted);\r\n setTemp(decrypted);\r\n setLoading(false);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n setLoading(false);\r\n }\r\n }\r\n function handleRowClick(record) {\r\n return {\r\n onClick: () => {\r\n setNewStore(false);\r\n setModal(true);\r\n setDetails({\r\n delightstoreid: record.delightstoreID,\r\n storename: record.storename,\r\n isactive: record.active,\r\n postedby: record.postedby,\r\n postdate: record.posteddate,\r\n editby: record.editedby,\r\n });\r\n setEditedDate(record.editdate);\r\n },\r\n };\r\n }\r\n function handleAddStoreOnClick() {\r\n setNewStore(true);\r\n setModal(true);\r\n setDetails({\r\n delightstoreid: \"\",\r\n storename: \"\",\r\n isactive: false,\r\n postedby: user_info.data.emailaddress,\r\n postdate: moment(new Date()).format(\"LL\"),\r\n editby: \"\",\r\n });\r\n }\r\n async function handleAddStore() {\r\n try {\r\n setModalLoading(true);\r\n setSuccess(null);\r\n setSavingMsg(\"Saving new store...\");\r\n let value = Encrypt2(details);\r\n let resp = await fetch(Decrypt(NL_API.ADD_STORE), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ value }),\r\n });\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText);\r\n if (respJson.is_success) {\r\n setSuccess(true);\r\n setSuccessMsg(\"New store has been added.\");\r\n } else {\r\n setSuccess(false);\r\n setSuccessMsg(respJson.error_message);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function handleEditStore() {\r\n try {\r\n setModalLoading(true);\r\n setSuccess(null);\r\n setSavingMsg(\"Saving changes...\");\r\n let value = Encrypt2({\r\n delightstoreid: details.delightstoreid,\r\n storename: details.storename,\r\n isactive: details.isactive,\r\n postedby: details.postedby,\r\n postdate: details.posteddate,\r\n editby: user_info.data.emailaddress,\r\n });\r\n let resp = await fetch(Decrypt(NL_API.UPDATE_STORE), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ value }),\r\n });\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText);\r\n if (respJson.is_success) {\r\n setSuccess(true);\r\n setSuccessMsg(\"Store Successfully Updated\");\r\n } else {\r\n setSuccess(false);\r\n setSuccessMsg(respJson.error_message);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n function closeSpinner() {\r\n setModalLoading(false);\r\n if (success === true) {\r\n setModal(false);\r\n setLoading(false);\r\n GetAllStores();\r\n }\r\n }\r\n function search(str) {\r\n let searchedData = temp.filter((item) => {\r\n const itemData = `${item.storename.toUpperCase()}`;\r\n const textData = str.toUpperCase();\r\n return itemData.indexOf(textData) > -1;\r\n });\r\n setStores(searchedData);\r\n }\r\n\r\n return (\r\n
    \r\n {loading ? : null}\r\n
    \r\n
    \r\n handleAddStoreOnClick()}\r\n >\r\n Add Store\r\n \r\n search(e.target.value)}\r\n allowClear\r\n />\r\n
    \r\n \r\n 0 ? stores : null}\r\n columns={columns}\r\n onRow={handleRowClick}\r\n rowKey=\"delightstoreid\"\r\n style={{ paddingTop: 10, overflow: \"scroll\" }}\r\n loading={loading}\r\n size=\"middle\"\r\n />\r\n
    \r\n (newStore ? handleAddStore() : handleEditStore())}\r\n >\r\n Save\r\n ,\r\n ,\r\n ]}\r\n >\r\n
    \r\n \r\n {\r\n const val = e.target.value;\r\n setDetails((prevState) => {\r\n return { ...prevState, storename: val };\r\n });\r\n }}\r\n style={{ marginBottom: 5 }}\r\n />\r\n
    \r\n \r\n \r\n setDetails((prevState) => {\r\n return { ...prevState, isactive: 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 {newStore ? null : (\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","import React, { useState, useEffect } from \"react\";\r\nimport { Table, Modal, Input, Button, Select } from \"antd\";\r\nimport moment from \"moment\";\r\n\r\nimport LinearIndeterminate from \"../../LinearInderterminate\";\r\nimport NavBar from \"../NLNavBar\";\r\nimport Spinner from \"../Spinner\";\r\nimport * as NL_API from \"../../../util/live_api\";\r\nimport { Decrypt, Decrypt2, Encrypt2 } from \"../../../util/EncryptionHandler\";\r\n\r\nconst { Option } = Select;\r\nconst { Search } = Input;\r\nconst columns = [\r\n {\r\n title: \"Category Name\",\r\n dataIndex: \"categoryname\",\r\n key: \"categoryname\",\r\n },\r\n // {\r\n // title: \"Status\",\r\n // dataIndex: \"isactive\",\r\n // },\r\n {\r\n title: \"Posted Date\",\r\n dataIndex: \"posteddate\",\r\n },\r\n {\r\n title: \"Posted by\",\r\n dataIndex: \"postedby\",\r\n },\r\n {\r\n title: \"Edited Date\",\r\n dataIndex: \"editdate\",\r\n },\r\n {\r\n title: \"Edited by\",\r\n dataIndex: \"editedby\",\r\n },\r\n {\r\n dataIndex: \"delightcategoryID\",\r\n className: \"hide\",\r\n },\r\n];\r\n\r\nexport default function Category() {\r\n let user_info = JSON.parse(localStorage.getItem(\"user_info\"));\r\n\r\n const [category, setCategory] = useState([]);\r\n const [temp, setTemp] = useState([]);\r\n const [details, setDetails] = useState({\r\n delightcategoryID: \"\",\r\n categoryname: \"\",\r\n isactive: false,\r\n postedby: \"\",\r\n postdate: undefined,\r\n editby: \"\",\r\n });\r\n const [editeddate, setEditedDate] = useState(undefined);\r\n const [modal, setModal] = useState(false);\r\n const [newStore, setNewStore] = useState(false);\r\n const [loading, setLoading] = useState(false);\r\n const [modalLoading, setModalLoading] = React.useState(false);\r\n const [success, setSuccess] = React.useState(null);\r\n const [successMsg, setSuccessMsg] = React.useState(\"\");\r\n const [savingMsg, setSavingMsg] = React.useState(\"\");\r\n\r\n useEffect(() => {\r\n async function GetAllCategory() {\r\n try {\r\n setLoading(true);\r\n let resp = await fetch(Decrypt(NL_API.GET_DELIGHTS_CATEGORY), {\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n },\r\n });\r\n\r\n let respJson = await resp.json();\r\n if (respJson === \"Invalid Access Token\") {\r\n setLoading(false);\r\n } else {\r\n setCategory(respJson.data);\r\n setLoading(false);\r\n }\r\n if (respJson) {\r\n let decrypted = respJson.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n return newD;\r\n });\r\n setCategory(decrypted);\r\n setTemp(decrypted);\r\n setLoading(false);\r\n } else {\r\n setLoading(false);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n setLoading(false);\r\n }\r\n }\r\n GetAllCategory();\r\n }, [user_info.access_token]);\r\n async function GetAllCategory() {\r\n try {\r\n setLoading(true);\r\n let resp = await fetch(Decrypt(NL_API.GET_DELIGHTS_CATEGORY), {\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n },\r\n });\r\n\r\n let respJson = await resp.json();\r\n if (respJson === \"Invalid Access Token\") {\r\n setLoading(false);\r\n } else {\r\n setCategory(respJson.data);\r\n setLoading(false);\r\n }\r\n if (respJson) {\r\n let decrypted = respJson.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n return newD;\r\n });\r\n setCategory(decrypted);\r\n setTemp(decrypted);\r\n setLoading(false);\r\n } else {\r\n setLoading(false);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n setLoading(false);\r\n }\r\n }\r\n function handleRowClick(record) {\r\n return {\r\n onClick: () => {\r\n setNewStore(false);\r\n setModal(true);\r\n setDetails({\r\n delightcategoryID: record.delightcategoryID,\r\n categoryname: record.categoryname,\r\n isactive: record.isactive,\r\n postedby: record.postedby,\r\n postdate: record.posteddate,\r\n editby: record.editedby,\r\n });\r\n setEditedDate(record.editdate);\r\n },\r\n };\r\n }\r\n function handleAddCategoryOnClick() {\r\n setNewStore(true);\r\n setModal(true);\r\n setDetails({\r\n delightcategoryID: \"\",\r\n categoryname: \"\",\r\n isactive: false,\r\n postedby: user_info.data.emailaddress,\r\n postdate: moment(new Date()).format(\"LL\"),\r\n editby: \"\",\r\n });\r\n }\r\n async function handleAddCategory() {\r\n try {\r\n setModalLoading(true);\r\n setSuccess(null);\r\n setSavingMsg(\"Saving new category...\");\r\n let value = Encrypt2(details);\r\n let resp = await fetch(Decrypt(NL_API.ADD_CATEGORY), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ value }),\r\n });\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText);\r\n if (respJson.is_success) {\r\n setSuccess(true);\r\n setSuccessMsg(\"New category has been added.\");\r\n } else {\r\n setSuccess(false);\r\n setSuccessMsg(respJson.error_message);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function handleEditCategory() {\r\n try {\r\n setModalLoading(true);\r\n setSuccess(null);\r\n setSavingMsg(\"Saving changes...\");\r\n let value = Encrypt2({\r\n delightcategoryID: details.delightcategoryID,\r\n categoryname: details.categoryname,\r\n isactive: details.isactive,\r\n postedby: details.postedby,\r\n postdate: details.postdate,\r\n editby: user_info.data.emailaddress,\r\n });\r\n let resp = await fetch(Decrypt(NL_API.UPDATE_CATEGORY), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n value,\r\n }),\r\n });\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText);\r\n if (respJson.is_success) {\r\n setSuccess(true);\r\n setSuccessMsg(\"Category Successfully Updated\");\r\n } else {\r\n setSuccess(false);\r\n setSuccessMsg(respJson.error_message);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n function closeSpinner() {\r\n setModalLoading(false);\r\n if (success === true) {\r\n setModal(false);\r\n setLoading(false);\r\n GetAllCategory();\r\n }\r\n }\r\n function search(str) {\r\n let searchedData = temp.filter((item) => {\r\n const itemData = `${item.categoryname.toUpperCase()}`;\r\n const textData = str.toUpperCase();\r\n return itemData.indexOf(textData) > -1;\r\n });\r\n setCategory(searchedData);\r\n }\r\n\r\n return (\r\n
    \r\n {loading ? : null}\r\n
    \r\n
    \r\n handleAddCategoryOnClick()}\r\n >\r\n Add Category\r\n \r\n search(e.target.value)}\r\n allowClear\r\n />\r\n
    \r\n \r\n \r\n
    \r\n \r\n newStore ? handleAddCategory() : handleEditCategory()\r\n }\r\n >\r\n Save\r\n ,\r\n ,\r\n ]}\r\n >\r\n
    \r\n \r\n {\r\n const val = e.target.value;\r\n setDetails((prevState) => {\r\n return { ...prevState, categoryname: val };\r\n });\r\n }}\r\n style={{ marginBottom: 5 }}\r\n />\r\n
    \r\n \r\n \r\n setDetails((prevState) => {\r\n return { ...prevState, isactive: 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 {newStore ? null : (\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","import React, { useEffect, useState } from \"react\";\r\nimport {\r\n MDBModal,\r\n MDBModalBody,\r\n MDBModalFooter,\r\n MDBModalHeader,\r\n MDBBtn,\r\n MDBRow,\r\n MDBCol,\r\n MDBView,\r\n MDBIcon,\r\n} from \"mdbreact\";\r\nimport TextField from \"@material-ui/core/TextField\";\r\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\r\n// import Lightbox from \"react-image-lightbox\";\r\nimport moment from \"moment\";\r\nimport DataTable from \"react-data-table-component\";\r\nimport LinearIndeterminate from \"../LinearInderterminate\";\r\nimport { useToasts } from \"react-toast-notifications\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { confirmAlert } from \"react-confirm-alert\";\r\nimport \"react-confirm-alert/src/react-confirm-alert.css\"; // Import css\r\nimport {\r\n Menu,\r\n Icon,\r\n Select,\r\n Modal,\r\n Button,\r\n DatePicker,\r\n message,\r\n} from \"antd\";\r\nimport Viewer from \"react-viewer\";\r\n\r\n//apis\r\nimport * as API from \"../../util/live_api\";\r\nimport {\r\n Decrypt,\r\n Decrypt2,\r\n EncryptHeader,\r\n Encrypt2,\r\n ImgEncrypt,\r\n} from \"../../util/EncryptionHandler\";\r\n\r\nimport ExportFile from \"../ExportFile\";\r\n\r\nconst { Option } = Select;\r\n\r\nexport default function Dashboard() {\r\n let user_info = JSON.parse(localStorage.getItem(\"user_info\"));\r\n let history = useHistory();\r\n if (user_info.data.department === \"MIS TECH\") {\r\n history.push(\"/users\");\r\n }\r\n if (!sessionStorage.getItem(\"logged_in\")) {\r\n localStorage.removeItem(\"user_info\");\r\n localStorage.removeItem(\"current_pw\");\r\n history.push(\"/\");\r\n }\r\n\r\n document.title = \"Doctor's Portal - Dashboard\";\r\n\r\n const { addToast, removeToast } = useToasts();\r\n const [data, setData] = useState([]);\r\n const [tempData, setTempData] = useState([]);\r\n const [approvalDocHistoryMonthly, setApprovalHistoryMonthly] = useState([]);\r\n const [AllApprovalHistory, setAllApprovalHistory] = useState([]);\r\n const [tempHistory, setTempHistory] = useState([]);\r\n const [ReapporoveSearchValue, setReapproveSearchValue] = useState([]);\r\n const [searchTempData, setsearchTempData] = useState([]);\r\n const [modal, setModal] = useState(false);\r\n const [modCardWarn, setmodCardWarn] = useState(false);\r\n const [request, setRequest] = useState({});\r\n const [photoIndex, setPhotoIndex] = useState(0);\r\n const [isOpen, setIsOpen] = useState(false);\r\n const [modDisapprove, setModDisapprove] = useState(false);\r\n const [disapproveRemarks, setDisapproveRemarks] = useState(\"\");\r\n const [disapproveMessage, setDisapproveMessage] = useState(\"\");\r\n const [selfie, setSelfie] = useState(\"\");\r\n const [prcid, setPrcid] = useState(\"\");\r\n const [images, setImages] = useState([]);\r\n const [imgLoad, setImgLoad] = useState(false);\r\n const [reason, setReason] = useState([]);\r\n const [lstReasons, setLstReasons] = useState([]);\r\n const [current, setCurrent] = useState(\"pending\");\r\n const [filterNumTo, setFilterNumTo] = useState(0);\r\n const [filterNumFrom, setFilterNumFrom] = useState(0);\r\n const [startDate, setStartDate] = useState(\"\");\r\n const [loading] = useState(false);\r\n const [clicked, setClicked] = useState(\"Approve\");\r\n const [fetching, setFetching] = useState(false);\r\n const [historyFetching, setHistoryFetching] = useState(false);\r\n const [reappNotif, setReappNotif] = useState(null);\r\n const [warningTime] = useState(15 * 60 * 1000);\r\n const [logoutTime] = useState(10 * 1000);\r\n let multipleReason = [];\r\n let warnTimeout;\r\n let logoutTimeout;\r\n let toastId;\r\n\r\n const columns = [\r\n {\r\n selector: \"Docuser_ID\",\r\n hide: 99999999,\r\n },\r\n {\r\n name: \"Counter\",\r\n selector: \"incremental_id\",\r\n maxWidth: \"0px\",\r\n },\r\n {\r\n name: \"Email Address\",\r\n selector: \"Email\",\r\n width: \"180px\",\r\n },\r\n {\r\n name: \"Full Name\",\r\n selector: \"fullname\",\r\n width: \"180px\",\r\n },\r\n {\r\n name: \"Birthdate\",\r\n selector: \"Birthdate\",\r\n },\r\n {\r\n name: \"Gender\",\r\n selector: \"doc_gender\",\r\n },\r\n {\r\n name: \"PRC number\",\r\n selector: \"PRCnumber\",\r\n width: \"150px\",\r\n },\r\n {\r\n name: \"Type\",\r\n selector: \"DrType\",\r\n },\r\n {\r\n name: \"Mobile Number\",\r\n selector: \"Contactno\",\r\n },\r\n {\r\n name: \"Role\",\r\n selector: \"role\",\r\n },\r\n ];\r\n const columnApproval = [\r\n {\r\n selector: \"Docuser_ID\",\r\n hide: 99999999,\r\n },\r\n // {\r\n // name: \"Counter\",\r\n // selector: \"increment_id\",\r\n // maxWidth: \"0px\",\r\n // },\r\n {\r\n name: \"Email Address\",\r\n selector: \"Email\",\r\n width: \"180px\",\r\n },\r\n {\r\n name: \"Full Name\",\r\n selector: \"fullname\",\r\n width: \"180px\",\r\n },\r\n {\r\n name: \"Birthdate\",\r\n selector: \"Birthdate\",\r\n },\r\n {\r\n name: \"Gender\",\r\n selector: \"doc_gender\",\r\n },\r\n {\r\n name: \"PRC number\",\r\n selector: \"PRCnumber\",\r\n width: \"150px\",\r\n },\r\n {\r\n name: \"Type\",\r\n selector: \"DrType\",\r\n },\r\n {\r\n name: \"Telephone Number\",\r\n selector: \"Telephone\",\r\n },\r\n {\r\n name: \"Mobile Number\",\r\n selector: \"Contactno\",\r\n },\r\n {\r\n name: \"Approved Date\",\r\n selector: \"Approveddate\",\r\n },\r\n {\r\n name: \"Approved By\",\r\n selector: \"Approvedby\",\r\n },\r\n {\r\n name: \"Role\",\r\n selector: \"role\",\r\n },\r\n ];\r\n const options = {\r\n message:\r\n clicked === \"Approve\"\r\n ? \"Please Confirm Application Approval\"\r\n : \"Please Confirm Application Disapproval\",\r\n buttons: [\r\n {\r\n label: \"Confirm\",\r\n onClick:\r\n clicked === \"Approve\" && current === \"pending\"\r\n ? handleApproveApplication\r\n : handleConfirmDisapproveApplication,\r\n },\r\n {\r\n label: \"Cancel\",\r\n onClick: () => setModal(true),\r\n },\r\n ],\r\n closeOnEscape: false,\r\n closeOnClickOutside: false,\r\n willUnmount: () => {},\r\n };\r\n function warn() {\r\n document.title = \"Logging Out...\";\r\n setModal(false);\r\n setModDisapprove(false);\r\n setIsOpen(false);\r\n addToast(\r\n \"You are about to logout in \" +\r\n logoutTime / 1000 +\r\n \" seconds due to inactivity.\",\r\n {\r\n appearance: \"warning\",\r\n autoDismiss: true,\r\n autoDismissTimeout: logoutTime,\r\n },\r\n (id) => {\r\n toastId = id;\r\n }\r\n );\r\n }\r\n function handleNavigate(e) {\r\n setCurrent(e.key);\r\n if (e.key === \"history\") GetApprovalHistoryMonthly();\r\n else GetApprovalRequests();\r\n }\r\n function logout() {\r\n localStorage.removeItem(\"user_info\");\r\n localStorage.removeItem(\"current_pw\");\r\n history.push(\"/\");\r\n }\r\n function setTimeouts() {\r\n warnTimeout = setTimeout(warn, warningTime);\r\n logoutTimeout = setTimeout(logout, warningTime + logoutTime);\r\n }\r\n function clearTimeouts() {\r\n if (warnTimeout) clearTimeout(warnTimeout);\r\n if (logout) clearTimeout(logoutTimeout);\r\n }\r\n function resetTimeout() {\r\n document.title = \"Intellicare Admin - Dashboard\";\r\n removeToast(toastId);\r\n clearTimeouts();\r\n setTimeouts();\r\n }\r\n useEffect(() => {\r\n GetApprovalRequests();\r\n GetDisapproveRemarks();\r\n approvalDoctorHistory();\r\n const events = [\r\n \"load\",\r\n \"mousemove\",\r\n \"mousedown\",\r\n \"click\",\r\n \"scroll\",\r\n \"keypress\",\r\n ];\r\n\r\n for (let i in events) window.addEventListener(events[i], resetTimeout);\r\n\r\n setTimeouts();\r\n return () => {\r\n for (let i in events) {\r\n window.removeEventListener(events[i], resetTimeout);\r\n clearTimeouts();\r\n }\r\n };\r\n }, []);\r\n async function GetApprovalRequests() {\r\n setFetching(true);\r\n try {\r\n let resp = await fetch(Decrypt(API.DOCTORSAPP_FOR_APPROVAL), {\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n }); \r\n let respJson = await resp.json();\r\n if (respJson.data) {\r\n let decrypted = respJson.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n return newD;\r\n });\r\n\r\n for (let data of decrypted) {\r\n data.fullname = toTitleCase(\r\n data[\"Lastname\"] +\r\n \", \" +\r\n data[\"Firstname\"] +\r\n \" \" +\r\n data[\"MidName\"]\r\n );\r\n data.doc_gender =\r\n data[\"Gender\"].toUpperCase() === \"M\" ? \"Male\" : \"Female\";\r\n }\r\n \r\n setData(decrypted);\r\n setTempData(decrypted);\r\n } else {\r\n setData([]);\r\n setTempData([]);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n setFetching(false);\r\n }\r\n async function GetApprovalHistoryMonthly() {\r\n setHistoryFetching(true);\r\n try {\r\n let resp = await fetch(Decrypt(API.DOCTORSAPP_APPROVAL_HISTORY_MONTHLY), {\r\n method: \"GET\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n },\r\n });\r\n let respJson = await resp.json();\r\n if (respJson.data) {\r\n let decrypted = respJson.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n return newD;\r\n });\r\n for (let data of decrypted) {\r\n data.fullname = toTitleCase(\r\n data[\"Lastname\"] +\r\n \", \" +\r\n data[\"Firstname\"] +\r\n \" \" +\r\n data[\"MidName\"]\r\n );\r\n data.doc_gender = data[\"Gender\"].toUpperCase() === \"M\" ? \"Male\" : \"Female\";\r\n data.stats =\r\n data[\"RegStatus\"] === \"A\"\r\n ? \"Approved\"\r\n : data[\"RegStatus\"] === \"D\"\r\n ? \"Disapproved\"\r\n : \"Waiting\";\r\n }\r\n setApprovalHistoryMonthly(decrypted);\r\n setTempHistory(decrypted);\r\n\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n setHistoryFetching(false);\r\n }\r\n\r\n async function GetDisapproveRemarks() {\r\n\r\n try {\r\n let resp = await fetch(Decrypt(API.DOCTORSAPP_DISAPPROVE_REMARKS), {\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n },\r\n });\r\n let respJson = await resp.json();\r\n\r\n if(respJson.data){\r\n let decrypted = respJson.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n return newD;\r\n });\r\n setLstReasons(decrypted);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function approvalDoctorHistory() {\r\n setHistoryFetching(true);\r\n try {\r\n let resp = await fetch(Decrypt(API.DOCTORSAPP_APPROVAL_HISTORY), {\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n },\r\n });\r\n let respJson = await resp.json();\r\n if (respJson.data) {\r\n let decrypted = respJson.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n return newD;\r\n });\r\n \r\n for (let data of decrypted) {\r\n data.fullname = toTitleCase(\r\n data[\"Lastname\"] +\r\n \", \" +\r\n data[\"Firstname\"] +\r\n \" \" +\r\n data[\"MidName\"]\r\n );\r\n data.gender = data[\"Gender\"].toUpperCase() === \"M\" ? \"Male\" : \"Female\";\r\n data.stats =\r\n data[\"RegStatus\"] === \"A\"\r\n ? \"Approved\"\r\n : data[\"RegStatus\"] === \"D\"\r\n ? \"Disapproved\"\r\n : \"Waiting\";\r\n }\r\n \r\n let all = decrypted.filter((all) => {\r\n return all.is_reapprove === false;\r\n });\r\n setAllApprovalHistory(decrypted);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n setHistoryFetching(false);\r\n }\r\n async function ApprovalHistory_AdvanceSearch(SeachValue) {\r\n setHistoryFetching(true);\r\n try {\r\n let TextValue = EncryptHeader(SeachValue);\r\n let resp = await fetch(Decrypt(API.DOCTORSAPP_APPROVAL_HISTORY_SEARCH), {\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n SEARCHTEXT: TextValue,\r\n },\r\n });\r\n let respJson = await resp.json();\r\n if (respJson.data) {\r\n let decrypted = respJson.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n return newD;\r\n });\r\n\r\n for (let data of decrypted) {\r\n data.fullname = toTitleCase(\r\n data[\"Lastname\"] +\r\n \", \" +\r\n data[\"Firstname\"] +\r\n \" \" +\r\n data[\"MidName\"]\r\n );\r\n data.gnder = data[\"Gender\"].toUpperCase() === \"M\" ? \"Male\" : \"Female\";\r\n data.stats =\r\n data[\"RegStatus\"] === \"A\"\r\n ? \"Approved\"\r\n : data[\"RegStatus\"] === \"D\"\r\n ? \"Disapproved\"\r\n : \"Waiting\";\r\n }\r\n setApprovalHistoryMonthly(decrypted);\r\n setTempHistory(decrypted);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n setHistoryFetching(false);\r\n }\r\n\r\n function handleOnSelectRow(e) {\r\n \r\n setRequest({\r\n Approvedby : e.Approvedby,\r\n Approveddate : e.Approveddate,\r\n email: e.Email,\r\n fullname: e.fullname,\r\n birthdate: e.Birthdate,\r\n doc_gender: e.doc_gender,\r\n prcnumber: e.PRCnumber,\r\n drtype: e.DrType,\r\n doc_code: e.DrCode,\r\n mobilenumber: e.Contactno,\r\n status: e.RegStatus,\r\n Docuser_ID: e.Docuser_ID,\r\n role: e.role,\r\n bankacct : e.bankacct,\r\n swiftcode : e.swiftcode,\r\n });\r\n setSelfie(null);\r\n setPrcid(null);\r\n setImages([]);\r\n setDisapproveRemarks(\"\");\r\n setClicked(\"Approve\");\r\n getUploadedFiles(e.Docuser_ID)\r\n setModal(true);\r\n }\r\n async function getUploadedFiles(docId) {\r\n try {\r\n setImgLoad(true);\r\n let Value = Encrypt2({ doctor_id: docId, file_type: \"\" });\r\n let resp = await fetch(Decrypt(API.DOCTORSAPP_GETFILES), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ Value }),\r\n });\r\n let respJson = await resp.json();\r\n let filesHolder;\r\n if (respJson.error_message === \"No Uploaded Files Found!\") {\r\n setImgLoad(false);\r\n }\r\n let files = respJson.data.map((data) => {\r\n return Decrypt2(data);\r\n });\r\n filesHolder = files;\r\n let selfie = filesHolder.filter((data) => {\r\n return data.tag === \"selfie\";\r\n });\r\n selfie.forEach((element) => {\r\n renderImg(element.path, element.tag);\r\n });\r\n let prc_id = filesHolder.filter((data) => {\r\n return data.tag === \"prc_id\";\r\n });\r\n prc_id.forEach((element) => {\r\n renderImg(element.path, element.tag);\r\n });\r\n } catch (error) {\r\n alert(\"Internal Server Error\");\r\n console.log(error);\r\n }\r\n }\r\n async function renderImg(path, tag) {\r\n try {\r\n let ImagePath = ImgEncrypt(path);\r\n let resp = await fetch(Decrypt(API.DOCTORSAPP_GETIMAGE), {\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n Authorization: \"bearer \" + user_info.access_token,\r\n ImagePath,\r\n },\r\n });\r\n let respBlob = await resp.blob();\r\n let reader = new FileReader();\r\n reader.readAsDataURL(respBlob);\r\n reader.onload = () => {\r\n if (tag === \"selfie\") setSelfie(reader.result);\r\n else if (tag === \"prc_id\") setPrcid(reader.result);\r\n setImages((oldArray) => [...oldArray, reader.result]);\r\n setImgLoad(false);\r\n };\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n function toggleModal() {\r\n setModal(!modal);\r\n }\r\n function toggleModDisapprove() {\r\n setDisapproveRemarks(\"\");\r\n setDisapproveMessage(\"\");\r\n setModDisapprove(!modDisapprove);\r\n }\r\n function Confirm() {\r\n setModDisapprove(false);\r\n setModal(false);\r\n setReason([]);\r\n confirmAlert(options);\r\n }\r\n async function handleApproveApplication() {\r\n try {\r\n let Value = Encrypt2({\r\n DOCUSER_ID: request.Docuser_ID,\r\n approved_by: user_info.data.username,\r\n email: request.email,\r\n fullname: request.fullname,\r\n prcnumber: request.prcnumber,\r\n reapprove_notification: 0,\r\n remarks: \"Approved\",\r\n status: \"A\",\r\n });\r\n let resp = await fetch(Decrypt(API.DOCTORSAPP_APPROVE_APPLICATION), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n Value,\r\n }),\r\n });\r\n\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText);\r\n if (respJson.success) {\r\n try {\r\n let Value = Encrypt2({\r\n drcode: request.doc_code,\r\n swiftcode: request.swiftcode,\r\n bankacct: request.bankacct,\r\n postedby: user_info.data.emailaddress,\r\n email: request.email,\r\n });\r\n let resp = await fetch(Decrypt(API.INSERT_BANK_RECORDS), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n Value,\r\n }),\r\n });\r\n \r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText);\r\n\r\n if (respJson.is_success) {\r\n addToast(\"Application Successfully Approved!\", {\r\n appearance: \"success\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n }\r\n } catch (error) {\r\n alert(\"Saving bank account details failed.\");\r\n }\r\n } else {\r\n addToast(respJson.message, {\r\n appearance: \"error\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n }\r\n toggleModal();\r\n GetApprovalRequests();\r\n } catch (error) {\r\n console.log(error);\r\n alert(\"Internal Server Error\");\r\n }\r\n }\r\n async function handleDisapproveApplication(e) {\r\n e.preventDefault();\r\n e.target.className += \" was-validated\";\r\n\r\n if (reason.lenght === 0) {\r\n setDisapproveMessage(\"Required!\");\r\n return;\r\n }\r\n setClicked(\"Disapprove\");\r\n if (reason.length > 1) {\r\n reason.forEach((element) => {\r\n multipleReason = multipleReason.concat(\r\n element.toString().slice(0, element.toString().length - 1)\r\n );\r\n });\r\n }\r\n Confirm();\r\n }\r\n async function handleConfirmDisapproveApplication() {\r\n try {\r\n let Value = Encrypt2({\r\n DOCUSER_ID: request.Docuser_ID,\r\n approved_by: user_info.data.username,\r\n email: request.email,\r\n fullname: request.fullname,\r\n prcnumber: request.prcnumber,\r\n reapprove_notification: reason.length > 1 ? 0 : reappNotif,\r\n remarks:\r\n disapproveRemarks.trim() === \"\"\r\n ? reason.length > 1\r\n ? multipleReason.toString().trim()\r\n : reason.toString().slice(0, reason.toString().length - 1)\r\n : reason.length > 1\r\n ? multipleReason.toString().trim() + \", \" + disapproveRemarks\r\n : reason.toString().slice(0, reason.toString().length - 1) +\r\n \", \" +\r\n disapproveRemarks,\r\n status: \"D\",\r\n });\r\n let resp = await fetch(Decrypt(API.DOCTORSAPP_APPROVE_APPLICATION), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n Value,\r\n }),\r\n });\r\n\r\n let respText = await resp.text();\r\n let respJson = await Decrypt2(respText.replace(/\"/g, \"\"));\r\n if (respJson.success)\r\n addToast(\"Application Successfully Disapproved!\", {\r\n appearance: \"success\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n else\r\n addToast(respJson.message, {\r\n appearance: \"error\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n toggleModDisapprove();\r\n GetApprovalRequests();\r\n } catch (error) {\r\n alert(\"Internal Server Error\");\r\n console.log(error);\r\n }\r\n }\r\n function NoDataFound() {\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {current === \"history\" ? (\r\n

    No Approval History Right Now

    \r\n ) : (\r\n

    No Pending Requests Right Now

    \r\n )}\r\n
    \r\n
    \r\n );\r\n }\r\n function renderStatus(status) {\r\n if (current === \"history\") {\r\n if (status === \"W\")\r\n return (\r\n \r\n {\" - \"}\r\n WAITING\r\n \r\n );\r\n else if (status === \"A\")\r\n return (\r\n \r\n {\" - \"}\r\n APPROVED\r\n \r\n );\r\n else\r\n return (\r\n \r\n {\" - \"}\r\n DISAPPROVED\r\n \r\n );\r\n } else return null;\r\n }\r\n function FilterHistory(status) {\r\n if (status === \"None\") setApprovalHistoryMonthly(tempHistory);\r\n else if (status === \"Approved\") {\r\n let filterApprove = tempHistory.filter((data) => {\r\n return data.stats === \"Approved\";\r\n });\r\n setApprovalHistoryMonthly(filterApprove);\r\n } else {\r\n let filterDisapprove = tempHistory.filter((data) => {\r\n return data.stats === \"Disapproved\";\r\n });\r\n setApprovalHistoryMonthly(filterDisapprove);\r\n }\r\n }\r\n function Filter(date, numFrom, numTo) {\r\n if (date === \"\") return message.warning(\"Please select date\", 2);\r\n let ref = date.replace(\"-\", \"\");\r\n let newref = ref.replace(\"-20\", \"\");\r\n let filtered_date = tempData.filter((item) => {\r\n const itemData = `${item.incremental_id.toUpperCase()}`;\r\n const textData = newref.toUpperCase();\r\n return itemData.indexOf(textData) > -1;\r\n });\r\n for (let data of filtered_date) {\r\n data.counter = convertToNumber(data.incremental_id);\r\n }\r\n if (numFrom > numTo) {\r\n return alert(\"Invalid filter number range!\");\r\n }\r\n if (numFrom === 0 && numTo === 0) {\r\n setData(filtered_date);\r\n } else {\r\n let filtered_num = filtered_date.filter((item) => {\r\n return item.counter >= numFrom && item.counter <= numTo;\r\n });\r\n setData(filtered_num);\r\n }\r\n }\r\n function SearchData(text) {\r\n \r\n if (current === \"pending\") {\r\n setsearchTempData(tempData);\r\n } else {\r\n setsearchTempData(tempHistory);\r\n }\r\n \r\n let searchedData = searchTempData.filter((item) => {\r\n const itemData = `${item.fullname.toUpperCase()} ${item.PRCnumber}`;\r\n const textData = text.toUpperCase();\r\n return itemData.indexOf(textData) > -1;\r\n });\r\n if (current === \"pending\") {\r\n setData(searchedData);\r\n } else {\r\n setApprovalHistoryMonthly(searchedData);\r\n }\r\n }\r\n function menuDataTable(current_menu) {\r\n switch (current_menu) {\r\n case \"pending\":\r\n return (\r\n }\r\n noDataComponent={NoDataFound()}\r\n persistTableHead\r\n />\r\n );\r\n case \"history\":\r\n \r\n return (\r\n
    \r\n }\r\n noDataComponent={NoDataFound()}\r\n persistTableHead\r\n actions={\r\n \r\n }\r\n />\r\n
    \r\n );\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n {/* Comment this portion if live api */}\r\n {/* \r\n
    */}\r\n {/* Comment this portion if live api */}\r\n \r\n \r\n \r\n Pending Requests\r\n \r\n \r\n \r\n Approval History\r\n \r\n \r\n {current === \"history\" ? (\r\n
    \r\n
    \r\n Filter: \r\n FilterHistory(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 onChange={(e) => {\r\n SearchData(e.target.value);\r\n }}\r\n />\r\n
    \r\n
    \r\n \r\n \r\n \r\n ),\r\n }}\r\n onChange={(e) =>\r\n e.target.value === \"\"\r\n ? GetApprovalHistoryMonthly()\r\n : setReapproveSearchValue(e.target.value)\r\n }\r\n />\r\n \r\n ApprovalHistory_AdvanceSearch(ReapporoveSearchValue)\r\n }\r\n color=\"primary\"\r\n size=\"sm\"\r\n loading={loading}\r\n >\r\n Proceed\r\n \r\n
    \r\n
    \r\n ) : null}\r\n {current === \"pending\" ? (\r\n
    \r\n
    \r\n Filter: \r\n setStartDate(dateString)}\r\n />\r\n setFilterNumFrom(e.target.value.trim())}\r\n />\r\n \r\n setFilterNumTo(e.target.value.trim())}\r\n />\r\n Filter(startDate, filterNumFrom, filterNumTo)}\r\n color=\"primary\"\r\n size=\"sm\"\r\n style={{ height: 29 }}\r\n >\r\n Search\r\n \r\n {\r\n setData(tempData);\r\n setFilterNumFrom(0);\r\n setFilterNumTo(0);\r\n }}\r\n color=\"primary\"\r\n size=\"sm\"\r\n style={{ height: 29 }}\r\n >\r\n Reset\r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n ),\r\n }}\r\n style={{ marginLeft: 20 }}\r\n onChange={(e) => SearchData(e.target.value)}\r\n />\r\n
    \r\n
    \r\n ) : null}\r\n {menuDataTable(current)}\r\n\r\n \r\n \r\n {request.fullname}\r\n {current === \"pending\" ? (\r\n \r\n {toTitleCase(\" - \" + request.drtype)}\r\n \r\n ) : null}\r\n \r\n {renderStatus(request.status)}{\" \"}\r\n \r\n {current === \"history\" && request.status !== \"Waiting\" ? (\r\n \r\n {\" \"}\r\n by {request.Approvedby} at {request.Approveddate}\r\n \r\n ) : null}\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\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\n {request.status === \"Disapproved\" ? (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : null}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {selfie ? (\r\n {\r\n setPhotoIndex(\r\n images.findIndex((img) => img === selfie)\r\n );\r\n toggleModal();\r\n setIsOpen(true);\r\n }}\r\n >\r\n \r\n \r\n ) : selfie === null && !imgLoad ? (\r\n
    \r\n No Uploaded Files Found!\r\n
    \r\n ) : (\r\n
    \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {prcid ? (\r\n {\r\n setPhotoIndex(\r\n images.findIndex((img) => img === prcid)\r\n );\r\n toggleModal();\r\n setIsOpen(true);\r\n }}\r\n >\r\n \r\n \r\n ) : prcid === null && !imgLoad ? (\r\n
    \r\n No Uploaded Files Found!\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 Close\r\n \r\n {current === \"pending\" ? (\r\n
    \r\n {\r\n toggleModal();\r\n toggleModDisapprove();\r\n setReason(\"\");\r\n setClicked(\"Disapprove\");\r\n }}\r\n >\r\n Disapprove\r\n \r\n {\r\n setClicked(\"Approve\");\r\n Confirm();\r\n }}\r\n >\r\n Approve\r\n \r\n
    \r\n ) : null}\r\n
    \r\n \r\n ,\r\n ,\r\n ]}\r\n footer={[\r\n {\r\n toggleModDisapprove();\r\n toggleModal();\r\n setClicked(\"Approve\");\r\n }}\r\n >\r\n Return\r\n ,\r\n handleDisapproveApplication(e)}\r\n >\r\n Disapprove\r\n ,\r\n ]}\r\n >\r\n \r\n
    \r\n
    \r\n \r\n {\r\n setReason(e);\r\n setReappNotif(\r\n e.length > 1\r\n ? 0\r\n : Number(e.toString().slice(e.toString().length - 1))\r\n );\r\n }}\r\n >\r\n {lstReasons.map((reason) => (\r\n \r\n {toTitleCase(reason.remarks)}\r\n \r\n ))}\r\n \r\n
    {disapproveMessage}
    \r\n \r\n setDisapproveRemarks(e.target.value)}\r\n />\r\n \r\n {isOpen ? (\r\n {\r\n setIsOpen(false);\r\n toggleModal();\r\n }}\r\n images={[{ src: images[photoIndex] }]}\r\n />\r\n ) : null}\r\n \r\n );\r\n}\r\nfunction convertToNumber(e) {\r\n const itemNumber = Number(e.slice(7, 12));\r\n return itemNumber;\r\n}\r\n\r\nfunction toTitleCase(str) {\r\n return str.replace(/\\w\\S*/g, function (txt) {\r\n return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();\r\n });\r\n}\r\n\r\nfunction getCivilStatus(civilStatus) {\r\n switch (civilStatus) {\r\n case \"S\":\r\n return \"Single\";\r\n case \"M\":\r\n return \"Married\";\r\n case \"W\":\r\n return \"Widowed\";\r\n default:\r\n return \"N/A\";\r\n }\r\n}\r\n","import React, { useState } from \"react\";\r\nimport { Button, Input, Modal, Spin, Select } from \"antd\";\r\nimport { ExclamationCircleOutlined, MailOutlined, UserOutlined } from \"@ant-design/icons\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport \"./ForgotPassword.css\";\r\nimport * as API from \"../../util/live_api\";\r\nimport {\r\n Decrypt,\r\n Decrypt2,\r\n EncryptHeader,\r\n ImgEncrypt,\r\n} from \"../../util/EncryptionHandler\";\r\n\r\nconst { Option } = Select;\r\n\r\nconst ForgotPassword = () => {\r\n const [email, setEmail] = useState(\"\");\r\n const [applicationname, setAppName] = useState(\"AGORA\");\r\n const [loading, setLoading] = useState(false);\r\n\r\n let history = useHistory();\r\n \r\n const handleForgotPassword = () => {\r\n if (email.trim() === \"\") {\r\n return alert(\"Please provide your email address\");\r\n } else {\r\n setLoading(true);\r\n }\r\n \r\n let EncryptedEmail = EncryptHeader(email);\r\n // let Username = EncryptHeader(\"admin-kyc\");\r\n\r\n if (applicationname == \"AGORA\") {\r\n fetch(Decrypt(API.FORGOT_PASSWORD), {\r\n method: \"POST\",\r\n headers: {\r\n EmailAddress: EncryptedEmail,\r\n // Username: Username,\r\n },\r\n })\r\n .then((response) => {\r\n response.json().then((data) => {\r\n let forgotResp = Decrypt2(data);\r\n if (forgotResp.success) {\r\n setLoading(false);\r\n // history.push(`/otpverification/${email}/${username}`);\r\n // history.push(`/otpverification/${email,applicationname}`);\r\n history.push({\r\n pathname : \"/otpverification/\"+email,\r\n email,\r\n state : {email:email,\r\n app:applicationname} \r\n });\r\n\r\n } else {\r\n setLoading(false);\r\n alert(forgotResp.message);\r\n }\r\n });\r\n })\r\n .catch((error) => {\r\n alert(\"Oops\", \"Error!\" + error);\r\n });\r\n } else {\r\n fetch(Decrypt(API.FORGOT_PASSWORD_DOCTORS), {\r\n method: \"POST\",\r\n headers: {\r\n EmailAddress: EncryptedEmail,\r\n // Username: Username,\r\n },\r\n })\r\n .then((response) => {\r\n response.json().then((data) => {\r\n let forgotResp = Decrypt2(data);\r\n if (forgotResp.success) {\r\n setLoading(false);\r\n history.push({\r\n pathname : \"/otpverification/\"+email,\r\n email,\r\n state : {email:email,\r\n app:applicationname} \r\n });\r\n } else {\r\n setLoading(false);\r\n alert(forgotResp.message);\r\n }\r\n });\r\n })\r\n .catch((error) => {\r\n alert(\"Oops\", \"Error!\" + error);\r\n });\r\n }\r\n };\r\n return (\r\n <>\r\n
    \r\n \r\n
    Forgot your password?
    \r\n

    \r\n Enter your email address below and we'll send you OTP to change your\r\n password\r\n

    \r\n
    \r\n Application: \r\n setAppName(AppName)}\r\n >\r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n }\r\n value={email}\r\n onChange={(e) => setEmail(e.target.value)}\r\n />\r\n {/* removed (Bug #45361) */}\r\n {/* }\r\n value={username}\r\n onChange={(e) => setUsername(e.target.value)}\r\n /> */}\r\n {/* removed (Bug #45361) */}\r\n
    \r\n \r\n Send Email\r\n \r\n \r\n
    \r\n \r\n

    Sending otp...

    \r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default ForgotPassword;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { Button, Input, Modal, Spin } from \"antd\";\r\nimport {\r\n KeyOutlined,\r\n LockOutlined,\r\n EyeTwoTone,\r\n EyeInvisibleOutlined,\r\n ConsoleSqlOutlined,\r\n} from \"@ant-design/icons\";\r\nimport { useToasts } from \"react-toast-notifications\";\r\nimport { useParams, useHistory,useLocation } from \"react-router-dom\";\r\nimport \"./OTP.css\";\r\n\r\nimport * as API from \"../../util/live_api\";\r\nimport {\r\n Decrypt,\r\n Decrypt2,\r\n DecryptTxt,\r\n Encrypt2,\r\n} from \"../../util/EncryptionHandler\";\r\nimport { ConsoleView } from \"react-device-detect\";\r\n\r\nconst OTP = () => {\r\n const location = useLocation();\r\n const [verification_code, setVerification_code] = useState(\"\");\r\n const [password, setPassword] = useState(\"\");\r\n const [confirmpassword, setConfirmpassword] = useState(\"\");\r\n const [loading, setLoading] = useState(false);\r\n const [verified, setVerified] = useState(false);\r\n const { addToast } = useToasts();\r\n let { email } = useParams();\r\n const applicationname = location.state.app;\r\n \r\n let history = useHistory();\r\n const handleVerifyOTP = () => {\r\n \r\n if (verification_code.trim() === \"\") {\r\n return alert(\"Please provide one time password\");\r\n } else {\r\n setLoading(true);\r\n }\r\n let Value = Encrypt2({ verification_code, email });\r\n\r\n if (applicationname == \"AGORA\") {\r\n \r\n fetch(Decrypt(API.VERIFY_OTP), {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ Value }),\r\n })\r\n .then((response) => {\r\n response.json().then((data) => {\r\n let verified = Decrypt2(data);\r\n if (verified.success) {\r\n setLoading(false);\r\n setVerified(true);\r\n } else {\r\n setLoading(false);\r\n alert(verified.message);\r\n }\r\n });\r\n })\r\n .catch((error) => {\r\n alert(\"Oops\", \"Error!\" + error);\r\n });\r\n } else {\r\n fetch(Decrypt(API.VERIFY_OTP_DOCTORS), {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ Value }),\r\n })\r\n .then((response) => {\r\n response.json().then((data) => {\r\n let verified = Decrypt2(data);\r\n if (verified.success) {\r\n setLoading(false);\r\n setVerified(true);\r\n } else {\r\n setLoading(false);\r\n alert(verified.message);\r\n }\r\n });\r\n })\r\n .catch((error) => {\r\n alert(\"Oops\", \"Error!\" + error);\r\n });\r\n }\r\n };\r\n\r\n const handleChangPassword = async () => {\r\n var regularExpression = new RegExp(\r\n \"^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#$%^&*_])(?=.{8,50})\"\r\n );\r\n if (password.length < 6) {\r\n return alert(\"Oops, Password too short\");\r\n }\r\n if (password !== confirmpassword) {\r\n return alert(\"Oops, Password does not match!\");\r\n }\r\n if (!regularExpression.test(password)) {\r\n return alert(\r\n \"Oops, Password should contain atleast one number, one upper case and one special character.\"\r\n );\r\n }\r\n try {\r\n if (applicationname == \"AGORA\") {\r\n let Value = Encrypt2({\r\n emailaddress: email,\r\n newpassword: password,\r\n });\r\n let resp = await fetch(Decrypt(API.FP_CHANGE_PW), {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ Value }),\r\n });\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText);\r\n if (respJson.success) {\r\n addToast(\"Password Successfully Updated\", {\r\n appearance: \"success\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n history.push(\"/\");\r\n } else {\r\n addToast(respJson.message, {\r\n appearance: \"warning\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n }\r\n } else {\r\n let Value = Encrypt2({\r\n verification_code: verification_code,\r\n email_address: email,\r\n new_password: password,\r\n });\r\n let resp = await fetch(Decrypt(API.FP_CHANGE_PW_DOCTORS), {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ Value }),\r\n });\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText);\r\n if (respJson.success) {\r\n addToast(\"Password Successfully Updated\", {\r\n appearance: \"success\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n history.push(\"/\");\r\n } else {\r\n addToast(respJson.message, {\r\n appearance: \"warning\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n }\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n alert(\"Internal Server Error\");\r\n }\r\n };\r\n const renderOTPScreen = () => (\r\n <>\r\n
    \r\n \r\n
    Verify OTP
    \r\n

    Enter the otp that we sent on your email provided.

    \r\n
    \r\n }\r\n value={verification_code}\r\n onChange={(e) => setVerification_code(e.target.value.toUpperCase())}\r\n />\r\n \r\n
    \r\n \r\n
    \r\n \r\n

    Verifying otp...

    \r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n\r\n const renderChangePWScreen = () => (\r\n <>\r\n
    \r\n \r\n
    Change Password
    \r\n

    Please enter your new password

    \r\n
    \r\n
    \r\n }\r\n value={password}\r\n onChange={(e) => setPassword(e.target.value)}\r\n iconRender={(visible) =>\r\n visible ? : \r\n }\r\n />\r\n }\r\n value={confirmpassword}\r\n onChange={(e) => setConfirmpassword(e.target.value)}\r\n iconRender={(visible) =>\r\n visible ? : \r\n }\r\n />\r\n
    \r\n \r\n Change password\r\n \r\n
    \r\n
    \r\n \r\n );\r\n\r\n if (verified === false) {\r\n return renderOTPScreen();\r\n } else {\r\n return renderChangePWScreen();\r\n }\r\n};\r\n\r\nexport default OTP;\r\n","import React from \"react\";\r\nimport { Spin, Modal, Result, Button } from \"antd\";\r\n\r\nexport default class Spinner extends React.Component {\r\n render() {\r\n const { modalLoading, success, close, successMsg, savingMsg } = this.props;\r\n return (\r\n
    \r\n \r\n {success !== null ? null : (\r\n
    \r\n \r\n \r\n {savingMsg}\r\n \r\n
    \r\n )}\r\n {success !== null && (\r\n close()}>\r\n Okay\r\n ,\r\n ]}\r\n />\r\n )}\r\n \r\n
    \r\n );\r\n }\r\n}\r\n","import React from \"react\";\r\nimport moment from \"moment\";\r\nimport { Input, Modal, Button, Form, DatePicker, Select } from \"antd\";\r\nimport { MDBIcon, MDBView, MDBMask, MDBCard, MDBCardBody } from \"mdbreact\";\r\nimport LinearIndeterminate from \"../LinearInderterminate\";\r\nimport Spinner from \"./Spinner\";\r\nimport * as API from \"../../util/live_api\";\r\nimport { Decrypt, Decrypt2, Encrypt2 } from \"../../util/EncryptionHandler\";\r\n\r\nconst { Option } = Select;\r\n\r\nexport default function EditANModal({\r\n modalEditAN,\r\n data,\r\n imgPath,\r\n close,\r\n imageLoad,\r\n getAllAN,\r\n}) {\r\n let user_info = JSON.parse(localStorage.getItem(\"user_info\"));\r\n\r\n const [details, setDetails] = React.useState({\r\n announcementdate: data.announcementdate,\r\n announcementid: data.announcementid,\r\n content: data.content,\r\n edited: data.edited,\r\n editedby: data.editedby,\r\n image: data.image,\r\n image_type: data.image_type,\r\n intellicare_tag: data.intellicare_tag,\r\n isactive: data.isactive,\r\n path: data.path,\r\n posted: data.posted,\r\n postedby: data.postedby,\r\n status: data.status,\r\n title: data.title,\r\n });\r\n const [enable, setEnable] = React.useState(true);\r\n const [editCaption, setEditCaption] = React.useState(\"Edit\");\r\n const [closeCaption, setCloseCaption] = React.useState(\"Close\");\r\n const [image, setImage] = React.useState(\"\");\r\n const [imgUri, setImgUri] = React.useState(\"\");\r\n const [modalLoading, setModalLoading] = React.useState(false);\r\n const [success, setSuccess] = React.useState(null);\r\n const [successMsg, setSuccessMsg] = React.useState(\"\");\r\n const [savingMsg, setSavingMsg] = React.useState(\"\");\r\n const [fileSizeMsg, setFileSizeMsg] = React.useState(\"\");\r\n\r\n const dateFormat = \"MM/DD/YYYY hh:mm:ss\";\r\n\r\n function onEditClick() {\r\n if (editCaption === \"Save\") {\r\n if (image !== \"\") {\r\n handleUpdateAN();\r\n } else {\r\n handleUpdateANwoPic();\r\n }\r\n \r\n\r\n setCloseCaption(\"Close\");\r\n setEnable(true);\r\n setEditCaption(\"Edit\");\r\n }\r\n setEnable(false);\r\n setEditCaption(\"Save\");\r\n setCloseCaption(\"Cancel\");\r\n }\r\n\r\n function onCloseClick() {\r\n if (closeCaption === \"Close\") {\r\n close();\r\n } else {\r\n setDetails({\r\n announcementdate: data.announcementdate,\r\n announcementid: data.announcementid,\r\n content: data.content,\r\n edited: data.edited,\r\n editedby: data.editedby,\r\n image: data.image,\r\n image_type: data.image_type,\r\n intellicare_tag: data.intellicare_tag,\r\n isactive: data.isactive,\r\n path: data.path,\r\n posted: data.posted,\r\n postedby: data.postedby,\r\n status: data.status,\r\n title: data.title,\r\n });\r\n setCloseCaption(\"Close\");\r\n setEnable(true);\r\n setEditCaption(\"Edit\");\r\n }\r\n }\r\n\r\n function handleUploadChange(e) {\r\n const fsize = e.target.files[0].size;\r\n const file = Math.round(fsize / 1024);\r\n if (\r\n e.target.files[0].type !== \"image/png\" &&\r\n e.target.files[0].type !== \"image/jpeg\"\r\n ) {\r\n return alert(\"File is not image type!\");\r\n }\r\n if (file > 4096) {\r\n setFileSizeMsg(\"File too Big, please select a file max of 4mb\");\r\n setImgUri(\"\");\r\n setImage(\"\");\r\n } else {\r\n setFileSizeMsg(\"\");\r\n setImgUri(URL.createObjectURL(e.target.files[0]));\r\n setImage(e.target.files[0]);\r\n }\r\n }\r\n\r\n async function handleUpdateAN() {\r\n let formdata = new FormData();\r\n formdata.append(\"announcement_image\", image);\r\n formdata.append(\"announcement_details\", Encrypt2(details));\r\n try {\r\n setModalLoading(true);\r\n setSuccess(null);\r\n setSavingMsg(\"Saving Changes...\");\r\n let respUpdate = await fetch(Decrypt(API.UPDATE_ANNOUNCEMENT_IMAGE), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n },\r\n body: formdata,\r\n });\r\n let respUpdateText = await respUpdate.json();\r\n let respUpdateJson = await Decrypt2(respUpdateText);\r\n if (respUpdateJson.is_success) {\r\n setSuccessMsg(\"Announcement has been updated!\");\r\n setImage(\"\");\r\n setSuccess(true);\r\n setEditCaption(\"Edit\");\r\n setCloseCaption(\"Close\");\r\n } else {\r\n setSuccess(false);\r\n setImage(\"\");\r\n setSuccessMsg(respUpdateJson.error_message);\r\n }\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n }\r\n\r\n async function handleUpdateANwoPic() {\r\n try {\r\n setModalLoading(true);\r\n setSuccess(null);\r\n setSavingMsg(\"Saving Changes...\");\r\n let value = Encrypt2(details);\r\n let respUpdate = await fetch(Decrypt(API.UPDATE_ANNOUNCEMENT), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ value }),\r\n });\r\n let respUpdateText = await respUpdate.json();\r\n let respUpdateJson = await Decrypt2(respUpdateText);\r\n if (respUpdateJson.is_success) {\r\n setSuccessMsg(\"Announcement has been updated!\");\r\n setImage(\"\");\r\n setSuccess(true);\r\n setEditCaption(\"Edit\");\r\n setCloseCaption(\"Close\");\r\n } else {\r\n setSuccess(false);\r\n setImage(\"\");\r\n setSuccessMsg(respUpdateJson.error_message);\r\n }\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n }\r\n\r\n function closeSpinner() {\r\n setModalLoading(false);\r\n if (success === true) {\r\n getAllAN();\r\n close();\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n \r\n // \r\n //
    ,\r\n // ]\r\n }\r\n footer={[\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 {imageLoad ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n */}\r\n \r\n {imageLoad ? (\r\n \r\n ) : (\r\n \"img\"\r\n )}\r\n \r\n \r\n \r\n \r\n
    {details.title}
    \r\n

    \r\n Posted by\r\n {data.postedby}, {details.announcementdate}\r\n

    \r\n
    \r\n \r\n
    \r\n {editCaption === \"Save\" && (\r\n \r\n handleUploadChange(e)}\r\n />\r\n

    \r\n {fileSizeMsg}\r\n

    \r\n {imgUri && (\r\n \r\n )}\r\n \r\n )}\r\n {editCaption === \"Edit\" && (\r\n

    {details.content}

    \r\n )}\r\n {editCaption === \"Save\" && (\r\n {\r\n const val = e.target.value;\r\n setDetails((prevState) => {\r\n return { ...prevState, content: val };\r\n });\r\n }}\r\n readOnly={enable}\r\n />\r\n )}\r\n\r\n {editCaption === \"Save\" && (\r\n
    \r\n
    \r\n \r\n {\r\n const val = dateString;\r\n setDetails((prevState) => {\r\n return {\r\n ...prevState,\r\n announcementdate: val,\r\n };\r\n });\r\n }}\r\n style={{ width: \"100%\" }}\r\n />\r\n
    \r\n
    \r\n \r\n {\r\n setDetails((prevState) => {\r\n return {\r\n ...prevState,\r\n isactive: value,\r\n status: value === true ? \"A\" : \"D\",\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","import React from \"react\";\r\nimport { MDBRow, MDBCol, MDBMask, MDBView, MDBBtn } from \"mdbreact\";\r\nimport LinearIndeterminate from \"../LinearInderterminate\";\r\nimport * as API from \"../../util/live_api\";\r\nimport { Decrypt, ImgEncrypt } from \"../../util/EncryptionHandler\";\r\nimport EditANModal from \"../DoctorsAnnouncement/EditANModal\";\r\n\r\nexport default function AnnouncementCard({ data, token, imgpath, getAll }) {\r\n const [images, setImages] = React.useState(\"\");\r\n const [imageLoad, setImageLoad] = React.useState(false);\r\n const [modalEditAN, setModalEditAN] = React.useState(false);\r\n\r\n React.useEffect(() => {\r\n async function renderImg(imgpath) {\r\n let ImagePath = ImgEncrypt(imgpath);\r\n try {\r\n setImageLoad(true);\r\n let resp = await fetch(Decrypt(API.DOCTORSAPP_GETIMAGE), {\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n Authorization: \"Bearer \" + token,\r\n ImagePath,\r\n },\r\n });\r\n let respBlob = await resp.blob();\r\n let reader = new FileReader();\r\n reader.readAsDataURL(respBlob);\r\n reader.onload = () => {\r\n setImageLoad(false);\r\n setImages(reader.result);\r\n };\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n renderImg(imgpath);\r\n }, [imgpath, token]);\r\n\r\n function getAllAN() {\r\n getAll();\r\n }\r\n\r\n function toggleEditModal() {\r\n setModalEditAN(!modalEditAN);\r\n }\r\n\r\n return (\r\n
    \r\n \r\n \r\n \r\n {imageLoad ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n
    {data.title}
    \r\n
    \r\n

    {data.content}

    \r\n
    \r\n
    \r\n {\" \"}\r\n

    {data.announcementdate}

    \r\n
    \r\n
    \r\n toggleEditModal()}\r\n style={{ borderRadius: 20 }}\r\n >\r\n View Details\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n );\r\n}\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { MDBBtn, MDBIcon, MDBRow, MDBContainer } from \"mdbreact\";\r\nimport { Select, Input, Modal, Button, Form, DatePicker, Empty } from \"antd\";\r\nimport moment from \"moment\";\r\nimport { Decrypt, Decrypt2, Encrypt2 } from \"../../util/EncryptionHandler\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport * as API from \"../../util/live_api\";\r\nimport \"./Announcement.css\";\r\nimport { useToasts } from \"react-toast-notifications\";\r\nimport AnnouncementCard from \"../DoctorsAnnouncement/AnnouncementCard\";\r\n\r\nconst { Option } = Select;\r\nconst { Search } = Input;\r\nconst layout = {\r\n labelCol: { span: 4 },\r\n wrapperCol: { span: 19 },\r\n};\r\n\r\nconst dateFormat = \"MM/DD/YYYY hh:mm:ss\";\r\nexport default function Announcement() {\r\n const [addmodal, setAddModal] = useState(false);\r\n const [viewmodal, setViewModal] = useState(false);\r\n const [closecaption, setCloseCaption] = useState(\"Close\");\r\n const [detailsinput, setDetailsInput] = useState(true);\r\n const [editcaption, setEditCaption] = useState(\"Edit\");\r\n const [saveinput, setSaveInput] = useState(false);\r\n const [action, setStateAction] = useState(\"Edit\");\r\n const [tempData, setTempData] = React.useState([]);\r\n\r\n let user_info = JSON.parse(localStorage.getItem(\"user_info\"));\r\n let history = useHistory();\r\n if (user_info.data.department === \"MIS TECH\") {\r\n history.push(\"/users\");\r\n }\r\n if (!sessionStorage.getItem(\"logged_in\")) {\r\n localStorage.removeItem(\"user_info\");\r\n localStorage.removeItem(\"current_pw\");\r\n history.push(\"/\");\r\n }\r\n\r\n /////// LOCAL VARIABLES\r\n const { addToast, removeToast } = useToasts();\r\n const [lstAnnouncement, setLstAnnoucement] = useState([]);\r\n const [lsttmp, setLsttmp] = useState([]);\r\n const [announcementid, setanncid] = useState([]);\r\n const [warningTime] = useState(15 * 60 * 1000);\r\n const [logoutTime] = useState(10 * 1000);\r\n const [isOpen, setIsOpen] = useState(false);\r\n const [loading, setLoading] = useState(false);\r\n const [modaldetails, setModalDetails] = useState([]);\r\n\r\n //ADD ANNOUNCEMENT VARIABLES\r\n const [details, setDetails] = React.useState({\r\n title: \"\",\r\n content: \"\",\r\n announcementdate: moment(new Date(), dateFormat),\r\n intellicare_tag: user_info.data.intellicareavega_tag,\r\n postedby: user_info.data.emailaddress,\r\n isactive: true,\r\n status: \"A\",\r\n editedby: null,\r\n });\r\n\r\n const [fileSizeMsg, setFileSizeMsg] = React.useState(\"\");\r\n const [imgUri, setImgUri] = React.useState(\"\");\r\n const [image, setImage] = React.useState(null);\r\n //ADD ANNOUNCEMENT VARIABLES\r\n\r\n let warnTimeout;\r\n let logoutTimeout;\r\n let toastId;\r\n ///////\r\n\r\n const closeModal = () => {\r\n setDetails({\r\n title: \"\",\r\n content: \"\",\r\n announcementdate: moment(new Date(), dateFormat),\r\n intellicare_tag: user_info.data.intellicareavega_tag,\r\n postedby: user_info.data.emailaddress,\r\n isactive: true,\r\n status: \"A\",\r\n editedby: null,\r\n });\r\n\r\n setStateAction(\"New\");\r\n setImage(null);\r\n setImgUri(\"\");\r\n\r\n setAddModal(false);\r\n setViewModal(false);\r\n };\r\n\r\n useEffect(() => {\r\n GetAnnouncement();\r\n const events = [\r\n \"load\",\r\n \"mousemove\",\r\n \"mousedown\",\r\n \"click\",\r\n \"scroll\",\r\n \"keypress\",\r\n ];\r\n\r\n for (let i in events) window.addEventListener(events[i], resetTimeout);\r\n\r\n setTimeouts();\r\n return () => {\r\n for (let i in events) {\r\n window.removeEventListener(events[i], resetTimeout);\r\n clearTimeouts();\r\n }\r\n };\r\n }, []);\r\n\r\n return (\r\n <>\r\n \r\n

    \r\n
    Announcement
    \r\n

    \r\n \r\n
    \r\n
    \r\n setAddModal(true)}\r\n >\r\n ADD \r\n \r\n toggleSortToNewest(e)}\r\n disabled={loading ? true : false}\r\n >\r\n \r\n \r\n \r\n
    \r\n
    \r\n search(e.target.value)}\r\n allowClear\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n {lstAnnouncement.length === 0 && !loading && }\r\n {lstAnnouncement.map((item) => (\r\n \r\n ))}\r\n\r\n
    \r\n\r\n {/* ADD MODAL */}\r\n ,\r\n ,\r\n ]}\r\n footer={[\r\n \r\n \r\n Create\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 val = e.target.value;\r\n setDetails((prevState) => {\r\n return { ...prevState, title: val };\r\n });\r\n }}\r\n />\r\n \r\n *,\r\n ,\r\n ]}\r\n >\r\n {\r\n const val = e.target.value;\r\n setDetails((prevState) => {\r\n return { ...prevState, content: val };\r\n });\r\n }}\r\n />\r\n \r\n \r\n {\r\n const val = dateString;\r\n setDetails((prevState) => {\r\n return {\r\n ...prevState,\r\n announcementdate: val.toLocaleString(),\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 * Max. file size(4MB)\r\n \r\n }\r\n >\r\n handleUploadChange(e)}\r\n />\r\n

    \r\n {fileSizeMsg}\r\n

    \r\n {imgUri && (\r\n \r\n )}\r\n \r\n \r\n
    \r\n \r\n\r\n {/* VIEW MODAL */}\r\n ,\r\n ,\r\n ]}\r\n footer={[\r\n \r\n \r\n {editcaption}\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 val = e.target.value;\r\n setDetails((prevState) => {\r\n return { ...prevState, title: val };\r\n });\r\n }}\r\n />\r\n \r\n *,\r\n ,\r\n ]}\r\n >\r\n {\r\n const val = e.target.value;\r\n setDetails((prevState) => {\r\n return { ...prevState, content: val };\r\n });\r\n }}\r\n />\r\n \r\n \r\n {\r\n const val = dateString;\r\n setDetails((prevState) => {\r\n return {\r\n ...prevState,\r\n announcementdate: val.toLocaleString(),\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 * Max. file size(4MB)\r\n \r\n }\r\n >\r\n handleUploadChange(e)}\r\n />\r\n

    \r\n {fileSizeMsg}\r\n

    \r\n {imgUri && (\r\n \r\n )}\r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n );\r\n //METHODS\r\n //GATHER ALL ANNOUNCEMENT\r\n async function GetAnnouncement() {\r\n try {\r\n setLoading(true);\r\n let resp = await fetch(Decrypt(API.GET_ALL_ANNOUNCEMENT), {\r\n method: \"GET\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n },\r\n });\r\n\r\n let respJson = await resp.json();\r\n let decrypted = respJson.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n return newD;\r\n });\r\n let newest = decrypted.sort(function (a, b) {\r\n return new Date(b.announcementdate) - new Date(a.announcementdate);\r\n });\r\n let iOnly = newest.filter((item) => {\r\n return item.intellicare_tag === user_info.data.intellicareavega_tag;\r\n });\r\n let activeOnly = iOnly.filter((item) => {\r\n return item.isactive === true && item.status === \"A\";\r\n });\r\n\r\n setLstAnnoucement(activeOnly);\r\n setTempData(activeOnly);\r\n setLoading(false);\r\n } catch (error) {\r\n setLoading(false);\r\n }\r\n }\r\n\r\n async function SaveAnnouncementHandle() {\r\n if (details.title.trim() === \"\") {\r\n return alert(\"Please add title of announcement!\");\r\n }\r\n if (details.content.trim() === \"\") {\r\n return alert(\"Please add content of announcement!\");\r\n }\r\n if (image === null) {\r\n return alert(\"Please add image of announcment!\");\r\n }\r\n\r\n let formdata = new FormData();\r\n formdata.append(\"announcement_image\", image);\r\n formdata.append(\"announcement_details\", Encrypt2(details));\r\n formdata.forEach((value, key) => {\r\n // cs.log removed\r\n });\r\n try {\r\n let resp = await fetch(Decrypt(API.ADD_ANNOUNCEMENT), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n },\r\n body: formdata,\r\n });\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText);\r\n\r\n if (respJson.is_success) {\r\n setDetails({\r\n title: \"\",\r\n content: \"\",\r\n announcementdate: moment(new Date(), dateFormat),\r\n intellicare_tag: user_info.data.intellicareavega_tag,\r\n postedby: user_info.data.emailaddress,\r\n isactive: true,\r\n status: \"A\",\r\n editedby: null,\r\n });\r\n setImage(null);\r\n setImgUri(\"\");\r\n addToast(\r\n \"Announcement Successfully added\",\r\n {\r\n appearance: \"success\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n },\r\n (id) => {\r\n toastId = id;\r\n }\r\n );\r\n closeModal();\r\n } else {\r\n addToast(\r\n respJson.message,\r\n {\r\n appearance: \"error\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n },\r\n (id) => {\r\n toastId = id;\r\n }\r\n );\r\n setAddModal(false);\r\n setViewModal(false);\r\n setLoading(false);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n //WARNING\r\n function warn() {\r\n document.title = \"Logging Out...\";\r\n setAddModal(false);\r\n setViewModal(false);\r\n setIsOpen(false);\r\n addToast(\r\n \"You are about to logout in \" +\r\n logoutTime / 1000 +\r\n \" seconds due to inactivity.\",\r\n {\r\n appearance: \"warning\",\r\n autoDismiss: true,\r\n autoDismissTimeout: logoutTime,\r\n },\r\n (id) => {\r\n toastId = id;\r\n }\r\n );\r\n }\r\n\r\n //LOGOUT\r\n function logout() {\r\n localStorage.removeItem(\"user_info\");\r\n localStorage.removeItem(\"current_pw\");\r\n history.push(\"/\");\r\n }\r\n\r\n //TIME OUT\r\n function setTimeouts() {\r\n warnTimeout = setTimeout(warn, warningTime);\r\n logoutTimeout = setTimeout(logout, warningTime + logoutTime);\r\n }\r\n\r\n //CLEAR TIME OUT\r\n function clearTimeouts() {\r\n if (warnTimeout) clearTimeout(warnTimeout);\r\n if (logout) clearTimeout(logoutTimeout);\r\n }\r\n\r\n //RESET TIME OUT\r\n function resetTimeout() {\r\n document.title = \"Intellicare Admin - Dashboard\";\r\n removeToast(toastId);\r\n clearTimeouts();\r\n setTimeouts();\r\n }\r\n\r\n function handleUploadChange(e) {\r\n const fsize = e.target.files[0].size;\r\n const file = Math.round(fsize / 1024);\r\n if (\r\n e.target.files[0].type !== \"image/png\" &&\r\n e.target.files[0].type !== \"image/jpeg\"\r\n ) {\r\n return alert(\"File is not image type!\");\r\n }\r\n if (file > 4096) {\r\n setFileSizeMsg(\"File too Big, please select a file max of 4mb\");\r\n setImgUri(\"\");\r\n setImage(\"\");\r\n } else {\r\n setFileSizeMsg(\"\");\r\n setImgUri(URL.createObjectURL(e.target.files[0]));\r\n setImage(e.target.files[0]);\r\n }\r\n }\r\n\r\n async function OpenViewModal(Announcement) {\r\n let anncmentlist = Announcement;\r\n\r\n setDetails({\r\n announcementid: anncmentlist.announcementid,\r\n title: anncmentlist.title,\r\n content: anncmentlist.content,\r\n announcementdate: moment(anncmentlist.announcementdate, dateFormat),\r\n intellicare_tag: user_info.data.intellicareavega_tag,\r\n postedby: user_info.data.emailaddress,\r\n isactive: true,\r\n status: \"A\",\r\n editedby: user_info.data.emailaddress,\r\n });\r\n\r\n setModalDetails(anncmentlist);\r\n setViewModal(true);\r\n }\r\n function setdashboard() {\r\n setDetails(lsttmp);\r\n }\r\n async function EditAnnouncementHandle() {\r\n if (saveinput == false) {\r\n \r\n setDetailsInput(false);\r\n setCloseCaption(\"Cancel\");\r\n setEditCaption(\"Save\");\r\n setSaveInput(true);\r\n } else {\r\n setDetailsInput(true);\r\n setCloseCaption(\"Close\");\r\n setEditCaption(\"Edit\");\r\n setSaveInput(false);\r\n setStateAction(\"Edit\");\r\n closeModal();\r\n }\r\n }\r\n\r\n function CloseButtonHandle(modaldetails) {\r\n if (closecaption == \"Close\") {\r\n closeModal();\r\n } else {\r\n setDetails({\r\n title: modaldetails.title,\r\n content: modaldetails.content,\r\n announcementdate: moment(modaldetails.announcementdate, dateFormat),\r\n intellicare_tag: user_info.data.intellicareavega_tag,\r\n postedby: user_info.data.emailaddress,\r\n isactive: true,\r\n status: \"A\",\r\n editedby: user_info.data.emailaddress,\r\n });\r\n\r\n setEditCaption(\"Edit\");\r\n setCloseCaption(\"Close\");\r\n setDetailsInput(true);\r\n setSaveInput(false);\r\n }\r\n }\r\n\r\n function toggleSortToNewest(e) {\r\n setLstAnnoucement([]);\r\n let sorted = tempData.sort(function (a, b) {\r\n if (e === \"newest\") {\r\n return new Date(b.announcementdate) - new Date(a.announcementdate);\r\n } else {\r\n return new Date(a.announcementdate) - new Date(b.announcementdate);\r\n }\r\n });\r\n setLstAnnoucement((prevAnnouncement) => [...prevAnnouncement, ...sorted]);\r\n }\r\n\r\n function search(str) {\r\n let searchedData = tempData.filter((item) => {\r\n const itemData = `${item.title.toUpperCase()}`;\r\n const textData = str.toUpperCase();\r\n return itemData.indexOf(textData) > -1;\r\n });\r\n setLstAnnoucement(searchedData);\r\n }\r\n}\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { Button, Input, Modal, Spin, Result, Checkbox } from \"antd\";\r\nimport { ConsoleSqlOutlined, MailOutlined } from \"@ant-design/icons\";\r\nimport \"./ConcurrentReset.css\";\r\nimport * as API from \"../../util/live_api\";\r\nimport CheckSession from \"../CheckSession\";\r\nimport {\r\n Decrypt,\r\n Decrypt2,\r\n Encrypt2,\r\n EncryptHeader,\r\n ImgEncrypt,\r\n} from \"../../util/EncryptionHandler\";\r\n\r\nconst ConcurrentReset = () => {\r\n const [email, setEmail] = useState(\"\");\r\n const [loading, setLoading] = useState(false);\r\n const [spin, setSpin] = useState(false);\r\n const [success, setSuccess] = useState(false);\r\n const [checked, setChecked] = useState(true);\r\n const [resultMsg, setResultMsg] = useState(\"\");\r\n let appName = JSON.parse(localStorage.getItem(\"appName\"));\r\n\r\n useEffect(() => {\r\n CheckSession();\r\n }, []);\r\n\r\n const handleResetLogin = () => {\r\n if (email.trim() === \"\") {\r\n return alert(\"Please provide email address\");\r\n } else {\r\n setLoading(true);\r\n setSpin(true);\r\n }\r\n let Email = ImgEncrypt(email);\r\n\r\n if (appName === \"AGORA\") {\r\n fetch(Decrypt(API.CONCURRENTLOGIN), {\r\n method: \"POST\",\r\n headers: {\r\n Email,\r\n },\r\n })\r\n .then((response) => {\r\n response.json().then((data) => {\r\n let forgotResp = Decrypt2(data);\r\n if (forgotResp.success) {\r\n setSuccess(true);\r\n setSpin(false);\r\n setResultMsg(\"Successfully reset.\");\r\n } else {\r\n setSuccess(false);\r\n setSpin(false);\r\n setResultMsg(forgotResp.message);\r\n }\r\n });\r\n })\r\n .catch((error) => {\r\n alert(\"Oops\", \"Error!\" + error);\r\n });\r\n } else {\r\n\r\n let formdata = new FormData();\r\n formdata.append(\"Email\", Encrypt2({ Email: email }));\r\n\r\n fetch(Decrypt(API.CONCURRENTLOGIN_DOCTORS), {\r\n method: \"POST\",\r\n body: formdata,\r\n })\r\n .then((response) => {\r\n\r\n response.json().then((data) => {\r\n let forgotResp = Decrypt2(data);\r\n if (forgotResp.success) {\r\n setSuccess(true);\r\n setSpin(false);\r\n setResultMsg(\"Successfully reset.\");\r\n } else {\r\n setSuccess(false);\r\n setSpin(false);\r\n setResultMsg(forgotResp.message);\r\n }\r\n });\r\n })\r\n .catch((error) => {\r\n alert(\"Oops\", \"Error!\" + error);\r\n });\r\n }\r\n\r\n };\r\n const HandleResetLoginKYC = () => {\r\n if (email.trim() === \"\") {\r\n return alert(\"Please provide email address\");\r\n } else {\r\n setLoading(true);\r\n setSpin(true);\r\n }\r\n let Email = EncryptHeader(email);\r\n\r\n if (appName === \"AGORA\") {\r\n fetch(Decrypt(API.LOGOUT_USER_STAT), {\r\n method: \"POST\",\r\n headers: {\r\n Email: Email,\r\n },\r\n })\r\n .then((response) => {\r\n response.json().then((data) => {\r\n let forgotResp = Decrypt2(data);\r\n if (forgotResp.success) {\r\n setSuccess(true);\r\n setSpin(false);\r\n setResultMsg(\"Successfully reset.\");\r\n } else {\r\n setSuccess(false);\r\n setSpin(false);\r\n setResultMsg(forgotResp.message);\r\n }\r\n });\r\n })\r\n .catch((error) => {\r\n alert(\"Oops\", \"Error!\" + error);\r\n });\r\n } else {\r\n fetch(Decrypt(API.LOGOUT_USER_STAT_DOCTORS), {\r\n method: \"POST\",\r\n headers: {\r\n Email: Email,\r\n },\r\n })\r\n .then((response) => {\r\n response.json().then((data) => {\r\n let forgotResp = Decrypt2(data);\r\n if (forgotResp.success) {\r\n setSuccess(true);\r\n setSpin(false);\r\n setResultMsg(\"Successfully reset.\");\r\n } else {\r\n setSuccess(false);\r\n setSpin(false);\r\n setResultMsg(forgotResp.message);\r\n }\r\n });\r\n })\r\n .catch((error) => {\r\n alert(\"Oops\", \"Error!\" + error);\r\n });\r\n }\r\n\r\n };\r\n return (\r\n <>\r\n
    \r\n \r\n
    Reset Login
    \r\n

    Enter your email address below to reset your login.

    \r\n
    \r\n setChecked(true)}>\r\n {appName} App\r\n \r\n setChecked(false)}>\r\n KYC Admin\r\n \r\n
    \r\n
    \r\n }\r\n value={email}\r\n onChange={(e) => setEmail(e.target.value)}\r\n />\r\n
    \r\n \r\n Reset\r\n \r\n \r\n {spin ? (\r\n
    \r\n \r\n

    Please wait...

    \r\n
    \r\n ) : (\r\n setLoading(false)}\r\n >\r\n Okay\r\n ,\r\n ]}\r\n />\r\n )}\r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default ConcurrentReset;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { Button, Input, Modal, Spin, Result, Checkbox } from \"antd\";\r\nimport { MailOutlined } from \"@ant-design/icons\";\r\nimport \"./LockedOut.css\";\r\nimport * as API from \"../../util/live_api\";\r\nimport { Decrypt, Decrypt2, ImgEncrypt } from \"../../util/EncryptionHandler\";\r\nimport CheckSession from \"../CheckSession\";\r\n\r\nconst LockedOut = () => {\r\n const [email, setEmail] = useState(\"\");\r\n const [username, setUsername] = useState(\"\"); //Email\r\n const [checked, setChecked] = useState(true);\r\n const [loading, setLoading] = useState(false);\r\n const [spin, setSpin] = useState(false);\r\n const [success, setSuccess] = useState(false);\r\n const [resultMsg, setResultMsg] = useState(\"\");\r\n let appName = JSON.parse(localStorage.getItem(\"appName\"));\r\n\r\n useEffect(() => {\r\n CheckSession();\r\n }, []);\r\n\r\n const handleMobileLockedOutReset = () => {\r\n if (email.trim() === \"\") {\r\n return alert(\"Please provide email address\");\r\n } else {\r\n setLoading(true);\r\n setSpin(true);\r\n }\r\n\r\n let Email = ImgEncrypt(email);\r\n\r\n if (appName === \"AGORA\") {\r\n fetch(Decrypt(API.AGORA_LOCKEDOUT), {\r\n method: \"POST\",\r\n headers: {\r\n Email,\r\n },\r\n })\r\n .then((response) => {\r\n response.json().then((data) => {\r\n let arogaLocked = Decrypt2(data);\r\n if (arogaLocked.success) {\r\n setSuccess(true);\r\n setSpin(false);\r\n setResultMsg(\"Successfully reset.\");\r\n setEmail(\"\");\r\n } else {\r\n setSuccess(false);\r\n setSpin(false);\r\n setResultMsg(arogaLocked.message);\r\n }\r\n });\r\n })\r\n .catch((error) => {\r\n alert(\"Oops\", \"Error!\" + error);\r\n });\r\n } else {\r\n fetch(Decrypt(API.ARUGA_LOCKEDOUT), {\r\n method: \"POST\",\r\n headers: {\r\n Email,\r\n },\r\n })\r\n .then((response) => {\r\n response.json().then((data) => {\r\n let arogaLocked = Decrypt2(data);\r\n if (arogaLocked.success) {\r\n setSuccess(true);\r\n setSpin(false);\r\n setResultMsg(\"Successfully reset.\");\r\n setEmail(\"\");\r\n } else {\r\n setSuccess(false);\r\n setSpin(false);\r\n setResultMsg(arogaLocked.message);\r\n }\r\n });\r\n })\r\n .catch((error) => {\r\n alert(\"Oops\", \"Error!\" + error);\r\n });\r\n }\r\n };\r\n\r\n const handleAdminLockedOutReset = () => {\r\n if (username.trim() === \"\") {\r\n return alert(\"Please provide username\");\r\n } else {\r\n setLoading(true);\r\n setSpin(true);\r\n }\r\n let Email = ImgEncrypt(username);\r\n if (appName === \"AGORA\") {\r\n fetch(Decrypt(API.ADMIN_LOCKEDOUT), {\r\n method: \"POST\",\r\n headers: {\r\n Email,\r\n },\r\n })\r\n .then((response) => {\r\n response.json().then((data) => {\r\n let adminLocked = Decrypt2(data);\r\n if (adminLocked.success) {\r\n setSuccess(true);\r\n setSpin(false);\r\n setResultMsg(\"Successfully reset.\");\r\n setUsername(\"\");\r\n } else {\r\n setSuccess(false);\r\n setSpin(false);\r\n setResultMsg(adminLocked.message);\r\n }\r\n });\r\n })\r\n .catch((error) => {\r\n alert(\"Oops\", \"Error!\" + error);\r\n });\r\n } else {\r\n fetch(Decrypt(API.ADMIN_LOCKEDOUT_DOCTORS), {\r\n method: \"POST\",\r\n headers: {\r\n Email,\r\n },\r\n })\r\n .then((response) => {\r\n response.json().then((data) => {\r\n let adminLocked = Decrypt2(data);\r\n if (adminLocked.success) {\r\n setSuccess(true);\r\n setSpin(false);\r\n setResultMsg(\"Successfully reset.\");\r\n setUsername(\"\");\r\n } else {\r\n setSuccess(false);\r\n setSpin(false);\r\n setResultMsg(adminLocked.message);\r\n }\r\n });\r\n })\r\n .catch((error) => {\r\n alert(\"Oops\", \"Error!\" + error);\r\n });\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n
    \r\n \r\n
    Reset Locked Out
    \r\n

    Enter your email address below to reset login.

    \r\n
    \r\n setChecked(true)}>\r\n {appName} App\r\n \r\n setChecked(false)}>\r\n KYC Admin\r\n \r\n
    \r\n\r\n
    \r\n {checked ? (\r\n }\r\n value={email}\r\n onChange={(e) => setEmail(e.target.value)}\r\n />\r\n ) : (\r\n }\r\n value={username}\r\n onChange={(e) => setUsername(e.target.value)}\r\n />\r\n )}\r\n
    \r\n \r\n Reset\r\n \r\n \r\n {spin ? (\r\n
    \r\n \r\n

    Please wait...

    \r\n
    \r\n ) : (\r\n setLoading(false)}\r\n >\r\n Okay\r\n ,\r\n ]}\r\n />\r\n )}\r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default LockedOut;\r\n","import React, { useState, useEffect } from \"react\";\r\nimport {\r\n Table,\r\n Modal,\r\n Input,\r\n Button,\r\n Select,\r\n Tag,\r\n Popconfirm,\r\n DatePicker,\r\n Tooltip\r\n} from \"antd\";\r\nimport moment from \"moment\";\r\nimport * as FileSaver from \"file-saver\";\r\nimport * as XLSX from \"xlsx\";\r\nimport jsPDF from \"jspdf\";\r\nimport \"jspdf-autotable\";\r\nimport CheckSession from \"./CheckSession\";\r\n\r\nimport LinearIndeterminate from \"./LinearInderterminate\";\r\nimport Spinner from \"./Newsletter/Spinner\";\r\nimport * as API from \"../util/live_api\";\r\nimport { Decrypt, Decrypt2, Encrypt2 } from \"../util/EncryptionHandler\";\r\n\r\nconst { Option } = Select;\r\nconst { Search, TextArea } = Input;\r\n\r\nexport default function AgoraAdvisory() {\r\n let user_info = JSON.parse(localStorage.getItem(\"user_info\"));\r\n let xlsreport = [];\r\n const file_Type =\r\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8\";\r\n const fileExtension = \".xlsx\";\r\n const [advisory, setAdvisory] = useState([]);\r\n const [temp, setTemp] = useState([]);\r\n const [details, setDetails] = useState({\r\n adv_id: \"\",\r\n advisoryname: \"\",\r\n status: \"\",\r\n open: \"\",\r\n datefrom: undefined,\r\n dateto: undefined,\r\n postedby: \"\",\r\n posteddate: undefined,\r\n editedby: \"\",\r\n edited: undefined,\r\n });\r\n const [modal, setModal] = useState(false);\r\n const [newAdvisory, setNewAdvisory] = useState(false);\r\n const [loading, setLoading] = useState(false);\r\n const [modalLoading, setModalLoading] = React.useState(false);\r\n const [success, setSuccess] = React.useState(null);\r\n const [successMsg, setSuccessMsg] = React.useState(\"\");\r\n const [savingMsg, setSavingMsg] = React.useState(\"\");\r\n const [filetype, setFiletype] = useState(\"\");\r\n const [selectedYear, setSelectedYear] = useState('');\r\n const [selectedMonth, setSelectedMonth] = useState(new Date().getMonth() + 1);\r\n\r\n // Create Dropdown with the Year Lists\r\n const currentYear = new Date().getFullYear();\r\n\r\n // Function to generate a range of years including the current year\r\n const generateYears = (startYear, endYear) => {\r\n let years = [];\r\n for (let year = endYear; year >= startYear; year--) {\r\n years.push(year);\r\n }\r\n return years;\r\n };\r\n\r\n const months = [\r\n \"January\", \"February\", \"March\", \"April\", \"May\", \"June\",\r\n \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"\r\n ]; \r\n\r\n // Assuming you want to show the last 5 years including the current year\r\n const years = generateYears(currentYear - 5, currentYear);\r\n\r\n useEffect(() => {\r\n CheckSession();\r\n loadComponent();\r\n }, []);\r\n\r\n const columns = [\r\n {\r\n dataIndex: \"adv_id\",\r\n className: \"hide\",\r\n width: 300,\r\n },\r\n {\r\n title: \"Advisory\",\r\n dataIndex: \"advisoryname\",\r\n width: 100,\r\n ellipsis: {\r\n showTitle: false,\r\n },\r\n render: (advisory) => (\r\n \r\n {advisory}\r\n \r\n ),\r\n },\r\n {\r\n title: \"Status\",\r\n dataIndex: \"status\",\r\n width: 100,\r\n render: (status) => {\r\n let color = \"geekblue\";\r\n if (status !== \"A\") {\r\n color = \"volcano\";\r\n }\r\n return (\r\n \r\n {status.toUpperCase()}\r\n \r\n );\r\n },\r\n },\r\n {\r\n title: \"Open\",\r\n dataIndex: \"open\",\r\n width: 200,\r\n render: (open) => {\r\n let color = \"geekblue\";\r\n if (open !== \"1\") {\r\n color = \"volcano\";\r\n }\r\n return (\r\n \r\n {open.toUpperCase()}\r\n \r\n );\r\n },\r\n },\r\n {\r\n title: \"Date From\",\r\n dataIndex: \"datefrom\",\r\n width: 200,\r\n },\r\n {\r\n title: \"Date To\",\r\n dataIndex: \"dateto\",\r\n width: 200,\r\n },\r\n {\r\n title: \"Posted by\",\r\n dataIndex: \"postedby\",\r\n width: 200,\r\n },\r\n {\r\n title: \"Posted Date\",\r\n dataIndex: \"posteddate\",\r\n width: 200,\r\n },\r\n {\r\n title: \"Edited by\",\r\n dataIndex: \"editedby\",\r\n width: 200,\r\n },\r\n {\r\n title: \"Edited Date\",\r\n dataIndex: \"editeddate\",\r\n width: 200,\r\n },\r\n ];\r\n\r\n // this is to trigger the Filter By Year in initial load (Current Year)\r\n useEffect(() => {\r\n if (temp.length > 0) {\r\n filterByYear(currentYear.toString()); \r\n }\r\n }, [temp]);\r\n\r\n async function loadComponent() {\r\n\r\n await GetAllAdvisory();\r\n \r\n }\r\n async function GetAllAdvisory() {\r\n try {\r\n setLoading(true);\r\n let resp = await fetch(Decrypt(API.GET_ALL_ADVISORY),{\r\n method: \"Get\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n },\r\n });\r\n let respJson = await resp.json();\r\n if (respJson === \"Invalid Access Token\") {\r\n setLoading(false);\r\n } else {\r\n let decryptedJson = respJson.data\r\n .map((data) => Decrypt2(data))\r\n .sort((a, b) => new Date(b.datefrom) - new Date(a.datefrom));\r\n\r\n setAdvisory(decryptedJson);\r\n setTemp(decryptedJson);\r\n setLoading(false);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n setLoading(false);\r\n }\r\n }\r\n function handleRowClick(record) {\r\n return {\r\n onClick: () => {\r\n setNewAdvisory(false);\r\n setModal(true);\r\n setDetails({\r\n adv_id: record.adv_id,\r\n advisoryname: record.advisoryname,\r\n open: record.open,\r\n status: record.status,\r\n datefrom: record.datefrom,\r\n dateto: record.dateto,\r\n postedby: record.postedby,\r\n posteddate: record.posteddate,\r\n editedby: record.editedby,\r\n edited: record.editeddate,\r\n });\r\n },\r\n };\r\n }\r\n function handleAddAdvisoryOnClick() {\r\n setNewAdvisory(true);\r\n setModal(true);\r\n setDetails({\r\n adv_id: \"\",\r\n advisoryname: \"\",\r\n open: \"\",\r\n status: \"\",\r\n datefrom: undefined,\r\n dateto: undefined,\r\n postedby: user_info.data.emailaddress,\r\n posteddate: moment(new Date()).format(\"LL\"),\r\n editedby: \"\",\r\n edited: undefined,\r\n });\r\n }\r\n async function handleAddAdvisory() {\r\n try {\r\n setModalLoading(true);\r\n setSuccess(null);\r\n setSavingMsg(\"Saving new feature...\");\r\n let value = Encrypt2({\r\n advisoryname: details.advisoryname,\r\n open: details.open,\r\n status: details.status,\r\n datefrom: moment(details.datefrom).format(\"LL\"),\r\n dateto: moment(details.dateto).format(\"LL\"),\r\n postedby: user_info.data.emailaddress,\r\n });\r\n\r\n let resp = await fetch(Decrypt(API.POST_ADVISORY), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ value }),\r\n });\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText);\r\n if (respJson.success) {\r\n setSuccess(true);\r\n setSuccessMsg(\"New advisory has been added.\");\r\n } else {\r\n setSuccess(false);\r\n setSuccessMsg(respJson.message);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function handleEditAdvisory() {\r\n try {\r\n setModalLoading(true);\r\n setSuccess(null);\r\n setSavingMsg(\"Saving changes...\");\r\n let value = Encrypt2({\r\n advisory_id: details.adv_id,\r\n advisoryname: details.advisoryname,\r\n open: details.open,\r\n status: details.status,\r\n datefrom: moment(details.datefrom).format(\"LL\"),\r\n dateto: moment(details.dateto).format(\"LL\"),\r\n editedby: user_info.data.emailaddress,\r\n });\r\n\r\n let resp = await fetch(Decrypt(API.UPDATE_ADVISORY), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ value }),\r\n });\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText);\r\n\r\n if (respJson.success) {\r\n setSuccess(true);\r\n setSuccessMsg(\"Advisory Successfully Updated\");\r\n } else {\r\n setSuccess(false);\r\n setSuccessMsg(respJson.message);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n // async function handleDeleteAdvisory(id) {\r\n // try {\r\n // setModalLoading(true);\r\n // setSuccess(null);\r\n // setSavingMsg(\"Saving changes...\");\r\n // let value = Encrypt2({\r\n // adv_id: id,\r\n // });\r\n // let resp = await fetch(Decrypt(API.DELETE_FEATURES), {\r\n // method: \"PUT\",\r\n // headers: {\r\n // \"Content-Type\": \"application/json\",\r\n // },\r\n // body: JSON.stringify({ value }),\r\n // });\r\n // let respText = await resp.json();\r\n // let respJson = await Decrypt2(respText);\r\n // if (respJson.is_success) {\r\n // setSuccess(true);\r\n // setSuccessMsg(\"Feature Successfully Deleted\");\r\n // } else {\r\n // setSuccess(false);\r\n // setSuccessMsg(respJson.error_message);\r\n // }\r\n // } catch (error) {\r\n // console.log(error);\r\n // }\r\n // }\r\n function closeSpinner() {\r\n setModalLoading(false);\r\n if (success === true) {\r\n setModal(false);\r\n setLoading(false);\r\n GetAllAdvisory();\r\n }\r\n }\r\n function search(str) {\r\n let searchedData = temp.filter((item) => {\r\n const itemData = `${item.advisoryname.toUpperCase()}`;\r\n const textData = str.toUpperCase();\r\n return itemData.indexOf(textData) > -1;\r\n });\r\n setAdvisory(searchedData);\r\n }\r\n function sort(by) {\r\n setAdvisory([]);\r\n let sorted = temp.sort((a, b) => {\r\n if (by === \"P\") {\r\n return new Date(b.posteddate) - new Date(a.posteddate);\r\n } else if (by === \"A\") {\r\n return a.advisoryname > b.advisoryname ? 1 : -1;\r\n } else if (by === \"D\") {\r\n return a.advisoryname < b.advisoryname ? 1 : -1;\r\n }\r\n return 0;\r\n });\r\n setAdvisory((prevAdvisory) => [...prevAdvisory, ...sorted]);\r\n }\r\n function filterByYear(year) {\r\n setSelectedYear(year);\r\n setAdvisory([]);\r\n let filtered = temp.filter(item => new Date(item.datefrom).getFullYear() === parseInt(year));\r\n setAdvisory((prevAdvisory) => [...prevAdvisory, ...filtered]);\r\n }\r\n\r\n useEffect(() => {\r\n filterByMonth(selectedMonth);\r\n }, [selectedMonth, selectedYear]);\r\n\r\n function filterByMonth(month) {\r\n setSelectedMonth(month);\r\n setAdvisory([]);\r\n \r\n let filtered = temp.filter(item => {\r\n let itemDate = new Date(item.datefrom);\r\n return (!selectedYear || itemDate.getFullYear() === parseInt(selectedYear, 10)) &&\r\n itemDate.getMonth() + 1 === parseInt(month, 10);\r\n });\r\n \r\n setAdvisory(filtered);\r\n }\r\n\r\n function exportToXLSX(xlsdata) {\r\n xlsdata.forEach((report) => {\r\n xlsreport = xlsreport.concat({\r\n adv_id: report.adv_id,\r\n advisoryname: report.advisoryname,\r\n status: report.status,\r\n open: report.open,\r\n datefrom: report.datefrom,\r\n dateto: report.dateto,\r\n postedby: report.postedby,\r\n posteddate: report.posteddate,\r\n editedby: report.editedby,\r\n editeddate: report.editeddate,\r\n });\r\n });\r\n const ws = XLSX.utils.json_to_sheet(xlsreport);\r\n const wb = { Sheets: { all_advisory: ws }, SheetNames: [\"all_advisory\"] };\r\n const excelBuffer = XLSX.write(wb, { bookType: \"xlsx\", type: \"array\" });\r\n const data = new Blob([excelBuffer], { type: file_Type });\r\n FileSaver.saveAs(data, \"advisory\" + fileExtension);\r\n }\r\n function exportToPDF(xlsdata) {\r\n const unit = \"pt\";\r\n const size = \"A4\";\r\n const orientation = \"landscape\";\r\n const doc = new jsPDF(orientation, unit, size);\r\n doc.setFontSize(15);\r\n\r\n const title = \"Agora App Advisory\";\r\n const headers = [\r\n [\r\n \"ID\",\r\n \"Advisory\",\r\n \"Status\",\r\n \"Open\",\r\n \"Date From\",\r\n \"Date To\",\r\n \"Posted by\",\r\n \"Posted date\",\r\n \"Edited by\",\r\n \"Edited date\",\r\n ],\r\n ];\r\n const data = xlsdata.map((element) => [\r\n element.adv_id,\r\n element.advisoryname,\r\n element.status,\r\n element.open,\r\n element.datefrom,\r\n element.dateto,\r\n element.postedby,\r\n element.posteddate,\r\n element.editedby,\r\n element.editeddate,\r\n ]);\r\n let content = {\r\n styles: {\r\n cellWidth: \"auto\",\r\n font: \"times\",\r\n fontSize: 8,\r\n },\r\n margin: { left: 10, right: 10 },\r\n startY: 50,\r\n head: headers,\r\n body: data,\r\n };\r\n\r\n doc.text(title, 40, 40);\r\n doc.autoTable(content);\r\n doc.save(\"AgoraAdvisory\" + \".pdf\");\r\n }\r\n\r\n return (\r\n
    \r\n {loading ? : null}\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n filterByYear(e)}\r\n value={selectedYear}\r\n >\r\n {years.map(year => (\r\n \r\n ))}\r\n \r\n \r\n filterByMonth(e)}\r\n value={selectedMonth}\r\n >\r\n {months.map((month, index) => (\r\n \r\n ))}\r\n \r\n \r\n sort(e)}\r\n >\r\n \r\n \r\n \r\n \r\n setFiletype(e)}\r\n >\r\n \r\n \r\n \r\n \r\n filetype === \"\"\r\n ? alert(\"Please select file type\")\r\n : filetype === \"Excel\"\r\n ? exportToXLSX(advisory)\r\n : exportToPDF(advisory)\r\n }\r\n >\r\n Export\r\n \r\n
    \r\n\r\n search(e.target.value)}\r\n allowClear\r\n />\r\n
    \r\n 0 ? advisory : null}\r\n columns={columns}\r\n onRow={handleRowClick}\r\n rowKey=\"adv_id\"\r\n style={{ paddingTop: 10, cursor: 'pointer' }}\r\n loading={loading}\r\n size=\"middle\"\r\n scroll={{ x: 1200, y: null }}\r\n pagination={{\r\n showSizeChanger: true,\r\n pageSizeOptions: ['5', '10', '20'],\r\n showTotal: (total) => `Total ${total} items`,\r\n }}\r\n />\r\n
    \r\n \r\n newAdvisory ? handleAddAdvisory() : handleEditAdvisory()\r\n }\r\n >\r\n Save\r\n ,\r\n ,\r\n ]}\r\n >\r\n
    \r\n \r\n {\r\n const val = e.target.value;\r\n setDetails((prevState) => {\r\n return { ...prevState, advisoryname: val };\r\n });\r\n }}\r\n style={{ marginBottom: 5, minHeight: 200 }}\r\n />\r\n\r\n
    \r\n
    \r\n \r\n \r\n setDetails((prevState) => {\r\n return { ...prevState, status: e };\r\n })\r\n }\r\n >\r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n setDetails((prevState) => {\r\n return { ...prevState, open: 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 setDetails((prevState) => {\r\n return { ...prevState, datefrom: e };\r\n })\r\n }\r\n />\r\n
    \r\n
    \r\n \r\n \r\n setDetails((prevState) => {\r\n return { ...prevState, dateto: 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 {newAdvisory ? null : (\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","import React, { useState, useEffect } from \"react\";\r\nimport {\r\n Table,\r\n Modal,\r\n Input,\r\n Button,\r\n Select,\r\n Tag,\r\n Popconfirm,\r\n DatePicker,\r\n} from \"antd\";\r\nimport moment from \"moment\";\r\nimport * as FileSaver from \"file-saver\";\r\nimport * as XLSX from \"xlsx\";\r\nimport jsPDF from \"jspdf\";\r\nimport \"jspdf-autotable\";\r\n\r\nimport LinearIndeterminate from \"./LinearInderterminate\";\r\nimport Spinner from \"./Newsletter/Spinner\";\r\nimport * as API from \"../util/live_api\";\r\nimport { Decrypt, Decrypt2, Encrypt2 } from \"../util/EncryptionHandler\";\r\n\r\nconst { Option } = Select;\r\nconst { Search, TextArea } = Input;\r\n\r\nexport default function ArugaAdvisory() {\r\n\r\n let user_info = JSON.parse(localStorage.getItem(\"user_info\"));\r\n let xlsreport = [];\r\n const file_Type =\r\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8\";\r\n const fileExtension = \".xlsx\";\r\n const [advisory, setAdvisory] = useState([]);\r\n const [temp, setTemp] = useState([]);\r\n const [details, setDetails] = useState({\r\n adv_id: \"\",\r\n advisoryname: \"\",\r\n status: \"\",\r\n open: \"\",\r\n datefrom: undefined,\r\n dateto: undefined,\r\n postedby: \"\",\r\n posteddate: undefined,\r\n editedby: \"\",\r\n edited: undefined,\r\n });\r\n const [modal, setModal] = useState(false);\r\n const [newAdvisory, setNewAdvisory] = useState(false);\r\n const [loading, setLoading] = useState(false);\r\n const [modalLoading, setModalLoading] = React.useState(false);\r\n const [success, setSuccess] = React.useState(null);\r\n const [successMsg, setSuccessMsg] = React.useState(\"\");\r\n const [savingMsg, setSavingMsg] = React.useState(\"\");\r\n const [filetype, setFiletype] = useState(\"\");\r\n \r\n const columns = [\r\n {\r\n dataIndex: \"adv_id\",\r\n className: \"hide\",\r\n },\r\n {\r\n title: \"Advisory\",\r\n dataIndex: \"advisoryname\",\r\n width: \"170px\",\r\n },\r\n {\r\n title: \"Status\",\r\n dataIndex: \"status\",\r\n render: (status) => {\r\n let color = \"geekblue\";\r\n if (status !== \"A\") {\r\n color = \"volcano\";\r\n }\r\n return (\r\n \r\n {status.toUpperCase()}\r\n \r\n );\r\n },\r\n },\r\n {\r\n title: \"Open\",\r\n dataIndex: \"open\",\r\n render: (open) => {\r\n let color = \"geekblue\";\r\n if (open !== \"1\") {\r\n color = \"volcano\";\r\n }\r\n return (\r\n \r\n {open.toUpperCase()}\r\n \r\n );\r\n },\r\n },\r\n {\r\n title: \"Date From\",\r\n dataIndex: \"datefrom\",\r\n width: \"160px\",\r\n },\r\n {\r\n title: \"Date To\",\r\n dataIndex: \"dateto\",\r\n width: \"160px\",\r\n },\r\n {\r\n title: \"Posted by\",\r\n dataIndex: \"postedby\",\r\n },\r\n {\r\n title: \"Posted Date\",\r\n dataIndex: \"posteddate\",\r\n width: \"160px\",\r\n },\r\n {\r\n title: \"Edited by\",\r\n dataIndex: \"editedby\",\r\n },\r\n {\r\n title: \"Edited Date\",\r\n dataIndex: \"editeddate\",\r\n width: \"160px\",\r\n },\r\n {\r\n title: \"Action\",\r\n key: \"action\",\r\n render: (record) =>\r\n advisory.length >= 1 ? (\r\n <>\r\n handleRowClick(record)}\r\n >\r\n Edit\r\n \r\n \r\n ) : null,\r\n },\r\n ];\r\n useEffect(() => {\r\n async function GetAllAdvisory() {\r\n try {\r\n setLoading(true);\r\n let resp = await fetch(Decrypt(API.DOCTORS_GET_ALL_ADVISORY), {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n method: \"GET\",\r\n });\r\n\r\n let respJson = await resp.json();\r\n if (respJson === \"Invalid Access Token\") {\r\n setLoading(false);\r\n } else {\r\n let decryptedJson = respJson.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n return newD;\r\n });\r\n\r\n setAdvisory(decryptedJson);\r\n setTemp(decryptedJson);\r\n setLoading(false);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n setLoading(false);\r\n }\r\n }\r\n GetAllAdvisory();\r\n }, [user_info.access_token]);\r\n async function GetAllAdvisory() {\r\n try {\r\n setLoading(true);\r\n let resp = await fetch(Decrypt(API.DOCTORS_GET_ALL_ADVISORY), {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n method: \"GET\",\r\n });\r\n let respJson = await resp.json();\r\n if (respJson === \"Invalid Access Token\") {\r\n setLoading(false);\r\n } else {\r\n let decryptedJson = respJson.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n return newD;\r\n });\r\n setAdvisory(decryptedJson);\r\n setTemp(decryptedJson);\r\n setLoading(false);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n setLoading(false);\r\n }\r\n }\r\n function handleRowClick(record) {\r\n setNewAdvisory(false);\r\n setModal(true);\r\n setDetails({\r\n adv_id: record.adv_id,\r\n advisoryname: record.advisoryname,\r\n open: record.open,\r\n status: record.status,\r\n datefrom: record.datefrom,\r\n dateto: record.dateto,\r\n postedby: record.postedby,\r\n posteddate: record.posteddate,\r\n editedby:user_info.data.emailaddress,\r\n edited: record.editeddate,\r\n });\r\n }\r\n function handleAddAdvisoryOnClick() {\r\n setNewAdvisory(true);\r\n setModal(true);\r\n setDetails({\r\n adv_id: \"\",\r\n advisoryname: \"\",\r\n open: \"\",\r\n status: \"\",\r\n datefrom: undefined,\r\n dateto: undefined,\r\n postedby: user_info.data.emailaddress,\r\n posteddate: moment(new Date()).format(\"LL\"),\r\n editedby: \"\",\r\n edited: undefined,\r\n });\r\n }\r\n async function handleAddAdvisory() {\r\n try {\r\n setModalLoading(true);\r\n setSuccess(null);\r\n setSavingMsg(\"Saving new feature...\");\r\n let value = Encrypt2({\r\n advisoryname: details.advisoryname,\r\n open: details.open,\r\n status: details.status,\r\n datefrom: moment(details.datefrom).format(\"LL\"),\r\n dateto: moment(details.dateto).format(\"LL\"),\r\n postedby: user_info.data.emailaddress,\r\n });\r\n\r\n let resp = await fetch(Decrypt(API.DOCTORS_POST_ADVISORY), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ value }),\r\n });\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText);\r\n if (respJson.success) {\r\n setSuccess(true);\r\n setSuccessMsg(\"New advisory has been added.\");\r\n } else {\r\n setSuccess(false);\r\n setSuccessMsg(respJson.message);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function handleEditAdvisory() {\r\n try {\r\n setModalLoading(true);\r\n setSuccess(null);\r\n setSavingMsg(\"Saving changes...\");\r\n let value = Encrypt2({\r\n advisory_id: details.adv_id,\r\n advisoryname: details.advisoryname,\r\n open: details.open === true ? 1 : 0,\r\n status: details.status,\r\n datefrom: moment(details.datefrom).format(\"LL\"),\r\n dateto: moment(details.dateto).format(\"LL\"),\r\n editedby: user_info.data.emailaddress,\r\n });\r\n\r\n let resp = await fetch(Decrypt(API.DOCTORS_UPDATE_ADVISORY), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ value }),\r\n });\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText);\r\n\r\n if (respJson.success) {\r\n setSuccess(true);\r\n setSuccessMsg(\"Advisory Successfully Updated\");\r\n } else {\r\n setSuccess(false);\r\n setSuccessMsg(respJson.message);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n function closeSpinner() {\r\n setModalLoading(false);\r\n if (success === true) {\r\n setModal(false);\r\n setLoading(false);\r\n GetAllAdvisory();\r\n }\r\n }\r\n function search(str) {\r\n let searchedData = temp.filter((item) => {\r\n const itemData = `${item.advisoryname.toUpperCase()}`;\r\n const textData = str.toUpperCase();\r\n return itemData.indexOf(textData) > -1;\r\n });\r\n setAdvisory(searchedData);\r\n }\r\n function sort(by) {\r\n setAdvisory([]);\r\n let sorted = temp.sort((a, b) => {\r\n if (by === \"P\") {\r\n return new Date(b.posteddate) - new Date(a.posteddate);\r\n } else if (by === \"A\") {\r\n return a.advisoryname > b.advisoryname ? 1 : -1;\r\n } else if (by === \"D\") {\r\n return a.advisoryname < b.advisoryname ? 1 : -1;\r\n }\r\n return 0;\r\n });\r\n setAdvisory((prevAdvisory) => [...prevAdvisory, ...sorted]);\r\n }\r\n function exportToXLSX(xlsdata) {\r\n xlsdata.forEach((report) => {\r\n xlsreport = xlsreport.concat({\r\n adv_id: report.adv_id,\r\n advisoryname: report.advisoryname,\r\n status: report.status,\r\n open: report.open,\r\n datefrom: report.datefrom,\r\n dateto: report.dateto,\r\n postedby: report.postedby,\r\n posteddate: report.posteddate,\r\n editedby: report.editedby,\r\n editeddate: report.editeddate,\r\n });\r\n });\r\n const ws = XLSX.utils.json_to_sheet(xlsreport);\r\n const wb = { Sheets: { all_advisory: ws }, SheetNames: [\"all_advisory\"] };\r\n const excelBuffer = XLSX.write(wb, { bookType: \"xlsx\", type: \"array\" });\r\n const data = new Blob([excelBuffer], { type: file_Type });\r\n FileSaver.saveAs(data, \"advisory\" + fileExtension);\r\n }\r\n function exportToPDF(xlsdata) {\r\n const unit = \"pt\";\r\n const size = \"A4\";\r\n const orientation = \"landscape\";\r\n const doc = new jsPDF(orientation, unit, size);\r\n doc.setFontSize(15);\r\n\r\n const title = \"Aruga App Advisory\";\r\n const headers = [\r\n [\r\n \"ID\",\r\n \"Advisory\",\r\n \"Status\",\r\n \"Open\",\r\n \"Date From\",\r\n \"Date To\",\r\n \"Posted by\",\r\n \"Posted date\",\r\n \"Edited by\",\r\n \"Edited date\",\r\n ],\r\n ];\r\n const data = xlsdata.map((element) => [\r\n element.adv_id,\r\n element.advisoryname,\r\n element.status,\r\n element.open,\r\n element.datefrom,\r\n element.dateto,\r\n element.postedby,\r\n element.posteddate,\r\n element.editedby,\r\n element.editeddate,\r\n ]);\r\n let content = {\r\n styles: {\r\n cellWidth: \"auto\",\r\n font: \"times\",\r\n fontSize: 8,\r\n },\r\n margin: { left: 10, right: 10 },\r\n startY: 50,\r\n head: headers,\r\n body: data,\r\n };\r\n\r\n doc.text(title, 40, 40);\r\n doc.autoTable(content);\r\n doc.save(\"ArugaAdvisory\" + \".pdf\");\r\n }\r\n\r\n return (\r\n
    \r\n {loading ? : null}\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n sort(e)}\r\n >\r\n \r\n \r\n \r\n \r\n setFiletype(e)}\r\n >\r\n \r\n \r\n \r\n \r\n filetype === \"\"\r\n ? alert(\"Please select file type\")\r\n : filetype === \"Excel\"\r\n ? exportToXLSX(advisory)\r\n : exportToPDF(advisory)\r\n }\r\n >\r\n Export\r\n \r\n
    \r\n\r\n search(e.target.value)}\r\n allowClear\r\n />\r\n
    \r\n 0 ? advisory : null}\r\n columns={columns}\r\n rowKey=\"adv_id\"\r\n style={{ paddingTop: 10, overflow: \"scroll\" }}\r\n loading={loading}\r\n size=\"middle\"\r\n />\r\n
    \r\n \r\n newAdvisory ? handleAddAdvisory() : handleEditAdvisory()\r\n }\r\n >\r\n Save\r\n ,\r\n ,\r\n ]}\r\n >\r\n
    \r\n \r\n {\r\n const val = e.target.value;\r\n setDetails((prevState) => {\r\n return { ...prevState, advisoryname: val };\r\n });\r\n }}\r\n style={{ marginBottom: 5 }}\r\n />\r\n\r\n
    \r\n
    \r\n \r\n \r\n setDetails((prevState) => {\r\n return { ...prevState, status: e };\r\n })\r\n }\r\n >\r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n setDetails((prevState) => {\r\n return { ...prevState, open: 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 setDetails((prevState) => {\r\n return { ...prevState, datefrom: e };\r\n })\r\n }\r\n />\r\n
    \r\n
    \r\n \r\n \r\n setDetails((prevState) => {\r\n return { ...prevState, dateto: 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 {newAdvisory ? null : (\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","import React, { useState, useEffect } from \"react\";\r\nimport { Table, Modal, Input, Button, Select, Alert, Tag } from \"antd\";\r\nimport { useToasts } from \"react-toast-notifications\";\r\nimport moment from \"moment\";\r\nimport * as API from \"../../util/live_api\";\r\nimport CheckSession from \"../CheckSession\";\r\nimport {\r\n Decrypt,\r\n Decrypt2,\r\n Encrypt,\r\n EncryptHeader,\r\n Encrypt2,\r\n ImgEncrypt,\r\n} from \"../../util/EncryptionHandler\";\r\n\r\nconst { Option } = Select;\r\n\r\nconst plan_columns = [\r\n {\r\n title: \"Corporate Account\",\r\n dataIndex: \"account\",\r\n key: \"account\",\r\n },\r\n {\r\n title: \"Company\",\r\n dataIndex: \"company\",\r\n },\r\n {\r\n dataIndex: \"recordid\",\r\n className: \"hide\",\r\n },\r\n];\r\n\r\nconst suspended_columns = [\r\n {\r\n title: \"Corporate Account\",\r\n dataIndex: \"corpacct\",\r\n key: \"corpacct\",\r\n },\r\n {\r\n title: \"Company\",\r\n dataIndex: \"company\",\r\n },\r\n {\r\n title: 'Status',\r\n key: 'tags',\r\n dataIndex: 'tags',\r\n render: tags => (\r\n <>\r\n {tags.map(tag => {\r\n let color = tag === 'active' ? 'geekblue' : 'green';\r\n if (tag === 'suspended') {\r\n color = 'volcano';\r\n }\r\n return (\r\n \r\n {tag.toUpperCase()}\r\n \r\n );\r\n })}\r\n \r\n ),\r\n },\r\n {\r\n title: \"Is Suspended\",\r\n dataIndex: \"is_suspended\",\r\n },\r\n {\r\n title: \"Posted Date\",\r\n dataIndex: \"posted\",\r\n },\r\n {\r\n title: \"Posted by\",\r\n dataIndex: \"posted_by\",\r\n },\r\n {\r\n title: \"Edited Date\",\r\n dataIndex: \"edited\",\r\n },\r\n {\r\n title: \"Edited by\",\r\n dataIndex: \"edited_by\",\r\n },\r\n {\r\n dataIndex: \"recordid\",\r\n className: \"hide\",\r\n key: \"recordid\",\r\n },\r\n];\r\n\r\nexport default function SuspendMaintenance() {\r\n //For Plan table\r\n const [searchValue, setsearchValue] = useState(\"\");\r\n const [pickedACCT, setpickedACCT] = useState(\"\");\r\n\r\n //For Suspended table\r\n const [lstSuspended, setlstSuspended] = useState([]);\r\n const [lstPlan, setlstPlan] = useState([]);\r\n //const [recordid, setRecordid] = useState(\"\");\r\n const [corpacct, setCorpacct] = useState(\"\");\r\n const [company, setCompany] = useState(\"\");\r\n const [plancompany, setPlanCompany] = useState(\"\");\r\n const [is_Suspended, setIs_Suspended] = useState(undefined);\r\n const [hasDataSuspended, setHasDataSuspended] = useState(false);\r\n const [hasDataPlan, setHasDataPlan] = useState(false);\r\n const [loading, setLoading] = useState(false);\r\n const [username, setUsername] = useState(\"\");\r\n\r\n //Modals\r\n const [modal_suspend, setModalSuspend] = useState(false);\r\n const [modal_plan, setModalPlan] = useState(false);\r\n const [modal_confirm, setModalConfirm] = useState(false);\r\n\r\n let user_info = JSON.parse(localStorage.getItem(\"user_info\"));\r\n\r\n const { addToast } = useToasts();\r\n\r\n useEffect(() => {\r\n CheckSession();\r\n getSuspendedData();\r\n }, []);\r\n\r\n async function getSuspendedData() {\r\n try {\r\n setUsername(user_info.data.emailaddress);\r\n let resp = await fetch(Decrypt(API.GET_ALL_SUSPENDED));\r\n let respJson = await resp.json();\r\n if (respJson === \"Invalid Access Token\") {\r\n setHasDataSuspended(false);\r\n return;\r\n } else {\r\n\r\n if (respJson.data.length > 0) {\r\n let decrypted = respJson.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n newD.property = \"tags\";\r\n\r\n if (newD.is_suspended === true) {\r\n newD.is_suspended = 1;\r\n newD.tags = ['suspended'];\r\n } else {\r\n newD.is_suspended = 0\r\n newD.tags = [\"active\"];\r\n }\r\n\r\n return newD;\r\n });\r\n\r\n setlstSuspended(decrypted);\r\n setHasDataSuspended(true);\r\n }\r\n else {\r\n setHasDataSuspended(false);\r\n alert(\"No existing suspended account.\");\r\n return;\r\n }\r\n\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n setHasDataSuspended(false);\r\n }\r\n\r\n return\r\n }\r\n\r\n function onSuspendRowClick(record) {\r\n return {\r\n onClick: () => {\r\n setModalSuspend(true);\r\n setCorpacct(record.corpacct);\r\n setCompany(record.company);\r\n if (record.is_suspended) {\r\n setIs_Suspended(1);\r\n }\r\n else {\r\n setIs_Suspended(0);\r\n }\r\n },\r\n };\r\n }\r\n\r\n async function onClickUpdateSuspend() {\r\n setLoading(true);\r\n setModalConfirm(false);\r\n\r\n try {\r\n let Value = Encrypt2({\r\n is_suspended: is_Suspended,\r\n corpacct: corpacct,\r\n edited_by: username\r\n });\r\n\r\n let resp = await fetch(Decrypt(API.UPDATE_SUSPENDED_STATUS), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ Value }),\r\n });\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText);\r\n if (respJson.is_success) {\r\n addToast(\"Suspended account successfully updated\", {\r\n appearance: \"success\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n getSuspendedData();\r\n setModalSuspend(false);\r\n setLoading(false);\r\n } else {\r\n addToast(respJson.message, {\r\n appearance: \"warning\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n setModalSuspend(false);\r\n setLoading(false);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n function onPlanRowClick(record) {\r\n return {\r\n onClick: () => {\r\n setpickedACCT(record.account);\r\n setPlanCompany(record.company);\r\n },\r\n };\r\n }\r\n\r\n function onClickAddSuspend() {\r\n setsearchValue(\"\");\r\n setpickedACCT(\"\");\r\n setHasDataPlan(true); //for loading of Search button\r\n setlstPlan([]);\r\n setModalPlan(true);\r\n }\r\n\r\n async function onClickSaveSuspend() {\r\n if (pickedACCT === \"\" || pickedACCT === null) {\r\n alert(\"No selected company.\");\r\n return;\r\n }\r\n\r\n setCorpacct(pickedACCT);\r\n setLoading(true);\r\n\r\n try {\r\n let Value = Encrypt2({\r\n is_suspended: 1,\r\n corpacct: pickedACCT,\r\n posted_by: username\r\n });\r\n\r\n let resp = await fetch(Decrypt(API.ADD_SUSPENDED_ACCOUNT), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ Value }),\r\n });\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText);\r\n\r\n if (respJson.is_success) {\r\n addToast(\"Suspended account successfully added.\", {\r\n appearance: \"success\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n getSuspendedData();\r\n setModalSuspend(false);\r\n setModalPlan(false);\r\n setLoading(false);\r\n } else {\r\n addToast(respJson.message, {\r\n appearance: \"warning\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n setModalSuspend(false);\r\n setModalPlan(false);\r\n setLoading(false);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function onSearchCompany() {\r\n if (searchValue.length == 0) {\r\n alert(\"Search field is empty.\");\r\n return;\r\n }\r\n \r\n setlstPlan([]);\r\n setHasDataPlan(false);\r\n\r\n try {\r\n let header_param = EncryptHeader(searchValue);\r\n let resp = await fetch(Decrypt(API.GET_ACCOUNT_BY_NAME), {\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n company: header_param,\r\n },\r\n });\r\n let respJson = await resp.json();\r\n if (respJson === \"Invalid Access Token\") {\r\n setHasDataPlan(false);\r\n return;\r\n } else {\r\n if (Array.isArray(respJson.data)) {\r\n if (respJson.data.length > 0) {\r\n let decrypted = respJson.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n return newD;\r\n });\r\n\r\n setHasDataPlan(true);\r\n setlstPlan(decrypted);\r\n }\r\n else {\r\n setHasDataPlan(false);\r\n setLoading(false);\r\n }\r\n }\r\n else {\r\n let header_param = EncryptHeader(searchValue);\r\n let resp = await fetch(Decrypt(API.GET_ACCOUNT_BY_CORPACCT), {\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n corpacct: header_param,\r\n },\r\n });\r\n\r\n let respJson = await resp.json();\r\n if (respJson === \"Invalid Access Token\") {\r\n setHasDataPlan(false);\r\n return;\r\n } else {\r\n let result = Decrypt2(respJson);\r\n if (result.is_success) {\r\n let final_plan = [];\r\n\r\n final_plan.push(result.data);\r\n setHasDataPlan(true);\r\n setlstPlan(final_plan);\r\n }\r\n else {\r\n setHasDataPlan(true);\r\n }\r\n }\r\n }\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n setHasDataPlan(false);\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n \r\n \r\n\r\n setModalConfirm(true)}\r\n >\r\n {loading ? (\r\n
    \r\n
    {\" \"}\r\n Saving...\r\n
    \r\n ) : (\r\n \"Update\"\r\n )}\r\n ,\r\n ,\r\n ]}>\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n setIs_Suspended(e)}\r\n >\r\n \r\n \r\n \r\n
    \r\n \r\n\r\n onClickSaveSuspend()}\r\n >\r\n {loading ? (\r\n
    \r\n
    {\" \"}\r\n Suspending...\r\n
    \r\n ) : (\r\n \"Suspend\"\r\n )}\r\n ,\r\n ,\r\n ]}>\r\n
    \r\n \r\n setsearchValue(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 onClickUpdateSuspend()}\r\n >\r\n {loading ? (\r\n
    \r\n
    {\" \"}\r\n Saving...\r\n
    \r\n ) : (\r\n \"YES\"\r\n )}\r\n ,\r\n ,\r\n ]}>\r\n

    \r\n Proceed with the changes?\r\n

    \r\n \r\n
    \r\n );\r\n}","/* nothing to put for now */\r\n\r\nimport React, { useState, useEffect } from \"react\";\r\nimport { Table, Modal, Input, Button, Select, Alert, Tag } from \"antd\";\r\nimport { useToasts } from \"react-toast-notifications\";\r\nimport moment from \"moment\";\r\nimport * as API from \"../../util/live_api\";\r\nimport {\r\n Decrypt,\r\n Decrypt2,\r\n Encrypt,\r\n EncryptHeader,\r\n Encrypt2,\r\n ImgEncrypt,\r\n} from \"../../util/EncryptionHandler\";\r\nimport CheckSession from \"../CheckSession\";\r\n\r\n\r\nconst { Option } = Select;\r\n\r\nconst plan_columns = [\r\n {\r\n title: \"Corporate Account\",\r\n dataIndex: \"account\",\r\n key: \"account\"\r\n },\r\n {\r\n title: \"Company\",\r\n dataIndex: \"company\",\r\n },\r\n {\r\n dataIndex: \"recordid\",\r\n className: \"hide\",\r\n },\r\n];\r\n\r\nconst feature_columns = [\r\n {\r\n title: \"Feature Name\",\r\n dataIndex: \"feature\",\r\n key: \"feature\"\r\n },\r\n {\r\n title: 'Status',\r\n key: 'tags',\r\n dataIndex: 'tags',\r\n render: tags => (\r\n <>\r\n {tags.map(tag => {\r\n let color = tag === 'active' ? 'geekblue' : 'green';\r\n if (tag === 'disabled') {\r\n color = 'volcano';\r\n }\r\n return (\r\n \r\n {tag.toUpperCase()}\r\n \r\n );\r\n })}\r\n \r\n ),\r\n },\r\n {\r\n title: \"Is Disabled\",\r\n dataIndex: \"is_disabled\",\r\n },\r\n {\r\n dataIndex: \"recordid\",\r\n className: \"hide\",\r\n },\r\n {\r\n dataIndex: \"corpfeaturesid\",\r\n key: \"corpfeaturesid\",\r\n className: \"hide\",\r\n },\r\n];\r\n\r\nexport default function DisableFeatureMaintenance() {\r\n //For Plan table\r\n const [searchValue, setsearchValue] = useState(\"\");\r\n const [pickedACCT, setpickedACCT] = useState(\"\");\r\n const [displayedACCT, setdisplayedACCT] = useState(\"\");\r\n\r\n //For Suspended table\r\n const [lstFeatures, setlstFeatures] = useState([]);\r\n //const [lstFeaturesDisabled, setlstFeaturesDisabled] = useState([]);\r\n const [lstPlan, setlstPlan] = useState([]);\r\n const [recordid, setRecordid] = useState(\"\");\r\n const [corpfeaturesid, setCorpfeaturesid] = useState(\"\");\r\n const [corpacct, setCorpacct] = useState(\"\");\r\n const [company, setCompany] = useState(\"\");\r\n const [feature, setFeature] = useState(\"\");\r\n const [is_disabled, setIs_disabled] = useState(undefined);\r\n\r\n const [hasDataFeatures, setHasDataFeature] = useState(false);\r\n const [hasDataFeaturesDisabled, setHasDataFeatureDisabled] = useState(false);\r\n const [hasDataPlan, setHasDataPlan] = useState(false);\r\n const [loading, setLoading] = useState(false);\r\n const [username, setUsername] = useState(\"\");\r\n\r\n //Modals\r\n const [modal_features, setModalFeatures] = useState(false);\r\n const [modal_plan, setModalPlan] = useState(false);\r\n const [modal_confirm, setModalConfirm] = useState(false);\r\n\r\n let user_info = JSON.parse(localStorage.getItem(\"user_info\"));\r\n\r\n const { addToast } = useToasts();\r\n\r\n useEffect(() => {\r\n CheckSession();\r\n getFeatureData();\r\n }, []);\r\n\r\n async function getFeatureData() {\r\n setHasDataFeature(true);\r\n setUsername(user_info.data.emailaddress);\r\n return\r\n }\r\n\r\n function onFeaturesRowClick(record) {\r\n return {\r\n onClick: () => {\r\n setModalFeatures(true);\r\n setRecordid(record.recordid);\r\n setFeature(record.feature);\r\n setIs_disabled(record.is_disabled);\r\n setCorpfeaturesid(record.corpfeaturesid);\r\n },\r\n };\r\n }\r\n\r\n async function onClickUpdateFeatureStatus() {\r\n setModalConfirm(false);\r\n\r\n if (is_disabled) {\r\n setLoading(true);\r\n try {\r\n //For Insertiong of disabled feature\r\n let Value = Encrypt2({\r\n corpacct: corpacct,\r\n recordid: recordid,\r\n posted_by: username\r\n });\r\n\r\n let resp = await fetch(Decrypt(API.DISABLE_FEATURE), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ Value }),\r\n });\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText);\r\n if (respJson.is_success) {\r\n addToast(\"Feature status successfully updated\", {\r\n appearance: \"success\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n RequeryFeatures(corpacct);\r\n setModalFeatures(false);\r\n setLoading(false);\r\n } else {\r\n addToast(respJson.message, {\r\n appearance: \"warning\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n setModalFeatures(false);\r\n setLoading(false);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n else {\r\n setLoading(true);\r\n //For deletion of disabled feature\r\n try {\r\n let Value = Encrypt2({\r\n corpacct: corpacct,\r\n corpfeaturesid: corpfeaturesid,\r\n });\r\n\r\n let resp = await fetch(Decrypt(API.UNDO_DISABLE_FEATURE), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ Value }),\r\n });\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText);\r\n if (respJson.is_success) {\r\n addToast(\"Feature status successfully updated\", {\r\n appearance: \"success\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n RequeryFeatures(corpacct);\r\n setModalFeatures(false);\r\n setLoading(false);\r\n } else {\r\n addToast(respJson.message, {\r\n appearance: \"warning\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n setModalFeatures(false);\r\n setLoading(false);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n }\r\n\r\n function onPlanRowClick(record) {\r\n\r\n return {\r\n onClick: () => {\r\n setpickedACCT(record.account);\r\n setCompany(record.company);\r\n },\r\n\r\n };\r\n }\r\n\r\n function onClickSearchCompany() {\r\n setsearchValue(\"\");\r\n setpickedACCT(\"\");\r\n setHasDataPlan(true); //for loading of Search button\r\n setlstPlan([]);\r\n setModalPlan(true);\r\n }\r\n\r\n async function RequeryFeatures(account) {\r\n if (account === \"\" || account === null) {\r\n alert(\"Error no account gathered.\");\r\n return;\r\n }\r\n\r\n try {\r\n let header_param = EncryptHeader(account);\r\n let resp = await fetch(Decrypt(API.GET_DISABLED_FEATURES), {\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n corpacct: header_param,\r\n },\r\n });\r\n let respJson = await resp.json();\r\n if (respJson === \"Invalid Access Token\") {\r\n setHasDataFeatureDisabled(false);\r\n return;\r\n } else {\r\n\r\n let decrypted = [];\r\n if (Array.isArray(respJson.data)) {\r\n decrypted = respJson.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n return newD;\r\n });\r\n }\r\n\r\n setHasDataFeatureDisabled(true);\r\n\r\n let resp = await fetch(Decrypt(API.GET_ALL_FEATURES), {\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n },\r\n });\r\n let respJson2 = await resp.json();\r\n if (respJson2 === \"Invalid Access Token\") {\r\n setHasDataFeature(false);\r\n return;\r\n } else {\r\n let final_output2 = Decrypt2(respJson2);\r\n if (final_output2.data.length > 0) {\r\n let decrypted2 = final_output2.data.map((data) => {\r\n let newD2 = Decrypt2(data);\r\n let result = decrypted.filter(x => x.recordid === newD2.featurerecid);\r\n let is_disabled_output = 0;\r\n let corpfeaturesid_temp = \"\";\r\n let temp_tag = ['active'];\r\n\r\n if (result.length > 0) {\r\n is_disabled_output = 1;\r\n corpfeaturesid_temp = result[0].corpfeaturesid;\r\n temp_tag = ['disabled'];\r\n }\r\n\r\n let final_data = {\r\n feature: newD2.feature,\r\n is_disabled: is_disabled_output,\r\n recordid: newD2.featurerecid,\r\n corpfeaturesid: corpfeaturesid_temp,\r\n tags: temp_tag\r\n }\r\n\r\n return final_data;\r\n });\r\n\r\n setlstFeatures(decrypted2);\r\n setHasDataFeature(true);\r\n }\r\n else {\r\n setHasDataFeature(false);\r\n alert(\"No existing features.\");\r\n return;\r\n }\r\n\r\n }\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n setHasDataFeature(false);\r\n }\r\n\r\n }\r\n\r\n async function onClickAccount() {\r\n if (pickedACCT.length == 0) {\r\n alert(\"No selected company.\");\r\n return;\r\n }\r\n\r\n setdisplayedACCT(pickedACCT + \"/\" + company);\r\n setCorpacct(pickedACCT);\r\n setLoading(false);\r\n setModalPlan(false);\r\n RequeryFeatures(pickedACCT);\r\n }\r\n\r\n async function onSearchCompany() {\r\n if (searchValue.length == 0) {\r\n alert(\"Search field is empty.\");\r\n return;\r\n }\r\n\r\n setlstPlan([]);\r\n setHasDataPlan(false);\r\n\r\n try {\r\n let header_param = EncryptHeader(searchValue);\r\n let resp = await fetch(Decrypt(API.GET_ACCOUNT_BY_NAME), {\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n company: header_param,\r\n },\r\n });\r\n let respJson = await resp.json();\r\n if (respJson === \"Invalid Access Token\") {\r\n setHasDataPlan(false);\r\n return;\r\n } else {\r\n if (Array.isArray(respJson.data)) {\r\n if (respJson.data.length > 0) {\r\n let decrypted = respJson.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n return newD;\r\n });\r\n\r\n setHasDataPlan(true);\r\n setlstPlan(decrypted);\r\n }\r\n else {\r\n setHasDataPlan(false);\r\n setLoading(false);\r\n }\r\n }\r\n else {\r\n let header_param = EncryptHeader(searchValue);\r\n let resp = await fetch(Decrypt(API.GET_ACCOUNT_BY_CORPACCT), {\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n corpacct: header_param,\r\n },\r\n });\r\n\r\n let respJson = await resp.json();\r\n if (respJson === \"Invalid Access Token\") {\r\n setHasDataPlan(false);\r\n return;\r\n } else {\r\n let result = Decrypt2(respJson);\r\n if (result.is_success) {\r\n let final_plan = [];\r\n\r\n final_plan.push(result.data);\r\n setHasDataPlan(true);\r\n setlstPlan(final_plan);\r\n }\r\n else {\r\n setHasDataPlan(true);\r\n alert(result.message);\r\n }\r\n }\r\n }\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n setHasDataPlan(false);\r\n }\r\n }\r\n\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 setModalConfirm(true)}\r\n >\r\n {loading ? (\r\n
    \r\n
    {\" \"}\r\n Saving...\r\n
    \r\n ) : (\r\n \"Update\"\r\n )}\r\n ,\r\n ,\r\n ]}>\r\n
    \r\n \r\n \r\n \r\n setIs_disabled(e)}\r\n >\r\n \r\n \r\n \r\n
    \r\n \r\n\r\n onClickAccount()}\r\n >\r\n {loading ? (\r\n
    \r\n
    {\" \"}\r\n Selecting...\r\n
    \r\n ) : (\r\n \"Select\"\r\n )}\r\n ,\r\n ,\r\n ]}>\r\n
    \r\n \r\n setsearchValue(e.target.value)} />\r\n \r\n

    \r\n \r\n \r\n \r\n
    \r\n \r\n\r\n onClickUpdateFeatureStatus()}\r\n >\r\n {loading ? (\r\n
    \r\n
    {\" \"}\r\n Saving...\r\n
    \r\n ) : (\r\n \"YES\"\r\n )}\r\n ,\r\n ,\r\n ]}>\r\n

    \r\n Proceed with the changes?\r\n

    \r\n \r\n
    \r\n );\r\n}","import React, { useState, useEffect } from \"react\";\r\nimport { Table, Modal, Input, Button, Select, Alert, Tag } from \"antd\";\r\nimport { useToasts } from \"react-toast-notifications\";\r\nimport * as API from \"../../util/live_api\";\r\nimport CheckSession from \"../CheckSession\";\r\nimport {\r\n Decrypt,\r\n Decrypt2,\r\n Encrypt2,\r\n} from \"../../util/EncryptionHandler\";\r\n\r\nconst emailfeature_columns = [\r\n {\r\n title: \"App Name\",\r\n dataIndex: \"appname\",\r\n },\r\n {\r\n title: \"API Code\",\r\n dataIndex: \"apicode\",\r\n },\r\n {\r\n title: \"URL Endpoint\",\r\n dataIndex: \"url\",\r\n },\r\n {\r\n title: \"Email Service\",\r\n dataIndex: \"emailsrvname\",\r\n },\r\n {\r\n title: \"Posted Date\",\r\n dataIndex: \"posted\",\r\n },\r\n {\r\n title: \"Posted by\",\r\n dataIndex: \"postedby\",\r\n },\r\n {\r\n title: \"Edited Date\",\r\n dataIndex: \"edit\",\r\n },\r\n {\r\n title: \"Edited by\",\r\n dataIndex: \"editby\",\r\n },\r\n {\r\n dataIndex: \"emailsrvurlid\",\r\n className: \"hide\",\r\n },\r\n];\r\n\r\nexport default function EmailFeature() {\r\n\r\n //for Adding of new App service\r\n const [srvlistNameValue, setsrvlistNameValue] = useState(\"\");\r\n const [appValue, setappValue] = useState(\"\");\r\n const [apiCodeValue, setapiCodeValue] = useState(\"\");\r\n const [servValue, setservValue] = useState(\"\");\r\n const [servURLIDValue, setservURLIDValue] = useState(\"\");\r\n const [endPointValue, setendPointValue] = useState(\"\");\r\n\r\n //For Service table\r\n const [lstURLs, setlstURLs] = useState([]);\r\n const [lstSRVs, setlstSRVs] = useState([]);\r\n const [hasDataURL, sethasDataURL] = useState(false);\r\n const [loading, setLoading] = useState(false);\r\n const [username, setUsername] = useState(\"\");\r\n\r\n //Modals\r\n const [modal_Add, setModal_Add] = useState(false);\r\n const [modal_Edit, setModal_Edit] = useState(false);\r\n const [modal_confirm, setModalConfirm] = useState(false);\r\n\r\n let user_info = JSON.parse(localStorage.getItem(\"user_info\"));\r\n\r\n const { addToast } = useToasts();\r\n\r\n useEffect(() => {\r\n CheckSession();\r\n getEmailURLData(); // for live\r\n }, []);\r\n\r\n async function getEmailURLData() {\r\n try {\r\n setUsername(user_info.data.emailaddress);\r\n let resp_srvurl = await fetch(Decrypt(API.GET_ALLSVRURL), {\r\n method: \"GET\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n }\r\n }); //\r\n\r\n let resp_srvlist = await fetch(Decrypt(API.GET_ALLSVRLIST), {\r\n method: \"GET\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n }\r\n }); //\r\n\r\n let respJson_url = await resp_srvurl.json();\r\n let respJson_list = await resp_srvlist.json();\r\n\r\n if (respJson_url === \"Invalid Access Token\") {\r\n sethasDataURL(false);\r\n return;\r\n } else {\r\n if (respJson_url.data.length > 0) {\r\n let decrypted = respJson_url.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n \r\n return newD;\r\n });\r\n\r\n setlstURLs(decrypted);\r\n sethasDataURL(true);\r\n }\r\n else {\r\n sethasDataURL(false);\r\n return alert(\"No existing URL list!\");\r\n }\r\n\r\n }\r\n\r\n if (respJson_list.data.length > 0) {\r\n let decrypted = respJson_list.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n\r\n return newD;\r\n });\r\n\r\n setlstSRVs(decrypted);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n sethasDataURL(false);\r\n }\r\n\r\n return\r\n }\r\n\r\n function onURLRowClick(record) {\r\n return {\r\n onClick: () => {\r\n setModal_Edit(true);\r\n setappValue(record.appname);\r\n setapiCodeValue(record.apicode);\r\n setendPointValue(record.url);\r\n setsrvlistNameValue(record.emailsrvname);\r\n setservURLIDValue(record.emailsrvurlid)\r\n setservValue(record.emailsrvlistid);\r\n },\r\n };\r\n }\r\n\r\n async function onClickUpdateService() {\r\n setLoading(true);\r\n setModalConfirm(false);\r\n\r\n try {\r\n let Value = Encrypt2({\r\n emailsrvurlid: servURLIDValue,\r\n emailsrvlistid: servValue,\r\n appname: appValue, \r\n url: endPointValue, \r\n apicode: apiCodeValue, \r\n postedby: username});\r\n\r\n let resp = await fetch(Decrypt(API.UPDATE_SVRURL), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ Value }),\r\n });\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText);\r\n if (respJson.success) {\r\n addToast(\"Server URL successfully updated\", {\r\n appearance: \"success\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n getEmailURLData();\r\n setModal_Edit(false);\r\n setLoading(false);\r\n } else {\r\n addToast(respJson.message, {\r\n appearance: \"warning\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n setModal_Edit(false);\r\n setLoading(false);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n function onClickAddService() {\r\n sethasDataURL(true); //for loading of Search button\r\n setModal_Add(true);\r\n setsrvlistNameValue(\"\");\r\n }\r\n\r\n async function onClickSaveService() {\r\n if (appValue === \"\" || appValue === null) {\r\n return alert(\"App Name field is empty, please check.\");\r\n }\r\n\r\n if (apiCodeValue === \"\" || apiCodeValue === null) {\r\n return alert(\"API Code field is empty, please check.\");\r\n }\r\n\r\n if (endPointValue === \"\" || endPointValue === null) {\r\n return alert(\"End point field is empty, please check.\");\r\n }\r\n \r\n if (srvlistNameValue === \"\" || srvlistNameValue === null) {\r\n return alert(\"Service field is empty, please check.\");\r\n }\r\n \r\n if (servValue === \"\" || servValue === null) {\r\n return alert(\"Service ID is empty, please contact MIS.\");\r\n }\r\n\r\n setLoading(true);\r\n\r\n\r\n try {\r\n let Value = Encrypt2({\r\n emailsrvlistid: servValue,\r\n appname: appValue, \r\n url: endPointValue, \r\n apicode: apiCodeValue, \r\n postedby: username});\r\n\r\n let resp = await fetch(Decrypt(API.ADD_SVRURL), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ Value }),\r\n });\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText);\r\n\r\n if (respJson.success) {\r\n addToast(\"App URL successfully added\", {\r\n appearance: \"success\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n getEmailURLData();\r\n setModal_Add(false);\r\n setLoading(false);\r\n } else {\r\n addToast(respJson.message, {\r\n appearance: \"warning\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n setModal_Add(false);\r\n setLoading(false);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function captureSelectedService(item) {\r\n let service_name = item;\r\n\r\n var value = lstSRVs.filter(function(item) {\r\n return item.emailsrvname.toUpperCase() == service_name.toUpperCase();\r\n });\r\n \r\n setsrvlistNameValue(service_name);\r\n setservValue(value[0].emailsrvlistid.toUpperCase());\r\n }\r\n\r\n return (\r\n
    \r\n \r\n \r\n\r\n setModalConfirm(true)}\r\n >\r\n {loading ? (\r\n
    \r\n
    {\" \"}\r\n Saving...\r\n
    \r\n ) : (\r\n \"Update\"\r\n )}\r\n ,\r\n ,\r\n ]}>\r\n
    \r\n \r\n setapiCodeValue(e.target.value)}/>\r\n \r\n setappValue(e.target.value)}/>\r\n \r\n setendPointValue(e.target.value)} />\r\n \r\n \r\n
    \r\n \r\n\r\n onClickSaveService()} //onClickSaveSuspend\r\n >\r\n {loading ? (\r\n
    \r\n
    {\" \"}\r\n Adding...\r\n
    \r\n ) : (\r\n \"Save\"\r\n )}\r\n ,\r\n ,\r\n ]}>\r\n
    \r\n \r\n setappValue(e.target.value)} />\r\n \r\n captureSelectedService(e)}\r\n >\r\n {lstSRVs.map(val => )}\r\n \r\n \r\n setendPointValue(e.target.value)} />\r\n \r\n setapiCodeValue(e.target.value)} />\r\n

    \r\n
    \r\n\r\n \r\n \r\n\r\n onClickUpdateService()}\r\n >\r\n {loading ? (\r\n
    \r\n
    {\" \"}\r\n Saving...\r\n
    \r\n ) : (\r\n \"YES\"\r\n )}\r\n ,\r\n ,\r\n ]}>\r\n

    \r\n Proceed with the changes?\r\n

    \r\n \r\n
    \r\n );\r\n}","import React, { useState, useEffect } from \"react\";\r\nimport { Table, Modal, Input, Button, Select, Alert, Tag } from \"antd\";\r\nimport { useToasts } from \"react-toast-notifications\";\r\nimport * as API from \"../../util/live_api\";\r\n\r\nimport {\r\n Decrypt,\r\n Decrypt2,\r\n Encrypt2,\r\n EncryptHeader,\r\n} from \"../../util/EncryptionHandler\";\r\nimport CheckSession from \"../CheckSession\";\r\n\r\nconst { Option } = Select;\r\n\r\nconst emailconfig_columns = [\r\n {\r\n title: \"Key\",\r\n dataIndex: \"key\",\r\n },\r\n {\r\n title: \"Value\",\r\n dataIndex: \"value\",\r\n },\r\n {\r\n title: 'Status',\r\n key: 'tags',\r\n dataIndex: 'tags',\r\n render: tags => (\r\n <>\r\n {tags.map(tag => {\r\n let color = tag === 'active' ? 'geekblue' : 'green';\r\n if (tag === 'disabled') {\r\n color = 'volcano';\r\n }\r\n return (\r\n \r\n {tag.toUpperCase()}\r\n \r\n );\r\n })}\r\n \r\n ),\r\n },\r\n {\r\n title: \"Posted Date\",\r\n dataIndex: \"posted\",\r\n },\r\n {\r\n title: \"Posted by\",\r\n dataIndex: \"postedby\",\r\n },\r\n {\r\n title: \"Edited Date\",\r\n dataIndex: \"edit\",\r\n },\r\n {\r\n title: \"Edited by\",\r\n dataIndex: \"editby\",\r\n },\r\n {\r\n dataIndex: \"emailsrvlistid\",\r\n className: \"hide\",\r\n },\r\n];\r\n\r\nconst emailservice_columns = [\r\n {\r\n title: \"Email Service\",\r\n dataIndex: \"emailsrvname\",\r\n },\r\n {\r\n title: 'Status',\r\n key: 'tags',\r\n dataIndex: 'tags',\r\n render: tags => (\r\n <>\r\n {tags.map(tag => {\r\n let color = tag === 'active' ? 'geekblue' : 'green';\r\n if (tag === 'disabled') {\r\n color = 'volcano';\r\n }\r\n return (\r\n \r\n {tag.toUpperCase()}\r\n \r\n );\r\n })}\r\n \r\n ),\r\n },\r\n {\r\n title: \"Is Active\",\r\n dataIndex: \"active\",\r\n },\r\n {\r\n title: \"Posted Date\",\r\n dataIndex: \"posted\",\r\n },\r\n {\r\n title: \"Posted by\",\r\n dataIndex: \"postedby\",\r\n },\r\n {\r\n title: \"Edited Date\",\r\n dataIndex: \"edit\",\r\n },\r\n {\r\n title: \"Edited by\",\r\n dataIndex: \"editby\",\r\n },\r\n {\r\n dataIndex: \"emailsrvlistid\",\r\n className: \"hide\",\r\n },\r\n];\r\n\r\nexport default function EmailFeature() {\r\n\r\n //for Adding of new Config service\r\n const [keyValue, setkeyValue] = useState(\"\");\r\n const [valValue, setvalValue] = useState(\"\");\r\n\r\n //for Adding of new App service\r\n const [servNameValue, setservNameValue] = useState(\"\");\r\n const [emailsrvID, setemailsrvID] = useState(\"\");\r\n const [emailconfigID, setemailconfigID] = useState(\"\");\r\n\r\n //For Service table\r\n const [lstServices, setlstServices] = useState([]);\r\n const [lstConfigs, setlstConfigs] = useState([]);\r\n const [is_disabledService, setIs_disabledService] = useState(undefined);\r\n const [is_disabledConfig, setIs_disabledConfig] = useState(undefined);\r\n\r\n const [hasDataService, sethasDataService] = useState(false);\r\n const [hasDataConfig, sethasDataConfig] = useState(false);\r\n const [loading, setLoading] = useState(false);\r\n const [username, setUsername] = useState(\"\");\r\n\r\n //Modals\r\n const [modal_Add, setModal_Add] = useState(false);\r\n const [modal_Edit, setModal_Edit] = useState(false);\r\n const [modal_confirm, setModalConfirm] = useState(false);\r\n const [modal_Add_Config, setModal_Add_Config] = useState(false);\r\n const [modal_Edit_Config, setModal_Edit_Config] = useState(false);\r\n\r\n let user_info = JSON.parse(localStorage.getItem(\"user_info\"));\r\n\r\n const { addToast } = useToasts();\r\n\r\n useEffect(() => {\r\n CheckSession();\r\n getSRVListData(); // for live\r\n }, []);\r\n\r\n async function getSRVListData() {\r\n try {\r\n setUsername(user_info.data.emailaddress);\r\n let resp_srvlist = await fetch(Decrypt(API.GET_ALLSVRLIST), {\r\n method: \"GET\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n }\r\n }); \r\n let respJson_list = await resp_srvlist.json();\r\n\r\n if (respJson_list === \"Invalid Access Token\") {\r\n sethasDataService(false);\r\n return;\r\n } else {\r\n if (respJson_list.data.length > 0) {\r\n let decrypted = respJson_list.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n\r\n newD.property = \"tags\";\r\n\r\n if (newD.active === true) {\r\n newD.active = 1;\r\n newD.tags = ['active'];\r\n } else {\r\n newD.active = 0\r\n newD.tags = [\"disabled\"];\r\n }\r\n\r\n return newD;\r\n });\r\n \r\n setlstServices(decrypted);\r\n sethasDataService(true);\r\n }\r\n else {\r\n sethasDataService(false);\r\n return alert(\"No existing service list!\");\r\n }\r\n\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n sethasDataService(false);\r\n }\r\n\r\n return\r\n }\r\n\r\n async function getSRVConfigList() {\r\n try {\r\n setUsername(user_info.data.emailaddress);\r\n let header_param = EncryptHeader(emailsrvID);\r\n\r\n let resp_srvlist = await fetch(Decrypt(API.GET_ALLSVRCONFIG), {\r\n method: \"GET\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n recordid: header_param,\r\n }\r\n }); \r\n let respJson_list = await resp_srvlist.json();\r\n\r\n if (respJson_list === \"Invalid Access Token\") {\r\n sethasDataConfig(false);\r\n return;\r\n } else {\r\n if (respJson_list.data.length > 0) {\r\n let decrypted = respJson_list.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n\r\n newD.property = \"tags\";\r\n\r\n if (newD.active === true) {\r\n newD.active = 1;\r\n newD.tags = ['active'];\r\n } else {\r\n newD.active = 0\r\n newD.tags = [\"disabled\"];\r\n }\r\n\r\n return newD;\r\n });\r\n\r\n setlstConfigs(decrypted);\r\n sethasDataConfig(true);\r\n }\r\n else {\r\n sethasDataConfig(false);\r\n return alert(\"No existing service list!\");\r\n }\r\n\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n sethasDataConfig(false);\r\n }\r\n\r\n return\r\n }\r\n\r\n function onClickAddService() {\r\n sethasDataService(true); //for loading of Search button\r\n setModal_Add(true);\r\n setservNameValue(\"\");\r\n setIs_disabledService(true);\r\n setemailsrvID(\"\");\r\n }\r\n\r\n function onServiceRowClick(record) {\r\n return {\r\n onClick: () => {\r\n setModal_Edit(true);\r\n setIs_disabledService(record.active);\r\n setservNameValue(record.emailsrvname);\r\n setemailsrvID(record.emailsrvlistid);\r\n },\r\n };\r\n }\r\n\r\n async function onClickUpdateService() {\r\n setLoading(true);\r\n setModalConfirm(false);\r\n\r\n if (servNameValue === \"\" || servNameValue === null) {\r\n return alert(\"Server list name field is empty, please check.\");\r\n }\r\n\r\n if (emailsrvID === \"\" || emailsrvID === null) {\r\n return alert(\"Server ID is missing, please contact M.I.S.\");\r\n }\r\n\r\n if (is_disabledService === \"\" || is_disabledService === null) {\r\n return alert(\"Active field is empty, please check.\");\r\n }\r\n\r\n let act_status = true;\r\n\r\n if (is_disabledService === 0) {\r\n act_status = false;\r\n }\r\n\r\n try {\r\n let Value = Encrypt2({\r\n recordid: emailsrvID, \r\n servername: servNameValue, \r\n isActive: act_status, \r\n editby: username});\r\n\r\n let resp = await fetch(Decrypt(API.UPDATE_SVRLIST), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ Value }),\r\n });\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText);\r\n if (respJson.success) {\r\n addToast(\"Server list successfully updated\", {\r\n appearance: \"success\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n getSRVListData();\r\n setModal_Edit(false);\r\n setLoading(false);\r\n } else {\r\n addToast(respJson.message, {\r\n appearance: \"warning\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n setModal_Edit(false);\r\n setLoading(false);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n function onConfigRowClick(record) {\r\n\r\n return {\r\n onClick: () => {\r\n setkeyValue(record.key);\r\n setvalValue(record.value);\r\n setemailconfigID(record.emailsrvconfigid);\r\n setIs_disabledConfig(record.active);\r\n setModal_Edit_Config(true);\r\n },\r\n\r\n };\r\n }\r\n\r\n async function onAddConfig() {\r\n if (keyValue === \"\" || keyValue === null) {\r\n return alert(\"Key field is empty, please check.\");\r\n }\r\n\r\n if (valValue === \"\" || valValue === null) {\r\n return alert(\"Value field is empty, please check.\");\r\n }\r\n\r\n if (is_disabledConfig === \"\" || is_disabledConfig === null) {\r\n return alert(\"Active field is empty, please check.\");\r\n }\r\n\r\n let act_status = true;\r\n\r\n if (is_disabledConfig === 0) {\r\n act_status = false;\r\n }\r\n\r\n setLoading(true);\r\n \r\n try {\r\n let Value = Encrypt2({\r\n emailsrvlistid:emailsrvID, \r\n key: keyValue, \r\n value: valValue, \r\n active: act_status, \r\n postedby: username });\r\n\r\n let resp = await fetch(Decrypt(API.ADD_SVRCONFIG), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ Value }),\r\n });\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText);\r\n\r\n if (respJson.success) {\r\n addToast(\"Server config successfully added\", {\r\n appearance: \"success\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n getSRVConfigList();\r\n setModal_Add(false);\r\n setLoading(false);\r\n } else {\r\n addToast(respJson.message, {\r\n appearance: \"warning\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n setModal_Add(false);\r\n setLoading(false);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function onClickSaveService() {\r\n if (servNameValue === \"\" || servNameValue === null) {\r\n return alert(\"Server list name field is empty, please check.\");\r\n }\r\n\r\n if (is_disabledService === \"\" || is_disabledService === null) {\r\n return alert(\"Active field is empty, please check.\");\r\n }\r\n\r\n let act_status = true;\r\n\r\n if (is_disabledService === 0) {\r\n act_status = false;\r\n }\r\n\r\n setLoading(true);\r\n \r\n try {\r\n let Value = Encrypt2({servername: servNameValue, isActive: act_status, postedby: username});\r\n\r\n let resp = await fetch(Decrypt(API.ADD_SVRLIST), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ Value }),\r\n });\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText);\r\n\r\n if (respJson.success) {\r\n addToast(\"Server list successfully added\", {\r\n appearance: \"success\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n getSRVListData();\r\n setModal_Add(false);\r\n setLoading(false);\r\n } else {\r\n addToast(respJson.message, {\r\n appearance: \"warning\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n setModal_Add(false);\r\n setLoading(false);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n function onClickAddNewConfig() {\r\n setModal_Add_Config(true);\r\n getSRVConfigList();\r\n setLoading(true);\r\n }\r\n\r\n async function onSaveEditConfig() {\r\n if (keyValue === \"\" || keyValue === null) {\r\n return alert(\"Key field is empty, please check.\");\r\n }\r\n\r\n if (valValue === \"\" || valValue === null) {\r\n return alert(\"Value field is empty, please check.\");\r\n }\r\n\r\n if (emailconfigID === \"\" || emailconfigID === null) {\r\n return alert(\"Config ID is missing, please contact M.I.S.\");\r\n }\r\n\r\n if (is_disabledConfig === \"\" || is_disabledConfig === null) {\r\n return alert(\"Active field is empty, please check.\");\r\n }\r\n\r\n let act_status = true;\r\n\r\n if (is_disabledConfig === 0) {\r\n act_status = false;\r\n }\r\n\r\n setLoading(true);\r\n \r\n try {\r\n let Value = Encrypt2({\r\n recordid: emailconfigID, \r\n key: keyValue, \r\n value: valValue, \r\n active: act_status, \r\n editby: username });\r\n\r\n let resp = await fetch(Decrypt(API.UPDATE_SVRLISTCONFIG), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ Value }),\r\n });\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText);\r\n\r\n if (respJson.success) {\r\n addToast(\"Server config successfully updated\", {\r\n appearance: \"success\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n getSRVConfigList();\r\n setModal_Edit_Config(false);\r\n setLoading(false);\r\n } else {\r\n addToast(respJson.message, {\r\n appearance: \"warning\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n setModal_Edit_Config(false);\r\n setLoading(false);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n \r\n \r\n\r\n onClickAddNewConfig()}>\r\n Configurations\r\n ,\r\n setModalConfirm(true)}\r\n >\r\n Update\r\n ,\r\n ,\r\n ]}>\r\n
    \r\n \r\n \r\n setservNameValue(e.target.value)} />\r\n \r\n setIs_disabledService(e)}\r\n >\r\n \r\n \r\n \r\n
    \r\n \r\n\r\n onClickSaveService()} //onClickSaveSuspend\r\n > \r\n Save \r\n ,\r\n ,\r\n ]}>\r\n
    \r\n \r\n \r\n setservNameValue(e.target.value)} />\r\n \r\n setIs_disabledService(e)}\r\n >\r\n \r\n \r\n \r\n
    \r\n

    \r\n \r\n \r\n\r\n setModal_Add_Config(false)} key=\"close\">\r\n Close\r\n ,\r\n ]}>\r\n
    \r\n \r\n setkeyValue(e.target.value)} />\r\n \r\n setvalValue(e.target.value)} />\r\n \r\n setIs_disabledConfig(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 setModal_Edit_Config(false)} key=\"close\">\r\n Close\r\n ,\r\n ]}>\r\n
    \r\n \r\n setkeyValue(e.target.value)} />\r\n \r\n setvalValue(e.target.value)} />\r\n \r\n setIs_disabledConfig(e)}\r\n >\r\n \r\n \r\n \r\n

    \r\n \r\n

    \r\n
    \r\n \r\n\r\n onClickUpdateService()}>\r\n \"YES\"\r\n ,\r\n ,\r\n ]}>\r\n

    \r\n Proceed with the changes?\r\n

    \r\n \r\n
    \r\n );\r\n}","import React, { useEffect, useState } from \"react\";\r\nimport { useToasts } from \"react-toast-notifications\";\r\nimport * as API from \"../util/live_api\";\r\nimport { Decrypt, Decrypt2, EncryptHeader } from \"../util/EncryptionHandler\";\r\n\r\nconst useLogout = (startTime) => {\r\n const [timer, setTimer] = useState(startTime);\r\n const [warningTime] = useState(10 * 1000);\r\n const [logoutTime] = useState(10 * 1000);\r\n const [toastId, setToastID] = useState(\"\");\r\n const [toastId5mins, setToastID5mins] = useState(\"\");\r\n\r\n let user_info = JSON.parse(localStorage.getItem(\"user_info\"));\r\n const { addToast, removeToast } = useToasts();\r\n\r\n let warnTimeout;\r\n let logoutTimeout;\r\n\r\n useEffect(() => {\r\n const myInterval = setInterval(() => {\r\n if (timer > 0) {\r\n setTimer(timer - 1);\r\n }\r\n }, 1000);\r\n\r\n if (timer == 610) {\r\n if (user_info) {\r\n FiveMins();\r\n }\r\n }\r\n\r\n if (timer == 10) {\r\n if (user_info) {\r\n TimeOut();\r\n }\r\n }\r\n const resetTimeout = () => {\r\n removeToast(toastId5mins);\r\n // removeToast(toastId);\r\n setTimer(startTime);\r\n };\r\n const events = [\r\n \"load\",\r\n \"mousemove\",\r\n \"mousedown\",\r\n \"click\",\r\n \"scroll\",\r\n \"keypress\",\r\n ];\r\n for (let i in events) {\r\n window.addEventListener(events[i], resetTimeout);\r\n }\r\n return () => {\r\n clearInterval(myInterval);\r\n for (let i in events) {\r\n window.removeEventListener(events[i], resetTimeout);\r\n }\r\n };\r\n });\r\n\r\n function TimeOut() {\r\n // setTimeout(warn, warningTime);\r\n // setTimeout(SessionUpdate, warningTime + logoutTime);\r\n warnTimeout = setTimeout(warn, warningTime);\r\n logoutTimeout = setTimeout(SessionUpdate, warningTime + logoutTime);\r\n }\r\n\r\n function FiveMins() {\r\n warnTimeout = setTimeout(fivemins, warningTime);\r\n }\r\n\r\n function clearTimeouts() {\r\n if (warnTimeout) clearTimeout(warnTimeout);\r\n if (SessionUpdate) clearTimeout(logoutTimeout);\r\n }\r\n\r\n function logout() {\r\n localStorage.removeItem(\"user_info\");\r\n localStorage.removeItem(\"current_pw\");\r\n window.location.href = window.location.origin + \"/login\";\r\n }\r\n\r\n async function SessionUpdate() {\r\n let EncryptedEmail = EncryptHeader(user_info.data.emailaddress);\r\n\r\n let stat_resp = await fetch(Decrypt(API.LOGOUT_USER_STAT), {\r\n method: \"POST\",\r\n headers: {\r\n Email: EncryptedEmail,\r\n },\r\n });\r\n\r\n let stat_respText = await stat_resp.text();\r\n let stat_respJson = await Decrypt2(stat_respText.replace(/\"/g, \"\"));\r\n\r\n if (stat_respJson.success) {\r\n logout();\r\n } else {\r\n addToast(\"Error\", {\r\n appearance: \"error\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 2000,\r\n });\r\n }\r\n }\r\n\r\n function fivemins() {\r\n document.title = \"Idle warning...\";\r\n addToast(\r\n \"You have been idle for atleast 5 minutes.\",\r\n {\r\n appearance: \"warning\",\r\n // autoDismiss: true,\r\n // autoDismissTimeout: logoutTime,\r\n },\r\n (id) => {\r\n setToastID5mins(id);\r\n }\r\n );\r\n }\r\n\r\n function warn() {\r\n document.title = \"Logging Out...\";\r\n addToast(\r\n \"You are about to logout in \" +\r\n logoutTime / 1000 +\r\n \" seconds due to inactivity.\",\r\n {\r\n appearance: \"error\",\r\n autoDismiss: true,\r\n autoDismissTimeout: logoutTime,\r\n },\r\n (id) => {\r\n setToastID(id);\r\n }\r\n );\r\n }\r\n\r\n return timer;\r\n};\r\n\r\nexport default useLogout;\r\n","import { Button, Input, Modal, Select, Table, Tag } from \"antd\";\r\nimport { MDBIcon } from \"mdbreact\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { useToasts } from \"react-toast-notifications\";\r\nimport styled from \"styled-components\";\r\nimport {\r\n Decrypt,\r\n Decrypt2,\r\n DecryptResp,\r\n Encrypt2,\r\n EncryptHeader,\r\n} from \"../../util/EncryptionHandler\";\r\nimport * as API from \"../../util/live_api\";\r\nimport CheckSession from \"../CheckSession\";\r\nimport LoadSpinner from \"../../global/spinner/globalspinner\";\r\n\r\nconst IDCardContainer = styled.div`\r\n position: relative;\r\n width: 100%;\r\n height: 488px;\r\n padding: 20px;\r\n // border: 1px solid #ddd;\r\n border-radius: 30px;\r\n background-size: contain; /* Ensure background image covers the entire container */\r\n background-position: center;\r\n background-repeat: no-repeat;\r\n box-sizing: border-box;\r\n overflow: visible; /* Ensure overflow is visible */\r\n`;\r\n\r\nconst IDCardContent = styled.div`\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: space-between;\r\n align-items: flex-end;\r\n height: 60%; /* Adjust this height if needed */\r\n width: 90%; /* Ensure it fills the width of the container */\r\n position: absolute; /* Allows positioning within the parent container */\r\n bottom: 0; /* Position it at the bottom of the parent container */\r\n margin-bottom: calc(\r\n 340px * 0.02\r\n ); /* Dynamic margin based on container height (2% of height) */\r\n // background-color: #000;\r\n`;\r\n\r\nconst IDCardImageContainer = styled.div`\r\n position: absolute;\r\n top: 20px; /* Adjust the top position */\r\n right: -20px; /* Adjust the right position */\r\n flex-shrink: 0; /* Prevent the container from shrinking */\r\n`;\r\n\r\nconst IDCardImage = styled.img`\r\n width: calc(\r\n 340px * 0.25\r\n ); /* Dynamic width based on container height (25% of height) */\r\n height: calc(340px * 0.25); /* Dynamic height based on container height */\r\n`;\r\n\r\nconst IDCardFieldsContainer = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: space-evenly; /* Distribute space evenly */\r\n height: 100%; /* Ensure it takes the full height of its parent */\r\n padding: 0 10px; /* Optional: Add padding if needed */\r\n`;\r\n\r\nconst IDCardField = styled.div`\r\n font-size: calc(\r\n 340px * 0.05\r\n ); /* Dynamic font size based on container height (6% of height) */\r\n line-height: 1.2;\r\n margin-bottom: calc(\r\n 340px * 0.02\r\n ); /* Dynamic margin based on container height (2% of height) */\r\n`;\r\n\r\nconst { Option } = Select;\r\n\r\nconst plan_columns = [\r\n {\r\n title: \"Corporate Account\",\r\n dataIndex: \"account\",\r\n key: \"account\",\r\n },\r\n {\r\n title: \"Company\",\r\n dataIndex: \"company\",\r\n },\r\n {\r\n dataIndex: \"avega\",\r\n className: \"hide\",\r\n },\r\n {\r\n dataIndex: \"recordid\",\r\n className: \"hide\",\r\n },\r\n];\r\n\r\nconst label_columns = [\r\n {\r\n title: \"Label\",\r\n dataIndex: \"label\",\r\n key: \"label\",\r\n },\r\n {\r\n title: \"Field\",\r\n dataIndex: \"field\",\r\n key: \"field\",\r\n },\r\n {\r\n title: \"Status\",\r\n key: \"tags\",\r\n dataIndex: \"tags\",\r\n render: (tags) => (\r\n <>\r\n {tags.map((tag) => {\r\n let color = tag === \"active\" ? \"geekblue\" : \"green\";\r\n if (tag === \"disabled\") {\r\n color = \"volcano\";\r\n }\r\n return (\r\n \r\n {tag.toUpperCase()}\r\n \r\n );\r\n })}\r\n \r\n ),\r\n },\r\n {\r\n title: \"Position\",\r\n dataIndex: \"position\",\r\n key: \"position\",\r\n },\r\n {\r\n title: \"Is Active\",\r\n dataIndex: \"isactive\",\r\n className: \"hide\",\r\n },\r\n];\r\n\r\nexport default function DigiCard() {\r\n //For Plan table\r\n const [searchValue, setsearchValue] = useState(\"\");\r\n const [selectedAccount, setSelectedAccount] = useState(\"\");\r\n const [selectedCompany, setSelectedCompany] = useState(\"\");\r\n const [displayedAccount, setdisplayedAccount] = useState(\"\");\r\n\r\n //For Suspended table\r\n const [lstFeatures, setlstFeatures] = useState([]);\r\n const [lstPlan, setlstPlan] = useState([]);\r\n const [recordid, setRecordid] = useState(\"\");\r\n const [company, setCompany] = useState(\"\");\r\n const [hasDataFeatures, setHasDataFeature] = useState(false);\r\n const [hasDataPlan, setHasDataPlan] = useState(false);\r\n const [loading, setLoading] = useState(false);\r\n const [username, setUsername] = useState(\"\");\r\n\r\n // Janus\r\n const [selectedImage, setSelectedImage] = useState(null);\r\n const [selectedFileBase64, setSelectedFileBase64] = useState(null);\r\n const [isactive_output, setIsActiveOutput] = useState(undefined);\r\n const [label, setLabel] = useState(\"\");\r\n const [avega, setAvega] = useState(\"\");\r\n const [incomp, setIncomp] = useState(\"\");\r\n const [fileext, setFileExt] = useState(\"\");\r\n const [prevPosition, setPrevPosition] = useState(\"\");\r\n const [position, setPosition] = useState(\"\");\r\n const [finalpos, setFinalPos] = useState(\"\");\r\n const [field, setField] = useState(\"\");\r\n const [addLabel, setAddLabel] = useState(false);\r\n const [accounts, setAccounts] = useState([]);\r\n const [fields, setFields] = useState([]);\r\n\r\n const [previewAccount, setPreviewAccount] = useState(\"\");\r\n const [previewCorpAccount, setPreviewCorpAccount] = useState(\"\");\r\n const [previewContract, setPreviewContract] = useState(\"\");\r\n const [previewData, setPreviewData] = useState([]);\r\n const [base64, setBase64] = useState(\"\");\r\n\r\n //Modals\r\n const [modal_features, setModalFeatures] = useState(false);\r\n const [modal_plan, setModalPlan] = useState(false);\r\n const [modal_digicard, setModalDigiCard] = useState(false);\r\n const [modal_confirm, setModalConfirm] = useState(false);\r\n const [modal_add_label, setModalAddLabel] = useState(false);\r\n const [modal_preview, setModalPreview] = useState(false);\r\n\r\n let user_info = JSON.parse(localStorage.getItem(\"user_info\"));\r\n\r\n const { addToast } = useToasts();\r\n\r\n useEffect(() => {\r\n CheckSession();\r\n getFeatureData();\r\n getCustomizedAccounts();\r\n getCustomizedFields();\r\n getCorporatePlan();\r\n }, []);\r\n\r\n useEffect(() => {\r\n GetDigicardConfig();\r\n }, []);\r\n\r\n useEffect(() => {\r\n // update data when rerender\r\n }, [previewData]);\r\n\r\n useEffect(() => {\r\n // update data when rerender\r\n }, [incomp]);\r\n\r\n async function getCorporatePlan() {\r\n let account = EncryptHeader(selectedAccount);\r\n let resp = await fetch(Decrypt(API.REACT_APP_GET_CORPORATE_PLAN), {\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n acct: account,\r\n },\r\n });\r\n\r\n let respJson = await resp.json();\r\n if (respJson.data) {\r\n let decrypted = respJson.data.map((data) => {\r\n let newdata = Decrypt2(data);\r\n\r\n let final_data = {\r\n recordid: newdata.recordid,\r\n acct: newdata.acct,\r\n contract: newdata.contract,\r\n company: newdata.company,\r\n avega: newdata.avega,\r\n };\r\n\r\n return final_data;\r\n });\r\n\r\n setIncomp(decrypted[0].avega);\r\n let contract = decrypted[0].contract;\r\n GetConfigs(selectedCompany);\r\n }\r\n }\r\n\r\n async function getCustomizedAccounts() {\r\n try {\r\n let resp = await fetch(Decrypt(API.GET_CUSTOMIZED_ACCOUNTS), {\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n },\r\n });\r\n\r\n let respJson = await resp.json();\r\n if (respJson === \"Invalid Access Token\") {\r\n return;\r\n } else {\r\n let decrypted = respJson.data.map((data) => {\r\n let respData = Decrypt2(data);\r\n return respData;\r\n });\r\n\r\n setAccounts(decrypted);\r\n }\r\n } catch (error) {\r\n alert(error);\r\n }\r\n }\r\n\r\n async function getPreviewMember(gcAccount) {\r\n setLoading(true);\r\n\r\n let resp = await fetch(Decrypt(API.GET_DIGICARD_MEMBER), {\r\n method: \"GET\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n corpacct: EncryptHeader(gcAccount),\r\n },\r\n });\r\n\r\n let respJson = await resp.json();\r\n let decrypted = respJson.data.map((data) => {\r\n let respData = Decrypt2(data);\r\n return respData;\r\n });\r\n\r\n setPreviewAccount(decrypted[0].account);\r\n setPreviewCorpAccount(decrypted[0].corpacct);\r\n setPreviewContract(decrypted[0].contract);\r\n }\r\n\r\n async function getCustomizedFields() {\r\n try {\r\n let resp = await fetch(Decrypt(API.GET_CUSTOMIZED_FIELDS), {\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n },\r\n });\r\n\r\n let respJson = await resp.json();\r\n if (respJson === \"Invalid Access Token\") {\r\n return;\r\n } else {\r\n let decrypted = respJson.data.map((data) => {\r\n let respData = Decrypt2(data);\r\n return respData;\r\n });\r\n\r\n setFields(decrypted);\r\n }\r\n } catch (error) {\r\n alert(error);\r\n }\r\n }\r\n\r\n async function getFeatureData() {\r\n setHasDataFeature(true);\r\n setUsername(user_info.data.emailaddress);\r\n return;\r\n }\r\n\r\n function onLabelRowClick(record) {\r\n return {\r\n onClick: () => {\r\n setPrevPosition(record.position);\r\n setModalFeatures(true);\r\n setRecordid(record.recordid);\r\n setLabel(record.label);\r\n setIsActiveOutput(record.isactive_output);\r\n setField(record.field);\r\n setPosition(record.position);\r\n },\r\n };\r\n }\r\n\r\n function isNumber(str) {\r\n if (typeof str !== \"string\") {\r\n str = String(str);\r\n }\r\n\r\n if (str.trim() === \"\") {\r\n return false;\r\n }\r\n\r\n return !isNaN(str);\r\n }\r\n\r\n const handleChange = (event) => {\r\n setPosition(event.target.value);\r\n };\r\n\r\n async function onClickUpdateStatus() {\r\n setModalConfirm(false);\r\n\r\n if (!isNumber(position)) {\r\n return alert(\"Position must be a number.\");\r\n }\r\n\r\n let Value = Encrypt2({\r\n recordid: recordid,\r\n corpacct: selectedAccount,\r\n label: label,\r\n fieldval: field,\r\n isactive: isactive_output,\r\n position: position,\r\n prevPosition: prevPosition.toString(),\r\n editedby: username,\r\n });\r\n\r\n let resp = await fetch(Decrypt(API.UPDATE_DIGICARD_CONFIG), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ Value }),\r\n });\r\n\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText);\r\n\r\n if (respJson.success) {\r\n addToast(\"Digicard label status successfully updated\", {\r\n appearance: \"success\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n GetConfigs(selectedCompany);\r\n setModalFeatures(false);\r\n setLoading(false);\r\n } else {\r\n addToast(respJson.message, {\r\n appearance: \"warning\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n setModalFeatures(false);\r\n setLoading(false);\r\n }\r\n }\r\n\r\n function onPlanRowClick(record) {\r\n return {\r\n onClick: () => {\r\n if (record.avega) {\r\n setAvega(\"AVEGA\");\r\n } else {\r\n setAvega(\"INTELLICARE\");\r\n }\r\n setSelectedAccount(record.account);\r\n setCompany(record.company);\r\n },\r\n };\r\n }\r\n\r\n function onClickSearchCompany() {\r\n setsearchValue(\"\");\r\n setSelectedAccount(\"\");\r\n setHasDataPlan(true);\r\n setlstPlan([]);\r\n setModalPlan(true);\r\n }\r\n\r\n function onClickUploadDigiCard() {\r\n setsearchValue(\"\");\r\n setSelectedAccount(\"\");\r\n setlstPlan([]);\r\n setModalDigiCard(true);\r\n setSelectedImage(null);\r\n }\r\n\r\n function onClickAddLabel() {\r\n getCorporatePlan();\r\n setLoading(false);\r\n setModalAddLabel(true);\r\n setLabel(\"\");\r\n setField(\"\");\r\n }\r\n\r\n function onClickPreview() {\r\n getCorporatePlan();\r\n GetDigicardConfig();\r\n }\r\n\r\n async function getPreviewBackground(name, path, type) {\r\n setLoading(true);\r\n let Value = Encrypt2({\r\n filename: name,\r\n filepath: path,\r\n filetype: type,\r\n });\r\n\r\n let resp = await fetch(Decrypt(API.GET_DIGICARD_BASE64), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ Value }),\r\n });\r\n\r\n let respText = await resp.json();\r\n let respJson = await DecryptResp(respText);\r\n\r\n if (respJson.is_success) {\r\n setBase64(respJson.base64);\r\n setModalPreview(true);\r\n } else {\r\n return alert(\"Oops!\", \"Problem fetching Digicard.\");\r\n }\r\n\r\n setLoading(false);\r\n }\r\n\r\n async function GetDigicardConfig() {\r\n let resp = await fetch(Decrypt(API.GET_DIGICARD_CONFIG_UI), {\r\n method: \"GET\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n corpacct: EncryptHeader(previewCorpAccount),\r\n membacct: EncryptHeader(previewAccount),\r\n contract: EncryptHeader(previewContract),\r\n },\r\n });\r\n\r\n let respJson = await resp.json();\r\n if (respJson.data) {\r\n let decrypted = respJson.data.map((data) => {\r\n let newdata = Decrypt2(data);\r\n let final_data = {\r\n label: newdata.label,\r\n value: newdata.value,\r\n };\r\n\r\n return final_data;\r\n });\r\n\r\n setPreviewData(decrypted);\r\n\r\n let hmo = \"\";\r\n if (decrypted[0].avega) {\r\n hmo = \"AVEGA\";\r\n } else {\r\n hmo = \"INTELLICARE\";\r\n }\r\n\r\n getPreviewBackground(\r\n selectedAccount,\r\n \"Shared Documents/AgoraCustomDigicard/\" + hmo + \"/\" + selectedAccount,\r\n \"PNG\"\r\n );\r\n }\r\n }\r\n\r\n async function onClickSaveLabel() {\r\n setLoading(true);\r\n\r\n if (label.length <= 0) {\r\n alert(\"Label field is empty.\");\r\n setLoading(false);\r\n return;\r\n }\r\n\r\n if (field.length <= 0) {\r\n alert(\"Field field is empty.\");\r\n setLoading(false);\r\n return;\r\n }\r\n\r\n let final_pos = finalpos + 1;\r\n\r\n let Value = Encrypt2({\r\n corpacct: selectedAccount,\r\n label: label,\r\n fieldval: field,\r\n position: final_pos,\r\n postedby: username,\r\n });\r\n\r\n let resp = await fetch(Decrypt(API.POST_DIGICARD_CONFIG), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ Value }),\r\n });\r\n\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText);\r\n\r\n if (respJson.success) {\r\n addToast(\"Digicard has been successfully uploaded\", {\r\n appearance: \"success\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n\r\n GetConfigs(selectedCompany);\r\n setdisplayedAccount(selectedAccount + \" / \" + company);\r\n setModalAddLabel(false);\r\n setLoading(false);\r\n } else {\r\n addToast(respJson.message, {\r\n appearance: \"warning\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n setModalAddLabel(false);\r\n setLoading(false);\r\n }\r\n }\r\n\r\n async function onGetDigicardDetails() {\r\n setLoading(true);\r\n\r\n if (!selectedImage) {\r\n setLoading(false);\r\n return alert(\"No valid file for upload.\");\r\n }\r\n if (selectedAccount.length <= 0) {\r\n setLoading(false);\r\n return alert(\"No company selected.\");\r\n }\r\n\r\n let resp = await fetch(Decrypt(API.GET_DIGICARD_DETAILS), {\r\n method: \"GET\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n corpacct: EncryptHeader(selectedAccount),\r\n },\r\n });\r\n\r\n let respJson = await resp.json();\r\n if (respJson.data) {\r\n let isexist = true;\r\n onSaveDigiCard(isexist);\r\n } else {\r\n let isexist = false;\r\n onSaveDigiCard(isexist);\r\n }\r\n }\r\n\r\n async function onSaveDigiCard(isexist) {\r\n let Value = Encrypt2({\r\n corpacct: selectedAccount,\r\n is_exist: isexist,\r\n in_comp: avega,\r\n filename: selectedAccount,\r\n filepath: \"\",\r\n filetype: fileext,\r\n postedby: username,\r\n base64: selectedFileBase64,\r\n });\r\n\r\n let resp = await fetch(Decrypt(API.POST_DIGICARD), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ Value }),\r\n });\r\n\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText);\r\n\r\n if (respJson.success) {\r\n addToast(\"Digicard has been successfully uploaded\", {\r\n appearance: \"success\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n\r\n GetConfigs(selectedCompany);\r\n getCustomizedAccounts();\r\n setdisplayedAccount(selectedAccount + \" / \" + company);\r\n setModalDigiCard(false);\r\n setLoading(false);\r\n } else {\r\n addToast(respJson.message, {\r\n appearance: \"warning\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n setModalDigiCard(false);\r\n setLoading(false);\r\n }\r\n }\r\n\r\n async function GetConfigs(account) {\r\n if (account === \"\" || account === null) {\r\n alert(\"Error no account gathered.\");\r\n return;\r\n }\r\n\r\n const gcAccount = account.substring(0, 11);\r\n setSelectedCompany(account);\r\n setSelectedAccount(gcAccount);\r\n getPreviewMember(gcAccount);\r\n\r\n try {\r\n let corpacct = EncryptHeader(gcAccount);\r\n let resp = await fetch(Decrypt(API.GET_DIGICARD_CONFIG), {\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n corpacct: corpacct,\r\n },\r\n });\r\n let respJson = await resp.json();\r\n if (respJson.data != null) {\r\n let decrypted = respJson.data.map((data) => {\r\n let newdata = Decrypt2(data);\r\n let isactive = newdata.isactive ? [\"active\"] : [\"disabled\"];\r\n let isactive_output = newdata.isactive ? 1 : 0;\r\n\r\n let final_data = {\r\n recordid: newdata.recordid,\r\n label: newdata.label,\r\n field: newdata.fieldval,\r\n isactive_output: isactive_output,\r\n position: newdata.position,\r\n tags: isactive,\r\n };\r\n\r\n setFinalPos(final_data.position);\r\n\r\n return final_data;\r\n });\r\n\r\n setAddLabel(true);\r\n setlstFeatures(decrypted);\r\n setHasDataFeature(true);\r\n } else {\r\n setAddLabel(false);\r\n addToast(\"Customized digicard not found.\", {\r\n appearance: \"warning\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n setlstFeatures([]);\r\n return;\r\n }\r\n\r\n setLoading(false);\r\n } catch (error) {\r\n // error\r\n setHasDataFeature(false);\r\n }\r\n }\r\n\r\n async function onClickAccount() {\r\n if (selectedAccount.length == 0) {\r\n alert(\"No selected company.\");\r\n return;\r\n }\r\n\r\n setdisplayedAccount(selectedAccount + \" / \" + company);\r\n setLoading(false);\r\n setModalPlan(false);\r\n GetConfigs(selectedCompany);\r\n }\r\n\r\n async function onSearchCompany() {\r\n if (searchValue.length == 0) {\r\n alert(\"Search field is empty.\");\r\n return;\r\n }\r\n\r\n setlstPlan([]);\r\n setHasDataPlan(false);\r\n\r\n try {\r\n let header_param = EncryptHeader(searchValue);\r\n let resp = await fetch(Decrypt(API.GET_ACCOUNT_BY_NAME), {\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n company: header_param,\r\n },\r\n });\r\n let respJson = await resp.json();\r\n if (respJson === \"Invalid Access Token\") {\r\n setHasDataPlan(false);\r\n return;\r\n } else {\r\n if (Array.isArray(respJson.data)) {\r\n if (respJson.data.length > 0) {\r\n let decrypted = respJson.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n return newD;\r\n });\r\n\r\n setHasDataPlan(true);\r\n setlstPlan(decrypted);\r\n } else {\r\n setHasDataPlan(false);\r\n setLoading(false);\r\n }\r\n } else {\r\n let header_param = EncryptHeader(searchValue);\r\n let resp = await fetch(Decrypt(API.GET_ACCOUNT_BY_CORPACCT), {\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n corpacct: header_param,\r\n },\r\n });\r\n\r\n let respJson = await resp.json();\r\n if (respJson === \"Invalid Access Token\") {\r\n setHasDataPlan(false);\r\n return;\r\n } else {\r\n let result = Decrypt2(respJson);\r\n if (result.is_success) {\r\n let final_plan = [];\r\n\r\n final_plan.push(result.data);\r\n setHasDataPlan(true);\r\n setlstPlan(final_plan);\r\n } else {\r\n setHasDataPlan(true);\r\n alert(result.message);\r\n }\r\n }\r\n }\r\n }\r\n } catch (error) {\r\n // error\r\n setHasDataPlan(false);\r\n }\r\n }\r\n\r\n const replaceVowelsWithX = (text) => {\r\n return text.replace(/[aeiouAEIOU]/g, \"X\");\r\n };\r\n\r\n // if (loading) {\r\n // return (\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 GetConfigs(e)}\r\n showSearch\r\n filterOption={(input, option) => {\r\n if (option && option.props.children) {\r\n const children =\r\n typeof option.props.children === \"string\"\r\n ? option.props.children\r\n : \"\";\r\n return children.toLowerCase().includes(input.toLowerCase());\r\n }\r\n return false;\r\n }}\r\n >\r\n {accounts.map((account, index) => (\r\n \r\n ))}\r\n \r\n {/* GetConfigs(e)}\r\n >\r\n {accounts.map((account, index) => (\r\n \r\n ))}\r\n */}\r\n \r\n \r\n \r\n
    \r\n

    \r\n
    \r\n {addLabel ? (\r\n \r\n \r\n
    \r\n \r\n {\" \"}\r\n {/* Adjust icon color */}\r\n Preview{\" \"}\r\n {/* Adjust text color */}\r\n \r\n\r\n \r\n \r\n Add Label\r\n \r\n
    \r\n
    \r\n ) : null}\r\n \r\n setModalConfirm(true)}\r\n >\r\n {loading ? (\r\n
    \r\n
    {\" \"}\r\n Saving...\r\n
    \r\n ) : (\r\n \"Update\"\r\n )}\r\n ,\r\n ,\r\n ]}\r\n >\r\n
    \r\n \r\n setLabel(e.target.value)}\r\n />\r\n \r\n setIsActiveOutput(e)}\r\n >\r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n setField(e.target.value)}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n handleChange(e)}\r\n />\r\n
    \r\n \r\n onGetDigicardDetails()}\r\n >\r\n {loading ? (\r\n
    \r\n {\" \"}\r\n Saving...\r\n
    \r\n ) : (\r\n \"Save\"\r\n )}\r\n ,\r\n ,\r\n ]}\r\n >\r\n
    \r\n \r\n setsearchValue(e.target.value)}\r\n />\r\n onSearchCompany()}\r\n >\r\n Search\r\n \r\n

    \r\n \r\n \r\n \r\n
    \r\n

    \r\n \r\n \r\n
    \r\n
    \r\n {selectedImage && (\r\n
    \r\n \r\n
    \r\n

    \r\n
    \r\n setSelectedImage(null)}\r\n >\r\n Remove\r\n \r\n
    \r\n
    \r\n )}\r\n

    \r\n {\r\n let reader = new FileReader();\r\n reader.onload = function () {\r\n let base64 = reader.result.replace(/^.+?;base64,/, \"\");\r\n setSelectedFileBase64(base64);\r\n };\r\n\r\n if (event.target.files[0]) {\r\n reader.readAsDataURL(event.target.files[0]);\r\n }\r\n\r\n let imgtype = event.target.files[0].type;\r\n\r\n if (\r\n imgtype !== \"image/png\" &&\r\n imgtype !== \"image/jpg\" &&\r\n imgtype !== \"image/jpeg\"\r\n ) {\r\n setSelectedImage(null);\r\n return alert(\r\n \"Invalid attachment file type. (*jpg , *jpeg , *png types only).\"\r\n );\r\n }\r\n\r\n switch (imgtype) {\r\n case \"image/png\":\r\n setFileExt(\"PNG\");\r\n break;\r\n case \"image/jpg\":\r\n setFileExt(\"JPG\");\r\n break;\r\n case \"image/jpeg\":\r\n setFileExt(\"JPEG\");\r\n break;\r\n default:\r\n // do nothing\r\n }\r\n\r\n setSelectedImage(event.target.files[0]);\r\n }}\r\n />\r\n
    \r\n \r\n onClickAccount()}>\r\n {loading ? (\r\n
    \r\n
    {\" \"}\r\n Selecting...\r\n
    \r\n ) : (\r\n \"Select\"\r\n )}\r\n ,\r\n ,\r\n ]}\r\n >\r\n
    \r\n \r\n setsearchValue(e.target.value)}\r\n />\r\n onSearchCompany()}\r\n >\r\n {!hasDataPlan ? (\r\n
    \r\n
    {\" \"}\r\n Searching...\r\n
    \r\n ) : (\r\n \"Search\"\r\n )}\r\n \r\n

    \r\n \r\n \r\n \r\n
    \r\n \r\n onClickSaveLabel()}\r\n >\r\n {loading ? (\r\n
    \r\n {\" \"}\r\n Saving...\r\n
    \r\n ) : (\r\n \"Save\"\r\n )}\r\n ,\r\n ,\r\n ]}\r\n >\r\n \r\n setLabel(e.target.value)}\r\n />\r\n
    \r\n
    \r\n \r\n setField(value)}\r\n showSearch\r\n filterOption={(input, option) => {\r\n if (option && option.props.children) {\r\n const children =\r\n typeof option.props.children === \"string\"\r\n ? option.props.children\r\n : \"\";\r\n return children.toLowerCase().includes(input.toLowerCase());\r\n }\r\n return false;\r\n }}\r\n >\r\n {fields.map((field, index) => (\r\n \r\n ))}\r\n \r\n \r\n setModalPreview(false)} key=\"close\">\r\n Close\r\n ,\r\n ]}\r\n >\r\n \r\n \r\n \r\n {previewData.map((field, index) => (\r\n \r\n {field.label}:{\" \"}\r\n {field.value ? replaceVowelsWithX(field.value) : \"N/A\"}\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n onClickUpdateStatus()}\r\n >\r\n {loading ? (\r\n
    \r\n
    {\" \"}\r\n Saving...\r\n
    \r\n ) : (\r\n \"YES\"\r\n )}\r\n ,\r\n ,\r\n ]}\r\n >\r\n

    Proceed with the changes?

    \r\n \r\n
    \r\n
    \r\n );\r\n}\r\n// }\r\n","\r\nimport React, { useState, useEffect } from \"react\";\r\nimport { Table, Modal, Input, Button, Select, Alert, Tag, Checkbox, Divider, Tooltip, Icon } from \"antd\";\r\nimport { useHistory, Link } from \"react-router-dom\";\r\nimport './SysAccessManageAccess.css';\r\nimport { useToasts } from \"react-toast-notifications\";\r\nimport Spinner from \"../Newsletter/Spinner\";\r\n\r\n//apis\r\nimport * as API from \"../../util/live_api\";\r\nimport {\r\n Decrypt,\r\n Decrypt2,\r\n EncryptHeader,\r\n Encrypt2,\r\n ImgEncrypt,\r\n DecryptTxt,\r\n} from \"../../util/EncryptionHandler\";\r\nimport CheckSession from \"../CheckSession\";\r\n\r\nconst { Option } = Select;\r\n\r\n\r\nexport default function SysAccessManageAccess() {\r\n\r\n const [modalLoading, setModalLoading] = React.useState(false);\r\n const [success, setSuccess] = React.useState(null);\r\n const [successMsg, setSuccessMsg] = React.useState(\"\");\r\n const [savingMsg, setSavingMsg] = React.useState(\"\");\r\n const [syscode, setSyscode] = useState(\"SC00999\");\r\n\r\n let user_info = JSON.parse(localStorage.getItem(\"user_info\"));\r\n // console.log(user_info)\r\n let history = useHistory();\r\n if (user_info.data.department === \"MIS TECH\") {\r\n history.push(\"/users\");\r\n }\r\n if (!sessionStorage.getItem(\"logged_in\")) {\r\n SessionUpdate();\r\n localStorage.removeItem(\"user_info\");\r\n localStorage.removeItem(\"current_pw\");\r\n history.push(\"/sysaccess-manage-access\");\r\n }\r\n\r\n\r\n const [detailsRoles, setDetailsRoles] = useState({\r\n rolesid: \"\",\r\n name: \"\",\r\n syscode: syscode,\r\n iscritical: false,\r\n username: user_info.data.emailaddress,\r\n });\r\n\r\n const [detailsRolesAccess, setDetailsRolesAccess] = useState({\r\n rolesaccessid: \"\",\r\n rolesid: \"\",\r\n modaccessid: \"\",\r\n syscode: syscode,\r\n username: user_info.data.emailaddress,\r\n });\r\n\r\n const [detailsMainMenu, setDetailsMainMenu] = useState({\r\n tabaccessid: \"\",\r\n tabname: \"\",\r\n icon: \"\",\r\n syscode: syscode,\r\n username: user_info.data.emailaddress,\r\n });\r\n\r\n const [detailsSubMenu, setDetailsSubMenu] = useState({\r\n tabaccessid: \"\",\r\n tabname: \"\",\r\n modaccessid: \"\",\r\n icon: \"\",\r\n labelname: \"\",\r\n routename: \"\",\r\n syscode: syscode,\r\n username: user_info.data.emailaddress,\r\n });\r\n\r\n const [hasDataRoles, setHasDataRoles] = useState(true);\r\n const [dataSourceRoles, setdataSourceRoles] = useState([]);\r\n\r\n const [dataSourceRolesAccess, setdataSourceRolesAccess] = useState([]);\r\n\r\n const [hasDataMainMenus, setHasDataMainMenus] = useState(true);\r\n const [dataSourceMainMenus, setdataSourceMainMenus] = useState([]);\r\n\r\n const [hasDataSubMenus, setHasDataSubMenus] = useState(true);\r\n const [dataSourceSubMenus, setdataSourceSubMenus] = useState([]);\r\n\r\n const [dataSourceSubMenusDropDownTemp, setdataSourceSubMenusDropDownTemp] = useState([]);\r\n const [dataSourceSubMenusDropDown, setdataSourceSubMenusDropDown] = useState([]);\r\n const [SubMenusDropDown, setSubMenusDropDown] = useState(\"\");\r\n\r\n const [hasDataSubMenusRoute, setHasDataSubMenusRoute] = useState(true);\r\n const [dataSourceSubMenusRoute, setdataSourceSubMenusRoute] = useState([]);\r\n\r\n const { addToast, removeToast } = useToasts();\r\n const [warningTime] = useState(15 * 60 * 1000);\r\n const [logoutTime] = useState(10 * 1000);\r\n\r\n\r\n\r\n const [nameVariable, setnameVariable] = useState(\"\");\r\n const [mainMenuLabel, setMainMenuLabel] = useState(\"\");\r\n\r\n const [newRoles, setNewRoles] = useState(false);\r\n const [newMainMenu, setNewMainMenu] = useState(false);\r\n const [newSubMenuRoute, setSubMenuRoute] = useState(false);\r\n\r\n const [modalRoles, setModalRoles] = useState(false);\r\n const [modalRolesManage, setModalRolesManage] = useState(false);\r\n const [modalMainMenus, setModalMainMenus] = useState(false);\r\n const [modalMainMenusManage, setModalMainMenusManage] = useState(false);\r\n const [modalSubMenus, setModalSubMenus] = useState(false);\r\n const [modalSubMenusRoute, setModalSubMenusRoute] = useState(false);\r\n\r\n const roles_columns = [\r\n {\r\n title: \"Syscode\",\r\n dataIndex: \"syscode\",\r\n },\r\n {\r\n title: \"Role\",\r\n dataIndex: \"name\",\r\n },\r\n {\r\n title: \"Crtical\",\r\n key: 'iscritical',\r\n dataIndex: \"iscritical\",\r\n // render : (text) => String(text),\r\n render: val => (val ? 'YES' : 'NO'),\r\n },\r\n {\r\n title: \"Created\",\r\n dataIndex: \"createddate\",\r\n },\r\n {\r\n dataIndex: \"recordid\",\r\n className: \"hide\",\r\n },\r\n {\r\n title: \r\n \r\n ,\r\n fixed: 'right',\r\n key: \"action\",\r\n render: (record) =>\r\n roles_columns.length >= 1 ? (\r\n <>\r\n \r\n onClickEditRoles(record)}\r\n >\r\n \r\n \r\n\r\n \r\n onClickManageRoles(record)}\r\n >\r\n \r\n \r\n\r\n \r\n onClickDeleteRoles(record)}\r\n\r\n >\r\n \r\n \r\n\r\n \r\n ) : null,\r\n },\r\n ];\r\n\r\n const menu_columns = [\r\n {\r\n title: \"Syscode\",\r\n dataIndex: \"syscode\",\r\n },\r\n {\r\n title: \"Main Menu\",\r\n dataIndex: \"tabname\",\r\n },\r\n {\r\n title: \"Icon\",\r\n dataIndex: \"icon\",\r\n render: icon => (\r\n \r\n {icon}\r\n \r\n ),\r\n \r\n },\r\n {\r\n title: \"Created\",\r\n dataIndex: \"createddate\",\r\n },\r\n {\r\n dataIndex: \"recordid\",\r\n className: \"hide\",\r\n },\r\n {\r\n title: ,\r\n fixed: 'right',\r\n key: \"action\",\r\n render: (record) =>\r\n roles_columns.length >= 1 ? (\r\n <>\r\n onClickEditMainMenus(record)}\r\n >\r\n \r\n onClickManageMainMenus(record)}\r\n >\r\n \r\n onClickDeleteMainMenus(record)}\r\n >\r\n \r\n \r\n ) : null,\r\n },\r\n ];\r\n\r\n const mainmenuList_columns = [\r\n {\r\n title: \"MAIN MENU\",\r\n dataIndex: \"tabname\",\r\n align: \"center\"\r\n },\r\n ];\r\n\r\n const submenuList_columns = [\r\n {\r\n title: \"MENU\",\r\n dataIndex: \"labelname\",\r\n // align: \"center\"\r\n fixed: 'left',\r\n },\r\n {\r\n title: \r\n \r\n ,\r\n fixed: 'right',\r\n key: \"action\",\r\n render: (record) =>\r\n roles_columns.length >= 1 ? (\r\n <>\r\n \r\n onClickDeleteSubMenus(record)}\r\n >\r\n \r\n \r\n \r\n ) : null,\r\n },\r\n ];\r\n\r\n\r\n const submenuRouteList_columns = [\r\n {\r\n title: \"SUB MENU\",\r\n dataIndex: \"labelname\",\r\n },\r\n {\r\n title: \"ROUTE\",\r\n dataIndex: \"routename\",\r\n },\r\n {\r\n title: \"Icon\",\r\n dataIndex: \"icon\",\r\n render: icon => (\r\n \r\n {icon}\r\n \r\n ),\r\n },\r\n {\r\n title: \r\n \r\n ,\r\n fixed: 'right',\r\n key: \"action\",\r\n render: (record) =>\r\n roles_columns.length >= 1 ? (\r\n <>\r\n \r\n onClickEditSubMenusRoute(record)}\r\n >\r\n \r\n \r\n\r\n \r\n onClickDeleteSubMenusRoute(record)}\r\n >\r\n \r\n \r\n \r\n ) : null,\r\n },\r\n ];\r\n\r\n\r\n\r\n useEffect(() => {\r\n // setnameVariable(\"I'm Mark!\");\r\n CheckSession();\r\n gatherRoles();\r\n gatherMainMenus();\r\n\r\n }, []);\r\n\r\n async function SessionUpdate() {\r\n let EncryptedEmail = EncryptHeader(user_info.data.emailaddress);\r\n\r\n let stat_resp = await fetch(Decrypt(API.LOGOUT_USER_STAT), {\r\n method: \"POST\",\r\n headers: {\r\n Email: EncryptedEmail,\r\n },\r\n });\r\n\r\n let stat_respText = await stat_resp.text();\r\n let stat_respJson = await Decrypt2(stat_respText.replace(/\"/g, \"\"));\r\n\r\n if (stat_respJson.success) {\r\n logout();\r\n } else {\r\n addToast(stat_respJson.message, {\r\n appearance: \"error\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 2000,\r\n });\r\n }\r\n }\r\n\r\n function logout() {\r\n localStorage.removeItem(\"user_info\");\r\n localStorage.removeItem(\"current_pw\");\r\n history.push(\"/\");\r\n }\r\n\r\n async function gatherRoles() {\r\n try {\r\n let Value = Encrypt2({\r\n syscode: syscode,\r\n });\r\n\r\n let resp = await fetch(Decrypt(API.SYSACCESS_GET_ROLES), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ Value }),\r\n });\r\n let respJson = await resp.json();\r\n\r\n if (respJson.success) {\r\n let decrypted = respJson.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n return newD;\r\n });\r\n \r\n setdataSourceRoles(decrypted)\r\n } else {\r\n setdataSourceRoles([])\r\n }\r\n\r\n } catch (error) {\r\n console.log(error);\r\n // setHasDataSuspended(false);\r\n }\r\n\r\n return\r\n }\r\n\r\n async function gatherMainMenus() {\r\n try {\r\n let Value = Encrypt2({\r\n syscode: syscode,\r\n });\r\n\r\n let resp = await fetch(Decrypt(API.SYSACCESS_GET_TABACCESS), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ Value }),\r\n });\r\n let respJson = await resp.json();\r\n\r\n if (respJson.success) {\r\n let decrypted = respJson.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n return newD;\r\n });\r\n\r\n setdataSourceMainMenus(decrypted)\r\n } else {\r\n setdataSourceMainMenus([])\r\n }\r\n \r\n\r\n } catch (error) {\r\n console.log(error);\r\n // setHasDataSuspended(false);\r\n }\r\n\r\n return\r\n }\r\n\r\n\r\n async function gatherRolesAccess() {\r\n try {\r\n let Value = Encrypt2({\r\n syscode: syscode\r\n });\r\n\r\n let resp = await fetch(Decrypt(API.SYSACCESS_GET_ROLESACCESS), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ Value }),\r\n });\r\n let respJson = await resp.json();\r\n \r\n if (respJson.success) {\r\n let decrypted = respJson.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n return newD;\r\n });\r\n\r\n return decrypted\r\n }\r\n\r\n\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n\r\n }\r\n\r\n async function gatherSubMenus() {\r\n try {\r\n let Value = Encrypt2({\r\n syscode: syscode,\r\n });\r\n\r\n let resp = await fetch(Decrypt(API.SYSACCESS_GET_MODACCESS), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ Value }),\r\n });\r\n let respJson = await resp.json();\r\n\r\n if (respJson.success) {\r\n let decrypted = respJson.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n return newD;\r\n });\r\n\r\n return decrypted // return Data List\r\n\r\n }\r\n\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n\r\n return\r\n }\r\n\r\n\r\n async function onClickAddRoles() {\r\n\r\n detailsRoles.rolesid = \"\";\r\n detailsRoles.name = \"\";\r\n detailsRoles.iscritical = false;\r\n\r\n // setDetailsRoles({\r\n // name: \"\",\r\n // });\r\n // console.log(detailsRoles)\r\n\r\n setNewRoles(true)\r\n setModalRoles(true);\r\n\r\n }\r\n\r\n async function onClickEditRoles(record) {\r\n\r\n detailsRoles.rolesid = record.rolesid;\r\n detailsRoles.name = record.name;\r\n detailsRoles.iscritical = record.iscritical\r\n\r\n // setDetailsRoles({\r\n // name: record.name,\r\n // });\r\n // console.log(detailsRoles)\r\n\r\n setNewRoles(false)\r\n setModalRoles(true);\r\n }\r\n\r\n async function onClickManageRoles(record) {\r\n\r\n setMainMenuLabel(\"\")\r\n\r\n detailsRoles.name = record.name;\r\n detailsRoles.iscritical = record.iscritical;\r\n detailsRoles.rolesid = record.rolesid;\r\n \r\n\r\n let getRolesAccessList = await gatherRolesAccess();\r\n\r\n if(getRolesAccessList !== undefined) {\r\n let filteredRolesAccessList= await filterRolesAccessPerRoles(getRolesAccessList, record.rolesid)\r\n setdataSourceRolesAccess(filteredRolesAccessList)\r\n }\r\n\r\n setModalRolesManage(true)\r\n setdataSourceSubMenus([])\r\n \r\n }\r\n\r\n function onMainMenusRowClick(record) {\r\n return {\r\n onClick: async () => {\r\n\r\n setMainMenuLabel(\"[\" + record.tabname + \"]\")\r\n\r\n // Assign tabaccessid for Gathering after ADD/DELETE of SUB MENUS\r\n detailsSubMenu.tabaccessid = record.tabaccessid\r\n\r\n //#region (Filter Per Tabaccessid)\r\n let filteredData = dataSourceRolesAccess.filter((item) => {\r\n const itemData = `${item.tabaccessid.toUpperCase()}`;\r\n const textData = record.tabaccessid.toUpperCase();\r\n return itemData.indexOf(textData) > -1;\r\n });\r\n //#endregion (Filter Per Tabaccessid)\r\n\r\n setdataSourceSubMenus(filteredData) \r\n \r\n let getSubMenuList = await gatherSubMenus();\r\n let filteredSubMenuList = await filterSubMenusPerTabAccess(getSubMenuList, record.tabaccessid)\r\n setdataSourceSubMenusDropDownTemp(filteredSubMenuList)\r\n\r\n setdataSourceSubMenusDropDown([])\r\n setSubMenusDropDown(\"\")\r\n }\r\n };\r\n\r\n }\r\n\r\n\r\n async function loadSubMenus() {\r\n\r\n setdataSourceSubMenus([])\r\n setdataSourceSubMenusDropDownTemp([])\r\n setdataSourceSubMenusDropDown([])\r\n setSubMenusDropDown(\"\")\r\n\r\n // Gather Roles Access\r\n let getRolesAccessList = await gatherRolesAccess();\r\n\r\n if(getRolesAccessList !== undefined) {\r\n\r\n // Filter Roles Access Per Roles\r\n let filteredRolesAccessListPerRoles = await filterRolesAccessPerRoles(getRolesAccessList, detailsRoles.rolesid)\r\n setdataSourceRolesAccess(filteredRolesAccessListPerRoles)\r\n\r\n // Filter Roles Access Per TabAcess\r\n let filteredRolesAccessListPerTabAccess = await filterRolesAccessPerTabAccess(filteredRolesAccessListPerRoles, detailsSubMenu.tabaccessid)\r\n setdataSourceSubMenus(filteredRolesAccessListPerTabAccess) \r\n\r\n let getSubMenuList = await gatherSubMenus();\r\n let filteredSubMenuList = await filterSubMenusPerTabAccess(getSubMenuList, detailsSubMenu.tabaccessid)\r\n setdataSourceSubMenusDropDownTemp(filteredSubMenuList)\r\n\r\n }\r\n }\r\n\r\n\r\n async function filterRolesAccessPerRoles(record, rolesid) {\r\n \r\n //#region (Filter Per Tabaccessid)\r\n let filteredData = record.filter((item) => {\r\n const itemData = `${item.rolesid.toUpperCase()}`;\r\n const textData = rolesid.toUpperCase();\r\n return itemData.indexOf(textData) > -1;\r\n });\r\n //#endregion (Filter Per Tabaccessid)\r\n\r\n return filteredData\r\n }\r\n\r\n async function filterRolesAccessPerTabAccess(record, tabaccessid) {\r\n \r\n //#region (Filter Per Tabaccessid)\r\n let filteredData = record.filter((item) => {\r\n const itemData = `${item.tabaccessid.toUpperCase()}`;\r\n const textData = tabaccessid.toUpperCase();\r\n return itemData.indexOf(textData) > -1;\r\n });\r\n //#endregion (Filter Per Tabaccessid)\r\n\r\n return filteredData\r\n }\r\n\r\n async function onClickDeleteRoles(record) {\r\n try {\r\n\r\n detailsRoles.rolesid = record.rolesid;\r\n\r\n setModalLoading(true);\r\n setSuccess(null);\r\n setSavingMsg(\"Deleting Data Please Wait...\");\r\n\r\n let value = Encrypt2({\r\n rolesid: detailsRoles.rolesid,\r\n });\r\n\r\n let resp = await fetch(Decrypt(API.SYSACCESS_DELETE_ROLES), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ value }),\r\n });\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText);\r\n\r\n if (respJson.success) {\r\n setModalRoles(false);\r\n gatherRoles();\r\n setSuccess(true);\r\n setSuccessMsg(respJson.message);\r\n } else {\r\n setSuccess(false);\r\n setSuccessMsg(respJson.message);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n\r\n }\r\n\r\n async function handleAddRoles() {\r\n try {\r\n setModalLoading(true);\r\n setSuccess(null);\r\n setSavingMsg(\"Saving Data Please Wait...\");\r\n\r\n let value = Encrypt2({\r\n name: detailsRoles.name,\r\n syscode: detailsRoles.syscode,\r\n iscritical: detailsRoles.iscritical,\r\n username: detailsRoles.username\r\n });\r\n\r\n let resp = await fetch(Decrypt(API.SYSACCESS_ADD_ROLES), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ value }),\r\n });\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText);\r\n\r\n if (respJson.success) {\r\n setModalRoles(false);\r\n gatherRoles();\r\n setSuccess(true);\r\n setSuccessMsg(respJson.message);\r\n } else {\r\n setSuccess(false);\r\n setSuccessMsg(respJson.message);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n\r\n async function handleEditRoles() {\r\n try {\r\n setModalLoading(true);\r\n setSuccess(null);\r\n setSavingMsg(\"Saving Data Please Wait...\");\r\n\r\n let value = Encrypt2({\r\n rolesid: detailsRoles.rolesid,\r\n name: detailsRoles.name,\r\n syscode: detailsRoles.syscode,\r\n iscritical: detailsRoles.iscritical,\r\n username: detailsRoles.username\r\n });\r\n\r\n let resp = await fetch(Decrypt(API.SYSACCESS_EDIT_ROLES), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ value }),\r\n });\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText);\r\n\r\n if (respJson.success) {\r\n setModalRoles(false);\r\n gatherRoles();\r\n setSuccess(true);\r\n setSuccessMsg(respJson.message);\r\n } else {\r\n setSuccess(false);\r\n setSuccessMsg(respJson.message);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n function onClickAddMainMenus() {\r\n\r\n detailsMainMenu.tabaccessid = \"\";\r\n detailsMainMenu.tabname = \"\";\r\n detailsMainMenu.icon = \"\";\r\n\r\n setNewMainMenu(true)\r\n setModalMainMenus(true);\r\n }\r\n\r\n function onClickEditMainMenus(record) {\r\n\r\n detailsMainMenu.tabaccessid = record.tabaccessid;\r\n detailsMainMenu.tabname = record.tabname;\r\n detailsMainMenu.icon = record.icon;\r\n\r\n setNewMainMenu(false)\r\n setModalMainMenus(true);\r\n }\r\n\r\n async function onClickManageMainMenus(record) {\r\n\r\n detailsSubMenu.tabaccessid = record.tabaccessid\r\n detailsSubMenu.tabname = record.tabname\r\n\r\n let getSubMenuList = await gatherSubMenus();\r\n if(getSubMenuList !== undefined) {\r\n let filteredSubMenuList = await filterSubMenusPerTabAccess(getSubMenuList, record.tabaccessid)\r\n setdataSourceSubMenusRoute(filteredSubMenuList);\r\n }\r\n setModalMainMenusManage(true)\r\n }\r\n\r\n\r\n async function filterSubMenusPerTabAccess(record, tabaccessid) {\r\n\r\n //#region (Filter Per Tabaccessid)\r\n let filteredData = record.filter((item) => {\r\n const itemData = `${item.tabaccessid.toUpperCase()}`;\r\n const textData = tabaccessid.toUpperCase();\r\n return itemData.indexOf(textData) > -1;\r\n });\r\n //#endregion (Filter Per Tabaccessid)\r\n \r\n return filteredData\r\n \r\n }\r\n\r\n async function onClickDeleteMainMenus(record) {\r\n try {\r\n detailsMainMenu.tabaccessid = record.tabaccessid;\r\n\r\n setModalLoading(true);\r\n setSavingMsg(\"Deleting Data Please Wait...\");\r\n\r\n let value = Encrypt2({\r\n tabid: detailsMainMenu.tabaccessid,\r\n });\r\n\r\n let resp = await fetch(Decrypt(API.SYSACCESS_DELETE_TABACCESS), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ value }),\r\n });\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText);\r\n\r\n if (respJson.success) {\r\n setModalMainMenus(false);\r\n await gatherMainMenus();\r\n setSuccess(true);\r\n setSuccessMsg(respJson.message);\r\n } else {\r\n setSuccess(false);\r\n setSuccessMsg(respJson.message);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n\r\n }\r\n\r\n async function handleAddMainMenus() {\r\n try {\r\n setModalLoading(true);\r\n setSavingMsg(\"Saving Data Please Wait...\");\r\n\r\n let value = Encrypt2({\r\n tabname: detailsMainMenu.tabname,\r\n icon: detailsMainMenu.icon,\r\n syscode: detailsMainMenu.syscode,\r\n username: detailsMainMenu.username\r\n });\r\n\r\n let resp = await fetch(Decrypt(API.SYSACCESS_ADD_TABACCESS), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ value }),\r\n });\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText);\r\n\r\n if (respJson.success) {\r\n setModalMainMenus(false);\r\n gatherMainMenus();\r\n setSuccess(true);\r\n setSuccessMsg(respJson.message);\r\n } else {\r\n setSuccess(false);\r\n setSuccessMsg(respJson.message);\r\n }\r\n\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function handleEditMainMenus() {\r\n try {\r\n setModalLoading(true);\r\n setSavingMsg(\"Saving Data Please Wait...\");\r\n\r\n let value = Encrypt2({\r\n tabid: detailsMainMenu.tabaccessid,\r\n tabname: detailsMainMenu.tabname,\r\n icon: detailsMainMenu.icon,\r\n syscode: detailsMainMenu.syscode,\r\n username: detailsMainMenu.username\r\n });\r\n\r\n let resp = await fetch(Decrypt(API.SYSACCESS_EDIT_TABACCESS), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ value }),\r\n });\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText);\r\n\r\n if (respJson.success) {\r\n setModalMainMenus(false);\r\n gatherMainMenus();\r\n setSuccess(true);\r\n setSuccessMsg(respJson.message);\r\n } else {\r\n setSuccess(false);\r\n setSuccessMsg(respJson.message);\r\n }\r\n\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n\r\n function onClickAddSubMenusRoute() {\r\n\r\n detailsSubMenu.modaccessid = \"\";\r\n detailsSubMenu.labelname = \"\";\r\n detailsSubMenu.icon = \"\";\r\n detailsSubMenu.routename = \"\";\r\n\r\n setSubMenuRoute(true)\r\n setModalSubMenusRoute(true);\r\n }\r\n\r\n function onClickEditSubMenusRoute(record) {\r\n\r\n detailsSubMenu.modaccessid = record.modaccessid;\r\n detailsSubMenu.labelname = record.labelname;\r\n detailsSubMenu.icon = record.icon;;\r\n detailsSubMenu.routename = record.routename\r\n\r\n setSubMenuRoute(false)\r\n setModalSubMenusRoute(true);\r\n\r\n }\r\n\r\n async function onClickDeleteSubMenusRoute(record) {\r\n try {\r\n\r\n detailsSubMenu.modaccessid = record.modaccessid;\r\n\r\n setModalLoading(true);\r\n setSavingMsg(\"Deleting Data Please Wait...\");\r\n\r\n let value = Encrypt2({\r\n modaccessid: detailsSubMenu.modaccessid,\r\n });\r\n\r\n let resp = await fetch(Decrypt(API.SYSACCESS_DELETE_MODACCESS), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ value }),\r\n });\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText);\r\n\r\n if (respJson.success) {\r\n let getSubMenuList = await gatherSubMenus();\r\n let filteredSubMenuList = await filterSubMenusPerTabAccess(getSubMenuList, record.tabaccessid)\r\n setdataSourceSubMenusRoute(filteredSubMenuList);\r\n \r\n setSuccess(true);\r\n setSuccessMsg(respJson.message);\r\n } else {\r\n setSuccess(false);\r\n setSuccessMsg(respJson.message);\r\n }\r\n\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n\r\n }\r\n\r\n async function handleAddSubMenusRoute() {\r\n try {\r\n setModalLoading(true);\r\n setSavingMsg(\"Saving Data Please Wait...\");\r\n\r\n let value = Encrypt2({\r\n tabaccessid: detailsSubMenu.tabaccessid,\r\n labelname: detailsSubMenu.labelname,\r\n icon: detailsSubMenu.icon,\r\n routename: detailsSubMenu.routename,\r\n syscode: detailsSubMenu.syscode,\r\n username: detailsSubMenu.username\r\n });\r\n\r\n let resp = await fetch(Decrypt(API.SYSACCESS_ADD_MODACCESS), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ value }),\r\n });\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText);\r\n\r\n if (respJson.success) {\r\n setModalSubMenusRoute(false);\r\n\r\n let getSubMenuList = await gatherSubMenus();\r\n let filteredSubMenuList = await filterSubMenusPerTabAccess(getSubMenuList, detailsSubMenu.tabaccessid)\r\n setdataSourceSubMenusRoute(filteredSubMenuList);\r\n\r\n setSuccess(true);\r\n setSuccessMsg(respJson.message);\r\n } else {\r\n setSuccess(false);\r\n setSuccessMsg(respJson.message);\r\n }\r\n\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function handleEditSubMenusRoute() {\r\n try {\r\n setModalLoading(true);\r\n setSavingMsg(\"Saving Data Please Wait...\");\r\n\r\n let value = Encrypt2({\r\n modaccessid: detailsSubMenu.modaccessid,\r\n labelname: detailsSubMenu.labelname,\r\n icon: detailsSubMenu.icon,\r\n routename: detailsSubMenu.routename,\r\n username: detailsSubMenu.username\r\n });\r\n\r\n let resp = await fetch(Decrypt(API.SYSACCESS_EDIT_MODACCESS), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ value }),\r\n });\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText);\r\n\r\n if (respJson.success) {\r\n setModalSubMenusRoute(false);\r\n \r\n let getSubMenuList = await gatherSubMenus();\r\n let filteredSubMenuList = await filterSubMenusPerTabAccess(getSubMenuList, detailsSubMenu.tabaccessid)\r\n setdataSourceSubMenusRoute(filteredSubMenuList);\r\n \r\n setSuccess(true);\r\n setSuccessMsg(respJson.message);\r\n } else {\r\n setSuccess(false);\r\n setSuccessMsg(respJson.message);\r\n }\r\n\r\n\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n function onClickAddSubMenus() {\r\n\r\n // console.log(dataSourceSubMenusDropDownTemp) // list of all submenus per tabaccess/main menu\r\n // console.log(dataSourceSubMenus) // submenus already on the tabaccess/main menu\r\n\r\n // Set the Array in The Drop Down\r\n let newArrayList = dataSourceSubMenusDropDownTemp\r\n\r\n for (let submenus of dataSourceSubMenus) {\r\n let isExistModaccess = submenus.modaccessid\r\n\r\n let objIndex = newArrayList.findIndex(obj => obj.modaccessid == isExistModaccess)\r\n\r\n newArrayList.splice(objIndex, 1)\r\n }\r\n\r\n if(newArrayList.length === 0) {\r\n setModalLoading(true);\r\n setSuccess(false);\r\n setSuccessMsg(\"All menus is already been assigned\");\r\n return\r\n }\r\n\r\n // console.log(newArrayList)\r\n setdataSourceSubMenusDropDown(newArrayList)\r\n setModalSubMenus(true);\r\n }\r\n\r\n\r\n async function handleAddASubMenus() {\r\n try{\r\n\r\n // console.log(SubMenusDropDown)\r\n // console.log(detailsRoles)\r\n // console.log(detailsRolesAccess)\r\n\r\n setModalLoading(true);\r\n setSavingMsg(\"Saving Data Please Wait...\");\r\n\r\n let value = Encrypt2({\r\n rolesid: detailsRoles.rolesid, // onClickManageRoles\r\n modaccessid: SubMenusDropDown,\r\n syscode: detailsRolesAccess.syscode,\r\n username: detailsRolesAccess.username\r\n });\r\n\r\n let resp = await fetch(Decrypt(API.SYSACCESS_INSERT_ROLESACCESS), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ value }),\r\n });\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText);\r\n\r\n if (respJson.success) {\r\n setModalSubMenus(false);\r\n \r\n await loadSubMenus()\r\n \r\n setSuccess(true);\r\n setSuccessMsg(respJson.message);\r\n } else {\r\n setSuccess(false);\r\n setSuccessMsg(respJson.message);\r\n }\r\n\r\n\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function onClickDeleteSubMenus(record) {\r\n try {\r\n\r\n detailsRolesAccess.rolesaccessid = record.rolesaccessid;\r\n\r\n setModalLoading(true);\r\n setSuccess(null);\r\n setSavingMsg(\"Deleting Data Please Wait...\");\r\n\r\n let value = Encrypt2({\r\n rolesaccessid: detailsRolesAccess.rolesaccessid,\r\n });\r\n\r\n let resp = await fetch(Decrypt(API.SYSACCESS_DELETE_ROLESACCESS), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ value }),\r\n });\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText);\r\n\r\n if (respJson.success) {\r\n setModalSubMenus(false);\r\n\r\n await loadSubMenus()\r\n\r\n setSuccess(true);\r\n setSuccessMsg(respJson.message);\r\n } else {\r\n setSuccess(false);\r\n setSuccessMsg(respJson.message);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n\r\n function closeSpinner() {\r\n setModalLoading(false);\r\n setSuccess(null)\r\n }\r\n\r\n return (\r\n
    \r\n\r\n
    \r\n\r\n
    ROLES
    \r\n\r\n \r\n\r\n index % 2 === 0 ? 'table-row-light' : 'table-row-dark'}\r\n dataSource={hasDataRoles ? dataSourceRoles : null}\r\n columns={roles_columns}\r\n bordered\r\n size=\"small\"\r\n rowKey=\"rolesid\"\r\n style={{ paddingTop: 10, overflow: \"scroll\" }}\r\n loading={hasDataRoles ? false : true}\r\n pagination={{ defaultPageSize: 5, total: dataSourceRoles.count, showTotal: (total, range) => `${range[0]} - ${range[1]} of ${total}` }}\r\n />\r\n\r\n
    \r\n\r\n

    \r\n\r\n
    \r\n
    MAIN MENUS
    \r\n\r\n \r\n\r\n index % 2 === 0 ? 'table-row-light' : 'table-row-dark'}\r\n dataSource={hasDataMainMenus ? dataSourceMainMenus : null}\r\n columns={menu_columns}\r\n bordered\r\n size=\"small\"\r\n rowKey=\"tabaccessid\"\r\n style={{ paddingTop: 10, overflow: \"scroll\" }}\r\n loading={hasDataMainMenus ? false : true}\r\n pagination={{ defaultPageSize: 5, total: dataSourceMainMenus.count, showTotal: (total, range) => `${range[0]} - ${range[1]} of ${total}` }}\r\n />\r\n
    \r\n\r\n

    \r\n

    \r\n\r\n \r\n !newRoles ? handleEditRoles() : handleAddRoles()\r\n }\r\n >\r\n Save\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 const val = e.target.value;\r\n setDetailsRoles((prevState) => {\r\n return { ...prevState, name: val };\r\n });\r\n }} />\r\n
    \r\n
    \r\n {\r\n const val = e.target.checked;\r\n setDetailsRoles((prevState) => {\r\n return { ...prevState, iscritical: val };\r\n });\r\n }}>\r\n Critical\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n\r\n setModalRolesManage(false)} key=\"close\">\r\n Close\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 val = e.target.value;\r\n setDetailsRoles((prevState) => {\r\n return { ...prevState, name: val };\r\n });\r\n }} readOnly/>\r\n
    \r\n\r\n
    \r\n \r\n Critical\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 index % 2 === 0 ? 'table-row-light' : 'table-row-dark'}\r\n dataSource={hasDataMainMenus ? dataSourceMainMenus : null}\r\n columns={mainmenuList_columns}\r\n bordered\r\n size=\"middle\"\r\n onRow={onMainMenusRowClick}\r\n rowKey=\"tabaccessid\"\r\n style={{ paddingTop: 10, height: 300, cursor: \"pointer\", overflow: \"scroll\" }}\r\n loading={hasDataMainMenus ? false : true}\r\n pagination={{ pageSize: 5 }}\r\n />\r\n\r\n
    \r\n\r\n
    \r\n\r\n \r\n\r\n \r\n\r\n index % 2 === 0 ? 'table-row-light' : 'table-row-dark'}\r\n dataSource={hasDataSubMenus ? dataSourceSubMenus : null}\r\n columns={submenuList_columns}\r\n // bordered\r\n size=\"middle\"\r\n // onRow={onPlanRowClick}\r\n rowKey=\"rolesaccessid\"\r\n style={{ paddingTop: 10, height: 300, overflow: \"scroll\" }}\r\n loading={hasDataSubMenus ? false : true}\r\n pagination={{ pageSize: 5 }}\r\n />\r\n
    \r\n\r\n\r\n
    \r\n \r\n\r\n \r\n handleAddASubMenus()\r\n }\r\n >\r\n Save\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 setSubMenusDropDown(e)}\r\n >\r\n {dataSourceSubMenusDropDown.map((submenu, index) => (\r\n \r\n {submenu.labelname}\r\n \r\n ))}\r\n \r\n
    \r\n\r\n
    \r\n \r\n\r\n \r\n !newMainMenu ? handleEditMainMenus() : handleAddMainMenus()\r\n }\r\n >\r\n Save\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 const val = e.target.value;\r\n setDetailsMainMenu((prevState) => {\r\n return { ...prevState, tabname: val };\r\n });\r\n }} />\r\n
    \r\n\r\n
    \r\n \r\n {\r\n const val = e.target.value;\r\n setDetailsMainMenu((prevState) => {\r\n return { ...prevState, icon: val };\r\n });\r\n }} />\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n \r\n\r\n setModalMainMenusManage(false)} key=\"close\">\r\n Close\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 val = e.target.value;\r\n setDetailsMainMenu((prevState) => {\r\n return { ...prevState, tabname: val };\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\n index % 2 === 0 ? 'table-row-light' : 'table-row-dark'}\r\n dataSource={hasDataSubMenusRoute ? dataSourceSubMenusRoute : null}\r\n columns={submenuRouteList_columns}\r\n bordered\r\n size=\"middle\"\r\n // onRow={onPlanRowClick}\r\n rowKey=\"modaccessid\"\r\n style={{ paddingTop: 10, height: 300, overflow: \"scroll\" }}\r\n loading={hasDataSubMenusRoute ? false : true}\r\n pagination={{ pageSize: 5 }}\r\n />\r\n\r\n
    \r\n\r\n
    \r\n\r\n \r\n\r\n \r\n !newSubMenuRoute ? handleEditSubMenusRoute() : handleAddSubMenusRoute()\r\n }\r\n >\r\n Save\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 const val = e.target.value;\r\n setDetailsSubMenu((prevState) => {\r\n return { ...prevState, labelname: val };\r\n });\r\n }} />\r\n
    \r\n\r\n
    \r\n \r\n {\r\n const val = e.target.value;\r\n setDetailsSubMenu((prevState) => {\r\n return { ...prevState, routename: val };\r\n });\r\n }} />\r\n
    \r\n\r\n
    \r\n \r\n {\r\n const val = e.target.value;\r\n setDetailsSubMenu((prevState) => {\r\n return { ...prevState, icon: val };\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\nimport React, { useState, useEffect } from \"react\";\r\nimport { useHistory, Link } from \"react-router-dom\";\r\nimport { Table, Modal, Input, Button, Select, Alert, Tag, Checkbox, Divider, Tooltip } from \"antd\";\r\nimport logo from \"../../assets/images/agora-app-featured.jpg\";\r\nimport CheckSession from \"../CheckSession\";\r\n\r\n\r\nexport default function Dashboard() {\r\n\r\n const [modalLoading, setModalLoading] = React.useState(false);\r\n const [success, setSuccess] = React.useState(null);\r\n const [successMsg, setSuccessMsg] = React.useState(\"\");\r\n const [savingMsg, setSavingMsg] = React.useState(\"\");\r\n\r\n let user_info = JSON.parse(localStorage.getItem(\"user_info\"));\r\n\r\n const [nameVariable, setnameVariable] = useState(\"\");\r\n\r\n useEffect(() => {\r\n // setnameVariable(\"I'm Mark!\");\r\n CheckSession();\r\n }, []);\r\n\r\n\r\n return (\r\n
    \r\n\r\n
    \r\n\r\n \r\n\r\n \"logo\"\r\n\r\n
    \r\n
    \r\n );\r\n}\r\n\r\nconst imgStyle = {\r\n display: \"block\",\r\n marginLeft: \"auto\",\r\n marginRight: \"auto\",\r\n\r\n width: \"60%\",\r\n maxHeight: 400,\r\n borderStyle: \"solid\",\r\n borderWidth: 2,\r\n borderRadius: 5,\r\n // borderStyle: \"solid\", borderWidth: 5, borderRadius: 5, borderColor: \"whitesmoke\", padding: 10\r\n};","import React, { useState, useEffect } from \"react\";\r\nimport { useToasts } from \"react-toast-notifications\";\r\nimport { Select, Menu, Modal, Button, DatePicker } from \"antd\";\r\nimport * as FileSaver from \"file-saver\";\r\nimport * as XLSX from \"xlsx\";\r\nimport { Decrypt, EncryptHeader, Decrypt2 } from \"../util/EncryptionHandler\";\r\nimport * as API from \"../util/live_api\";\r\nimport CheckSession from \"./CheckSession\";\r\n\r\nexport default function RequestLogs() {\r\n const [isVisible, setVisibleLogsModal] = useState(false);\r\n const [startDate, setStartDate] = useState(\"\");\r\n const [endDate, setEndDate] = useState(\"\");\r\n const [filterType, setFilterType] = useState(\"\");\r\n const [filterTypeSource, setFilterTypeSource] = useState(\"\");\r\n const [filterTypeApp, setFilterTypeApp] = useState(\"\");\r\n const [filename, setFilename] = useState(\"\");\r\n const [loading, setLoading] = useState(false);\r\n const [count, setCount] = useState(0);\r\n\r\n const { addToast } = useToasts();\r\n\r\n const formatDateRequestLog = \"YYYY-MM-DD\";\r\n\r\n let xlsreport = [];\r\n const file_Type =\r\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8\";\r\n const fileExtension = \".xlsx\";\r\n\r\n const { SubMenu } = Menu;\r\n const { Option } = Select;\r\n const { RangePicker } = DatePicker;\r\n\r\n async function handleRequestLogs() {\r\n setLoading(true);\r\n if (count > 31) {\r\n setLoading(false);\r\n return alert(\"Data gathering is limited to 31 days only.\");\r\n }\r\n\r\n if (startDate == \"\" || endDate == \"\") {\r\n setLoading(false);\r\n return alert(\"Please input date range.\");\r\n }\r\n\r\n if (filterType == \"\") {\r\n setLoading(false);\r\n return alert(\"Select status filter.\");\r\n }\r\n if (filterTypeApp == \"\") {\r\n setLoading(false);\r\n return alert(\"Select application filter.\");\r\n }\r\n\r\n if (filterTypeSource == \"\") {\r\n setLoading(false);\r\n return alert(\"Select source filter.\");\r\n }\r\n\r\n let EncStartDate = EncryptHeader(startDate);\r\n let EncEndDate = EncryptHeader(endDate);\r\n\r\n let logresp = await fetch(Decrypt(API.GET_REQUEST_LOGS), {\r\n method: \"GET\",\r\n headers: {\r\n DateFrom: EncStartDate,\r\n DateTo: EncEndDate,\r\n },\r\n });\r\n\r\n let logrespJson = await logresp.json();\r\n\r\n if (logrespJson) {\r\n let decrypted = logrespJson.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n return newD;\r\n });\r\n\r\n return exportToXLSX(decrypted);\r\n } else {\r\n setLoading(false);\r\n addToast(logrespJson.error_message, {\r\n appearance: \"error\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n }\r\n }\r\n\r\n function exportToXLSX(xlsdata) {\r\n let filterdate = xlsdata.filter((data) => {\r\n switch (filterType) {\r\n case \"Success\":\r\n return data.statuscode == \"200\" || data.statuscode == \"201\";\r\n case \"Failed\":\r\n return data.statuscode != \"201\" && data.statuscode != \"200\";\r\n default:\r\n return data;\r\n }\r\n });\r\n\r\n let filterapp = filterdate.filter((data) => {\r\n switch (filterTypeApp) {\r\n case \"Telaventus\":\r\n return data.application == \"TelAventus\";\r\n case \"Medgate\":\r\n return data.application == \"Medgate\";\r\n default:\r\n return data;\r\n }\r\n });\r\n\r\n let filtersource = filterapp.filter((data) => {\r\n switch (filterTypeSource) {\r\n case \"Agoraapp\":\r\n return data.source == \"AgoraApp\";\r\n case \"Agoraweb\":\r\n return data.source == \"AgoraWeb\";\r\n default:\r\n return data;\r\n }\r\n });\r\n filtersource.forEach((report) => {\r\n xlsreport = xlsreport.concat({\r\n Request_Time: report.reqtime,\r\n Request_Body: report.reqbody,\r\n Request_URI: report.uri,\r\n Request_Status: report.statuscode,\r\n Request_Message: report.errormsg,\r\n Request_App: report.application,\r\n Response_Time: report.resptime,\r\n Request_Source: report.source,\r\n Request_Account: report.acctnum,\r\n Request_Mobile: report.mobileno,\r\n });\r\n });\r\n const ws = XLSX.utils.json_to_sheet(xlsreport);\r\n const wb = { Sheets: { Request_Logs: ws }, SheetNames: [\"Request_Logs\"] };\r\n const excelBuffer = XLSX.write(wb, { bookType: \"xlsx\", type: \"array\" });\r\n const data = new Blob([excelBuffer], { type: file_Type });\r\n FileSaver.saveAs(data, filename + fileExtension);\r\n setFilename(\"\");\r\n setLoading(false);\r\n alert(\"Gathering request logs complete.\");\r\n }\r\n\r\n useEffect(() => {\r\n CheckSession();\r\n setVisibleLogsModal(true);\r\n }, []);\r\n\r\n return (\r\n
    \r\n handleRequestLogs()}>\r\n {loading ? (\r\n
    \r\n
    {\" \"}\r\n Exporting...\r\n
    \r\n ) : (\r\n \"Export\"\r\n )}\r\n ,\r\n ,\r\n ]}\r\n >\r\n \r\n {\r\n setStartDate(dateString[0]);\r\n setEndDate(dateString[1]);\r\n\r\n const start = new Date(dateString[0]);\r\n const end = new Date(dateString[1]);\r\n let loop = new Date(start);\r\n let count = 0;\r\n\r\n while (loop <= end) {\r\n count = count + 1;\r\n let newDate = loop.setDate(loop.getDate() + 1);\r\n loop = new Date(newDate);\r\n }\r\n\r\n setCount(count);\r\n }}\r\n />\r\n
    \r\n setFilterType(e)}\r\n >\r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n setFilterTypeApp(e)}\r\n >\r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n setFilterTypeSource(e)}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n
    \r\n );\r\n}\r\n","\r\nimport React, { useState, useEffect, useRef } from \"react\";\r\nimport { Table, Modal, Input, Button, Select, Divider, Empty, Col, Row, Spin } from \"antd\";\r\nimport * as API from \"../util/live_api\";\r\nimport {\r\n Decrypt,\r\n Decrypt2,\r\n Encrypt,\r\n EncryptHeader,\r\n Encrypt2,\r\n ImgEncrypt,\r\n} from \"../util/EncryptionHandler\";\r\nimport { render } from \"react-dom\";\r\nimport CheckSession from \"./CheckSession\";\r\n\r\nconst { Search } = Input;\r\n\r\nconst plan_columns = [\r\n {\r\n title: \"Corporate Account\",\r\n dataIndex: \"acct\",\r\n width: 200,\r\n },\r\n {\r\n title: \"Contract\",\r\n dataIndex: \"contract\",\r\n width: 100,\r\n },\r\n {\r\n title: \"Company\",\r\n dataIndex: \"company\",\r\n width: 350,\r\n },\r\n {\r\n title: \"Status\",\r\n dataIndex: \"status\",\r\n width: 100,\r\n },\r\n {\r\n dataIndex: \"avega\",\r\n className: \"hide\",\r\n },\r\n];\r\n\r\nexport default function UploadATD() {\r\n\r\n const [nameVariable, setnameVariable] = useState(\"\");\r\n\r\n let user_info = JSON.parse(localStorage.getItem(\"user_info\"));\r\n\r\n const [detailsUploadATD, setdetailsUploadATD] = useState({\r\n corpacct: \"\",\r\n contract: \"\",\r\n intellicare: \"\",\r\n // filename: \"\",\r\n filetag: \"ATD\",\r\n postedby: user_info.data.emailaddress,\r\n\r\n fileext: \"\",\r\n base64: null\r\n });\r\n\r\n const [detailsUploadEPLAN, setdetailsUploadEPLAN] = useState({\r\n corpacct: \"\",\r\n contract: \"\",\r\n intellicare: \"\",\r\n // filename: \"\",\r\n filetag: \"EPLAN\",\r\n postedby: user_info.data.emailaddress,\r\n fileext: \"\",\r\n base64: null\r\n });\r\n\r\n //For Plan table\r\n const [searchValue, setsearchValue] = useState(\"\");\r\n // const [selectedAccount, setselectedAccount] = useState(\"\");\r\n\r\n // For Display in Textbox\r\n const [corpacct, setCorpacct] = useState(\"\");\r\n const [company, setCompany] = useState(\"\");\r\n const [contract, setContract] = useState(\"\");\r\n const [status, setStatus] = useState(\"\");\r\n\r\n // const [loading, setLoading] = useState(false);\r\n const [loadingSpinner, setLoadingSpinner] = useState(false);\r\n\r\n const [lstPlan, setlstPlan] = useState([]);\r\n const [hasDataPlan, setHasDataPlan] = useState(false);\r\n const [avega, setAvega] = useState(\"\");\r\n\r\n const [disabledButtonUploadATD, setdisabledButtonUploadATD] = useState(true);\r\n const [disabledButtonUploadEPLAN, setdisabledButtonUploadEPLAN] = useState(true);\r\n\r\n //Modals\r\n const [modal_plan, setModalPlan] = useState(false);\r\n\r\n // for Upload (Dynamic)\r\n // const [fileext, setFileExt] = useState(\"\");\r\n // const [Base64, setBase64] = useState(null);\r\n\r\n const [selectedImageATD, setSelectedImageATD] = useState(null); // for Download\r\n const [selectedImageEPLAN, setSelectedImageEPLAN] = useState(null); // for Download\r\n\r\n const [hasUploadFileATD, setHasUploadFileATD] = useState(false);\r\n const [hasUploadFileEPLAN, setHasUploadFileEPLAN] = useState(false);\r\n const [disabledButtonSelect, setdisabledButtonSelect] = useState(true);\r\n\r\n\r\n const [previewVisibleATD, setPreviewVisibleATD] = useState(false);\r\n const [previewVisibleEPLAN, setPreviewVisibleEPLAN] = useState(false);\r\n\r\n const inputFileATD = useRef(null);\r\n const inputFileEPLAN = useRef(null);\r\n\r\n useEffect(() => {\r\n // setnameVariable(\"I'm Mark!\");\r\n CheckSession();\r\n }, []);\r\n\r\n\r\n function onClickSearchCompany() {\r\n setsearchValue(\"\");\r\n // setselectedAccount(\"\");\r\n setHasDataPlan(true);\r\n setlstPlan([]);\r\n setModalPlan(true);\r\n\r\n // setLoading(true)\r\n\r\n }\r\n\r\n async function onClickSelectAccount() {\r\n if (corpacct.length == 0) {\r\n alert(\"No selected company.\");\r\n return;\r\n }\r\n\r\n setLoadingSpinner(true)\r\n await DisplayUploadImage();\r\n // setLoadingSpinner(false)\r\n\r\n\r\n }\r\n\r\n async function DisplayUploadImage() {\r\n\r\n setdisabledButtonUploadATD(true)\r\n setdisabledButtonUploadEPLAN(true)\r\n // setLoadingSpinner(true)\r\n // setHasUploadFileEPLAN(false);\r\n // setHasUploadFileATD(false);\r\n // setLoading(false);\r\n setModalPlan(false);\r\n\r\n let renewalData = await getRenewalFiles();\r\n if (renewalData == undefined) {\r\n\r\n setLoadingSpinner(false);\r\n setdisabledButtonUploadATD(false)\r\n setdisabledButtonUploadEPLAN(false)\r\n return\r\n }\r\n\r\n let renewalDataATD = await filterRenewalDataPerType(renewalData, \"ATD\")\r\n if (renewalDataATD.length != 0) {\r\n\r\n let imageBase64ATD = await getSharepointImage(renewalDataATD);\r\n\r\n let blob_atd = await convertBase64ToBlob(imageBase64ATD.base64, renewalDataATD[0].fileext);\r\n let readerATD = new FileReader();\r\n readerATD.readAsDataURL(blob_atd);\r\n readerATD.onload = () => {\r\n setSelectedImageATD(readerATD.result)\r\n setHasUploadFileATD(true)\r\n }\r\n\r\n } else {\r\n setdisabledButtonUploadATD(false)\r\n }\r\n\r\n let renewalDataEPLAN = await filterRenewalDataPerType(renewalData, \"EPLAN\")\r\n if (renewalDataEPLAN.length != 0) {\r\n\r\n let imageBase64eplan = await getSharepointImage(renewalDataEPLAN);\r\n\r\n let blob_eplan = await convertBase64ToBlob(imageBase64eplan.base64, renewalDataEPLAN[0].fileext);\r\n let readerEPLAN = new FileReader();\r\n readerEPLAN.readAsDataURL(blob_eplan);\r\n readerEPLAN.onload = () => {\r\n setSelectedImageEPLAN(readerEPLAN.result)\r\n setHasUploadFileEPLAN(true)\r\n }\r\n\r\n } else {\r\n setdisabledButtonUploadEPLAN(false)\r\n }\r\n\r\n setLoadingSpinner(false)\r\n\r\n }\r\n\r\n async function filterRenewalDataPerType(record, tag) {\r\n\r\n //#region (Filter Per Type)\r\n let filteredData = record.filter((item) => {\r\n const itemData = `${item.filetag.toUpperCase()}`;\r\n const textData = tag.toUpperCase();\r\n return itemData.indexOf(textData) > -1;\r\n });\r\n //#endregion (Filter Per Type)\r\n\r\n return filteredData\r\n }\r\n\r\n function onPlanRowClick(record) {\r\n\r\n return {\r\n onClick: () => {\r\n\r\n setCorpacct(record.acct);\r\n setCompany(record.company);\r\n setContract(record.contract)\r\n setStatus(record.status)\r\n setdisabledButtonSelect(false)\r\n\r\n // ATD\r\n detailsUploadATD.corpacct = record.acct\r\n detailsUploadATD.contract = record.contract\r\n detailsUploadATD.intellicare = !record.avega // this will exchange from AVEGA to INTELLICARE (if AVEGA = true => INTELLICARE = false) Vice Versa\r\n\r\n // EPLAN\r\n detailsUploadEPLAN.corpacct = record.acct\r\n detailsUploadEPLAN.contract = record.contract\r\n detailsUploadEPLAN.intellicare = !record.avega // this will exchange from AVEGA to INTELLICARE (if AVEGA = true => INTELLICARE = false) Vice Versa\r\n },\r\n };\r\n }\r\n\r\n async function onSearchCompany(value) {\r\n\r\n if (value.length == 0) {\r\n alert(\"Search field is empty.\");\r\n return;\r\n }\r\n\r\n setlstPlan([]);\r\n setHasDataPlan(false);\r\n setHasUploadFileATD(false)\r\n setHasUploadFileEPLAN(false)\r\n setdisabledButtonSelect(true)\r\n\r\n setSelectedImageATD(null)\r\n setSelectedImageEPLAN(null)\r\n\r\n try {\r\n let Value = Encrypt2({\r\n key: value,\r\n });\r\n\r\n let resp = await fetch(Decrypt(API.GET_CORPACCT), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ Value }),\r\n });\r\n let respJson = await resp.json();\r\n\r\n if (respJson.success) {\r\n let decrypted = respJson.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n return newD;\r\n });\r\n\r\n setHasDataPlan(true);\r\n setlstPlan(decrypted)\r\n } else {\r\n setHasDataPlan(true);\r\n // setLoading(false);\r\n setlstPlan([])\r\n }\r\n\r\n } catch (error) {\r\n // error\r\n setHasDataPlan(false);\r\n }\r\n }\r\n\r\n\r\n async function getRenewalFiles() {\r\n try {\r\n\r\n let Corpacct = EncryptHeader(corpacct);\r\n let Contract = EncryptHeader(contract);\r\n\r\n let resp = await fetch(Decrypt(API.GET_RENEWAL_FILES), {\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n CorpAcct: Corpacct,\r\n Contract: Contract\r\n },\r\n });\r\n\r\n let respJson = await resp.json();\r\n\r\n if (respJson.data != null) {\r\n\r\n let decrypted = respJson.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n return newD;\r\n });\r\n\r\n\r\n return decrypted\r\n }\r\n\r\n\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n\r\n return\r\n\r\n }\r\n\r\n async function getSharepointImage(paramRenewalData) {\r\n\r\n let Value = Encrypt2({\r\n filename: paramRenewalData[0].filename,\r\n filepath: paramRenewalData[0].filepath,\r\n fileext: paramRenewalData[0].fileext,\r\n });\r\n\r\n let resp = await fetch(Decrypt(API.DOWNLOADIMAGE_RENEWAL), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ Value }),\r\n });\r\n\r\n let respJson = await resp.json();\r\n\r\n return respJson\r\n\r\n }\r\n\r\n async function SaveUploadFile(data) {\r\n\r\n let Value = Encrypt2({\r\n corpacct: data.corpacct,\r\n contract: data.contract,\r\n intellicare: data.intellicare,\r\n filetag: data.filetag,\r\n postedby: data.postedby,\r\n fileext: data.fileext,\r\n base64: data.base64\r\n });\r\n\r\n let resp = await fetch(Decrypt(API.UPLOADIMAGE_RENEWAL),\r\n {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n // 'Content-Type': 'multipart/form-data'\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ Value }),\r\n });\r\n\r\n let respText = await resp.json();\r\n\r\n if(resp.status === 200) {\r\n \r\n await DisplayUploadImage();\r\n\r\n } else {\r\n let respJson = await Decrypt2(respText);\r\n return alert(\r\n respJson.message\r\n );\r\n }\r\n\r\n }\r\n\r\n async function convertBase64ToBlob(base64Image, fileext) {\r\n // Hold the content type\r\n const imageType = fileext;\r\n // Decode Base64 string\r\n const decodedData = window.atob(base64Image);\r\n // Create UNIT8ARRAY of size same as row data length\r\n const uInt8Array = new Uint8Array(decodedData.length);\r\n // Insert all character code into uInt8Array\r\n for (let i = 0; i < decodedData.length; ++i) {\r\n uInt8Array[i] = decodedData.charCodeAt(i);\r\n }\r\n // Return BLOB image after conversion\r\n return new Blob([uInt8Array], { type: imageType });\r\n }\r\n\r\n\r\n return (\r\n
    \r\n\r\n onClickSearchCompany()}\r\n >\r\n Select Account\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\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 onClickSelectAccount()} disabled={disabledButtonSelect}>\r\n {/* {loading ? (\r\n
    \r\n
    {\" \"}\r\n Selecting...\r\n
    \r\n ) : (\r\n \"Select\"\r\n )} */}\r\n Select\r\n ,\r\n ,\r\n ]}\r\n >\r\n
    \r\n \r\n onSearchCompany(value)}\r\n />\r\n

    \r\n \r\n \r\n \r\n
    \r\n \r\n\r\n setPreviewVisibleATD(false)} key=\"close\">\r\n Close\r\n ,\r\n ]}>\r\n\r\n {/* \"example\" */}\r\n {selectedImageATD && (\r\n \"example\"\r\n )}\r\n \r\n\r\n setPreviewVisibleEPLAN(false)} key=\"close\">\r\n Close\r\n ,\r\n ]}>\r\n\r\n {/* \"example\" */}\r\n {selectedImageEPLAN && (\r\n \"example\"\r\n )}\r\n \r\n\r\n
    \r\n )\r\n\r\n}\r\n\r\nconst emptyStyle = {\r\n borderStyle: \"solid\",\r\n borderWidth: 5,\r\n borderRadius: 5,\r\n borderColor: \"whitesmoke\",\r\n padding: 10,\r\n marginBottom: 20\r\n}","import React, { useState, useEffect } from \"react\";\r\nimport { Table, Modal, Input, Button, Select, Tag, Popconfirm } from \"antd\";\r\nimport moment from \"moment\";\r\nimport * as FileSaver from \"file-saver\";\r\nimport * as XLSX from \"xlsx\";\r\nimport jsPDF from \"jspdf\";\r\nimport \"jspdf-autotable\";\r\nimport CheckSession from \"./CheckSession\";\r\n\r\nimport LinearIndeterminate from \"./LinearInderterminate\";\r\nimport Spinner from \"./Newsletter/Spinner\";\r\nimport * as API from \"../util/live_api\";\r\nimport { Decrypt, Decrypt2, Encrypt2 } from \"../util/EncryptionHandler\";\r\n\r\nconst { Option } = Select;\r\nconst { Search, TextArea } = Input;\r\n\r\nexport default function FeaturesControlAruga() {\r\n let user_info = JSON.parse(localStorage.getItem(\"user_info\"));\r\n let xlsreport = [];\r\n const file_Type =\r\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8\";\r\n const fileExtension = \".xlsx\";\r\n const [features, setFeatures] = useState([]);\r\n const [temp, setTemp] = useState([]);\r\n const [details, setDetails] = useState({\r\n featurerecid: \"\",\r\n feature: \"\",\r\n cbmsg: \"\",\r\n status: \"\",\r\n url: \"\",\r\n postedby: \"\",\r\n posted: undefined,\r\n editedby: \"\",\r\n edited: undefined,\r\n });\r\n const [modal, setModal] = useState(false);\r\n const [newFeature, setNewFeature] = useState(false);\r\n const [loading, setLoading] = useState(false);\r\n const [modalLoading, setModalLoading] = React.useState(false);\r\n const [success, setSuccess] = React.useState(null);\r\n const [successMsg, setSuccessMsg] = React.useState(\"\");\r\n const [savingMsg, setSavingMsg] = React.useState(\"\");\r\n const [filetype, setFiletype] = useState(\"\");\r\n\r\n const columns = [\r\n {\r\n title: \"Feature\",\r\n dataIndex: \"feature\",\r\n width: \"170px\",\r\n },\r\n {\r\n title: \"Message\",\r\n dataIndex: \"cbmsg\",\r\n key: \"cbmsg\",\r\n width: \"350px\",\r\n },\r\n {\r\n title: \"URL/Link\",\r\n dataIndex: \"url\",\r\n key: \"url\",\r\n width: \"350px\",\r\n },\r\n {\r\n title: \"Status\",\r\n dataIndex: \"status\",\r\n render: (status) => {\r\n let color = \"geekblue\";\r\n if (status === \"D\") {\r\n color = \"volcano\";\r\n }\r\n return (\r\n \r\n {status.toUpperCase()}\r\n \r\n );\r\n },\r\n },\r\n {\r\n title: \"Posted Date\",\r\n dataIndex: \"posted\",\r\n width: \"160px\",\r\n },\r\n {\r\n title: \"Posted by\",\r\n dataIndex: \"postedby\",\r\n },\r\n {\r\n title: \"Edited Date\",\r\n dataIndex: \"edited\",\r\n width: \"160px\",\r\n },\r\n {\r\n title: \"Edited by\",\r\n dataIndex: \"editedby\",\r\n },\r\n {\r\n dataIndex: \"featurerecid\",\r\n className: \"hide\",\r\n },\r\n {\r\n title: \"Action\",\r\n key: \"action\",\r\n render: (record) =>\r\n features.length >= 1 ? (\r\n <>\r\n handleRowClick(record)}\r\n >\r\n Edit\r\n \r\n handleDeleteFeature(record.featurerecid)}\r\n >\r\n \r\n \r\n \r\n ) : null,\r\n },\r\n ];\r\n\r\n useEffect(() => {\r\n CheckSession();\r\n }, []);\r\n\r\n useEffect(() => {\r\n async function GetAllFeatures() {\r\n try {\r\n setLoading(true);\r\n let resp = await fetch(Decrypt(API.REACT_APP_GET_ALL_FEATURES_ARUGA), {\r\n method: \"Get\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n },\r\n });\r\n let respJson = await resp.json();\r\n if (respJson === \"Invalid Access Token\") {\r\n setLoading(false);\r\n } else {\r\n let decryptedJson = respJson.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n return newD;\r\n });\r\n setFeatures(decryptedJson);\r\n setTemp(decryptedJson);\r\n setLoading(false);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n setLoading(false);\r\n }\r\n }\r\n GetAllFeatures();\r\n }, [user_info.access_token]);\r\n async function GetAllFeatures() {\r\n try {\r\n setLoading(true);\r\n let resp = await fetch(Decrypt(API.REACT_APP_GET_ALL_FEATURES_ARUGA), {\r\n method: \"Get\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n },\r\n });\r\n let respJson = await resp.json();\r\n\r\n if (respJson === \"Invalid Access Token\") {\r\n setLoading(false);\r\n } else {\r\n \r\n let decryptedJson = respJson.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n return newD;\r\n });\r\n\r\n\r\n setFeatures(decryptedJson);\r\n setTemp(decryptedJson);\r\n setLoading(false);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n setLoading(false);\r\n }\r\n }\r\n function handleRowClick(record) {\r\n setNewFeature(false);\r\n setModal(true);\r\n setDetails({\r\n featurerecid: record.featurerecid,\r\n feature: record.feature,\r\n cbmsg: record.cbmsg,\r\n url: record.url,\r\n status: record.status,\r\n postedby: record.postedby,\r\n posted: record.posted,\r\n editedby: record.editedby,\r\n edited: record.edited,\r\n });\r\n }\r\n function handleAddFeatureOnClick() {\r\n setNewFeature(true);\r\n setModal(true);\r\n setDetails({\r\n featurerecid: \"\",\r\n feature: \"\",\r\n cbmsg: \"\",\r\n url: \"\",\r\n status: \"\",\r\n postedby: \"\",\r\n posted: moment(new Date()).format(\"LL\"),\r\n editedby: \"\",\r\n edited: undefined,\r\n });\r\n }\r\n async function handleAddFeature() {\r\n try {\r\n setModalLoading(true);\r\n setSuccess(null);\r\n setSavingMsg(\"Saving new feature...\");\r\n let value = Encrypt2({\r\n feature: details.feature,\r\n status: details.status,\r\n remarks: details.cbmsg,\r\n url: details.url,\r\n postedby: user_info.data.emailaddress,\r\n });\r\n let resp = await fetch(Decrypt(API.REACT_APP_ADD_FEATURE_ARUGA), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ value }),\r\n });\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText);\r\n if (respJson.is_success) {\r\n setSuccess(true);\r\n setSuccessMsg(\"New feature has been added.\");\r\n } else {\r\n setSuccess(false);\r\n setSuccessMsg(respJson.error_message);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function handleEditFeature() {\r\n try {\r\n setModalLoading(true);\r\n setSuccess(null);\r\n setSavingMsg(\"Saving changes...\");\r\n let value = Encrypt2({\r\n featcon_ID: details.featurerecid,\r\n feature: details.feature,\r\n status: details.status,\r\n remarks: details.cbmsg,\r\n url: details.url,\r\n editedby: user_info.data.emailaddress,\r\n });\r\n\r\n let resp = await fetch(Decrypt(API.REACT_APP_EDIT_FEAUTES_ARUGA), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ value }),\r\n });\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText);\r\n if (respJson.is_success) {\r\n setSuccess(true);\r\n setSuccessMsg(\"Feature Successfully Updated\");\r\n } else {\r\n setSuccess(false);\r\n setSuccessMsg(respJson.error_message);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function handleDeleteFeature(id) {\r\n try {\r\n setModalLoading(true);\r\n setSuccess(null);\r\n setSavingMsg(\"Saving changes...\");\r\n let value = Encrypt2({\r\n featcon_ID: id,\r\n });\r\n let resp = await fetch(Decrypt(API.REACT_APP_DELETE_FEATURE_ARUGA), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ value }),\r\n });\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText);\r\n if (respJson.is_success) {\r\n setSuccess(true);\r\n setSuccessMsg(\"Feature Successfully Deleted\");\r\n } else {\r\n setSuccess(false);\r\n setSuccessMsg(respJson.error_message);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n function closeSpinner() {\r\n setModalLoading(false);\r\n if (success === true) {\r\n setModal(false);\r\n setLoading(false);\r\n GetAllFeatures();\r\n }\r\n }\r\n function search(str) {\r\n let searchedData = temp.filter((item) => {\r\n const itemData = `${item.feature.toUpperCase()}`;\r\n const textData = str.toUpperCase();\r\n return itemData.indexOf(textData) > -1;\r\n });\r\n setFeatures(searchedData);\r\n }\r\n function sort(by) {\r\n setFeatures([]);\r\n let sorted = temp.sort((a, b) => {\r\n if (by === \"P\") {\r\n return new Date(b.posted) - new Date(a.posted);\r\n } else if (by === \"A\") {\r\n return a.feature > b.feature ? 1 : -1;\r\n } else if (by === \"D\") {\r\n return a.feature < b.feature ? 1 : -1;\r\n }\r\n return 0;\r\n });\r\n setFeatures((prevFeatures) => [...prevFeatures, ...sorted]);\r\n }\r\n function exportToXLSX(xlsdata) {\r\n xlsdata.forEach((report) => {\r\n xlsreport = xlsreport.concat({\r\n featurerecid: report.featurerecid,\r\n feature: report.feature,\r\n cbmsg: report.cbmsg,\r\n url: report.url,\r\n status: report.status,\r\n postedby: report.postedby,\r\n posted: report.posted,\r\n editedby: report.editedby,\r\n edited: report.edited,\r\n });\r\n });\r\n const ws = XLSX.utils.json_to_sheet(xlsreport);\r\n const wb = { Sheets: { all_features: ws }, SheetNames: [\"all_features\"] };\r\n const excelBuffer = XLSX.write(wb, { bookType: \"xlsx\", type: \"array\" });\r\n const data = new Blob([excelBuffer], { type: file_Type });\r\n FileSaver.saveAs(data, \"features\" + fileExtension);\r\n }\r\n function exportToPDF(xlsdata) {\r\n const unit = \"pt\";\r\n const size = \"A4\";\r\n const orientation = \"landscape\";\r\n const doc = new jsPDF(orientation, unit, size);\r\n doc.setFontSize(15);\r\n\r\n const title = \"Aruga App Features\";\r\n const headers = [\r\n [\r\n \"ID\",\r\n \"Feature\",\r\n \"Message\",\r\n \"URL\",\r\n \"Status\",\r\n \"Posted by\",\r\n \"Posted date\",\r\n \"Edited by\",\r\n \"Edited date\",\r\n ],\r\n ];\r\n const data = xlsdata.map((element) => [\r\n element.featurerecid,\r\n element.feature,\r\n element.cbmsg,\r\n element.url,\r\n element.status,\r\n element.postedby,\r\n element.posted,\r\n element.editedby,\r\n element.edited,\r\n ]);\r\n let content = {\r\n styles: {\r\n cellWidth: \"auto\",\r\n font: \"times\",\r\n fontSize: 8,\r\n },\r\n margin: { left: 10, right: 10 },\r\n startY: 50,\r\n head: headers,\r\n body: data,\r\n };\r\n\r\n doc.text(title, 40, 40);\r\n doc.autoTable(content);\r\n doc.save(\"features\" + \".pdf\");\r\n }\r\n\r\n return (\r\n
    \r\n {loading ? : null}\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n sort(e)}\r\n >\r\n \r\n \r\n \r\n \r\n setFiletype(e)}\r\n >\r\n \r\n \r\n \r\n \r\n filetype === \"\"\r\n ? alert(\"Please select file type\")\r\n : filetype === \"Excel\"\r\n ? exportToXLSX(features)\r\n : exportToPDF(features)\r\n }\r\n >\r\n Export\r\n \r\n
    \r\n\r\n search(e.target.value)}\r\n allowClear\r\n />\r\n
    \r\n 0 ? features : null}\r\n columns={columns}\r\n rowKey=\"featurerecid\"\r\n style={{ paddingTop: 10, overflow: \"scroll\" }}\r\n loading={loading}\r\n size=\"middle\"\r\n />\r\n
    \r\n \r\n newFeature ? handleAddFeature() : handleEditFeature()\r\n }\r\n >\r\n Save\r\n ,\r\n ,\r\n ]}\r\n >\r\n
    \r\n \r\n {\r\n const val = e.target.value;\r\n setDetails((prevState) => {\r\n return { ...prevState, feature: val };\r\n });\r\n }}\r\n style={{ marginBottom: 5 }}\r\n />\r\n \r\n {\r\n const val = e.target.value;\r\n setDetails((prevState) => {\r\n return { ...prevState, cbmsg: val };\r\n });\r\n }}\r\n style={{ marginBottom: 5 }}\r\n />\r\n
    \r\n \r\n {\r\n const val = e.target.value;\r\n setDetails((prevState) => {\r\n return { ...prevState, url: val };\r\n });\r\n }}\r\n style={{ marginBottom: 5 }}\r\n />\r\n\r\n \r\n \r\n setDetails((prevState) => {\r\n return { ...prevState, status: 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 {newFeature ? null : (\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\n\r\n\r\nimport React, { useState, useEffect } from \"react\";\r\nimport { useToasts } from \"react-toast-notifications\";\r\nimport {\r\n Select,\r\n Menu,\r\n Icon,\r\n Modal,\r\n Input,\r\n Button,\r\n Alert,\r\n DatePicker,\r\n} from \"antd\";\r\n\r\nimport * as FileSaver from \"file-saver\";\r\nimport * as XLSX from \"xlsx\";\r\n\r\nimport {\r\n Decrypt,\r\n EncryptHeader,\r\n Encrypt2,\r\n Decrypt2,\r\n Encrypt,\r\n} from \"../../util/EncryptionHandler\";\r\n\r\nimport * as API from \"../../util/live_api\";\r\nimport CheckSession from \"../CheckSession\";\r\n\r\nexport default function SurveyReport() {\r\n\r\n const [isVisible, setVisibleLogsModal] = useState(false);\r\n const [startDate, setStartDate] = useState(\"\");\r\n const [endDate, setEndDate] = useState(\"\");\r\n const [FilterPlatform, setFilterPlatform] = useState(\"\");\r\n const [FilterCompany, setFilterCompany] = useState(\"true\");\r\n const [filterTypeApp, setFilterTypeApp] = useState(\"\");\r\n const [filename, setFilename] = useState(\"\");\r\n\r\n const { addToast } = useToasts();\r\n\r\n const formatDateRequestLog = \"YYYY-MM-DD\";\r\n\r\n let xlsreport = [];\r\n const file_Type =\r\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8\";\r\n const fileExtension = \".xlsx\";\r\n\r\n const { SubMenu } = Menu;\r\n const { Option } = Select;\r\n const { RangePicker } = DatePicker;\r\n\r\n let user_info = JSON.parse(localStorage.getItem(\"user_info\"));\r\n\r\n async function handleSurveyGather() {\r\n // if (startDate == \"\" || endDate == \"\")\r\n // return alert(\"Please input date range.\");\r\n\r\n if (filterTypeApp == \"\") return alert(\"Select application filter\");\r\n if (FilterPlatform == \"\") return alert(\"Select platform filter\");\r\n\r\n\r\n let intellicare_tag = true;\r\n if (FilterCompany === \"false\") {\r\n intellicare_tag = false;\r\n }\r\n\r\n let Value = Encrypt2({\r\n intellicare: intellicare_tag,\r\n source: filterTypeApp,\r\n platform: FilterPlatform,\r\n feature: \"ALL\"\r\n });\r\n\r\n // console.log({\r\n // intellicare: intellicare_tag,\r\n // source: filterTypeApp,\r\n // platform: FilterPlatform,\r\n // feature: \"ALL\"\r\n // });\r\n\r\n // let EncStartDate = EncryptHeader(startDate);\r\n // let EncEndDate = EncryptHeader(endDate);\r\n\r\n let resp = await fetch(Decrypt(API.REACT_APP_GET_RATING_REPORT), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ Value }),\r\n });\r\n let respJson = await resp.json();\r\n\r\n if (respJson) {\r\n let decrypted = respJson.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n return newD;\r\n });\r\n\r\n // console.log(decrypted);\r\n\r\n return exportToXLSX(decrypted);\r\n } else {\r\n addToast(respJson.error_message, {\r\n appearance: \"error\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n }\r\n }\r\n\r\n function exportToXLSX(xlsdata) {\r\n xlsdata.forEach((report) => {\r\n xlsreport = xlsreport.concat({\r\n Name: report.name,\r\n Acct: report.acctnum,\r\n Source: report.source,\r\n Company: report.intellicare == true ? \"INTELLICARE\" : \"AVEGA\",\r\n Platform: report.platform,\r\n Feature: report.feature,\r\n RatingDate: report.ratingdatetime,\r\n PostedDate: report.posteddate,\r\n Ratings: report.ratings,\r\n Reviews: report.reviews,\r\n });\r\n });\r\n const ws = XLSX.utils.json_to_sheet(xlsreport);\r\n const wb = { Sheets: { Request_Logs: ws }, SheetNames: [\"Request_Logs\"] };\r\n const excelBuffer = XLSX.write(wb, { bookType: \"xlsx\", type: \"array\" });\r\n const data = new Blob([excelBuffer], { type: file_Type });\r\n FileSaver.saveAs(data, filename + fileExtension);\r\n setFilename(\"\");\r\n }\r\n\r\n\r\n useEffect(() => {\r\n CheckSession();\r\n setVisibleLogsModal(true)\r\n }, []);\r\n\r\n return (\r\n
    \r\n\r\n handleSurveyGather()}>\r\n Export\r\n ,\r\n ,\r\n ]}\r\n >\r\n {/* \r\n {\r\n setStartDate(dateString[0]);\r\n setEndDate(dateString[1]);\r\n }}\r\n /> */}\r\n
    \r\n \r\n setFilterTypeApp(e)}\r\n >\r\n \r\n {/* */}\r\n \r\n
    \r\n
    \r\n \r\n setFilterPlatform(e)}\r\n >\r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n setFilterCompany(e)}\r\n >\r\n \r\n \r\n \r\n \r\n\r\n
    \r\n );\r\n\r\n}","import React, { useState, useEffect } from \"react\";\r\nimport { Table, Modal, Input, Button, Select, Tag } from \"antd\";\r\nimport { useToasts } from \"react-toast-notifications\";\r\nimport * as API from \"../../util/live_api\";\r\nimport CheckSession from \"../CheckSession\";\r\nimport {\r\n Decrypt,\r\n QMSEncryptBody,\r\n QMSDecryptBody,\r\n AdminSysEncryptBody,\r\n AdminSysDecryptBody,\r\n} from \"../../util/EncryptionHandler\";\r\n\r\nconst { Option } = Select;\r\n\r\nconst terminals_columns = [\r\n {\r\n title: \"Terminal ID\",\r\n dataIndex: \"terminalid\",\r\n key: \"terminalid\",\r\n },\r\n {\r\n title: \"MAC Address\",\r\n dataIndex: \"macaddress\",\r\n },\r\n {\r\n title: \"Device ID\",\r\n dataIndex: \"deviceid\",\r\n },\r\n {\r\n title: \"Hospital Code\",\r\n dataIndex: \"hscode\",\r\n },\r\n {\r\n title: 'Status',\r\n key: 'tags',\r\n dataIndex: 'tags',\r\n render: tags => (\r\n <>\r\n {tags.map(tag => {\r\n let color = tag === 'active' ? 'geekblue' : 'green';\r\n if (tag === 'disabled') {\r\n color = 'volcano';\r\n }\r\n return (\r\n \r\n {tag.toUpperCase()}\r\n \r\n );\r\n })}\r\n \r\n ),\r\n },\r\n {\r\n title: \"Is Active\",\r\n dataIndex: \"isactive\",\r\n },\r\n {\r\n title: \"Posted Date\",\r\n dataIndex: \"creationdate\",\r\n },\r\n {\r\n title: \"Posted by\",\r\n dataIndex: \"createdby\",\r\n },\r\n {\r\n dataIndex: \"device_hospitalid\",\r\n className: \"hide\",\r\n key: \"device_hospitalid\"\r\n },\r\n];\r\n\r\nexport default function KioskTerminal() {\r\n //For Terminal table\r\n const [lstTerminals, setlstTerminals] = useState([]);\r\n const [HospitalDeviceID, setHospitalDeviceID] = useState(\"\");\r\n const [TerminalID, setTerminalID] = useState(\"\");\r\n const [DeviceID, setDeviceID] = useState(\"\");\r\n const [HsCode, setHsCode] = useState(\"\");\r\n const [MacAddress, setMacAddress] = useState(\"\");\r\n const [is_Active, setIs_Active] = useState(undefined);\r\n const [hasDataTerminal, setHasDataTerminal] = useState(false);\r\n const [loading, setLoading] = useState(false);\r\n const [username, setUsername] = useState(\"\");\r\n const [access_token, setAccesstoken] = useState(\"\");\r\n //Modals\r\n const [modal_terminal, setModalTerminal] = useState(false);\r\n const [modal_terminal_edit, setModalTerminalEdit] = useState(false);\r\n const [modal_confirm, setModalConfirm] = useState(false);\r\n\r\n let user_info = JSON.parse(localStorage.getItem(\"user_info\"));\r\n\r\n const { addToast } = useToasts();\r\n\r\n useEffect(() => {\r\n CheckSession();\r\n getTerminalData();\r\n }, []);\r\n\r\n async function getTerminalData() {\r\n try {\r\n // Get Token for Shared login\r\n let Value = AdminSysEncryptBody({\r\n username: Decrypt(process.env.REACT_APP_L),\r\n password: Decrypt(process.env.REACT_APP_M),\r\n sessionid: Decrypt(process.env.REACT_APP_L),\r\n syscode: \"SC00045\",\r\n });\r\n\r\n let respToken = await fetch(Decrypt(API.REACT_APP_SHAREDLOGIN_AUTHORIZED), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ Value }),\r\n });\r\n\r\n let respTokenJson = await respToken.json();\r\n let respTokenJsonDecypted = await AdminSysDecryptBody(respTokenJson);\r\n if (respTokenJsonDecypted.is_success) {\r\n setAccesstoken(respTokenJsonDecypted.access_token);\r\n let respData = await fetch(Decrypt(API.REACT_APP_KIOSK_TERMINAL_ALL), {\r\n method: \"GET\",\r\n headers: {\r\n Authorization: \"Bearer \" + respTokenJsonDecypted.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n });\r\n\r\n let respDataJson = await respData.json();\r\n if (!respDataJson.success) {\r\n setHasDataTerminal(false);\r\n return;\r\n } else {\r\n if (respDataJson.data.length > 0) {\r\n let decrypted = respDataJson.data.map((data) => {\r\n let newD = QMSDecryptBody(data);\r\n newD.property = \"tags\";\r\n\r\n if (newD.isactive === true) {\r\n newD.isactive = 1;\r\n newD.tags = ['active'];\r\n } else {\r\n newD.isactive = 0\r\n newD.tags = [\"disabled\"];\r\n }\r\n\r\n return newD;\r\n });\r\n\r\n setlstTerminals(decrypted);\r\n setHasDataTerminal(true);\r\n }\r\n else {\r\n setHasDataTerminal(false);\r\n alert(\"No terminal devices found.\");\r\n return;\r\n }\r\n\r\n }\r\n setLoading(false);\r\n } else {\r\n addToast(\"Invalid access token!\", {\r\n appearance: \"warning\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n setModalTerminal(false);\r\n setModalTerminalEdit(false);\r\n setLoading(false);\r\n setHasDataTerminal(false);\r\n }\r\n setUsername(user_info.data.emailaddress);\r\n } catch (error) {\r\n setHasDataTerminal(false);\r\n }\r\n\r\n return\r\n }\r\n\r\n function onTerminalRowClick(record) {\r\n return {\r\n onClick: () => {\r\n setModalTerminalEdit(true);\r\n setHospitalDeviceID(record.device_hospitalid);\r\n setTerminalID(record.terminalid);\r\n setHsCode(record.hscode);\r\n setMacAddress(record.macaddress);\r\n setDeviceID(record.deviceid);\r\n if (record.isactive) {\r\n setIs_Active(1);\r\n }\r\n else {\r\n setIs_Active(0);\r\n }\r\n },\r\n };\r\n }\r\n\r\n async function onClickUpdateTerminal() {\r\n if (HsCode === \"\" || HsCode === null) {\r\n alert(\"Hospital code field is required.\");\r\n return;\r\n }\r\n\r\n if (TerminalID === \"\" || TerminalID === null) {\r\n alert(\"Terminal ID field is required.\");\r\n return;\r\n }\r\n\r\n if (DeviceID === \"\" || DeviceID === null) {\r\n alert(\"Device ID field is required.\");\r\n return;\r\n }\r\n\r\n if (MacAddress === \"\" || MacAddress === null) {\r\n alert(\"Mac Address field is required.\");\r\n return;\r\n }\r\n\r\n if (HospitalDeviceID === \"\" || HospitalDeviceID === null) {\r\n alert(\"Hospital ID is missing.\");\r\n return;\r\n }\r\n\r\n setLoading(true);\r\n setModalConfirm(false);\r\n\r\n try {\r\n let Value = QMSEncryptBody({\r\n device_hospitalid: HospitalDeviceID,\r\n hscode: HsCode,\r\n isactive: is_Active,\r\n terminalid: TerminalID,\r\n macaddress: MacAddress,\r\n deviceid: DeviceID\r\n });\r\n\r\n let resp = await fetch(Decrypt(API.REACT_APP_KIOSK_TERMINAL_EDIT), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ Value }),\r\n });\r\n let respText = await resp.json();\r\n let respJson = await QMSDecryptBody(respText);\r\n if (respJson.success) {\r\n addToast(\"Terminal successfully updated\", {\r\n appearance: \"success\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n getTerminalData();\r\n setModalTerminal(false);\r\n setModalTerminalEdit(false);\r\n setLoading(false);\r\n } else {\r\n addToast(respJson.response_message, {\r\n appearance: \"warning\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n setModalTerminal(false);\r\n setModalTerminalEdit(false);\r\n setLoading(false);\r\n }\r\n } catch (error) {\r\n setLoading(false);\r\n }\r\n }\r\n\r\n function onClickTerminal() {\r\n setHospitalDeviceID(\"\");\r\n setTerminalID(\"\");\r\n setHsCode(\"\");\r\n setMacAddress(\"\");\r\n setDeviceID(\"\");\r\n setIs_Active(1);\r\n setModalTerminalEdit(false);\r\n setModalTerminal(true);\r\n }\r\n\r\n async function onClickSaveTerminal() {\r\n if (HsCode === \"\" || HsCode === null) {\r\n alert(\"Hospital code field is required.\");\r\n return;\r\n }\r\n\r\n if (TerminalID === \"\" || TerminalID === null) {\r\n alert(\"Terminal ID field is required.\");\r\n return;\r\n }\r\n\r\n if (DeviceID === \"\" || DeviceID === null) {\r\n alert(\"Device ID field is required.\");\r\n return;\r\n }\r\n\r\n if (MacAddress === \"\" || MacAddress === null) {\r\n alert(\"Mac Address field is required.\");\r\n return;\r\n }\r\n\r\n setLoading(true);\r\n\r\n try {\r\n let Value = QMSEncryptBody({\r\n deviceid: DeviceID,\r\n hscode: HsCode,\r\n isactive: is_Active,\r\n terminalid: TerminalID,\r\n macaddress: MacAddress,\r\n username: username,\r\n });\r\n\r\n let resp = await fetch(Decrypt(API.REACT_APP_KIOSK_TERMINAL_ADD), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ Value }),\r\n });\r\n let respText = await resp.json();\r\n let respJson = await QMSDecryptBody(respText);\r\n\r\n if (respJson.success) {\r\n addToast(\"Terminal successfully added.\", {\r\n appearance: \"success\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n getTerminalData();\r\n setModalTerminal(false);\r\n setModalTerminalEdit(false);\r\n setLoading(false);\r\n } else {\r\n addToast(respJson.response_message, {\r\n appearance: \"warning\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n setModalTerminal(false);\r\n setModalTerminalEdit(false);\r\n setLoading(false);\r\n }\r\n } catch (error) {\r\n setLoading(false);\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n \r\n \r\n\r\n setModalConfirm(true)}\r\n >\r\n {loading ? (\r\n
    \r\n
    {\" \"}\r\n Saving...\r\n
    \r\n ) : (\r\n \"Update\"\r\n )}\r\n ,\r\n ,\r\n ]}>\r\n
    \r\n \r\n setTerminalID(e.target.value)} />\r\n \r\n setDeviceID(e.target.value)} />\r\n \r\n setMacAddress(e.target.value)} />\r\n \r\n setHsCode(e.target.value)} />\r\n \r\n setIs_Active(e)}\r\n >\r\n \r\n \r\n \r\n
    \r\n \r\n\r\n onClickSaveTerminal()}\r\n >\r\n {loading ? (\r\n
    \r\n
    {\" \"}\r\n Saving...\r\n
    \r\n ) : (\r\n \"Save\"\r\n )}\r\n ,\r\n ,\r\n ]}>\r\n
    \r\n \r\n setTerminalID(e.target.value)} />\r\n \r\n setDeviceID(e.target.value)} />\r\n \r\n setMacAddress(e.target.value)} />\r\n \r\n setHsCode(e.target.value)} />\r\n \r\n setIs_Active(e)}\r\n >\r\n \r\n \r\n \r\n
    \r\n \r\n\r\n onClickUpdateTerminal()}\r\n >\r\n {loading ? (\r\n
    \r\n
    {\" \"}\r\n Saving...\r\n
    \r\n ) : (\r\n \"YES\"\r\n )}\r\n ,\r\n ,\r\n ]}>\r\n

    \r\n Proceed with the changes?\r\n

    \r\n \r\n
    \r\n );\r\n}","import React, { useState, useEffect } from \"react\";\r\nimport { Table, Modal, Input, Button, Select, Tag, Skeleton, Alert, Divider, Tooltip } from \"antd\";\r\nimport { useToasts } from \"react-toast-notifications\";\r\nimport './AgoraPodManagement.css';\r\nimport * as API from \"../../util/live_api\";\r\nimport CheckSession from \"../CheckSession\";\r\nimport {\r\n Decrypt,\r\n Decrypt2,\r\n Encrypt2,\r\n} from \"../../util/EncryptionHandler\";\r\nimport Spinner from \"../Newsletter/Spinner\";\r\n\r\nconst { Option } = Select;\r\nconst { Search, TextArea } = Input;\r\n\r\nconst terminals_columns = [\r\n {\r\n title: \"Device ID\",\r\n dataIndex: \"deviceid\",\r\n // key: \"deviceid\",\r\n width: 150,\r\n },\r\n {\r\n title: \"MAC Address\",\r\n dataIndex: \"macaddress\",\r\n width: 150,\r\n },\r\n {\r\n title: \"Terminal ID\",\r\n dataIndex: \"terminalid\",\r\n width: 200,\r\n ellipsis: {\r\n showTitle: false,\r\n },\r\n render: (terminalid) => (\r\n \r\n {terminalid}\r\n \r\n ),\r\n },\r\n {\r\n title: \"Serial Number\",\r\n dataIndex: \"serialno\",\r\n width: 150,\r\n },\r\n {\r\n title: \"Property Tag\",\r\n dataIndex: \"propertytag\",\r\n width: 150,\r\n },\r\n {\r\n title: \"Description\",\r\n dataIndex: \"description\",\r\n width: 200,\r\n ellipsis: {\r\n showTitle: false,\r\n },\r\n render: (description) => (\r\n \r\n {description}\r\n \r\n ),\r\n },\r\n {\r\n title: \"Hospital Code\",\r\n dataIndex: \"hospcode\",\r\n width: 100,\r\n },\r\n {\r\n title: \"Hospital Name\",\r\n dataIndex: \"hospname\",\r\n width: 200,\r\n ellipsis: {\r\n showTitle: false,\r\n },\r\n render: (hospname) => (\r\n \r\n {hospname}\r\n \r\n ),\r\n },\r\n {\r\n title: \"Hospital Address\",\r\n dataIndex: \"hospaddress\",\r\n width: 200,\r\n ellipsis: {\r\n showTitle: false,\r\n },\r\n render: (hospaddress) => (\r\n \r\n {hospaddress}\r\n \r\n ),\r\n },\r\n {\r\n title: \"eRCS1 Print Copy\",\r\n dataIndex: \"rcs1printcopy\",\r\n width: 100,\r\n\r\n },\r\n {\r\n title: \"eRCS2 Print Copy\",\r\n dataIndex: \"rcs2printcopy\",\r\n width: 100,\r\n },\r\n // {\r\n // title: 'Status',\r\n // key: 'tags',\r\n // dataIndex: 'tags',\r\n // render: tags => (\r\n // <>\r\n // {tags.map(tag => {\r\n // let color = tag === 'active' ? 'geekblue' : 'green';\r\n // if (tag === 'disabled') {\r\n // color = 'volcano';\r\n // }\r\n // return (\r\n // \r\n // {tag.toUpperCase()}\r\n // \r\n // );\r\n // })}\r\n // \r\n // ),\r\n // },\r\n {\r\n title: \"Is Active\",\r\n dataIndex: \"isactive\",\r\n width: 100,\r\n render: isactive => \r\n (isactive ? \r\n \r\n ACTIVE\r\n \r\n : \r\n \r\n DISABLED\r\n \r\n ),\r\n },\r\n {\r\n title: \"Posted Date\",\r\n dataIndex: \"posteddate\",\r\n width: 150,\r\n },\r\n {\r\n title: \"Posted by\",\r\n dataIndex: \"username\",\r\n width: 200,\r\n ellipsis: {\r\n showTitle: false,\r\n },\r\n render: (username) => (\r\n \r\n {username}\r\n \r\n ),\r\n },\r\n {\r\n dataIndex: \"device_hospitalid\",\r\n className: \"hide\",\r\n key: \"device_hospitalid\"\r\n },\r\n];\r\n\r\n\r\nexport default function AgoraPodTerminal() {\r\n const { addToast } = useToasts();\r\n\r\n let user_info = JSON.parse(localStorage.getItem(\"user_info\"));\r\n const [modalLoading, setModalLoading] = React.useState(false);\r\n const [success, setSuccess] = React.useState(null);\r\n const [successMsg, setSuccessMsg] = React.useState(\"\");\r\n const [savingMsg, setSavingMsg] = React.useState(\"\");\r\n // console.log(user_info)\r\n\r\n //For Terminal table\r\n const [temp, setTemp] = useState([]);\r\n const [lstTerminals, setlstTerminals] = useState([]);\r\n const [hasDataTerminal, setHasDataTerminal] = useState(true);\r\n const [loading, setLoading] = useState(false);\r\n const [hasRequiredField, setHasRequiredField] = useState(false);\r\n const [hasRequiredFieldMsg, setHasRequiredFieldMsg] = useState(\"\");\r\n\r\n const [TerminalID, setTerminalID] = useState(\"\");\r\n const [HsCode, setHsCode] = useState(\"\");\r\n const [MacAddress, setMacAddress] = useState(\"\");\r\n const [is_Active, setIs_Active] = useState(undefined);\r\n //Modals\r\n const [modal_terminal_add, setModalTerminalAdd] = useState(false);\r\n const [modal_terminal_edit, setModalTerminalEdit] = useState(false);\r\n const [modal_confirm, setModalConfirm] = useState(false);\r\n\r\n const [detailsTerminal, setDetailsTerminal] = useState({\r\n agorapoddeviceid: \"\",\r\n deviceid: \"\",\r\n terminalid: \"\",\r\n macaddress: \"\",\r\n hospcode: \"\",\r\n rcs1printcopy: 1,\r\n rcs2printcopy: 1,\r\n serialno: \"\",\r\n propertytag: \"\",\r\n description: \"\",\r\n postedby: user_info.data.emailaddress,\r\n });\r\n\r\n useEffect(() => {\r\n \r\n setHasDataTerminal(false)\r\n\r\n loadComponent();\r\n\r\n setHasDataTerminal(true)\r\n \r\n }, []);\r\n\r\n async function loadComponent() {\r\n \r\n CheckSession();\r\n await getTerminalData();\r\n }\r\n\r\n async function getTerminalData() {\r\n try {\r\n\r\n let respData = await fetch(Decrypt(API.REACT_APP_AGORAPOD_TERMINAL_ALL), {\r\n method: \"GET\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n });\r\n \r\n let respJson = await respData.json();\r\n \r\n if (respJson.success) {\r\n let decrypted = respJson.data.map((data) => {\r\n let newD = Decrypt2(data);\r\n return newD;\r\n });\r\n \r\n setlstTerminals(decrypted)\r\n setTemp(decrypted)\r\n } else {\r\n setlstTerminals([])\r\n setTemp([])\r\n }\r\n\r\n } catch (error) {\r\n console.log(error)\r\n }\r\n }\r\n\r\n function onClickTerminal() {\r\n\r\n setHasRequiredField(false)\r\n setHasRequiredFieldMsg(\"\")\r\n\r\n detailsTerminal.terminalid = \"\";\r\n detailsTerminal.deviceid = \"\";\r\n detailsTerminal.macaddress = \"\";\r\n detailsTerminal.hospcode = \"\";\r\n detailsTerminal.rcs1printcopy = 1;\r\n detailsTerminal.rcs2printcopy = 1;\r\n detailsTerminal.serialno = \"\";\r\n detailsTerminal.propertytag = \"\";\r\n detailsTerminal.description = \"\";\r\n setIs_Active(0)\r\n\r\n setLoading(false);\r\n setModalTerminalAdd(true);\r\n }\r\n\r\n async function onClickSaveTerminal() {\r\n\r\n setHasRequiredField(false)\r\n setHasRequiredFieldMsg(\"\")\r\n\r\n if (detailsTerminal.deviceid === \"\" || detailsTerminal.deviceid === null) {\r\n setHasRequiredField(true)\r\n setHasRequiredFieldMsg(\"Device ID is required.\")\r\n return;\r\n }\r\n\r\n if (detailsTerminal.macaddress === \"\" || detailsTerminal.macaddress === null) {\r\n setHasRequiredField(true)\r\n setHasRequiredFieldMsg(\"Mac Address is required.\")\r\n return;\r\n }\r\n\r\n if (detailsTerminal.serialno === \"\" || detailsTerminal.serialno === null) {\r\n setHasRequiredField(true)\r\n setHasRequiredFieldMsg(\"Serial Number is required.\")\r\n return;\r\n }\r\n\r\n if (detailsTerminal.terminalid === \"\" || detailsTerminal.terminalid === null) {\r\n setHasRequiredField(true)\r\n setHasRequiredFieldMsg(\"Terminal ID is required.\")\r\n return;\r\n }\r\n\r\n if (detailsTerminal.hospcode === \"\" || detailsTerminal.hospcode === null) {\r\n setHasRequiredField(true)\r\n setHasRequiredFieldMsg(\"Hospital code is required.\")\r\n return;\r\n }\r\n\r\n if (is_Active === \"\" || is_Active === null || is_Active === undefined) {\r\n setHasRequiredField(true)\r\n setHasRequiredFieldMsg(\"Status is required.\")\r\n return;\r\n }\r\n\r\n setModalLoading(true);\r\n setSuccess(null);\r\n setSavingMsg(\"Saving Data Please Wait...\");\r\n\r\n let value = Encrypt2({\r\n deviceid: detailsTerminal.deviceid,\r\n terminalid: detailsTerminal.terminalid,\r\n macaddress: detailsTerminal.macaddress,\r\n hospcode: detailsTerminal.hospcode,\r\n rcs1printcopy: parseInt(detailsTerminal.rcs1printcopy),\r\n rcs2printcopy: parseInt(detailsTerminal.rcs2printcopy),\r\n serialno: detailsTerminal.serialno,\r\n propertytag: detailsTerminal.propertytag,\r\n description: detailsTerminal.description,\r\n isactive: is_Active,\r\n postedby: user_info.data.emailaddress\r\n });\r\n \r\n let resp = await fetch(Decrypt(API.REACT_APP_AGORAPOD_ADD_TERMINAL), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ value }),\r\n });\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText);\r\n\r\n if (respJson.success) {\r\n setModalTerminalAdd(false);\r\n getTerminalData();\r\n setSuccess(true);\r\n setSuccessMsg(respJson.message);\r\n } else {\r\n setSuccess(false);\r\n setSuccessMsg(respJson.message);\r\n }\r\n\r\n\r\n }\r\n\r\n async function onClickUpdateTerminal() {\r\n\r\n setModalConfirm(false)\r\n\r\n setHasRequiredField(false)\r\n setHasRequiredFieldMsg(\"\")\r\n\r\n if (detailsTerminal.deviceid === \"\" || detailsTerminal.deviceid === null) {\r\n setHasRequiredField(true)\r\n setHasRequiredFieldMsg(\"Device ID is required.\")\r\n return;\r\n }\r\n\r\n if (detailsTerminal.macaddress === \"\" || detailsTerminal.macaddress === null) {\r\n setHasRequiredField(true)\r\n setHasRequiredFieldMsg(\"Mac Address is required.\")\r\n return;\r\n }\r\n\r\n if (detailsTerminal.serialno === \"\" || detailsTerminal.serialno === null) {\r\n setHasRequiredField(true)\r\n setHasRequiredFieldMsg(\"Serial Number is required.\")\r\n return;\r\n }\r\n\r\n if (detailsTerminal.terminalid === \"\" || detailsTerminal.terminalid === null) {\r\n setHasRequiredField(true)\r\n setHasRequiredFieldMsg(\"Terminal ID is required.\")\r\n return;\r\n }\r\n\r\n if (detailsTerminal.hospcode === \"\" || detailsTerminal.hospcode === null) {\r\n setHasRequiredField(true)\r\n setHasRequiredFieldMsg(\"Hospital code is required.\")\r\n return;\r\n }\r\n\r\n if (is_Active === \"\" || is_Active === null || is_Active === undefined) {\r\n setHasRequiredField(true)\r\n setHasRequiredFieldMsg(\"Status is required.\")\r\n return;\r\n }\r\n\r\n setModalLoading(true);\r\n setSuccess(null);\r\n setSavingMsg(\"Saving Data Please Wait...\");\r\n\r\n let value = Encrypt2({\r\n agorapoddeviceid: detailsTerminal.agorapoddeviceid,\r\n deviceid: detailsTerminal.deviceid,\r\n terminalid: detailsTerminal.terminalid,\r\n macaddress: detailsTerminal.macaddress,\r\n hospcode: detailsTerminal.hospcode,\r\n rcs1printcopy: parseInt(detailsTerminal.rcs1printcopy),\r\n rcs2printcopy: parseInt(detailsTerminal.rcs2printcopy),\r\n serialno: detailsTerminal.serialno,\r\n propertytag: detailsTerminal.propertytag,\r\n description: detailsTerminal.description,\r\n isactive: is_Active,\r\n });\r\n \r\n let resp = await fetch(Decrypt(API.REACT_APP_AGORAPOD_UPDATE_TERMINAL), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ value }),\r\n });\r\n let respText = await resp.json();\r\n let respJson = await Decrypt2(respText);\r\n\r\n if (respJson.success) {\r\n setModalTerminalEdit(false);\r\n getTerminalData();\r\n setSuccess(true);\r\n setSuccessMsg(respJson.message);\r\n } else {\r\n setSuccess(false);\r\n setSuccessMsg(respJson.message);\r\n }\r\n\r\n }\r\n\r\n function onTerminalRowClick(record) {\r\n return {\r\n onClick: () => {\r\n setHasRequiredField(false)\r\n setHasRequiredFieldMsg(\"\")\r\n\r\n setLoading(false);\r\n\r\n detailsTerminal.agorapoddeviceid = record.agorapoddeviceid\r\n detailsTerminal.terminalid = record.terminalid; \r\n detailsTerminal.macaddress = record.macaddress; \r\n detailsTerminal.deviceid = record.deviceid;\r\n detailsTerminal.hospcode = record.hospcode; \r\n detailsTerminal.rcs1printcopy = record.rcs1printcopy; \r\n detailsTerminal.rcs2printcopy = record.rcs2printcopy; \r\n detailsTerminal.serialno = record.serialno; \r\n detailsTerminal.propertytag = record.propertytag; \r\n detailsTerminal.description = record.description; \r\n record.isactive ? setIs_Active(1) : setIs_Active(0)\r\n setModalTerminalEdit(true);\r\n },\r\n };\r\n }\r\n\r\n function closeSpinner() {\r\n setModalLoading(false);\r\n setSuccess(null)\r\n }\r\n\r\n function search(str) {\r\n let searchedData = temp.filter((item) => {\r\n const itemData = `${item.description} ${item.deviceid} ${item.serialno} ${item.agorapoddeviceid} ${item.hospaddress} ${item.hospcode} ${item.hospname} ${item.terminalid} ${item.username}`.toUpperCase();\r\n const textData = str.toUpperCase();\r\n return itemData.indexOf(textData) > -1;\r\n });\r\n setlstTerminals(searchedData)\r\n }\r\n\r\n return (\r\n
    \r\n \r\n\r\n \r\n\r\n
    \r\n search(e.target.value)}\r\n allowClear\r\n />\r\n
    \r\n \r\n \r\n\r\n onClickSaveTerminal()}\r\n >\r\n {loading ? (\r\n
    \r\n
    {\" \"}\r\n Saving...\r\n
    \r\n ) : (\r\n \"Save\"\r\n )}\r\n ,\r\n ,\r\n ]}>\r\n\r\n {hasRequiredField ? (\r\n \r\n ) : null}\r\n\r\n
    \r\n\r\n
    \r\n
    \r\n \r\n {\r\n const val = e.target.value;\r\n setDetailsTerminal((prevState) => {\r\n return { ...prevState, deviceid: val.toUpperCase() };\r\n });\r\n }}/>\r\n
    \r\n
    \r\n \r\n {\r\n const val = e.target.value;\r\n setDetailsTerminal((prevState) => {\r\n return { ...prevState, macaddress: val.toUpperCase() };\r\n });\r\n }} />\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n {\r\n const val = e.target.value;\r\n setDetailsTerminal((prevState) => {\r\n return { ...prevState, serialno: val.toUpperCase() };\r\n });\r\n }}/>\r\n
    \r\n
    \r\n \r\n {\r\n const val = e.target.value;\r\n setDetailsTerminal((prevState) => {\r\n return { ...prevState, propertytag: val.toUpperCase() };\r\n });\r\n }} />\r\n
    \r\n
    \r\n\r\n \r\n {\r\n const val = e.target.value;\r\n setDetailsTerminal((prevState) => {\r\n return { ...prevState, terminalid: val.toUpperCase() };\r\n });\r\n }} />\r\n\r\n \r\n {\r\n const val = e.target.value;\r\n setDetailsTerminal((prevState) => {\r\n return { ...prevState, description: val };\r\n });\r\n }}\r\n style={{ marginBottom: 5, minHeight: 100 }}\r\n />\r\n\r\n \r\n {\r\n const val = e.target.value;\r\n setDetailsTerminal((prevState) => {\r\n return { ...prevState, hospcode: val.toUpperCase() };\r\n });\r\n }} />\r\n\r\n
    \r\n\r\n
    \r\n \r\n {\r\n if (!/[0-9]/.test(event.key)) {\r\n event.preventDefault();\r\n }\r\n }}\r\n onChange={(e) => {\r\n const val = e.target.value;\r\n setDetailsTerminal((prevState) => {\r\n return { ...prevState, rcs1printcopy: val };\r\n });\r\n }}/>\r\n
    \r\n \r\n
    \r\n \r\n {\r\n if (!/[0-9]/.test(event.key)) {\r\n event.preventDefault();\r\n }\r\n }}\r\n onChange={(e) => {\r\n const val = e.target.value;\r\n setDetailsTerminal((prevState) => {\r\n return { ...prevState, rcs2printcopy: val };\r\n });\r\n }}/>\r\n
    \r\n\r\n
    \r\n\r\n \r\n setIs_Active(e)}\r\n >\r\n \r\n \r\n \r\n \r\n
    \r\n \r\n\r\n setModalConfirm(true)}\r\n disabled={loading}\r\n >\r\n {loading ? (\r\n
    \r\n
    {\" \"}\r\n Saving...\r\n
    \r\n ) : (\r\n \"Update\"\r\n )}\r\n ,\r\n ,\r\n ]}>\r\n\r\n {hasRequiredField ? (\r\n \r\n ) : null}\r\n\r\n
    \r\n\r\n
    \r\n
    \r\n \r\n {\r\n const val = e.target.value;\r\n setDetailsTerminal((prevState) => {\r\n return { ...prevState, deviceid: val.toUpperCase() };\r\n });\r\n }} />\r\n
    \r\n
    \r\n \r\n {\r\n const val = e.target.value;\r\n setDetailsTerminal((prevState) => {\r\n return { ...prevState, macaddress: val.toUpperCase() };\r\n });\r\n }} />\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n {\r\n const val = e.target.value;\r\n setDetailsTerminal((prevState) => {\r\n return { ...prevState, serialno: val.toUpperCase() };\r\n });\r\n }}/>\r\n
    \r\n
    \r\n \r\n {\r\n const val = e.target.value;\r\n setDetailsTerminal((prevState) => {\r\n return { ...prevState, propertytag: val.toUpperCase() };\r\n });\r\n }} />\r\n
    \r\n
    \r\n\r\n \r\n {\r\n const val = e.target.value;\r\n setDetailsTerminal((prevState) => {\r\n return { ...prevState, terminalid: val.toUpperCase() };\r\n });\r\n }} />\r\n\r\n \r\n {\r\n const val = e.target.value;\r\n setDetailsTerminal((prevState) => {\r\n return { ...prevState, description: val };\r\n });\r\n }}\r\n style={{ marginBottom: 5, minHeight: 100 }}\r\n />\r\n\r\n \r\n {\r\n const val = e.target.value;\r\n setDetailsTerminal((prevState) => {\r\n return { ...prevState, hospcode: val.toUpperCase() };\r\n });\r\n }} />\r\n\r\n
    \r\n\r\n
    \r\n \r\n {\r\n if (!/[0-9]/.test(event.key)) {\r\n event.preventDefault();\r\n }\r\n }}\r\n onChange={(e) => {\r\n const val = e.target.value;\r\n setDetailsTerminal((prevState) => {\r\n return { ...prevState, rcs1printcopy: val };\r\n });\r\n }} />\r\n
    \r\n\r\n
    \r\n \r\n {\r\n if (!/[0-9]/.test(event.key)) {\r\n event.preventDefault();\r\n }\r\n }}\r\n onChange={(e) => {\r\n const val = e.target.value;\r\n setDetailsTerminal((prevState) => {\r\n return { ...prevState, rcs2printcopy: val };\r\n });\r\n }} />\r\n
    \r\n\r\n
    \r\n\r\n \r\n setIs_Active(e)}\r\n >\r\n \r\n \r\n \r\n\r\n
    \r\n \r\n\r\n onClickUpdateTerminal()}\r\n >\r\n {loading ? (\r\n
    \r\n
    {\" \"}\r\n Saving...\r\n
    \r\n ) : (\r\n \"YES\"\r\n )}\r\n ,\r\n ,\r\n ]}>\r\n

    \r\n Proceed with the changes?\r\n

    \r\n \r\n\r\n \r\n \r\n
    \r\n\r\n \r\n )\r\n\r\n}","import React, { createContext, useContext, useState, useMemo } from \"react\";\r\nimport LoadSpinner from \"./spinner/globalspinner\"; \r\n\r\nconst GlobalLoadingContext = createContext({\r\n globalLoading: false,\r\n setGlobalLoading: () => {},\r\n});\r\n\r\nexport const GlobalLoadingProvider = ({ children }) => {\r\n const [globalLoading, setGlobalLoading] = useState(false);\r\n\r\n // Memoize the value so it’s not recreated on each render\r\n const value = useMemo(\r\n () => ({ globalLoading, setGlobalLoading }),\r\n [globalLoading]\r\n );\r\n\r\n return (\r\n \r\n {/* If globalLoading is true, show the spinner. Otherwise, show nothing. */}\r\n {globalLoading && } \r\n \r\n {/* Render the rest of the app */}\r\n {children}\r\n \r\n );\r\n};\r\n\r\nexport const useGlobalLoading = () => {\r\n return useContext(GlobalLoadingContext);\r\n};\r\n","import React, { useEffect, useState, useCallback } from \"react\";\r\nimport {\r\n Button,\r\n DatePicker,\r\n Input,\r\n Modal,\r\n Select,\r\n Switch,\r\n Table,\r\n Tooltip,\r\n Tag,\r\n Alert\r\n} from \"antd\";\r\nimport { MDBIcon } from \"mdbreact\";\r\nimport moment from \"moment\";\r\nimport CheckSession from \"../CheckSession\";\r\nimport { Decrypt, Encrypt2, Decrypt2 } from \"../../util/EncryptionHandler\";\r\nimport { DeleteOutlined } from \"@ant-design/icons\";\r\nimport * as API from \"../../util/live_api\";\r\nimport { useToasts } from \"react-toast-notifications\";\r\nimport { useGlobalLoading } from \"../../global/GlobalLoadingContext\";\r\nimport imageCompression from \"browser-image-compression\";\r\n\r\nconst { Option } = Select;\r\nconst { TextArea } = Input;\r\n\r\nexport default function AventusMarketplace() {\r\n // Table data\r\n const [services, setServices] = useState([]);\r\n\r\n // Loading states\r\n const [tableLoading, setTableLoading] = useState(false);\r\n const [saveLoading, setSaveLoading] = useState(false);\r\n const [deleteLoading, setDeleteLoading] = useState(false);\r\n\r\n // Pagination (if you want server-side pagination)\r\n const [pagination, setPagination] = useState({\r\n current: 1,\r\n pageSize: 10\r\n });\r\n\r\n const [newServices, setNewServices] = useState(false);\r\n const [selectedImage, setSelectedImage] = useState(null);\r\n const [selectedFile, setSelectedFile] = useState(\"\");\r\n const [fileext, setFileExt] = useState(\"\");\r\n const [addservicesmodal, showServicesModal] = useState(false);\r\n const [confirmModal, setConfirmModal] = useState(false);\r\n const [recID, setRecID] = useState(\"\");\r\n\r\n const { addToast } = useToasts();\r\n const { setGlobalLoading } = useGlobalLoading();\r\n\r\n // Field validation\r\n const [hasRequiredField, setHasRequiredField] = useState(false);\r\n const [hasRequiredFieldMsg, setHasRequiredFieldMsg] = useState(\"\");\r\n\r\n let user_info = JSON.parse(localStorage.getItem(\"user_info\")) || {};\r\n\r\n const [details, setDetails] = useState({\r\n productID: \"\",\r\n productName: \"\",\r\n description: \"\",\r\n status: 1,\r\n banner: 0,\r\n deleted: 0,\r\n url: \"\",\r\n base64: \"\",\r\n datefrom: undefined,\r\n dateto: undefined,\r\n postedby: \"\",\r\n posteddate: undefined,\r\n editedby: \"\",\r\n edited: undefined,\r\n });\r\n\r\n // On mount: check session & fetch data\r\n useEffect(() => {\r\n CheckSession();\r\n fetchData(pagination.current, pagination.pageSize);\r\n // eslint-disable-next-line\r\n }, []);\r\n\r\n /**\r\n * Fetch data (server-side pagination recommended)\r\n */\r\n const fetchData = useCallback(\r\n async (page, pageSize) => {\r\n try {\r\n setTableLoading(true);\r\n setGlobalLoading(true); // optional, if you want a global overlay\r\n\r\n // If your API accepts page + pageSize\r\n const url = `${Decrypt(API.GET_AVENTUS_SERVICES)}?page=${page}&pageSize=${pageSize}`;\r\n const resp = await fetch(url, {\r\n method: \"GET\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n },\r\n });\r\n\r\n const respJson = await resp.json();\r\n if (respJson === \"Invalid Access Token\") {\r\n setTableLoading(false);\r\n setGlobalLoading(false);\r\n return;\r\n }\r\n\r\n if (respJson.data) {\r\n const decryptedData = respJson.data.map((data) => Decrypt2(data));\r\n // Let the server handle sorting. Avoid .sort(...) for large arrays here.\r\n setServices(decryptedData);\r\n }\r\n\r\n // If your server returns totalCount, store it:\r\n // e.g. setPagination({ ...pagination, total: respJson.totalCount });\r\n setTableLoading(false);\r\n setGlobalLoading(false);\r\n } catch (error) {\r\n alert(error);\r\n setTableLoading(false);\r\n setGlobalLoading(false);\r\n }\r\n },\r\n [setGlobalLoading, user_info.access_token, pagination]\r\n );\r\n\r\n /**\r\n * Handle table changes (pagination, sorting)\r\n */\r\n const handleTableChange = (pag, filters, sorter) => {\r\n const { current, pageSize } = pag;\r\n setPagination({ ...pagination, current, pageSize });\r\n // Re-fetch with new page/pageSize\r\n fetchData(current, pageSize);\r\n };\r\n\r\n /**\r\n * Toggle Active/Inactive\r\n */\r\n const handleToggle = (recordid, checked) => {\r\n // Optimistic UI: update local state first\r\n const updatedServices = services.map((item) =>\r\n item.recordid === recordid ? { ...item, status: checked } : item\r\n );\r\n setServices(updatedServices);\r\n\r\n const status = checked ? 1 : 0;\r\n const Value = Encrypt2({ recordid, status });\r\n\r\n updateServiceStatus(Value);\r\n };\r\n\r\n const updateServiceStatus = async (Value) => {\r\n try {\r\n // Possibly show a mini spinner for the row or a global spinner\r\n const resp = await fetch(Decrypt(API.UPDATE_AVENTUS_SERVICES_STATUS), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ Value }),\r\n });\r\n\r\n const respText = await resp.json();\r\n const respJson = Decrypt2(respText);\r\n\r\n if (!respJson.success) {\r\n addToast(\"An error occurred updating status. Please try again.\", {\r\n appearance: \"warning\",\r\n autoDismiss: true,\r\n });\r\n // Optionally revert UI changes if needed\r\n }\r\n } catch (error) {\r\n alert(error);\r\n }\r\n };\r\n\r\n /**\r\n * Row click: open modal for editing\r\n */\r\n const onRowClick = (record) => {\r\n setNewServices(false);\r\n showServicesModal(true);\r\n\r\n setDetails({\r\n productID: record.recordid,\r\n productName: record.productname,\r\n description: record.description,\r\n status: record.status,\r\n banner: record.banner,\r\n url: record.url,\r\n datefrom: record.datefrom,\r\n dateto: record.dateto,\r\n editedby: user_info.data ?.emailaddress || \"\",\r\n });\r\n };\r\n\r\n /**\r\n * Delete handler\r\n */\r\n const handleDelete = (recordid) => {\r\n setRecID(recordid);\r\n setConfirmModal(true);\r\n };\r\n\r\n /**\r\n * Add Product/Services\r\n */\r\n const onClickAddServices = () => {\r\n setNewServices(true);\r\n showServicesModal(true);\r\n setSelectedImage(null);\r\n\r\n setDetails({\r\n productID: \"\",\r\n productName: \"\",\r\n description: \"\",\r\n status: 1,\r\n banner: 0,\r\n deleted: 0,\r\n url: \"\",\r\n base64: \"\",\r\n datefrom: undefined,\r\n dateto: undefined,\r\n postedby: user_info.data ?.emailaddress || \"\",\r\n posteddate: moment().format(\"LL\"),\r\n editedby: \"\",\r\n edited: undefined,\r\n });\r\n };\r\n\r\n /**\r\n * Update existing service\r\n */\r\n const onUpdateServices = async () => {\r\n setHasRequiredField(false);\r\n setHasRequiredFieldMsg(\"\");\r\n\r\n if (!details.productName) {\r\n setHasRequiredField(true);\r\n setHasRequiredFieldMsg(\"Product Service Title is required.\");\r\n return;\r\n }\r\n if (!details.description) {\r\n setHasRequiredField(true);\r\n setHasRequiredFieldMsg(\"Description is required.\");\r\n return;\r\n }\r\n if (!details.url) {\r\n setHasRequiredField(true);\r\n setHasRequiredFieldMsg(\"URL is required.\");\r\n return;\r\n }\r\n if (!details.datefrom || !details.dateto) {\r\n setHasRequiredField(true);\r\n setHasRequiredFieldMsg(\"Date range is required.\");\r\n return;\r\n }\r\n\r\n // Show spinner in modal’s Save button\r\n setSaveLoading(true);\r\n //setGlobalLoading(true); // optional\r\n\r\n try {\r\n const Value = Encrypt2({\r\n recordid: details.productID,\r\n productName: details.productName,\r\n description: details.description,\r\n url: details.url,\r\n datefrom: moment(details.datefrom).format(\"LL\"),\r\n dateto: moment(details.dateto).format(\"LL\"),\r\n editedby: user_info.data ?.emailaddress || \"\",\r\n });\r\n\r\n const resp = await fetch(Decrypt(API.UPDATE_AVENTUS_SERVICES), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ Value }),\r\n });\r\n\r\n const respText = await resp.json();\r\n const respJson = Decrypt2(respText);\r\n\r\n if (respJson.success) {\r\n addToast(\"Product/services updated successfully.\", {\r\n appearance: \"success\",\r\n autoDismiss: true,\r\n });\r\n // Refresh data\r\n fetchData(pagination.current, pagination.pageSize);\r\n showServicesModal(false);\r\n } else {\r\n addToast(\"An error occurred. Please try again.\", {\r\n appearance: \"warning\",\r\n autoDismiss: true,\r\n });\r\n }\r\n setSaveLoading(false);\r\n setGlobalLoading(false);\r\n } catch (error) {\r\n alert(error);\r\n setSaveLoading(false);\r\n setGlobalLoading(false);\r\n }\r\n };\r\n\r\n /**\r\n * Save new service\r\n */\r\n const onSaveServices = async () => {\r\n setHasRequiredField(false);\r\n setHasRequiredFieldMsg(\"\");\r\n\r\n if (!details.productName) {\r\n setHasRequiredField(true);\r\n setHasRequiredFieldMsg(\"Product Service Title is required.\");\r\n return;\r\n }\r\n if (!details.description) {\r\n setHasRequiredField(true);\r\n setHasRequiredFieldMsg(\"Description is required.\");\r\n return;\r\n }\r\n if (!details.url) {\r\n setHasRequiredField(true);\r\n setHasRequiredFieldMsg(\"URL is required.\");\r\n return;\r\n }\r\n if (!details.datefrom || !details.dateto) {\r\n setHasRequiredField(true);\r\n setHasRequiredFieldMsg(\"Date range is required.\");\r\n return;\r\n }\r\n if (details.banner && !selectedFile) {\r\n setHasRequiredField(true);\r\n setHasRequiredFieldMsg(\"No Uploaded File Found.\");\r\n return;\r\n }\r\n if (moment(details.dateto).isBefore(moment(details.datefrom))) {\r\n setHasRequiredField(true);\r\n setHasRequiredFieldMsg(\"Invalid Date Range.\");\r\n return;\r\n }\r\n\r\n setSaveLoading(true);\r\n setGlobalLoading(true); // optional\r\n\r\n try {\r\n const Value = Encrypt2({\r\n productName: details.productName,\r\n description: details.description,\r\n status: details.status,\r\n banner: details.banner,\r\n deleted: details.deleted,\r\n url: details.url,\r\n base64: selectedFile,\r\n datefrom: moment(details.datefrom).format(\"LL\"),\r\n dateto: moment(details.dateto).format(\"LL\"),\r\n postedby: user_info.data ?.emailaddress || \"\",\r\n });\r\n\r\n const resp = await fetch(Decrypt(API.POST_AVENTUS_SERVICES), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ Value }),\r\n });\r\n\r\n const respText = await resp.json();\r\n const respJson = Decrypt2(respText);\r\n\r\n if (respJson.success) {\r\n addToast(\"Product/services added successfully.\", {\r\n appearance: \"success\",\r\n autoDismiss: true,\r\n });\r\n fetchData(pagination.current, pagination.pageSize);\r\n showServicesModal(false);\r\n } else {\r\n addToast(\"An error occurred. Please try again.\", {\r\n appearance: \"warning\",\r\n autoDismiss: true,\r\n });\r\n }\r\n setSaveLoading(false);\r\n setGlobalLoading(false);\r\n } catch (error) {\r\n setSaveLoading(false);\r\n setGlobalLoading(false);\r\n alert(error);\r\n }\r\n };\r\n\r\n /**\r\n * Delete a service\r\n */\r\n const onDeleteServices = async () => {\r\n setDeleteLoading(true);\r\n setGlobalLoading(true);\r\n\r\n try {\r\n const Value = Encrypt2({\r\n recordid: recID,\r\n deleted: 1,\r\n });\r\n\r\n const resp = await fetch(Decrypt(API.DELETE_AVENTUS_SERVICES), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ Value }),\r\n });\r\n\r\n const respText = await resp.json();\r\n const respJson = Decrypt2(respText);\r\n\r\n if (respJson.success) {\r\n addToast(\"Product/services deleted successfully.\", {\r\n appearance: \"success\",\r\n autoDismiss: true,\r\n });\r\n fetchData(pagination.current, pagination.pageSize);\r\n setConfirmModal(false);\r\n } else {\r\n addToast(\"An error occurred. Please try again.\", {\r\n appearance: \"warning\",\r\n autoDismiss: true,\r\n });\r\n }\r\n setDeleteLoading(false);\r\n setGlobalLoading(false);\r\n } catch (error) {\r\n alert(error);\r\n setDeleteLoading(false);\r\n setGlobalLoading(false);\r\n }\r\n };\r\n\r\n /**\r\n * Handle banner image upload\r\n */\r\n const handleImageUpload = async (event) => {\r\n const file = event.target.files[0];\r\n if (!file) return;\r\n\r\n // Validate file size (you can keep or remove this initial check if you want \r\n // the compression to handle *all* large files):\r\n const file_size_mb = file.size / 1048576; // MB\r\n if (file_size_mb > 4) {\r\n alert(\"Maximum file size is 4MB. Please select another file.\");\r\n event.target.value = \"\";\r\n return;\r\n }\r\n\r\n // Validate file type\r\n const imgType = file.type;\r\n if (![\"image/png\", \"image/jpg\", \"image/jpeg\"].includes(imgType)) {\r\n alert(\"Invalid file type. Only jpg, jpeg, and png are allowed.\");\r\n event.target.value = \"\";\r\n return;\r\n }\r\n\r\n const extension = imgType.split(\"/\")[1].toUpperCase();\r\n setFileExt(extension);\r\n\r\n // Set up compression options\r\n const options = {\r\n maxSizeMB: 0.5, // Target maximum size in MB/KB\r\n maxWidthOrHeight: 650, // You can adjust as needed. Larger = better quality, bigger file\r\n useWebWorker: true, // Use multi-threading for faster compression\r\n fileType: imgType, // Keep original file type\r\n };\r\n\r\n try {\r\n // Compress the file\r\n const compressedFile = await imageCompression(file, options);\r\n\r\n // Convert compressed file to Base64\r\n const reader = new FileReader();\r\n reader.onload = () => {\r\n const base64String = reader.result.replace(/^.+?;base64,/, \"\");\r\n setSelectedFile(base64String); // store compressed image in base64 format\r\n setSelectedImage(compressedFile); // keep the compressedFile object if needed\r\n };\r\n reader.readAsDataURL(compressedFile);\r\n } catch (error) {\r\n console.error(\"Error while compressing image:\", error);\r\n alert(\"There was an error compressing the image. Please try again.\");\r\n }\r\n };\r\n\r\n /**\r\n * Table columns\r\n * Remove local sorting if you want to rely entirely on server-side sorting.\r\n */\r\n const columns = [\r\n {\r\n dataIndex: \"recordid\",\r\n className: \"hide\",\r\n key: \"productID\",\r\n width: 80,\r\n },\r\n {\r\n title: \"Product/Service\",\r\n dataIndex: \"productname\",\r\n key: \"productname\",\r\n width: 150,\r\n // Remove this if you do server-side sorting:\r\n // sorter: (a, b) => a.productname.localeCompare(b.productname),\r\n },\r\n {\r\n title: \"Description\",\r\n dataIndex: \"description\",\r\n key: \"description\",\r\n width: 150,\r\n ellipsis: { showTitle: false },\r\n render: (description) => (\r\n \r\n {description}\r\n \r\n ),\r\n },\r\n {\r\n title: \"URL\",\r\n dataIndex: \"url\",\r\n key: \"url\",\r\n width: 100,\r\n },\r\n {\r\n title: \"Effectivity\",\r\n dataIndex: \"datefrom\",\r\n key: \"dateRange\",\r\n width: 120,\r\n render: (text, record) => {\r\n const from = moment(record.datefrom).format(\"MM/DD/YYYY\");\r\n const to = moment(record.dateto).format(\"MM/DD/YYYY\");\r\n return `${from} - ${to}`;\r\n },\r\n // Remove client sorter if server can handle it\r\n // sorter: (a, b) => new Date(a.datefrom) - new Date(b.datefrom),\r\n },\r\n {\r\n title: \"Type\",\r\n dataIndex: \"isbanner\",\r\n key: \"isbanner\",\r\n width: 80,\r\n render: (isbanner) =>\r\n isbanner ? BANNER : MARKET PLACE,\r\n },\r\n {\r\n title: \"Active\",\r\n key: \"toggle\",\r\n align: \"center\",\r\n width: 60,\r\n render: (text, record) => (\r\n {\r\n e.stopPropagation();\r\n handleToggle(record.recordid, checked);\r\n }}\r\n />\r\n ),\r\n },\r\n {\r\n title: \"Actions\",\r\n key: \"actions\",\r\n align: \"center\",\r\n width: 60,\r\n render: (text, record) => (\r\n {\r\n e.stopPropagation();\r\n handleDelete(record.recordid);\r\n }}\r\n >\r\n \r\n \r\n ),\r\n },\r\n ];\r\n\r\n return (\r\n
    \r\n {/* Header / Add Button */}\r\n \r\n \r\n
    \r\n \r\n \r\n Add Product/Services\r\n \r\n
    \r\n
    \r\n\r\n {/* Main Table */}\r\n ({\r\n onClick: () => onRowClick(record),\r\n })}\r\n rowKey={(record, index) => record.productID || `row-${index}`}\r\n style={{ paddingTop: 10, cursor: \"pointer\" }}\r\n loading={tableLoading}\r\n size=\"middle\"\r\n scroll={{ x: 1500, y: null }}\r\n pagination={{\r\n current: pagination.current,\r\n pageSize: pagination.pageSize,\r\n // total: pagination.total (if your server provides it)\r\n showSizeChanger: true,\r\n }}\r\n onChange={handleTableChange}\r\n />\r\n\r\n {/* Add / Update Modal */}\r\n \r\n newServices ? onSaveServices() : onUpdateServices()\r\n }\r\n >\r\n {saveLoading ? (\r\n
    \r\n
    {\" \"}\r\n Saving...\r\n
    \r\n ) : (\r\n \"Save\"\r\n )}\r\n ,\r\n ,\r\n ]}\r\n >\r\n {hasRequiredField && (\r\n \r\n )}\r\n\r\n
    \r\n
    \r\n
    \r\n \r\n {\r\n const val = e.target.value;\r\n setDetails((prevState) => ({\r\n ...prevState,\r\n productName: val,\r\n }));\r\n }}\r\n />\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n {\r\n const val = e.target.value;\r\n setDetails((prevState) => ({\r\n ...prevState,\r\n description: val,\r\n }));\r\n }}\r\n style={{ marginBottom: 5, minHeight: 150 }}\r\n />\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n {\r\n const val = e.target.value;\r\n setDetails((prevState) => ({\r\n ...prevState,\r\n url: val,\r\n }));\r\n }}\r\n style={{ marginBottom: 5, minHeight: 50 }}\r\n />\r\n
    \r\n\r\n
    \r\n
    \r\n \r\n \r\n setDetails((prevState) => ({\r\n ...prevState,\r\n datefrom: dateString,\r\n }))\r\n }\r\n disabledDate={(current) =>\r\n current && current.isBefore(moment().subtract(1, \"day\"))\r\n }\r\n style={{ width: \"100%\" }}\r\n />\r\n
    \r\n
    \r\n \r\n \r\n setDetails((prevState) => ({\r\n ...prevState,\r\n dateto: dateString,\r\n }))\r\n }\r\n disabledDate={(current) =>\r\n current && current.isBefore(moment().subtract(1, \"day\"))\r\n }\r\n style={{ width: \"100%\" }}\r\n />\r\n
    \r\n
    \r\n\r\n {newServices && (\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n setDetails((prevState) => ({\r\n ...prevState,\r\n banner: e,\r\n }))\r\n }\r\n >\r\n \r\n \r\n \r\n
    \r\n {details.banner === 1 && (\r\n <>\r\n
    \r\n \r\n
    \r\n {selectedImage ? (\r\n
    \r\n \r\n
    \r\n {\r\n setSelectedImage(null);\r\n setSelectedFile(\"\");\r\n }}\r\n >\r\n Remove\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 {/* Confirm Delete Modal */}\r\n \r\n {deleteLoading ? (\r\n
    \r\n
    {\" \"}\r\n Deleting...\r\n
    \r\n ) : (\r\n \"YES\"\r\n )}\r\n ,\r\n ,\r\n ]}\r\n >\r\n

    Are you sure you want to delete this record?

    \r\n \r\n
    \r\n );\r\n}\r\n","import React, { useEffect, useState, useCallback } from \"react\";\r\nimport {\r\n Button,\r\n Input,\r\n Modal,\r\n Table,\r\n Radio,\r\n Select,\r\n Spin,\r\n} from \"antd\";\r\nimport { MDBIcon } from \"mdbreact\";\r\nimport { DeleteOutlined } from \"@ant-design/icons\";\r\nimport { useToasts } from \"react-toast-notifications\";\r\nimport debounce from \"lodash.debounce\";\r\nimport CheckSession from \"../CheckSession\";\r\nimport LoadSpinner from \"../../global/spinner/globalspinner\";\r\n\r\nimport {\r\n Decrypt,\r\n Decrypt2,\r\n Encrypt2,\r\n EncryptHeader,\r\n Encrypt,\r\n} from \"../../util/EncryptionHandler\";\r\n\r\nimport * as API from \"../../util/live_api\";\r\nimport \"./AcctRCSConfiguration.css\";\r\n\r\nconst { Option } = Select;\r\n\r\n/** RCS Table columns - aligns with API fields */\r\nconst rcs_columns = [\r\n {\r\n title: \"Corporate Account\",\r\n dataIndex: \"CorpAcct\",\r\n key: \"CorpAcct\",\r\n },\r\n {\r\n title: \"Company Name\",\r\n dataIndex: \"Company\",\r\n key: \"Company\",\r\n },\r\n {\r\n title: \"Type\",\r\n dataIndex: \"Type\",\r\n key: \"Type\",\r\n },\r\n {\r\n title: \"RCS Validity Date\",\r\n dataIndex: \"Value\",\r\n key: \"Value\",\r\n align: \"center\",\r\n },\r\n {\r\n title: \"Actions\",\r\n dataIndex: \"actions\",\r\n key: \"actions\",\r\n align: \"center\",\r\n },\r\n];\r\n\r\n/** Columns for searching Plans/Corp accounts */\r\nconst plan_columns = [\r\n {\r\n title: \"Corporate Account\",\r\n dataIndex: \"account\",\r\n key: \"account\",\r\n },\r\n {\r\n title: \"Company\",\r\n dataIndex: \"company\",\r\n key: \"company\",\r\n },\r\n {\r\n dataIndex: \"recordid\",\r\n className: \"hide\",\r\n },\r\n];\r\n\r\n/** Hardcoded Types for the dropdown (Ensure these match the API's expected types) */\r\nconst RCS_TYPES = [\r\n \"AGORA_RCS1_VALIDITY\",\r\n \"AGORA_RCS2_VALIDITY\",\r\n \"AGORAPOD_RCS1_VALIDITY\",\r\n \"AGORAPOD_RCS2_VALIDITY\",\r\n \"BEULAH_RCS1_VALIDITY\",\r\n \"BEULAH_RCS2_VALIDITY\",\r\n \"PROVIDERS_RCS1_VALIDITY\",\r\n \"PROVIDERS_RCS2_VALIDITY\",\r\n \"WEBCALLCENTER_RCS1_VALIDITY\",\r\n \"WEBCALLCENTER_RCS2_VALIDITY\",\r\n];\r\n\r\n/**\r\n * A simple parser that converts common English words for numbers 1 through 99 into an integer.\r\n * Returns NaN if the word is invalid or out of range.\r\n */\r\nfunction parseWordToNumber(wordString) {\r\n const str = wordString.toLowerCase().trim();\r\n const baseWords = {\r\n one: 1,\r\n two: 2,\r\n three: 3,\r\n four: 4,\r\n five: 5,\r\n six: 6,\r\n seven: 7,\r\n eight: 8,\r\n nine: 9,\r\n ten: 10,\r\n eleven: 11,\r\n twelve: 12,\r\n thirteen: 13,\r\n fourteen: 14,\r\n fifteen: 15,\r\n sixteen: 16,\r\n seventeen: 17,\r\n eighteen: 18,\r\n nineteen: 19,\r\n };\r\n const tensWords = {\r\n twenty: 20,\r\n thirty: 30,\r\n forty: 40,\r\n fifty: 50,\r\n sixty: 60,\r\n seventy: 70,\r\n eighty: 80,\r\n ninety: 90,\r\n };\r\n\r\n if (baseWords[str] !== undefined) {\r\n return baseWords[str];\r\n }\r\n if (tensWords[str] !== undefined) {\r\n return tensWords[str];\r\n }\r\n const parts = str.split(\" \");\r\n if (parts.length === 2) {\r\n const [tens, ones] = parts;\r\n if (tensWords[tens] !== undefined && baseWords[ones] !== undefined) {\r\n return tensWords[tens] + baseWords[ones];\r\n }\r\n }\r\n if (str.includes(\"-\")) {\r\n const parts = str.split(\"-\");\r\n if (parts.length === 2) {\r\n const [tens, ones] = parts;\r\n if (tensWords[tens] !== undefined && baseWords[ones] !== undefined) {\r\n return tensWords[tens] + baseWords[ones];\r\n }\r\n }\r\n }\r\n return NaN;\r\n}\r\n\r\nexport default function AcctRCSConfiguration() {\r\n // Searching plan/corp account\r\n const [searchValue, setSearchValue] = useState(\"\");\r\n const [lstPlan, setLstPlan] = useState([]);\r\n const [hasDataPlan, setHasDataPlan] = useState(false);\r\n\r\n // Selected corp acct for new RCS config\r\n const [selectedAccount, setSelectedAccount] = useState(\"\");\r\n const [selectedCompany, setSelectedCompany] = useState(\"\");\r\n\r\n // RCS table data (full dataset or search results)\r\n const [rcsConfigList, setRcsConfigList] = useState([]);\r\n const [hasDataRcs, setHasDataRcs] = useState(false);\r\n\r\n // Loading states\r\n const [loading, setLoading] = useState(false);\r\n const [loadingModal, setLoadingModal] = useState(false);\r\n const [loadingSearch, setLoadingSearch] = useState(false);\r\n\r\n // Logged-in user info\r\n const [username, setUsername] = useState(\"\");\r\n const user_info = JSON.parse(localStorage.getItem(\"user_info\"));\r\n\r\n // For Add Modal\r\n const [modal_add, setModalAdd] = useState(false);\r\n // Use an array for multiple type selections in the dropdown\r\n const [selectedTypes, setSelectedTypes] = useState([]);\r\n const [rcsFormat, setRcsFormat] = useState(\"number\"); // radio: \"number\" or \"word\"\r\n const [Value, setValue] = useState(\"\");\r\n\r\n // For Edit Modal\r\n const [modal_edit, setModalEdit] = useState(false);\r\n const [rcsConfigId, setRcsConfigId] = useState(null);\r\n const [currentRecord, setCurrentRecord] = useState({});\r\n\r\n // For Delete Modal\r\n const [modal_delete, setModalDelete] = useState(false);\r\n\r\n // Pagination states\r\n const [currentPage, setCurrentPage] = useState(1);\r\n const [pageSize] = useState(10);\r\n const [totalRecords, setTotalRecords] = useState(0);\r\n const [totalPages, setTotalPages] = useState(0);\r\n\r\n // Search states\r\n const [searchTerm, setSearchTerm] = useState(\"\");\r\n const [activeSearchTerm, setActiveSearchTerm] = useState(\"\");\r\n\r\n const { addToast } = useToasts();\r\n\r\n // Debounced search function to minimize API calls\r\n const debouncedSearch = useCallback(\r\n debounce((value) => {\r\n performSearch(value, 1);\r\n }, 500),\r\n []\r\n );\r\n\r\n useEffect(() => {\r\n CheckSession();\r\n if (user_info?.data?.emailaddress) {\r\n setUsername(user_info.data.emailaddress);\r\n }\r\n // Initial load\r\n fetchRCSConfigList(1);\r\n // Cleanup debounce on unmount\r\n return () => {\r\n debouncedSearch.cancel();\r\n };\r\n // eslint-disable-next-line\r\n }, []);\r\n\r\n /**\r\n * Fetch the RCS config list from server (with pagination).\r\n */\r\n async function fetchRCSConfigList(pageNumber = 1) {\r\n setLoading(true);\r\n try {\r\n const url = `${Decrypt(API.GET_ALL_RCS_VALIDITY_CONFIG)}?pageNumber=${pageNumber}&pageSize=${pageSize}`;\r\n const resp = await fetch(url, {\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n },\r\n });\r\n const respJson = await resp.json();\r\n\r\n if (respJson.Data && respJson.success) {\r\n setCurrentPage(respJson.PageNumber);\r\n setTotalRecords(respJson.TotalRecords);\r\n setTotalPages(respJson.TotalPages);\r\n\r\n let decryptedData = respJson.Data.map((item) => {\r\n const dec = Decrypt2(item);\r\n return {\r\n AcctApp_ConfigurationId: dec.AcctApp_ConfigurationId,\r\n CorpAcct: dec.CorpAcct,\r\n Company: dec.Company,\r\n Type: dec.Type,\r\n Value: dec.Value,\r\n Format: dec.Format,\r\n Status: dec.Status,\r\n Recordid: dec.Recordid,\r\n actions: (\r\n {\r\n event.stopPropagation();\r\n handleDelete(dec);\r\n }}\r\n >\r\n \r\n \r\n ),\r\n };\r\n });\r\n\r\n setRcsConfigList(decryptedData);\r\n setHasDataRcs(true);\r\n } else {\r\n setHasDataRcs(false);\r\n setRcsConfigList([]);\r\n setTotalRecords(0);\r\n setTotalPages(0);\r\n }\r\n } catch (error) {\r\n setHasDataRcs(false);\r\n setRcsConfigList([]);\r\n setTotalRecords(0);\r\n setTotalPages(0);\r\n addToast(\"Error fetching RCS Configurations.\", {\r\n appearance: \"error\",\r\n autoDismiss: true,\r\n });\r\n }\r\n setLoading(false);\r\n }\r\n\r\n /**\r\n * Perform search by calling the search API.\r\n */\r\n async function performSearch(searchTerm, pageNumber = 1) {\r\n if (!searchTerm) {\r\n setActiveSearchTerm(\"\");\r\n fetchRCSConfigList(1);\r\n return;\r\n }\r\n setLoading(true);\r\n setLoadingSearch(true);\r\n try {\r\n const searchParams = {\r\n Company: searchTerm,\r\n CorpAcct: searchTerm,\r\n PageNumber: pageNumber,\r\n PageSize: pageSize,\r\n };\r\n\r\n const encryptedBody = Encrypt2(searchParams);\r\n\r\n const resp = await fetch(Decrypt(API.SEARCH_RCS_VALIDITY_CONFIG), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ Value: encryptedBody }),\r\n });\r\n\r\n const respJson = await resp.json();\r\n const decryptedResponse = Decrypt2(respJson);\r\n\r\n if (decryptedResponse && decryptedResponse.success) {\r\n setCurrentPage(decryptedResponse.PageNumber);\r\n setTotalRecords(decryptedResponse.TotalRecords);\r\n setTotalPages(decryptedResponse.TotalPages);\r\n setActiveSearchTerm(searchTerm);\r\n\r\n const decryptedData = decryptedResponse.Data.map((item) => {\r\n const dec = Decrypt2(item);\r\n return {\r\n AcctApp_ConfigurationId: dec.AcctApp_ConfigurationId,\r\n CorpAcct: dec.CorpAcct,\r\n Company: dec.Company,\r\n Type: dec.Type,\r\n Value: dec.Value,\r\n Format: dec.Format,\r\n Status: dec.Status,\r\n Recordid: dec.Recordid,\r\n actions: (\r\n {\r\n event.stopPropagation();\r\n handleDelete(dec);\r\n }}\r\n >\r\n \r\n \r\n ),\r\n };\r\n });\r\n\r\n setRcsConfigList(decryptedData);\r\n setHasDataRcs(true);\r\n } else {\r\n setHasDataRcs(false);\r\n setRcsConfigList([]);\r\n setTotalRecords(0);\r\n setTotalPages(0);\r\n addToast(decryptedResponse?.message || \"No records found.\", {\r\n appearance: \"info\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n }\r\n } catch (error) {\r\n addToast(\"Error occurred while searching RCS Config.\", {\r\n appearance: \"error\",\r\n autoDismiss: true,\r\n });\r\n setRcsConfigList([]);\r\n setHasDataRcs(false);\r\n setTotalRecords(0);\r\n setTotalPages(0);\r\n }\r\n setLoading(false);\r\n setLoadingSearch(false);\r\n }\r\n\r\n /**\r\n * Handle search input change with debounce.\r\n */\r\n function handleSearchInputChange(e) {\r\n const value = e.target.value;\r\n setSearchTerm(value);\r\n debouncedSearch(value.trim());\r\n }\r\n\r\n /** Add button click -> open the Add RCS Config modal */\r\n function onClickAddRCSConfig() {\r\n setSearchValue(\"\");\r\n setSearchTerm(\"\");\r\n setActiveSearchTerm(\"\");\r\n setLstPlan([]);\r\n setHasDataPlan(false);\r\n setSelectedAccount(\"\");\r\n setSelectedCompany(\"\");\r\n setSelectedTypes([]); // Reset multiple type selection\r\n setRcsFormat(\"number\");\r\n setValue(\"\");\r\n setModalAdd(true);\r\n }\r\n\r\n /**\r\n * Searching Corporate Account / Company Name.\r\n */\r\n async function onSearchCompany() {\r\n if (searchValue.trim().length === 0) {\r\n alert(\"Search field is empty.\");\r\n return;\r\n }\r\n setLoadingModal(true);\r\n setLstPlan([]);\r\n setHasDataPlan(false);\r\n try {\r\n let header_param = EncryptHeader(searchValue);\r\n let resp = await fetch(Decrypt(API.GET_ACCOUNT_BY_NAME), {\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n company: header_param,\r\n },\r\n });\r\n let respJson = await resp.json();\r\n\r\n if (Array.isArray(respJson?.data) && respJson.data.length > 0) {\r\n let decrypted = respJson.data.map((data) => Decrypt2(data));\r\n setHasDataPlan(true);\r\n setLstPlan(decrypted);\r\n } else {\r\n let resp2 = await fetch(Decrypt(API.GET_ACCOUNT_BY_CORPACCT), {\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n corpacct: header_param,\r\n },\r\n });\r\n let respJson2 = await resp2.json();\r\n let result = Decrypt2(respJson2);\r\n if (result.is_success) {\r\n let final_plan = [];\r\n final_plan.push(result.data);\r\n setHasDataPlan(true);\r\n setLstPlan(final_plan);\r\n } else {\r\n alert(result.message);\r\n setHasDataPlan(false);\r\n }\r\n }\r\n } catch (error) {\r\n setHasDataPlan(false);\r\n addToast(\"Error searching for accounts.\", {\r\n appearance: \"error\",\r\n autoDismiss: true,\r\n });\r\n }\r\n setLoadingModal(false);\r\n }\r\n\r\n /**\r\n * Handle row click in the plan selection table.\r\n */\r\n function onPlanRowClick(record) {\r\n return {\r\n onClick: () => {\r\n setSelectedAccount(record.account);\r\n setSelectedCompany(record.company);\r\n },\r\n };\r\n }\r\n\r\n /**\r\n * Insert RCS config (Add flow).\r\n *\r\n * This function loops through each selected type and inserts a separate record.\r\n * After all API calls complete, it displays separate alerts for those types that\r\n * were inserted successfully and for those that failed (for example, already existing).\r\n */\r\n async function onClickSaveRCSConfig() {\r\n if (!selectedAccount) {\r\n alert(\"No selected corporate account yet.\");\r\n return;\r\n }\r\n if (!selectedTypes || selectedTypes.length === 0) {\r\n alert(\"Please select at least one Type from the dropdown.\");\r\n return;\r\n }\r\n if (!Value) {\r\n alert(\"Please enter the RCS Validity Date value.\");\r\n return;\r\n }\r\n if (rcsFormat === \"number\") {\r\n const numVal = parseInt(Value, 10);\r\n if (isNaN(numVal) || numVal < 1 || numVal > 99) {\r\n alert(\"For 'Number' format, please enter a numeric value from 1 to 99.\");\r\n return;\r\n }\r\n } else if (rcsFormat === \"word\") {\r\n const parsedVal = parseWordToNumber(Value);\r\n if (isNaN(parsedVal) || parsedVal < 1 || parsedVal > 99) {\r\n alert(\r\n \"For 'Word' format, please enter a valid English word number from 1 to 99. (e.g., 'thirty', 'ninety nine')\"\r\n );\r\n return;\r\n }\r\n }\r\n\r\n setLoading(true);\r\n try {\r\n // Create an array of insertion promises—one per selected type.\r\n const insertionPromises = selectedTypes.map((type) => {\r\n const payload = {\r\n CorpAcct: selectedAccount,\r\n Type: type,\r\n Format: rcsFormat,\r\n Value: Value,\r\n PostedBy: username,\r\n };\r\n const ValueEncrypted = Encrypt2(payload);\r\n\r\n return fetch(Decrypt(API.ADD_RCS_VALIDITY_CONFIG), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ Value: ValueEncrypted }),\r\n })\r\n .then((resp) => resp.json())\r\n .then((respJson) => Decrypt2(respJson));\r\n });\r\n\r\n // Wait for all insertion promises to resolve.\r\n const results = await Promise.all(insertionPromises);\r\n const successTypes = [];\r\n const failedTypes = [];\r\n\r\n results.forEach((result, index) => {\r\n if (result.success) {\r\n successTypes.push(selectedTypes[index]);\r\n } else {\r\n failedTypes.push(selectedTypes[index]);\r\n }\r\n });\r\n\r\n if (successTypes.length > 0) {\r\n addToast(\r\n `RCS Config inserted successfully for: ${successTypes.join(\", \")}`,\r\n {\r\n appearance: \"success\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n }\r\n );\r\n }\r\n if (failedTypes.length > 0) {\r\n addToast(\r\n `Error inserting RCS Config for: ${failedTypes.join(\r\n \", \"\r\n )}. The record(s) may already exist.`,\r\n {\r\n appearance: \"error\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n }\r\n );\r\n }\r\n\r\n // Refresh the list based on active search or display all records.\r\n if (activeSearchTerm) {\r\n performSearch(activeSearchTerm, currentPage);\r\n } else {\r\n fetchRCSConfigList(currentPage);\r\n }\r\n setModalAdd(false);\r\n } catch (error) {\r\n addToast(\"Error occurred while inserting RCS config.\", {\r\n appearance: \"error\",\r\n autoDismiss: true,\r\n });\r\n if (activeSearchTerm) {\r\n performSearch(activeSearchTerm, currentPage);\r\n } else {\r\n fetchRCSConfigList(currentPage);\r\n }\r\n setModalAdd(false);\r\n }\r\n setLoading(false);\r\n }\r\n\r\n /**\r\n * Edit existing RCS (triggered by clicking a table row).\r\n *\r\n * When editing, if the stored Type contains commas, split it into an array.\r\n */\r\n function handleEdit(record) {\r\n setCurrentRecord(record);\r\n setRcsConfigId(record.AcctApp_ConfigurationId);\r\n setSelectedAccount(record.CorpAcct);\r\n setSelectedCompany(record.Company);\r\n if (record.Type && record.Type.includes(\",\")) {\r\n setSelectedTypes(record.Type.split(\",\").map((s) => s.trim()));\r\n } else {\r\n setSelectedTypes(record.Type ? [record.Type] : []);\r\n }\r\n setRcsFormat(record.Format || \"number\");\r\n setValue(record.Value || \"\");\r\n setModalEdit(true);\r\n }\r\n\r\n async function onClickUpdateRCSConfig() {\r\n if (!Value) {\r\n alert(\"Please enter the RCS Validity Date value.\");\r\n return;\r\n }\r\n if (rcsFormat === \"number\") {\r\n const numVal = parseInt(Value, 10);\r\n if (isNaN(numVal) || numVal < 1 || numVal > 99) {\r\n alert(\"For 'Number' format, please enter a numeric value from 1 to 99.\");\r\n return;\r\n }\r\n } else if (rcsFormat === \"word\") {\r\n const parsedVal = parseWordToNumber(Value);\r\n if (isNaN(parsedVal) || parsedVal < 1 || parsedVal > 99) {\r\n alert(\"For 'Word' format, please enter a valid English word number from 1 to 99.\");\r\n return;\r\n }\r\n }\r\n\r\n // For update, we update a single record.\r\n const typePayload = selectedTypes.join(\", \");\r\n\r\n setLoading(true);\r\n try {\r\n let ValueEncrypted = Encrypt2({\r\n AcctApp_ConfigurationId: rcsConfigId,\r\n Type: typePayload,\r\n Format: rcsFormat,\r\n Value: Value,\r\n EditedBy: username,\r\n });\r\n\r\n let resp = await fetch(Decrypt(API.UPDATE_RCS_VALIDITY_CONFIG), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ Value: ValueEncrypted }),\r\n });\r\n let respJson = await resp.json();\r\n let dec = Decrypt2(respJson);\r\n\r\n if (dec.success) {\r\n addToast(\"RCS config updated successfully.\", {\r\n appearance: \"success\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n if (activeSearchTerm) {\r\n performSearch(activeSearchTerm, currentPage);\r\n } else {\r\n fetchRCSConfigList(currentPage);\r\n }\r\n setModalEdit(false);\r\n } else {\r\n addToast(dec.message || \"Error updating RCS config.\", {\r\n appearance: \"error\",\r\n autoDismiss: true,\r\n });\r\n }\r\n } catch (error) {\r\n addToast(\"Error updating RCS config.\", {\r\n appearance: \"error\",\r\n autoDismiss: true,\r\n });\r\n }\r\n setLoading(false);\r\n }\r\n\r\n /**\r\n * Delete RCS config.\r\n */\r\n function handleDelete(record) {\r\n setCurrentRecord(record);\r\n setRcsConfigId(record.AcctApp_ConfigurationId);\r\n setModalDelete(true);\r\n }\r\n\r\n async function onConfirmDelete() {\r\n setLoading(true);\r\n try {\r\n let ValueEncrypted = Encrypt2({\r\n AcctApp_ConfigurationId: rcsConfigId,\r\n EditedBy: username,\r\n });\r\n\r\n let resp = await fetch(Decrypt(API.DELETE_RCS_VALIDITY_CONFIG), {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + user_info.access_token,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ Value: ValueEncrypted }),\r\n });\r\n let respJson = await resp.json();\r\n let dec = Decrypt2(respJson);\r\n\r\n if (dec.success) {\r\n addToast(\"RCS config deleted successfully.\", {\r\n appearance: \"success\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n if (activeSearchTerm) {\r\n performSearch(activeSearchTerm, currentPage);\r\n } else {\r\n fetchRCSConfigList(currentPage);\r\n }\r\n } else {\r\n addToast(dec.message || \"Error deleting RCS config.\", {\r\n appearance: \"error\",\r\n autoDismiss: true,\r\n });\r\n }\r\n } catch (error) {\r\n addToast(\"Error deleting RCS config.\", {\r\n appearance: \"error\",\r\n autoDismiss: true,\r\n });\r\n }\r\n setModalDelete(false);\r\n setLoading(false);\r\n }\r\n\r\n if (loading && !loadingSearch) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n\r\n return (\r\n
    \r\n

    \r\n eRCS Validity Configuration per Corporate Account\r\n

    \r\n
    \r\n\r\n {/* ====== Header Row (Search on left, Add button on right) ====== */}\r\n
    \r\n }\r\n />\r\n {\r\n setActiveSearchTerm(\"\");\r\n setSearchTerm(\"\");\r\n fetchRCSConfigList(1);\r\n addToast(\"Search cleared. Displaying all records.\", {\r\n appearance: \"info\",\r\n autoDismiss: true,\r\n autoDismissTimeout: 3000,\r\n });\r\n }}\r\n style={{ marginRight: 10 }}\r\n disabled={!activeSearchTerm}\r\n >\r\n Clear\r\n \r\n \r\n \r\n Add eRCS Validity\r\n \r\n
    \r\n\r\n {/* ====== Main Table for RCS configuration ====== */}\r\n {\r\n if (activeSearchTerm) {\r\n performSearch(activeSearchTerm, page);\r\n } else {\r\n fetchRCSConfigList(page);\r\n }\r\n },\r\n showSizeChanger: false,\r\n locale: {\r\n emptyText: hasDataRcs\r\n ? \"No data available.\"\r\n : \"No RCS Configurations found.\",\r\n },\r\n }}\r\n onRow={(record) => ({\r\n onClick: () => handleEdit(record),\r\n })}\r\n locale={{\r\n emptyText: hasDataRcs\r\n ? \"No data available.\"\r\n : \"No RCS Configurations found.\",\r\n }}\r\n />\r\n\r\n {/* ====== ADD RCS Validity Modal ====== */}\r\n \r\n {loading ? \"Saving...\" : \"Save\"}\r\n ,\r\n setModalAdd(false)}\r\n key=\"cancel\"\r\n >\r\n Cancel\r\n ,\r\n ]}\r\n width={700}\r\n >\r\n {/* Step 1: Select account */}\r\n \r\n setSearchValue(e.target.value)}\r\n placeholder=\"Enter CorpAcct or Company Name\"\r\n style={{ marginBottom: 10 }}\r\n />\r\n \r\n Search\r\n \r\n\r\n {loadingModal ? (\r\n
    \r\n \r\n
    \r\n ) : (\r\n \r\n )}\r\n\r\n \r\n \r\n\r\n {/* Step 2: Choose type */}\r\n \r\n Select Application Type\r\n \r\n setSelectedTypes(val)}\r\n disabled={!selectedAccount}\r\n >\r\n {RCS_TYPES.map((t) => (\r\n \r\n ))}\r\n \r\n\r\n {/* Step 3: RCS Validity Date */}\r\n \r\n RCS Validity Date\r\n \r\n \r\n Note: Select to use either numbers or words for RCS validity.\r\n

    \r\n setRcsFormat(e.target.value)}\r\n value={rcsFormat}\r\n style={{ marginBottom: 8 }}\r\n disabled={!selectedAccount}\r\n >\r\n Number\r\n Word\r\n \r\n setValue(e.target.value)}\r\n placeholder={\r\n rcsFormat === \"number\"\r\n ? \"Enter numeric validity (e.g. 30)\"\r\n : \"Enter textual validity (e.g. Thirty)\"\r\n }\r\n disabled={!selectedAccount}\r\n />\r\n \r\n\r\n {/* ====== EDIT RCS Validity Modal ====== */}\r\n \r\n {loading ? \"Updating...\" : \"Update\"}\r\n ,\r\n setModalEdit(false)}\r\n key=\"close\"\r\n >\r\n Close\r\n ,\r\n ]}\r\n width={700}\r\n >\r\n \r\n \r\n\r\n \r\n setSelectedTypes(val)}\r\n disabled\r\n >\r\n {RCS_TYPES.map((t) => (\r\n \r\n ))}\r\n \r\n\r\n \r\n \r\n Note: Select to use either numbers or words for RCS validity.\r\n

    \r\n setRcsFormat(e.target.value)}\r\n value={rcsFormat}\r\n style={{ marginBottom: 8 }}\r\n >\r\n Number\r\n Word\r\n \r\n setValue(e.target.value)}\r\n placeholder={\r\n rcsFormat === \"number\"\r\n ? \"Enter numeric validity (e.g. 30)\"\r\n : \"Enter textual validity (e.g. Thirty)\"\r\n }\r\n />\r\n \r\n\r\n {/* ====== DELETE CONFIRMATION MODAL ====== */}\r\n \r\n {loading ? \"Deleting...\" : \"Yes, Delete\"}\r\n ,\r\n setModalDelete(false)}\r\n key=\"no\"\r\n >\r\n No\r\n ,\r\n ]}\r\n width={500}\r\n >\r\n

    \r\n Are you sure you want to delete the RCS config for\r\n
    \r\n \r\n {currentRecord?.CorpAcct} - {currentRecord?.Company}\r\n \r\n ?\r\n

    \r\n \r\n
    \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { BrowserRouter as Router, Route, Switch } from \"react-router-dom\";\r\nimport \"./App.css\";\r\nimport { PrivateRoute } from \"./routes/PrivateRoute\";\r\nimport { AdminRoute } from \"./routes/AdminRoute\";\r\nimport { NewsletterRoute } from \"./routes/NewsletterRoute\";\r\nimport KycApproval from \"./components/KycApproval\";\r\nimport \"react-image-lightbox/style.css\";\r\nimport Users from \"./components/Users\";\r\nimport PrivacyPolicy from \"./components/PrivacyPolicy\";\r\nimport BankInclusion from \"./components/BankInclusion\";\r\nimport ContactUs from \"./components/ContactUs\";\r\nimport DisapprovedRemarks from \"./components/DisapprovedRemarks\";\r\nimport FeaturesControl from \"./components/FeaturesControl\";\r\nimport Login from \"./components/Login/Login\";\r\nimport Newsletter from \"./components/Newsletter/Main\";\r\nimport Store from \"./components/Newsletter/Delights/Stores\";\r\nimport Category from \"./components/Newsletter/Delights/Category\";\r\nimport DocDashboard from \"./components/DoctorsDashboard/DocDashboard\";\r\nimport ForgotPassword from \"./components/ForgotPassword/ForgotPassword\";\r\nimport OTP from \"./components/OTPVerification/OTP\";\r\nimport Announcement from \"./components/DoctorsAnnouncement/Announcement\";\r\nimport ConcurrentReset from \"./components/Concurrent/ConcurrentReset\";\r\nimport LockedOut from \"./components/LockedOut/LockedOut\";\r\nimport AgoraAdvisory from \"./components/AgoraAdvisory\";\r\nimport ArugaAdvisory from \"./components/ArugaAdvisory\";\r\nimport SuspendMaintenance from \"./components/Suspend/Suspend\";\r\nimport DisableFeatureMaintenance from \"./components/DisableFeatures/DisableFeatures\";\r\nimport EmailFeature from \"./components/EmailFeatures/EmailFeatures\";\r\nimport EmailMaintenance from \"./components/EmailFeatures/EmailMaintenance\";\r\nimport useLogout from \"./components/AutoLogout\";\r\nimport DigiCard from \"./components/Digicard/Digicard\";\r\nimport SysAccessManageAccess from \"./components/SysAccessManagement/SysAccessManageAccess\";\r\nimport Dashboard from \"./components/Layout/Dashboard\";\r\nimport RequestLogs from \"./components/RequestLogs\";\r\nimport UploadATD from \"./components/UploadATD\"\r\nimport FeaturesControlAruga from \"./components/ArugaFeaturesControl\";\r\nimport SurveyReport from \"./components/Survey/SurveyReport\";\r\nimport KioskTerminal from \"./components/Kiosk/KioskManagement\";\r\nimport AgoraPodTerminal from \"./components/AgoraPod/AgoraPodManagement\";\r\nimport AventusMarketplace from \"./components/AventusMarketplace/AventusMarketplace\";\r\nimport AcctRCSConfiguration from \"./components/RCSValidityController/AcctRCSConfiguration\";\r\nimport { Decrypt } from \"./util/EncryptionHandler\";\r\n\r\nfunction App() {\r\n const timer = useLogout(900);\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\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\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","// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport function register(config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl, config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl, config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","import React from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport \"./index.css\";\r\nimport App from \"./App\";\r\nimport * as serviceWorker from \"./serviceWorker\";\r\nimport \"@fortawesome/fontawesome-free/css/all.min.css\";\r\nimport \"bootstrap-css-only/css/bootstrap.min.css\";\r\nimport \"antd/dist/antd.css\";\r\nimport \"mdbreact/dist/css/mdb.css\";\r\nimport { ToastProvider } from \"react-toast-notifications\";\r\n\r\nReactDOM.render(\r\n \r\n \r\n ,\r\n document.getElementById(\"root\")\r\n);\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: https://bit.ly/CRA-PWA\r\nserviceWorker.unregister();\r\n"],"sourceRoot":""}