{"version":3,"sources":["images/NoImage.png","images/LogoLarge.png","images/NoProfilePic.jpg","images/LogoText.png","pages/BackendLoginPage.js","views/AutoServicesView.js","views/TransactionsView.js","views/PackagesView.js","views/UsersView.js","views/CouponsView.js","views/StaffView.js","views/TruckDriversView.js","views/PhoneNumbersView.js","views/ChatHistoryView.js","views/SupportUsersView.js","pages/SupportUserBackendPage.js","views/TruckAssignerView.js","views/StaffViewerView.js","views/ServicesView.js","views/NotificationsView.js","pages/BackendPage.js","pages/Error404Page.js","pages/PrivacyPolicyPage.js","App.js","serviceWorker.js","index.js"],"names":["module","exports","Copyright","Typography","variant","style","color","align","Link","href","BackendLoginPage","props","onValueChanged","event","setState","target","id","value","onSubmit","preventDefault","submit","fetch","method","headers","body","JSON","stringify","username","state","email","password","then","res","json","result","undefined","token","onLoginSuccess","onLoginFailed","error","submitBtn","showLoginFailMessage","errorMessage","response","Session","start","payload","expiration","window","location","reload","message","this","classes","background","display","flexDirection","minHeight","CssBaseline","Container","component","maxWidth","className","paper","width","src","logo","title","Avatar","avatar","form","TextField","onChange","disabled","InputProps","input","InputLabelProps","margin","required","fullWidth","label","name","autoComplete","autoFocus","type","Button","Popover","open","anchorEl","onClose","onLoginFailMessageClosed","bind","anchorOrigin","vertical","horizontal","transformOrigin","typography","Box","mt","paddingBottom","React","Component","withStyles","theme","marginTop","spacing","alignItems","backgroundColor","palette","secondary","main","marginBottom","tableIcons","Add","forwardRef","ref","Check","Clear","Delete","DetailPanel","Edit","Export","Filter","FirstPage","LastPage","NextPage","PreviousPage","ResetSearch","Search","SortArrow","ThirdStateCheck","ViewColumn","Alert","elevation","Transition","Slide","direction","headCells","numeric","disablePadding","FormPadding","Label","overflowWrap","whiteSpace","EnhancedTableHead","TableHead","TableRow","TableCell","padding","map","headCell","key","useToolbarStyles","makeStyles","root","paddingLeft","paddingRight","highlight","lighten","light","text","primary","dark","flex","useStyles","table","visuallyHidden","border","clip","height","overflow","position","top","progressBarRoot","appBar","marginLeft","heading","fontSize","pxToRem","flexBasis","flexShrink","secondaryHeading","dialogRoot","formRoot","justifyContent","horizontalCenter","AutoServicesView","useState","page","setPage","loadedPages","setLoadedPages","rowsPerPage","loading","setLoading","rows","setRows","rowsCount","setRowsCount","selectedItem","setSelecteItem","expanded","setExpanded","operations","setOperations","serviceReportWorkingTimeValue","setServiceReportWorkingTimeValue","towingServiceFeeValue","setTowingServiceFeeValue","manHourFeeValue","setManHourFeeValue","serviceRemarkValue","setServiceRemarkValue","Date","nextServiceDateValue","setNextServiceDateValue","saving","setSaving","showSuccess","setShowSuccess","setErrorMessage","showError","setShowError","actionActiveStep","setActionActiveStep","creatingCashRecord","setCreatingCashRecord","showCashRecordDialog","setShowCashRecordDialog","cashRecordAmount","setCashRecordAmount","selectedUser","setSelectedUser","timerValue","setTimerValue","EnhancedTableToolbar","Toolbar","clsx","textAlign","onClick","startIcon","duration","hrs","mins","secs","ret","formatSeconds","hasPagination","pendingActionType","loadData","ignoreLoadedPages","path","includes","userId","packageId","get","total","r","concat","list","lP","push","responseCode","length","alert","useEffect","timer","setInterval","newValue","clearInterval","loadDataUNSAFEFORRELOAD","onSuccess","closeDialog","updated","i","unshift","pop","splice","onError","onVehicleReturnedBtn","role","getStatusText","autoService","status","startMode","vehicleHasBeenTowed","getStatusActiveStep","changeActiveStep","step","emptyRows","Math","min","severity","LinearProgress","Paper","TableContainer","Table","aria-labelledby","size","aria-label","rowCount","TableBody","slice","row","index","labelId","hover","item","serviceReport","estimatedWorkingTime","towingServiceFee","manHourFee","serviceRemark","tabIndex","scope","e","userAccount","userFullName","brand","model","licensePlate","licensePlateNumber","split","cancelled","Chip","fontWeight","cancelledByUser","backendActionNeeded","Moment","creationDate","format","colSpan","TablePagination","rowsPerPageOptions","nextIconButtonProps","backIconButtonProps","count","onChangePage","newPage","Dialog","PaperProps","fullScreen","TransitionComponent","AppBar","IconButton","edge","reason","prompt","trim","content","p","Grid","container","xs","Card","CardContent","paymentMethod","getPaymentMethodText","userLang","service","serviceCategory","packageTitle","packageDescription","packagePrice","problemNote","Rating","deliveryTimeRating","readOnly","overallServiceRating","recoveryRating","recoveryDriverRating","imageCount","images","objectFit","cancelDate","cancelledByUserFullName","cancelReason","deleteIcon","onDelete","active","spinner","Stepper","nonLinear","orientation","activeStep","Step","completed","StepButton","StepContent","paddingTop","icons","columns","field","initialEditValue","validate","rowData","isValid","helperText","price","isNaN","lookup","0","1","2","data","filter","o","part","options","search","sorting","paging","draggable","showTitle","editable","onRowAdd","newData","Promise","resolve","reject","onRowUpdate","oldData","dataUpdate","tableData","onRowDelete","dataDelete","render","partCost","partQty","labourRate","hours","startAdornment","InputAdornment","autoServiceId","accepted","multiline","utils","DateFnsUtils","DatePicker","disableToolbar","note","nextServiceDate","getTime","paid","appliedCouponCode","appliedCouponPercentage","couponDeduction","totalAmount","DialogTitle","DialogContent","DialogActions","TransactionsView","serviceReportId","Snackbar","autoHideDuration","fullName","questions","ExpansionPanel","panel","isExpanded","ExpansionPanelSummary","expandIcon","aria-controls","question","answer","substring","ExpansionPanelDetails","titleValue","setTitleValue","descriptionValue","setDescriptionValue","priceValue","setPriceValue","itemName","transactionId","amount","date","onNew","Tooltip","PackagesView","titleValueAr","setTitleValueAr","descriptionValueAr","setDescriptionValueAr","description","titleAr","descriptionAr","disable","marginRight","inputProps","maxLength","UsersView","showSetReferCodeDialog","setShowSetReferCodeDialog","settingReferCode","setSettingReferCode","userReferCode","setUserReferCode","user","friendReferCode","CouponsView","codeValue","setCodeValue","percentValue","setPercentValue","maxUsesValue","setMaxUsesValue","revokedValue","setRevokedValue","code","percent","maxUses","uses","revoked","confirm","FormControlLabel","control","Checkbox","checked","StaffView","fullNameValue","setFullNameValue","emailValue","setEmailValue","passwordValue","setPasswordValue","TruckDriversView","truckRefValue","setTruckRefValue","truckRef","PhoneNumbersView","nameValue","setNameValue","nameValueAr","setNameValueAr","numberValue","setNumberValue","number","nameAr","ChatHistoryView","setSelectedItem","messageEnd","setMessageEnd","supportUserId","customerAccount","messages","scrollIntoView","behavior","self","borderRadius","float","clear","el","SupportUsersView","showProfileUploadDialog","setShowProfileUploadDialog","profileSuffix","NoProfilePic","acceptedFiles","filesLimit","showPreviews","onSave","files","FormData","append","random","uploadProfileFile","maxFileSize","SupportUserBackendPage","timeout","connect","connectInterval","ws","WebSocket","that","onopen","send","clearTimeout","onmessage","onWebSocketMessage","onclose","setTimeout","check","onerror","err","close","readyState","CLOSED","handleChange","rooms","selectedRoomMessages","selectedRoom","sendMessage","sendingMessage","parse","loadRooms","messageObject","room","roomId","latestMessage","latestMessageSelf","messagesEnd","indexOf","supportUserAway","List","ListItem","button","selected","loadMessages","ListItemText","Badge","invisible","onAcceptSession","Divider","flexGrow","setRoomAway","onEndSession","aria-haspopup","onKeyPress","ev","onSendMessageBtn","placeholder","shrink","Backdrop","zIndex","CircularProgress","TruckAssignerView","selectedAssignation","awaitingAssignationsData","availableTrucksData","assignedTrucksData","timerInterval","prevState","awaitingAssignations","availableTrucks","assignedTrucks","awaitingAssignation","availableTruck","assignationType","truckDriverId","onUpdateSuccess","styles","wrapper","base","fadeSpeed","reloadNow","locationLatitude","locationLongitude","scheduledDate","onRowClick","evt","selectedRow","rowStyle","env","assignTruck","autoServiceTowed","onVehicleArrived","onVehicleTowed","cancelAssignation","onVehicleDeliveryComplete","actionsColumnIndex","StaffViewerView","ServicesView","categoriesValue","setCategoriesValue","uploadCategoryIcon","setUploadCategoryIcon","categories","NoImage","editComponent","onKeyDown","stopPropagation","uploadIconFile","NotificationsView","bodyValue","setBodyValue","sentDate","TabPanel","children","other","hidden","a11yProps","BackendPage","lastApiResponse","profileBtn","openProfileMenu","tabValue","pendingActionsTabValue","destroy","currentTarget","tabHorizontalRoot","Tabs","tabs","Tab","menuId","renderMenu","Menu","keepMounted","onProfileMenuClosed","MenuItem","logout","ListItemIcon","onProfileBtn","tabRoot","pendingView","icon","borderRight","divider","menuButton","bg","left","transform","Error404Page","to","buttonStyle","borderColor","PrivacyPolicyPage","RePage","isIOS","replace","App","onExpiration","session","exact","isAndroid","Boolean","hostname","match","ReactDOM","StrictMode","document","getElementById","navigator","serviceWorker","ready","registration","unregister","catch","console"],"mappings":"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","file":"static/js/main.62033800.chunk.js","sourcesContent":["module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/LogoLarge.d8bd43cf.png\";","module.exports = \"data:image/jpeg;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/LogoText.bd83683a.png\";","import React from 'react';\nimport Avatar from '@material-ui/core/Avatar';\nimport Button from '@material-ui/core/Button';\nimport CssBaseline from '@material-ui/core/CssBaseline';\nimport TextField from '@material-ui/core/TextField';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport Link from '@material-ui/core/Link';\nimport Grid from '@material-ui/core/Grid';\nimport Box from '@material-ui/core/Box';\nimport LockOutlinedIcon from '@material-ui/icons/LockOutlined';\nimport Typography from '@material-ui/core/Typography';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { withStyles } from '@material-ui/core/styles';\nimport Container from '@material-ui/core/Container';\nimport logo from '../images/LogoLarge.png'\nimport Popover from '@material-ui/core/Popover';\n\nimport {Session} from 'bc-react-session';\n\nfunction Copyright() {\n return (\n \n {'Powered by '}\n \n IT KEY\n \n \n \n );\n}\n\nconst styles = theme => ({\n paper: {\n marginTop: theme.spacing(8),\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n color: 'white'\n },\n avatar: {\n margin: theme.spacing(1),\n backgroundColor: theme.palette.secondary.main,\n },\n form: {\n width: '100%', // Fix IE 11 issue.\n marginTop: theme.spacing(1),\n },\n submit: {\n margin: theme.spacing(3, 0, 2),\n },\n title: {\n marginBottom: theme.spacing(4),\n color: 'white'\n },\n input: {\n color: \"white\"\n }\n});\n\nclass BackendLoginPage extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.state = {\n email: \"\",\n password: \"\",\n submit: false,\n submitBtn: null,\n showLoginFailMessage: false,\n errorMessage: \"\",\n };\n }\n\n onValueChanged = event => {\n this.setState({\n [event.target.id]: event.target.value\n });\n }\n\n onSubmit = event => {\n event.preventDefault();\n this.setState({\n submit: true\n });\n\n fetch('/api/login/backend-auth', {\n method: 'post',\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n username: this.state.email,\n password: this.state.password\n })\n })\n .then(res => res.json())\n .then(\n (result) => {\n if (result.token !== undefined) {\n this.onLoginSuccess(result)\n } else {\n this.onLoginFailed('Invalid email/password combination', event.target)\n }\n }, \n (error) => this.onLoginFailed('An error occurred. Please try again later.', event.target)\n )\n\n this.setState({ password: \"\" });\n };\n\n onLoginSuccess(response) {\n Session.start({\n payload: response,\n expiration: 86400000\n })\n window.location.reload(false);\n }\n\n onLoginFailed(message, submitBtn) {\n this.setState({\n submit: false,\n submitBtn: submitBtn,\n showLoginFailMessage: true,\n errorMessage: message\n });\n }\n\n onLoginFailMessageClosed() {\n this.setState({\n submitBtn: null,\n showLoginFailMessage: false,\n errorMessage: \"\"\n });\n }\n\n render() {\n const classes = this.props.classes;\n\n return (\n
\n \n \n \n
\n \n \n
\n \n \n Backend\n \n \n \n \n \n \n \n Sign in\n \n
\n \n \n \n \n Sign In\n \n \n {this.state.errorMessage}\n \n \n \n
\n \n \n \n
\n
\n );\n }\n}\n\nexport default withStyles(styles)(BackendLoginPage);\n\n/*const login = (event) => {\n event.preventDefault();\n\n fetch('/login/auth', {\n method: 'post',\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n username: \"john@john.com\",\n password: \"john123\"\n })\n })\n .then(res => res.json())\n .then(res => console.log(res));\n};*/\n\n/*export default function LoginPage() {\n const classes = useStyles();\n\n return (\n \n \n
\n\n \n\n \n Admin Panel\n \n \n\n \n \n \n \n Sign in\n \n
\n \n \n \n \n Sign In\n \n \n \n
\n \n \n \n
\n );\n}*/","import React, { useEffect, forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { lighten, makeStyles } from '@material-ui/core/styles';\nimport Table from '@material-ui/core/Table';\nimport TableBody from '@material-ui/core/TableBody';\nimport TableCell from '@material-ui/core/TableCell';\nimport TableContainer from '@material-ui/core/TableContainer';\nimport TableHead from '@material-ui/core/TableHead';\nimport ReplayIcon from '@material-ui/icons/Replay';\nimport TablePagination from '@material-ui/core/TablePagination';\nimport TableRow from '@material-ui/core/TableRow';\nimport TableSortLabel from '@material-ui/core/TableSortLabel';\nimport Toolbar from '@material-ui/core/Toolbar';\nimport Typography from '@material-ui/core/Typography';\nimport Paper from '@material-ui/core/Paper';\nimport IconButton from '@material-ui/core/IconButton';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport Switch from '@material-ui/core/Switch';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport FilterListIcon from '@material-ui/icons/FilterList';\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport { Session } from 'bc-react-session';\nimport Dialog from '@material-ui/core/Dialog';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport ListItem from '@material-ui/core/ListItem';\nimport List from '@material-ui/core/List';\nimport Divider from '@material-ui/core/Divider';\nimport CloseIcon from '@material-ui/icons/Close';\nimport Slide from '@material-ui/core/Slide';\nimport AppBar from '@material-ui/core/AppBar';\nimport Button from '@material-ui/core/Button';\nimport TextField from '@material-ui/core/TextField';\nimport Box from '@material-ui/core/Box';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport ExpansionPanel from '@material-ui/core/ExpansionPanel';\nimport ExpansionPanelDetails from '@material-ui/core/ExpansionPanelDetails';\nimport ExpansionPanelSummary from '@material-ui/core/ExpansionPanelSummary';\nimport Moment from 'moment';\nimport AddCircleOutlineIcon from '@material-ui/icons/AddCircleOutline';\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle';\nimport AddBoxIcon from '@material-ui/icons/AddBox';\nimport Snackbar from '@material-ui/core/Snackbar';\nimport MuiAlert from '@material-ui/lab/Alert';\nimport InputAdornment from '@material-ui/core/InputAdornment';\nimport {DropzoneDialog} from 'material-ui-dropzone'\nimport TransactionsView from './TransactionsView';\nimport { Chip, Card, CardContent, CardMedia, StepContent, Grid, DialogTitle, DialogContent, DialogContentText, DialogActions, Select } from '@material-ui/core';\nimport NoImage from '../images/NoImage.png';\nimport Stepper from '@material-ui/core/Stepper';\nimport Step from '@material-ui/core/Step';\nimport StepButton from '@material-ui/core/StepButton';\nimport LoadingOverlay from 'react-loading-overlay';\nimport MaterialTable, { MTableToolbar } from 'material-table';\nimport Rating from '@material-ui/lab/Rating';\n\nimport AddBox from '@material-ui/icons/AddBox';\nimport ArrowDownward from '@material-ui/icons/ArrowDownward';\nimport Check from '@material-ui/icons/Check';\nimport ChevronLeft from '@material-ui/icons/ChevronLeft';\nimport ChevronRight from '@material-ui/icons/ChevronRight';\nimport Clear from '@material-ui/icons/Clear';\nimport DeleteOutline from '@material-ui/icons/DeleteOutline';\nimport Edit from '@material-ui/icons/Edit';\nimport FilterList from '@material-ui/icons/FilterList';\nimport FirstPage from '@material-ui/icons/FirstPage';\nimport LastPage from '@material-ui/icons/LastPage';\nimport Remove from '@material-ui/icons/Remove';\nimport SaveAlt from '@material-ui/icons/SaveAlt';\nimport Search from '@material-ui/icons/Search';\nimport ViewColumn from '@material-ui/icons/ViewColumn';\n\nimport DateFnsUtils from '@date-io/date-fns';\nimport {\n DatePicker,\n TimePicker,\n DateTimePicker,\n MuiPickersUtilsProvider,\n} from '@material-ui/pickers'\nimport PackagesView from './PackagesView';\n\nconst tableIcons = {\n Add: forwardRef((props, ref) => ),\n Check: forwardRef((props, ref) => ),\n Clear: forwardRef((props, ref) => ),\n Delete: forwardRef((props, ref) => ),\n DetailPanel: forwardRef((props, ref) => ),\n Edit: forwardRef((props, ref) => ),\n Export: forwardRef((props, ref) => ),\n Filter: forwardRef((props, ref) => ),\n FirstPage: forwardRef((props, ref) => ),\n LastPage: forwardRef((props, ref) => ),\n NextPage: forwardRef((props, ref) => ),\n PreviousPage: forwardRef((props, ref) => ),\n ResetSearch: forwardRef((props, ref) => ),\n Search: forwardRef((props, ref) => ),\n SortArrow: forwardRef((props, ref) => ),\n ThirdStateCheck: forwardRef((props, ref) => ),\n ViewColumn: forwardRef((props, ref) => )\n};\n\n//5 minutes\nconst RELOAD_TIME = 2 * 60;\n//const RELOAD_TIME = 5;\n\nfunction Alert(props) {\n return ;\n}\n\nconst Transition = React.forwardRef(function Transition(props, ref) {\n return ;\n });\n\nconst headCells = [\n { id: 'user', numeric: false, disablePadding: true, label: 'User' },\n { id: 'vehicle', numeric: false, disablePadding: false, label: 'Vehicle' },\n { id: 'type', numeric: false, disablePadding: false, label: 'Type' },\n { id: 'status', numeric: false, disablePadding: false, label: 'Status' },\n { id: 'actionneeded', numeric: false, disablePadding: false, label: 'Action Needed' },\n { id: 'date', numeric: false, disablePadding: false, label: 'Date' },\n];\n\nfunction FormPadding() {\n return ( <>

);\n} \n\nfunction Label(props) {\n return (\n <>\n \n {props.title}\n \n \n {props.value}\n \n \n )\n}\n\nfunction EnhancedTableHead(props) {\n return (\n \n \n \n \n \n {headCells.map((headCell) => (\n \n {headCell.label}\n \n ))}\n \n \n );\n}\n\nEnhancedTableHead.propTypes = {\n classes: PropTypes.object.isRequired,\n rowCount: PropTypes.number.isRequired,\n};\n\nconst useToolbarStyles = makeStyles((theme) => ({\n root: {\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(1),\n },\n highlight:\n theme.palette.type === 'light'\n ? {\n color: theme.palette.secondary.main,\n backgroundColor: lighten(theme.palette.secondary.light, 0.85),\n }\n : {\n color: theme.palette.text.primary,\n backgroundColor: theme.palette.secondary.dark,\n },\n title: {\n flex: '1 1 100%',\n },\n}));\n\n\nconst formatSeconds = (duration) => {\n // Hours, minutes and seconds\n var hrs = ~~(duration / 3600);\n var mins = ~~((duration % 3600) / 60);\n var secs = ~~duration % 60;\n\n // Output like \"1:01\" or \"4:03:59\" or \"123:03:59\"\n var ret = \"\";\n\n if (hrs > 0) {\n ret += \"\" + hrs + \":\" + (mins < 10 ? \"0\" : \"\");\n }\n\n ret += \"\" + mins + \":\" + (secs < 10 ? \"0\" : \"\");\n ret += \"\" + secs;\n return ret;\n}\n\n\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n width: '100%',\n },\n paper: {\n width: '100%',\n marginBottom: theme.spacing(2),\n },\n table: {\n //minWidth: 750,\n },\n visuallyHidden: {\n border: 0,\n clip: 'rect(0 0 0 0)',\n height: 1,\n margin: -1,\n overflow: 'hidden',\n padding: 0,\n position: 'absolute',\n top: 20,\n width: 1,\n },\n progressBarRoot: { },\n appBar: {\n position: 'relative',\n },\n title: {\n marginLeft: theme.spacing(2),\n flex: 1,\n },\n fullWidth: {\n width: '100%',\n },\n heading: {\n fontSize: theme.typography.pxToRem(15),\n flexBasis: '33.33%',\n flexShrink: 0,\n },\n secondaryHeading: {\n fontSize: theme.typography.pxToRem(15),\n color: theme.palette.text.secondary,\n },\n dialogRoot: {\n height: '100%',\n \n },\n formRoot: {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center'\n },\n horizontalCenter: {\n width: '300px'\n }\n}));\n \nexport default function AutoServicesView(props) {\n const classes = useStyles();\n const [page, setPage] = React.useState(0);\n const [loadedPages, setLoadedPages] = React.useState([]);\n const [rowsPerPage, setRowsPerPage] = React.useState(10);\n const [loading, setLoading] = React.useState(false);\n const [rows, setRows] = React.useState([]);\n const [rowsCount, setRowsCount] = React.useState(0);\n const [selectedItem, setSelecteItem] = React.useState(undefined);\n const [expanded, setExpanded] = React.useState(false);\n\n const [operations, setOperations] = React.useState([]);\n const [serviceReportWorkingTimeValue, setServiceReportWorkingTimeValue] = React.useState(0);\n const [towingServiceFeeValue, setTowingServiceFeeValue] = React.useState(0);\n const [manHourFeeValue, setManHourFeeValue] = React.useState(0);\n\n const [serviceRemarkValue, setServiceRemarkValue] = React.useState(\"\");\n const [nextServiceDateValue, setNextServiceDateValue] = React.useState(new Date());\n\n const [saving, setSaving] = React.useState(false);\n\n const [showSuccess, setShowSuccess] = React.useState(false);\n const [errorMessage, setErrorMessage] = React.useState(\"\");\n const [showError, setShowError] = React.useState(false);\n\n const [actionActiveStep, setActionActiveStep] = React.useState(0);\n\n const [creatingCashRecord, setCreatingCashRecord] = React.useState(false);\n const [showCashRecordDialog, setShowCashRecordDialog] = React.useState(false);\n const [cashRecordAmount, setCashRecordAmount] = React.useState(0);\n\n const [selectedUser, setSelectedUser] = React.useState(undefined);\n\n const [timerValue, setTimerValue] = React.useState(0);\n\n const EnhancedTableToolbar = (props) => {\n const classes = useToolbarStyles();\n \n return (\n \n \n \n Auto Services\n \n \n {page == 0 ? (<>\n \n ) : (<>\n Reload paused (Live reloading only occurs in the first list-page)\n )}\n \n \n );\n };\n\n //const [showProfileUploadDialog, setShowProfileUploadDialog] = React.useState(false);\n\n /*props.loadData((data) => {\n setRows(data);\n setLoading(false);\n });*/\n\n \n\n const hasPagination = () => {\n return props.pendingActionType === undefined;\n }\n\n const loadData = (page, ignoreLoadedPages) => {\n if ((ignoreLoadedPages === undefined || false) && loadedPages.includes(page)) {\n return;\n }\n\n //setRows([]);\n setLoading(true);\n\n var path;\n if (props.userId !== undefined) {\n path = '/api/backend/auto-service/get-user-auto-services/' + props.userId + '/' + page;\n } else if (props.packageId !== undefined) {\n path = '/api/backend/auto-service/get-package-auto-services/' + props.packageId + '/' + page;\n } else if (props.pendingActionType !== undefined) {\n path = '/api/backend/auto-service/get-pending-action-auto-services/' + props.pendingActionType;\n } else {\n path = '/api/backend/auto-service/get-auto-services/' + page;\n }\n\n fetch(path, {\n method: 'get',\n headers: {\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n }\n })\n .then(res => res.json())\n .then(\n (result) => {\n if (hasPagination()) {\n if (page === 0) {\n setRowsCount(result.total);\n }\n\n let r = rows;\n r = r.concat(result.list);\n setRows(r);\n \n\n let lP = loadedPages;\n lP.push(page);\n setLoadedPages(lP);\n } else {\n if (result.responseCode === 0) {\n setRows(result.payload);\n setRowsCount(result.payload.length);\n } else {\n alert('Error');\n }\n }\n\n setLoading(false);\n }, \n (error) => {\n setRows([]);\n setLoading(false);\n }\n )\n };\n\n const loadDataUNSAFEFORRELOAD = (page) => {\n //setRows([]);\n setLoading(true);\n\n var path;\n if (props.userId !== undefined) {\n path = '/api/backend/auto-service/get-user-auto-services/' + props.userId + '/' + page;\n } else if (props.pendingActionType !== undefined) {\n path = '/api/backend/auto-service/get-pending-action-auto-services/' + props.pendingActionType;\n } else {\n path = '/api/backend/auto-service/get-auto-services/' + page;\n }\n\n fetch(path, {\n method: 'get',\n headers: {\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n }\n })\n .then(res => res.json())\n .then(\n (result) => {\n if (hasPagination()) {\n setRowsCount(result.total);\n setRows([...result.list]);\n setLoadedPages([page]);\n } else {\n if (result.responseCode === 0) {\n setRows(result.payload);\n setRowsCount(result.payload.length);\n } else {\n alert('Error');\n }\n }\n\n setLoading(false);\n }, \n (error) => {\n setRows([]);\n setLoading(false);\n }\n )\n };\n\n useEffect(() => {\n loadData(page);\n }, [])\n\n useEffect(() => {\n const timer = page == 0 ? setInterval(() => {\n setTimerValue(timer => {\n const newValue = timer + 1;\n if (newValue > RELOAD_TIME) {\n return 0;\n } else {\n return newValue;\n }\n });\n }, 1000) : undefined;\n\n return () => {\n if (timer !== undefined) {\n clearInterval(timer);\n }\n };\n }, [page])\n\n useEffect(() => {\n if (timerValue >= RELOAD_TIME) {\n setLoadedPages([]);\n setRows([])\n setRowsCount(0);\n setPage(0)\n loadDataUNSAFEFORRELOAD(0);\n }\n }, [timerValue])\n\n const onSuccess = (result) => {\n if (result.responseCode === 0) {\n setShowSuccess(true)\n closeDialog();\n\n if (props.pendingActionType === undefined) {\n var updated = false;\n for (var i = 0; i < rows.length; i++) {\n if (rows[i].id === result.payload.id) {\n rows[i] = result.payload;\n updated = true;\n break;\n }\n }\n if (!updated) {\n setRowsCount(rowsCount + 1);\n\n rows.unshift(result.payload);\n if (rows.length > 1) {\n if ((rows.length - 1) % 10 === 0) {\n rows.pop();\n }\n }\n }\n } else {\n for (var i = 0; i < rows.length; i++) {\n if (rows[i].id === result.payload.id) {\n rows.splice(i, 1);\n break;\n }\n }\n }\n } else {\n if (result.payload !== undefined && result.payload !== null) {\n setErrorMessage(result.payload);\n } else {\n setErrorMessage(\"Error\");\n }\n setShowError(true)\n }\n setSaving(false)\n };\n\n const onError = (error) => {\n setErrorMessage(\"Error\");\n setShowError(true)\n\n setSaving(false)\n }\n\n const onReachedGarageBtn = () => {\n if (Session.get().payload.role == 5) {\n setErrorMessage(\"You do not have the required role for this action\");\n setShowError(true)\n return;\n }\n\n setSaving(true)\n\n fetch('/api/backend/auto-service/auto-service-reached-garage/' + selectedItem.id, {\n method: 'get',\n headers: {\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n },\n })\n .then(res => res.json())\n .then(onSuccess, onError)\n };\n\n /*\n if (codeValue.trim() === \"\") {\n setErrorMessage(\"Code can not be empty\");\n setShowError(true)\n return;\n }\n\n if (isNaN(percentValue) || ((percentValue.trim !== undefined ? percentValue.trim() : percentValue) === \"\")) {\n setErrorMessage(\"Percent has to be a numeral value\");\n setShowError(true)\n return;\n }\n */\n\n const onSendDiagnosticsBtn = () => {\n if (Session.get().payload.role == 5) {\n setErrorMessage(\"You do not have the required role for this action\");\n setShowError(true)\n return;\n }\n\n if (operations.length === 0 && selectedItem.packageId <= 0) {\n setErrorMessage(\"No operations created\");\n setShowError(true)\n return;\n }\n\n if (isNaN(serviceReportWorkingTimeValue) || ((serviceReportWorkingTimeValue.trim !== undefined ? serviceReportWorkingTimeValue.trim() : serviceReportWorkingTimeValue) === \"\")) {\n setErrorMessage(\"Estimated working time has to be a numeral value\");\n setShowError(true)\n return;\n }\n \n if (selectedItem.startMode === 1) {\n if (towingServiceFeeValue === null || isNaN(towingServiceFeeValue) || ((towingServiceFeeValue.trim !== undefined ? towingServiceFeeValue.trim() : towingServiceFeeValue) === \"\")) {\n setErrorMessage(\"Towing service fee has to be a numeral value\");\n setShowError(true)\n return;\n }\n }\n\n if (manHourFeeValue === null || isNaN(manHourFeeValue) || ((manHourFeeValue.trim !== undefined ? manHourFeeValue.trim() : manHourFeeValue) === \"\")) {\n setErrorMessage(\"Labour charge has to be a numeral value\");\n setShowError(true)\n return;\n }\n\n if (selectedItem.startMode === 1) {\n if (towingServiceFeeValue < 0) {\n setErrorMessage(\"Towing service fee has to be a positive value\");\n setShowError(true)\n return;\n }\n }\n\n if (manHourFeeValue < 0) {\n setErrorMessage(\"Labour charge has to be a positive value\");\n setShowError(true)\n return;\n }\n\n setSaving(true)\n\n fetch('/api/backend/auto-service/create-service-report', {\n method: 'post',\n headers: {\n \"Content-Type\": \"application/json\",\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n },\n body: JSON.stringify({\n autoServiceId: selectedItem.id,\n estimatedWorkingTime: serviceReportWorkingTimeValue,\n towingServiceFee: towingServiceFeeValue,\n manHourFee: manHourFeeValue,\n operations: operations\n })\n })\n .then(res => res.json())\n .then(onSuccess, onError)\n };\n\n const onCancelDiagnosticsBtn = () => {\n if (Session.get().payload.role == 5) {\n setErrorMessage(\"You do not have the required role for this action\");\n setShowError(true)\n return;\n }\n\n setSaving(true)\n\n fetch('/api/backend/auto-service/cancel-service-report/' + selectedItem.serviceReport.id, {\n method: 'get',\n headers: {\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n },\n })\n .then(res => res.json())\n .then(onSuccess, onError)\n }\n\n const onServiceCompleteBtn = () => {\n if (Session.get().payload.role == 5) {\n setErrorMessage(\"You do not have the required role for this action\");\n setShowError(true)\n return;\n }\n\n setSaving(true)\n\n fetch('/api/backend/auto-service/auto-service-completed/' + selectedItem.id, {\n method: 'post',\n headers: {\n \"Content-Type\": \"application/json\",\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n },\n body: JSON.stringify({\n note: serviceRemarkValue,\n nextServiceDate: nextServiceDateValue.getTime()\n })\n })\n .then(res => res.json())\n .then(onSuccess, onError)\n }\n\n const onVehicleReturnedBtn = () => {\n if (Session.get().payload.role == 5) {\n setErrorMessage(\"You do not have the required role for this action\");\n setShowError(true)\n return;\n }\n\n setSaving(true)\n\n fetch('/api/backend/auto-service/auto-service-returned/' + selectedItem.id, {\n method: 'get',\n headers: {\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n },\n })\n .then(res => res.json())\n .then(onSuccess, onError)\n };\n\n const onCancelBtn = () => {\n if (Session.get().payload.role == 5) {\n setErrorMessage(\"You do not have the required role for this action\");\n setShowError(true)\n return;\n }\n\n const reason = prompt(\"Are you sure you want to cancel? Please input cancellation reason to confirm.\")\n if (reason == null) {\n return;\n }\n\n if (reason.trim() == \"\") {\n setErrorMessage(\"Cancellation reason is required\");\n setShowError(true)\n return;\n }\n\n setSaving(true)\n\n fetch('/api/backend/auto-service/cancel-auto-service/' + selectedItem.id, {\n method: 'post',\n body: JSON.stringify({\n content: reason\n }),\n headers: {\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n \"Content-Type\": \"application/json\"\n },\n })\n .then(res => res.json())\n .then(onSuccess, onError)\n };\n\n const onCreateCashTransactionBtn = () => {\n if (Session.get().payload.role == 5) {\n setErrorMessage(\"You do not have the required role for this action\");\n setShowError(true)\n return;\n }\n\n if (cashRecordAmount === null || isNaN(cashRecordAmount) || ((cashRecordAmount.trim !== undefined ? cashRecordAmount.trim() : cashRecordAmount) === \"\")) {\n setErrorMessage(\"Amount has to be a numeral value\");\n setShowError(true)\n return;\n }\n\n if (cashRecordAmount < 0) {\n setErrorMessage(\"Amount has to be a positive value\");\n setShowError(true)\n return;\n }\n\n setCreatingCashRecord(true);\n\n fetch('/api/backend/payment-transaction/create-service-report-transactions/' + selectedItem.serviceReport.id + '/' + cashRecordAmount, {\n method: 'get',\n headers: {\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n },\n })\n .then(res => res.json())\n .then((result) => {\n if (result.responseCode === 0 && (result.payload === true || result.payload === false)) {\n selectedItem.paid = result.payload;\n } else {\n if (result.payload !== undefined && result.payload !== null) {\n setErrorMessage(result.payload);\n } else {\n setErrorMessage(\"Error\");\n }\n setShowError(true)\n }\n\n setCreatingCashRecord(false);\n setShowCashRecordDialog(false);\n }, (error) => {\n setErrorMessage(\"Error\");\n setShowError(true)\n \n setCreatingCashRecord(false);\n setShowCashRecordDialog(false);\n })\n } \n \n const handleClick = (event, item) => {\n setSelecteItem(item)\n setActionActiveStep(getStatusActiveStep(item))\n setOperations(item.serviceReport.operations)\n setServiceReportWorkingTimeValue(item.serviceReport.estimatedWorkingTime);\n setTowingServiceFeeValue(item.serviceReport.towingServiceFee == null ? 0 : item.serviceReport.towingServiceFee);\n setManHourFeeValue(item.serviceReport.manHourFee == null ? 0 : item.serviceReport.manHourFee);\n\n setServiceRemarkValue(item.serviceRemark);\n };\n\n const closeDialog = () => {\n setSelecteItem(undefined)\n setOperations([])\n setServiceReportWorkingTimeValue(0);\n setTowingServiceFeeValue(0);\n setManHourFeeValue(0);\n\n setServiceRemarkValue(\"\");\n };\n\n const handleChangePage = (event, newPage) => {\n setPage(newPage);\n if (hasPagination()) {\n loadData(newPage);\n }\n };\n\n const getPaymentMethodText = (autoService) => {\n switch (autoService.paymentMethod) {\n case 0:\n return \"Cash on Delivery\";\n case 1:\n return \"PayPal\";\n case 2:\n return \"Bank Deposit\"\n case 3:\n return \"Online Payment\"\n }\n }\n\n const getStatusText = (autoService) => {\n switch (autoService.status) {\n case 0:\n return \"Awaiting tow truck assignment\";\n\n case 1:\n return autoService.startMode == 1 ?\n (autoService.vehicleHasBeenTowed ? \"Awaiting car arrival\" : \"Tow truck is on its way\")\n : \"Awaiting car drop from user\";\n\n case 2:\n return \"Pending car diagnostics\";\n\n case 3:\n return \"Awaiting user confirmation\";\n\n case 4:\n return \"Service in progress\";\n\n case 5:\n return \"Service completed\";\n\n case 6:\n return \"Awaiting pick up\";\n\n case 7:\n return \"Awaiting delivery\";\n\n case 8:\n return \"Delivery is on its way\";\n\n case 9:\n return \"Vehicle returned\";\n\n case 10:\n return \"Finalized\";\n\n default:\n return \"Error\";\n }\n }\n\n const getStatusActiveStep = (autoService) => {\n switch (autoService.status) {\n case 0:\n return 0;\n\n case 1:\n return 0;\n\n case 2:\n return 1;\n\n case 3:\n return 1;\n\n case 4:\n return 2;\n\n case 5:\n return 2;\n\n case 6:\n return 3;\n\n case 7:\n return 3;\n\n case 8:\n return 3;\n\n default:\n return -1;\n }\n }\n \n const changeActiveStep = (step, disabled) => {\n if (!disabled) {\n setActionActiveStep(step)\n }\n }\n\n const handleChange = (panel) => (event, isExpanded) => {\n setExpanded(isExpanded ? panel : false);\n };\n\n const emptyRows = rowsPerPage - Math.min(rowsPerPage, rowsCount - page * rowsPerPage);\n\n\n \n\n\n return (\n /* ({\n ...base,\n height: '100%',\n width: '100%'\n })\n }}\n fadeSpeed={250}\n active={false}\n spinner\n text='Loading'>*/\n
\n \n Success!\n \n
\n \n \n \n \n \n \n \n {rows\n .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)\n .map((row, index) => {\n const labelId = `enhanced-table-checkbox-${index}`;\n\n return (\n handleClick(event, row)}\n role=\"checkbox\"\n tabIndex={-1}\n key={row.id}\n >\n \n \n \n \n {e.preventDefault(); setSelectedUser(row.userAccount);}}>{row.userFullName}\n \n {row.color + \" \" + row.brand + \" \" + row.model + \" (\" + ((() => {\n const licensePlate = row.licensePlateNumber.split(\"-\");\n if (licensePlate.length == 3) {\n return licensePlate[0] + \" \" + licensePlate[1] + \" \" + licensePlate[2];\n } else {\n return row.licensePlateNumber;\n }\n })()) + \")\"}\n 0 ? {color: \"blue\"} : {}} >{row.packageId > 0 ? 'Package' : 'Auto Service'}\n \n {row.cancelled ? (getStatusText(row) + \" (Cancelled)\") : getStatusText(row)}\n \n {(row.cancelled ? () : \n (row.backendActionNeeded ? () : ))}\n {Moment(new Date(row.creationDate)).format('DD MMMM YYYY')}\n \n );\n })}\n {emptyRows > 0 && (\n \n \n \n )}\n \n \n \n \n \n \n \n \n \n \n \n \n Auto Service\n \n {selectedItem !== undefined && selectedItem.status !== 10 && !selectedItem.cancelled &&\n }\n \n \n \n {(selectedItem !== undefined) ? (\n
\n \n \n \n {selectedItem.packageId > 0 ? \"Package Auto Service Info: \" : \"Auto Service Info\"}\n \n \n \n \n User Name\n \n {e.preventDefault(); setSelectedUser(selectedItem.userAccount);}}>\n \n {selectedItem.userFullName}\n \n \n
\n
\n
\n\n {selectedItem.status === 10 ? (<>\n
\n \n User Ratings:\n \n \n \n \n Delivery Time\n \n \n \n\n \n Overall Service\n \n \n \n\n \n Recovery\n \n \n \n\n \n Recovery Driver\n \n \n\n \n \n ) : null}\n
\n \n \n Vehicle Info:\n \n \n \n \n \n \n {(() => {\n let images = [];\n for (let i = 0; i < selectedItem.imageCount; i++) {\n images.push()\n }\n return images;\n })()}\n \n \n \n \n
\n\n \n\n \n {!selectedItem.cancelled ? <>\n \n
\n \n Actions\n \n
\n {selectedItem.status === 10 ? (<>\n } onDelete={() => {}} />\n ) : selectedItem.backendActionNeeded ? () : }\n
\n
\n\n {(selectedItem.status > 0) ? (\n
\n \n \n 1} onClick={() => changeActiveStep(0, selectedItem.status < 1)}>\n \n Vehicle Arrival\n \n \n
\n \n
\n
\n
\n\n 2} onClick={() => changeActiveStep(1, selectedItem.status < 2)}>\n \n Vehicle Diagnostics\n \n \n
\n {selectedItem.userLang === \"ar\" ? (<> \n
\n
\n
\n\n 4} onClick={() => changeActiveStep(2, selectedItem.status < 4)}>\n \n Service Progress\n \n \n
\n {selectedItem.userLang === \"ar\" ? (<> \n
\n
\n
\n\n = 9} onClick={() => changeActiveStep(3, selectedItem.status < 6)}>\n \n Vehicle Return\n \n \n
\n {selectedItem.status >= 9 ? (\n \n Vehicle returned to user \n \n ) : selectedItem.status === 6 ? (\n \n ) : selectedItem.status === 7 ? (\n \n Assign a tow truck in the Truck Assigner page to start delivery\n \n ) : (\n \n )}\n
\n\n
\n
\n\n
\n \n\n {selectedItem.status > 3 ? (<>\n \n
\n \n Invoice\n \n
\n {selectedItem.paid ? (<>\n } onDelete={() => {}} />\n ) : ()}\n
\n
\n
\n \n \n \n {selectedItem.packageId > 0 ? \"Package Title\" : 'Operation Title'}\n Price (AED)\n \n \n \n {selectedItem.serviceReport.operations.filter(o => o.accepted).map((row) => (\n \n {row.title}\n {row.price}\n \n ))}\n\n {selectedItem.packageId > 0 && \n {selectedItem.packageTitle}\n {selectedItem.packagePrice}\n }\n\n\n {selectedItem.startMode === 1 ? (\n <>\n \n \n Towing Service Fee\n \n {selectedItem.serviceReport.towingServiceFee}\n \n \n ) : null}\n\n \n \n Labour Charge\n \n {selectedItem.serviceReport.manHourFee}\n \n\n {/*\n \n Subtotal\n \n {(3)}\n */}\n\n {selectedItem.appliedCouponCode !== undefined && selectedItem.appliedCouponCode !== null && selectedItem.appliedCouponCode !== \"\" ? (\n <>\n \n \n Applied Coupon: {' ' + selectedItem.appliedCouponCode}\n {selectedItem.appliedCouponPercentage + '%'}\n {-selectedItem.couponDeduction}\n \n \n ) : null}\n \n {/*\n \n Tax\n {'5%'}\n {selectedItem.taxAmount}\n */}\n\n \n \n Total\n \n {selectedItem.totalAmount}\n \n \n
\n\n
\n ) : null}\n\n {selectedItem.status > 3 ? (<>\n \n
\n \n Transactions\n \n
\n \n {\n if (!creatingCashRecord) {\n setShowCashRecordDialog(false)\n }\n }} aria-labelledby=\"form-dialog-title\">\n Record Cash Transaction\n \n {/*\n To subscribe to this website, please enter your email address here. We will send updates\n occasionally.\n */}\n AED,\n }} \n value={cashRecordAmount}\n onChange={e => setCashRecordAmount(e.target.value)}\n disabled={creatingCashRecord}\n />\n \n \n \n \n \n \n
\n
\n
\n {!showCashRecordDialog ? : null}\n
\n ) : null}\n \n
\n\n
\n ) : (\n <>\n
\n Assign a tow truck in the Truck Assigner page \n
\n
\n \n )}\n : (\n <>\n
\n
\n Auto service is cancelled\n
\n
\n \n\n\n
\n
\n \n )}\n \n
\n ) : null}\n\n \n\n {/*\n Transaction History\n \n {selectedItem !== undefined ? : null*/}\n\n \n setShowError(false)} autoHideDuration={2500} anchorOrigin={{ vertical: 'top', horizontal: 'center' }} >\n \n {errorMessage}\n \n \n
\n setSelectedUser(undefined)} TransitionComponent={Transition}>\n \n \n setSelectedUser(undefined)} aria-label=\"close\">\n \n \n \n Account\n \n \n \n \n\n \n \n \n \n \n \n Account Info\n \n
\n\n {\n (selectedUser !== undefined && selectedUser.questions.length > 0) ? \n (\n
\n {selectedUser.questions\n .map((row, index) => {\n return (\n \n }\n aria-controls={('panel' + index) + \"bh-content\"}\n id={('panel' + index) + \"bh-header\"}>\n\n {row.question}\n {row.answer.length > 40 ? (row.answer.substring(0, 40) + \"...\") : row.answer}\n \n \n \n {row.answer}\n \n \n\n \n );\n })}\n
\n ) : (\n \n No account info exists\n \n )\n }\n\n
\n \n User Auto Services\n \n {selectedUser !== undefined ? : null}\n
\n {/*\n Owned Packages\n \n {this.state.selectedUser !== undefined ? : null}\n
*/}\n \n Transaction History\n \n {selectedUser !== undefined ? : null}\n\n
\n \n
\n
\n setShowSuccess(false)} autoHideDuration={2500} anchorOrigin={{ vertical: 'top', horizontal: 'center' }} >\n \n Success!\n \n \n
\n\n //\n\n );\n}","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { lighten, makeStyles } from '@material-ui/core/styles';\nimport Table from '@material-ui/core/Table';\nimport TableBody from '@material-ui/core/TableBody';\nimport TableCell from '@material-ui/core/TableCell';\nimport TableContainer from '@material-ui/core/TableContainer';\nimport TableHead from '@material-ui/core/TableHead';\nimport TablePagination from '@material-ui/core/TablePagination';\nimport TableRow from '@material-ui/core/TableRow';\nimport TableSortLabel from '@material-ui/core/TableSortLabel';\nimport Toolbar from '@material-ui/core/Toolbar';\nimport Typography from '@material-ui/core/Typography';\nimport Paper from '@material-ui/core/Paper';\nimport IconButton from '@material-ui/core/IconButton';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport Switch from '@material-ui/core/Switch';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport FilterListIcon from '@material-ui/icons/FilterList';\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport { Session } from 'bc-react-session';\nimport Dialog from '@material-ui/core/Dialog';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport ListItem from '@material-ui/core/ListItem';\nimport List from '@material-ui/core/List';\nimport Divider from '@material-ui/core/Divider';\nimport CloseIcon from '@material-ui/icons/Close';\nimport Slide from '@material-ui/core/Slide';\nimport AppBar from '@material-ui/core/AppBar';\nimport Button from '@material-ui/core/Button';\nimport TextField from '@material-ui/core/TextField';\nimport Box from '@material-ui/core/Box';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport ExpansionPanel from '@material-ui/core/ExpansionPanel';\nimport ExpansionPanelDetails from '@material-ui/core/ExpansionPanelDetails';\nimport ExpansionPanelSummary from '@material-ui/core/ExpansionPanelSummary';\nimport Moment from 'moment';\nimport AddCircleOutlineIcon from '@material-ui/icons/AddCircleOutline';\nimport AddBoxIcon from '@material-ui/icons/AddBox';\nimport Snackbar from '@material-ui/core/Snackbar';\nimport MuiAlert from '@material-ui/lab/Alert';\nimport InputAdornment from '@material-ui/core/InputAdornment';\nimport {DropzoneDialog} from 'material-ui-dropzone'\nimport PackagesView from './PackagesView';\nimport AutoServicesView from './AutoServicesView';\n\nfunction Alert(props) {\n return ;\n}\n\nconst Transition = React.forwardRef(function Transition(props, ref) {\n return ;\n });\n\nconst headCells = [\n { id: 'item', numeric: false, disablePadding: true, label: 'Item' },\n { id: 'user', numeric: false, disablePadding: false, label: 'User' },\n { id: 'method', numeric: false, disablePadding: false, label: 'Method' },\n { id: 'amount', numeric: false, disablePadding: false, label: 'Amount' },\n { id: 'date', numeric: false, disablePadding: false, label: 'Date' },\n];\n\nfunction FormPadding() {\n return ( <>

);\n} \n\nfunction EnhancedTableHead(props) {\n return (\n \n \n \n \n \n {headCells.map((headCell) => (\n \n {headCell.label}\n \n ))}\n \n \n );\n}\n\nEnhancedTableHead.propTypes = {\n classes: PropTypes.object.isRequired,\n rowCount: PropTypes.number.isRequired,\n};\n\nconst useToolbarStyles = makeStyles((theme) => ({\n root: {\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(1),\n },\n highlight:\n theme.palette.type === 'light'\n ? {\n color: theme.palette.secondary.main,\n backgroundColor: lighten(theme.palette.secondary.light, 0.85),\n }\n : {\n color: theme.palette.text.primary,\n backgroundColor: theme.palette.secondary.dark,\n },\n title: {\n flex: '1 1 100%',\n },\n}));\n\nconst EnhancedTableToolbar = (props) => {\n const classes = useToolbarStyles();\n \n return (\n \n {props.serviceReportId === undefined ? (\n \n Transactions\n \n ) : null}\n \n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n width: '100%',\n },\n paper: {\n width: '100%',\n marginBottom: theme.spacing(2),\n },\n table: {\n //minWidth: 750,\n },\n visuallyHidden: {\n border: 0,\n clip: 'rect(0 0 0 0)',\n height: 1,\n margin: -1,\n overflow: 'hidden',\n padding: 0,\n position: 'absolute',\n top: 20,\n width: 1,\n },\n progressBarRoot: { },\n appBar: {\n position: 'relative',\n },\n title: {\n marginLeft: theme.spacing(2),\n flex: 1,\n },\n fullWidth: {\n width: '100%',\n },\n heading: {\n fontSize: theme.typography.pxToRem(15),\n flexBasis: '33.33%',\n flexShrink: 0,\n },\n secondaryHeading: {\n fontSize: theme.typography.pxToRem(15),\n color: theme.palette.text.secondary,\n },\n dialogRoot: {\n height: '100%'\n },\n horizontalCenter: {\n width: '300px'\n }\n}));\n \nexport default function TransactionsView(props) {\n const classes = useStyles();\n const [page, setPage] = React.useState(0);\n const [loadedPages, setLoadedPages] = React.useState([]);\n const [rowsPerPage, setRowsPerPage] = React.useState(10);\n const [loading, setLoading] = React.useState(false);\n const [rows, setRows] = React.useState([]);\n const [rowsCount, setRowsCount] = React.useState(0);\n const [selectedItem, setSelecteItem] = React.useState(undefined);\n const [expanded, setExpanded] = React.useState(false);\n\n const [titleValue, setTitleValue] = React.useState(\"\");\n const [descriptionValue, setDescriptionValue] = React.useState(\"\");\n const [priceValue, setPriceValue] = React.useState(0);\n const [saving, setSaving] = React.useState(false);\n\n const [showSuccess, setShowSuccess] = React.useState(false);\n const [errorMessage, setErrorMessage] = React.useState(\"\");\n const [showError, setShowError] = React.useState(false);\n\n const [selectedUser, setSelectedUser] = React.useState(undefined);\n\n //const [showProfileUploadDialog, setShowProfileUploadDialog] = React.useState(false);\n\n /*props.loadData((data) => {\n setRows(data);\n setLoading(false);\n });*/\n\n const loadData = (page, ignoreLoadedPages) => {\n if ((ignoreLoadedPages === undefined || false) && loadedPages.includes(page)) {\n return;\n }\n\n //setRows([]);\n setLoading(true);\n\n var path;\n if (props.userId !== undefined) {\n path = '/api/backend/payment-transaction/get-user-payment-transactions/' + props.userId + '/' + page;\n } else if (props.packageId !== undefined) {\n path = '/api/backend/payment-transaction/get-package-payment-transactions/' + props.packageId + '/' + page;\n } else if (props.serviceReportId !== undefined) {\n path = '/api/backend/payment-transaction/get-service-report-transactions/' + props.serviceReportId + '/' + page;\n } else {\n path = '/api/backend/payment-transaction/get-payment-transactions/' + page;\n }\n\n fetch(path, {\n method: 'get',\n headers: {\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n }\n })\n .then(res => res.json())\n .then(\n (result) => {\n if (page === 0) {\n setRowsCount(result.total);\n }\n\n let r = rows;\n r = r.concat(result.list);\n setRows(r);\n \n\n let lP = loadedPages;\n lP.push(page);\n setLoadedPages(lP);\n\n\n setLoading(false);\n }, \n (error) => {\n setRows([]);\n setLoading(false);\n }\n )\n };\n\n useEffect(() => {\n loadData(page);\n }, [])\n\n /*const uploadProfileFile = (files) => {\n if (files !== undefined && files.length > 0) {\n setSaving(true)\n\n const data = new FormData();\n data.append('topic-thumbnail', files[0]);\n\n fetch('/api/backend/topic/upload-topic-thumbnail/' + selectedItem.id, {\n method: 'post',\n headers: {\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n },\n body: data\n })\n .then(res => res.text())\n .then(\n (result) => {\n if (result !== undefined && result === 'true') {\n setShowSuccess(true)\n closeDialog();\n loadData();\n } else {\n setShowError(true)\n }\n setSaving(false)\n }, \n (error) => {\n setShowError(true)\n setSaving(false)\n }\n )\n }\n };*/\n\n\n const handleClick = (event, item) => {\n /*setSelecteItem(item)\n setTitleValue(item.title);\n setDescriptionValue(item.description);\n setPriceValue(item.price);*/\n };\n\n const closeDialog = () => {\n setSelecteItem(undefined)\n setTitleValue('');\n setDescriptionValue('');\n setPriceValue(0);\n };\n\n const handleChangePage = (event, newPage) => {\n setPage(newPage);\n loadData(newPage);\n };\n\n const handleChange = (panel) => (event, isExpanded) => {\n setExpanded(isExpanded ? panel : false);\n };\n\n const emptyRows = rowsPerPage - Math.min(rowsPerPage, rowsCount - page * rowsPerPage);\n\n return (\n
\n \n Success!\n \n
\n \n \n \n \n \n \n \n {rows\n .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)\n .map((row, index) => {\n const labelId = `enhanced-table-checkbox-${index}`;\n return (\n handleClick(event, row)}\n role=\"checkbox\"\n tabIndex={-1}\n key={row.id}\n >\n \n \n \n \n {row.itemName}\n \n {e.preventDefault(); setSelectedUser(row.userAccount);}}>{row.userFullName}\n {row.type === 0 ? (\"PayPal (\" + row.transactionId + \")\") : (row.type === 3 ? (\"Online Payment (\" + row.transactionId + \")\") : \"Cash\")}\n {row.amount + (row.type === 0 ? \" USD\" : \" AED\")}\n {Moment(new Date(row.date)).format('DD MMMM YYYY')}\n \n );\n })}\n {emptyRows > 0 && (\n \n \n \n )}\n \n \n \n \n \n \n \n \n \n \n \n \n \n Transaction\n \n \n \n \n\n setTitleValue(e.target.value)} />\n \n setDescriptionValue(e.target.value)} />\n \n\n AED,\n }} disabled={saving} className={classes.fullWidth} color=\"secondary\" label=\"Price\" variant=\"filled\" \n value={priceValue} onChange={(e) => setPriceValue(e.target.value)} />\n \n \n {/*$,\n }} disabled={saving} className={classes.fullWidth} color=\"secondary\" label=\"Price\" variant=\"filled\" \n value={priceValue} onChange={(e) => setPriceValue(e.target.value)} />*/}\n\n {/*\n (selectedItem !== undefined && selectedItem.id > 0) ? \n (\n <>\n\n\n\n\n Uploaded Topic Thumbnail\n \n
\n \n
\n
\n
\n \n setShowProfileUploadDialog(false)}\n onSave={(files) => {setShowProfileUploadDialog(false); uploadProfileFile(files)}}\n maxFileSize={5000000}\n /> \n
\n\n \n \n\n\n \n Order History\n \n
\n\n {\n (selectedItem !== undefined && selectedItem.orderRecords.length > 0) ? \n (\n \n \n \n \n User\n Amount\n Date\n Paypal Order ID\n \n \n \n {selectedItem.orderRecords.map((row) => (\n \n \n {row.accountName}\n \n {row.paidAmount + \" \" + row.paidCurrency}\n {Moment(new Date(row.createdDate)).format('DD MMMM YYYY')}\n {row.paypalOrderId}\n \n ))}\n \n
\n
\n ) : (\n \n No orders exist\n \n )\n }\n\n
\n \n ) : (\n <>\n )\n */}\n \n\n
\n setShowError(false)} autoHideDuration={2500} anchorOrigin={{ vertical: 'top', horizontal: 'center' }} >\n \n {errorMessage}\n \n \n
\n setSelectedUser(undefined)} TransitionComponent={Transition}>\n \n \n setSelectedUser(undefined)} aria-label=\"close\">\n \n \n \n Account\n \n \n \n \n\n \n \n \n \n \n \n Account Info\n \n
\n\n {\n (selectedUser !== undefined && selectedUser.questions.length > 0) ? \n (\n
\n {selectedUser.questions\n .map((row, index) => {\n return (\n \n }\n aria-controls={('panel' + index) + \"bh-content\"}\n id={('panel' + index) + \"bh-header\"}>\n\n {row.question}\n {row.answer.length > 40 ? (row.answer.substring(0, 40) + \"...\") : row.answer}\n \n \n \n {row.answer}\n \n \n\n \n );\n })}\n
\n ) : (\n \n No account info exists\n \n )\n }\n\n
\n \n User Auto Services\n \n {selectedUser !== undefined ? : null}\n
\n {/*\n Owned Packages\n \n {this.state.selectedUser !== undefined ? : null}\n
*/}\n \n Transaction History\n \n {selectedUser !== undefined ? : null}\n\n
\n \n
\n
\n setShowSuccess(false)} autoHideDuration={2500} anchorOrigin={{ vertical: 'top', horizontal: 'center' }} >\n \n Success!\n \n \n
\n );\n}","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { lighten, makeStyles } from '@material-ui/core/styles';\nimport Table from '@material-ui/core/Table';\nimport TableBody from '@material-ui/core/TableBody';\nimport TableCell from '@material-ui/core/TableCell';\nimport TableContainer from '@material-ui/core/TableContainer';\nimport TableHead from '@material-ui/core/TableHead';\nimport TablePagination from '@material-ui/core/TablePagination';\nimport TableRow from '@material-ui/core/TableRow';\nimport TableSortLabel from '@material-ui/core/TableSortLabel';\nimport Toolbar from '@material-ui/core/Toolbar';\nimport Typography from '@material-ui/core/Typography';\nimport Paper from '@material-ui/core/Paper';\nimport IconButton from '@material-ui/core/IconButton';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport Switch from '@material-ui/core/Switch';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport FilterListIcon from '@material-ui/icons/FilterList';\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport { Session } from 'bc-react-session';\nimport Dialog from '@material-ui/core/Dialog';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport ListItem from '@material-ui/core/ListItem';\nimport List from '@material-ui/core/List';\nimport Divider from '@material-ui/core/Divider';\nimport CloseIcon from '@material-ui/icons/Close';\nimport Slide from '@material-ui/core/Slide';\nimport AppBar from '@material-ui/core/AppBar';\nimport Button from '@material-ui/core/Button';\nimport TextField from '@material-ui/core/TextField';\nimport Box from '@material-ui/core/Box';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport ExpansionPanel from '@material-ui/core/ExpansionPanel';\nimport ExpansionPanelDetails from '@material-ui/core/ExpansionPanelDetails';\nimport ExpansionPanelSummary from '@material-ui/core/ExpansionPanelSummary';\nimport Moment from 'moment';\nimport AddCircleOutlineIcon from '@material-ui/icons/AddCircleOutline';\nimport AddBoxIcon from '@material-ui/icons/AddBox';\nimport Snackbar from '@material-ui/core/Snackbar';\nimport MuiAlert from '@material-ui/lab/Alert';\nimport InputAdornment from '@material-ui/core/InputAdornment';\nimport {DropzoneDialog} from 'material-ui-dropzone'\nimport TransactionsView from './TransactionsView';\nimport AutoServicesView from './AutoServicesView';\n\nfunction Alert(props) {\n return ;\n}\n\nconst Transition = React.forwardRef(function Transition(props, ref) {\n return ;\n });\n\nconst headCells = [\n { id: 'title', numeric: false, disablePadding: true, label: 'Title' },\n { id: 'desc', numeric: false, disablePadding: false, label: 'Description' },\n { id: 'price', numeric: false, disablePadding: false, label: 'Price' },\n { id: 'status', numeric: false, disablePadding: false, label: 'Status' },\n];\n\nfunction FormPadding() {\n return ( <>

);\n} \n\nfunction EnhancedTableHead(props) {\n return (\n \n \n \n \n \n {headCells.map((headCell) => (\n \n {headCell.label}\n \n ))}\n \n \n );\n}\n\nEnhancedTableHead.propTypes = {\n classes: PropTypes.object.isRequired,\n rowCount: PropTypes.number.isRequired,\n};\n\nconst useToolbarStyles = makeStyles((theme) => ({\n root: {\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(1),\n },\n highlight:\n theme.palette.type === 'light'\n ? {\n color: theme.palette.secondary.main,\n backgroundColor: lighten(theme.palette.secondary.light, 0.85),\n }\n : {\n color: theme.palette.text.primary,\n backgroundColor: theme.palette.secondary.dark,\n },\n title: {\n flex: '1 1 100%',\n },\n}));\n\nconst EnhancedTableToolbar = (props) => {\n const classes = useToolbarStyles();\n \n return (\n \n {(\n \n Packages\n \n )}\n\n {props.onNew !== undefined ? (\n \n \n \n \n \n ) : null}\n \n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n width: '100%',\n },\n paper: {\n width: '100%',\n marginBottom: theme.spacing(2),\n },\n table: {\n //minWidth: 750,\n },\n visuallyHidden: {\n border: 0,\n clip: 'rect(0 0 0 0)',\n height: 1,\n margin: -1,\n overflow: 'hidden',\n padding: 0,\n position: 'absolute',\n top: 20,\n width: 1,\n },\n progressBarRoot: { },\n appBar: {\n position: 'relative',\n },\n title: {\n marginLeft: theme.spacing(2),\n flex: 1,\n },\n fullWidth: {\n width: '100%',\n },\n heading: {\n fontSize: theme.typography.pxToRem(15),\n flexBasis: '33.33%',\n flexShrink: 0,\n },\n secondaryHeading: {\n fontSize: theme.typography.pxToRem(15),\n color: theme.palette.text.secondary,\n },\n dialogRoot: {\n height: '100%'\n },\n horizontalCenter: {\n width: '300px'\n }\n}));\n \nexport default function PackagesView(props) {\n const classes = useStyles();\n const [page, setPage] = React.useState(0);\n const [loadedPages, setLoadedPages] = React.useState([]);\n const [rowsPerPage, setRowsPerPage] = React.useState(10);\n const [loading, setLoading] = React.useState(false);\n const [rows, setRows] = React.useState([]);\n const [rowsCount, setRowsCount] = React.useState(0);\n const [selectedItem, setSelecteItem] = React.useState(undefined);\n const [expanded, setExpanded] = React.useState(false);\n\n const [titleValue, setTitleValue] = React.useState(\"\");\n const [descriptionValue, setDescriptionValue] = React.useState(\"\");\n const [titleValueAr, setTitleValueAr] = React.useState(\"\");\n const [descriptionValueAr, setDescriptionValueAr] = React.useState(\"\");\n const [priceValue, setPriceValue] = React.useState(0);\n const [saving, setSaving] = React.useState(false);\n\n const [showSuccess, setShowSuccess] = React.useState(false);\n const [errorMessage, setErrorMessage] = React.useState(\"\");\n const [showError, setShowError] = React.useState(false);\n\n //const [showProfileUploadDialog, setShowProfileUploadDialog] = React.useState(false);\n\n /*props.loadData((data) => {\n setRows(data);\n setLoading(false);\n });*/\n\n const loadData = (page, ignoreLoadedPages) => {\n if ((ignoreLoadedPages === undefined || false) && loadedPages.includes(page)) {\n return;\n }\n\n //setRows([]);\n setLoading(true);\n\n fetch(props.userId !== undefined ? ('/api/backend/packages/get-owned-packages/' + props.userId + '/' + page) : '/api/backend/packages/get-packages/' + page, {\n method: 'get',\n headers: {\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n }\n })\n .then(res => res.json())\n .then(\n (result) => {\n if (page === 0) {\n setRowsCount(result.total);\n }\n\n let r = rows;\n r = r.concat(result.list);\n setRows(r);\n \n\n let lP = loadedPages;\n lP.push(page);\n setLoadedPages(lP);\n\n\n setLoading(false);\n }, \n (error) => {\n setRows([]);\n setLoading(false);\n }\n )\n };\n\n useEffect(() => {\n loadData(page);\n }, [])\n\n const saveData = () => {\n if (titleValue.trim() === \"\") {\n setErrorMessage(\"Title can not be empty\");\n setShowError(true)\n return;\n }\n\n if (descriptionValue.trim() === \"\") {\n setErrorMessage(\"Description can not be empty\");\n setShowError(true)\n return;\n }\n\n if (titleValueAr.trim() === \"\") {\n setErrorMessage(\"Title (Arabic) can not be empty\");\n setShowError(true)\n return;\n }\n\n if (descriptionValueAr.trim() === \"\") {\n setErrorMessage(\"Description (Arabic) can not be empty\");\n setShowError(true)\n return;\n }\n\n if (isNaN(priceValue) || ((priceValue.trim !== undefined ? priceValue.trim() : priceValue) === \"\")) {\n setErrorMessage(\"Price has to be a numeral value\");\n setShowError(true)\n return;\n }\n\n setSaving(true)\n\n fetch('/api/backend/packages/save', {\n method: 'post',\n headers: {\n \"Content-Type\": \"application/json\",\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n },\n body: JSON.stringify({\n id: selectedItem.id,\n title: titleValue,\n description: descriptionValue,\n titleAr: titleValueAr,\n descriptionAr: descriptionValueAr,\n price: priceValue\n })\n })\n .then(res => res.json())\n .then(\n (result) => {\n if (result.responseCode === 0) {\n setShowSuccess(true)\n closeDialog();\n\n var updated = false;\n for (var i = 0; i < rows.length; i++) {\n if (rows[i].id === result.payload.id) {\n rows[i] = result.payload;\n updated = true;\n break;\n }\n }\n if (!updated) {\n setRowsCount(rowsCount + 1);\n\n rows.unshift(result.payload);\n if (rows.length > 1) {\n if ((rows.length - 1) % 10 === 0) {\n rows.pop();\n }\n }\n\n setPage(0);\n }\n } else {\n if (result.payload !== undefined && result.payload !== null) {\n setErrorMessage(result.payload);\n } else {\n setErrorMessage(\"Error\");\n }\n setShowError(true)\n }\n setSaving(false)\n }, \n (error) => {\n setErrorMessage(\"Error\");\n setShowError(true)\n\n setSaving(false)\n }\n )\n\n };\n\n const disableUser = () => {\n setSaving(true)\n\n fetch('/api/backend/packages/disable/' + selectedItem.id, {\n method: 'get',\n headers: {\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n },\n })\n .then(res => res.json())\n .then(\n (result) => {\n if (result.responseCode === 0) {\n setShowSuccess(true)\n closeDialog();\n\n for (var i = 0; i < rows.length; i++) {\n if (rows[i].id === result.payload.id) {\n rows[i] = result.payload;\n break;\n }\n }\n } else {\n if (result.payload !== undefined && result.payload !== null) {\n setErrorMessage(result.payload);\n } else {\n setErrorMessage(\"Error\");\n }\n setShowError(true)\n }\n setSaving(false)\n }, \n (error) => {\n setErrorMessage(\"Error\");\n setShowError(true)\n\n setSaving(false)\n }\n )\n }\n\n const enableUser = () => {\n setSaving(true)\n\n fetch('/api/backend/packages/enable/' + selectedItem.id, {\n method: 'get',\n headers: {\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n },\n })\n .then(res => res.json())\n .then(\n (result) => {\n if (result.responseCode === 0) {\n setShowSuccess(true)\n closeDialog();\n\n for (var i = 0; i < rows.length; i++) {\n if (rows[i].id === result.payload.id) {\n rows[i] = result.payload;\n break;\n }\n }\n } else {\n if (result.payload !== undefined && result.payload !== null) {\n setErrorMessage(result.payload);\n } else {\n setErrorMessage(\"Error\");\n }\n setShowError(true)\n }\n setSaving(false)\n }, \n (error) => {\n setErrorMessage(\"Error\");\n setShowError(true)\n\n setSaving(false)\n }\n )\n }\n\n /*const uploadProfileFile = (files) => {\n if (files !== undefined && files.length > 0) {\n setSaving(true)\n\n const data = new FormData();\n data.append('topic-thumbnail', files[0]);\n\n fetch('/api/backend/topic/upload-topic-thumbnail/' + selectedItem.id, {\n method: 'post',\n headers: {\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n },\n body: data\n })\n .then(res => res.text())\n .then(\n (result) => {\n if (result !== undefined && result === 'true') {\n setShowSuccess(true)\n closeDialog();\n loadData();\n } else {\n setShowError(true)\n }\n setSaving(false)\n }, \n (error) => {\n setShowError(true)\n setSaving(false)\n }\n )\n }\n };*/\n\nconst onNew = () => {\n var item = {\n id: 0,\n title: '',\n description: '',\n price: 0,\n }\n\n setSelecteItem(item)\n setTitleValue(item.title);\n setDescriptionValue(item.description);\n setTitleValueAr(item.titleAr);\n setDescriptionValueAr(item.descriptionAr);\n setPriceValue(item.price);\n}\n\n const handleClick = (event, item) => {\n setSelecteItem(item)\n setTitleValue(item.title);\n setDescriptionValue(item.description);\n setTitleValueAr(item.titleAr);\n setDescriptionValueAr(item.descriptionAr);\n setPriceValue(item.price);\n };\n\n const closeDialog = () => {\n setSelecteItem(undefined)\n setTitleValue('');\n setDescriptionValue('');\n setTitleValueAr('');\n setDescriptionValueAr('');\n setPriceValue(0);\n };\n\n const handleChangePage = (event, newPage) => {\n setPage(newPage);\n loadData(newPage);\n };\n\n const emptyRows = rowsPerPage - Math.min(rowsPerPage, rowsCount - page * rowsPerPage);\n\n return (\n
\n \n Success!\n \n
\n \n \n \n \n \n \n \n {rows\n .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)\n .map((row, index) => {\n const labelId = `enhanced-table-checkbox-${index}`;\n\n return (\n handleClick(event, row)}\n role=\"checkbox\"\n tabIndex={-1}\n key={row.id}\n >\n \n \n \n \n {row.title}\n \n {row.description}\n {row.price + \" AED\"}\n {row.disable ? 'Disabled' : 'Active'}\n \n );\n })}\n {emptyRows > 0 && (\n \n \n \n )}\n \n \n \n \n \n \n \n \n \n \n \n \n \n Package\n \n\n {(selectedItem !== undefined && selectedItem.id > 0) ? (\n selectedItem.disable ? (\n \n ) : (\n \n )\n ) : null}\n \n {props.userId === undefined ? (\n \n ) : null}\n \n \n \n\n setTitleValue(e.target.value)} />\n \n setDescriptionValue(e.target.value)} inputProps={{maxLength: 512}} />\n \n \n\n setTitleValueAr(e.target.value)} />\n \n setDescriptionValueAr(e.target.value)} inputProps={{maxLength: 512}} />\n \n \n\n AED,\n }} disabled={saving} className={classes.fullWidth} color=\"secondary\" label=\"Price\" variant=\"filled\" \n value={priceValue} onChange={(e) => setPriceValue(e.target.value)} />\n \n\n {/*\n Transaction History\n \n {selectedItem !== undefined ? : null}*/}\n \n \n Package Auto Services\n \n {selectedItem !== undefined ? : null}\n
\n \n {/*$,\n }} disabled={saving} className={classes.fullWidth} color=\"secondary\" label=\"Price\" variant=\"filled\" \n value={priceValue} onChange={(e) => setPriceValue(e.target.value)} />*/}\n\n {/*\n (selectedItem !== undefined && selectedItem.id > 0) ? \n (\n <>\n\n\n\n\n Uploaded Topic Thumbnail\n \n
\n \n
\n
\n
\n \n setShowProfileUploadDialog(false)}\n onSave={(files) => {setShowProfileUploadDialog(false); uploadProfileFile(files)}}\n maxFileSize={5000000}\n /> \n
\n\n \n \n\n\n \n Order History\n \n
\n\n {\n (selectedItem !== undefined && selectedItem.orderRecords.length > 0) ? \n (\n \n \n \n \n User\n Amount\n Date\n Paypal Order ID\n \n \n \n {selectedItem.orderRecords.map((row) => (\n \n \n {row.accountName}\n \n {row.paidAmount + \" \" + row.paidCurrency}\n {Moment(new Date(row.createdDate)).format('DD MMMM YYYY')}\n {row.paypalOrderId}\n \n ))}\n \n
\n
\n ) : (\n \n No orders exist\n \n )\n }\n\n
\n \n ) : (\n <>\n )\n */}\n \n\n
\n setShowError(false)} autoHideDuration={2500} anchorOrigin={{ vertical: 'top', horizontal: 'center' }} >\n \n {errorMessage}\n \n \n
\n setShowSuccess(false)} autoHideDuration={2500} anchorOrigin={{ vertical: 'top', horizontal: 'center' }} >\n \n Success!\n \n \n
\n );\n}","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { lighten, makeStyles } from '@material-ui/core/styles';\nimport Table from '@material-ui/core/Table';\nimport TableBody from '@material-ui/core/TableBody';\nimport TableCell from '@material-ui/core/TableCell';\nimport TableContainer from '@material-ui/core/TableContainer';\nimport TableHead from '@material-ui/core/TableHead';\nimport TablePagination from '@material-ui/core/TablePagination';\nimport TableRow from '@material-ui/core/TableRow';\nimport TableSortLabel from '@material-ui/core/TableSortLabel';\nimport Toolbar from '@material-ui/core/Toolbar';\nimport Typography from '@material-ui/core/Typography';\nimport Paper from '@material-ui/core/Paper';\nimport IconButton from '@material-ui/core/IconButton';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport Switch from '@material-ui/core/Switch';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport FilterListIcon from '@material-ui/icons/FilterList';\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport { Session } from 'bc-react-session';\nimport Dialog from '@material-ui/core/Dialog';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport ListItem from '@material-ui/core/ListItem';\nimport List from '@material-ui/core/List';\nimport Divider from '@material-ui/core/Divider';\nimport CloseIcon from '@material-ui/icons/Close';\nimport Slide from '@material-ui/core/Slide';\nimport AppBar from '@material-ui/core/AppBar';\nimport Button from '@material-ui/core/Button';\nimport TextField from '@material-ui/core/TextField';\nimport Box from '@material-ui/core/Box';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport ExpansionPanel from '@material-ui/core/ExpansionPanel';\nimport ExpansionPanelDetails from '@material-ui/core/ExpansionPanelDetails';\nimport ExpansionPanelSummary from '@material-ui/core/ExpansionPanelSummary';\nimport Moment from 'moment';\nimport PackagesView from './PackagesView';\nimport TransactionsView from './TransactionsView';\nimport AutoServicesView from './AutoServicesView';\nimport Alert from '@material-ui/lab/Alert';\nimport { DialogActions, DialogContent, DialogTitle, Snackbar } from '@material-ui/core';\n\nconst Transition = React.forwardRef(function Transition(props, ref) {\n return ;\n });\n\nconst headCells = [\n { id: 'fullName', numeric: false, disablePadding: true, label: 'Full Name' },\n { id: 'email', numeric: false, disablePadding: false, label: 'Email Address' },\n { id: 'status', numeric: false, disablePadding: false, label: 'Status' },\n];\n\nfunction FormPadding() {\n return ( <>

);\n} \n\nfunction EnhancedTableHead(props) {\n return (\n \n \n \n \n \n {headCells.map((headCell) => (\n \n {headCell.label}\n \n ))}\n \n \n );\n}\n\nEnhancedTableHead.propTypes = {\n classes: PropTypes.object.isRequired,\n rowCount: PropTypes.number.isRequired,\n};\n\nconst useToolbarStyles = makeStyles((theme) => ({\n root: {\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(1),\n },\n highlight:\n theme.palette.type === 'light'\n ? {\n color: theme.palette.secondary.main,\n backgroundColor: lighten(theme.palette.secondary.light, 0.85),\n }\n : {\n color: theme.palette.text.primary,\n backgroundColor: theme.palette.secondary.dark,\n },\n title: {\n flex: '1 1 100%',\n },\n}));\n\nconst EnhancedTableToolbar = (props) => {\n const classes = useToolbarStyles();\n \n return (\n \n {(\n \n Customers\n \n )}\n\n {/*(\n \n \n \n \n \n )*/}\n \n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n width: '100%',\n },\n paper: {\n width: '100%',\n marginBottom: theme.spacing(2),\n },\n table: {\n //minWidth: 750,\n },\n visuallyHidden: {\n border: 0,\n clip: 'rect(0 0 0 0)',\n height: 1,\n margin: -1,\n overflow: 'hidden',\n padding: 0,\n position: 'absolute',\n top: 20,\n width: 1,\n },\n progressBarRoot: { },\n appBar: {\n position: 'relative',\n },\n title: {\n marginLeft: theme.spacing(2),\n flex: 1,\n },\n fullWidth: {\n width: '100%',\n },\n heading: {\n fontSize: theme.typography.pxToRem(15),\n flexBasis: '33.33%',\n flexShrink: 0,\n },\n secondaryHeading: {\n fontSize: theme.typography.pxToRem(15),\n color: theme.palette.text.secondary,\n },\n dialogRoot: {\n height: '100%'\n }\n}));\n \nexport default function UsersView(props) {\n const classes = useStyles();\n const [page, setPage] = React.useState(0);\n const [loadedPages, setLoadedPages] = React.useState([]);\n const [rowsPerPage, setRowsPerPage] = React.useState(10);\n const [loading, setLoading] = React.useState(true);\n const [rows, setRows] = React.useState([]);\n const [rowsCount, setRowsCount] = React.useState(0);\n const [selectedUser, setSelectedUser] = React.useState(undefined);\n const [expanded, setExpanded] = React.useState(false);\n\n const [saving, setSaving] = React.useState(false);\n const [showSuccess, setShowSuccess] = React.useState(false);\n const [errorMessage, setErrorMessage] = React.useState(\"\");\n const [showError, setShowError] = React.useState(false);\n\n const [showSetReferCodeDialog, setShowSetReferCodeDialog] = React.useState(false);\n const [settingReferCode, setSettingReferCode] = React.useState(false);\n const [userReferCode, setUserReferCode] = React.useState(0);\n\n const handleChange = (panel) => (event, isExpanded) => {\n setExpanded(isExpanded ? panel : false);\n };\n\n const loadData = (page) => {\n if (loadedPages.includes(page)) {\n return;\n }\n\n //setRows([]);\n setLoading(true);\n\n fetch('/api/backend/account/get-users/' + page, {\n method: 'get',\n headers: {\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n }\n })\n .then(res => res.json())\n .then(\n (result) => {\n if (page === 0) {\n setRowsCount(result.total);\n }\n\n let r = rows;\n r = r.concat(result.list);\n setRows(r);\n \n\n let lP = loadedPages;\n lP.push(page);\n setLoadedPages(lP);\n\n\n \n setLoading(false);\n }, \n (error) => {\n setRows([]);\n setLoading(false);\n }\n )\n };\n\n useEffect(() => {\n loadData(page);\n }, [])\n\n const handleClick = (event, user) => {\n setSelectedUser(user)\n setUserReferCode(user.friendReferCode !== null ? user.friendReferCode : \"\")\n };\n\n const closeDialog = () => {\n setSelectedUser(undefined);\n };\n\n const handleChangePage = (event, newPage) => {\n setPage(newPage);\n loadData(newPage);\n };\n\n const handleChangeRowsPerPage = (event) => {\n setRowsPerPage(parseInt(event.target.value, 10));\n setPage(0);\n };\n\n const disableUser = () => {\n setSaving(true)\n\n fetch('/api/backend/account/disable/' + selectedUser.id, {\n method: 'get',\n headers: {\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n },\n })\n .then(res => res.json())\n .then(\n (result) => {\n if (result.responseCode === 0) {\n setShowSuccess(true)\n closeDialog();\n\n for (var i = 0; i < rows.length; i++) {\n if (rows[i].id === result.payload.id) {\n rows[i] = result.payload;\n break;\n }\n }\n } else {\n if (result.payload !== undefined && result.payload !== null) {\n setErrorMessage(result.payload);\n } else {\n setErrorMessage(\"Error\");\n }\n setShowError(true)\n }\n setSaving(false)\n }, \n (error) => {\n setErrorMessage(\"Error\");\n setShowError(true)\n\n setSaving(false)\n }\n )\n }\n\n const enableUser = () => {\n setSaving(true)\n\n fetch('/api/backend/account/enable/' + selectedUser.id, {\n method: 'get',\n headers: {\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n },\n })\n .then(res => res.json())\n .then(\n (result) => {\n if (result.responseCode === 0) {\n setShowSuccess(true)\n closeDialog();\n\n for (var i = 0; i < rows.length; i++) {\n if (rows[i].id === result.payload.id) {\n rows[i] = result.payload;\n break;\n }\n }\n } else {\n if (result.payload !== undefined && result.payload !== null) {\n setErrorMessage(result.payload);\n } else {\n setErrorMessage(\"Error\");\n }\n setShowError(true)\n }\n setSaving(false)\n }, \n (error) => {\n setErrorMessage(\"Error\");\n setShowError(true)\n\n setSaving(false)\n }\n )\n }\n\n const onSetReferCodeBtn = () => {\n setSettingReferCode(true);\n\n fetch('/api/backend/account/set-refer-code/' + selectedUser.id, {\n method: 'post',\n body: JSON.stringify({\n content: userReferCode\n }),\n headers: {\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n \"Content-Type\": \"application/json\"\n },\n })\n .then(res => res.json())\n .then(\n (result) => {\n if (result.responseCode === 0) {\n setShowSuccess(true)\n setShowSetReferCodeDialog(false);\n\n if (selectedUser !== undefined) {\n selectedUser.friendReferCode = userReferCode;\n }\n } else {\n if (result.payload !== undefined && result.payload !== null) {\n setErrorMessage(result.payload);\n } else {\n setErrorMessage(\"Error\");\n }\n setShowError(true)\n }\n setSettingReferCode(false)\n }, \n (error) => {\n setErrorMessage(\"Error\");\n setShowError(true)\n\n setSettingReferCode(false)\n }\n )\n }\n\n const emptyRows = rowsPerPage - Math.min(rowsPerPage, rowsCount - page * rowsPerPage);\n\n return (\n
\n \n Success!\n \n
\n \n \n \n \n \n \n \n {rows\n .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)\n .map((row, index) => {\n const labelId = `enhanced-table-checkbox-${index}`;\n\n return (\n handleClick(event, row)}\n role=\"checkbox\"\n tabIndex={-1}\n key={row.id}\n >\n \n \n \n \n {row.fullName}\n \n {row.email}\n {row.disable ? 'Disabled' : 'Active'}\n \n );\n })}\n {emptyRows > 0 && (\n \n \n \n )}\n \n \n \n \n \n \n \n \n \n \n \n \n Customer\n \n \n {(selectedUser !== undefined && selectedUser.id > 0) ? (\n selectedUser.disable ? (\n \n ) : (\n \n )\n ) : null}\n {/*(\n #f3f3f3\n \n )*/}\n \n \n \n\n \n \n \n \n\n
\n \n
\n \n
\n \n\n {/*( } label=\"Enabled\" />\n )*/}\n \n Account Info\n \n
\n\n {\n (selectedUser !== undefined && selectedUser.questions.length > 0) ? \n (\n
\n {selectedUser.questions\n .map((row, index) => {\n return (\n \n }\n aria-controls={('panel' + index) + \"bh-content\"}\n id={('panel' + index) + \"bh-header\"}>\n\n {row.question}\n {row.answer.length > 40 ? (row.answer.substring(0, 40) + \"...\") : row.answer}\n \n \n \n {row.answer}\n \n \n\n \n );\n })}\n
\n ) : (\n \n No account info exists\n \n )\n }\n\n
\n \n User Auto Services\n \n {selectedUser !== undefined ? : null}\n
\n {/*\n Owned Packages\n \n {this.state.selectedUser !== undefined ? : null}\n
*/}\n \n Transaction History\n \n {selectedUser !== undefined ? : null}\n\n {/*
\n \n Order History\n \n
*/}\n\n {/*\n (selectedUser !== undefined && selectedUser.orderRecords.length > 0) ? \n (\n \n \n \n \n Topic\n Amount\n Date\n Paypal Order ID\n \n \n \n {selectedUser.orderRecords.map((row) => (\n \n \n {row.topicTitle}\n \n {row.paidAmount + \" \" + row.paidCurrency}\n {Moment(new Date(row.createdDate)).format('DD MMMM YYYY')}\n {row.paypalOrderId}\n \n ))}\n \n
\n
\n ) : (\n \n No orders exist\n \n )\n */}\n\n
\n\n {\n if (!settingReferCode) {\n if (selectedUser !== undefined) {\n setUserReferCode(selectedUser.friendReferCode !== null ? selectedUser.friendReferCode : \"\")\n }\n setShowSetReferCodeDialog(false)\n }\n }} aria-labelledby=\"form-dialog-title\">\n Set Referral Code\n \n {/*\n To subscribe to this website, please enter your email address here. We will send updates\n occasionally.\n */}\n setUserReferCode(e.target.value)}\n disabled={settingReferCode}\n />\n \n \n \n \n \n \n \n \n setShowError(false)} autoHideDuration={2500} anchorOrigin={{ vertical: 'top', horizontal: 'center' }} >\n \n {errorMessage}\n \n \n
\n setShowSuccess(false)} autoHideDuration={2500} anchorOrigin={{ vertical: 'top', horizontal: 'center' }} >\n \n Success!\n \n \n
\n );\n}","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { lighten, makeStyles } from '@material-ui/core/styles';\nimport Table from '@material-ui/core/Table';\nimport TableBody from '@material-ui/core/TableBody';\nimport TableCell from '@material-ui/core/TableCell';\nimport TableContainer from '@material-ui/core/TableContainer';\nimport TableHead from '@material-ui/core/TableHead';\nimport TablePagination from '@material-ui/core/TablePagination';\nimport TableRow from '@material-ui/core/TableRow';\nimport TableSortLabel from '@material-ui/core/TableSortLabel';\nimport Toolbar from '@material-ui/core/Toolbar';\nimport Typography from '@material-ui/core/Typography';\nimport Paper from '@material-ui/core/Paper';\nimport IconButton from '@material-ui/core/IconButton';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport Switch from '@material-ui/core/Switch';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport FilterListIcon from '@material-ui/icons/FilterList';\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport { Session } from 'bc-react-session';\nimport Dialog from '@material-ui/core/Dialog';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport ListItem from '@material-ui/core/ListItem';\nimport List from '@material-ui/core/List';\nimport Divider from '@material-ui/core/Divider';\nimport CloseIcon from '@material-ui/icons/Close';\nimport Slide from '@material-ui/core/Slide';\nimport AppBar from '@material-ui/core/AppBar';\nimport Button from '@material-ui/core/Button';\nimport TextField from '@material-ui/core/TextField';\nimport Box from '@material-ui/core/Box';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport ExpansionPanel from '@material-ui/core/ExpansionPanel';\nimport ExpansionPanelDetails from '@material-ui/core/ExpansionPanelDetails';\nimport ExpansionPanelSummary from '@material-ui/core/ExpansionPanelSummary';\nimport Moment from 'moment';\nimport AddCircleOutlineIcon from '@material-ui/icons/AddCircleOutline';\nimport AddBoxIcon from '@material-ui/icons/AddBox';\nimport Snackbar from '@material-ui/core/Snackbar';\nimport MuiAlert from '@material-ui/lab/Alert';\nimport InputAdornment from '@material-ui/core/InputAdornment';\nimport {DropzoneDialog} from 'material-ui-dropzone'\n\nfunction Alert(props) {\n return ;\n}\n\nconst Transition = React.forwardRef(function Transition(props, ref) {\n return ;\n });\n\nconst headCells = [\n { id: 'code', numeric: false, disablePadding: true, label: 'Code' },\n { id: 'percent', numeric: false, disablePadding: false, label: 'Percentage' },\n { id: 'uses', numeric: false, disablePadding: false, label: 'Uses' },\n { id: 'max-uses', numeric: false, disablePadding: false, label: 'Max Uses' },\n { id: 'status', numeric: false, disablePadding: false, label: 'Status' },\n];\n\nfunction FormPadding() {\n return ( <>

);\n} \n\nfunction EnhancedTableHead(props) {\n return (\n \n \n \n \n \n {headCells.map((headCell) => (\n \n {headCell.label}\n \n ))}\n \n \n );\n}\n\nEnhancedTableHead.propTypes = {\n classes: PropTypes.object.isRequired,\n rowCount: PropTypes.number.isRequired,\n};\n\nconst useToolbarStyles = makeStyles((theme) => ({\n root: {\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(1),\n },\n highlight:\n theme.palette.type === 'light'\n ? {\n color: theme.palette.secondary.main,\n backgroundColor: lighten(theme.palette.secondary.light, 0.85),\n }\n : {\n color: theme.palette.text.primary,\n backgroundColor: theme.palette.secondary.dark,\n },\n title: {\n flex: '1 1 100%',\n },\n}));\n\nconst EnhancedTableToolbar = (props) => {\n const classes = useToolbarStyles();\n \n return (\n \n {(\n \n Coupons\n \n )}\n\n {(\n \n \n \n \n \n )}\n \n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n width: '100%',\n },\n paper: {\n width: '100%',\n marginBottom: theme.spacing(2),\n },\n table: {\n //minWidth: 750,\n },\n visuallyHidden: {\n border: 0,\n clip: 'rect(0 0 0 0)',\n height: 1,\n margin: -1,\n overflow: 'hidden',\n padding: 0,\n position: 'absolute',\n top: 20,\n width: 1,\n },\n progressBarRoot: { },\n appBar: {\n position: 'relative',\n },\n title: {\n marginLeft: theme.spacing(2),\n flex: 1,\n },\n fullWidth: {\n width: '100%',\n },\n heading: {\n fontSize: theme.typography.pxToRem(15),\n flexBasis: '33.33%',\n flexShrink: 0,\n },\n secondaryHeading: {\n fontSize: theme.typography.pxToRem(15),\n color: theme.palette.text.secondary,\n },\n dialogRoot: {\n height: '100%'\n },\n horizontalCenter: {\n width: '300px'\n }\n}));\n \nexport default function CouponsView(props) {\n const classes = useStyles();\n const [page, setPage] = React.useState(0);\n const [loadedPages, setLoadedPages] = React.useState([]);\n const [rowsPerPage, setRowsPerPage] = React.useState(10);\n const [loading, setLoading] = React.useState(false);\n const [rows, setRows] = React.useState([]);\n const [rowsCount, setRowsCount] = React.useState(0);\n const [selectedItem, setSelecteItem] = React.useState(undefined);\n const [expanded, setExpanded] = React.useState(false);\n\n const [codeValue, setCodeValue] = React.useState(\"\");\n const [percentValue, setPercentValue] = React.useState(0);\n const [maxUsesValue, setMaxUsesValue] = React.useState(0);\n const [revokedValue, setRevokedValue] = React.useState(false);\n const [saving, setSaving] = React.useState(false);\n\n const [showSuccess, setShowSuccess] = React.useState(false);\n const [errorMessage, setErrorMessage] = React.useState(\"\");\n const [showError, setShowError] = React.useState(false);\n\n //const [showProfileUploadDialog, setShowProfileUploadDialog] = React.useState(false);\n\n /*props.loadData((data) => {\n setRows(data);\n setLoading(false);\n });*/\n\n const loadData = (page, ignoreLoadedPages) => {\n if ((ignoreLoadedPages === undefined || false) && loadedPages.includes(page)) {\n return;\n }\n\n //setRows([]);\n setLoading(true);\n\n fetch('/api/backend/coupon/get-coupons/' + page, {\n method: 'get',\n headers: {\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n }\n })\n .then(res => res.json())\n .then(\n (result) => {\n if (page === 0) {\n setRowsCount(result.total);\n }\n\n let r = rows;\n r = r.concat(result.list);\n setRows(r);\n \n\n let lP = loadedPages;\n lP.push(page);\n setLoadedPages(lP);\n\n\n setLoading(false);\n }, \n (error) => {\n setRows([]);\n setLoading(false);\n }\n )\n };\n\n useEffect(() => {\n loadData(page);\n }, [])\n\n const saveData = () => {\n if (codeValue.trim() === \"\") {\n setErrorMessage(\"Code can not be empty\");\n setShowError(true)\n return;\n }\n\n if (isNaN(percentValue) || ((percentValue.trim !== undefined ? percentValue.trim() : percentValue) === \"\")) {\n setErrorMessage(\"Percent has to be a numeral value\");\n setShowError(true)\n return;\n }\n\n if (isNaN(maxUsesValue) || ((maxUsesValue.trim !== undefined ? maxUsesValue.trim() : maxUsesValue) === \"\")) {\n setErrorMessage(\"Max uses has to be a numeral value\");\n setShowError(true)\n return;\n }\n\n setSaving(true)\n\n fetch('/api/backend/coupon/save', {\n method: 'post',\n headers: {\n \"Content-Type\": \"application/json\",\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n },\n body: JSON.stringify({\n id: selectedItem.id,\n code: codeValue,\n percent: percentValue,\n maxUses: maxUsesValue,\n revoked: revokedValue\n })\n })\n .then(res => res.json())\n .then(\n (result) => {\n if (result.responseCode === 0) {\n setShowSuccess(true)\n closeDialog();\n\n var updated = false;\n for (var i = 0; i < rows.length; i++) {\n if (rows[i].id === result.payload.id) {\n rows[i] = result.payload;\n updated = true;\n break;\n }\n }\n if (!updated) {\n setRowsCount(rowsCount + 1);\n\n rows.unshift(result.payload);\n if (rows.length > 1) {\n if ((rows.length - 1) % 10 === 0) {\n rows.pop();\n }\n }\n\n setPage(0);\n }\n } else {\n if (result.payload !== undefined && result.payload !== null) {\n setErrorMessage(result.payload);\n } else {\n setErrorMessage(\"Error\");\n }\n setShowError(true)\n }\n setSaving(false)\n }, \n (error) => {\n setErrorMessage(\"Error\");\n setShowError(true)\n\n setSaving(false)\n }\n )\n\n };\n\n const deleteData = () => {\n if (!window.confirm('Are you sure you want to delete this coupon?')) {\n return;\n }\n\n setSaving(true)\n\n fetch('/api/backend/coupon/delete/' + selectedItem.id, {\n method: 'get',\n headers: {\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n },\n })\n .then(res => res.json())\n .then(\n (result) => {\n if (result.responseCode === 0) {\n setShowSuccess(true)\n closeDialog();\n\n \n for (var i = 0; i < rows.length; i++) {\n if (rows[i].id === selectedItem.id) {\n rows.splice(i, 1);\n break;\n }\n } \n } else {\n if (result.payload !== undefined && result.payload !== null) {\n setErrorMessage(result.payload);\n } else {\n setErrorMessage(\"Error\");\n }\n setShowError(true)\n }\n setSaving(false)\n }, \n (error) => {\n setErrorMessage(\"Error\");\n setShowError(true)\n\n setSaving(false)\n }\n )\n\n };\n\n\n /*const uploadProfileFile = (files) => {\n if (files !== undefined && files.length > 0) {\n setSaving(true)\n\n const data = new FormData();\n data.append('topic-thumbnail', files[0]);\n\n fetch('/api/backend/topic/upload-topic-thumbnail/' + selectedItem.id, {\n method: 'post',\n headers: {\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n },\n body: data\n })\n .then(res => res.text())\n .then(\n (result) => {\n if (result !== undefined && result === 'true') {\n setShowSuccess(true)\n closeDialog();\n loadData();\n } else {\n setShowError(true)\n }\n setSaving(false)\n }, \n (error) => {\n setShowError(true)\n setSaving(false)\n }\n )\n }\n };*/\n\nconst onNew = () => {\n var item = {\n id: 0,\n code: '',\n percent: 0,\n maxUses: 0,\n uses: 0,\n revoked: false,\n }\n\n setSelecteItem(item)\n setCodeValue(item.code);\n setPercentValue(item.percent);\n setMaxUsesValue(item.maxUses);\n setRevokedValue(item.revoked);\n}\n\n const handleClick = (event, item) => {\n setSelecteItem(item)\n setCodeValue(item.code);\n setPercentValue(item.percent);\n setMaxUsesValue(item.maxUses);\n setRevokedValue(item.revoked);\n };\n\n const closeDialog = () => {\n setSelecteItem(undefined)\n setCodeValue('');\n setPercentValue(0);\n setMaxUsesValue(0);\n setRevokedValue(0);\n };\n\n const handleChangePage = (event, newPage) => {\n setPage(newPage);\n loadData(newPage);\n };\n\n const emptyRows = rowsPerPage - Math.min(rowsPerPage, rowsCount - page * rowsPerPage);\n\n return (\n
\n \n Success!\n \n
\n \n \n \n \n \n \n \n {rows\n .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)\n .map((row, index) => {\n const labelId = `enhanced-table-checkbox-${index}`;\n\n return (\n handleClick(event, row)}\n role=\"checkbox\"\n tabIndex={-1}\n key={row.id}\n >\n \n \n \n \n {row.code}\n \n {row.percent + \"%\"}\n {row.uses}\n {row.maxUses === -1 ? \"Unlimited\" : row.maxUses}\n {row.revoked ? \"Revoked\" : \"Active\"}\n \n );\n })}\n {emptyRows > 0 && (\n \n \n \n )}\n \n \n \n \n \n \n \n \n \n \n \n \n \n Coupon\n \n\n {(selectedItem !== undefined && selectedItem.id > 0) ? (\n \n ) : null}\n \n {(\n \n )}\n \n \n \n\n setCodeValue(e.target.value)} />\n \n %,\n }} disabled={saving} className={classes.fullWidth} color=\"secondary\" label=\"Percent\" variant=\"filled\" \n value={percentValue} onChange={(e) => setPercentValue(e.target.value)} />\n \n setMaxUsesValue(e.target.value)} />\n \n setMaxUsesValue(e.target.checked ? -1 : 0)}>\n }\n label=\"Unlimited uses\" />\n \n \n \n setRevokedValue(e.target.checked)} /> } label=\"Revoked\" />\n \n \n {/*$,\n }} disabled={saving} className={classes.fullWidth} color=\"secondary\" label=\"Price\" variant=\"filled\" \n value={priceValue} onChange={(e) => setPriceValue(e.target.value)} />*/}\n\n {/*\n (selectedItem !== undefined && selectedItem.id > 0) ? \n (\n <>\n\n\n\n\n Uploaded Topic Thumbnail\n \n
\n \n
\n
\n
\n \n setShowProfileUploadDialog(false)}\n onSave={(files) => {setShowProfileUploadDialog(false); uploadProfileFile(files)}}\n maxFileSize={5000000}\n /> \n
\n\n \n \n\n\n \n Order History\n \n
\n\n {\n (selectedItem !== undefined && selectedItem.orderRecords.length > 0) ? \n (\n \n \n \n \n User\n Amount\n Date\n Paypal Order ID\n \n \n \n {selectedItem.orderRecords.map((row) => (\n \n \n {row.accountName}\n \n {row.paidAmount + \" \" + row.paidCurrency}\n {Moment(new Date(row.createdDate)).format('DD MMMM YYYY')}\n {row.paypalOrderId}\n \n ))}\n \n
\n
\n ) : (\n \n No orders exist\n \n )\n }\n\n
\n \n ) : (\n <>\n )\n */}\n \n\n
\n setShowError(false)} autoHideDuration={2500} anchorOrigin={{ vertical: 'top', horizontal: 'center' }} >\n \n {errorMessage}\n \n \n
\n setShowSuccess(false)} autoHideDuration={2500} anchorOrigin={{ vertical: 'top', horizontal: 'center' }} >\n \n Success!\n \n \n
\n );\n}","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { lighten, makeStyles } from '@material-ui/core/styles';\nimport Table from '@material-ui/core/Table';\nimport TableBody from '@material-ui/core/TableBody';\nimport TableCell from '@material-ui/core/TableCell';\nimport TableContainer from '@material-ui/core/TableContainer';\nimport TableHead from '@material-ui/core/TableHead';\nimport TablePagination from '@material-ui/core/TablePagination';\nimport TableRow from '@material-ui/core/TableRow';\nimport TableSortLabel from '@material-ui/core/TableSortLabel';\nimport Toolbar from '@material-ui/core/Toolbar';\nimport Typography from '@material-ui/core/Typography';\nimport Paper from '@material-ui/core/Paper';\nimport IconButton from '@material-ui/core/IconButton';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport Switch from '@material-ui/core/Switch';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport FilterListIcon from '@material-ui/icons/FilterList';\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport { Session } from 'bc-react-session';\nimport Dialog from '@material-ui/core/Dialog';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport ListItem from '@material-ui/core/ListItem';\nimport List from '@material-ui/core/List';\nimport Divider from '@material-ui/core/Divider';\nimport CloseIcon from '@material-ui/icons/Close';\nimport Slide from '@material-ui/core/Slide';\nimport AppBar from '@material-ui/core/AppBar';\nimport Button from '@material-ui/core/Button';\nimport TextField from '@material-ui/core/TextField';\nimport Box from '@material-ui/core/Box';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport ExpansionPanel from '@material-ui/core/ExpansionPanel';\nimport ExpansionPanelDetails from '@material-ui/core/ExpansionPanelDetails';\nimport ExpansionPanelSummary from '@material-ui/core/ExpansionPanelSummary';\nimport Moment from 'moment';\nimport AddCircleOutlineIcon from '@material-ui/icons/AddCircleOutline';\nimport AddBoxIcon from '@material-ui/icons/AddBox';\nimport Snackbar from '@material-ui/core/Snackbar';\nimport MuiAlert from '@material-ui/lab/Alert';\nimport InputAdornment from '@material-ui/core/InputAdornment';\nimport {DropzoneDialog} from 'material-ui-dropzone'\nimport TransactionsView from './TransactionsView';\n\nfunction Alert(props) {\n return ;\n}\n\nconst Transition = React.forwardRef(function Transition(props, ref) {\n return ;\n });\n\nconst headCells = [\n { id: 'fullName', numeric: false, disablePadding: true, label: 'Full Name' },\n { id: 'email', numeric: false, disablePadding: false, label: 'Email Address' },\n];\n\nfunction FormPadding() {\n return ( <>

);\n} \n\nfunction EnhancedTableHead(props) {\n return (\n \n \n \n \n \n {headCells.map((headCell) => (\n \n {headCell.label}\n \n ))}\n \n \n );\n}\n\nEnhancedTableHead.propTypes = {\n classes: PropTypes.object.isRequired,\n rowCount: PropTypes.number.isRequired,\n};\n\nconst useToolbarStyles = makeStyles((theme) => ({\n root: {\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(1),\n },\n highlight:\n theme.palette.type === 'light'\n ? {\n color: theme.palette.secondary.main,\n backgroundColor: lighten(theme.palette.secondary.light, 0.85),\n }\n : {\n color: theme.palette.text.primary,\n backgroundColor: theme.palette.secondary.dark,\n },\n title: {\n flex: '1 1 100%',\n },\n}));\n\nconst EnhancedTableToolbar = (props) => {\n const classes = useToolbarStyles();\n \n return (\n \n {(\n \n Carzilla Staff\n \n )}\n\n {props.onNew !== undefined ? (\n \n \n \n \n \n ) : null}\n \n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n width: '100%',\n },\n paper: {\n width: '100%',\n marginBottom: theme.spacing(2),\n },\n table: {\n //minWidth: 750,\n },\n visuallyHidden: {\n border: 0,\n clip: 'rect(0 0 0 0)',\n height: 1,\n margin: -1,\n overflow: 'hidden',\n padding: 0,\n position: 'absolute',\n top: 20,\n width: 1,\n },\n progressBarRoot: { },\n appBar: {\n position: 'relative',\n },\n title: {\n marginLeft: theme.spacing(2),\n flex: 1,\n },\n fullWidth: {\n width: '100%',\n },\n heading: {\n fontSize: theme.typography.pxToRem(15),\n flexBasis: '33.33%',\n flexShrink: 0,\n },\n secondaryHeading: {\n fontSize: theme.typography.pxToRem(15),\n color: theme.palette.text.secondary,\n },\n dialogRoot: {\n height: '100%'\n },\n horizontalCenter: {\n width: '300px'\n }\n}));\n \nexport default function StaffView(props) {\n const classes = useStyles();\n const [page, setPage] = React.useState(0);\n const [loadedPages, setLoadedPages] = React.useState([]);\n const [rowsPerPage, setRowsPerPage] = React.useState(10);\n const [loading, setLoading] = React.useState(false);\n const [rows, setRows] = React.useState([]);\n const [rowsCount, setRowsCount] = React.useState(0);\n const [selectedItem, setSelecteItem] = React.useState(undefined);\n const [expanded, setExpanded] = React.useState(false);\n\n const [fullNameValue, setFullNameValue] = React.useState(\"\");\n const [emailValue, setEmailValue] = React.useState(\"\");\n const [passwordValue, setPasswordValue] = React.useState(\"\");\n const [saving, setSaving] = React.useState(false);\n\n const [showSuccess, setShowSuccess] = React.useState(false);\n const [errorMessage, setErrorMessage] = React.useState(\"\");\n const [showError, setShowError] = React.useState(false);\n\n //const [showProfileUploadDialog, setShowProfileUploadDialog] = React.useState(false);\n\n /*props.loadData((data) => {\n setRows(data);\n setLoading(false);\n });*/\n\n const loadData = (page, ignoreLoadedPages) => {\n if ((ignoreLoadedPages === undefined || false) && loadedPages.includes(page)) {\n return;\n }\n\n //setRows([]);\n setLoading(true);\n\n fetch('/api/backend/account/get-staff/' + page, {\n method: 'get',\n headers: {\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n }\n })\n .then(res => res.json())\n .then(\n (result) => {\n if (page === 0) {\n setRowsCount(result.total);\n }\n\n let r = rows;\n r = r.concat(result.list);\n setRows(r);\n \n\n let lP = loadedPages;\n lP.push(page);\n setLoadedPages(lP);\n\n\n setLoading(false);\n }, \n (error) => {\n setRows([]);\n setLoading(false);\n }\n )\n };\n\n useEffect(() => {\n loadData(page);\n }, [])\n\n const saveData = () => {\n if (emailValue.trim() === \"\") {\n setErrorMessage(\"Email can not be empty\");\n setShowError(true)\n return;\n }\n\n if (fullNameValue.trim() === \"\") {\n setErrorMessage(\"Full name can not be empty\");\n setShowError(true)\n return;\n }\n\n if (selectedItem.id === 0 && passwordValue.trim() === \"\") {\n setErrorMessage(\"Password can not be empty\");\n setShowError(true)\n return;\n }\n\n setSaving(true)\n\n fetch('/api/backend/account/save-staff', {\n method: 'post',\n headers: {\n \"Content-Type\": \"application/json\",\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n },\n body: JSON.stringify({\n id: selectedItem.id,\n email: emailValue,\n password: passwordValue,\n fullName: fullNameValue\n })\n })\n .then(res => res.json())\n .then(\n (result) => {\n if (result.responseCode === 0) {\n setShowSuccess(true)\n closeDialog();\n\n var updated = false;\n for (var i = 0; i < rows.length; i++) {\n if (rows[i].id === result.payload.id) {\n rows[i] = result.payload;\n updated = true;\n break;\n }\n }\n if (!updated) {\n setRowsCount(rowsCount + 1);\n\n rows.unshift(result.payload);\n if (rows.length > 1) {\n if ((rows.length - 1) % 10 === 0) {\n rows.pop();\n }\n }\n\n setPage(0);\n }\n } else {\n if (result.payload !== undefined && result.payload !== null) {\n setErrorMessage(result.payload);\n } else {\n setErrorMessage(\"Error\");\n }\n setShowError(true)\n }\n setSaving(false)\n }, \n (error) => {\n setErrorMessage(\"Error\");\n setShowError(true)\n\n setSaving(false)\n }\n )\n\n };\n\n /*const uploadProfileFile = (files) => {\n if (files !== undefined && files.length > 0) {\n setSaving(true)\n\n const data = new FormData();\n data.append('topic-thumbnail', files[0]);\n\n fetch('/api/backend/topic/upload-topic-thumbnail/' + selectedItem.id, {\n method: 'post',\n headers: {\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n },\n body: data\n })\n .then(res => res.text())\n .then(\n (result) => {\n if (result !== undefined && result === 'true') {\n setShowSuccess(true)\n closeDialog();\n loadData();\n } else {\n setShowError(true)\n }\n setSaving(false)\n }, \n (error) => {\n setShowError(true)\n setSaving(false)\n }\n )\n }\n };*/\n\nconst onNew = () => {\n var item = {\n id: 0,\n fullName: '',\n email: '',\n password: '',\n }\n\n setSelecteItem(item)\n setFullNameValue(item.fullName);\n setEmailValue(item.email);\n setPasswordValue(item.password);\n}\n\n const handleClick = (event, item) => {\n setSelecteItem(item)\n setFullNameValue(item.fullName);\n setEmailValue(item.email);\n setPasswordValue(item.password);\n };\n\n const closeDialog = () => {\n setSelecteItem(undefined)\n setFullNameValue('');\n setEmailValue('');\n setPasswordValue('');\n };\n\n const handleChangePage = (event, newPage) => {\n setPage(newPage);\n loadData(newPage);\n };\n\n const emptyRows = rowsPerPage - Math.min(rowsPerPage, rowsCount - page * rowsPerPage);\n\n return (\n
\n \n Success!\n \n
\n \n \n \n \n \n \n \n {rows\n .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)\n .map((row, index) => {\n const labelId = `enhanced-table-checkbox-${index}`;\n\n return (\n handleClick(event, row)}\n role=\"checkbox\"\n tabIndex={-1}\n key={row.id}\n >\n \n \n \n \n {row.fullName}\n \n {row.email}\n \n );\n })}\n {emptyRows > 0 && (\n \n \n \n )}\n \n \n \n \n \n \n \n \n \n \n \n \n \n Account\n \n \n {props.userId === undefined ? (\n \n ) : null}\n \n \n \n\n setFullNameValue(e.target.value)} />\n \n setEmailValue(e.target.value)} />\n \n setPasswordValue(e.target.value)} />\n \n \n\n\n \n {/*$,\n }} disabled={saving} className={classes.fullWidth} color=\"secondary\" label=\"Price\" variant=\"filled\" \n value={priceValue} onChange={(e) => setPriceValue(e.target.value)} />*/}\n\n {/*\n (selectedItem !== undefined && selectedItem.id > 0) ? \n (\n <>\n\n\n\n\n Uploaded Topic Thumbnail\n \n
\n \n
\n
\n
\n \n setShowProfileUploadDialog(false)}\n onSave={(files) => {setShowProfileUploadDialog(false); uploadProfileFile(files)}}\n maxFileSize={5000000}\n /> \n
\n\n \n \n\n\n \n Order History\n \n
\n\n {\n (selectedItem !== undefined && selectedItem.orderRecords.length > 0) ? \n (\n \n \n \n \n User\n Amount\n Date\n Paypal Order ID\n \n \n \n {selectedItem.orderRecords.map((row) => (\n \n \n {row.accountName}\n \n {row.paidAmount + \" \" + row.paidCurrency}\n {Moment(new Date(row.createdDate)).format('DD MMMM YYYY')}\n {row.paypalOrderId}\n \n ))}\n \n
\n
\n ) : (\n \n No orders exist\n \n )\n }\n\n
\n \n ) : (\n <>\n )\n */}\n \n\n
\n setShowError(false)} autoHideDuration={2500} anchorOrigin={{ vertical: 'top', horizontal: 'center' }} >\n \n {errorMessage}\n \n \n
\n setShowSuccess(false)} autoHideDuration={2500} anchorOrigin={{ vertical: 'top', horizontal: 'center' }} >\n \n Success!\n \n \n
\n );\n}","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { lighten, makeStyles } from '@material-ui/core/styles';\nimport Table from '@material-ui/core/Table';\nimport TableBody from '@material-ui/core/TableBody';\nimport TableCell from '@material-ui/core/TableCell';\nimport TableContainer from '@material-ui/core/TableContainer';\nimport TableHead from '@material-ui/core/TableHead';\nimport TablePagination from '@material-ui/core/TablePagination';\nimport TableRow from '@material-ui/core/TableRow';\nimport TableSortLabel from '@material-ui/core/TableSortLabel';\nimport Toolbar from '@material-ui/core/Toolbar';\nimport Typography from '@material-ui/core/Typography';\nimport Paper from '@material-ui/core/Paper';\nimport IconButton from '@material-ui/core/IconButton';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport Switch from '@material-ui/core/Switch';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport FilterListIcon from '@material-ui/icons/FilterList';\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport { Session } from 'bc-react-session';\nimport Dialog from '@material-ui/core/Dialog';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport ListItem from '@material-ui/core/ListItem';\nimport List from '@material-ui/core/List';\nimport Divider from '@material-ui/core/Divider';\nimport CloseIcon from '@material-ui/icons/Close';\nimport Slide from '@material-ui/core/Slide';\nimport AppBar from '@material-ui/core/AppBar';\nimport Button from '@material-ui/core/Button';\nimport TextField from '@material-ui/core/TextField';\nimport Box from '@material-ui/core/Box';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport ExpansionPanel from '@material-ui/core/ExpansionPanel';\nimport ExpansionPanelDetails from '@material-ui/core/ExpansionPanelDetails';\nimport ExpansionPanelSummary from '@material-ui/core/ExpansionPanelSummary';\nimport Moment from 'moment';\nimport AddCircleOutlineIcon from '@material-ui/icons/AddCircleOutline';\nimport AddBoxIcon from '@material-ui/icons/AddBox';\nimport Snackbar from '@material-ui/core/Snackbar';\nimport MuiAlert from '@material-ui/lab/Alert';\nimport InputAdornment from '@material-ui/core/InputAdornment';\nimport {DropzoneDialog} from 'material-ui-dropzone'\nimport TransactionsView from './TransactionsView';\n\nfunction Alert(props) {\n return ;\n}\n\nconst Transition = React.forwardRef(function Transition(props, ref) {\n return ;\n });\n\nconst headCells = [\n { id: 'fullName', numeric: false, disablePadding: true, label: 'Full Name' },\n { id: 'email', numeric: false, disablePadding: false, label: 'Email Address' },\n { id: 'truckref', numeric: false, disablePadding: false, label: 'Truck Ref' },\n];\n\nfunction FormPadding() {\n return ( <>

);\n} \n\nfunction EnhancedTableHead(props) {\n return (\n \n \n \n \n \n {headCells.map((headCell) => (\n \n {headCell.label}\n \n ))}\n \n \n );\n}\n\nEnhancedTableHead.propTypes = {\n classes: PropTypes.object.isRequired,\n rowCount: PropTypes.number.isRequired,\n};\n\nconst useToolbarStyles = makeStyles((theme) => ({\n root: {\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(1),\n },\n highlight:\n theme.palette.type === 'light'\n ? {\n color: theme.palette.secondary.main,\n backgroundColor: lighten(theme.palette.secondary.light, 0.85),\n }\n : {\n color: theme.palette.text.primary,\n backgroundColor: theme.palette.secondary.dark,\n },\n title: {\n flex: '1 1 100%',\n },\n}));\n\nconst EnhancedTableToolbar = (props) => {\n const classes = useToolbarStyles();\n \n return (\n \n {(\n \n Truck Drivers\n \n )}\n\n {props.onNew !== undefined ? (\n \n \n \n \n \n ) : null}\n \n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n width: '100%',\n },\n paper: {\n width: '100%',\n marginBottom: theme.spacing(2),\n },\n table: {\n //minWidth: 750,\n },\n visuallyHidden: {\n border: 0,\n clip: 'rect(0 0 0 0)',\n height: 1,\n margin: -1,\n overflow: 'hidden',\n padding: 0,\n position: 'absolute',\n top: 20,\n width: 1,\n },\n progressBarRoot: { },\n appBar: {\n position: 'relative',\n },\n title: {\n marginLeft: theme.spacing(2),\n flex: 1,\n },\n fullWidth: {\n width: '100%',\n },\n heading: {\n fontSize: theme.typography.pxToRem(15),\n flexBasis: '33.33%',\n flexShrink: 0,\n },\n secondaryHeading: {\n fontSize: theme.typography.pxToRem(15),\n color: theme.palette.text.secondary,\n },\n dialogRoot: {\n height: '100%'\n },\n horizontalCenter: {\n width: '300px'\n }\n}));\n \nexport default function TruckDriversView(props) {\n const classes = useStyles();\n const [page, setPage] = React.useState(0);\n const [loadedPages, setLoadedPages] = React.useState([]);\n const [rowsPerPage, setRowsPerPage] = React.useState(10);\n const [loading, setLoading] = React.useState(false);\n const [rows, setRows] = React.useState([]);\n const [rowsCount, setRowsCount] = React.useState(0);\n const [selectedItem, setSelecteItem] = React.useState(undefined);\n const [expanded, setExpanded] = React.useState(false);\n\n const [fullNameValue, setFullNameValue] = React.useState(\"\");\n const [emailValue, setEmailValue] = React.useState(\"\");\n const [passwordValue, setPasswordValue] = React.useState(\"\");\n const [truckRefValue, setTruckRefValue] = React.useState(\"\");\n const [saving, setSaving] = React.useState(false);\n\n const [showSuccess, setShowSuccess] = React.useState(false);\n const [errorMessage, setErrorMessage] = React.useState(\"\");\n const [showError, setShowError] = React.useState(false);\n\n //const [showProfileUploadDialog, setShowProfileUploadDialog] = React.useState(false);\n\n /*props.loadData((data) => {\n setRows(data);\n setLoading(false);\n });*/\n\n const loadData = (page, ignoreLoadedPages) => {\n if ((ignoreLoadedPages === undefined || false) && loadedPages.includes(page)) {\n return;\n }\n\n //setRows([]);\n setLoading(true);\n\n fetch('/api/backend/account/get-truck-drivers/' + page, {\n method: 'get',\n headers: {\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n }\n })\n .then(res => res.json())\n .then(\n (result) => {\n if (page === 0) {\n setRowsCount(result.total);\n }\n\n let r = rows;\n r = r.concat(result.list);\n setRows(r);\n \n\n let lP = loadedPages;\n lP.push(page);\n setLoadedPages(lP);\n\n\n setLoading(false);\n }, \n (error) => {\n setRows([]);\n setLoading(false);\n }\n )\n };\n\n useEffect(() => {\n loadData(page);\n }, [])\n\n const saveData = () => {\n if (emailValue.trim() === \"\") {\n setErrorMessage(\"Email can not be empty\");\n setShowError(true)\n return;\n }\n\n if (fullNameValue.trim() === \"\") {\n setErrorMessage(\"Full name can not be empty\");\n setShowError(true)\n return;\n }\n\n if (selectedItem.id === 0 && passwordValue.trim() === \"\") {\n setErrorMessage(\"Password can not be empty\");\n setShowError(true)\n return;\n }\n\n setSaving(true)\n\n fetch('/api/backend/account/save-truck-driver', {\n method: 'post',\n headers: {\n \"Content-Type\": \"application/json\",\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n },\n body: JSON.stringify({\n id: selectedItem.id,\n email: emailValue,\n password: passwordValue,\n fullName: fullNameValue,\n truckRef: truckRefValue\n })\n })\n .then(res => res.json())\n .then(\n (result) => {\n if (result.responseCode === 0) {\n setShowSuccess(true)\n closeDialog();\n\n var updated = false;\n for (var i = 0; i < rows.length; i++) {\n if (rows[i].id === result.payload.id) {\n rows[i] = result.payload;\n updated = true;\n break;\n }\n }\n if (!updated) {\n setRowsCount(rowsCount + 1);\n\n rows.unshift(result.payload);\n if (rows.length > 1) {\n if ((rows.length - 1) % 10 === 0) {\n rows.pop();\n }\n }\n\n setPage(0);\n }\n } else {\n if (result.payload !== undefined && result.payload !== null) {\n setErrorMessage(result.payload);\n } else {\n setErrorMessage(\"Error\");\n }\n setShowError(true)\n }\n setSaving(false)\n }, \n (error) => {\n setErrorMessage(\"Error\");\n setShowError(true)\n\n setSaving(false)\n }\n )\n\n };\n\n const deleteData = () => {\n if (!window.confirm('Are you sure you want to delete this truck driver?')) {\n return;\n }\n\n setSaving(true)\n\n fetch('/api/backend/account/delete-truck-driver/' + selectedItem.id, {\n method: 'get',\n headers: {\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n },\n })\n .then(res => res.json())\n .then(\n (result) => {\n if (result.responseCode === 0) {\n setShowSuccess(true)\n closeDialog();\n\n \n for (var i = 0; i < rows.length; i++) {\n if (rows[i].id === selectedItem.id) {\n rows.splice(i, 1);\n break;\n }\n } \n } else {\n if (result.payload !== undefined && result.payload !== null) {\n setErrorMessage(result.payload);\n } else {\n setErrorMessage(\"Error\");\n }\n setShowError(true)\n }\n setSaving(false)\n }, \n (error) => {\n setErrorMessage(\"Error\");\n setShowError(true)\n\n setSaving(false)\n }\n )\n\n };\n\n /*const uploadProfileFile = (files) => {\n if (files !== undefined && files.length > 0) {\n setSaving(true)\n\n const data = new FormData();\n data.append('topic-thumbnail', files[0]);\n\n fetch('/api/backend/topic/upload-topic-thumbnail/' + selectedItem.id, {\n method: 'post',\n headers: {\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n },\n body: data\n })\n .then(res => res.text())\n .then(\n (result) => {\n if (result !== undefined && result === 'true') {\n setShowSuccess(true)\n closeDialog();\n loadData();\n } else {\n setShowError(true)\n }\n setSaving(false)\n }, \n (error) => {\n setShowError(true)\n setSaving(false)\n }\n )\n }\n };*/\n\nconst onNew = () => {\n var item = {\n id: 0,\n fullName: '',\n email: '',\n password: '',\n truckRef: ''\n }\n\n setSelecteItem(item)\n setFullNameValue(item.fullName);\n setEmailValue(item.email);\n setPasswordValue(item.password);\n setTruckRefValue(item.truckRef);\n}\n\n const handleClick = (event, item) => {\n setSelecteItem(item)\n setFullNameValue(item.fullName);\n setEmailValue(item.email);\n setPasswordValue(item.password);\n setTruckRefValue(item.truckRef);\n };\n\n const closeDialog = () => {\n setSelecteItem(undefined)\n setFullNameValue('');\n setEmailValue('');\n setPasswordValue('');\n setTruckRefValue('');\n };\n\n const handleChangePage = (event, newPage) => {\n setPage(newPage);\n loadData(newPage);\n };\n\n const emptyRows = rowsPerPage - Math.min(rowsPerPage, rowsCount - page * rowsPerPage);\n\n return (\n
\n \n Success!\n \n
\n \n \n \n \n \n \n \n {rows\n .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)\n .map((row, index) => {\n const labelId = `enhanced-table-checkbox-${index}`;\n\n return (\n handleClick(event, row)}\n role=\"checkbox\"\n tabIndex={-1}\n key={row.id}\n >\n \n \n \n \n {row.fullName}\n \n {row.email}\n {row.truckRef}\n \n );\n })}\n {emptyRows > 0 && (\n \n \n \n )}\n \n \n \n \n \n \n \n \n \n \n \n \n \n Truck Driver\n \n\n\n {(selectedItem !== undefined && selectedItem.id > 0) ? (\n \n ) : null}\n \n \n {props.userId === undefined ? (\n \n ) : null}\n \n \n \n\n setFullNameValue(e.target.value)} />\n \n setEmailValue(e.target.value)} />\n \n setPasswordValue(e.target.value)} />\n \n setTruckRefValue(e.target.value)} />\n \n \n\n\n \n {/*$,\n }} disabled={saving} className={classes.fullWidth} color=\"secondary\" label=\"Price\" variant=\"filled\" \n value={priceValue} onChange={(e) => setPriceValue(e.target.value)} />*/}\n\n {/*\n (selectedItem !== undefined && selectedItem.id > 0) ? \n (\n <>\n\n\n\n\n Uploaded Topic Thumbnail\n \n
\n \n
\n
\n
\n \n setShowProfileUploadDialog(false)}\n onSave={(files) => {setShowProfileUploadDialog(false); uploadProfileFile(files)}}\n maxFileSize={5000000}\n /> \n
\n\n \n \n\n\n \n Order History\n \n
\n\n {\n (selectedItem !== undefined && selectedItem.orderRecords.length > 0) ? \n (\n \n \n \n \n User\n Amount\n Date\n Paypal Order ID\n \n \n \n {selectedItem.orderRecords.map((row) => (\n \n \n {row.accountName}\n \n {row.paidAmount + \" \" + row.paidCurrency}\n {Moment(new Date(row.createdDate)).format('DD MMMM YYYY')}\n {row.paypalOrderId}\n \n ))}\n \n
\n
\n ) : (\n \n No orders exist\n \n )\n }\n\n
\n \n ) : (\n <>\n )\n */}\n \n\n
\n setShowError(false)} autoHideDuration={2500} anchorOrigin={{ vertical: 'top', horizontal: 'center' }} >\n \n {errorMessage}\n \n \n
\n setShowSuccess(false)} autoHideDuration={2500} anchorOrigin={{ vertical: 'top', horizontal: 'center' }} >\n \n Success!\n \n \n
\n );\n}","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { lighten, makeStyles } from '@material-ui/core/styles';\nimport Table from '@material-ui/core/Table';\nimport TableBody from '@material-ui/core/TableBody';\nimport TableCell from '@material-ui/core/TableCell';\nimport TableContainer from '@material-ui/core/TableContainer';\nimport TableHead from '@material-ui/core/TableHead';\nimport TablePagination from '@material-ui/core/TablePagination';\nimport TableRow from '@material-ui/core/TableRow';\nimport TableSortLabel from '@material-ui/core/TableSortLabel';\nimport Toolbar from '@material-ui/core/Toolbar';\nimport Typography from '@material-ui/core/Typography';\nimport Paper from '@material-ui/core/Paper';\nimport IconButton from '@material-ui/core/IconButton';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport Switch from '@material-ui/core/Switch';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport FilterListIcon from '@material-ui/icons/FilterList';\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport { Session } from 'bc-react-session';\nimport Dialog from '@material-ui/core/Dialog';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport ListItem from '@material-ui/core/ListItem';\nimport List from '@material-ui/core/List';\nimport Divider from '@material-ui/core/Divider';\nimport CloseIcon from '@material-ui/icons/Close';\nimport Slide from '@material-ui/core/Slide';\nimport AppBar from '@material-ui/core/AppBar';\nimport Button from '@material-ui/core/Button';\nimport TextField from '@material-ui/core/TextField';\nimport Box from '@material-ui/core/Box';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport ExpansionPanel from '@material-ui/core/ExpansionPanel';\nimport ExpansionPanelDetails from '@material-ui/core/ExpansionPanelDetails';\nimport ExpansionPanelSummary from '@material-ui/core/ExpansionPanelSummary';\nimport Moment from 'moment';\nimport AddCircleOutlineIcon from '@material-ui/icons/AddCircleOutline';\nimport AddBoxIcon from '@material-ui/icons/AddBox';\nimport Snackbar from '@material-ui/core/Snackbar';\nimport MuiAlert from '@material-ui/lab/Alert';\nimport InputAdornment from '@material-ui/core/InputAdornment';\nimport {DropzoneDialog} from 'material-ui-dropzone'\nimport TransactionsView from './TransactionsView';\n\nfunction Alert(props) {\n return ;\n}\n\nconst Transition = React.forwardRef(function Transition(props, ref) {\n return ;\n });\n\nconst headCells = [\n { id: 'name', numeric: false, disablePadding: true, label: 'Name' },\n { id: 'number', numeric: false, disablePadding: false, label: 'Number' },\n];\n\nfunction FormPadding() {\n return ( <>

);\n} \n\nfunction EnhancedTableHead(props) {\n return (\n \n \n \n \n \n {headCells.map((headCell) => (\n \n {headCell.label}\n \n ))}\n \n \n );\n}\n\nEnhancedTableHead.propTypes = {\n classes: PropTypes.object.isRequired,\n rowCount: PropTypes.number.isRequired,\n};\n\nconst useToolbarStyles = makeStyles((theme) => ({\n root: {\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(1),\n },\n highlight:\n theme.palette.type === 'light'\n ? {\n color: theme.palette.secondary.main,\n backgroundColor: lighten(theme.palette.secondary.light, 0.85),\n }\n : {\n color: theme.palette.text.primary,\n backgroundColor: theme.palette.secondary.dark,\n },\n title: {\n flex: '1 1 100%',\n },\n}));\n\nconst EnhancedTableToolbar = (props) => {\n const classes = useToolbarStyles();\n \n return (\n \n {(\n \n Phone Numbers\n \n )}\n\n {props.onNew !== undefined ? (\n \n \n \n \n \n ) : null}\n \n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n width: '100%',\n },\n paper: {\n width: '100%',\n marginBottom: theme.spacing(2),\n },\n table: {\n //minWidth: 750,\n },\n visuallyHidden: {\n border: 0,\n clip: 'rect(0 0 0 0)',\n height: 1,\n margin: -1,\n overflow: 'hidden',\n padding: 0,\n position: 'absolute',\n top: 20,\n width: 1,\n },\n progressBarRoot: { },\n appBar: {\n position: 'relative',\n },\n title: {\n marginLeft: theme.spacing(2),\n flex: 1,\n },\n fullWidth: {\n width: '100%',\n },\n heading: {\n fontSize: theme.typography.pxToRem(15),\n flexBasis: '33.33%',\n flexShrink: 0,\n },\n secondaryHeading: {\n fontSize: theme.typography.pxToRem(15),\n color: theme.palette.text.secondary,\n },\n dialogRoot: {\n height: '100%'\n },\n horizontalCenter: {\n width: '300px'\n }\n}));\n \nexport default function PhoneNumbersView(props) {\n const classes = useStyles();\n const [page, setPage] = React.useState(0);\n const [rowsPerPage, setRowsPerPage] = React.useState(5);\n const [loading, setLoading] = React.useState(false);\n const [rows, setRows] = React.useState([]);\n const [selectedItem, setSelecteItem] = React.useState(undefined);\n const [expanded, setExpanded] = React.useState(false);\n\n const [nameValue, setNameValue] = React.useState(\"\");\n const [nameValueAr, setNameValueAr] = React.useState(\"\");\n const [numberValue, setNumberValue] = React.useState(\"\");\n const [saving, setSaving] = React.useState(false);\n\n const [showSuccess, setShowSuccess] = React.useState(false);\n const [errorMessage, setErrorMessage] = React.useState(\"\");\n const [showError, setShowError] = React.useState(false);\n\n //const [showProfileUploadDialog, setShowProfileUploadDialog] = React.useState(false);\n\n /*props.loadData((data) => {\n setRows(data);\n setLoading(false);\n });*/\n\n const loadData = () => {\n setLoading(true);\n\n fetch('/api/backend/phone-number/get-phone-numbers/', {\n method: 'get',\n headers: {\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n }\n })\n .then(res => res.json())\n .then(\n (result) => {\n setRows(result);\n setLoading(false);\n }, \n (error) => {\n setRows([]);\n setLoading(false);\n }\n )\n };\n\n useEffect(loadData, [])\n\n const saveData = () => {\n if (numberValue.trim() === \"\") {\n setErrorMessage(\"Number can not be empty\");\n setShowError(true)\n return;\n }\n\n if (nameValue.trim() === \"\") {\n setErrorMessage(\"Name can not be empty\");\n setShowError(true)\n return;\n }\n\n if (nameValueAr.trim() === \"\") {\n setErrorMessage(\"Name (Arabic) can not be empty\");\n setShowError(true)\n return;\n }\n\n setSaving(true)\n\n fetch('/api/backend/phone-number/save', {\n method: 'post',\n headers: {\n \"Content-Type\": \"application/json\",\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n },\n body: JSON.stringify({\n id: selectedItem.id,\n name: nameValue,\n nameAr: nameValueAr,\n number: numberValue,\n })\n })\n .then(res => res.json())\n .then(\n (result) => {\n if (result.responseCode === 0) {\n setShowSuccess(true)\n closeDialog();\n\n var updated = false;\n for (var i = 0; i < rows.length; i++) {\n if (rows[i].id === result.payload.id) {\n rows[i] = result.payload;\n updated = true;\n break;\n }\n }\n\n if (!updated) {\n rows.unshift(result.payload);\n\n setPage(0);\n }\n } else {\n if (result.payload !== undefined && result.payload !== null) {\n setErrorMessage(result.payload);\n } else {\n setErrorMessage(\"Error\");\n }\n setShowError(true)\n }\n setSaving(false)\n }, \n (error) => {\n setErrorMessage(\"Error\");\n setShowError(true)\n\n setSaving(false)\n }\n )\n\n };\n\n const deleteData = () => {\n if (!window.confirm('Are you sure you want to delete this number?')) {\n return;\n }\n\n setSaving(true)\n\n fetch('/api/backend/phone-number/delete/' + selectedItem.id, {\n method: 'get',\n headers: {\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n },\n })\n .then(res => res.json())\n .then(\n (result) => {\n if (result.responseCode === 0) {\n setShowSuccess(true)\n closeDialog();\n\n \n for (var i = 0; i < rows.length; i++) {\n if (rows[i].id === selectedItem.id) {\n rows.splice(i, 1);\n break;\n }\n } \n } else {\n if (result.payload !== undefined && result.payload !== null) {\n setErrorMessage(result.payload);\n } else {\n setErrorMessage(\"Error\");\n }\n setShowError(true)\n }\n setSaving(false)\n }, \n (error) => {\n setErrorMessage(\"Error\");\n setShowError(true)\n\n setSaving(false)\n }\n )\n\n };\n\n /*const uploadProfileFile = (files) => {\n if (files !== undefined && files.length > 0) {\n setSaving(true)\n\n const data = new FormData();\n data.append('topic-thumbnail', files[0]);\n\n fetch('/api/backend/topic/upload-topic-thumbnail/' + selectedItem.id, {\n method: 'post',\n headers: {\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n },\n body: data\n })\n .then(res => res.text())\n .then(\n (result) => {\n if (result !== undefined && result === 'true') {\n setShowSuccess(true)\n closeDialog();\n loadData();\n } else {\n setShowError(true)\n }\n setSaving(false)\n }, \n (error) => {\n setShowError(true)\n setSaving(false)\n }\n )\n }\n };*/\n\nconst onNew = () => {\n var item = {\n id: 0,\n name: '',\n number: '',\n }\n\n setSelecteItem(item)\n setNameValue(item.name);\n setNameValueAr(item.nameAr);\n setNumberValue(item.number);\n}\n\n const handleClick = (event, item) => {\n setSelecteItem(item)\n setNameValue(item.name);\n setNameValueAr(item.nameAr);\n setNumberValue(item.number);\n };\n\n const closeDialog = () => {\n setSelecteItem(undefined)\n setNameValue('');\n setNameValueAr('');\n setNumberValue('');\n };\n\n const handleChangePage = (event, newPage) => {\n setPage(newPage);\n //loadData(newPage);\n };\n\n const emptyRows = rowsPerPage - Math.min(rowsPerPage, rows.length - page * rowsPerPage);\n\n return (\n
\n \n Success!\n \n
\n \n \n \n \n \n \n \n {rows\n .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)\n .map((row, index) => {\n const labelId = `enhanced-table-checkbox-${index}`;\n\n return (\n handleClick(event, row)}\n role=\"checkbox\"\n tabIndex={-1}\n key={row.id}\n >\n \n \n \n \n {row.name}\n \n {row.number}\n \n );\n })}\n {emptyRows > 0 && (\n \n \n \n )}\n \n \n \n \n \n \n \n \n \n \n \n \n \n Phone Number\n \n \n {(selectedItem !== undefined && selectedItem.id > 0) ? (\n \n ) : null}\n \n \n \n \n \n\n setNameValue(e.target.value)} />\n \n setNameValueAr(e.target.value)} />\n \n setNumberValue(e.target.value)} />\n \n\n \n {/*$,\n }} disabled={saving} className={classes.fullWidth} color=\"secondary\" label=\"Price\" variant=\"filled\" \n value={priceValue} onChange={(e) => setPriceValue(e.target.value)} />*/}\n\n {/*\n (selectedItem !== undefined && selectedItem.id > 0) ? \n (\n <>\n\n\n\n\n Uploaded Topic Thumbnail\n \n
\n \n
\n
\n
\n \n setShowProfileUploadDialog(false)}\n onSave={(files) => {setShowProfileUploadDialog(false); uploadProfileFile(files)}}\n maxFileSize={5000000}\n /> \n
\n\n \n \n\n\n \n Order History\n \n
\n\n {\n (selectedItem !== undefined && selectedItem.orderRecords.length > 0) ? \n (\n \n \n \n \n User\n Amount\n Date\n Paypal Order ID\n \n \n \n {selectedItem.orderRecords.map((row) => (\n \n \n {row.accountName}\n \n {row.paidAmount + \" \" + row.paidCurrency}\n {Moment(new Date(row.createdDate)).format('DD MMMM YYYY')}\n {row.paypalOrderId}\n \n ))}\n \n
\n
\n ) : (\n \n No orders exist\n \n )\n }\n\n
\n \n ) : (\n <>\n )\n */}\n \n\n
\n setShowError(false)} autoHideDuration={2500} anchorOrigin={{ vertical: 'top', horizontal: 'center' }} >\n \n {errorMessage}\n \n \n
\n setShowSuccess(false)} autoHideDuration={2500} anchorOrigin={{ vertical: 'top', horizontal: 'center' }} >\n \n Success!\n \n \n
\n );\n}","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { lighten, makeStyles } from '@material-ui/core/styles';\nimport Table from '@material-ui/core/Table';\nimport TableBody from '@material-ui/core/TableBody';\nimport TableCell from '@material-ui/core/TableCell';\nimport TableContainer from '@material-ui/core/TableContainer';\nimport TableHead from '@material-ui/core/TableHead';\nimport TablePagination from '@material-ui/core/TablePagination';\nimport TableRow from '@material-ui/core/TableRow';\nimport TableSortLabel from '@material-ui/core/TableSortLabel';\nimport Toolbar from '@material-ui/core/Toolbar';\nimport Typography from '@material-ui/core/Typography';\nimport Paper from '@material-ui/core/Paper';\nimport IconButton from '@material-ui/core/IconButton';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport Switch from '@material-ui/core/Switch';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport FilterListIcon from '@material-ui/icons/FilterList';\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport { Session } from 'bc-react-session';\nimport Dialog from '@material-ui/core/Dialog';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport ListItem from '@material-ui/core/ListItem';\nimport List from '@material-ui/core/List';\nimport Divider from '@material-ui/core/Divider';\nimport CloseIcon from '@material-ui/icons/Close';\nimport Slide from '@material-ui/core/Slide';\nimport AppBar from '@material-ui/core/AppBar';\nimport Button from '@material-ui/core/Button';\nimport TextField from '@material-ui/core/TextField';\nimport Box from '@material-ui/core/Box';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport ExpansionPanel from '@material-ui/core/ExpansionPanel';\nimport ExpansionPanelDetails from '@material-ui/core/ExpansionPanelDetails';\nimport ExpansionPanelSummary from '@material-ui/core/ExpansionPanelSummary';\nimport Moment from 'moment';\nimport PackagesView from './PackagesView';\nimport TransactionsView from './TransactionsView';\nimport AutoServicesView from './AutoServicesView';\nimport Alert from '@material-ui/lab/Alert';\nimport { Snackbar } from '@material-ui/core';\n\nconst Transition = React.forwardRef(function Transition(props, ref) {\n return ;\n });\n\nconst headCells = [\n { id: 'user', numeric: false, disablePadding: true, label: 'User' },\n { id: 'date', numeric: false, disablePadding: false, label: 'Date' },\n];\n\nfunction FormPadding() {\n return ( <>

);\n} \n\nfunction EnhancedTableHead(props) {\n return (\n \n \n \n \n \n {headCells.map((headCell) => (\n \n {headCell.label}\n \n ))}\n \n \n );\n}\n\nEnhancedTableHead.propTypes = {\n classes: PropTypes.object.isRequired,\n rowCount: PropTypes.number.isRequired,\n};\n\nconst useToolbarStyles = makeStyles((theme) => ({\n root: {\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(1),\n },\n highlight:\n theme.palette.type === 'light'\n ? {\n color: theme.palette.secondary.main,\n backgroundColor: lighten(theme.palette.secondary.light, 0.85),\n }\n : {\n color: theme.palette.text.primary,\n backgroundColor: theme.palette.secondary.dark,\n },\n title: {\n flex: '1 1 100%',\n },\n}));\n\nconst EnhancedTableToolbar = (props) => {\n const classes = useToolbarStyles();\n \n return (\n \n {(\n \n Chat History\n \n )}\n\n {/*(\n \n \n \n \n \n )*/}\n \n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n width: '100%',\n },\n paper: {\n width: '100%',\n marginBottom: theme.spacing(2),\n },\n table: {\n //minWidth: 750,\n },\n visuallyHidden: {\n border: 0,\n clip: 'rect(0 0 0 0)',\n height: 1,\n margin: -1,\n overflow: 'hidden',\n padding: 0,\n position: 'absolute',\n top: 20,\n width: 1,\n },\n progressBarRoot: { },\n appBar: {\n position: 'relative',\n },\n title: {\n marginLeft: theme.spacing(2),\n flex: 1,\n },\n fullWidth: {\n width: '100%',\n },\n heading: {\n fontSize: theme.typography.pxToRem(15),\n flexBasis: '33.33%',\n flexShrink: 0,\n },\n secondaryHeading: {\n fontSize: theme.typography.pxToRem(15),\n color: theme.palette.text.secondary,\n },\n dialogRoot: {\n height: '100%'\n }\n}));\n \nexport default function ChatHistoryView(props) {\n const classes = useStyles();\n const [page, setPage] = React.useState(0);\n const [loadedPages, setLoadedPages] = React.useState([]);\n const [rowsPerPage, setRowsPerPage] = React.useState(10);\n const [loading, setLoading] = React.useState(true);\n const [rows, setRows] = React.useState([]);\n const [rowsCount, setRowsCount] = React.useState(0);\n const [selectedItem, setSelectedItem] = React.useState(undefined);\n const [expanded, setExpanded] = React.useState(false);\n\n const [saving, setSaving] = React.useState(false);\n const [showSuccess, setShowSuccess] = React.useState(false);\n const [errorMessage, setErrorMessage] = React.useState(\"\");\n const [showError, setShowError] = React.useState(false);\n\n const [selectedUser, setSelectedUser] = React.useState(undefined);\n const [messageEnd, setMessageEnd] = React.useState();\n\n const handleChange = (panel) => (event, isExpanded) => {\n setExpanded(isExpanded ? panel : false);\n };\n\n const loadData = (page) => {\n if (loadedPages.includes(page)) {\n return;\n }\n\n //setRows([]);\n setLoading(true);\n\n fetch('/api/backend/chat/get-room-history/' + props.supportUserId + '/' + page, {\n method: 'get',\n headers: {\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n }\n })\n .then(res => res.json())\n .then(\n (result) => {\n if (page === 0) {\n setRowsCount(result.total);\n }\n\n let r = rows;\n r = r.concat(result.list);\n setRows(r);\n \n\n let lP = loadedPages;\n lP.push(page);\n setLoadedPages(lP);\n\n\n \n setLoading(false);\n }, \n (error) => {\n setRows([]);\n setLoading(false);\n }\n )\n };\n\n useEffect(() => {\n loadData(page);\n }, [])\n\n const handleClick = (event, user) => {\n setSelectedItem(user)\n };\n\n const closeDialog = () => {\n setSelectedItem(undefined);\n };\n\n const handleChangePage = (event, newPage) => {\n setPage(newPage);\n loadData(newPage);\n };\n\n const handleChangeRowsPerPage = (event) => {\n setRowsPerPage(parseInt(event.target.value, 10));\n setPage(0);\n };\n\n const emptyRows = rowsPerPage - Math.min(rowsPerPage, rowsCount - page * rowsPerPage);\n\n return (\n
\n \n Success!\n \n
\n \n \n \n \n \n \n \n {rows\n .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)\n .map((row, index) => {\n const labelId = `enhanced-table-checkbox-${index}`;\n\n return (\n handleClick(event, row)}\n role=\"checkbox\"\n tabIndex={-1}\n key={row.id}\n >\n \n \n \n \n {e.preventDefault(); \n setSelectedUser(row.customerAccount);\n }}>{row.customerAccount.fullName}\n \n {Moment(new Date(row.date)).format('DD MMMM YYYY')}\n \n );\n })}\n {emptyRows > 0 && (\n \n \n \n )}\n \n \n \n \n \n \n \n \n \n \n \n \n Messages\n \n\n {/*(\n #f3f3f3\n \n )*/}\n \n \n \n {selectedItem !== undefined ? (\n
\n {selectedItem.messages.map((message, index) => {\n if (index === (selectedItem.messages.length - 1) && messageEnd !== null && messageEnd !== undefined) {\n messageEnd.scrollIntoView({ behavior: \"smooth\" });\n }\n if (message.self) {\n return (\n <>\n
\n
\n\n

{message.message}

\n\n {/*
11:30
*/}\n
\n
\n \n )\n } else {\n return (\n <>\n
\n
\n\n

{message.message}

\n\n {/*
11:30
*/}\n
\n
\n \n )\n }\n })}\n
{ setMessageEnd(el) }}>\n
\n
\n ) : null}\n
\n setShowError(false)} autoHideDuration={2500} anchorOrigin={{ vertical: 'top', horizontal: 'center' }} >\n \n {errorMessage}\n \n \n
\n setSelectedUser(undefined)} TransitionComponent={Transition}>\n \n \n setSelectedUser(undefined)} aria-label=\"close\">\n \n \n \n Account\n \n \n \n \n\n \n \n \n \n \n \n Account Info\n \n
\n\n {\n (selectedUser !== undefined && selectedUser.questions.length > 0) ? \n (\n
\n {selectedUser.questions\n .map((row, index) => {\n return (\n \n }\n aria-controls={('panel' + index) + \"bh-content\"}\n id={('panel' + index) + \"bh-header\"}>\n\n {row.question}\n {row.answer.length > 40 ? (row.answer.substring(0, 40) + \"...\") : row.answer}\n \n \n \n {row.answer}\n \n \n\n \n );\n })}\n
\n ) : (\n \n No account info exists\n \n )\n }\n\n
\n \n User Auto Services\n \n {selectedUser !== undefined ? : null}\n
\n {/*\n Owned Packages\n \n {this.state.selectedUser !== undefined ? : null}\n
*/}\n \n Transaction History\n \n {selectedUser !== undefined ? : null}\n\n
\n \n
\n
\n setShowSuccess(false)} autoHideDuration={2500} anchorOrigin={{ vertical: 'top', horizontal: 'center' }} >\n \n Success!\n \n \n
\n );\n}","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { lighten, makeStyles } from '@material-ui/core/styles';\nimport Table from '@material-ui/core/Table';\nimport TableBody from '@material-ui/core/TableBody';\nimport TableCell from '@material-ui/core/TableCell';\nimport TableContainer from '@material-ui/core/TableContainer';\nimport TableHead from '@material-ui/core/TableHead';\nimport TablePagination from '@material-ui/core/TablePagination';\nimport TableRow from '@material-ui/core/TableRow';\nimport TableSortLabel from '@material-ui/core/TableSortLabel';\nimport Toolbar from '@material-ui/core/Toolbar';\nimport Typography from '@material-ui/core/Typography';\nimport Paper from '@material-ui/core/Paper';\nimport IconButton from '@material-ui/core/IconButton';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport Switch from '@material-ui/core/Switch';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport FilterListIcon from '@material-ui/icons/FilterList';\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport { Session } from 'bc-react-session';\nimport Dialog from '@material-ui/core/Dialog';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport ListItem from '@material-ui/core/ListItem';\nimport List from '@material-ui/core/List';\nimport Divider from '@material-ui/core/Divider';\nimport CloseIcon from '@material-ui/icons/Close';\nimport Slide from '@material-ui/core/Slide';\nimport AppBar from '@material-ui/core/AppBar';\nimport Button from '@material-ui/core/Button';\nimport TextField from '@material-ui/core/TextField';\nimport Box from '@material-ui/core/Box';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport ExpansionPanel from '@material-ui/core/ExpansionPanel';\nimport ExpansionPanelDetails from '@material-ui/core/ExpansionPanelDetails';\nimport ExpansionPanelSummary from '@material-ui/core/ExpansionPanelSummary';\nimport Moment from 'moment';\nimport AddCircleOutlineIcon from '@material-ui/icons/AddCircleOutline';\nimport AddBoxIcon from '@material-ui/icons/AddBox';\nimport Snackbar from '@material-ui/core/Snackbar';\nimport MuiAlert from '@material-ui/lab/Alert';\nimport InputAdornment from '@material-ui/core/InputAdornment';\nimport {DropzoneDialog} from 'material-ui-dropzone'\nimport TransactionsView from './TransactionsView';\nimport NoProfilePic from '../images/NoProfilePic.jpg'\nimport ChatHistoryView from './ChatHistoryView';\n\nfunction Alert(props) {\n return ;\n}\n\nconst Transition = React.forwardRef(function Transition(props, ref) {\n return ;\n });\n\nconst headCells = [\n { id: 'profilepic', numeric: false, disablePadding: true, label: 'Profile Pic' },\n { id: 'fullName', numeric: false, disablePadding: false, label: 'Full Name' },\n { id: 'email', numeric: false, disablePadding: false, label: 'Email Address' },\n];\n\nfunction FormPadding() {\n return ( <>

);\n} \n\nfunction EnhancedTableHead(props) {\n return (\n \n \n \n \n \n {headCells.map((headCell) => (\n \n {headCell.label}\n \n ))}\n \n \n );\n}\n\nEnhancedTableHead.propTypes = {\n classes: PropTypes.object.isRequired,\n rowCount: PropTypes.number.isRequired,\n};\n\nconst useToolbarStyles = makeStyles((theme) => ({\n root: {\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(1),\n },\n highlight:\n theme.palette.type === 'light'\n ? {\n color: theme.palette.secondary.main,\n backgroundColor: lighten(theme.palette.secondary.light, 0.85),\n }\n : {\n color: theme.palette.text.primary,\n backgroundColor: theme.palette.secondary.dark,\n },\n title: {\n flex: '1 1 100%',\n },\n}));\n\nconst EnhancedTableToolbar = (props) => {\n const classes = useToolbarStyles();\n \n return (\n \n {(\n \n Support Users\n \n )}\n\n {props.onNew !== undefined ? (\n \n \n \n \n \n ) : null}\n \n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n width: '100%',\n },\n paper: {\n width: '100%',\n marginBottom: theme.spacing(2),\n },\n table: {\n //minWidth: 750,\n },\n visuallyHidden: {\n border: 0,\n clip: 'rect(0 0 0 0)',\n height: 1,\n margin: -1,\n overflow: 'hidden',\n padding: 0,\n position: 'absolute',\n top: 20,\n width: 1,\n },\n progressBarRoot: { },\n appBar: {\n position: 'relative',\n },\n title: {\n marginLeft: theme.spacing(2),\n flex: 1,\n },\n fullWidth: {\n width: '100%',\n },\n heading: {\n fontSize: theme.typography.pxToRem(15),\n flexBasis: '33.33%',\n flexShrink: 0,\n },\n secondaryHeading: {\n fontSize: theme.typography.pxToRem(15),\n color: theme.palette.text.secondary,\n },\n dialogRoot: {\n height: '100%'\n },\n horizontalCenter: {\n width: '300px'\n }\n}));\n \nexport default function SupportUsersView(props) {\n const classes = useStyles();\n const [page, setPage] = React.useState(0);\n const [loadedPages, setLoadedPages] = React.useState([]);\n const [rowsPerPage, setRowsPerPage] = React.useState(10);\n const [loading, setLoading] = React.useState(false);\n const [rows, setRows] = React.useState([]);\n const [rowsCount, setRowsCount] = React.useState(0);\n const [selectedItem, setSelecteItem] = React.useState(undefined);\n const [expanded, setExpanded] = React.useState(false);\n\n const [fullNameValue, setFullNameValue] = React.useState(\"\");\n const [emailValue, setEmailValue] = React.useState(\"\");\n const [passwordValue, setPasswordValue] = React.useState(\"\");\n const [saving, setSaving] = React.useState(false);\n\n const [showSuccess, setShowSuccess] = React.useState(false);\n const [errorMessage, setErrorMessage] = React.useState(\"\");\n const [showError, setShowError] = React.useState(false);\n\n const [showProfileUploadDialog, setShowProfileUploadDialog] = React.useState(false);\n\n /*props.loadData((data) => {\n setRows(data);\n setLoading(false);\n });*/\n\n const loadData = (page, ignoreLoadedPages) => {\n if ((ignoreLoadedPages === undefined || false) && loadedPages.includes(page)) {\n return;\n }\n\n //setRows([]);\n setLoading(true);\n\n fetch('/api/backend/account/get-support-users/' + page, {\n method: 'get',\n headers: {\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n }\n })\n .then(res => res.json())\n .then(\n (result) => {\n if (page === 0) {\n setRowsCount(result.total);\n }\n\n let r = rows;\n r = r.concat(result.list);\n setRows(r);\n \n\n let lP = loadedPages;\n lP.push(page);\n setLoadedPages(lP);\n\n\n setLoading(false);\n }, \n (error) => {\n setRows([]);\n setLoading(false);\n }\n )\n };\n\n useEffect(() => {\n loadData(page);\n }, [])\n\n const saveData = () => {\n if (emailValue.trim() === \"\") {\n setErrorMessage(\"Email can not be empty\");\n setShowError(true)\n return;\n }\n\n if (fullNameValue.trim() === \"\") {\n setErrorMessage(\"Full name can not be empty\");\n setShowError(true)\n return;\n }\n\n if (selectedItem.id === 0 && passwordValue.trim() === \"\") {\n setErrorMessage(\"Password can not be empty\");\n setShowError(true)\n return;\n }\n\n setSaving(true)\n\n fetch('/api/backend/account/save-support-user', {\n method: 'post',\n headers: {\n \"Content-Type\": \"application/json\",\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n },\n body: JSON.stringify({\n id: selectedItem.id,\n email: emailValue,\n password: passwordValue,\n fullName: fullNameValue\n })\n })\n .then(res => res.json())\n .then(\n (result) => {\n if (result.responseCode === 0) {\n setShowSuccess(true)\n closeDialog();\n\n var updated = false;\n for (var i = 0; i < rows.length; i++) {\n if (rows[i].id === result.payload.id) {\n rows[i] = result.payload;\n updated = true;\n break;\n }\n }\n if (!updated) {\n setRowsCount(rowsCount + 1);\n\n rows.unshift(result.payload);\n if (rows.length > 1) {\n if ((rows.length - 1) % 10 === 0) {\n rows.pop();\n }\n }\n\n setPage(0);\n }\n } else {\n if (result.payload !== undefined && result.payload !== null) {\n setErrorMessage(result.payload);\n } else {\n setErrorMessage(\"Error\");\n }\n setShowError(true)\n }\n setSaving(false)\n }, \n (error) => {\n setErrorMessage(\"Error\");\n setShowError(true)\n\n setSaving(false)\n }\n )\n\n };\n\n const uploadProfileFile = (files) => {\n if (files !== undefined && files.length > 0) {\n setSaving(true)\n\n const data = new FormData();\n data.append('profile-pic', files[0]);\n\n fetch('/api/backend/account/upload-profile-pic/' + selectedItem.id, {\n method: 'post',\n headers: {\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n },\n body: data\n })\n .then(res => res.text())\n .then(\n (result) => {\n if (result !== undefined && result === 'true') {\n for (var i = 0; i < rows.length; i++) {\n if (rows[i].id === selectedItem.id) {\n rows[i].profileSuffix = Math.random();\n break;\n }\n }\n\n setShowSuccess(true)\n closeDialog();\n } else {\n setErrorMessage(\"Error\");\n setShowError(true)\n }\n setSaving(false)\n }, \n (error) => {\n setErrorMessage(\"Error\");\n setShowError(true)\n setSaving(false)\n }\n )\n }\n };\n\nconst onNew = () => {\n var item = {\n id: 0,\n fullName: '',\n email: '',\n password: '',\n }\n\n setSelecteItem(item)\n setFullNameValue(item.fullName);\n setEmailValue(item.email);\n setPasswordValue(item.password);\n}\n\n const handleClick = (event, item) => {\n setSelecteItem(item)\n setFullNameValue(item.fullName);\n setEmailValue(item.email);\n setPasswordValue(item.password);\n };\n\n const closeDialog = () => {\n setSelecteItem(undefined)\n setFullNameValue('');\n setEmailValue('');\n setPasswordValue('');\n };\n\n const handleChangePage = (event, newPage) => {\n setPage(newPage);\n loadData(newPage);\n };\n\n const emptyRows = rowsPerPage - Math.min(rowsPerPage, rowsCount - page * rowsPerPage);\n\n return (\n
\n \n Success!\n \n
\n \n \n \n \n \n \n \n {rows\n .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)\n .map((row, index) => {\n const labelId = `enhanced-table-checkbox-${index}`;\n\n return (\n handleClick(event, row)}\n role=\"checkbox\"\n tabIndex={-1}\n key={row.id}\n >\n \n \n \n \n {e.target.onError = null; e.target.src = NoProfilePic}} />\n \n {row.fullName}\n {row.email}\n \n );\n })}\n {emptyRows > 0 && (\n \n \n \n )}\n \n \n \n \n \n \n \n \n \n \n \n \n \n Support User\n \n \n {props.userId === undefined ? (\n \n ) : null}\n \n \n \n\n setFullNameValue(e.target.value)} />\n \n setEmailValue(e.target.value)} />\n \n setPasswordValue(e.target.value)} />\n \n\n {\n (selectedItem !== undefined && selectedItem.id > 0) ? \n (\n <>\n\n\n\n\n Uploaded Profile Picture\n \n
\n {e.target.onError = null; e.target.src = NoProfilePic}} />\n
\n
\n
\n \n setShowProfileUploadDialog(false)}\n onSave={(files) => {setShowProfileUploadDialog(false); uploadProfileFile(files)}}\n maxFileSize={5000000}\n /> \n
\n\n \n \n
\n \n ) : (\n <>\n )\n }\n\n
\n \n Support Chat Session History\n \n {selectedItem !== undefined ? : null}\n \n\n
\n setShowError(false)} autoHideDuration={2500} anchorOrigin={{ vertical: 'top', horizontal: 'center' }} >\n \n {errorMessage}\n \n \n
\n setShowSuccess(false)} autoHideDuration={2500} anchorOrigin={{ vertical: 'top', horizontal: 'center' }} >\n \n Success!\n \n \n
\n );\n}","import React from 'react';\nimport NoProfilePic from '../images/NoProfilePic.jpg'\n\nimport List from '@material-ui/core/List';\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport Divider from '@material-ui/core/Divider';\nimport InboxIcon from '@material-ui/icons/Inbox';\nimport DraftsIcon from '@material-ui/icons/Drafts';\nimport { Session } from 'bc-react-session';\nimport { Backdrop, CircularProgress, Snackbar, Typography, Button, AppBar, Toolbar, IconButton, Dialog, Badge, TextField, Slide, Box } from '@material-ui/core';\nimport Alert from '@material-ui/lab/Alert';\nimport moment from 'moment';\nimport AccountCircle from '@material-ui/icons/AccountCircle';\nimport TransactionsView from '../views/TransactionsView';\nimport PackagesView from '../views/PackagesView';\nimport AutoServicesView from '../views/AutoServicesView';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport ExpansionPanel from '@material-ui/core/ExpansionPanel';\nimport ExpansionPanelDetails from '@material-ui/core/ExpansionPanelDetails';\nimport ExpansionPanelSummary from '@material-ui/core/ExpansionPanelSummary';\nimport CloseIcon from '@material-ui/icons/Close';\n\nimport SendIcon from '@material-ui/icons/Send';\n\nconst Transition = React.forwardRef(function Transition(props, ref) {\n return ;\n});\n\nfunction FormPadding() {\n return ( <>

);\n} \n\nconst classes = {\n root: {\n width: '100%',\n },\n paper: {\n width: '100%',\n marginBottom: '25px',\n },\n table: {\n //minWidth: 750,\n },\n visuallyHidden: {\n border: 0,\n clip: 'rect(0 0 0 0)',\n height: 1,\n margin: -1,\n overflow: 'hidden',\n padding: 0,\n position: 'absolute',\n top: 20,\n width: 1,\n },\n progressBarRoot: { },\n appBar: {\n position: 'relative',\n },\n title: {\n marginLeft: '25px',\n flex: 1,\n },\n fullWidth: {\n width: '100%',\n },\n heading: {\n fontSize: '15px',\n flexBasis: '33.33%',\n flexShrink: 0,\n },\n secondaryHeading: {\n fontSize: '15px',\n color: '#cecece',\n },\n dialogRoot: {\n height: '100%'\n },\n horizontalCenter: {\n width: '300px'\n }\n };\n\nexport default class SupportUserBackendPage extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.state = {\n loading: true,\n showSuccess: false,\n showError: false,\n errorMessage: undefined,\n rooms: [],\n selectedRoomMessages: [],\n selectedRoom: undefined,\n ws: undefined,\n sendMessage: \"\",\n sendingMessage: false\n }\n }\n\n setLoading(loading) {\n this.setState({loading: loading})\n }\n\n showSuccess() {\n this.setState({showSuccess: true});\n }\n\n showError(errorMessage) {\n this.setState({\n showError: true,\n errorMessage: errorMessage\n })\n }\n\n componentDidMount() {\n this.connect();\n }\n\n timeout = 250; // Initial timeout duration as a class variable\n\n /**\n * @function connect\n * This function establishes the connect with the websocket and also ensures constant reconnection if connection closes\n */\n connect = () => {\n this.setLoading(true);\n var ws = new WebSocket(\"ws://carzilla.4co.co:8081/api/public/app\") \n //var ws = new WebSocket(\"ws://localhost:8082/api/public/app\") \n let that = this; // cache the this\n var connectInterval;\n\n // websocket onopen event listener\n ws.onopen = () => {\n ws.send(JSON.stringify({\n message: 0,\n payload: \"Bearer \" + Session.get().payload.token\n }))\n\n this.setState({ ws: ws });\n\n that.timeout = 250; // reset timer to 250 on open of websocket connection \n clearTimeout(connectInterval); // clear Interval on on open of websocket connection\n };\n\n ws.onmessage = e => {\n if (this.state.ws === ws) {\n this.onWebSocketMessage(e);\n }\n }\n\n // websocket onclose event listener\n ws.onclose = e => {\n that.timeout = that.timeout + that.timeout; //increment retry interval\n connectInterval = setTimeout(this.check, Math.min(10000, that.timeout)); //call check function after timeout\n };\n\n // websocket onerror event listener\n ws.onerror = err => {\n ws.close();\n };\n };\n\n /**\n * utilited by the @function connect to check if the connection is close, if so attempts to reconnect\n */\n check = () => {\n const { ws } = this.state;\n if (!ws || ws.readyState == WebSocket.CLOSED) this.connect(); //check if websocket instance is closed, if so call `connect` function.\n };\n\n onWebSocketMessage(event) {\n const message = JSON.parse(event.data);\n switch (message.message) {\n case 1:\n this.loadRooms();\n break;\n\n case 3:\n const messageObject = JSON.parse(message.payload);\n const rooms = this.state.rooms;\n for (let i = 0; i < rooms.length; i++) {\n const room = rooms[i];\n if (room.id === messageObject.roomId) {\n room.latestMessage = messageObject.message;\n room.latestMessageSelf = false;\n this.setState({rooms: rooms})\n\n if (this.state.selectedRoom === room && this.state.selectedRoomMessages !== undefined) {\n messageObject.self = false\n this.state.selectedRoomMessages.push(messageObject);\n this.setState({\n selectedRoomMessages: this.state.selectedRoomMessages,\n }, () => {\n this.messagesEnd.scrollIntoView({ behavior: \"smooth\" });\n });\n }\n break;\n }\n }\n break; \n\n case 5: {\n //on chat request\n const rooms = this.state.rooms;\n rooms.push(JSON.parse(message.payload))\n this.setState({rooms: rooms})\n } \n break;\n\n case 6: {\n const rooms = this.state.rooms;\n for (let i = 0; i < rooms.length; i++) {\n const room = rooms[i];\n if (room.id == message.payload) {\n rooms.splice(i, 1);\n this.setState({rooms: rooms})\n break;\n }\n }\n }\n break;\n }\n }\n\n loadRooms() {\n fetch('/api/support/chat/get-rooms', {\n method: 'get',\n headers: {\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n }\n })\n .then(res => res.json())\n .then(\n (result) => {\n if (result.responseCode === 0) {\n this.setState({\n rooms: result.payload,\n selectedRoom: undefined,\n selectedRoomMessages: [],\n })\n } else {\n this.showError((result.payload !== undefined && result.payload !== null) ? result.payload : undefined);\n }\n this.setLoading(false);\n }, \n (error) => {\n this.showError();\n this.setLoading(false);\n }\n )\n } \n\n loadMessages(room) {\n this.setLoading(true);\n fetch('/api/support/chat/get-messages/' + room.id, {\n method: 'get',\n headers: {\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n }\n })\n .then(res => res.json())\n .then(\n (result) => {\n if (result.responseCode === 0) {\n this.setState({\n selectedRoomMessages: result.payload,\n }, () => {\n this.messagesEnd.scrollIntoView({ behavior: \"smooth\" });\n });\n } else {\n this.showError((result.payload !== undefined && result.payload !== null) ? result.payload : undefined);\n }\n this.setLoading(false);\n }, \n (error) => {\n this.showError();\n this.setLoading(false);\n }\n )\n }\n\n onEndSession(room) {\n if (!window.confirm(\"Are you sure you want to end the session with \" + room.customerAccount.fullName + \"?\")) {\n return;\n }\n\n this.setLoading(true);\n\n fetch('/api/support/chat/done-room/' + room.id, {\n method: 'get',\n headers: {\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n }\n })\n .then(res => res.json())\n .then(\n (result) => {\n if (result.responseCode === 0) {\n const rooms = this.state.rooms;\n rooms.splice(rooms.indexOf(room), 1);\n this.setState({\n selectedRoom: undefined\n })\n\n /*this.setState({\n rooms: result.payload,\n })*/\n this.showSuccess();\n } else {\n this.showError((result.payload !== undefined && result.payload !== null) ? result.payload : undefined);\n }\n this.setLoading(false);\n }, \n (error) => {\n this.showError();\n this.setLoading(false);\n }\n )\n }\n\n onAcceptSession(room) {\n this.setLoading(true);\n\n fetch('/api/support/chat/accept-room/' + room.id, {\n method: 'get',\n headers: {\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n }\n })\n .then(res => res.json())\n .then(\n (result) => {\n if (result.responseCode === 0) {\n \n room.status = 1;\n\n this.showSuccess();\n } else {\n this.showError((result.payload !== undefined && result.payload !== null) ? result.payload : undefined);\n }\n this.setLoading(false);\n }, \n (error) => {\n this.showError();\n this.setLoading(false);\n }\n )\n }\n\n setRoomAway(room) {\n this.setLoading(true);\n\n fetch('/api/support/chat/away-room/' + room.id + \"/\" + !room.supportUserAway, {\n method: 'get',\n headers: {\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n }\n })\n .then(res => res.json())\n .then(\n (result) => {\n if (result.responseCode === 0) {\n room.supportUserAway = !room.supportUserAway;\n this.showSuccess();\n } else {\n this.showError((result.payload !== undefined && result.payload !== null) ? result.payload : undefined);\n }\n this.setLoading(false);\n }, \n (error) => {\n this.showError();\n this.setLoading(false);\n }\n )\n }\n\n onSendMessageBtn(room) {\n if (this.state.sendMessage.trim() === \"\") {\n return;\n }\n\n if (this.state.sendMessage.length > 200) {\n this.showError(\"Message too long (max is 200)\")\n return;\n }\n\n this.setState({\n sendingMessage: true\n })\n\n fetch('/api/support/chat/send-message/', {\n method: 'post',\n headers: {\n \"Content-Type\": \"application/json\",\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n },\n body: JSON.stringify({\n roomId: room.id,\n message: this.state.sendMessage\n })\n })\n .then(res => res.json())\n .then(\n (result) => {\n if (result.responseCode === 0) {\n this.setState({\n sendMessage: \"\",\n })\n\n room.latestMessage = result.payload.message;\n room.latestMessageSelf = true;\n\n if (this.state.selectedRoom === room && this.state.selectedRoomMessages !== undefined) {\n result.payload.self = true;\n this.state.selectedRoomMessages.push(result.payload);\n\n this.setState({\n selectedRoomMessages: this.state.selectedRoomMessages,\n }, () => {\n this.messagesEnd.scrollIntoView({ behavior: \"smooth\" });\n });\n }\n\n } else {\n this.showError((result.payload !== undefined && result.payload !== null) ? result.payload : undefined);\n }\n this.setState({\n sendingMessage: false\n })\n }, \n (error) => {\n this.showError();\n this.setState({\n sendingMessage: false\n })\n }\n )\n }\n\n handleChange = (panel) => (event, isExpanded) => {\n this.setState({expanded: isExpanded ? panel : false});\n };\n\n render() {\n return (\n
\n this.setState({showSuccess: false})} anchorOrigin={{ vertical: 'top', horizontal: 'center' }}>\n \n Success!\n \n \n\n this.setState({showError: false, errorMessage: undefined})} anchorOrigin={{ vertical: 'top', horizontal: 'center' }}>\n \n {this.state.errorMessage !== undefined ? this.state.errorMessage : \"Error\"}\n \n \n\n
\n {this.state.rooms.length > 0 ? (\n \n {this.state.rooms.map((room) => {\n return (\n <>\n {\n this.setState({selectedRoom: room});\n this.loadMessages(room);\n }}\n >\n \n \n {room.customerAccount.fullName}\n \n \n } secondary={\n <>\n \n {room.latestMessage}\n \n \n {/*' - ' + moment(new Date(room.latestUpdateDate)).format('HH:mm')*/}\n \n } />\n {room.status === 0 ? (\n <>\n \n \n ) : null}\n \n \n \n \n )\n })}\n \n ) : (\n
\n
No chats
\n
\n )}\n \n
\n
\n {this.state.selectedRoom !== undefined ? (\n
\n \n \n {this.state.selectedRoom.customerAccount.fullName}\n
\n {this.state.selectedRoom.status !== 0 ? (\n \n ) : null}\n {this.state.selectedRoom.status !== 0 ? (\n \n ) : null}\n this.setState({selectedUser: this.state.selectedRoom.customerAccount})}\n aria-label=\"account of current user\"\n aria-haspopup=\"true\"\n color=\"inherit\">\n \n \n \n \n
\n {this.state.selectedRoomMessages.map((message) => {\n if (message.self) {\n return (\n <>\n
\n
\n\n

{message.message}

\n\n {/*
11:30
*/}\n
\n
\n \n )\n } else {\n return (\n <>\n
\n
\n\n

{message.message}

\n\n {/*
11:30
*/}\n
\n
\n \n )\n }\n })}\n
{ this.messagesEnd = el; }}>\n
\n
\n {this.state.selectedRoom.status !== 0 ? (\n
\n {\n if (ev.key === 'Enter') {\n this.onSendMessageBtn(this.state.selectedRoom);\n ev.preventDefault();\n }\n }}\n label=\"Message\"\n placeholder=\"Message\"\n fullWidth\n margin=\"normal\"\n InputLabelProps={{\n shrink: true,\n }}\n variant=\"filled\"\n value={this.state.sendMessage}\n onChange={e => this.setState({sendMessage: e.target.value})}\n />\n \n \n
\n ) : null}\n
\n ) : (\n
\n
No chat selected
\n
\n )}\n
\n this.setState({selectedUser: undefined})} TransitionComponent={Transition}>\n \n \n this.setState({selectedUser: undefined})} aria-label=\"close\">\n \n \n \n Account\n \n \n \n \n \n \n \n \n \n \n \n \n Account Info\n \n
\n\n {\n (this.state.selectedUser !== undefined && this.state.selectedUser.questions.length > 0) ? \n (\n
\n {this.state.selectedUser.questions\n .map((row, index) => {\n return (\n \n }\n aria-controls={('panel' + index) + \"bh-content\"}\n id={('panel' + index) + \"bh-header\"}>\n\n {row.question + \": \"}\n {\" \" + row.answer.length > 40 ? (row.answer.substring(0, 40) + \"...\") : row.answer}\n \n \n \n {row.answer}\n \n \n\n \n );\n })}\n
\n ) : (\n \n No account info exists\n \n )\n }\n\n
\n \n User Auto Services\n \n {this.state.selectedUser !== undefined ? : null}\n
\n {/*\n Owned Packages\n \n {this.state.selectedUser !== undefined ? : null}\n
*/}\n \n Transaction History\n \n {this.state.selectedUser !== undefined ? : null}\n\n
\n \n
\n
\n \n \n \n
\n );\n }\n}","import React, { forwardRef } from 'react';\nimport MaterialTable from 'material-table';\n\nimport AddBox from '@material-ui/icons/AddBox';\nimport ArrowDownward from '@material-ui/icons/ArrowDownward';\nimport Check from '@material-ui/icons/Check';\nimport ChevronLeft from '@material-ui/icons/ChevronLeft';\nimport ChevronRight from '@material-ui/icons/ChevronRight';\nimport Clear from '@material-ui/icons/Clear';\nimport DeleteOutline from '@material-ui/icons/DeleteOutline';\nimport Edit from '@material-ui/icons/Edit';\nimport FilterList from '@material-ui/icons/FilterList';\nimport FirstPage from '@material-ui/icons/FirstPage';\nimport LastPage from '@material-ui/icons/LastPage';\nimport Remove from '@material-ui/icons/Remove';\nimport SaveAlt from '@material-ui/icons/SaveAlt';\nimport Search from '@material-ui/icons/Search';\nimport ViewColumn from '@material-ui/icons/ViewColumn';\nimport ReplayIcon from '@material-ui/icons/Replay';\nimport { Paper, Button, Snackbar, Typography } from '@material-ui/core';\nimport { Session } from 'bc-react-session';\n\nimport Moment from 'moment';\n\nimport LoadingOverlay from 'react-loading-overlay';\nimport Alert from '@material-ui/lab/Alert';\nimport { Link } from 'react-router-dom';\n\nconst RELOAD_TIME = 2 * 60;\n//const RELOAD_TIME = 5;\n\nconst tableIcons = {\n Add: forwardRef((props, ref) => ),\n Check: forwardRef((props, ref) => ),\n Clear: forwardRef((props, ref) => ),\n Delete: forwardRef((props, ref) => ),\n DetailPanel: forwardRef((props, ref) => ),\n Edit: forwardRef((props, ref) => ),\n Export: forwardRef((props, ref) => ),\n Filter: forwardRef((props, ref) => ),\n FirstPage: forwardRef((props, ref) => ),\n LastPage: forwardRef((props, ref) => ),\n NextPage: forwardRef((props, ref) => ),\n PreviousPage: forwardRef((props, ref) => ),\n ResetSearch: forwardRef((props, ref) => ),\n Search: forwardRef((props, ref) => ),\n SortArrow: forwardRef((props, ref) => ),\n ThirdStateCheck: forwardRef((props, ref) => ),\n ViewColumn: forwardRef((props, ref) => )\n};\n \nconst formatSeconds = (duration) => {\n // Hours, minutes and seconds\n var hrs = ~~(duration / 3600);\n var mins = ~~((duration % 3600) / 60);\n var secs = ~~duration % 60;\n \n // Output like \"1:01\" or \"4:03:59\" or \"123:03:59\"\n var ret = \"\";\n \n if (hrs > 0) {\n ret += \"\" + hrs + \":\" + (mins < 10 ? \"0\" : \"\");\n }\n \n ret += \"\" + mins + \":\" + (secs < 10 ? \"0\" : \"\");\n ret += \"\" + secs;\n return ret;\n }\n\nexport default class TruckAssignerView extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.state = {\n loading: true,\n selectedAssignation: undefined,\n awaitingAssignationsData: [],\n availableTrucksData: [],\n assignedTrucksData: [],\n showSuccess: false,\n showError: false,\n errorMessage: undefined,\n timerValue: 0\n }\n }\n\n setLoading(loading) {\n this.setState({loading: loading})\n }\n\n showSuccess() {\n this.setState({showSuccess: true});\n }\n\n showError(errorMessage) {\n this.setState({\n showError: true,\n errorMessage: errorMessage\n })\n }\n\n reloadNow() {\n this.setState({\n timerValue: 0,\n loading: true,\n selectedAssignation: undefined,\n showSuccess: false,\n showError: false,\n errorMessage: undefined,\n }, () => setTimeout(() => this.loadData(), 1000))\n }\n\n componentDidMount() {\n this.loadData();\n\n this.timerInterval = setInterval(() => {\n this.setState(prevState => {\n const newValue = prevState.timerValue + 1;\n if (newValue > RELOAD_TIME) {\n return {\n timerValue: 0,\n loading: true,\n selectedAssignation: undefined,\n showSuccess: false,\n showError: false,\n errorMessage: undefined,\n };\n } else {\n return {\n timerValue: newValue\n };\n }\n }, () => {\n if (this.state.timerValue >= RELOAD_TIME) {\n setTimeout(() => this.loadData(), 1000)\n //this.loadData();\n // this.loadData();\n }\n })\n }, 1000);\n }\n\n componentWillUnmount() {\n clearInterval(this.timerInterval);\n }\n\n loadData() {\n fetch('/api/backend/truck-assigner/get-data', {\n method: 'get',\n headers: {\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n }\n })\n .then(res => res.json())\n .then(\n (result) => {\n if (result.responseCode === 0) {\n this.setState({\n awaitingAssignationsData: result.payload.awaitingAssignations,\n availableTrucksData: result.payload.availableTrucks,\n assignedTrucksData: result.payload.assignedTrucks\n })\n } else {\n this.setState({\n awaitingAssignationsData: [],\n availableTrucksData: [],\n assignedTrucksData: []\n })\n this.showError((result.payload !== undefined && result.payload !== null) ? result.payload : undefined);\n }\n this.setLoading(false);\n }, \n (error) => {\n this.setState({\n awaitingAssignationsData: [],\n availableTrucksData: [],\n assignedTrucksData: []\n })\n this.showError();\n this.setLoading(false);\n }\n )\n }\n\n onUpdateSuccess() {\n this.showSuccess();\n this.setLoading(true);\n this.loadData();\n }\n\n assignTruck(awaitingAssignation, availableTruck) {\n var path;\n if (awaitingAssignation.assignationType === 0) {\n path = \"/api/backend/auto-service/auto-service-assign-truck/\" + awaitingAssignation.autoServiceId + \"/\" + availableTruck.truckDriverId;\n } else if (awaitingAssignation.assignationType === 1) {\n path = \"/api/backend/auto-service/auto-service-start-delivery/\" + awaitingAssignation.autoServiceId + \"/\" + availableTruck.truckDriverId;\n } else {\n return;\n }\n\n this.setLoading(true);\n fetch(path, {\n method: 'get',\n headers: {\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n }\n })\n .then(res => res.json())\n .then(\n (result) => {\n this.setLoading(false);\n if (result.responseCode === 0) {\n this.setState({selectedAssignation: undefined})\n this.onUpdateSuccess();\n } else {\n this.showError((result.payload !== undefined && result.payload !== null) ? result.payload : undefined);\n }\n }, \n (error) => {\n this.showError();\n this.setLoading(false);\n }\n )\n }\n\n cancelAssignation(autoServiceId) {\n if (!window.confirm(\"Are you sure you want to cancel assignation?\")) {\n return;\n }\n\n this.setLoading(true);\n fetch(\"/api/backend/auto-service/auto-service-cancel-assignation/\" + autoServiceId, {\n method: 'get',\n headers: {\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n }\n })\n .then(res => res.json())\n .then(\n (result) => {\n this.setLoading(false);\n if (result.responseCode === 0) {\n this.onUpdateSuccess();\n } else {\n this.showError((result.payload !== undefined && result.payload !== null) ? result.payload : undefined);\n }\n }, \n (error) => {\n this.showError();\n this.setLoading(false);\n }\n )\n }\n\n onVehicleTowed(autoServiceId) {\n this.setLoading(true);\n fetch(\"/api/backend/auto-service/auto-service-truck-towed/\" + autoServiceId, {\n method: 'get',\n headers: {\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n }\n })\n .then(res => res.json())\n .then(\n (result) => {\n this.setLoading(false);\n if (result.responseCode === 0) {\n this.onUpdateSuccess();\n } else {\n this.showError((result.payload !== undefined && result.payload !== null) ? result.payload : undefined);\n }\n }, \n (error) => {\n this.showError();\n this.setLoading(false);\n }\n )\n }\n\n onVehicleArrived(autoServiceId) {\n this.setLoading(true);\n fetch('/api/backend/auto-service/auto-service-reached-garage/' + autoServiceId, {\n method: 'get',\n headers: {\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n }\n })\n .then(res => res.json())\n .then(\n (result) => {\n this.setLoading(false);\n if (result.responseCode === 0) {\n this.onUpdateSuccess();\n } else {\n this.showError((result.payload !== undefined && result.payload !== null) ? result.payload : undefined);\n }\n }, \n (error) => {\n this.showError();\n this.setLoading(false);\n }\n )\n }\n\n onVehicleDeliveryComplete(autoServiceId) {\n this.setLoading(true);\n fetch('/api/backend/auto-service/auto-service-returned/' + autoServiceId, {\n method: 'get',\n headers: {\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n }\n })\n .then(res => res.json())\n .then(\n (result) => {\n this.setLoading(false);\n if (result.responseCode === 0) {\n this.onUpdateSuccess();\n } else {\n this.showError((result.payload !== undefined && result.payload !== null) ? result.payload : undefined);\n }\n }, \n (error) => {\n this.showError();\n this.setLoading(false);\n }\n )\n }\n\n render() {\n return (\n
\n this.setState({showSuccess: false})} anchorOrigin={{ vertical: 'top', horizontal: 'center' }}>\n \n Success!\n \n \n\n this.setState({showError: false, errorMessage: undefined})} anchorOrigin={{ vertical: 'top', horizontal: 'center' }}>\n \n {this.state.errorMessage !== undefined ? this.state.errorMessage : \"Error\"}\n \n \n\n ({\n ...base,\n height: '100%',\n width: '100%'\n })\n }}\n fadeSpeed={250}\n active={this.state.loading}\n spinner\n text='Loading'>\n
\n \n Truck Assigner\n \n \n \n \n
\n
\n
\n \n \n \n {row.location}\n \n },\n {\n title: 'Type',\n field: 'assignationType',\n lookup: { 0: 'For Pickup', 1: 'For Delivery'},\n },\n {\n title: \"Schedule\", render: row => (\n \n {row.scheduledDate > 0 ? Moment(new Date(row.scheduledDate)).format('DD MMMM YYYY HH:mm') : \"Now\"}\n \n )\n }\n ]}\n data={this.state.awaitingAssignationsData}\n onRowClick={(evt, selectedRow) => {\n if (this.state.selectedAssignation !== undefined && this.state.selectedAssignation.tableData.id === selectedRow.tableData.id) {\n this.setState({selectedAssignation: undefined});\n } else {\n this.setState({selectedAssignation: selectedRow});\n }\n }}\n options={{\n search: false,\n sorting: false,\n paging: false,\n draggable: false,\n rowStyle: rowData => ({\n backgroundColor: (this.state.selectedAssignation !== undefined && this.state.selectedAssignation.tableData.id === rowData.tableData.id) ? '#EEE' : ''\n })\n }}/>\n \n
\n \n \n \n {row.location}\n \n },\n ]}\n data={this.state.availableTrucksData}\n onRowClick={this.state.selectedAssignation !== undefined ? (env, row) => \n this.assignTruck(this.state.selectedAssignation, row) : undefined}\n options={{\n search: false,\n sorting: false,\n paging: false,\n draggable: false,\n }}/>\n \n
\n
\n \n \n \n {row.location}\n \n },\n {\n title: 'Type',\n field: 'assignationType',\n lookup: { 0: 'For Pickup', 1: 'For Delivery'},\n },\n {\n title: '',\n render: rowData => rowData.assignationType === 0 ?\n rowData.autoServiceTowed ? \n
\n \n
\n :\n
\n \n \n
\n :\n
\n \n \n
\n }\n ]}\n data={this.state.assignedTrucksData}\n options={{\n search: false,\n sorting: false,\n paging: false,\n draggable: false,\n actionsColumnIndex: -1\n }}/>\n
\n \n
\n )\n }\n\n}","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { lighten, makeStyles } from '@material-ui/core/styles';\nimport Table from '@material-ui/core/Table';\nimport TableBody from '@material-ui/core/TableBody';\nimport TableCell from '@material-ui/core/TableCell';\nimport TableContainer from '@material-ui/core/TableContainer';\nimport TableHead from '@material-ui/core/TableHead';\nimport TablePagination from '@material-ui/core/TablePagination';\nimport TableRow from '@material-ui/core/TableRow';\nimport TableSortLabel from '@material-ui/core/TableSortLabel';\nimport Toolbar from '@material-ui/core/Toolbar';\nimport Typography from '@material-ui/core/Typography';\nimport Paper from '@material-ui/core/Paper';\nimport IconButton from '@material-ui/core/IconButton';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport Switch from '@material-ui/core/Switch';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport FilterListIcon from '@material-ui/icons/FilterList';\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport { Session } from 'bc-react-session';\nimport Dialog from '@material-ui/core/Dialog';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport ListItem from '@material-ui/core/ListItem';\nimport List from '@material-ui/core/List';\nimport Divider from '@material-ui/core/Divider';\nimport CloseIcon from '@material-ui/icons/Close';\nimport Slide from '@material-ui/core/Slide';\nimport AppBar from '@material-ui/core/AppBar';\nimport Button from '@material-ui/core/Button';\nimport TextField from '@material-ui/core/TextField';\nimport Box from '@material-ui/core/Box';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport ExpansionPanel from '@material-ui/core/ExpansionPanel';\nimport ExpansionPanelDetails from '@material-ui/core/ExpansionPanelDetails';\nimport ExpansionPanelSummary from '@material-ui/core/ExpansionPanelSummary';\nimport Moment from 'moment';\nimport AddCircleOutlineIcon from '@material-ui/icons/AddCircleOutline';\nimport AddBoxIcon from '@material-ui/icons/AddBox';\nimport Snackbar from '@material-ui/core/Snackbar';\nimport MuiAlert from '@material-ui/lab/Alert';\nimport InputAdornment from '@material-ui/core/InputAdornment';\nimport {DropzoneDialog} from 'material-ui-dropzone'\nimport TransactionsView from './TransactionsView';\n\nfunction Alert(props) {\n return ;\n}\n\nconst Transition = React.forwardRef(function Transition(props, ref) {\n return ;\n });\n\nconst headCells = [\n { id: 'fullName', numeric: false, disablePadding: true, label: 'Full Name' },\n { id: 'email', numeric: false, disablePadding: false, label: 'Email Address' },\n];\n\nfunction FormPadding() {\n return ( <>

);\n} \n\nfunction EnhancedTableHead(props) {\n return (\n \n \n \n \n \n {headCells.map((headCell) => (\n \n {headCell.label}\n \n ))}\n \n \n );\n}\n\nEnhancedTableHead.propTypes = {\n classes: PropTypes.object.isRequired,\n rowCount: PropTypes.number.isRequired,\n};\n\nconst useToolbarStyles = makeStyles((theme) => ({\n root: {\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(1),\n },\n highlight:\n theme.palette.type === 'light'\n ? {\n color: theme.palette.secondary.main,\n backgroundColor: lighten(theme.palette.secondary.light, 0.85),\n }\n : {\n color: theme.palette.text.primary,\n backgroundColor: theme.palette.secondary.dark,\n },\n title: {\n flex: '1 1 100%',\n },\n}));\n\nconst EnhancedTableToolbar = (props) => {\n const classes = useToolbarStyles();\n \n return (\n \n {(\n \n Garage Staff\n \n )}\n\n {props.onNew !== undefined ? (\n \n \n \n \n \n ) : null}\n \n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n width: '100%',\n },\n paper: {\n width: '100%',\n marginBottom: theme.spacing(2),\n },\n table: {\n //minWidth: 750,\n },\n visuallyHidden: {\n border: 0,\n clip: 'rect(0 0 0 0)',\n height: 1,\n margin: -1,\n overflow: 'hidden',\n padding: 0,\n position: 'absolute',\n top: 20,\n width: 1,\n },\n progressBarRoot: { },\n appBar: {\n position: 'relative',\n },\n title: {\n marginLeft: theme.spacing(2),\n flex: 1,\n },\n fullWidth: {\n width: '100%',\n },\n heading: {\n fontSize: theme.typography.pxToRem(15),\n flexBasis: '33.33%',\n flexShrink: 0,\n },\n secondaryHeading: {\n fontSize: theme.typography.pxToRem(15),\n color: theme.palette.text.secondary,\n },\n dialogRoot: {\n height: '100%'\n },\n horizontalCenter: {\n width: '300px'\n }\n}));\n \nexport default function StaffViewerView(props) {\n const classes = useStyles();\n const [page, setPage] = React.useState(0);\n const [loadedPages, setLoadedPages] = React.useState([]);\n const [rowsPerPage, setRowsPerPage] = React.useState(10);\n const [loading, setLoading] = React.useState(false);\n const [rows, setRows] = React.useState([]);\n const [rowsCount, setRowsCount] = React.useState(0);\n const [selectedItem, setSelecteItem] = React.useState(undefined);\n const [expanded, setExpanded] = React.useState(false);\n\n const [fullNameValue, setFullNameValue] = React.useState(\"\");\n const [emailValue, setEmailValue] = React.useState(\"\");\n const [passwordValue, setPasswordValue] = React.useState(\"\");\n const [saving, setSaving] = React.useState(false);\n\n const [showSuccess, setShowSuccess] = React.useState(false);\n const [errorMessage, setErrorMessage] = React.useState(\"\");\n const [showError, setShowError] = React.useState(false);\n\n //const [showProfileUploadDialog, setShowProfileUploadDialog] = React.useState(false);\n\n /*props.loadData((data) => {\n setRows(data);\n setLoading(false);\n });*/\n\n const loadData = (page, ignoreLoadedPages) => {\n if ((ignoreLoadedPages === undefined || false) && loadedPages.includes(page)) {\n return;\n }\n\n //setRows([]);\n setLoading(true);\n\n fetch('/api/backend/account/get-staff-view/' + page, {\n method: 'get',\n headers: {\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n }\n })\n .then(res => res.json())\n .then(\n (result) => {\n if (page === 0) {\n setRowsCount(result.total);\n }\n\n let r = rows;\n r = r.concat(result.list);\n setRows(r);\n \n\n let lP = loadedPages;\n lP.push(page);\n setLoadedPages(lP);\n\n\n setLoading(false);\n }, \n (error) => {\n setRows([]);\n setLoading(false);\n }\n )\n };\n\n useEffect(() => {\n loadData(page);\n }, [])\n\n const saveData = () => {\n if (emailValue.trim() === \"\") {\n setErrorMessage(\"Email can not be empty\");\n setShowError(true)\n return;\n }\n\n if (fullNameValue.trim() === \"\") {\n setErrorMessage(\"Full name can not be empty\");\n setShowError(true)\n return;\n }\n\n if (selectedItem.id === 0 && passwordValue.trim() === \"\") {\n setErrorMessage(\"Password can not be empty\");\n setShowError(true)\n return;\n }\n\n setSaving(true)\n\n fetch('/api/backend/account/save-staff-view', {\n method: 'post',\n headers: {\n \"Content-Type\": \"application/json\",\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n },\n body: JSON.stringify({\n id: selectedItem.id,\n email: emailValue,\n password: passwordValue,\n fullName: fullNameValue\n })\n })\n .then(res => res.json())\n .then(\n (result) => {\n if (result.responseCode === 0) {\n setShowSuccess(true)\n closeDialog();\n\n var updated = false;\n for (var i = 0; i < rows.length; i++) {\n if (rows[i].id === result.payload.id) {\n rows[i] = result.payload;\n updated = true;\n break;\n }\n }\n if (!updated) {\n setRowsCount(rowsCount + 1);\n\n rows.unshift(result.payload);\n if (rows.length > 1) {\n if ((rows.length - 1) % 10 === 0) {\n rows.pop();\n }\n }\n\n setPage(0);\n }\n } else {\n if (result.payload !== undefined && result.payload !== null) {\n setErrorMessage(result.payload);\n } else {\n setErrorMessage(\"Error\");\n }\n setShowError(true)\n }\n setSaving(false)\n }, \n (error) => {\n setErrorMessage(\"Error\");\n setShowError(true)\n\n setSaving(false)\n }\n )\n\n };\n\n /*const uploadProfileFile = (files) => {\n if (files !== undefined && files.length > 0) {\n setSaving(true)\n\n const data = new FormData();\n data.append('topic-thumbnail', files[0]);\n\n fetch('/api/backend/topic/upload-topic-thumbnail/' + selectedItem.id, {\n method: 'post',\n headers: {\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n },\n body: data\n })\n .then(res => res.text())\n .then(\n (result) => {\n if (result !== undefined && result === 'true') {\n setShowSuccess(true)\n closeDialog();\n loadData();\n } else {\n setShowError(true)\n }\n setSaving(false)\n }, \n (error) => {\n setShowError(true)\n setSaving(false)\n }\n )\n }\n };*/\n\nconst onNew = () => {\n var item = {\n id: 0,\n fullName: '',\n email: '',\n password: '',\n }\n\n setSelecteItem(item)\n setFullNameValue(item.fullName);\n setEmailValue(item.email);\n setPasswordValue(item.password);\n}\n\n const handleClick = (event, item) => {\n setSelecteItem(item)\n setFullNameValue(item.fullName);\n setEmailValue(item.email);\n setPasswordValue(item.password);\n };\n\n const closeDialog = () => {\n setSelecteItem(undefined)\n setFullNameValue('');\n setEmailValue('');\n setPasswordValue('');\n };\n\n const handleChangePage = (event, newPage) => {\n setPage(newPage);\n loadData(newPage);\n };\n\n const emptyRows = rowsPerPage - Math.min(rowsPerPage, rowsCount - page * rowsPerPage);\n\n return (\n
\n \n Success!\n \n
\n \n \n \n \n \n \n \n {rows\n .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)\n .map((row, index) => {\n const labelId = `enhanced-table-checkbox-${index}`;\n\n return (\n handleClick(event, row)}\n role=\"checkbox\"\n tabIndex={-1}\n key={row.id}\n >\n \n \n \n \n {row.fullName}\n \n {row.email}\n \n );\n })}\n {emptyRows > 0 && (\n \n \n \n )}\n \n \n \n \n \n \n \n \n \n \n \n \n \n Account\n \n \n {props.userId === undefined ? (\n \n ) : null}\n \n \n \n\n setFullNameValue(e.target.value)} />\n \n setEmailValue(e.target.value)} />\n \n setPasswordValue(e.target.value)} />\n \n \n\n\n \n {/*$,\n }} disabled={saving} className={classes.fullWidth} color=\"secondary\" label=\"Price\" variant=\"filled\" \n value={priceValue} onChange={(e) => setPriceValue(e.target.value)} />*/}\n\n {/*\n (selectedItem !== undefined && selectedItem.id > 0) ? \n (\n <>\n\n\n\n\n Uploaded Topic Thumbnail\n \n
\n \n
\n
\n
\n \n setShowProfileUploadDialog(false)}\n onSave={(files) => {setShowProfileUploadDialog(false); uploadProfileFile(files)}}\n maxFileSize={5000000}\n /> \n
\n\n \n \n\n\n \n Order History\n \n
\n\n {\n (selectedItem !== undefined && selectedItem.orderRecords.length > 0) ? \n (\n \n \n \n \n User\n Amount\n Date\n Paypal Order ID\n \n \n \n {selectedItem.orderRecords.map((row) => (\n \n \n {row.accountName}\n \n {row.paidAmount + \" \" + row.paidCurrency}\n {Moment(new Date(row.createdDate)).format('DD MMMM YYYY')}\n {row.paypalOrderId}\n \n ))}\n \n
\n
\n ) : (\n \n No orders exist\n \n )\n }\n\n
\n \n ) : (\n <>\n )\n */}\n \n\n
\n setShowError(false)} autoHideDuration={2500} anchorOrigin={{ vertical: 'top', horizontal: 'center' }} >\n \n {errorMessage}\n \n \n
\n setShowSuccess(false)} autoHideDuration={2500} anchorOrigin={{ vertical: 'top', horizontal: 'center' }} >\n \n Success!\n \n \n
\n );\n}","import React, { useEffect, forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { lighten, makeStyles } from '@material-ui/core/styles';\nimport Table from '@material-ui/core/Table';\nimport TableBody from '@material-ui/core/TableBody';\nimport TableCell from '@material-ui/core/TableCell';\nimport TableContainer from '@material-ui/core/TableContainer';\nimport TableHead from '@material-ui/core/TableHead';\nimport TablePagination from '@material-ui/core/TablePagination';\nimport TableRow from '@material-ui/core/TableRow';\nimport TableSortLabel from '@material-ui/core/TableSortLabel';\nimport Toolbar from '@material-ui/core/Toolbar';\nimport Typography from '@material-ui/core/Typography';\nimport Paper from '@material-ui/core/Paper';\nimport IconButton from '@material-ui/core/IconButton';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport Switch from '@material-ui/core/Switch';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport FilterListIcon from '@material-ui/icons/FilterList';\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport { Session } from 'bc-react-session';\nimport Dialog from '@material-ui/core/Dialog';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport ListItem from '@material-ui/core/ListItem';\nimport List from '@material-ui/core/List';\nimport Divider from '@material-ui/core/Divider';\nimport CloseIcon from '@material-ui/icons/Close';\nimport Slide from '@material-ui/core/Slide';\nimport AppBar from '@material-ui/core/AppBar';\nimport Button from '@material-ui/core/Button';\nimport TextField from '@material-ui/core/TextField';\nimport Box from '@material-ui/core/Box';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport ExpansionPanel from '@material-ui/core/ExpansionPanel';\nimport ExpansionPanelDetails from '@material-ui/core/ExpansionPanelDetails';\nimport ExpansionPanelSummary from '@material-ui/core/ExpansionPanelSummary';\nimport Moment from 'moment';\nimport AddCircleOutlineIcon from '@material-ui/icons/AddCircleOutline';\nimport AddBoxIcon from '@material-ui/icons/AddBox';\nimport Snackbar from '@material-ui/core/Snackbar';\nimport MuiAlert from '@material-ui/lab/Alert';\nimport InputAdornment from '@material-ui/core/InputAdornment';\nimport {DropzoneDialog} from 'material-ui-dropzone'\nimport TransactionsView from './TransactionsView';\n\nimport NoImage from '../images/NoImage.png';\n\nimport MaterialTable, { MTableToolbar } from 'material-table';\n\nimport AddBox from '@material-ui/icons/AddBox';\nimport ArrowDownward from '@material-ui/icons/ArrowDownward';\nimport Check from '@material-ui/icons/Check';\nimport ChevronLeft from '@material-ui/icons/ChevronLeft';\nimport ChevronRight from '@material-ui/icons/ChevronRight';\nimport Clear from '@material-ui/icons/Clear';\nimport DeleteOutline from '@material-ui/icons/DeleteOutline';\nimport Edit from '@material-ui/icons/Edit';\nimport FilterList from '@material-ui/icons/FilterList';\nimport FirstPage from '@material-ui/icons/FirstPage';\nimport LastPage from '@material-ui/icons/LastPage';\nimport Remove from '@material-ui/icons/Remove';\nimport SaveAlt from '@material-ui/icons/SaveAlt';\nimport Search from '@material-ui/icons/Search';\nimport ViewColumn from '@material-ui/icons/ViewColumn';\n\n\nconst tableIcons = {\n Add: forwardRef((props, ref) => ),\n Check: forwardRef((props, ref) => ),\n Clear: forwardRef((props, ref) => ),\n Delete: forwardRef((props, ref) => ),\n DetailPanel: forwardRef((props, ref) => ),\n Edit: forwardRef((props, ref) => ),\n Export: forwardRef((props, ref) => ),\n Filter: forwardRef((props, ref) => ),\n FirstPage: forwardRef((props, ref) => ),\n LastPage: forwardRef((props, ref) => ),\n NextPage: forwardRef((props, ref) => ),\n PreviousPage: forwardRef((props, ref) => ),\n ResetSearch: forwardRef((props, ref) => ),\n Search: forwardRef((props, ref) => ),\n SortArrow: forwardRef((props, ref) => ),\n ThirdStateCheck: forwardRef((props, ref) => ),\n ViewColumn: forwardRef((props, ref) => )\n};\n\n\nfunction Alert(props) {\n return ;\n}\n\nconst Transition = React.forwardRef(function Transition(props, ref) {\n return ;\n });\n\nconst headCells = [\n { id: 'icon', numeric: false, disablePadding: true, label: 'Icon' },\n { id: 'title', numeric: false, disablePadding: false, label: 'Title' },\n];\n\nfunction FormPadding() {\n return ( <>

);\n} \n\nfunction EnhancedTableHead(props) {\n return (\n \n \n \n \n \n {headCells.map((headCell) => (\n \n {headCell.label}\n \n ))}\n \n \n );\n}\n\nEnhancedTableHead.propTypes = {\n classes: PropTypes.object.isRequired,\n rowCount: PropTypes.number.isRequired,\n};\n\nconst useToolbarStyles = makeStyles((theme) => ({\n root: {\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(1),\n },\n highlight:\n theme.palette.type === 'light'\n ? {\n color: theme.palette.secondary.main,\n backgroundColor: lighten(theme.palette.secondary.light, 0.85),\n }\n : {\n color: theme.palette.text.primary,\n backgroundColor: theme.palette.secondary.dark,\n },\n title: {\n flex: '1 1 100%',\n },\n}));\n\nconst EnhancedTableToolbar = (props) => {\n const classes = useToolbarStyles();\n \n return (\n \n {(\n \n Services\n \n )}\n\n {props.onNew !== undefined ? (\n \n \n \n \n \n ) : null}\n \n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n width: '100%',\n },\n paper: {\n width: '100%',\n marginBottom: theme.spacing(2),\n },\n table: {\n //minWidth: 750,\n },\n visuallyHidden: {\n border: 0,\n clip: 'rect(0 0 0 0)',\n height: 1,\n margin: -1,\n overflow: 'hidden',\n padding: 0,\n position: 'absolute',\n top: 20,\n width: 1,\n },\n progressBarRoot: { },\n appBar: {\n position: 'relative',\n },\n title: {\n marginLeft: theme.spacing(2),\n flex: 1,\n },\n fullWidth: {\n width: '100%',\n },\n heading: {\n fontSize: theme.typography.pxToRem(15),\n flexBasis: '33.33%',\n flexShrink: 0,\n },\n secondaryHeading: {\n fontSize: theme.typography.pxToRem(15),\n color: theme.palette.text.secondary,\n },\n dialogRoot: {\n height: '100%'\n },\n horizontalCenter: {\n width: '300px'\n }\n}));\n \nexport default function ServicesView(props) {\n const classes = useStyles();\n const [page, setPage] = React.useState(0);\n const [loadedPages, setLoadedPages] = React.useState([]);\n const [rowsPerPage, setRowsPerPage] = React.useState(10);\n const [loading, setLoading] = React.useState(false);\n const [rows, setRows] = React.useState([]);\n const [rowsCount, setRowsCount] = React.useState(0);\n const [selectedItem, setSelecteItem] = React.useState(undefined);\n const [expanded, setExpanded] = React.useState(false);\n\n const [titleValue, setTitleValue] = React.useState(\"\");\n const [titleValueAr, setTitleValueAr] = React.useState(\"\");\n const [categoriesValue, setCategoriesValue] = React.useState([]);\n const [saving, setSaving] = React.useState(false);\n\n const [showSuccess, setShowSuccess] = React.useState(false);\n const [errorMessage, setErrorMessage] = React.useState(\"\");\n const [showError, setShowError] = React.useState(false);\n\n const [showProfileUploadDialog, setShowProfileUploadDialog] = React.useState(false);\n const [uploadCategoryIcon, setUploadCategoryIcon] = React.useState(undefined);\n\n /*props.loadData((data) => {\n setRows(data);\n setLoading(false);\n });*/\n\n const loadData = (page, ignoreLoadedPages) => {\n if ((ignoreLoadedPages === undefined || false) && loadedPages.includes(page)) {\n return;\n }\n\n //setRows([]);\n setLoading(true);\n\n fetch('/api/backend/services/get-services/' + page, {\n method: 'get',\n headers: {\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n }\n })\n .then(res => res.json())\n .then(\n (result) => {\n if (page === 0) {\n setRowsCount(result.total);\n }\n\n let r = rows;\n r = r.concat(result.list);\n setRows(r);\n \n\n let lP = loadedPages;\n lP.push(page);\n setLoadedPages(lP);\n\n\n setLoading(false);\n }, \n (error) => {\n setRows([]);\n setLoading(false);\n }\n )\n };\n\n useEffect(() => {\n loadData(page);\n }, [])\n\n const saveData = () => {\n if (titleValue.trim() === \"\") {\n setErrorMessage(\"Title can not be empty\");\n setShowError(true)\n return;\n }\n\n if (titleValueAr.trim() === \"\") {\n setErrorMessage(\"Title (Arabic) can not be empty\");\n setShowError(true)\n return;\n }\n\n if (categoriesValue.length == 0) {\n setErrorMessage(\"Categories can not be empty\");\n setShowError(true)\n return;\n }\n\n setSaving(true)\n\n fetch('/api/backend/services/save', {\n method: 'post',\n headers: {\n \"Content-Type\": \"application/json\",\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n },\n body: JSON.stringify({\n id: selectedItem.id,\n title: titleValue,\n titleAr: titleValueAr,\n categories: categoriesValue,\n })\n })\n .then(res => res.json())\n .then(\n (result) => {\n if (result.responseCode === 0) {\n setShowSuccess(true)\n closeDialog();\n\n var updated = false;\n for (var i = 0; i < rows.length; i++) {\n if (rows[i].id === result.payload.id) {\n rows[i] = result.payload;\n updated = true;\n break;\n }\n }\n if (!updated) {\n setRowsCount(rowsCount + 1);\n\n rows.unshift(result.payload);\n if (rows.length > 1) {\n if ((rows.length - 1) % 10 === 0) {\n rows.pop();\n }\n }\n\n setPage(0);\n }\n } else {\n if (result.payload !== undefined && result.payload !== null) {\n setErrorMessage(result.payload);\n } else {\n setErrorMessage(\"Error\");\n }\n setShowError(true)\n }\n setSaving(false)\n }, \n (error) => {\n setErrorMessage(\"Error\");\n setShowError(true)\n\n setSaving(false)\n }\n )\n\n };\n\n const uploadIconFile = (files) => {\n if (files !== undefined && files.length > 0) {\n setSaving(true)\n\n const data = new FormData();\n data.append('icon', files[0]);\n\n fetch(uploadCategoryIcon !== undefined ? ('/api/backend/services/upload-service-category-icon/' + uploadCategoryIcon.id) : ('/api/backend/services/upload-service-icon/' + selectedItem.id), {\n method: 'post',\n headers: {\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n },\n body: data\n })\n .then(res => res.text())\n .then(\n (result) => {\n if (result !== undefined && result === 'true') {\n if (uploadCategoryIcon !== undefined) {\n uploadCategoryIcon.profileSuffix = Math.random();\n setUploadCategoryIcon(undefined);\n } else {\n for (var i = 0; i < rows.length; i++) {\n if (rows[i].id === selectedItem.id) {\n rows[i].profileSuffix = Math.random();\n break;\n }\n }\n }\n\n setShowSuccess(true)\n closeDialog();\n } else {\n setErrorMessage(\"Error\");\n setShowError(true)\n }\n setSaving(false)\n }, \n (error) => {\n setErrorMessage(\"Error\");\n setShowError(true)\n setSaving(false)\n }\n )\n }\n };\n\n const deleteData = () => {\n if (!window.confirm('Are you sure you want to delete this service?')) {\n return;\n }\n\n setSaving(true)\n\n fetch('/api/backend/services/delete-service/' + selectedItem.id, {\n method: 'get',\n headers: {\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n },\n })\n .then(res => res.json())\n .then(\n (result) => {\n if (result.responseCode === 0) {\n setShowSuccess(true)\n closeDialog();\n\n \n for (var i = 0; i < rows.length; i++) {\n if (rows[i].id === selectedItem.id) {\n rows.splice(i, 1);\n break;\n }\n } \n } else {\n if (result.payload !== undefined && result.payload !== null) {\n setErrorMessage(result.payload);\n } else {\n setErrorMessage(\"Error\");\n }\n setShowError(true)\n }\n setSaving(false)\n }, \n (error) => {\n setErrorMessage(\"Error\");\n setShowError(true)\n\n setSaving(false)\n }\n )\n\n };\n\nconst onNew = () => {\n var item = {\n id: 0,\n title: '',\n categories: [],\n }\n\n setSelecteItem(item)\n setTitleValue(item.title);\n setTitleValueAr(item.titleAr);\n setCategoriesValue(item.categories);\n}\n\n const handleClick = (event, item) => {\n setSelecteItem(item)\n setTitleValue(item.title);\n setTitleValueAr(item.titleAr);\n setCategoriesValue(item.categories);\n };\n\n const closeDialog = () => {\n setSelecteItem(undefined)\n setTitleValue('');\n setTitleValueAr('');\n setCategoriesValue([]);\n };\n\n const handleChangePage = (event, newPage) => {\n setPage(newPage);\n loadData(newPage);\n };\n\n const emptyRows = rowsPerPage - Math.min(rowsPerPage, rowsCount - page * rowsPerPage);\n\n return (\n
\n \n Success!\n \n
\n \n \n \n \n \n \n \n {rows\n .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)\n .map((row, index) => {\n const labelId = `enhanced-table-checkbox-${index}`;\n\n return (\n handleClick(event, row)}\n role=\"checkbox\"\n tabIndex={-1}\n key={row.id}\n >\n \n \n \n \n e.target.style.src = NoImage} />\n \n {row.title}\n {/*{row.description}\n {row.price + \" AED\"}*/}\n \n );\n })}\n {emptyRows > 0 && (\n \n \n \n )}\n \n \n \n \n \n \n \n \n \n \n \n \n \n Service\n \n \n {(selectedItem !== undefined && selectedItem.id > 0) ? (\n \n ) : null}\n\n {props.userId === undefined ? (\n \n ) : null}\n \n \n \n\n setTitleValue(e.target.value)} />\n \n setTitleValueAr(e.target.value)} />\n \n \n (rowData.title !== undefined && rowData.title.trim()) === '' ? { isValid: false, helperText: 'Title can not be empty' } : true },\n //{ title: 'Description', field: 'description', validate: rowData => (rowData.description !== undefined && rowData.description !== null && rowData.description.trim()) === '' ? { isValid: false, helperText: 'Description can not be empty' } : true },\n {\n title: 'Description', field: 'description', \n validate: rowData => (rowData.description !== undefined && rowData.description !== null && rowData.description.trim()) === '' ? { isValid: false, helperText: 'Description can not be empty' } : true,\n editComponent: props => props.onChange(e.target.value)} inputProps={{maxLength: 512}} onKeyDown={e => {\n if (e.key == \"Enter\") {\n e.stopPropagation();\n }\n }} />\n },\n {\n title: 'Icon',\n render: row => row.id !== undefined && row.id > 0 ? (\n e.target.style.src = NoImage} />\n ) :

Please save changes to upload icon

\n },\n {\n render: row => row.id !== undefined && row.id > 0 ? (\n \n ) : <>\n }\n ]}\n data={categoriesValue}\n options={{\n search: false,\n sorting: false,\n paging: false,\n draggable: false,\n showTitle: true\n }}\n editable={{\n onRowAdd: newData =>\n new Promise((resolve, reject) => {\n setCategoriesValue([...categoriesValue, newData]);\n \n resolve();\n }),\n onRowUpdate: (newData, oldData) =>\n new Promise((resolve, reject) => {\n const dataUpdate = [...categoriesValue];\n const index = oldData.tableData.id;\n dataUpdate[index] = newData;\n setCategoriesValue([...dataUpdate]);\n\n resolve();\n }),\n onRowDelete: oldData =>\n new Promise((resolve, reject) => {\n const dataDelete = [...categoriesValue];\n const index = oldData.tableData.id;\n dataDelete.splice(index, 1);\n setCategoriesValue([...dataDelete]);\n \n resolve()\n }),\n }}\n />\n \n \n (rowData.titleAr !== undefined && rowData.titleAr !== null && rowData.titleAr.trim()) === '' ? { isValid: false, helperText: 'Title (Arabic) can not be empty' } : true },\n //{ title: 'Description (Arabic)', field: 'descriptionAr', validate: rowData => \n //(rowData.descriptionAr !== undefined && rowData.descriptionAr !== null && rowData.descriptionAr.trim()) === '' ? { isValid: false, helperText: 'Description (Arabic) can not be empty' } : true },\n {\n title: 'Description (Arabic)', field: 'descriptionAr', \n validate: rowData => (rowData.descriptionAr !== undefined && rowData.descriptionAr !== null && rowData.descriptionAr.trim()) === '' ? { isValid: false, helperText: 'Description (Arabic) can not be empty' } : true,\n editComponent: props => props.onChange(e.target.value)} inputProps={{maxLength: 512}} onKeyDown={e => {\n if (e.key == \"Enter\") {\n e.stopPropagation();\n }\n }} />\n },\n ]}\n data={categoriesValue}\n options={{\n search: false,\n sorting: false,\n paging: false,\n draggable: false,\n showTitle: true\n }}\n editable={{\n onRowUpdate: (newData, oldData) =>\n new Promise((resolve, reject) => {\n const dataUpdate = [...categoriesValue];\n const index = oldData.tableData.id;\n dataUpdate[index] = newData;\n setCategoriesValue([...dataUpdate]);\n\n resolve();\n }),\n }}\n />\n\n{\n (selectedItem !== undefined && selectedItem.id > 0) ? \n (\n <>\n\n\n\n\n Uploaded Icon\n \n
\n {e.target.onError = null; e.target.src = NoImage}} />\n
\n
\n
\n \n setShowProfileUploadDialog(false)}\n onSave={(files) => {setShowProfileUploadDialog(false); uploadIconFile(files)}}\n maxFileSize={5000000}\n /> \n
\n\n \n \n
\n \n ) : (\n <>\n )\n }\n\n {/*$,\n }} disabled={saving} className={classes.fullWidth} color=\"secondary\" label=\"Price\" variant=\"filled\" \n value={priceValue} onChange={(e) => setPriceValue(e.target.value)} />*/}\n\n {/*\n (selectedItem !== undefined && selectedItem.id > 0) ? \n (\n <>\n\n\n\n\n Uploaded Topic Thumbnail\n \n
\n \n
\n
\n
\n \n setShowProfileUploadDialog(false)}\n onSave={(files) => {setShowProfileUploadDialog(false); uploadProfileFile(files)}}\n maxFileSize={5000000}\n /> \n
\n\n \n \n\n\n \n Order History\n \n
\n\n {\n (selectedItem !== undefined && selectedItem.orderRecords.length > 0) ? \n (\n \n \n \n \n User\n Amount\n Date\n Paypal Order ID\n \n \n \n {selectedItem.orderRecords.map((row) => (\n \n \n {row.accountName}\n \n {row.paidAmount + \" \" + row.paidCurrency}\n {Moment(new Date(row.createdDate)).format('DD MMMM YYYY')}\n {row.paypalOrderId}\n \n ))}\n \n
\n
\n ) : (\n \n No orders exist\n \n )\n }\n\n
\n \n ) : (\n <>\n )\n */}\n \n\n
\n setShowError(false)} autoHideDuration={2500} anchorOrigin={{ vertical: 'top', horizontal: 'center' }} >\n \n {errorMessage}\n \n \n
\n setShowSuccess(false)} autoHideDuration={2500} anchorOrigin={{ vertical: 'top', horizontal: 'center' }} >\n \n Success!\n \n \n
\n );\n}","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { lighten, makeStyles } from '@material-ui/core/styles';\nimport Table from '@material-ui/core/Table';\nimport TableBody from '@material-ui/core/TableBody';\nimport TableCell from '@material-ui/core/TableCell';\nimport TableContainer from '@material-ui/core/TableContainer';\nimport TableHead from '@material-ui/core/TableHead';\nimport TablePagination from '@material-ui/core/TablePagination';\nimport TableRow from '@material-ui/core/TableRow';\nimport TableSortLabel from '@material-ui/core/TableSortLabel';\nimport Toolbar from '@material-ui/core/Toolbar';\nimport Typography from '@material-ui/core/Typography';\nimport Paper from '@material-ui/core/Paper';\nimport IconButton from '@material-ui/core/IconButton';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport Switch from '@material-ui/core/Switch';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport FilterListIcon from '@material-ui/icons/FilterList';\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport { Session } from 'bc-react-session';\nimport Dialog from '@material-ui/core/Dialog';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport ListItem from '@material-ui/core/ListItem';\nimport List from '@material-ui/core/List';\nimport Divider from '@material-ui/core/Divider';\nimport CloseIcon from '@material-ui/icons/Close';\nimport Slide from '@material-ui/core/Slide';\nimport AppBar from '@material-ui/core/AppBar';\nimport Button from '@material-ui/core/Button';\nimport TextField from '@material-ui/core/TextField';\nimport Box from '@material-ui/core/Box';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport ExpansionPanel from '@material-ui/core/ExpansionPanel';\nimport ExpansionPanelDetails from '@material-ui/core/ExpansionPanelDetails';\nimport ExpansionPanelSummary from '@material-ui/core/ExpansionPanelSummary';\nimport Moment from 'moment';\nimport AddCircleOutlineIcon from '@material-ui/icons/AddCircleOutline';\nimport AddBoxIcon from '@material-ui/icons/AddBox';\nimport Snackbar from '@material-ui/core/Snackbar';\nimport MuiAlert from '@material-ui/lab/Alert';\nimport InputAdornment from '@material-ui/core/InputAdornment';\nimport {DropzoneDialog} from 'material-ui-dropzone'\n\nfunction Alert(props) {\n return ;\n}\n\nconst Transition = React.forwardRef(function Transition(props, ref) {\n return ;\n });\n\nconst headCells = [\n { id: 'title', numeric: false, disablePadding: true, label: 'Title' },\n { id: 'body', numeric: false, disablePadding: false, label: 'Body' },\n { id: 'date', numeric: false, disablePadding: false, label: 'Sent Date' },\n\n];\n\nfunction FormPadding() {\n return ( <>

);\n} \n\nfunction EnhancedTableHead(props) {\n return (\n \n \n \n \n \n {headCells.map((headCell) => (\n \n {headCell.label}\n \n ))}\n \n \n );\n}\n\nEnhancedTableHead.propTypes = {\n classes: PropTypes.object.isRequired,\n rowCount: PropTypes.number.isRequired,\n};\n\nconst useToolbarStyles = makeStyles((theme) => ({\n root: {\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(1),\n },\n highlight:\n theme.palette.type === 'light'\n ? {\n color: theme.palette.secondary.main,\n backgroundColor: lighten(theme.palette.secondary.light, 0.85),\n }\n : {\n color: theme.palette.text.primary,\n backgroundColor: theme.palette.secondary.dark,\n },\n title: {\n flex: '1 1 100%',\n },\n}));\n\nconst EnhancedTableToolbar = (props) => {\n const classes = useToolbarStyles();\n \n return (\n \n {(\n \n Notifications\n \n )}\n\n {(\n \n \n \n )}\n \n );\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n width: '100%',\n },\n paper: {\n width: '100%',\n marginBottom: theme.spacing(2),\n },\n table: {\n //minWidth: 750,\n },\n visuallyHidden: {\n border: 0,\n clip: 'rect(0 0 0 0)',\n height: 1,\n margin: -1,\n overflow: 'hidden',\n padding: 0,\n position: 'absolute',\n top: 20,\n width: 1,\n },\n progressBarRoot: { },\n appBar: {\n position: 'relative',\n },\n title: {\n marginLeft: theme.spacing(2),\n flex: 1,\n },\n fullWidth: {\n width: '100%',\n },\n heading: {\n fontSize: theme.typography.pxToRem(15),\n flexBasis: '33.33%',\n flexShrink: 0,\n },\n secondaryHeading: {\n fontSize: theme.typography.pxToRem(15),\n color: theme.palette.text.secondary,\n },\n dialogRoot: {\n height: '100%'\n },\n horizontalCenter: {\n width: '300px'\n }\n}));\n \nexport default function NotificationsView(props) {\n const classes = useStyles();\n const [page, setPage] = React.useState(0);\n const [loadedPages, setLoadedPages] = React.useState([]);\n const [rowsPerPage, setRowsPerPage] = React.useState(10);\n const [loading, setLoading] = React.useState(false);\n const [rows, setRows] = React.useState([]);\n const [rowsCount, setRowsCount] = React.useState(0);\n const [selectedItem, setSelecteItem] = React.useState(undefined);\n const [expanded, setExpanded] = React.useState(false);\n\n const [titleValue, setTitleValue] = React.useState(\"\");\n const [bodyValue, setBodyValue] = React.useState(\"\");\n /*const [percentValue, setPercentValue] = React.useState(0);\n const [maxUsesValue, setMaxUsesValue] = React.useState(0);\n const [revokedValue, setRevokedValue] = React.useState(false);*/\n const [saving, setSaving] = React.useState(false);\n\n const [showSuccess, setShowSuccess] = React.useState(false);\n const [errorMessage, setErrorMessage] = React.useState(\"\");\n const [showError, setShowError] = React.useState(false);\n\n //const [showProfileUploadDialog, setShowProfileUploadDialog] = React.useState(false);\n\n /*props.loadData((data) => {\n setRows(data);\n setLoading(false);\n });*/\n\n const loadData = (page, ignoreLoadedPages) => {\n if ((ignoreLoadedPages === undefined || false) && loadedPages.includes(page)) {\n return;\n }\n\n //setRows([]);\n setLoading(true);\n\n fetch('/api/backend/notification-item/get-notification-items/' + page, {\n method: 'get',\n headers: {\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n }\n })\n .then(res => res.json())\n .then(\n (result) => {\n if (page === 0) {\n setRowsCount(result.total);\n }\n\n let r = rows;\n r = r.concat(result.list);\n setRows(r);\n \n\n let lP = loadedPages;\n lP.push(page);\n setLoadedPages(lP);\n\n\n setLoading(false);\n }, \n (error) => {\n setRows([]);\n setLoading(false);\n }\n )\n };\n\n useEffect(() => {\n loadData(page);\n }, [])\n\n const saveData = () => {\n if (titleValue.trim() === \"\") {\n setErrorMessage(\"Title can not be empty\");\n setShowError(true)\n return;\n }\n\n if (bodyValue.trim() === \"\") {\n setErrorMessage(\"Body can not be empty\");\n setShowError(true)\n return;\n }\n\n setSaving(true)\n\n fetch('/api/backend/notification-item/create', {\n method: 'post',\n headers: {\n \"Content-Type\": \"application/json\",\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n },\n body: JSON.stringify({\n title: titleValue,\n body: bodyValue,\n })\n })\n .then(res => res.json())\n .then(\n (result) => {\n if (result.responseCode === 0) {\n setShowSuccess(true)\n closeDialog();\n\n var updated = false;\n for (var i = 0; i < rows.length; i++) {\n if (rows[i].id === result.payload.id) {\n rows[i] = result.payload;\n updated = true;\n break;\n }\n }\n if (!updated) {\n setRowsCount(rowsCount + 1);\n\n rows.unshift(result.payload);\n if (rows.length > 1) {\n if ((rows.length - 1) % 10 === 0) {\n rows.pop();\n }\n }\n\n setPage(0);\n }\n } else {\n if (result.payload !== undefined && result.payload !== null) {\n setErrorMessage(result.payload);\n } else {\n setErrorMessage(\"Error\");\n }\n setShowError(true)\n }\n setSaving(false)\n }, \n (error) => {\n setErrorMessage(\"Error\");\n setShowError(true)\n\n setSaving(false)\n }\n )\n\n };\n\n /*const uploadProfileFile = (files) => {\n if (files !== undefined && files.length > 0) {\n setSaving(true)\n\n const data = new FormData();\n data.append('topic-thumbnail', files[0]);\n\n fetch('/api/backend/topic/upload-topic-thumbnail/' + selectedItem.id, {\n method: 'post',\n headers: {\n \"Authorization\": \"Bearer \" + Session.get().payload.token,\n },\n body: data\n })\n .then(res => res.text())\n .then(\n (result) => {\n if (result !== undefined && result === 'true') {\n setShowSuccess(true)\n closeDialog();\n loadData();\n } else {\n setShowError(true)\n }\n setSaving(false)\n }, \n (error) => {\n setShowError(true)\n setSaving(false)\n }\n )\n }\n };*/\n\nconst onNew = () => {\n var item = {\n id: 0,\n title: \"\",\n body: \"\",\n }\n\n setSelecteItem(item)\n setTitleValue(item.title)\n setBodyValue(item.body)\n}\n\n const handleClick = (event, item) => {\n setSelecteItem(item)\n setTitleValue(item.title)\n setBodyValue(item.body)\n };\n\n const closeDialog = () => {\n setSelecteItem(undefined)\n setTitleValue(\"\")\n setBodyValue(\"\")\n };\n\n const handleChangePage = (event, newPage) => {\n setPage(newPage);\n loadData(newPage);\n };\n\n const emptyRows = rowsPerPage - Math.min(rowsPerPage, rowsCount - page * rowsPerPage);\n\n return (\n
\n \n Success!\n \n
\n \n \n \n \n \n \n \n {rows\n .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)\n .map((row, index) => {\n const labelId = `enhanced-table-checkbox-${index}`;\n\n return (\n handleClick(event, row)}\n role=\"checkbox\"\n tabIndex={-1}\n key={row.id}\n >\n \n \n \n \n {row.title}\n \n {row.body}\n {Moment(new Date(row.sentDate)).format('DD MMMM YYYY HH:mm')}\n \n );\n })}\n {emptyRows > 0 && (\n \n \n \n )}\n \n \n \n \n \n \n \n \n \n \n \n \n \n Notification\n \n \n {selectedItem !== undefined && selectedItem.id == 0 && (\n \n )}\n \n \n \n\n setTitleValue(e.target.value)} />\n \n setBodyValue(e.target.value)} inputProps={{maxLength: 200}} />\n \n {selectedItem !== undefined && selectedItem.id > 0 &&\n }\n \n {/*$,\n }} disabled={saving} className={classes.fullWidth} color=\"secondary\" label=\"Price\" variant=\"filled\" \n value={priceValue} onChange={(e) => setPriceValue(e.target.value)} />*/}\n\n {/*\n (selectedItem !== undefined && selectedItem.id > 0) ? \n (\n <>\n\n\n\n\n Uploaded Topic Thumbnail\n \n
\n \n
\n
\n
\n \n setShowProfileUploadDialog(false)}\n onSave={(files) => {setShowProfileUploadDialog(false); uploadProfileFile(files)}}\n maxFileSize={5000000}\n /> \n
\n\n \n \n\n\n \n Order History\n \n
\n\n {\n (selectedItem !== undefined && selectedItem.orderRecords.length > 0) ? \n (\n \n \n \n \n User\n Amount\n Date\n Paypal Order ID\n \n \n \n {selectedItem.orderRecords.map((row) => (\n \n \n {row.accountName}\n \n {row.paidAmount + \" \" + row.paidCurrency}\n {Moment(new Date(row.createdDate)).format('DD MMMM YYYY')}\n {row.paypalOrderId}\n \n ))}\n \n
\n
\n ) : (\n \n No orders exist\n \n )\n }\n\n
\n \n ) : (\n <>\n )\n */}\n \n\n
\n setShowError(false)} autoHideDuration={2500} anchorOrigin={{ vertical: 'top', horizontal: 'center' }} >\n \n {errorMessage}\n \n \n
\n setShowSuccess(false)} autoHideDuration={2500} anchorOrigin={{ vertical: 'top', horizontal: 'center' }} >\n \n Success!\n \n \n
\n );\n}","import React from 'react';\nimport BackendLoginPage from './BackendLoginPage.js'\nimport { withStyles } from '@material-ui/core/styles';\nimport { Session } from 'bc-react-session';\nimport Typography from '@material-ui/core/Typography';\nimport Button from '@material-ui/core/Button'\nimport AppBar from '@material-ui/core/AppBar';\nimport Toolbar from '@material-ui/core/Toolbar';\nimport IconButton from '@material-ui/core/IconButton';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport Menu from '@material-ui/core/Menu';\nimport MenuIcon from '@material-ui/icons/Menu';\nimport CssBaseline from '@material-ui/core/CssBaseline';\nimport AccountCircle from '@material-ui/icons/AccountCircle';\nimport logo from '../images/LogoText.png'\nimport InputIcon from '@material-ui/icons/Input';\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\nimport Tabs from '@material-ui/core/Tabs';\nimport Tab from '@material-ui/core/Tab';\nimport Paper from '@material-ui/core/Paper';\nimport VideocamIcon from '@material-ui/icons/Videocam';\nimport PeopleIcon from '@material-ui/icons/People';\nimport AttachMoneyIcon from '@material-ui/icons/AttachMoney';\nimport SubjectIcon from '@material-ui/icons/Subject';\nimport SwipeableViews from 'react-swipeable-views';\nimport Box from '@material-ui/core/Box';\nimport PropTypes from 'prop-types';\nimport UsersView from '../views/UsersView.js'\nimport CouponsView from '../views/CouponsView.js';\nimport PackagesView from '../views/PackagesView.js';\nimport DriveEtaIcon from '@material-ui/icons/DriveEta';\nimport RecentActorsIcon from '@material-ui/icons/RecentActors';\nimport LocalShippingIcon from '@material-ui/icons/LocalShipping';\nimport ContactSupportIcon from '@material-ui/icons/ContactSupport';\nimport GroupIcon from '@material-ui/icons/Group';\nimport LocalOfferIcon from '@material-ui/icons/LocalOffer';\nimport AssignmentIndIcon from '@material-ui/icons/AssignmentInd';\nimport ShoppingCartIcon from '@material-ui/icons/ShoppingCart';\nimport SearchIcon from '@material-ui/icons/Search';\nimport LocationSearchingIcon from '@material-ui/icons/LocationSearching';\nimport TransactionsView from '../views/TransactionsView.js';\nimport StaffView from '../views/StaffView.js';\nimport TruckDriversView from '../views/TruckDriversView.js';\nimport PhoneNumbersView from '../views/PhoneNumbersView.js';\nimport SupportUsersView from '../views/SupportUsersView.js';\nimport AssignmentLateIcon from '@material-ui/icons/AssignmentLate';\nimport AutoServicesView from '../views/AutoServicesView.js';\nimport SupportUserBackendPage from './SupportUserBackendPage.js';\nimport TruckAssignerView from '../views/TruckAssignerView.js';\nimport StaffViewerView from '../views/StaffViewerView.js';\nimport SettingsApplicationsIcon from '@material-ui/icons/SettingsApplications';\nimport ServicesView from '../views/ServicesView.js';\nimport NotificationsIcon from '@material-ui/icons/Notifications';\nimport NotificationsView from '../views/NotificationsView.js';\n\nconst styles = theme => ({\n tabRoot: {\n flexGrow: 1,\n backgroundColor: theme.palette.background.paper,\n display: 'flex',\n height: '100%',\n },\n tabHorizontalRoot: {\n flexGrow: 1,\n backgroundColor: theme.palette.background.paper,\n height: '100vh',\n width: '100%'\n },\n tabs: {\n borderRight: `1px solid ${theme.palette.divider}`,\n },\n root: {\n display: 'flex',\n flexGrow: 1,\n flexDirection: 'column',\n height: '100vh'\n },\n menuButton: {\n marginRight: theme.spacing(2),\n },\n title: {\n flexGrow: 1,\n marginLeft: theme.spacing(2)\n },\n logo: {\n width: 100\n }\n});\n \nfunction TabPanel(props) {\n const { children, value, index, ...other } = props;\n\n return (\n
\n );\n}\n\nTabPanel.propTypes = {\n children: PropTypes.node,\n index: PropTypes.any.isRequired,\n value: PropTypes.any.isRequired,\n }; \n\nfunction a11yProps(index) {\n return {\n id: `full-width-tab-${index}`,\n 'aria-controls': `full-width-tabpanel-${index}`,\n };\n}\n\nclass BackendPage extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.state = {\n lastApiResponse: \"No response yet\",\n profileBtn: null,\n openProfileMenu: false,\n tabValue: 0,\n pendingActionsTabValue: 0\n }\n }\n\n logout() {\n Session.destroy(); \n window.location.reload(false);\n }\n\n onProfileBtn(event) {\n this.setState({\n profileBtn: event.currentTarget,\n openProfileMenu: true\n })\n }\n\n onProfileMenuClosed() {\n this.setState({\n profileBtn: null,\n openProfileMenu: false\n })\n }\n\n pendingView(classes) {\n return (\n
\n \n this.setState({pendingActionsTabValue: newValue})}\n variant=\"fullWidth\"\n className={classes.tabs}>\n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n
\n )\n }\n\n render() {\n if (Session.get().isValid) {\n const classes = this.props.classes;\n\n const menuId = 'primary-search-account-menu';\n const renderMenu = (\n \n\n {Session.get().payload.fullName}\n\n \n \n \n \n Logout\n \n \n );\n\n return (\n
\n \n \n \n \n
\n \n \n \n {renderMenu}\n \n \n
\n {Session.get().payload.role === 5 ? (\n this.pendingView(classes)\n ) : (<>\n\n{Session.get().payload.role === 4 ? (\n \n ) : (<>\n this.setState({tabValue: newValue})}\n orientation=\"vertical\"\n variant=\"scrollable\"\n className={classes.tabs}>\n } label=\"Truck Assigner\" {...a11yProps(0)} style={{marginTop: '15px'}} />\n } label=\"Pending Actions\" {...a11yProps(1)} style={{marginTop: '15px'}} />\n } label=\"Auto Services\" {...a11yProps(2)} style={{marginTop: '15px'}} />\n } label=\"Truck Drivers\" {...a11yProps(3)} style={{marginTop: '15px'}} />\n\n {Session.get().payload.role === 0 ? (\n } label=\"Coupons\" {...a11yProps(4)} style={{marginTop: '15px'}} />\n ) : null}\n {Session.get().payload.role === 0 ? (\n } label=\"Services\" {...a11yProps(5)} style={{marginTop: '15px'}} />\n ) : null}\n {Session.get().payload.role === 0 ? (\n } label=\"Packages\" {...a11yProps(6)} style={{marginTop: '15px'}} />\n ) : null}\n {Session.get().payload.role === 0 ? (\n } label=\"Transactions\" {...a11yProps(7)} style={{marginTop: '15px'}} />\n ) : null}\n {Session.get().payload.role === 0 ? (\n } label=\"Support System\" {...a11yProps(8)} style={{marginTop: '15px'}} />\n ) : null}\n {Session.get().payload.role === 0 ? (\n } label=\"Carzilla Staff\" {...a11yProps(9)} style={{marginTop: '15px'}} />\n ) : null}\n {Session.get().payload.role === 0 ? (\n } label=\"Garage Staff\" {...a11yProps(10)} style={{marginTop: '15px'}} />\n ) : null}\n {Session.get().payload.role === 0 ? (\n } label=\"Customers\" {...a11yProps(11)} style={{marginTop: '15px'}} />\n ) : null}\n\n {Session.get().payload.role === 0 ? (\n } label=\"Notifications\" {...a11yProps(4)} style={{marginTop: '15px'}} />\n ) : null}\n \n \n\n \n \n \n \n {this.pendingView(classes)}\n \n \n \n \n \n \n \n\n {Session.get().payload.role === 0 ? (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ) : null}\n )}\n \n )}\n\n
\n
\n )\n } else {\n return ( )\n }\n }\n}\n\nexport default withStyles(styles)(BackendPage);","import React from 'react';\nimport Typography from '@material-ui/core/Typography';\nimport Button from '@material-ui/core/Button'\nimport CssBaseline from '@material-ui/core/CssBaseline'\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport { Link } from 'react-router-dom'\n\nconst useStyles = makeStyles((theme) => ({\n bg: {\n display: 'flex',\n flexDirection: 'column',\n minHeight: '100vh',\n background: '#1d0134'\n },\n root: {\n position: 'absolute', \n left: '50%', \n top: '50%',\n transform: 'translate(-50%, -50%)',\n },\n button: {\n position: 'absolute', \n left: '50%', \n transform: 'translate(-50%, -50%)'\n }\n}));\n\nexport default function Error404Page() {\n const classes = useStyles();\n\n return (\n
\n \n
\n \n 404 Page not found\n \n
\n \n The requested URL was not found on this server\n \n\n
\n
\n
\n
\n \n \n \n
\n
\n );\n}","import React from 'react';\nimport Typography from '@material-ui/core/Typography';\nimport Button from '@material-ui/core/Button'\nimport CssBaseline from '@material-ui/core/CssBaseline'\nimport { makeStyles } from '@material-ui/core/styles';\nimport logo from '../images/LogoLarge.png'\n\nimport { Link } from 'react-router-dom'\n\nconst useStyles = makeStyles((theme) => ({\n bg: {\n display: 'flex',\n flexDirection: 'column',\n minHeight: '100vh',\n background: '#1d0134',\n },\n root: {\n /*position: 'absolute', \n left: '50%', \n top: '50%',\n transform: 'translate(-50%, -50%)',*/\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center'\n },\n button: {\n position: 'absolute', \n left: '50%', \n transform: 'translate(-50%, -50%)'\n }\n}));\n\nexport default function PrivacyPolicyPage() {\n const classes = useStyles();\n\n return (\n
\n \n
\n
\n
\n \n
\n \n Privacy Policy\n \n\n
\n
\n
\n
\n

\n {\"\\n\" +\n \"Privacy Policy\\n\" +\n \"\\n\" +\n \"Our Privacy Policy focuses on securing our Client’s privacy. The accompanying privacy policy states the data that we may gather, and how we may use such data to serve the clients while utilizing our website and mobile application. And we ensure not to reveal such information to unauthorized persons except required by law\\n\" +\n \"\\n\" +\n \"This policy applies on the data we gather from you as follows:\\n\" +\n \"\\n\" +\n \"On this Website:\\n\" +\n \"\\n\" +\n \"•\\tIn email, text and any other electronic messages between the Client and this Website. \\n\" +\n \"•\\tWhen you interact with our publicizing and applications on third-party websites and administrations.\\n\" +\n \"•\\tThrough all-around work area applications, which give devoted non-program-based cooperation among you and our website. \\n\" +\n \"\\n\" +\n \"What we collect:\\n\" +\n \"\\n\" +\n \"We collect the following information: \\n\" +\n \"•\\tName of the client\\n\" +\n \"•\\tContact details \\n\" +\n \"•\\tDemographic information\\n\" +\n \"•\\tClient’s reviews\\n\" +\n \"\\n\" +\n \"You may give data to be distributed or shown on public areas of the Website or shared with different clients of the Website or outsiders. Your User Contributions are presented on and communicated on others at your own risk. Though we limit access to specific pages where you may set certain protection settings for such data by signing into your registered profile. Also, we cannot control the activities of different clients of the Website with whom you may share your User details with. \\n\" +\n \"\\n\" +\n \"How we may use the clients’ information:\\n\" +\n \"\\n\" +\n \"We require this data to understand your necessities and provide you with the right help and assistance as follows: \\n\" +\n \"•\\tRecord collection and protection. \\n\" +\n \"•\\tTo improve our services.\\n\" +\n \"•\\tWe may send you emails about new items and offers.\\n\" +\n \"•\\tWe use the data to contact the clients for statistical surveying. \\n\" +\n \"•\\tto update/develop the website. \\n\" +\n \"•\\tWe may provide your information to our outsider team.\\n\" +\n \"•\\tWe will not sell your personal information.\\n\" +\n \"\\n\" +\n \"\\n\" +\n \"Third-party use of Cookies:\\n\" +\n \"\\n\" +\n \"Some of the substance and comprising promotions on our Website, are served by outsiders, (sponsors, advertisement systems and workers, content suppliers and application suppliers). These third parties may use cookies alone or related to web beacons or other tracking technologies to gather data about you when you use our website. We might share the data or they may gather data, including personal information, about your online activities over time and across various sites and other online administrations. They may use this data to provide you with interest-based publicizing or other focused on content. If clients have any inquiries concerning an announcement, they can contact us directly.\\n\" +\n \"\\n\" +\n \"Security:\\n\" +\n \"\\n\" +\n \"The personally identifiable and geo-location data and information that we gather, is secured within our database. And we use standard, industry-wide, industrially sensible security practices, i.e. encryption, firewalls and SSL (Secure Socket Layers) for ensuring your data. However; as powerful as encryption technology seems to be, no security system is invulnerable. We cannot ensure the security of our database, nor would we be able to ensure that data will not be blocked while being communicated to us over the Internet, and any data you provide us with will be at your own risk. We strongly suggest to not disclose your password to whomsoever.\\n\" +\n \"\\n\" +\n \"How we use and display your information:\\n\" +\n \"\\n\" +\n \"We strive to give you decisions regarding the individual data you give to us. We have made components to provide you with the accompanying authority over your data:\\n\" +\n \"\\n\" +\n \"•\\tFollowing Technologies: You can set your program to refuse all or some program treats, or to alert you when treats are being sent. To figure out how you can deal with cookie settings. If you impair or reject treats, it would be ideal if you note that a few parts of this website may then be difficult to reach or not work appropriately.\\n\" +\n \"\\n\" +\n \"Link to other websites:\\n\" +\n \"\\n\" +\n \"Our website may include links to enable you to visit multiple websites of interest easily. When you have used these links or connections, note that we do not have any authority over that other website. Therefore; we cannot be responsible for the insurance and security of the information provided by the clients while visiting such websites. And such websites are not represented by this privacy policy.\\n\" +\n \"\\n\" +\n \"Modifications in the Privacy Policy:\\n\" +\n \"\\n\" +\n \"We are obliged to post any progressions we may add to our security strategy. If we make improvements to how we treat personal data of our clients, we will advise you via email to the registered email address on the Website landing page. You are liable for occasionally visiting our Website to check for any changes.\\n\"}\n

\n
\n
\n );\n}","import React, { useEffect } from 'react';\n//import './App.css';\nimport { Button } from '@material-ui/core';\nimport BackendPage from './pages/BackendPage.js'\nimport Error404Page from './pages/Error404Page.js'\nimport {Session} from 'bc-react-session';\n\nimport {isAndroid, isIOS} from 'react-device-detect';\n\nimport {\n BrowserRouter as Router,\n Route,\n Switch\n} from 'react-router-dom'\nimport { PayPalButton } from \"react-paypal-button-v2\";\nimport PrivacyPolicyPage from './pages/PrivacyPolicyPage.js';\n\nfunction RePage() {\n useEffect(() => {\n if (isIOS) {\n window.location.replace('https://apps.apple.com/us/app/carzilla/id1538302704')\n } else {\n window.location.replace('https://play.google.com/store/apps/details?id=com.carzilla.app')\n //window.location.replace('https://play.google.com/store/apps/details?id=com.carzilla.auto') //REMOVED NEW APP\n }\n }, []);\n\n return (\n
\n )\n}\n\nfunction App() {\n\n if (Session.get().isValid) {\n Session.onExpiration((session) => {\n Session.destroy();\n alert(\"Session expired! Please login again!\");\n window.location.reload();\n });\n }\n\n return (\n \n \n \n \n {(isAndroid || isIOS) && }\n \n \n \n );\n}\n\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"sourceRoot":""}