{"version":3,"sources":["Actions/UserActions.tsx","Actions/thunks.tsx","Header/ForgotPasswordDialog.tsx","Header/LoginDialog.tsx","Header/Header.tsx","Home/Home.tsx","Footer/Footer.tsx","RequestProperty/RequestProperty.tsx","Actions/CartActions.tsx","PropertyList/PropertyList.tsx","PropertyPage/PropertyPage.tsx","Charts/PopularityChart.tsx","Charts/IncomeChart.tsx","Charts/PopDensityChart.tsx","Charts/CourtCaseChart.tsx","InfoPages/AboutPage.tsx","InfoPages/ContactUsPage.tsx","InfoPages/TermsDialog.tsx","Cart/BillingDialog.tsx","Cart/CheckoutOptionDialog.tsx","Cart/Cart.tsx","SignUp/SignUp.tsx","InfoPages/TermsPage.tsx","Models/Info.tsx","Dashboards/EditNeighborhoodDialog.tsx","Dashboards/EditQuestionDialog.tsx","Dashboards/AddPropertyStepIcon.tsx","Dashboards/AddPropertyDialog.tsx","SignUp/ContinueSessionDialog.tsx","Dashboards/TaxDataDialog.tsx","Dashboards/AdminDashboard.tsx","Home/HomeMobile.tsx","Footer/MobileFooter.tsx","PropertyList/PropertyListMobile.tsx","RequestProperty/RequestPropertyMobile.tsx","PropertyPage/PropertyPageMobile.tsx","Cart/BillingDialogMobile.tsx","Cart/CartMobile.tsx","InfoPages/AboutPageMobile.tsx","MapPage/MapPage.tsx","Charts/TaxChart.tsx","App.tsx","reportWebVitals.ts","Reducers/CartReducer.tsx","Reducers/UserReducer.tsx","store.tsx","index.tsx"],"names":["UserActionType","loginUser","value","type","LOGIN","payload","user","signoutUser","SIGN_OUT","signUpError","message","USER_SIGNUP_ERROR","signInError","USER_LOGIN_ERROR","CATS","signOut","dispatch","getState","a","userState","requestOptions","method","headers","body","JSON","stringify","token","currentToken","toString","fetch","baseEndpoint","then","response","ok","useStyles","makeStyles","theme","createStyles","dialog","overflowX","connect","state","resetPassword","code","password","email","newPass","console","log","json","u","text","err","RESET_PASSWORD_ERROR","props","useState","setEmail","setPassword","confirmPassword","setConfirmPassword","confirmError","setConfirmError","React","inputType","setInputType","receivedCode","setReceivedCode","passwordError","setPasswordError","emailError","setEmailError","resetCode","setResetCode","codeError","setCodeError","getCodeError","setGetCodeError","classes","getCode","emailRegEx","RegExp","emailMatch","test","trim","length","handleClose","Dialog","fullWidth","maxWidth","paper","open","onClose","style","display","DialogTitle","id","fontSize","isMobile","fontWeight","lineHeight","IconButton","onClick","marginLeft","height","color","padding","marginTop","marginRight","Slide","direction","in","mountOnEnter","DialogContent","Alert","severity","onSubmit","event","preventDefault","width","marginBottom","placeContent","TextField","label","error","helperText","onChange","target","InputProps","startAdornment","InputAdornment","position","variant","Button","resetMessage","endAdornment","Visibility","float","login","forgotPassOpen","setForgotPassOpen","loginMessage","AlertTitle","Typography","Link","href","cursor","badge","backgroundColor","border","palette","background","cartState","menuOpen","setMenuOpen","anchorEl","setAnchorEl","loginOpen","setLoginOpen","handleOpenMenu","currentTarget","top","zIndex","undefined","margin","flexGrow","textAlign","to","alt","src","alignSelf","window","location","pathname","borderStyle","borderColor","borderWidth","Badge","badgeContent","items","isAuth","firstName","Popover","anchorOrigin","vertical","horizontal","transformOrigin","List","ListItem","justifyContent","whiteSpace","paddingRight","category","includes","Divider","root","menuButton","spacing","title","Home","downloadGateOpen","setDownloadGateOpen","submitDownloadSample","skip","className","paddingLeft","paddingTop","paddingBottom","fontStyle","bottom","borderLeft","transform","left","flexDirection","DialogActions","appBar","dividerRoot","fontFamily","letterSpacing","textDecoration","rel","input","inputError","CartActionType","setFirstName","firstNameError","setFirstNameError","lastName","setLastName","lastNameError","setLastNameError","company","setCompany","companyError","setCompanyError","setCategory","categoryError","setCategoryError","address","setAddress","addressError","setAddressError","comments","setComments","zip","setZip","zipError","setZipError","requestAlertOpen","setRequestAlertOpen","alertMessage","setAlertMessage","useEffect","emailAddress","handleSendRequest","isNaN","FirstName","LastName","EmailAddress","Address","Zip","Company","Comments","Category","handleCloseRequestAlert","FormControl","InputLabel","Select","labelId","MenuItem","FormHelperText","multiline","rows","Snackbar","autoHideDuration","borderBottomColor","loadMapApi","mapsUrl","scripts","document","getElementsByTagName","i","indexOf","googleMapsScript","createElement","async","defer","appendChild","PropertyList","scriptLoaded","setScriptLoaded","ref","useRef","markers","setMarkers","map","setMap","allProperties","setAllProperties","shownProperties","setShownProperties","neighborhoods","setNeighborhoods","searchTerm","setSearchTerm","addEventListener","initMap","google","maps","LatLng","proper","mark","forEach","p","latLng","lat","addresses","lng","add","city","m","Marker","icon","Math","round","calcScore","elem","getElementById","internalId","addListener","click","onmouseover","setIcon","setLabel","setZIndex","onmouseleave","push","createMarkers","fetchProperties","fetchNeighborhoods","current","Map","zoom","center","mapTypeControl","streetViewControl","rotateControl","scaleControl","fullscreenControl","panControl","zoomControl","gestureHandling","mapTypeId","MapTypeId","ROADMAP","draggableCursor","styles","featureType","stylers","visibility","r","search","temp","t","Object","assign","toUpperCase","masterAddress","marks","e","size","maxHeight","overflow","n","filter","neighborhoodId","name","j","k","textTransform","addToCart","property","ADD_TO_CART","removeFromCart","REMOVE_FROM_CART","clearCart","CLEAR_CART","history","useHistory","addressId","setAddressId","setProperty","streetViewUrl","setStreetViewUrl","marker","setMarker","heading","setHeading","setLat","setLng","adminAlert","setAdminAlert","adminAlertMessage","setAdminAlertMessage","alertSeverity","setAlertSeverity","fetchProperty","match","params","Number","url","handleAddToCart","saveHeading","publish","handleCloseAlert","disabled","alignItems","findIndex","c","queryString","require","PopularityChart","setNeighborhoodId","data","setData","options","setOptions","parse","arrayFormat","d","datasets","selectedX","questionId","fact","selectedY","selectedSet","x","y","set","pointRadius","scales","font","ticks","stepSize","plugins","wieght","align","legend","labels","aspectRatio","animation","fetchChart","Chart","defaults","maintainAspectRatio","IncomeChart","barData","backColor","q","callback","index","values","indexAxis","elements","bar","responsive","tooltip","callbacks","context","dataset","formattedValue","CourtCaseChart","landlordId","setLandlordId","locations","l","min","suggestedMax","subtitle","AboutPage","Paper","emailHeader","setEmailHeader","headerError","setHeaderError","emailBody","setEmailBody","bodyError","setBodyError","send","TermsDialog","config","setCity","cityError","setCityError","setState","stateError","setStateError","agreeToTerms","setAgreeToTerms","termsOpen","setTermsOpen","agreeError","setAgreeError","errorMessage","setErrorMessage","checkout","ids","sourceId","amount","BETA_PRICE","billingAddress","status","Checkbox","applicationId","REACT_APP_SQUARE_ID","cardTokenizeResponseReceived","buyer","stateRegEx","stateMatch","details","billing","postalCode","createVerificationDetails","billingContact","addressLines","familyName","givenName","countryCode","currencyCode","intent","locationId","REACT_APP_LOCATION_ID","CheckoutOptionDialog","cartReducer","backdrop","drawer","billingOpen","setBillingOpen","checkoutOptionsOpen","setCheckoutOptionsOpen","downloadLoading","setDownloadLoading","downloadAlertOpen","setDownloadAlertOpen","checkoutAlertOpen","setCheckoutAlertOpen","checkoutAlert","setCheckoutAlert","loadingEllipses","setLoadingEllipses","o","setTimeout","count","split","downloadScoreReport","last","pr","Blob","blob","file","FileSaver","saveAs","mess","handleCloseDownloadAlert","Card","overflowY","CardContent","minHeight","Tooltip","neighborhood","CardActions","Backdrop","CircularProgress","reason","createUser","Password","Phone","phone","setPhone","confirmPass","setConfirmPass","showPass","setShowPass","createAccount","signupMessage","TermsPage","innerWidth","AnswerType","QuestionType","flex","Transition","forwardRef","EditNeighborhoodDialog","setNeighborhood","latCenter","lngCenter","TransitionComponent","fullScreen","AppBar","Toolbar","edge","autoFocus","scoreInfo","s","questionDescription","answerId","questionIndex","score","answers","find","answerDescription","description","handleChangeAnswer","handleChangeFact","additionalInfo","EditQuestionDialog","question","setQuestion","setAnswers","questionType","handleChangeQuestionType","FormControlLabel","control","checked","required","quest","maxScore","handleChangeAnswerDescription","handleChangeAnswerScore","AddPropStepConnector","withStyles","alternativeLabel","right","active","completed","line","borderTopWidth","borderRadius","StepConnector","useQontoStepIconStyles","circle","AddPropertyStepIcon","clsx","stepper","AddPropertyDialog","activeStep","setActiveStep","zipErorr","block","setBlock","blockError","setBlockError","lot","setLot","lotError","setLotError","borough","setBorough","boroughError","setBoroughError","properScoreInfo","setProperScoreInfo","propScoreInfoErrors","setPropScoreInfoErrors","selectedNeighborhood","setSelectedNeighborhood","landlord","setLandlord","landlordName","setLandlordName","landlordNameError","setLandlordNameError","landlordScoreInfo","setLandlordScoreInfo","stepErrors","setStepErrors","setMasterAddress","blockLockError","setBlockLockError","BLOCK_LOC_DROPDOWN","info","questions","parentQuestionId","handleChangeAdditionalInfo","prevActiveStep","questionErrors","element","stepError","concat","Stepper","connector","Step","StepLabel","StepIconComponent","component","RadioGroup","Radio","DialogContentText","TaxDataDialog","taxRate","setTaxRate","getTaxData","getTaxRates","result","sort","b","year","TableContainer","Table","TableHead","TableRow","TableCell","TableBody","substring","rateYear","rate","taxclass","class_2","class_4","deduct","extot2","propTax","avtot2","avtot","change","oldRate","oldDeduct","bldgcl","fullval","toLocaleString","useRowStyles","borderBottom","QuestionRow","row","parent","editQuestion","setOpen","Fragment","colSpan","Collapse","timeout","unmountOnExit","Box","gutterBottom","refreshSession","refreshToken","editNeighborhoodOpen","setEditNeighborhoodOpen","allAnswers","setAllAnswers","allQuestions","setAllQuestions","selectedTab","setSelectedTab","selectedEditQuestion","setSelectedEditQuestion","editQuestionOpen","setEditQuestionOpen","selectedEditAnswers","setSelectedEditAnswers","editNotifOpen","setEditNotifOpen","editNotifMessage","setEditNotifMessage","editLoad","setEditLoad","addPropertyOpen","setAddPropertyOpen","landlords","setLandlords","sessionExpiredOpen","setSessionExpiredOpen","taxDataOpen","setTaxDataOpen","taxProperty","setTaxProperty","fetchQuestions","fetchAnswers","fetchLandlords","editNeighborhood","closeEditNeighborhood","val","closeEditQuestion","handleCloseAddProperty","propScoreInfo","neighborhoodScoreInfo","propertyScoreInfo","Error","elevation","endIcon","Accordion","AccordionSummary","expandIcon","ExpandMore","IconButtonProps","AccordionDetails","adds","openTaxData","refresh","backgroundImage","backgroundRepeat","backgroundSize","HomeMobile","searchPropertyList","query","skipNull","placeholder","toggleActive","toggleDisabled","PropertyListMobile","searchedProperties","setSearchedProperties","currentTerm","setCurrentTerm","viewType","setViewType","neighborhoodLoading","setNeighborhoodLoading","setRef","term","fetchPropertiesBySearch","fetchPropertiesByNeighborhood","ToggleButtonGroup","exclusive","ToggleButton","selected","AboutPageMobile","places","MapPage","transitLayer","TransitLayer","hotels","elementType","bikeLayer","BicyclingLayer","PlacesService","ma","getBounds","bounds","types","nearbySearch","results","pagination","PlacesServiceStatus","OK","geometry","TaxChart","fetchTaxData","REACT_APP_API_URL","path","render","from","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","initCartState","action","newState","initUserState","userReducer","reducers","persistConfig","key","storage","stateReconciler","autoMergeLevel1","rootReducer","combineReducers","persistedReducer","persistReducer","store","createStore","applyMiddleware","thunk","persistor","persistStore","ReactDOM","loading","forceRefresh"],"mappings":"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","file":"static/js/main.6a3dbc1b.chunk.js","sourcesContent":["export enum UserActionType {\n LOGIN = 'LOGIN',\n SIGN_OUT = \"SIGN_OUT\",\n USER_SIGNUP_ERROR = \"USER_SIGNUP_ERROR\",\n USER_LOGIN_ERROR = \"USER_LOGIN_ERROR\",\n RESET_PASSWORD_ERROR = \"RESET_PASSWORD_ERROR\"\n}\n\nexport const loginUser = (value: any) => {\n return {\n type: UserActionType.LOGIN,\n payload: {\n user: value\n }\n }\n}\n\nexport const signoutUser = () =>{\n return{\n type: UserActionType.SIGN_OUT,\n payload: {}\n }\n}\n\nexport const signUpError = (message: string) =>{\n return{\n type: UserActionType.USER_SIGNUP_ERROR,\n payload: {\n message: message\n }\n }\n}\n\nexport const signInError = (message: string) =>{\n return{\n type: UserActionType.USER_LOGIN_ERROR,\n payload: {\n message: message\n }\n }\n}\n\nexport const resetError = (message: string) =>{\n return{\n type: UserActionType.RESET_PASSWORD_ERROR,\n payload: {\n message: message\n }\n }\n}\n\n\n\n","import { baseEndpoint } from \"../App\";\nimport { loginUser, resetError, signInError, signoutUser, signUpError } from \"./UserActions\";\n\nconst CATS = [\"tenant\", \"broker\", \"landlord\"];\n\nexport const createUser = (values: any) => async (dispatch: any, getState: any) => {\n var requestOptions = {\n method: 'PUT',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n Category: CATS.findIndex(c => c === values.category) + 2,\n FirstName: values.firstName,\n LastName: values.lastName,\n Company: values.company,\n EmailAddress: values.email,\n Password: values.password,\n Phone: values.phone\n })\n }\n await fetch(baseEndpoint + \"users/create\", requestOptions)\n .then(async response => {\n if (response.ok) {\n var u = await response.json();\n dispatch(loginUser(u));\n }\n else {\n var message = await response.text();\n dispatch(signUpError(message));\n }\n\n });\n\n\n}\n\nexport const signOut = () => async (dispatch: any, getState: any) => {\n try{\n var userState = getState().userState;\n var requestOptions = {\n method: 'PUT',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n token: userState.user.currentToken.toString()\n })\n }\n await fetch(baseEndpoint + \"users/signout\", requestOptions)\n .then(async response => {\n if (response.ok) {\n dispatch(signoutUser());\n }\n });\n }\n catch(err)\n {\n dispatch(signoutUser());\n }\n}\n\nexport const login = (email: string, password: string) => async (dispatch: any, getState: any) => {\n var requestOptions = {\n method: 'PUT',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n email: email,\n password: password\n })\n }\n await fetch(baseEndpoint + \"users/login\", requestOptions)\n .then(async response => {\n if (response.ok) {\n var u = await response.json();\n dispatch(loginUser(u));\n return (true);\n }\n else {\n var message = await response.text();\n dispatch(signInError(message));\n return (false);\n }\n\n });\n\n}\n\nexport const refreshSession = () => async(dispatch: any, getState: any) => {\n try{\n var userState = getState().userState;\n var requestOptions = {\n method: 'PUT',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n token: userState.user.refreshToken.toString()\n })\n }\n await fetch(baseEndpoint + \"users/refresh\", requestOptions)\n .then(async response => {\n if (response.ok) {\n var u = await response.json();\n dispatch(loginUser(u));\n return (true);\n }\n else{\n dispatch(signOut());\n }\n });\n }\n catch(err)\n {\n dispatch(signoutUser());\n }\n}\n\n\n\nexport const resetPassword = (code: string, newPass: string, email: string) => async (dispatch: any, getState: any) => {\n var requestOptions = {\n method: 'PUT',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({email: email, code: code, password: newPass})\n }\n await fetch(baseEndpoint + \"users/passwordReset\", requestOptions)\n .then(async response => {\n if (response.ok) {\n console.log(\"here\");\n var u = await response.json();\n dispatch(loginUser(u));\n return(true);\n }\n else {\n var err = await response.text();\n dispatch(resetError(err));\n return (false);\n }\n\n });\n}","import React, { useState } from 'react';\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport VisibilityOffIcon from '@material-ui/icons/VisibilityOff';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport PersonIcon from '@material-ui/icons/Person';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport CloseIcon from '@material-ui/icons/Close';\nimport { createStyles, IconButton, InputAdornment, makeStyles, Slide, TextField, Theme } from '@material-ui/core';\nimport { Visibility } from '@material-ui/icons';\nimport { resetPassword } from '../Actions/thunks';\nimport { connect } from 'react-redux';\nimport { baseEndpoint, isMobile } from '../App';\nimport { Alert } from '@material-ui/lab';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n dialog: {\n overflowX: \"hidden\"\n },\n }),\n);\n\nfunction ForgotPasswordDialog(props: any) {\n const [email, setEmail] = useState(\"\");\n const [password, setPassword] = useState(\"\");\n const [confirmPassword, setConfirmPassword] = useState(\"\");\n const [confirmError, setConfirmError] = useState(false);\n const [inputType, setInputType] = React.useState(\"password\");\n const [receivedCode, setReceivedCode] = React.useState(false);\n const [passwordError, setPasswordError] = React.useState(false);\n const [emailError, setEmailError] = useState(\"\");\n const [resetCode, setResetCode] = useState(\"\");\n const [codeError, setCodeError] = useState(\"\");\n const [getCodeError, setGetCodeError] = useState(\"\");\n const classes = useStyles();\n\n const handleChangeEmail = (event: React.ChangeEvent) => {\n setEmail(event.target.value);\n }\n\n const handleChangePassword = (event: React.ChangeEvent) => {\n setPassword(event.target.value);\n }\n\n const handleChangeResetCode = (event: React.ChangeEvent) => {\n setResetCode(event.target.value);\n }\n\n const handleChangeConfirmPass = (event: React.ChangeEvent) => {\n setConfirmPassword(event.target.value);\n }\n\n const handleChangeInputType = () => {\n var newType = inputType === \"password\" ? \"\" : \"password\";\n setInputType(newType);\n }\n\n\n const getCode = async () => {\n var emailRegEx = new RegExp(/^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/); // eslint-disable-line\n var emailMatch = emailRegEx.test(email);\n if (email.trim() === \"\") {\n setEmailError(\"**No email was entered\");\n }\n else if (emailMatch === false) {\n setEmailError(\"**Invalid email\")\n }\n else if (emailError !== \"\") {\n setEmailError(\"\");\n }\n if (email.trim() !== \"\" && emailMatch === true) {\n var requestOptions = {\n method: 'PUT',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(email)\n }\n await fetch(baseEndpoint + \"users/forgotPassword\", requestOptions)\n .then(async response => {\n if (response.ok) {\n setReceivedCode(true);\n setGetCodeError(\"\");\n }\n else {\n var err = await response.text();\n setGetCodeError(err);\n }\n\n });\n\n }\n\n }\n\n const resetPassword = async () => {\n if (password.trim().length < 8) {\n setPasswordError(true);\n }\n else if (passwordError === true) {\n setPasswordError(false);\n }\n if(resetCode.trim().length > 6)\n {\n setCodeError(\"**Reset code is too long\")\n }\n else if(resetCode.trim().length < 6)\n {\n setCodeError(\"**Reset code is too short\");\n }\n else if(codeError !== \"\")\n {\n setCodeError(\"\");\n }\n if(password !== confirmPassword)\n {\n setConfirmError(true)\n }\n else if(confirmError === true)\n {\n setConfirmError(false)\n }\n if(password.trim().length >= 8 && resetCode.length === 6 && password === confirmPassword)\n {\n await props.resetPassword(resetCode, password, email);\n }\n\n } \n\n const backToEmail = () => {\n setReceivedCode(false);\n }\n const handleClose = () => {\n props.handleClose();\n setReceivedCode(false);\n setEmailError(\"\");\n }\n\n\n return (\n
\n Reset Password\n \n
\n {receivedCode === false && \n \n {getCodeError !== \"\" && \n {getCodeError}\n }\n
{\n event.preventDefault();\n }}>\n
\n \n \n \n ),\n }}\n variant=\"standard\"\n />\n\n
\n
\n \n
\n
\n
\n
}\n {receivedCode === true && \n \n {props.userState.resetMessage !== \"\" && \n {props.userState.resetMessage}\n }\n
{\n event.preventDefault();\n }}>\n
\n \n
\n
\n \n {inputType === \"password\" ? : }\n \n )\n }}\n variant=\"standard\"\n />\n
\n
\n \n
\n
\n \n \n
\n
\n
\n
}\n \n );\n}\nconst mapStateToProps = (state: any) => ({\n userState: state.userState,\n});\n\nconst mapDispatchToProps = (dispatch: any) => ({\n resetPassword: (code: string, password: string, email: string) => dispatch(resetPassword(code, password, email))\n});\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(ForgotPasswordDialog);","import React, { useState } from 'react';\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport VisibilityOffIcon from '@material-ui/icons/VisibilityOff';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport PersonIcon from '@material-ui/icons/Person';\nimport LockIcon from '@material-ui/icons/Lock';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport CloseIcon from '@material-ui/icons/Close';\nimport { IconButton, InputAdornment, Link, TextField, Typography } from '@material-ui/core';\nimport { Visibility } from '@material-ui/icons';\nimport { Alert, AlertTitle } from '@material-ui/lab';\nimport { login } from '../Actions/thunks';\nimport { connect } from 'react-redux';\nimport { signInError } from '../Actions/UserActions';\nimport ForgotPasswordDialog from './ForgotPasswordDialog';\nimport { isMobile } from '../App';\n\nfunction LoginDialog(props: any) {\n const [email, setEmail] = useState(\"\");\n const [password, setPassword] = useState(\"\");\n const [inputType, setInputType] = React.useState(\"password\");\n const [forgotPassOpen, setForgotPassOpen] = React.useState(false);\n\n\n const handleChangeEmail = (event: React.ChangeEvent) => {\n setEmail(event.target.value);\n }\n\n const handleChangePassword = (event: React.ChangeEvent) => {\n setPassword(event.target.value);\n }\n\n const handleChangeInputType = () => {\n var newType = inputType === \"password\" ? \"\" : \"password\";\n setInputType(newType);\n }\n\n\n const login = async () => {\n props.login(email, password);\n }\n\n const handleClose = () => {\n props.signInError(\"\");\n props.handleClose()\n }\n\n const handleOpenForgotPass = () => {\n setForgotPassOpen(true);\n }\n\n const handleCloseForgotPass = (value: any) => {\n setForgotPassOpen(false);\n }\n\n\n return (\n
\n
\n Login\n \n
\n\n \n {props.userState.loginMessage !== \"\" && \n Error\n {props.userState.loginMessage}\n }\n
{\n event.preventDefault();\n }}>\n
\n \n \n \n ),\n }}\n variant=\"standard\"\n />\n\n
\n
\n \n \n \n ),\n endAdornment: (\n \n {inputType === \"password\" ? : }\n \n )\n }}\n variant=\"standard\"\n />\n
\n\n
\n \n
\n
\n Don't have an account? Sign Up\n Forgot Password\n
\n \n \n
\n );\n}\nconst mapStateToProps = (state: any) => ({\n userState: state.userState,\n});\n\nconst mapDispatchToProps = (dispatch: any) => ({\n login: (email: string, password: string) => dispatch(login(email, password)),\n signInError: (message: string) => dispatch(signInError(message))\n});\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(LoginDialog);","import React from 'react';\nimport { Link } from 'react-router-dom';\nimport { Badge, Button, createStyles, Divider, IconButton, List, ListItem, makeStyles, Popover, Theme, Typography } from '@material-ui/core';\nimport ShoppingCartIcon from '@material-ui/icons/ShoppingCart';\nimport { connect } from 'react-redux';\nimport { signOut } from '../Actions/thunks';\nimport LoginDialog from './LoginDialog';\nimport MenuIcon from '@material-ui/icons/Menu';\nimport { baseEndpoint } from '../App';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n badge: {\n backgroundColor: \"#0404fc\",\n color: \"white\",\n border: `2px solid ${theme.palette.background.paper}`,\n padding: '0 4px',\n },\n }),\n);\n\nfunction Header(props: any) {\n const [menuOpen, setMenuOpen] = React.useState(false);\n const [anchorEl, setAnchorEl] = React.useState(null);\n const [loginOpen, setLoginOpen] = React.useState(false);\n const classes = useStyles();\n\n const handleOpenMenu = (event: React.MouseEvent) => {\n setAnchorEl(event.currentTarget);\n setMenuOpen(true);\n }\n\n const onCloseMenu = () => {\n setMenuOpen(false);\n setAnchorEl(null);\n }\n\n const signOut = () => {\n if (loginOpen === true) {\n setLoginOpen(false);\n }\n props.signOut();\n }\n\n const handleOpenLogin = () => {\n setLoginOpen(true);\n }\n\n const handleCloseLogin = () => {\n setLoginOpen(false);\n }\n console.log(props.userState);\n return (\n
\n
\n
\n \n \"\"\n \n
\n {props.isMobile === false ?
\n\n {window.location.pathname !== \"/properties\" && }\n \n \n \n \n \n \n
\n {props.userState.isAuth === true && Hi, {props.userState.user.firstName}!}\n
\n :\n \n \n \n \n \n }\n\n
\n \n \n\n \n \n \n \n \n \n \n \n \n {props.isMobile === true && \n \n }\n {props.userState.isAuth === true && props.userState.user.category === 1 && baseEndpoint.includes(\"dev\") &&\n \n \n \n }\n \n \n {props.userState.isAuth === false ? :\n }\n \n \n \n {props.userState.isAuth === false && }\n
\n );\n}\nconst mapStateToProps = (state: any) => ({\n cartState: state.cartState,\n userState: state.userState\n});\nconst mapDispatchToProps = (dispatch: any) => ({\n signOut: () => dispatch(signOut()),\n});\nexport default connect(mapStateToProps, mapDispatchToProps)(Header);","import React, { useState } from 'react';\nimport { createStyles, makeStyles, Theme } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport Button from '@material-ui/core/Button';\nimport { Dialog, DialogActions, DialogContent, DialogTitle, IconButton, InputAdornment, TextField } from '@material-ui/core';\nimport PersonIcon from '@material-ui/icons/Person';\nimport CloseIcon from '@material-ui/icons/Close';\nimport { baseEndpoint } from '../App';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n flexGrow: 1,\n },\n menuButton: {\n marginRight: theme.spacing(2),\n },\n title: {\n flexGrow: 1,\n },\n }),\n);\n\nexport default function Home() {\n const classes = useStyles();\n const [downloadGateOpen, setDownloadGateOpen] = useState(false);\n const [email, setEmail] = useState(\"\");\n\n const handleChangeEmail = (event: React.ChangeEvent) => {\n setEmail(event.target.value);\n }\n\n const openDownloadSample = () => {\n setDownloadGateOpen(true);\n }\n\n const submitDownloadSample = async (skip: boolean) => {\n var requestOptions = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Response-Type': 'Blob',\n },\n body: JSON.stringify(skip === false ? email : \"\" )\n }\n try {\n await fetch(baseEndpoint + \"properties/sample\", requestOptions)\n .then(async response => {\n if (response.ok) {\n setDownloadGateOpen(false)\n }\n else {\n setDownloadGateOpen(false)\n }\n\n })\n } catch (error) {\n console.log(error);\n\n }\n\n }\n\n\n\n return (\n
\n \"Retail\n
\n The pressure is intense to make an informed decision!\n What to do??? \n\n
\n \"Retail\n
\n \n Parslii does the research for you and helps make the space search process easy...\n \n
\n
\n Browse the Parslii Scores \"leaf\"\n
\n
\n
\n Get the full Parslii Property Report\n Information and multiple data points in several categories for every property\n
\n Download and check out sample Parslii Property Report pages\n \n
\n
\n
\n \"Overlapping\n
\n
\n
\n Compare Property Reports\n
\n
\n 101 Example St.\n \"Pages\n
\n
\n 10 Sample Ave.\n \"Pages\n
\n
\n 51 Example St.\n \"Pages\n
\n
\n -Multiple data points for each property\n -Owner Certifications\n
\n
\n
\n CERTIFICATION\n
\n \n Owners can certify data points about a building that
\n might not otherwise be publicy available.
\n Certifications improve the Parslii Score and give the
\n tenant more decision-making power.\n\n
\n
\n
\n -ESG Implementation\n
\n
\n
\n ESG\n
\n \n Owners can document their Environmental, Social,
\n and Governance (ESG) practices to improve their
\n Parslii score.\n\n
\n
\n
\n\n\n
\n
\n \"check\"\n Choose the best property for your business!\n
\n
\n Streamline your research and space selection process!\n Get started using Parslii \n
\n { setDownloadGateOpen(false) }} open={downloadGateOpen}>\n
\n Download Sample Property Report\n { setDownloadGateOpen(false) }} style={{ marginLeft: \"auto\", height: \"fit-content\", color: '#D11A2A', padding: \"5px\", marginTop: \"5px\", marginRight: \"5px\" }}>\n
\n\n \n
\n Enter email to continue opening our sample property report.\n \n \n \n ),\n }}\n variant=\"standard\"\n />\n\n
\n
\n \n \n \n \n\n \n
\n
\n );\n}\n\n","import React from 'react';\nimport { makeStyles, Theme } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport { Button, List, ListItem } from '@material-ui/core';\nimport { connect } from 'react-redux';\nimport { signOut } from '../Actions/thunks';\nimport LoginDialog from '../Header/LoginDialog';\nimport { Link } from 'react-router-dom';\n\nconst useStyles = makeStyles((theme: Theme) => ({\n appBar: {\n top: \"auto\",\n bottom: 0,\n position: \"relative\",\n // backgroundColor: \"#326b9d\",\n padding: \"0 0px 12px!important\",\n height: \"15vh\",\n },\n dividerRoot: {\n backgroundColor: \"black\"\n }\n}));\n\nfunction Footer(props: any) {\n const classes = useStyles();\n const [loginOpen, setLoginOpen] = React.useState(false);\n\n const signOut = () =>{\n if(loginOpen === true)\n {\n setLoginOpen(false);\n }\n props.signOut();\n }\n\n const handleOpenLogin = () =>{\n setLoginOpen(true);\n }\n\n const handleCloseLogin = () =>{\n setLoginOpen(false);\n }\n\n return (\n
\n
\n\n
\n
\n

\n Disclaimer - parslii Scores and parslii Property Reports are not legal advice. Any decisions regarding leasing or
\n lease negoatiations should be made in conjunction with your attorney. Please see our full Terms of Use.\n

\n \n \"\"\n \n \n\n \n \"\"\n \n \n \"\"\n \n
\n © 2021 parslii, LLC\n
\n\n
\n\n \n \n {props.userState.isAuth === false ? :\n }\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n
\n
\n
\n\n\n
\n\n {props.userState.isAuth === false && } \n
\n );\n}\nconst mapStateToProps = (state: any) => ({\n userState: state.userState\n});\nconst mapDispatchToProps = (dispatch: any) => ({\n signOut: () => dispatch(signOut()),\n});\nexport default connect(mapStateToProps, mapDispatchToProps)(Footer);","import React, { useEffect } from 'react';\nimport { createStyles, makeStyles, Theme } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport Button from '@material-ui/core/Button';\nimport { FormControl, InputLabel, MenuItem, Select, TextField, FormHelperText, Snackbar } from '@material-ui/core';\nimport { useState } from 'react';\nimport { baseEndpoint } from '../App';\nimport { connect } from 'react-redux';\nimport { Alert } from '@material-ui/lab';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n flexGrow: 1,\n marginTop: \"10px\",\n display: \"block\"\n },\n menuButton: {\n marginRight: theme.spacing(2),\n },\n title: {\n flexGrow: 1,\n },\n input: {\n backgroundColor: \"white\",\n '& label.Mui-focused': {\n color: '#0404fc',\n borderWidth: \"3px\",\n backgroundColor: \"white\"\n },\n '& .MuiInputLabel-outlined': {\n backgroundColor: \"white\",\n paddingRight: \"10px\",\n transform: \"translate(14px, 13px) scale(1)\"\n },\n '& .MuiInputLabel-outlined.MuiInputLabel-shrink': {\n transform: \"translate(14px, -6px) scale(0.75)\"\n },\n '& .MuiOutlinedInput-input': {\n paddingTop: \"12px\",\n paddingBottom: \"12px\"\n },\n '& .MuiOutlinedInput-root': {\n '& fieldset': {\n borderColor: '#0404fc',\n borderWidth: \"3px\"\n },\n '&:hover fieldset': {\n borderColor: '#0404fc',\n borderWidth: \"3px\"\n },\n '&.Mui-focused fieldset': {\n borderColor: '#0404fc',\n borderWidth: \"3px\"\n },\n },\n },\n inputError: {\n backgroundColor: \"white\",\n '& label.Mui-focused': {\n borderWidth: \"3px\"\n },\n '& .MuiInput-underline:after': {\n borderWidth: \"3px\"\n },\n '& .MuiInputLabel-outlined': {\n backgroundColor: \"white\",\n paddingRight: \"10px\",\n transform: \"translate(14px, 13px) scale(1)\"\n },\n '& .MuiInputLabel-outlined.MuiInputLabel-shrink': {\n transform: \"translate(14px, -6px) scale(0.75)\"\n },\n '& .MuiOutlinedInput-input': {\n paddingTop: \"12px\",\n paddingBottom: \"12px\"\n },\n '& .MuiOutlinedInput-root': {\n '& fieldset': {\n borderWidth: \"3px\"\n },\n '&:hover fieldset': {\n borderWidth: \"3px\"\n },\n '&.Mui-focused fieldset': {\n borderWidth: \"3px\"\n },\n },\n }\n }),\n);\n\nfunction RequestProperty(props: any) {\n const classes = useStyles();\n const [firstName, setFirstName] = useState(\"\");\n const [firstNameError, setFirstNameError] = useState(false);\n const [lastName, setLastName] = useState(\"\");\n const [lastNameError, setLastNameError] = useState(false);\n const [company, setCompany] = useState(\"\");\n const [companyError, setCompanyError] = useState(false);\n const [category, setCategory] = useState(0);\n const [categoryError, setCategoryError] = useState(false);\n const [email, setEmail] = useState(\"\");\n const [emailError, setEmailError] = useState(\"\");\n const [address, setAddress] = useState(\"\");\n const [addressError, setAddressError] = useState(false);\n const [comments, setComments] = useState(\"\");\n const [zip, setZip] = useState(\"\");\n const [zipError, setZipError] = useState(\"\");\n const [requestAlertOpen, setRequestAlertOpen] = useState(false);\n const [alertMessage, setAlertMessage] = useState(\"\");\n\n useEffect(() => {\n if (props.userState.isAuth) {\n setFirstName(props.userState.user.firstName);\n setLastName(props.userState.user.lastName);\n setEmail(props.userState.user.emailAddress);\n if(props.userState.user.category !== 1)\n {\n setCategory(props.userState.user.category)\n }\n }\n else{\n setCategory(0)\n setFirstName(\"\");\n setLastName(\"\");\n setEmail(\"\");\n }\n }, [props])\n\n const handleChangeFirstName = (event: React.ChangeEvent) => {\n setFirstName(event.target.value);\n };\n\n const handleChangeLastName = (event: React.ChangeEvent) => {\n setLastName(event.target.value);\n };\n\n const handleChangeCompany = (event: React.ChangeEvent) => {\n setCompany(event.target.value);\n };\n\n const handleChangeCategory = (event: React.ChangeEvent<{ value: unknown }>) => {\n setCategory(event.target.value as number);\n };\n\n const handleChangeEmail = (event: React.ChangeEvent) => {\n setEmail(event.target.value);\n };\n\n const handleChangeAddress = (event: React.ChangeEvent) => {\n setAddress(event.target.value);\n };\n\n const handleChangeZip = (event: React.ChangeEvent) => {\n setZip(event.target.value);\n };\n\n const handleChangeComments = (event: React.ChangeEvent) => {\n setComments(event.target.value);\n };\n\n const handleSendRequest = async () => {\n var emailRegEx = new RegExp(/^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/); // eslint-disable-line\n var emailMatch = emailRegEx.test(email);\n if (firstName.trim() === \"\") {\n setFirstNameError(true);\n }\n else {\n setFirstNameError(false);\n }\n if (lastName.trim() === \"\") {\n setLastNameError(true);\n }\n else {\n setLastNameError(false);\n }\n if (category === 3 && company.trim() === \"\") {\n setCompanyError(true);\n }\n else {\n setCompanyError(false);\n }\n if (category === 0) {\n setCategoryError(true);\n }\n else {\n setCategoryError(false);\n }\n if (email.trim() === \"\") {\n setEmailError(\"**Email required\");\n }\n else if (emailMatch === false) {\n setEmailError(\"**Invalid email\")\n }\n else if (emailError !== \"\") {\n setEmailError(\"\");\n }\n if (address.trim() === \"\") {\n setAddressError(true);\n }\n else {\n setAddressError(false);\n }\n if (zip.trim() === \"\") {\n setZipError(\"**Property zip code is required\");\n }\n else if (isNaN(+zip) || zip.trim().length !== 5) {\n setZipError(\"**Invalid zip code\")\n }\n else {\n setZipError(\"\");\n }\n if(firstName.trim() !== \"\" && lastName.trim() !== \"\" && (category !== 3 || company.trim() !== \"\") && category !== 0 && email.trim() !== \"\" && emailMatch === true && address.trim() !== \"\" && zip.trim() !== \"\")\n {\n var requestOptions = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Response-Type': 'application/json',\n },\n body: JSON.stringify({FirstName: firstName, LastName: lastName, EmailAddress: email, Address: address, Zip: zip, Company: company, Comments: comments, Category: category})\n }\n try {\n await fetch(baseEndpoint + \"properties/request\", requestOptions)\n .then(async response => {\n if(response.ok)\n {\n setAlertMessage(\"Thank you for your property request! We will get back to you soon!\");\n setRequestAlertOpen(true);\n }\n else{\n setAlertMessage(\"There was an error with your request! Please try again later!\");\n setRequestAlertOpen(true);\n }\n });\n }\n catch (error) {\n console.log(error);\n }\n }\n\n\n }\n\n const handleCloseRequestAlert = () =>{\n setRequestAlertOpen(false);\n }\n\n return (\n
\n
\n
\n
\n \"Buildings\n
\n \n Fill out this form to let us know the properties you are interested in. We will get back to you as soon as the property analysis and scoring is complete.\n You can decide then if you want the Property Report.\n \n
\n \n Are you a commercial broker? We can produce Parslii Scores for all of your listings. Contact us and we can help.\n \n\n
\n
\n Property Score Request Form\n
\n
\n \n \n
\n
\n \n
\n
\n \n Category *\n \n Tenant\n Broker\n Landlord\n \n {categoryError === true && **Category is required}\n \n
\n
\n \n
\n
\n \n {addressError === true && **Property address Required}\n
\n \n {zipError !== \"\" && {zipError}}\n
\n\n
\n
\n \n
\n
\n \n
\n\n
\n
\n Keep looking for that perfect property\n \n
\n
\n
\n \n \n {alertMessage}\n \n \n
\n );\n} \nconst mapStateToProps = (state: any) => ({\n userState: state.userState\n});\nexport default connect(mapStateToProps)(RequestProperty);","import { Property } from \"../Models/Property\"\n\nexport enum CartActionType {\n ADD_TO_CART = 'ADD_TO_CART',\n REMOVE_FROM_CART = 'REMOVE_FROM_CART',\n CLEAR_CART = 'CLEAR_CART'\n}\n\nexport const addToCart = (property: Property) => {\n return {\n type: CartActionType.ADD_TO_CART,\n payload: {\n property: property\n }\n }\n}\n\nexport const removeFromCart = (id: number) =>{\n return{\n type: CartActionType.REMOVE_FROM_CART,\n payload: {\n id: id\n }\n }\n}\n\nexport const clearCart = () =>{\n return{\n type: CartActionType.CLEAR_CART,\n payload: null\n }\n}\n","import { ChangeEvent, useEffect, useRef, useState } from 'react';\nimport { createStyles, makeStyles, Theme } from '@material-ui/core/styles';\nimport { Typography, List, ListItem, Button, TextField, InputAdornment, IconButton } from '@material-ui/core';\nimport { Address, Property } from '../Models/Property';\nimport { baseEndpoint } from '../App';\nimport { Neighborhood } from '../Models/Neighborhood';\nimport SearchIcon from '@material-ui/icons/Search';\nimport ClearIcon from '@material-ui/icons/Clear';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n flexGrow: 1,\n marginTop: \"10px\",\n display: \"flex\"\n },\n menuButton: {\n marginRight: theme.spacing(2),\n },\n title: {\n flexGrow: 1,\n },\n input: {\n backgroundColor: \"white\",\n '& label.Mui-focused': {\n color: '#0404fc',\n borderWidth: \"3px\"\n },\n '& .MuiInput-underline:after': {\n borderBottomColor: '#0404fc',\n borderWidth: \"3px\"\n },\n '& .MuiOutlinedInput-root': {\n '& fieldset': {\n borderColor: '#0404fc',\n borderWidth: \"3px\"\n },\n '&:hover fieldset': {\n borderColor: '#0404fc',\n borderWidth: \"3px\"\n },\n '&.Mui-focused fieldset': {\n borderColor: '#0404fc',\n borderWidth: \"3px\"\n },\n },\n },\n }),\n);\n\nexport const loadMapApi = () => {\n const mapsUrl = \"https://maps.googleapis.com/maps/api/js?key=AIzaSyBJ8YqLm8Q0vyLA74cV2TUvVqNM-o_NAoQ&libraries=places&languages=no®ion=NO&v=quarterly\"\n const scripts = document.getElementsByTagName('script');\n for (let i = 0; i < scripts.length; i++) {\n if (scripts[i].src.indexOf(mapsUrl) === 0) {\n return scripts[i];\n }\n }\n\n const googleMapsScript = document.createElement('script');\n googleMapsScript.src = mapsUrl;\n googleMapsScript.async = true;\n googleMapsScript.defer = true;\n window.document.body.appendChild(googleMapsScript);\n\n return googleMapsScript;\n}\n\n\ntype GoogleLatLng = google.maps.LatLng;\ntype GoogleMap = google.maps.Map;\n\nexport default function PropertyList(props: any) {\n const classes = useStyles();\n const [scriptLoaded, setScriptLoaded] = useState(false);\n const ref = useRef(null);\n const [markers, setMarkers] = useState();\n const [map, setMap] = useState();\n const [allProperties, setAllProperties] = useState([] as Property[]);\n const [shownProperties, setShownProperties] = useState([] as Property[]);\n const [neighborhoods, setNeighborhoods] = useState([] as any[]);\n const [searchTerm, setSearchTerm] = useState(\"\");\n\n\n useEffect(() => {\n\n if (!map) {\n const googleMapScript = loadMapApi();\n googleMapScript.addEventListener('load', function () {\n setScriptLoaded(true);\n initMap(new google.maps.LatLng(40.766632, -73.977211))\n\n });\n\n }\n\n if (shownProperties.length > 0 && neighborhoods.length > 0 && !markers) {\n createMarkers(shownProperties);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [map, allProperties, shownProperties, neighborhoods]);\n useEffect(() =>{\n if(map && allProperties.length === 0)\n {\n fetchProperties();\n fetchNeighborhoods();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n },[map])\n\n const initMap = (address: GoogleLatLng) => {\n if (ref.current) {\n setMap(\n new google.maps.Map(ref.current, {\n zoom: 12,\n center: address,\n mapTypeControl: false,\n streetViewControl: false,\n rotateControl: false,\n scaleControl: true,\n fullscreenControl: false,\n panControl: false,\n zoomControl: true,\n gestureHandling: 'cooperative',\n mapTypeId: google.maps.MapTypeId.ROADMAP,\n draggableCursor: 'pointer',\n styles: [\n {\n featureType: \"poi\",\n stylers: [\n { visibility: \"off\" }\n ]\n },\n {\n featureType: \"transit\",\n stylers: [{ visibility: \"off\" }],\n },\n ]\n })\n )\n }\n }\n\n\n async function fetchProperties() {\n try {\n await fetch(baseEndpoint + 'Properties/list').then(async (response) => {\n if (response.ok) {\n var r = await response.json() as Property[];\n setAllProperties(r);\n setShownProperties(r);\n //createMarkers(r);\n }\n })\n }\n catch (ex) {\n\n }\n }\n\n function createMarkers(proper: Property[]) {\n var mark = [] as any[]\n if (!markers) {\n mark = [] as any[]\n }\n proper.forEach(p => {\n var latLng = { lat: p.addresses[0].lat, lng: p.addresses[0].lng }\n var add = p.addresses[0].address + \" \" + p.addresses[0].city + \", \" + p.addresses[0].state + \" \" + p.addresses[0].zip;\n var m = new google.maps.Marker({\n position: latLng,\n icon: 'green-pin.png',\n label: {\n text: (Math.round(p.calcScore)).toString(),\n color: '#0404fc',\n fontSize: \"9px\",\n fontWeight: \"bold\"\n },\n title: add,\n })\n var elem = document.getElementById(p.addresses[0].internalId.toString());\n if (!!elem) {\n m.addListener('click', () => {\n elem?.click();\n })\n }\n\n p.addresses.forEach(a => {\n\n var elem = document.getElementById(a.internalId.toString());\n if (!!elem) {\n elem.onmouseover = function () {\n m.setIcon('blue-pin.png');\n m.setLabel({\n text: (Math.round(p.calcScore)).toString(),\n color: '#17d703',\n fontSize: \"10px\",\n fontWeight: \"bold\"\n })\n m.setZIndex(100);\n }\n elem.onmouseleave = function () {\n m.setIcon('green-pin.png');\n m.setLabel({\n text: (Math.round(p.calcScore)).toString(),\n color: '#0404fc',\n fontSize: \"9px\",\n fontWeight: \"bold\"\n })\n m.setZIndex(0);\n }\n }\n })\n\n m.setMap(map as GoogleMap);\n mark.push(m);\n });\n setMarkers(mark);\n }\n\n async function fetchNeighborhoods() {\n try {\n await fetch(baseEndpoint + 'neighborhoods').then(async (response) => {\n if (response.ok) {\n var r = await response.json() as Neighborhood[];\n setNeighborhoods(r);\n }\n })\n }\n catch (ex) {\n\n }\n }\n\n const handleChangeSearchTerm = (event: ChangeEvent) => {\n setSearchTerm(event.target.value);\n }\n\n const search = () => {\n if (searchTerm !== \"\") {\n var temp = [] as Property[];\n allProperties.forEach(p => {\n var t = Object.assign({}, p) as Property;\n t.addresses = [] as Address[];\n p.addresses.forEach(a => {\n if (a.address.toUpperCase().includes(searchTerm.toUpperCase())) {\n t.addresses.push(a);\n }\n else if (a.masterAddress != null && a.masterAddress.toUpperCase().includes(searchTerm.toUpperCase())) {\n t.addresses.push(a);\n }\n })\n if (t.addresses.length > 0) {\n temp.push(t);\n }\n })\n if (temp.length === 0) {\n temp.push({ internalId: -1, addresses: [{ address: \"No results found\" }] as Address[] } as Property);\n }\n else {\n\n setMarkers(undefined)\n }\n var marks = markers as any[];\n marks.forEach(m => {\n m.setMap(null)\n })\n\n\n setShownProperties(temp);\n }\n else {\n temp = Object.assign([], allProperties) as Property[];\n marks = markers as any[];\n marks.forEach(m => {\n m.setMap(null)\n })\n setMarkers(undefined)\n setShownProperties(temp);\n }\n }\n\n const clear = () => {\n setSearchTerm(\"\");\n var temp = Object.assign([], allProperties) as Property[];\n var marks = markers as any[];\n marks.forEach(m => {\n m.setMap(null)\n })\n setMarkers(undefined)\n setShownProperties(temp);\n }\n\n return (\n
\n
\n
\n
\n
\n
\n
\n \"\"\n The Parslii System\n
\n
{\n e.preventDefault();\n search();\n \n }} style={{ marginTop: \"10px\", marginLeft: \"50px\" }}>\n ,\n endAdornment: searchTerm !== \"\" ? : null\n }}\n />\n \n\n
\n
\n {neighborhoods.length > 0 && shownProperties.length > 0 && \n {neighborhoods.map((n, i) => {\n var count = shownProperties.filter(p => p.neighborhoodId === n.internalId).length;\n if (count > 0) {\n return ({n.name}\n \n {shownProperties.map((p, j) => {\n\n if (p.neighborhoodId === n.internalId) {\n return (\n p.addresses.map((a, k) => {\n var add = a.address + \", \" + a.city + \", \" + a.state + \" \" + a.zip;\n return ()\n }));\n }\n else {\n return null;\n }\n })}\n\n )\n }\n else {\n return null;\n }\n\n })}\n }\n {shownProperties.length === 1 && shownProperties[0].internalId === -1 &&\n
\n No results found\n
\n }\n
\n
\n
\n {scriptLoaded && (\n
\n )}\n
\n We are continually analyzing properties and adding more Parslii Scores. Don't see the address you're looking for? Request a Score! It's FREE \n\n
\n
\n
\n\n
\n
\n );\n}","import { useEffect, useRef, useState } from 'react';\nimport { createStyles, makeStyles, Theme } from '@material-ui/core/styles';\nimport { Property } from '../Models/Property';\nimport { baseEndpoint } from '../App';\nimport { RouteComponentProps, useHistory } from 'react-router-dom';\nimport { Button, Snackbar, TextField, Typography } from '@material-ui/core';\nimport { loadMapApi } from '../PropertyList/PropertyList';\nimport { addToCart } from '../Actions/CartActions';\nimport { connect } from 'react-redux';\nimport { Alert } from '@material-ui/lab';\nimport {Color} from \"@material-ui/lab/Alert\"\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n flexGrow: 1,\n marginTop: \"10px\",\n display: \"flex\"\n },\n menuButton: {\n marginRight: theme.spacing(2),\n },\n title: {\n flexGrow: 1,\n },\n input: {\n backgroundColor: \"white\",\n '& label.Mui-focused': {\n color: '#0404fc',\n borderWidth: \"3px\",\n backgroundColor: \"white\"\n },\n '& .MuiInputLabel-outlined': {\n backgroundColor: \"white\",\n paddingRight: \"10px\",\n transform: \"translate(14px, 13px) scale(1)\"\n },\n '& .MuiInputLabel-outlined.MuiInputLabel-shrink': {\n transform: \"translate(14px, -6px) scale(0.75)\"\n },\n '& .MuiOutlinedInput-input': {\n paddingTop: \"12px\",\n paddingBottom: \"12px\"\n },\n '& .MuiOutlinedInput-root': {\n '& fieldset': {\n borderColor: '#0404fc',\n borderWidth: \"3px\"\n },\n '&:hover fieldset': {\n borderColor: '#0404fc',\n borderWidth: \"3px\"\n },\n '&.Mui-focused fieldset': {\n borderColor: '#0404fc',\n borderWidth: \"3px\"\n },\n },\n },\n }),\n);\n\n\n\ninterface PropertyPagePropes {\n id: string,\n\n}\n\ninterface PropertyCartProps {\n cartState: any,\n addToCart: (property: Property) => string,\n userState: any\n}\n\ntype GoogleLatLng = google.maps.LatLng;\ntype GoogleMap = google.maps.Map;\n\n\nfunction PropertyPage(props: RouteComponentProps & PropertyCartProps) {\n const classes = useStyles();\n const history = useHistory()\n const [addressId, setAddressId] = useState(-1);\n const [property, setProperty] = useState({} as Property);\n const [streetViewUrl, setStreetViewUrl] = useState(\"\");\n const [scriptLoaded, setScriptLoaded] = useState(false);\n const ref = useRef(null);\n const [marker, setMarker] = useState();\n const [map, setMap] = useState();\n const [heading, setHeading] = useState(\"-1\");\n const [lat, setLat] = useState(\"0\");\n const [lng, setLng] = useState(\"0\");\n const [adminAlert, setAdminAlert] = useState(false);\n const [adminAlertMessage, setAdminAlertMessage] = useState(\"\");\n const [alertSeverity, setAlertSeverity] = useState(\"success\");\n\n useEffect(() => {\n\n if (property.id == null) {\n fetchProperty();\n }\n else if (!map) {\n const googleMapScript = loadMapApi();\n googleMapScript.addEventListener('load', function () {\n setScriptLoaded(true);\n initMap(new google.maps.LatLng(property.addresses[0].lat, property.addresses[0].lng))\n\n });\n }\n else if (map) {\n var m = marker;\n var add = property.addresses[0].address + \" \" + property.addresses[0].city + \", \" + property.addresses[0].state + \" \" + property.addresses[0].zip;\n var latLng = { lat: property.addresses[0].lat, lng: property.addresses[0].lng }\n m = new google.maps.Marker({\n position: latLng,\n icon: '../green-pin.png',\n title: add,\n })\n console.log(map);\n m.setMap(map as GoogleMap);\n setMarker(m);\n }\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [props.match.params.id, property, map]);\n\n const initMap = (address: GoogleLatLng) => {\n if (ref.current) {\n setMap(\n new google.maps.Map(ref.current, {\n zoom: 18,\n center: address,\n mapTypeControl: false,\n streetViewControl: false,\n rotateControl: false,\n scaleControl: true,\n fullscreenControl: false,\n panControl: false,\n zoomControl: true,\n gestureHandling: 'cooperative',\n mapTypeId: google.maps.MapTypeId.ROADMAP,\n draggableCursor: 'pointer',\n styles: [\n {\n featureType: \"poi\",\n stylers: [\n { visibility: \"off\" }\n ]\n },\n {\n featureType: \"transit\",\n stylers: [{ visibility: \"off\" }],\n },\n ]\n })\n )\n }\n }\n\n async function fetchProperty() {\n console.log(props.match.params.id)\n try {\n await fetch(baseEndpoint + 'Properties/address/' + props.match.params.id).then(async (response) => {\n if (response.ok) {\n var r = await response.json() as Property;\n setAddressId(Number(props.match.params.id));\n setProperty(r);\n if (property.id == null) {\n setHeading(r.addresses[0].heading.toString());\n setLat(r.addresses[0].lat.toString());\n setLng(r.addresses[0].lng.toString());\n }\n\n var url = \"https://maps.googleapis.com/maps/api/streetview?size=450x450&location=\" + (lat === \"0\" ? r.addresses[0].lat : lat) + \",\" + (lng === \"0\" ? r.addresses[0].lng : lng) + \"&source=outdoor&heading=\" + (heading === \"-1\" ? r.addresses[0].heading : heading) + \"&fov=90&&key=AIzaSyBJ8YqLm8Q0vyLA74cV2TUvVqNM-o_NAoQ\"\n setStreetViewUrl(url);\n }\n })\n }\n catch (ex) {\n\n }\n }\n\n\n const handleAddToCart = async () => {\n props.addToCart(property);\n history.push(\"/cart\");\n }\n\n const handleChangeHeading = (event: React.ChangeEvent) => {\n setHeading(event.target.value);\n };\n const handleChangeLat = (event: React.ChangeEvent) => {\n setLat(event.target.value);\n };\n\n const handleChangeLng = (event: React.ChangeEvent) => {\n setLng(event.target.value);\n };\n\n\n const tryHeading = () => {\n fetchProperty();\n }\n\n const saveHeading = async () => {\n var requestOptions = {\n method: 'POST',\n headers: {\n \"Authorization\": \"Bearer \" + props.userState.user.currentToken,\n 'Content-Type': 'application/json',\n 'Response-Type': 'Blob',\n },\n body: JSON.stringify({heading: Number(heading), lat: Number(lat), lng: Number(lng)})\n }\n try {\n await fetch(baseEndpoint + \"properties/heading/\" + property.addresses[0].internalId, requestOptions)\n .then(async response => {\n if (response.ok) {\n setAdminAlertMessage(\"Street View Change Saved!\");\n setAlertSeverity(\"success\");\n setAdminAlert(true);\n }\n else {\n setAdminAlertMessage(\"Street View Change Error!\");\n setAlertSeverity(\"error\");\n setAdminAlert(true);\n console.log(response);\n }\n\n })\n } catch (error) {\n console.log(error);\n\n }\n }\n\n const publish = async () => {\n var requestOptions = {\n method: 'POST',\n headers: {\n \"Authorization\": \"Bearer \" + props.userState.user.currentToken,\n 'Content-Type': 'application/json',\n 'Response-Type': 'Blob',\n },\n body: JSON.stringify(property)\n }\n try {\n await fetch(baseEndpoint + \"properties/publish/\" , requestOptions)\n .then(async response => {\n if (response.ok) {\n setAdminAlertMessage(\"Publish Success!\");\n setAlertSeverity(\"success\");\n setAdminAlert(true);\n }\n else {\n console.log(response);\n var error = await response.text();\n if(error === \"Invalid session!\")\n {\n setAdminAlertMessage(\"Invalid session please try logging out and back in!\")\n }\n else{\n setAdminAlertMessage(\"Publish Error!\");\n }\n setAlertSeverity(\"error\");\n setAdminAlert(true);\n }\n\n })\n } catch (error) {\n console.log(error);\n\n }\n }\n\n const handleCloseAlert = () =>{\n setAdminAlert(false);\n}\n\n return (\n
\n
\n {property.id != null &&
{property.addresses[0].address + \" \" + property.addresses[0].city}
}\n {property.id != null &&
\n {streetViewUrl !== \"\" && addressId > 0 && \"Not}\n {props.userState.isAuth === true && props.userState.user.category === 1 &&
\n \n \n \n \n \n \n
}\n
}\n\n
\n
\n
Parslii Score
\n
\n
\n
\n\n \"leaf\"\n {(Math.round(property.calcScore)).toString()}\n
\n Parslii Score is a measure of a property's strengths and viability for supporting a successful business\n
\n Behind every Parslii Score is a full PROPERTY REPORT. All the research and dozens of data points Parslii uses to analyze every property. So you can have the power to make an objective, informed decision for your business.\n {property.id != null &&
}\n\n {scriptLoaded && (\n
\n )}\n\n
\n
\n \n \n {adminAlertMessage}\n \n \n
\n );\n}\nconst mapStateToProps = (state: any) => ({\n cartState: state.cartState,\n userState: state.userState\n\n});\n\nconst mapDispatchToProps = (dispatch: any) => ({\n addToCart: (property: Property) => dispatch(addToCart(property)),\n});\nexport default connect(mapStateToProps, mapDispatchToProps)(PropertyPage)","import { useState } from 'react';\nimport { createStyles, makeStyles, Theme } from '@material-ui/core/styles';\nimport { Chart, Scatter } from 'react-chartjs-2';\nimport { baseEndpoint } from '../App';\nimport { NeighborhoodPopular } from '../Models/Neighborhood';\nconst queryString = require('query-string');\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n flexGrow: 1,\n position: \"absolute\",\n backgroundColor: \"white\",\n zIndex: 999,\n height: \"90%\",\n width: \"100%\"\n },\n menuButton: {\n marginRight: theme.spacing(2),\n },\n title: {\n flexGrow: 1,\n },\n }),\n);\n\nexport default function PopularityChart(props: any) {\n const classes = useStyles();\n const [neighborhoodId, setNeighborhoodId] = useState();\n const [data, setData] = useState({} as any);\n const [options, setOptions] = useState({} as any);\n var id = queryString.parse(props.location.search, { arrayFormat: 'index' }).id\n if (id && id !== neighborhoodId) {\n fetchChart(id);\n }\n Chart.defaults.maintainAspectRatio = false;\n\n\n\n\n async function fetchChart(id: number) {\n try {\n await fetch(baseEndpoint + 'neighborhoods/popularity').then(async (response) => {\n if (response.ok) {\n var r = await response.json() as NeighborhoodPopular[];\n var d = { datasets: [] as any[] };\n var selectedX = Number(r.filter(p => p.neighborhoodId === Number(id) && p.questionId === 22)[0].fact);\n var selectedY = Number(r.filter(p => p.neighborhoodId === Number(id) && p.questionId === 23)[0].fact);\n var selectedSet = {\n label: r.filter(p => p.neighborhoodId === Number(id) && p.questionId === 23)[0].name,\n data: [{ x: selectedX, y: selectedY }],\n backgroundColor: \"#17d703\"\n }\n\n d.datasets.push(selectedSet);\n var set = {\n label: \"Other NYC neighborhoods\",\n data: [] as any[],\n backgroundColor: \"#0404fc\"\n }\n\n r.forEach(n => {\n if (n.neighborhoodId !== Number(id)) {\n if (n.questionId === 22) {\n var x = Number(n.fact);\n var y = Number(r.filter(p => p.neighborhoodId === n.neighborhoodId && p.questionId === 23)[0].fact);\n set.data.push({ x: x, y: y });\n\n\n }\n }\n\n });\n var o = {\n pointRadius: 4.5,\n scales: {\n y: {\n title: {\n display: true,\n text: 'Celebrity Residents',\n font:{\n size: 18\n }\n },\n ticks: {\n stepSize: 2\n }\n },\n x: {\n title: {\n text: \"Social Media Mentions\",\n display: true,\n font:{\n size: 18\n }\n },\n ticks:{\n stepSize: 250000\n }\n }\n },\n plugins: {\n title:{\n display: true,\n text: \"Neighborhood Popularity\",\n font:{\n wieght: \"bold\",\n size: 25\n },\n padding: 5,\n position: \"top\",\n align: \"start\"\n },\n legend: {\n display: true,\n position: \"bottom\",\n align: \"start\",\n labels:{\n padding: 8,\n font:{\n size: 15\n }\n },\n\n }\n },\n aspectRatio: 1,\n animation: false\n\n };\n setOptions(o);\n d.datasets.push(set);\n console.log(d);\n setNeighborhoodId(id);\n setData(d);\n }\n })\n }\n catch (ex) {\n\n }\n }\n console.log(data);\n return (\n
\n
\n {data.datasets && }\n
\n
\n );\n}","import { useState } from 'react';\nimport { createStyles, makeStyles, Theme } from '@material-ui/core/styles';\nimport { Bar, Chart } from 'react-chartjs-2';\nimport { baseEndpoint } from '../App';\nimport { NeighborhoodPopular } from '../Models/Neighborhood';\nconst queryString = require('query-string');\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n flexGrow: 1,\n position: \"absolute\",\n backgroundColor: \"white\",\n zIndex: 999,\n height: \"90%\",\n width: \"100%\",\n },\n menuButton: {\n marginRight: theme.spacing(2),\n },\n title: {\n flexGrow: 1,\n },\n }),\n);\n\nexport default function IncomeChart(props: any) {\n const classes = useStyles();\n const [neighborhoodId, setNeighborhoodId] = useState();\n const [data, setData] = useState({} as any);\n Chart.defaults.maintainAspectRatio = false;\n var id = queryString.parse(props.location.search, { arrayFormat: 'index' }).id\n if (id && id !== neighborhoodId) {\n fetchChart(id);\n setNeighborhoodId(id);\n }\n const d = {\n labels: [] as any[],\n datasets: [\n {\n data: [] as any[],\n backgroundColor: [] as any[],\n borderColor: [] as any[],\n borderWidth: 1,\n },\n ],\n };\n\n const options = {\n scales: {\n x: {\n ticks: {\n // Include a dollar sign in the ticks\n callback: function (value: any, index: any, values: any) {\n return '$' + value;\n },\n font:{\n size: 15\n }\n },\n\n },\n y:{\n ticks:{\n font: {\n size: 15\n }\n }\n }\n },\n indexAxis: 'y' as \"y\",\n animation: false as false,\n // Elements options apply to all of the options unless overridden in a dataset\n // In this case, we are setting the border of each horizontal bar to be 2px wide\n elements: {\n bar: {\n borderWidth: 2,\n },\n },\n responsive: true,\n plugins: {\n legend: {\n display: false\n },\n\n title: {\n display: true,\n text: 'Median Household Income',\n font: {\n wieght: \"bold\",\n size: 30\n },\n padding: 5,\n },\n tooltip: {\n callbacks: {\n label: function (context: any) {\n var label = context.dataset.label || '';\n\n if (label) {\n label += ': ' + context.formattedValue;\n }\n if (context.formattedValue !== null) {\n label += \"$\" + context.formattedValue;\n }\n return label;\n }\n }\n }\n },\n };\n\n async function fetchChart(id: number) {\n try {\n await fetch(baseEndpoint + 'neighborhoods/income').then(async (response) => {\n if (response.ok) {\n var r = await response.json() as NeighborhoodPopular[];\n var labels = [] as string[];\n var barData = [] as any[];\n var backColor = [] as any[];\n var borderColor = [] as any[];\n r.forEach(q => {\n labels.push(q.name);\n barData.push(q.fact);\n if (q.neighborhoodId === Number(id)) {\n backColor.push(\"rgba(23, 215, 3, 0.2)\");\n borderColor.push(\"#17d703\");\n }\n else {\n backColor.push(\"rgba(4, 4, 252, 0.2)\");\n borderColor.push(\"#0404fc\");\n }\n });\n d.datasets[0].data = barData;\n d.datasets[0].backgroundColor = backColor;\n d.datasets[0].borderColor = borderColor;\n d.labels = labels;\n setData(d);\n }\n });\n }\n catch (ex) {\n\n }\n }\n return (\n
\n {data.datasets &&
\n \n
}\n
\n );\n}","import { useState } from 'react';\nimport { createStyles, makeStyles, Theme } from '@material-ui/core/styles';\nimport { Bar, Chart } from 'react-chartjs-2';\nimport { baseEndpoint } from '../App';\nimport { NeighborhoodPopular } from '../Models/Neighborhood';\nconst queryString = require('query-string');\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n flexGrow: 1,\n position: \"absolute\",\n backgroundColor: \"white\",\n zIndex: 999,\n height: \"90%\",\n width: \"100%\"\n },\n menuButton: {\n marginRight: theme.spacing(2),\n },\n title: {\n flexGrow: 1,\n },\n }),\n);\n\nexport default function IncomeChart(props: any) {\n const classes = useStyles();\n const [neighborhoodId, setNeighborhoodId] = useState();\n const [data, setData] = useState({} as any);\n Chart.defaults.maintainAspectRatio = false;\n var id = queryString.parse(props.location.search, { arrayFormat: 'index' }).id\n if (id && id !== neighborhoodId) {\n fetchChart(id);\n setNeighborhoodId(id);\n }\n const d = {\n labels: [] as any[],\n datasets: [\n {\n data: [] as any[],\n backgroundColor: [] as any[],\n borderColor: [] as any[],\n borderWidth: 1,\n },\n ],\n };\n\n const options = {\n\n indexAxis: \"y\" as \"y\",\n scales: {\n x: {\n ticks: {\n font: {\n size: 15\n }\n },\n\n },\n y: {\n ticks: {\n font: {\n size: 15\n }\n }\n }\n },\n animation: false as false,\n // Elements options apply to all of the options unless overridden in a dataset\n // In this case, we are setting the border of each horizontal bar to be 2px wide\n elements: {\n bar: {\n borderWidth: 2,\n },\n },\n responsive: true,\n plugins: {\n legend: {\n display: false\n },\n title: {\n display: true,\n text: 'Median Population Density',\n font: {\n wieght: \"bold\",\n size: 30\n },\n padding: 5,\n },\n },\n };\n\n async function fetchChart(id: number) {\n try {\n await fetch(baseEndpoint + 'neighborhoods/density').then(async (response) => {\n if (response.ok) {\n var r = await response.json() as NeighborhoodPopular[];\n var labels = [] as string[];\n var barData = [] as any[];\n var backColor = [] as any[];\n var borderColor = [] as any[];\n r.forEach(q => {\n labels.push(q.name);\n barData.push(q.fact);\n if (q.neighborhoodId === Number(id)) {\n backColor.push(\"rgba(23, 215, 3, 0.2)\");\n borderColor.push(\"#17d703\");\n }\n else {\n backColor.push(\"rgba(4, 4, 252, 0.2)\");\n borderColor.push(\"#0404fc\");\n }\n });\n d.datasets[0].data = barData;\n d.datasets[0].backgroundColor = backColor;\n d.datasets[0].borderColor = borderColor;\n d.labels = labels;\n setData(d);\n }\n });\n }\n catch (ex) {\n\n }\n }\n return (\n
\n {data.datasets &&
\n \n
}\n
\n );\n} ","import { useState } from 'react';\nimport { createStyles, makeStyles, Theme } from '@material-ui/core/styles';\nimport { Chart, Bubble } from 'react-chartjs-2';\nimport { baseEndpoint } from '../App';\nimport { LandlordCases} from '../Models/Neighborhood';\nconst queryString = require('query-string');\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n flexGrow: 1,\n position: \"absolute\",\n backgroundColor: \"white\",\n zIndex: 999,\n height: \"90%\",\n width: \"99%\"\n },\n menuButton: {\n marginRight: theme.spacing(2),\n },\n title: {\n flexGrow: 1,\n },\n }),\n);\n\nexport default function CourtCaseChart(props: any) {\n const classes = useStyles();\n const [landlordId, setLandlordId] = useState();\n const [data, setData] = useState({} as any);\n const [options, setOptions] = useState({} as any);\n Chart.defaults.maintainAspectRatio = false;\n \n var id = queryString.parse(props.location.search, { arrayFormat: 'index' }).id\n if (id && id !== landlordId) {\n fetchChart(id);\n }\n\n\n\n\n async function fetchChart(id: number) {\n try {\n await fetch(baseEndpoint + 'landlords/cases').then(async (response) => {\n if (response.ok) {\n var r = await response.json() as LandlordCases[];\n var d = { datasets: [] as any[] };\n var selectedX = Number(r.filter(p => p.landlordId === Number(id) && p.questionId === 71)[0].fact);\n var selectedY = Number(r.filter(p => p.landlordId === Number(id) && p.questionId === 70)[0].fact);\n var locations = Number(r.filter(p => p.landlordId === Number(id) && p.questionId === 67)[0].fact);\n\n if(locations < 10)\n {\n var size = 2 + locations / 10;\n }\n else if(locations < 50)\n {\n size = 6 + locations / 50 ;\n }\n else if(locations < 100){\n size = 15 + locations / 100\n }\n else if(locations < 250)\n {\n size = 30 + locations / 250;\n }\n else{\n size = 35 + locations / 1000;\n }\n var selectedSet = {\n label: r.filter(l => l.landlordId === Number(id) && l.questionId === 70)[0].name,\n data: [{ x: selectedX, y: selectedY, r: size }],\n borderColor: \"#FFFF00\",\n backgroundColor: \"#17d703\"\n }\n\n d.datasets.push(selectedSet);\n var set = {\n label: \"Other Landlords\",\n data: [] as any[],\n backgroundColor: \"#0404fc20\",\n borderColor: \"#0404fc\"\n }\n\n r.forEach(l => {\n if (l.landlordId !== Number(id)) {\n if (l.questionId === 71) {\n var x = Number(l.fact);\n var y = Number(r.filter(p => p.landlordId === l.landlordId && p.questionId === 70)[0].fact);\n var locations = Number(r.filter(p => p.landlordId === l.landlordId && p.questionId === 67)[0].fact);\n console.log(r.filter(p => p.landlordId === l.landlordId && p.questionId === 67)[0].fact)\n if(locations < 10)\n {\n var size = 2 + locations / 10;\n }\n else if(locations < 50)\n {\n size = 6 + locations / 50 ;\n }\n else if(locations < 100){\n size = 15 + locations / 100\n }\n else if(locations < 250)\n {\n size = 30 + locations / 250;\n }\n else{\n size = 35 + locations / 1000;\n }\n set.data.push({ x: x, y: y, r: size });\n\n\n }\n }\n\n });\n var o = {\n scales: {\n y: {\n min:0,\n suggestedMax: 140,\n title: {\n display: true,\n text: 'Number or cases named as defendant',\n font:{\n size: 18\n }\n },\n ticks: {\n stepSize: 5\n }\n },\n x: {\n min:0,\n suggestedMax: 115,\n title: {\n text: \"Number of cases named as plaintiff\",\n display: true,\n font:{\n size: 18\n }\n },\n ticks: {\n stepSize: 5\n }\n }\n },\n plugins: {\n title:{\n display: true,\n text: \"Lawsuits\",\n font:{\n wieght: \"bold\",\n size: 25\n },\n padding: 5,\n position: \"top\",\n align: \"start\"\n },\n subtitle:{\n position: \"bottom\",\n text: \"**Bubble size is an approximate representation of the number of properties the landlord owns.\",\n display: true,\n align: \"start\"\n },\n legend: {\n display: true,\n position: \"bottom\",\n align: \"start\",\n labels:{\n padding: 8,\n font:{\n size: 15\n }\n },\n }\n },\n animation: false\n\n };\n\n setOptions(o);\n d.datasets.push(set);\n\n setLandlordId(id);\n setData(d);\n }\n })\n }\n catch (ex) {\n\n }\n }\n\n return (\n
\n {data.datasets &&
\n \n
}\n
\n );\n}","import React from 'react';\nimport { createStyles, makeStyles, Theme } from '@material-ui/core/styles';\nimport { Paper, Typography } from '@material-ui/core';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n flexGrow: 1,\n margin: \"15px\",\n textAlign: \"left\"\n },\n menuButton: {\n marginRight: theme.spacing(2),\n },\n title: {\n flexGrow: 1,\n },\n }),\n);\n\nexport default function AboutPage() {\n const classes = useStyles();\n\n return (\n
\n
\n \n About Us\n
\n
\n What is Parslii?\n \n Parslii is a research and rating system for retail and restaurant commercial real estate properties.\n The Parslii system researches, analyzes, scores, and uncovers insights into properties with retail storefront spaces.\n Similar to buying a TV or major appliance, Parslii allows you to select several properties and compare all of their details side-by-side,\n in an effort to help you make a more informed decision about the space you choose for your business.\n
\n
\n Parslii does the research for you, compiling and analyzing over 60 different data points from dozens of sources,\n and then extracts insights from the data, so that the process of choosing a space is as transparent and objective as possible.\n
\n
\n How does Parslii work?\n \n Parslii takes all of the data harvested about a particular building, feeds it through our analysis system,\n and translates that into a score. This Parslii Score, on a scale from 0 - 100, will give a general view of how that building ranks against other\n buildings in terms of its viability as a location for launching and sustaining a successful business.\n
\n
\n If a Parslii Score for a building seems within an acceptable range, you can purchase the full Parslii Score Reports for that, and any other buildings\n you are interested in, and directly compare the findings for each, in every category of analysis. This Score Report comparison will give you a much clearer,\n thorough, and objective understanding of the positive and negative aspects pertaining to the buildings, in order for you to make a decision based on factual data rather\n than on gut feeling or hearsay.\n
\n
\n
\n
\n \n Buying Parslii Score Reports for several properties before my business makes its first dollar seems expensive. I know it takes money to make money,\n but I am trying to keep things as tight as possible. Is the expense of buying Score Reports worth it?\n \n \n We would have asked the same thing if Parslii was around when we were looking for commercial space!\n With investment money burning quickly, it never seemed like there was an extra few hundred dollars to spend.\n Besides, you think, “I can do the research myself!” But, after signing a lease, and a few months in, you realize\n that the clause about property taxes which you didn’t think much of (everybody has to pay taxes, right??), has come back to bite you.\n And the landlord is sending ginormous invoices. Then, after an eviction notice, tons of emotional stress, a year in court, and tens of\n thousands of dollars in attorney’s fees, you wish you would have better understood the situation you were getting yourself into back then,\n before you signed that faulty lease. Maybe you could have avoided this painful and costly trap. Suddenly the small initial expense of a\n Parslii Score Report, which would have alerted you to property tax red flags, seems like it would have been a wise investment.\n
\n
\n Our founder knows this regret very personally because he went through all of it himself.\n In 2015 he built and opened a restaurant in New York City, managing the entire process, from searching for commercial real estate,\n negotiating leases, and getting City permits, to dealing with contractors, landlord eviction notices, and lots of attorneys, by himself.\n He dealt with it all. And dealing with it meant he ended up learning the hard way, by researching issues himself, making educated guesses, and learning from mistakes.\n Of course some of those lessons ended up being very costly in both money and stress. One of the thoughts he kept coming back to was,\n “If only I would have known this sooner!!”\n He felt so strongly about this, and the need for tenants to be better informed and know what they are getting into before they take the plunge, that he wrote a book about his experience.\n
\n Burnt - A Trial By Fire Education In The Cruel World Of New York City Commercial Real Estate And Hospitality\n
\n \n The book is full of tips meant to help those with dreams of opening their own business, so that they can learn from his experience in commercial real estate,\n avoid the traps, pitfalls, and inevitable mistakes he made, and have a much easier and more successful go of it in general. The book also has a few chapters that are just plain crazy.\n Check it out!\n
\n
\n Of course the experiences detailed in the book of wading neck-deep into the murky waters of New York commercial real estate were also the inspiration\n for what would become Parslii. So his answer to the question of the upfront cost of Parslii Score Reports being money well spent is definitely “YES!”\n
\n
\n
\n
\n \"Book\n
\n
\n Could I just do the research by myself?\n \n All of the data that Parslii uses is publicly accessible so, sure, you could just do the research yourself.\n And maybe you are smart enough to know where to find it all and know how to make sense of it all. But many people don’t know where to find lots of important data.\n And many people don’t even know what they should be looking for. And many people, given the data, don’t know what insights they could be pulling from it.\n You probably aren’t one of those people. So go ahead.\n
\n
\n However, doing thorough research on a commercial property can take a significant amount of time.\n And many people, managing a growing business or working at trying to launch one, simply don’t have much time to spare.\n So Parslii can do the research work for you and save you lots of time. Maybe you are one of those people?\n
\n
\n What if a building I am interested in does not have a Parslii Score?\n \n You can request a score! We are adding buildings and property scores all the time so we can certainly look\n into a property you are interested in! Just fill out the form on the Parslii ‘Property Score Request Form’ page with the\n address of the property that you are interested in, and submit. The Parslii team will do the analysis on that building and\n let you know what score it received (it will also now show up on the map). You can then decide if you would like to purchase the full Score Report for that property.\n \n
\n Where does Parslii find its data?\n Parslii gathers its data for analysis from multiple publicly available sources.\n
\n What is a Parslii Certification?\n \n While Parslii Scores are derived only from available data, Parslii will give owners the opportunity to\n certify data points about a building that might not otherwise be publicly available. They will also be able to certify that they will offer various\n concessions and/or lease language in term negotiations. Certifications are an opportunity for owners to make the lease negotiation process quicker, less costly, and more efficient.\n The Parslii Score for a given building will improve with each Certification that the owner provides.\n \n
\n What is ESG and why does Parslii care about it?\n \n Businesses are rapidly growing in development of their Environmental, Social, and Governance (also known as ESG) practices.\n At the same time, investors and customers are increasingly focused on these issues as they choose where to spend their money.\n While people might think that many ESG factors seem as though they would not apply to real estate, in actuality ESG practices affect multiple\n areas of commercial real estate, from environmental concerns and building energy efficiency, to labor practices, equality in leasing, and social outreach to name a few. For example, in 2019 New York City enacted Local Law 97 which requires many buildings in the city to drastically reduce their carbon emissions starting in 2024. How building owners navigate these requirements will greatly affect the financial health of their buildings and their tenants through the length of their lease.\n
\n
\n In an effort to bring important ESG practices further into focus for the real estate industry,\n Parslii offers a platform for property owners to document their ESG milestones, initiatives,\n and projected plans. This parslii ESG verification program can be a vital tool for potential\n tenants, as well as investors, to make sure an owner’s ESG practices align with the values and\n outlook of not only their business but also the values of their customers.\n
\n
\n Parslii Property Reports will provide owners with an opportunity to tout their company’s ESG implementation track record and plans for compliance into the future.\n
\n
\n What is the Parslii methodology?\n \n The Parslii system and analysis methodology is proprietary. However, we work very hard to make sure all data\n is as accurate, objective, and thorough as possible. And we are constantly updating it.\n
\n
\n The Parslii analysis system never directly solicits or publishes tenant reviews or opinions\n about a property or owner in order to influence a building’s Parslii Score. All Parslii Scores are\n derived from publicly available data and measurable information. Also, every building goes through the\n exact same analysis system so there is no bias for or against any property. The facts and analysis dictate the Score.\n
\n
\n Can I use Parslii research in place of hiring a real estate attorney?\n \n No. Parslii research and Property Report insights ARE NOT legal advice. They are meant\n to augment and inform your legal approach to lease negotiations. Any decisions regarding leasing and lease\n negotiations should be made in conjunction with an experienced real estate attorney.\n \n
\n How often does Parslii update its scores and research?\n \n Parslii is continually verifying and updating the data that it uses for its analysis. Parslii is also\n continually adding to and refining its analysis algorithm. So Parslii Scores may adjust from time to time.\n \n
\n \n What if I see something on Parslii that I think is wrong? What if I have information about a building, a landlord,\n a location, etc. that few others may know and that I think might affect its Parslii Score or be important when considering that building for a lease?\n \n \n If you see something, say something! Please let us know! We want Parslii data to be as thorough and accurate as possible, \n so we want to see any mistakes corrected more than anyone. Submit a tip by using our ‘Contact’ form or by emailing us at info@parslii.com\n \n
\n Are Parslii Scores and Score Report analysis available anywhere beyond New York City?\n \n Parslii launched in New York City and has been concentrating on refinement of our system and database growth here. As soon as we can, though, we will make Parlii Scores available in other cities. \n Please feel free to contact us at info@parslii.com and let us know what city’s commercial real estate scene you are interested in us tackling next.\n \n
\n I am a commercial real estate broker. Can I use a good Parslii Score and the info on a full Score Report to help me lease a commercial retail space I am listing?\n \n A good Parslii Score can certainly help to get potential tenants interested in a space. We are creating a widget so that brokers can whitelabel a \n Parslii Score onto their listing for a space. Contact us at info@parslii.com to inquire about getting a white label Parslii Score for your listing.\n
\n
\n While the research and insight material published in a full Parslii Score Report is the property of Parslii and cannot be passed beyond the original purchaser, real estate brokers can subscribe to Parslii in order to share \n Parslii research information with potential tenants of a space that they list. Please contact us at info@parslii.com for more information.\n
\n
\n I am a property owner. My buildings seem to have low Parslii Scores. What can I do?\n \n All Parslii scores for all buildings are based on the same set of data metrics. So a low score cannot be changed unless the underlying data changes in some way. However, we are launching a system of post-score Certifications that \n property owners can add to their properties in order to increase a building’s Parslii Score. Please contact us at info@parslii.com for more information about Parslii Owner Certifications.\n \n
\n
\n\n
\n );\n}\n\n","import React, { useEffect } from 'react';\nimport { createStyles, makeStyles, Theme } from '@material-ui/core/styles';\nimport { Button, Paper, Snackbar, TextField, Typography } from '@material-ui/core';\nimport { connect } from 'react-redux';\nimport { baseEndpoint, isMobile } from '../App';\nimport { Alert } from '@material-ui/lab';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n flexGrow: 1,\n margin: \"15px\",\n textAlign: \"left\"\n },\n menuButton: {\n marginRight: theme.spacing(2),\n },\n title: {\n flexGrow: 1,\n },\n input: {\n backgroundColor: \"white\",\n '& label.Mui-focused': {\n color: '#0404fc',\n borderWidth: \"3px\"\n },\n '& .MuiInput-underline:after': {\n borderBottomColor: '#0404fc',\n borderWidth: \"3px\"\n },\n '& .MuiInputLabel-outlined': {\n backgroundColor: \"white\",\n paddingRight: \"10px\",\n transform: \"translate(14px, 13px) scale(1)\"\n },\n '& .MuiInputLabel-outlined.MuiInputLabel-shrink': {\n transform: \"translate(14px, -6px) scale(0.75)\"\n },\n '& .MuiOutlinedInput-input': {\n paddingTop: \"12px\",\n paddingBottom: \"12px\"\n },\n '& .MuiOutlinedInput-root': {\n '& fieldset': {\n borderColor: '#0404fc',\n borderWidth: \"3px\"\n },\n '&:hover fieldset': {\n borderColor: '#0404fc',\n borderWidth: \"3px\"\n },\n '&.Mui-focused fieldset': {\n borderColor: '#0404fc',\n borderWidth: \"3px\"\n },\n },\n },\n inputError: {\n backgroundColor: \"white\",\n '& label.Mui-focused': {\n borderWidth: \"3px\"\n },\n '& .MuiInput-underline:after': {\n borderWidth: \"3px\"\n },\n '& .MuiInputLabel-outlined': {\n backgroundColor: \"white\",\n paddingRight: \"10px\",\n transform: \"translate(14px, 13px) scale(1)\"\n },\n '& .MuiInputLabel-outlined.MuiInputLabel-shrink': {\n transform: \"translate(14px, -6px) scale(0.75)\"\n },\n '& .MuiOutlinedInput-input': {\n paddingTop: isMobile === false ? \"12px\" : \"10px\",\n paddingBottom: isMobile === false ? \"12px\" : \"10px\"\n },\n '& .MuiOutlinedInput-root': {\n '& fieldset': {\n borderWidth: \"3px\"\n },\n '&:hover fieldset': {\n borderWidth: \"3px\"\n },\n '&.Mui-focused fieldset': {\n borderWidth: \"3px\"\n },\n },\n }\n }),\n);\n\nfunction ContactUsPage(props: any) {\n const classes = useStyles();\n const [firstName, setFirstName] = React.useState(\"\");\n const [firstNameError, setFirstNameError] = React.useState(false);\n const [lastName, setLastName] = React.useState(\"\");\n const [lastNameError, setLastNameError] = React.useState(false);\n const [emailHeader, setEmailHeader] = React.useState(\"\");\n const [headerError, setHeaderError] = React.useState(false);\n const [emailBody, setEmailBody] = React.useState(\"\");\n const [bodyError, setBodyError] = React.useState(false);\n const [email, setEmail] = React.useState(\"\");\n const [emailError, setEmailError] = React.useState(\"\");\n const [requestAlertOpen, setRequestAlertOpen] = React.useState(false);\n const [alertMessage, setAlertMessage] = React.useState(\"\");\n\n useEffect(() => {\n if (props.userState.isAuth) {\n setEmail(props.userState.user.emailAddress);\n setFirstName(props.userState.user.firstName);\n setLastName(props.userState.user.lastName)\n }\n else {\n setEmail(\"\");\n setFirstName(\"\");\n setLastName(\"\");\n }\n }, [props])\n\n const handleChangeFirstName = (event: React.ChangeEvent) => {\n setFirstName(event.target.value);\n }\n\n const handleChangeLastName = (event: React.ChangeEvent) => {\n setLastName(event.target.value);\n }\n\n const handleChangeEmailHeader = (event: React.ChangeEvent) => {\n setEmailHeader(event.target.value);\n }\n\n const handleChangeEmailBody = (event: React.ChangeEvent) => {\n setEmailBody(event.target.value);\n }\n\n const handleChangeEmail = (event: React.ChangeEvent) => {\n setEmail(event.target.value);\n }\n\n const send = async () => {\n var emailRegEx = new RegExp(/^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/); // eslint-disable-line\n var emailMatch = emailRegEx.test(email);\n if (firstName.trim() === \"\") {\n setFirstNameError(true);\n }\n else if (firstNameError === true) {\n setFirstNameError(false);\n }\n if (lastName.trim() === \"\") {\n setLastNameError(true);\n }\n else if (lastNameError === true) {\n setLastNameError(false);\n }\n if (email.trim() === \"\") {\n setEmailError(\"**Email required\");\n }\n else if (emailMatch === false) {\n setEmailError(\"**Invalid email\")\n }\n else if (emailError !== \"\") {\n setEmailError(\"\");\n }\n if (emailHeader.trim() === \"\") {\n setHeaderError(true);\n }\n else if (headerError === true) {\n setHeaderError(false);\n }\n if (emailBody.trim() === \"\") {\n setBodyError(true);\n }\n else if (bodyError === true) {\n setBodyError(false);\n }\n if (firstName.trim() !== \"\" && lastName.trim() !== \"\" && email.trim() !== \"\" && emailMatch === true && emailHeader.trim() !== \"\" && emailBody.trim() !== \"\") {\n var requestOptions = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Response-Type': 'application/json',\n },\n body: JSON.stringify({ name: firstName + \" \" + lastName, email: email, emailHeader: emailHeader, emailBody: emailBody })\n }\n try {\n await fetch(baseEndpoint + \"users/contactUs\", requestOptions)\n .then(async response => {\n if (response.ok) {\n setAlertMessage(\"Thank you for your message! We will get back to you soon!\");\n setRequestAlertOpen(true);\n }\n else {\n setAlertMessage(\"There was an error with your message! Please try again later!\");\n setRequestAlertOpen(true);\n }\n });\n }\n catch (error) {\n console.log(error);\n }\n }\n }\n const handleCloseRequestAlert = () => {\n setRequestAlertOpen(false);\n }\n\n return (\n
\n
\n \n Contact\n Have a question, a comment, a tip, a request, a cool partnership idea, a press inquiry, an invitation to a fabulous party, or just want to say hello? We would love to hear from you!\n Fill out the form below or email us at  \n info@parslii.com\n \n
\n And we will make sure it gets to the right place!\n Thanks!\n\n \n Send Us a Message\n
\n
\n \n
\n
\n \n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n \n \n {alertMessage}\n \n \n
\n );\n}\nconst mapStateToProps = (state: any) => ({\n userState: state.userState\n});\nexport default connect(mapStateToProps)(ContactUsPage);\n","import React from 'react';\nimport { Dialog, DialogContent, DialogTitle, IconButton, Typography } from '@material-ui/core';\nimport CloseIcon from '@material-ui/icons/Close';\n\n\ninterface TermsDialogProps {\n open: boolean,\n onClose: () => void\n}\n\nexport default function TermsDialog(props: TermsDialogProps) {\n\n return (\n
\n Website Terms of Use\n \n
\n\n \n Last Modified: January 14, 2022\n Acceptance of the Terms of Use\n \n These terms of use are entered into by and between You and Parslii LLC (\"Company,\" \"we,\" or \"us\"). The following terms and conditions (\"Terms of Use\") govern your access to and use of www.parslii.com, including any content,\n functionality and services offered on or through www.parslii.com (the \"Website\"), whether as a guest or a registered user.\n
\n
\n Please read the Terms of Use carefully before you start to use the Website. By using the Website or by clicking to accept or agree to the Terms of Use when this option is made available to you,\n you accept and agree to be bound and abide by these Terms of Use. If you do not want to agree to these Terms of Use, you must not access or use the Website.\n\n
\n
\n Changes to the Terms of Use\n \n We may revise and update these Terms of Use from time to time in our sole discretion. All changes are effective immediately when we post them, and apply to all access to and use of the Website thereafter.\n However, any changes to the dispute resolution provisions set forth in Governing Law and Jurisdiction will not apply to any disputes for which the parties have actual notice prior to the date the change is\n posted on the Website.\n
\n
\n Your continued use of the Website following the posting of revised Terms of Use means that you accept and agree to the changes. You are expected to check this page each time you access this Website so you\n are aware of any changes, as they are binding on you.\n\n
\n
\n Accessing the Website and Account Security\n \n We reserve the right to withdraw or amend this Website, and any service or material we provide on the Website, in our sole discretion without notice. We will not be liable if, for any reason,\n all or any part of the Website is unavailable at any time or for any period. From time to time, we may restrict access to some parts of the Website or the entire Website to users, including registered users.\n
\n
\n You are responsible for both:\n
\n
    \n
  • Making all arrangements necessary for you to have access to the Website.
  • \n
  • Ensuring that all persons who access the Website through your internet connection are aware of these Terms of Use and comply with them.
  • \n
\n \n To access the Website or some of the resources it offers, you may be asked to provide certain registration details or other information. It is a condition of your use of the Website\n that all the information you provide on the Website is correct, current and complete.\n
\n
\n If you choose, or are provided with, a user name, password or any other piece of information as part of our security procedures, you must treat such information as confidential,\n and you must not disclose it to any other person or entity. You also acknowledge that your account is personal to you and agree not to provide any other person with access to this Website or portions\n of it using your user name, password or other security information. You agree to notify us immediately of any unauthorized access to or use of your user name or password or any other breach of security.\n You also agree to ensure that you exit from your account at the end of each session. You should use particular caution when accessing your account from a public or shared computer so that others are not able\n to view or record your password or other personal information.\n
\n
\n We have the right to disable any user name, password or other identifier, whether chosen by you or provided by us, at any time in our sole discretion for any or no reason, including if, in our opinion,\n you have violated any provision of these Terms of Use.\n
\n
\n Intellectual Property Rights\n \n The Website and its entire contents, features and functionality (including but not limited to all information, software, text, displays, images, video and audio, and the design,\n selection and arrangement thereof), are owned by the Company, its licensors or other providers of such material and are protected by United States and international copyright, trademark, patent, trade\n secret and other intellectual property or proprietary rights laws.\n
\n
\n These Terms of Use permit you to use the Website for your personal, non-commercial use only. You must not reproduce, distribute, modify, create derivative works of, publicly display, publicly perform,\n republish, download, store or transmit any of the material on our Website, except as follows:\n
\n
    \n
  • Your computer may temporarily store copies of such materials in RAM incidental to your accessing and viewing those materials.
  • \n
  • You may store files that are automatically cached by your Web browser for display enhancement purposes.
  • \n
  • You may print or download one copy of a reasonable number of pages of the Website for your own personal, non-commercial use and not for further\n reproduction, publication or distribution.\n
  • \n
  • If we provide desktop, mobile or other applications for download, you may download a single copy to your computer or mobile device solely for your own personal,\n non-commercial use, provided you agree to be bound by our end user license agreement for such applications.\n
  • \n
\n You must not:\n
    \n
  • Modify copies of any materials from this site.
  • \n
  • Use any illustrations, photographs, video or audio sequences or any graphics separately from the accompanying text.
  • \n
  • Delete or alter any copyright, trademark or other proprietary rights notices from copies of materials from this site.
  • \n
\n \n You must not access or use for any commercial purposes any part of the Website or any services or materials available through the Website.\n
\n
\n If you wish to make any use of material on the Website other than that set out in this section, please address your request to: info@parslii.com.\n
\n
\n If you print, copy, modify, download or otherwise use or provide any other person with access to any part of the Website in breach of the Terms of Use, your right to use the Website will cease\n immediately and you must, at our option, return or destroy any copies of the materials you have made. No right, title or interest in or to the Website or any content on the Website is transferred to you,\n and all rights not expressly granted are reserved by the Company. Any use of the Website not expressly permitted by these Terms of Use is a breach of these Terms of Use and may violate copyright, trademark\n and other laws.\n
\n
\n Trademarks\n \n The Company name, the terms, and all related names, logos, product and service names, designs and slogans are trademarks of the Company or its affiliates or licensors.\n You must not use such marks without the prior written permission of the Company. All other names, logos, product and service names, designs and slogans on this Website are the trademarks of\n their respective owners.\n \n
\n Prohibited Uses\n \n You may use the Website only for lawful purposes and in accordance with these Terms of Use. You agree not to use the Website:\n \n
    \n
  • In any way that violates any applicable federal, state, local or international law or regulation (including, without limitation, any laws regarding the export of data or software to and from the\n US or other countries).\n
  • \n
  • For the purpose of exploiting, harming or attempting to exploit or harm minors in any way by exposing them to inappropriate content, asking for personally identifiable information or otherwise.
  • \n
  • To send, knowingly receive, upload, download, use or re-use any material which does not comply with the Content Standards set out in these Terms of Use.
  • \n
  • To transmit, or procure the sending of, any advertising or promotional material, including any \"junk mail,\" \"chain letter,\" \"spam,\" or any other similar solicitation.
  • \n
  • To impersonate or attempt to impersonate the Company, a Company employee, another user or any other person or entity (including, without limitation, by using e-mail addresses associated with any of the\n foregoing).
  • \n
  • To engage in any other conduct that restricts or inhibits anyone's use or enjoyment of the Website, or which, as determined by us, may harm the Company or users of the Website, or expose them to liability.
  • \n
\n \n Additionally, you agree not to:\n \n
    \n
  • Use the Website in any manner that could disable, overburden, damage, or impair the site or interfere with any other party's use of the Website, including their ability to engage in real time activities\n through the Website.\n
  • \n
  • Use any robot, spider or other automatic device, process or means to access the Website for any purpose, including monitoring or copying any of the material on the Website.
  • \n
  • Use any manual process to monitor or copy any of the material on the Website, or for any other purpose not expressly authorized in these Terms of Use, without our prior written consent.
  • \n
  • Use any device, software or routine that interferes with the proper working of the Website.
  • \n
  • Introduce any viruses, trojan horses, worms, logic bombs or other material which is malicious or technologically harmful.
  • \n
  • Attempt to gain unauthorized access to, interfere with, damage or disrupt any parts of the Website, the server on which the Website is stored, or any server, computer or database connected to the Website.
  • \n
  • Attack the Website via a denial-of-service attack or a distributed denial-of-service attack.
  • \n
  • Otherwise attempt to interfere with the proper working of the Website.
  • \n
\n User Contributions\n \n The Website may contain message boards, chat rooms, personal web pages or profiles, forums, bulletin boards, and other interactive features (collectively, \"Interactive Services\") that allow users to post,\n submit, publish, display or transmit to other users or other persons (hereinafter, \"post\") content or materials (collectively, \"User Contributions\") on or through the Website.\n
\n
\n All User Contributions must comply with the Content Standards set out in these Terms of Use.\n
\n
\n Any User Contribution you post to the site will be considered non-confidential and non-proprietary. By providing any User Contribution on the Website, you grant us and our affiliates and service providers,\n and each of their and our respective licensees, successors and assigns the right to use, reproduce, modify, perform, display, distribute and otherwise disclose to third parties any such material for any\n purpose.\n
\n
\n You represent and warrant that:\n
\n
    \n
  • You own or control all rights in and to the User Contributions and have the right to grant the license granted above to us and our affiliates and service providers, and each of their and our\n respective licensees, successors and assigns.\n
  • \n
  • All of your User Contributions do and will comply with these Terms of Use.\n
  • \n
\n \n You understand and acknowledge that you are responsible for any User Contributions you submit or contribute, and you, not the Company, have fully responsibility for such content, including its legality,\n reliability, accuracy and appropriateness.\n
\n
\n We are not responsible, or liable to any third party, for the content or accuracy of any User Contributions posted by you or any other user of the Website.\n
\n
\n Monitoring and Enforcement; Termination\n \n We have the right to:\n \n
    \n
  • Remove or refuse to post any User Contributions for any or no reason in our sole discretion.
  • \n
  • Take any action with respect to any User Contribution that we deem necessary or appropriate in our sole discretion, including if we believe that such User Contribution violates the Terms of Use,\n including the Content Standards, infringes any intellectual property right or other right of any person or entity, threatens the personal safety of users of the Website or the public or could create\n liability for the Company.
  • \n
  • \n Disclose your identity or other information about you to any third party who claims that material posted by you violates their rights, including their intellectual property rights or their right to privacy.\n
  • \n
  • \n Take appropriate legal action, including without limitation, referral to law enforcement, for any illegal or unauthorized use of the Website.\n
  • \n
  • \n Terminate or suspend your access to all or part of the Website for any or no reason, including without limitation, any violation of these Terms of Use.\n
  • \n
\n \n Without limiting the foregoing, we have the right to fully cooperate with any law enforcement authorities or court order requesting or directing us to disclose the identity or other information of anyone\n posting any materials on or through the Website. YOU WAIVE AND HOLD HARMLESS THE COMPANY AND ITS AFFILIATES, LICENSEES AND SERVICE PROVIDERS FROM ANY CLAIMS RESULTING FROM ANY ACTION TAKEN BY ANY OF THE\n FOREGOING PARTIES DURING OR AS A RESULT OF ITS INVESTIGATIONS AND FROM ANY ACTIONS TAKEN AS A CONSEQUENCE OF INVESTIGATIONS BY EITHER SUCH PARTIES OR LAW ENFORCEMENT AUTHORITIES.\n
\n
\n However, we do not undertake to review material before it is posted on the Website, and cannot ensure prompt removal of objectionable material after it has been posted. Accordingly, we assume no\n liability for any action or inaction regarding transmissions, communications or content provided by any user or third party. We have no liability or responsibility to anyone for performance or\n nonperformance of the activities described in this section.\n
\n
\n Content Standards\n \n These content standards apply to any and all User Contributions and use of Interactive Services. User Contributions must in their entirety comply with all applicable federal, state,\n local and international laws and regulations. Without limiting the foregoing, User Contributions must not:\n \n
    \n
  • \n Contain any material which is defamatory, obscene, indecent, abusive, offensive, harassing, violent, hateful, inflammatory or otherwise objectionable.\n
  • \n
  • \n Promote sexually explicit or pornographic material, violence, or discrimination based on race, sex, religion, nationality, disability, sexual orientation or age.\n
  • \n
  • \n Infringe any patent, trademark, trade secret, copyright or other intellectual property or other rights of any other person.\n
  • \n
  • \n Violate the legal rights (including the rights of publicity and privacy) of others or contain any material that could give rise to any civil or criminal liability under applicable laws or regulations or\n that otherwise may be in conflict with these Terms of Use.\n
  • \n
  • \n Be likely to deceive any person.\n
  • \n
  • \n Promote any illegal activity, or advocate, promote or assist any unlawful act.\n
  • \n
  • \n Cause annoyance, inconvenience or needless anxiety or be likely to upset, embarrass, alarm or annoy any other person.\n
  • \n
  • \n Impersonate any person, or misrepresent your identity or affiliation with any person or organization.\n
  • \n
  • \n Involve commercial activities or sales, such as contests, sweepstakes and other sales promotions, barter or advertising.\n
  • \n
  • \n Give the impression that they emanate from or are endorsed by us or any other person or entity, if this is not the case.\n
  • \n
\n Copyright Infringement\n \n If you believe that any User Contributions violate your copyright, please send an email to: [info@parslii.com]. It is the policy of the Company to terminate the user accounts of repeat infringers.\n \n
\n Reliance on Information Posted\n \n The information presented on or through the Website is made available solely for general information purposes. We do not warrant the accuracy, completeness or usefulness of this information.\n Any reliance you place on such information is strictly at your own risk. We disclaim all liability and responsibility arising from any reliance placed on such materials by you or any other visitor to the\n Website, or by anyone who may be informed of any of its contents.\n
\n
\n This Website includes content provided by third parties, including materials provided by other users, bloggers and third-party licensors, syndicators, aggregators and/or reporting services.\n All statements and/or opinions expressed in these materials, and all articles and responses to questions and other content, other than the content provided by the Company, are solely the opinions and the\n responsibility of the person or entity providing those materials. These materials do not necessarily reflect the opinion of the Company. We are not responsible, or liable to you or any third party, for the\n content or accuracy of any materials provided by any third parties.\n
\n
\n Changes to the Website\n \n We may update the content on this Website from time to time, but its content is not necessarily complete or up-to-date. Any of the material on the Website may be out of date at any given time,\n and we are under no obligation to update such material.\n \n
\n Linking to the Website and Social Media Features\n \n You may link to our homepage, provided you do so in a way that is fair and legal and does not damage our reputation or take advantage of it, but you must not establish a link in such a way as to suggest\n any form of association, approval or endorsement on our part\n
\n
\n This Website may provide certain social media features that enable you to:\n
\n
    \n
  • \n Link from your own or certain third-party websites to certain content on this Website.\n
  • \n
  • \n Send e-mails or other communications with certain content, or links to certain content, on this Website.\n
  • \n
  • \n Cause limited portions of content on this Website to be displayed or appear to be displayed on your own or certain third-party websites.\n
  • \n
\n \n You may use these features solely as they are provided by us and solely with respect to the content they are displayed with. Subject to the foregoing, you must not:\n \n
    \n
  • \n Establish a link from any website that is not owned by you.\n
  • \n
  • \n Cause the Website or portions of it to be displayed, or appear to be displayed by, for example, framing, deep linking or in-line linking, on any other site.\n
  • \n
  • \n Link to any part of the Website other than the homepage.\n
  • \n
  • \n Otherwise take any action with respect to the materials on this Website that is inconsistent with any other provision of these Terms of Use.\n
  • \n
\n \n The website from which you are linking, or on which you make certain content accessible, must comply in all respects with the Content Standards set out in these Terms of Use.\n
\n
\n You agree to cooperate with us in causing any unauthorized framing or linking immediately to cease. We reserve the right to withdraw linking permission without notice.\n
\n
\n We may disable all or any social media features and any links at any time without notice in our discretion.\n
\n
\n Links from the Website\n \n If the Website contains links to other sites and resources provided by third parties, these links are provided for your convenience only. This includes links contained in advertisements,\n including banner advertisements and sponsored links. We have no control over the contents of those sites or resources, and accept no responsibility for them or for any loss or damage that may arise\n from your use of them. If you decide to access any of the third party websites linked to this Website, you do so entirely at your own risk and subject to the terms and conditions of use for such websites.\n \n
\n Errors, Omissions, and Interruptions\n \n Although some of the content, information or data made available to you on the Website is obtained from sources Parslii believes to be reliable, Parslii cannot and does not guarantee the accuracy,\n validity, timeliness or completeness of any such content, information or data made available to you on the Website or on any report, research, or content downloaded from the Website for any particular\n purpose.\n
\n
\n Parslii will not be liable or have any responsibility of any kind for any loss or damage that you incur in the event of any failure or interruption of the Website or resulting from the act or\n omission of any other party involved in making the Website or the Content available to you, or from any other cause relating to your access to, or inability to access, or use of, or inability to use\n any of the Website or the Content, whether or not the circumstances giving rise to such cause may have been within the control of Parslii or of any of their Subcontractors or Suppliers.\n
\n
\n Not Legal Advice\n \n All property research and analysis information contained within this Website or downloaded reports or content is subject to the possibility of errors, omissions, change of ownership, change of\n tax status or other conditions without notice. Any data, statistics, estimates, projections, or assumptions are intended solely for use by the user to aid in property research and analysis and in\n no way are meant to be understood as opinions, legal advice, investment advice, or advice by Parslii of any kind. It is the sole responsibility of You the user to consult with legal, regulatory,\n and financial advisors when making decisions about property, leasing and lease negotiations.\n \n
\n Impartiality\n \n The Parslii analysis system is a proprietary impartial ‘equally applied’ system. All Parslii research and Parslii Scores are derived from publicly available data and measurable information.\n Every property goes through the exact same analysis system so that there is no analysis manipulation or bias for or against any property. The analysis system produces Parslii research and Parslii Scores\n without regard to any one person’s opinion or hearsay.\n \n
\n Geographic Restrictions\n \n The owner of the Website is based in the State Of New York in the United States. We provide this Website for use only by persons located in the United States. We make no claims that the Website\n or any of its content is accessible or appropriate outside of the United States. Access to the Website may not be legal by certain persons or in certain countries. If you access the Website from outside\n the United States, you do so on your own initiative and are responsible for compliance with local laws.\n \n
\n Disclaimer of Warranties\n \n You understand that we cannot and do not guarantee or warrant that files available for downloading from the internet or the Website will be free of viruses or other destructive code.\n You are responsible for implementing sufficient procedures and checkpoints to satisfy your particular requirements for anti-virus protection and accuracy of data input and output, and for maintaining\n a means external to our site for any reconstruction of any lost data. WE WILL NOT BE LIABLE FOR ANY LOSS OR DAMAGE CAUSED BY A DISTRIBUTED DENIAL-OF-SERVICE ATTACK, VIRUSES OR OTHER TECHNOLOGICALLY HARMFUL\n MATERIAL THAT MAY INFECT YOUR COMPUTER EQUIPMENT, COMPUTER PROGRAMS, DATA OR OTHER PROPRIETARY MATERIAL DUE TO YOUR USE OF THE WEBSITE OR ANY SERVICES OR ITEMS OBTAINED THROUGH THE WEBSITE OR TO YOUR\n DOWNLOADING OF ANY MATERIAL POSTED ON IT, OR ON ANY WEBSITE LINKED TO IT.\n
\n
\n YOUR USE OF THE WEBSITE, ITS CONTENT AND ANY SERVICES OR ITEMS OBTAINED THROUGH THE WEBSITE IS AT YOUR OWN RISK. THE WEBSITE, ITS CONTENT AND ANY SERVICES OR ITEMS OBTAINED THROUGH THE\n WEBSITE ARE PROVIDED ON AN \"AS IS\" AND \"AS AVAILABLE\" BASIS, WITHOUT ANY WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED. NEITHER THE COMPANY NOR ANY PERSON ASSOCIATED WITH THE COMPANY MAKES\n ANY WARRANTY OR REPRESENTATION WITH RESPECT TO THE COMPLETENESS, SECURITY, RELIABILITY, QUALITY, ACCURACY OR AVAILABILITY OF THE WEBSITE. WITHOUT LIMITING THE FOREGOING, NEITHER THE COMPANY NOR ANYONE\n ASSOCIATED WITH THE COMPANY REPRESENTS OR WARRANTS THAT THE WEBSITE, ITS CONTENT OR ANY SERVICES OR ITEMS OBTAINED THROUGH THE WEBSITE WILL BE ACCURATE, RELIABLE, ERROR-FREE OR UNINTERRUPTED, THAT\n DEFECTS WILL BE CORRECTED, THAT OUR SITE OR THE SERVER THAT MAKES IT AVAILABLE ARE FREE OF VIRUSES OR OTHER HARMFUL COMPONENTS OR THAT THE WEBSITE OR ANY SERVICES OR ITEMS OBTAINED THROUGH THE WEBSITE\n WILL OTHERWISE MEET YOUR NEEDS OR EXPECTATIONS.\n
\n
\n THE COMPANY HEREBY DISCLAIMS ALL WARRANTIES OF ANY KIND, WHETHER EXPRESS OR IMPLIED, STATUTORY OR OTHERWISE, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, NON-INFRINGEMENT AND\n FITNESS FOR PARTICULAR PURPOSE.\n
\n
\n THE FOREGOING DOES NOT AFFECT ANY WARRANTIES WHICH CANNOT BE EXCLUDED OR LIMITED UNDER APPLICABLE LAW.\n
\n
\n Limitation on Liability\n \n TO THE FULLEST EXTENT PROVIDED BY LAW, IN NO EVENT WILL THE COMPANY, ITS AFFILIATES OR THEIR LICENSORS, SERVICE PROVIDERS, EMPLOYEES, AGENTS, OFFICERS OR DIRECTORS BE LIABLE FOR DAMAGES OF ANY KIND,\n UNDER ANY LEGAL THEORY, ARISING OUT OF OR IN CONNECTION WITH YOUR USE, OR INABILITY TO USE, THE WEBSITE, ANY WEBSITES LINKED TO IT, ANY CONTENT ON THE WEBSITE OR SUCH OTHER WEBSITES OR ANY SERVICES\n OR ITEMS OBTAINED THROUGH THE WEBSITE OR SUCH OTHER WEBSITES, INCLUDING ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, CONSEQUENTIAL OR PUNITIVE DAMAGES, INCLUDING BUT NOT LIMITED TO, PERSONAL INJURY,\n PAIN AND SUFFERING, EMOTIONAL DISTRESS, LOSS OF REVENUE, LOSS OF PROFITS, LOSS OF BUSINESS OR ANTICIPATED SAVINGS, LOSS OF USE, LOSS OF GOODWILL, LOSS OF DATA, AND WHETHER CAUSED BY TORT\n (INCLUDING NEGLIGENCE), BREACH OF CONTRACT OR OTHERWISE, EVEN IF FORESEEABLE. Should Company be found liable for any damages, your exclusive remedy, and Company’s entire liability under these Terms and\n Conditions shall be a refund of the fees paid to Company hereunder, and in no event will Company’s liability for any reason exceed such fee.\n
\n
\n THE FOREGOING DOES NOT AFFECT ANY LIABILITY WHICH CANNOT BE EXCLUDED OR LIMITED UNDER APPLICABLE LAW.\n
\n
\n Indemnification\n \n You agree to defend, indemnify and hold harmless the Company, its affiliates, licensors and service providers, and its and their respective officers, directors, employees, contractors,\n agents, licensors, suppliers, successors and assigns from and against any claims, liabilities, damages, judgments, awards, losses, costs, expenses or fees (including reasonable attorneys' fees)\n arising out of or relating to your violation of these Terms of Use or your use of the Website, including, but not limited to, your User Contributions, any use of the Website's content, services and\n products other than as expressly authorized in these Terms of Use, or your use of any information obtained from the Website.\n \n
\n Governing Law and Jurisdiction\n \n All matters relating to the Website and these Terms of Use, and any dispute or claim arising therefrom or related thereto (in each case, including non-contractual disputes or claims),\n shall be governed by and construed in accordance with the internal laws of the State of New York without giving effect to any choice or conflict of law provision or rule (whether of the State of\n New York or any other jurisdiction).\n
\n
\n Any legal suit, action or proceeding arising out of, or related to, these Terms of Use or the Website shall be instituted exclusively in the federal courts of the United States or the courts\n of the State of New York, in each case located in the City of New York and County of New York, although we retain the right to bring any suit, action or proceeding against you for breach of these\n Terms of Use in your country of residence or any other relevant country. You waive any and all objections to the exercise of jurisdiction over you by such courts and to venue in such courts.\n
\n
\n Arbitration\n \n At Company's sole discretion, it may require You to submit any disputes arising from these Terms of Use or use of the Website, including disputes arising from or concerning their interpretation,\n violation, invalidity, non-performance, or termination, to final and binding arbitration under the Rules of Arbitration of the American Arbitration Association applying New York law.\n \n
\n No Class Action\n \n NEITHER YOU NOR WE WILL PARTICIPATE IN A CLASS ACTION OR CLASS-WIDE ARBITRATION FOR ANY CLAIMS COVERED BY THESE TERMS OF SERVICE. YOU ARE GIVING UP YOUR RIGHT TO PARTICIPATE AS A CLASS\n REPRESENTATIVE OR CLASS MEMBER ON ANY CLASS CLAIM YOU MAY HAVE AGAINST US INCLUDING ANY RIGHT TO CLASS ARBITRATION OR ANY CONSOLIDATION OF INDIVIDUAL ARBITRATIONS. You also agree not to participate\n in claims brought in a private attorney general or representative capacity, or consolidated claims involving another person’s account, if we are a party to the proceeding.\n \n
\n Severability\n \n If the prohibition against class actions and other claims brought on behalf of third parties contained above is found to be unenforceable, then all of the preceding language in this Arbitration\n section will be null and void. This arbitration agreement will survive the termination of your relationship with us.\n \n
\n Limitation on Time to File Claims\n \n ANY CAUSE OF ACTION OR CLAIM YOU MAY HAVE ARISING OUT OF OR RELATING TO THESE TERMS OF USE OR THE WEBSITE MUST BE COMMENCED WITHIN ONE (1) YEAR AFTER THE CAUSE OF ACTION ACCRUES; OTHERWISE,\n SUCH CAUSE OF ACTION OR CLAIM IS PERMANENTLY BARRED.\n \n
\n Waiver and Severability\n \n No waiver of by the Company of any term or condition set forth in these Terms of Use shall be deemed a further or continuing waiver of such term or condition or a waiver of any other term or condition,\n and any failure of the Company to assert a right or provision under these Terms of Use shall not constitute a waiver of such right or provision.\n
\n
\n If any provision of these Terms of Use is held by a court or other tribunal of competent jurisdiction to be invalid, illegal or unenforceable for any reason, such provision shall be eliminated or\n limited to the minimum extent such that the remaining provisions of the Terms of Use will continue in full force and effect.\n
\n
\n Entire Agreement\n \n The Terms of Use constitutes the sole and entire agreement between you and Parslii LLC with respect to the Website and supersedes all prior and contemporaneous understandings, agreements,\n representations and warranties, both written and oral, with respect to the Website\n \n
\n
\n
\n \n );\n}\n\n","\nimport { Checkbox, createStyles, Dialog, DialogContent, DialogTitle, Link, makeStyles, TextField, Theme, Typography } from '@material-ui/core';\nimport {\n CreditCardInput, SquarePaymentsForm\n} from 'react-square-web-payments-sdk';\nimport { connect } from 'react-redux';\nimport { baseEndpoint } from '../App';\nimport React, { useEffect, useState } from 'react';\nimport TermsDialog from '../InfoPages/TermsDialog';\nimport { Alert } from '@material-ui/lab';\nimport { BETA_PRICE } from './Cart';\nconst config = require(\"../env.json\")\n\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n input: {\n backgroundColor: \"white\",\n '& label.Mui-focused': {\n color: '#0404fc',\n borderWidth: \"3px\"\n },\n '& .MuiInput-underline:after': {\n borderBottomColor: '#0404fc',\n borderWidth: \"3px\"\n },\n '& .MuiInputLabel-outlined': {\n backgroundColor: \"white\",\n paddingRight: \"10px\",\n transform: \"translate(14px, 13px) scale(1)\"\n },\n '& .MuiInputLabel-outlined.MuiInputLabel-shrink': {\n transform: \"translate(14px, -6px) scale(0.75)\"\n },\n '& .MuiOutlinedInput-input': {\n paddingTop: \"12px\",\n paddingBottom: \"12px\"\n },\n '& .MuiOutlinedInput-root': {\n '& fieldset': {\n borderColor: '#0404fc',\n borderWidth: \"3px\"\n },\n '&:hover fieldset': {\n borderColor: '#0404fc',\n borderWidth: \"3px\"\n },\n '&.Mui-focused fieldset': {\n borderColor: '#0404fc',\n borderWidth: \"3px\"\n },\n },\n },\n inputError: {\n backgroundColor: \"white\",\n '& label.Mui-focused': {\n borderWidth: \"3px\"\n },\n '& .MuiInput-underline:after': {\n borderWidth: \"3px\"\n },\n '& .MuiInputLabel-outlined': {\n backgroundColor: \"white\",\n paddingRight: \"10px\",\n transform: \"translate(14px, 13px) scale(1)\"\n },\n '& .MuiInputLabel-outlined.MuiInputLabel-shrink': {\n transform: \"translate(14px, -6px) scale(0.75)\"\n },\n '& .MuiOutlinedInput-input':{\n paddingTop: \"12px\",\n paddingBottom: \"12px\"\n },\n '& .MuiOutlinedInput-root': {\n '& fieldset': {\n borderWidth: \"3px\"\n },\n '&:hover fieldset': {\n borderWidth: \"3px\"\n },\n '&.Mui-focused fieldset': {\n borderWidth: \"3px\"\n },\n },\n }\n }),\n);\n\nexport interface BillingDialogProps {\n open: boolean,\n onClose: (value: any[]) => void,\n cartState: any,\n userState: any\n}\nexport function BillingDialog(props: BillingDialogProps) {\n const { onClose, open } = props;\n const [firstName, setFirstName] = useState(\"\");\n const [firstNameError, setFirstNameError] = useState(false);\n const [lastName, setLastName] = useState(\"\");\n const [lastNameError, setLastNameError] = useState(false);\n const [address, setAddress] = useState(\"\");\n const [addressError, setAddressError] = useState(false);\n const [city, setCity] = useState(\"\");\n const [cityError, setCityError] = useState(false);\n const [state, setState] = useState(\"\");\n const [stateError, setStateError] = useState(\"\");\n const [email, setEmail] = useState(\"\");\n const [emailError, setEmailError] = useState(\"\");\n const [agreeToTerms, setAgreeToTerms] = useState(false);\n const [termsOpen, setTermsOpen] = useState(false);\n const [agreeError, setAgreeError] = useState(false);\n const [errorMessage, setErrorMessage] = useState(\"\");\n const classes = useStyles();\n\n const handleClose = () => {\n setFirstNameError(false);\n setLastNameError(false);\n setAddressError(false);\n setCityError(false);\n setStateError(\"\");\n setEmailError(\"\");\n setFirstName(\"\");\n setLastName(\"\");\n setAddress(\"\");\n setState(\"\");\n setCity(\"\");\n setEmail(\"\");\n setAgreeToTerms(false);\n setErrorMessage(\"\");\n onClose([] as any[]);\n\n };\n\n useEffect(() => {\n if (props.open && props.userState.isAuth) {\n setFirstName(props.userState.user.firstName);\n setLastName(props.userState.user.lastName);\n setEmail(props.userState.user.emailAddress);\n }\n }, [props.userState, props.open])\n\n const checkout = async (token: string, zip: string) => {\n try {\n setErrorMessage(\"\");\n var ids = [] as number[];\n props.cartState.items.forEach((c: any) => {\n ids.push(c.addresses[0].internalId);\n })\n var j = {\n sourceId: token,\n amount: (props.cartState.items.length * BETA_PRICE * 100).toString(),\n addresses: ids,\n email: email,\n billingAddress: {\n add: address,\n city: city,\n state: state,\n zip: zip\n }\n };\n var requestOptions = {\n method: 'POST',\n headers: {\n \"Authorization\": \"Bearer \" + props.userState.user.currentToken,\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(j)\n }\n await fetch(baseEndpoint + \"checkout/pay\", requestOptions).then(async response => {\n if (response.ok) {\n var r = await response.json() as any[];\n if (r[0].status === \"COMPLETED\") {\n setAgreeToTerms(false);\n setErrorMessage(\"\");\n onClose(r as any[]);\n }\n }\n else {\n var error = await response.text()\n if (error === \"Invalid session!\") {\n setErrorMessage(error + \" Try signing out and back in!\");\n }\n else if(error === \"HTTP Response Not OK\")\n {\n setErrorMessage(\"Invalid card entered please try again!\")\n }\n }\n })\n }\n catch (error: any) {\n if(error === \"HTTP Response Not OK\")\n {\n setErrorMessage(\"Invalid card entered please try again!\")\n }\n }\n\n }\n\n const handleChangeFirstName = (event: React.ChangeEvent) => {\n setFirstName(event.target.value)\n }\n\n const handleChangeLastName = (event: React.ChangeEvent) => {\n setLastName(event.target.value);\n }\n\n const handleChangeAddress = (event: React.ChangeEvent) => {\n setAddress(event.target.value);\n }\n\n const handleChangeCity = (event: React.ChangeEvent) => {\n setCity(event.target.value);\n }\n\n const handleChangeState = (event: React.ChangeEvent) => {\n setState(event.target.value.toUpperCase());\n }\n\n const handleChangeEmail = (event: React.ChangeEvent) => {\n setEmail(event.target.value);\n }\n\n const handleChangeAgreeToTerms = () => {\n setAgreeToTerms(!agreeToTerms);\n if (agreeToTerms === false && agreeError === true) {\n setAgreeError(false);\n }\n }\n\n const handleOpenTerms = () => {\n setTermsOpen(true);\n }\n\n const handleCloseTerms = () => {\n setTermsOpen(false);\n }\n return (\n \n Billing Info\n \n {errorMessage !== \"\" && {errorMessage}}\n
\n
\n \n \n
\n
\n \n
\n
\n \n \n
\n
\n \n
\n
\n \n {agreeError === false ? \"I agree to the\" : **I agree to the} terms of use \n
\n
\n
\n {\n\n var stateRegEx = new RegExp('^((A[LKSZR])|(C[AOT])|(D[EC])|(F[ML])|(G[AU])|(HI)|(I[DLNA])|(K[SY])|(LA)|(M[EHDAINSOT])|(N[EVHJMYCD])|(MP)|(O[HKR])|(P[WAR])|(RI)|(S[CD])|(T[NX])|(UT)|(V[TIA])|(W[AVIY]))$');\n var emailRegEx = new RegExp(/^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/); // eslint-disable-line\n var stateMatch = stateRegEx.test(state);\n var emailMatch = emailRegEx.test(email);\n if (firstName.trim() === \"\") {\n setFirstNameError(true)\n }\n else if (firstNameError === true) {\n setFirstNameError(false);\n }\n if (lastName.trim() === \"\") {\n setLastNameError(true);\n }\n else if (lastNameError === true) {\n setLastNameError(false);\n }\n if (address.trim() === \"\") {\n setAddressError(true)\n }\n else if (addressError === true) {\n setAddressError(false)\n }\n if (city.trim() === \"\") {\n setCityError(true)\n }\n else if (cityError === true) {\n setCityError(false);\n }\n if (state === \"\") {\n setStateError(\"**State is required\");\n }\n else if (stateMatch === false) {\n setStateError(\"**Invalid state\");\n }\n else if (stateError !== \"\") {\n setStateError(\"\");\n }\n if (email.trim() === \"\") {\n setEmailError(\"**Email required\");\n }\n else if (emailMatch === false) {\n setEmailError(\"**Invalid email\")\n }\n else if (emailError !== \"\") {\n setEmailError(\"\");\n }\n if (agreeToTerms === false) {\n setAgreeError(true)\n }\n\n if (buyer && token.status === \"OK\" && firstName !== \"\" && lastName !== \"\" && address !== \"\" && city !== \"\" && state !== \"\" && stateMatch !== false && email !== \"\" && emailMatch !== false && agreeToTerms === true) {\n checkout(token.token, token.details.billing.postalCode);\n }\n }}\n /**\n * This function enable the Strong Customer Authentication (SCA) flow\n *\n * We strongly recommend use this function to verify the buyer and\n * reduce the chance of fraudulent transactions.\n */\n createVerificationDetails={() => ({\n amount: (props.cartState.items.length * BETA_PRICE).toString(),\n /* collected from the buyer */\n billingContact: {\n addressLines: [address],\n familyName: firstName,\n givenName: lastName,\n countryCode: 'US',\n city: city,\n state: state\n },\n currencyCode: 'USD',\n intent: 'CHARGE',\n })}\n /**\n * Identifies the location of the merchant that is taking the payment.\n * Obtained from the Square Application Dashboard - Locations tab.\n */\n locationId={config.REACT_APP_LOCATION_ID}\n > \n \n\n \n
\n
\n \n
\n );\n}\n\nconst mapStateToProps = (state: any) => ({\n cartState: state.cartState,\n userState: state.userState\n});\nexport default connect(mapStateToProps)(BillingDialog);\n","\nimport { Button, Dialog, DialogContent, DialogTitle } from '@material-ui/core';\nimport { connect } from 'react-redux';\n\n\n\nexport interface CheckoutOptionDialogProps {\n open: boolean,\n onClose: (value: string) => void,\n \n}\nexport function CheckoutOptionDialog(props: CheckoutOptionDialogProps) {\n const {open, onClose} = props;\n \n const handleClose = () =>{\n onClose(\"\");\n }\n\n const asGuest = () =>{\n onClose(\"guest\");\n }\n\n const asLoggedIn = () =>{\n onClose(\"user\");\n }\n\n\n return (\n \n Checkout\n \n \n \n \n \n );\n}\nconst mapStateToProps = (state: any) => ({\n cartState: state.cartReducer,\n});\nexport default connect(mapStateToProps)(CheckoutOptionDialog);","import React, { useEffect, useState } from 'react';\nimport { createStyles, makeStyles, Theme } from '@material-ui/core/styles';\nimport { Backdrop, Button, Card, CardActions, CardContent, CircularProgress, IconButton, List, ListItem, Snackbar, Tooltip, Typography } from '@material-ui/core';\nimport { connect } from 'react-redux';\nimport { clearCart, removeFromCart } from '../Actions/CartActions';\nimport { Property } from '../Models/Property';\nimport HighlightOffIcon from '@material-ui/icons/HighlightOff';\nimport BillingDialog from './BillingDialog';\nimport { baseEndpoint } from '../App';\nimport { CheckoutOptionDialog } from './CheckoutOptionDialog';\nimport FileSaver from 'file-saver';\nimport { Alert } from '@material-ui/lab';\nimport LoginDialog from '../Header/LoginDialog';\nimport {Color} from \"@material-ui/lab/Alert\"\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n flexGrow: 1,\n margin: \"15px\",\n textAlign: \"left\",\n height: \"65vh\"\n },\n menuButton: {\n marginRight: theme.spacing(2),\n },\n title: {\n flexGrow: 1,\n },\n backdrop: {\n zIndex: theme.zIndex.drawer + 1,\n color: '#fff',\n },\n }),\n);\nexport const PRICE = 150;\nexport const BETA_PRICE = 20;\n function Cart(props: any) {\n const classes = useStyles();\n const [billingOpen, setBillingOpen] = useState(false);\n const [checkoutOptionsOpen, setCheckoutOptionsOpen] = useState(false);\n const [downloadLoading, setDownloadLoading] = useState(false);\n const [downloadAlertOpen, setDownloadAlertOpen] = useState([]);\n const [loginOpen, setLoginOpen] = useState(false);\n const [checkoutAlertOpen, setCheckoutAlertOpen] = useState(false);\n const [checkoutAlert, setCheckoutAlert] = useState(\"\");\n const [alertSeverity, setAlertSeverity] = useState(\"success\");\n const [loadingEllipses, setLoadingEllipses] = React.useState(\" \");\n useEffect(() => {\n if (props.cartState.items > 0) {\n var o = [] as boolean[]\n props.cartState.items.forEach((c: any) => {\n o.push(false);\n })\n setDownloadAlertOpen(o);\n }\n if (props.userState.isAuth === true) {\n setLoginOpen(false);\n }\n }, [props]);\n\n useEffect(() =>{\n setTimeout(()=>{\n if(downloadLoading === true)\n {\n var count = loadingEllipses.split('.');\n if(count.length === 1)\n {\n setLoadingEllipses(\". \");\n }\n else if(count.length === 2){\n setLoadingEllipses(\".. \");\n }\n else if(count.length === 3)\n {\n setLoadingEllipses(\"...\");\n }\n else if(count.length === 4)\n {\n setLoadingEllipses(\" \");\n }\n \n }\n else{\n setLoadingEllipses(\" \");\n }\n }, 500)\n\n\n },[downloadLoading, loadingEllipses])\n\n const removeFromCart = (id: number) => {\n props.removeFromCart(id);\n }\n\n const checkout = () => {\n setBillingOpen(true);\n\n }\n const handleCheckoutOptionsOpen = () => {\n if (props.userState.isAuth === true) {\n checkout();\n }\n else {\n setCheckoutOptionsOpen(true);\n }\n\n }\n\n const handleCheckoutOptionsClose = (value: string) => {\n setCheckoutOptionsOpen(false);\n if (value === \"guest\") {\n checkout();\n }\n if (value === \"user\") {\n checkout();\n setLoginOpen(true);\n }\n }\n\n const downloadScoreReport = async (id: string, email: string, addressId: number, last: boolean) => {\n var requestOptions = {\n method: 'POST',\n headers: {\n \"Authorization\": \"Bearer \" + props.userState.user.currentToken,\n 'Content-Type': 'application/json',\n 'Response-Type': 'Blob',\n },\n body: JSON.stringify(email)\n }\n try {\n await fetch(baseEndpoint + \"properties/report/\" + id, requestOptions)\n .then(async response => {\n if (response.ok) {\n var p = props.cartState.items.filter((pr: any) => pr.addresses[0].internalId === addressId)[0];\n var address = p.addresses[0].address + \" \" + p.addresses[0].city + \", \" + p.addresses[0].state + \" \" + p.addresses[0].zip;\n //Create a Blob from the PDF Stream\n const file = new Blob([await response.blob()], { type: \"application/pdf\" });\n FileSaver.saveAs(file, address);\n if (last === true) {\n setDownloadLoading(false);\n props.clearCart();\n setAlertSeverity(\"success\");\n setCheckoutAlert(\"Property report download complete!\");\n setCheckoutAlertOpen(true);\n \n }\n var temp = Object.assign([], downloadAlertOpen) as boolean[];\n temp[props.cartState.items.findIndex((pr: any) => pr.addresses[0].internalId === id)] = true;\n setDownloadAlertOpen(temp);\n return\n }\n else {\n if (last === true) {\n var mess = await response.text();\n console.log(mess);\n setAlertSeverity(\"error\");\n setCheckoutAlert(mess);\n setCheckoutAlertOpen(true);\n setDownloadLoading(false);\n }\n return;\n }\n\n })\n } catch (error) {\n console.log(error);\n if (last === true) {\n setDownloadLoading(false);\n }\n\n return\n }\n }\n\n\n const handleBillingClose = (value: any[]) => {\n if (value.length > 0) {\n setDownloadLoading(true);\n value.forEach((c: any, i: number) => {\n var last = i + 1 >= value.length\n downloadScoreReport(c.id, c.email, c.addressId, last);\n })\n }\n setBillingOpen(false);\n }\n\n const handleCloseDownloadAlert = (index: number) => {\n var temp = Object.assign([], downloadAlertOpen) as boolean[];\n temp[index] = false;\n setDownloadAlertOpen(temp);\n }\n\n const handleCloseLogin = () => {\n setLoginOpen(false);\n if (props.userState.isAuth === true) {\n checkout();\n }\n\n }\n\n const handleCloseAlert = (event?: React.SyntheticEvent, reason?: string) =>{\n if (reason === 'clickaway') {\n return;\n }\n setCheckoutAlertOpen(false);\n }\n return (\n
\n {downloadAlertOpen.length > 0 && downloadAlertOpen.map((o: boolean, i: number) => {\n var p = props.cartState.items[i];\n var address = p.addresses[0].address + \" \" + p.addresses[0].city + \", \" + p.addresses[0].state + \" \" + p.addresses[0].zip;\n return ( { handleCloseDownloadAlert(i) }}>\n { handleCloseDownloadAlert(i) }} severity=\"success\" style={{ width: '100%' }}>\n {address} download success!\n \n )\n })}\n
\n \n \n Score Report Shopping Cart\n {props.cartState != null && props.cartState.items.length > 0 && \n {props.cartState.items.map((p: Property, i: number) => {\n var address = p.addresses[0].address + \" \" + p.addresses[0].city + \", \" + p.addresses[0].state + \" \" + p.addresses[0].zip;\n return (\n \n
\n
\n
\n { removeFromCart(p.addresses[0].internalId) }} style={{ padding: \"5px\", color: \"#C71020\" }}>\n
\n
\"\"
{address}\n
\n
\n Score: {(Math.round(p.calcScore)).toString()} Neighborhood: {p.neighborhood.name}\n
\n
\n
\n )\n })}\n
}\n
\n\n {props.cartState && props.cartState.items.length > 0 && \n Total(beta): ${props.cartState.items.length * BETA_PRICE} \n Total(regular): ${props.cartState.items.length * PRICE} \n
\n \n \n
\n\n
}\n
\n \n \n \n
\n \n { \"Please wait while we download your property report\" + (props.cartState.items.length > 1 ? \"s\" : \"\") + loadingEllipses}\n \n
\n
\n {props.userState.isAuth === false && }\n \n \n {checkoutAlert}\n \n \n
\n );\n}\nconst mapDispatchToProps = (dispatch: any) => ({\n removeFromCart: (id: number) => dispatch(removeFromCart(id)),\n clearCart: () => dispatch(clearCart())\n});\nconst mapStateToProps = (state: any) => ({\n cartState: state.cartState,\n userState: state.userState\n});\nexport default connect(mapStateToProps, mapDispatchToProps)(Cart);","import React, { useState } from 'react';\nimport { createStyles, makeStyles, Theme } from '@material-ui/core/styles';\nimport { Button, FormControl, FormHelperText, IconButton, InputAdornment, InputLabel, MenuItem, Paper, Select, TextField, Typography } from '@material-ui/core';\nimport Visibility from '@material-ui/icons/Visibility';\nimport VisibilityOff from '@material-ui/icons/VisibilityOff';\nimport { connect } from 'react-redux';\nimport { createUser } from '../Actions/thunks';\nimport { Alert, AlertTitle } from '@material-ui/lab';\nimport { isMobile } from '../App';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n flexGrow: 1,\n margin: \"15px\",\n textAlign: \"left\",\n paddingBottom: \"25px\"\n },\n menuButton: {\n marginRight: theme.spacing(2),\n },\n title: {\n flexGrow: 1,\n },\n input: {\n backgroundColor: \"white\",\n '& label.Mui-focused': {\n color: '#0404fc',\n borderWidth: \"3px\",\n backgroundColor: \"white\"\n },\n '& .MuiInputLabel-outlined': {\n backgroundColor: \"white\",\n paddingRight: \"10px\",\n transform: \"translate(14px, 13px) scale(1)\"\n },\n '& .MuiInputLabel-outlined.MuiInputLabel-shrink': {\n transform: \"translate(14px, -6px) scale(0.75)\"\n },\n '& .MuiOutlinedInput-input':{\n paddingTop: isMobile === false ? \"12px\": \"10px\",\n paddingBottom: isMobile === false ? \"12px\": \"10px\"\n },\n '& .MuiOutlinedInput-root': {\n '& fieldset': {\n borderColor: '#0404fc',\n borderWidth: \"3px\"\n },\n '&:hover fieldset': {\n borderColor: '#0404fc',\n borderWidth: \"3px\"\n },\n '&.Mui-focused fieldset': {\n borderColor: '#0404fc',\n borderWidth: \"3px\"\n },\n },\n },\n inputError: {\n backgroundColor: \"white\",\n '& label.Mui-focused': {\n borderWidth: \"3px\"\n },\n '& .MuiInput-underline:after': {\n borderWidth: \"3px\"\n },\n '& .MuiInputLabel-outlined': {\n backgroundColor: \"white\",\n paddingRight: \"10px\",\n transform: \"translate(14px, 13px) scale(1)\"\n },\n '& .MuiInputLabel-outlined.MuiInputLabel-shrink': {\n transform: \"translate(14px, -6px) scale(0.75)\"\n },\n '& .MuiOutlinedInput-input':{\n paddingTop: \"12px\",\n paddingBottom: \"12px\"\n },\n '& .MuiOutlinedInput-root': {\n '& fieldset': {\n borderWidth: \"3px\"\n },\n '&:hover fieldset': {\n borderWidth: \"3px\"\n },\n '&.Mui-focused fieldset': {\n borderWidth: \"3px\"\n },\n },\n }\n }),\n);\n\nfunction SignUp(props: any) {\n const classes = useStyles();\n const [category, setCategory] = useState(\"\");\n const [categoryError, setCategoryError] = useState(false);\n const [firstName, setFirstName] = useState(\"\");\n const [firstNameError, setFirstNameError] = useState(false);\n const [lastName, setLastName] = useState(\"\");\n const [lastNameError, setLastNameError] = useState(false);\n const [company, setCompany] = useState(\"\");\n const [companyError, setCompanyError] = useState(false);\n const [email, setEmail] = useState(\"\");\n const [emailError, setEmailError] = useState(\"\");\n const [phone, setPhone] = useState(\"\");\n const [password, setPassword] = useState(\"\");\n const [passwordError, setPasswordError] = useState(false);\n const [confirmPass, setConfirmPass] = useState(\"\");\n const [confirmError, setConfirmError] = useState(false);\n const [showPass, setShowPass] = useState(false);\n console.log(props.userState)\n\n\n const handleChangeCategory = (event: React.ChangeEvent<{ value: unknown }>) => {\n setCategory(event.target.value as string);\n };\n\n const handleChangeFirstName = (event: React.ChangeEvent) => {\n setFirstName(event.target.value);\n }\n\n const handleChangeLastName = (event: React.ChangeEvent) => {\n setLastName(event.target.value);\n }\n\n const handleChangeCompany = (event: React.ChangeEvent) => {\n setCompany(event.target.value);\n }\n\n const handleChangeEmail = (event: React.ChangeEvent) => {\n setEmail(event.target.value);\n }\n\n const handleChangePhone = (event: React.ChangeEvent) => {\n setPhone(event.target.value);\n }\n\n const handleChangePassword = (event: React.ChangeEvent) => {\n setPassword(event.target.value);\n }\n\n const handleChangeConfirmPass = (event: React.ChangeEvent) => {\n setConfirmPass(event.target.value);\n }\n\n const handleChangeShowPass = () => {\n setShowPass(!showPass)\n }\n\n async function createAccount() {\n var emailRegEx = new RegExp(/^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/); // eslint-disable-line\n var emailMatch = emailRegEx.test(email);\n if (category === \"\") {\n setCategoryError(true)\n }\n else if (categoryError === true) {\n setCategoryError(false);\n }\n if (firstName.trim() === \"\") {\n setFirstNameError(true);\n }\n else if (firstNameError === true) {\n setFirstNameError(false);\n }\n if (lastName.trim() === \"\") {\n setLastNameError(true);\n }\n else if (lastNameError === true) {\n setLastNameError(false);\n }\n if (category === \"broker\" && company.trim() === \"\") {\n setCompanyError(true)\n }\n else if (companyError === true) {\n setCompanyError(false);\n }\n if (email.trim() === \"\") {\n setEmailError(\"**Email required\");\n }\n else if (emailMatch === false) {\n setEmailError(\"**Invalid email\")\n }\n else if (emailError !== \"\") {\n setEmailError(\"\");\n }\n if (password.trim().length < 8) {\n setPasswordError(true);\n }\n else if (passwordError === true) {\n setPasswordError(false);\n }\n if (password !== confirmPass) {\n setConfirmError(true);\n }\n else if (confirmError === true) {\n setConfirmError(false);\n }\n if (category !== \"\" && firstName.trim() !== \"\" && lastName.trim() !== \"\" && (category !== \"broker\" || company.trim() !== \"\") && email.trim() !== \"\" && emailMatch === true && password.trim().length >= 8 && password === confirmPass) {\n \n props.createUser({ category: category, firstName: firstName, lastName: lastName, company: company, email: email, password: password });\n }\n }\n\n return (\n
\n
\n \n Create User Profile\n
{\n event.preventDefault();\n createAccount();\n }\n } style={{ width: isMobile === false ? \"65%\" : \"85%\", marginLeft: \"auto\", marginRight: \"auto\", marginTop: \"15px\" }}>\n {props.userState.signupMessage !== \"\" && \n Error\n {props.userState.signupMessage}\n }\n \n Category *\n \n Tenant\n Broker\n Landlord\n \n {categoryError && **Required}\n \n
\n \n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n \n {showPass ? : }\n \n \n\n }}\n />\n
\n
\n \n
\n
\n \n
\n\n
\n
\n\n
\n );\n}\nconst mapStateToProps = (state: any) => ({\n userState: state.userState,\n});\n\nconst mapDispatchToProps = (dispatch: any) => ({\n createUser: (value: any) => dispatch(createUser(value))\n});\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(SignUp);\n","import React from 'react';\nimport { createStyles, makeStyles, Theme } from '@material-ui/core/styles';\nimport { Paper, Typography } from '@material-ui/core';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n flexGrow: 1,\n margin: \"15px\",\n textAlign: \"left\"\n },\n menuButton: {\n marginRight: theme.spacing(2),\n },\n title: {\n flexGrow: 1,\n },\n }),\n);\n\nexport default function TermsPage() {\n const classes = useStyles();\n\n return (\n
\n {window.innerWidth >= 768 &&
}\n \n Website Terms of Use\n Last Modified: January 14, 2022\n
\n Acceptance of the Terms of Use\n \n These terms of use are entered into by and between You and Parslii LLC (\"Company,\" \"we,\" or \"us\"). The following terms and conditions (\"Terms of Use\") govern your access to and use of www.parslii.com, including any content,\n functionality and services offered on or through www.parslii.com (the \"Website\"), whether as a guest or a registered user.\n
\n
\n Please read the Terms of Use carefully before you start to use the Website. By using the Website or by clicking to accept or agree to the Terms of Use when this option is made available to you,\n you accept and agree to be bound and abide by these Terms of Use. If you do not want to agree to these Terms of Use, you must not access or use the Website.\n\n
\n
\n Changes to the Terms of Use\n \n We may revise and update these Terms of Use from time to time in our sole discretion. All changes are effective immediately when we post them, and apply to all access to and use of the Website thereafter.\n However, any changes to the dispute resolution provisions set forth in Governing Law and Jurisdiction will not apply to any disputes for which the parties have actual notice prior to the date the change is\n posted on the Website.\n
\n
\n Your continued use of the Website following the posting of revised Terms of Use means that you accept and agree to the changes. You are expected to check this page each time you access this Website so you\n are aware of any changes, as they are binding on you.\n\n
\n
\n Accessing the Website and Account Security\n \n We reserve the right to withdraw or amend this Website, and any service or material we provide on the Website, in our sole discretion without notice. We will not be liable if, for any reason,\n all or any part of the Website is unavailable at any time or for any period. From time to time, we may restrict access to some parts of the Website or the entire Website to users, including registered users.\n
\n
\n You are responsible for both:\n
\n
    \n
  • Making all arrangements necessary for you to have access to the Website.
  • \n
  • Ensuring that all persons who access the Website through your internet connection are aware of these Terms of Use and comply with them.
  • \n
\n \n To access the Website or some of the resources it offers, you may be asked to provide certain registration details or other information. It is a condition of your use of the Website\n that all the information you provide on the Website is correct, current and complete.\n
\n
\n If you choose, or are provided with, a user name, password or any other piece of information as part of our security procedures, you must treat such information as confidential,\n and you must not disclose it to any other person or entity. You also acknowledge that your account is personal to you and agree not to provide any other person with access to this Website or portions\n of it using your user name, password or other security information. You agree to notify us immediately of any unauthorized access to or use of your user name or password or any other breach of security.\n You also agree to ensure that you exit from your account at the end of each session. You should use particular caution when accessing your account from a public or shared computer so that others are not able\n to view or record your password or other personal information.\n
\n
\n We have the right to disable any user name, password or other identifier, whether chosen by you or provided by us, at any time in our sole discretion for any or no reason, including if, in our opinion,\n you have violated any provision of these Terms of Use.\n
\n
\n Intellectual Property Rights\n \n The Website and its entire contents, features and functionality (including but not limited to all information, software, text, displays, images, video and audio, and the design,\n selection and arrangement thereof), are owned by the Company, its licensors or other providers of such material and are protected by United States and international copyright, trademark, patent, trade\n secret and other intellectual property or proprietary rights laws.\n
\n
\n These Terms of Use permit you to use the Website for your personal, non-commercial use only. You must not reproduce, distribute, modify, create derivative works of, publicly display, publicly perform,\n republish, download, store or transmit any of the material on our Website, except as follows:\n
\n
    \n
  • Your computer may temporarily store copies of such materials in RAM incidental to your accessing and viewing those materials.
  • \n
  • You may store files that are automatically cached by your Web browser for display enhancement purposes.
  • \n
  • You may print or download one copy of a reasonable number of pages of the Website for your own personal, non-commercial use and not for further\n reproduction, publication or distribution.\n
  • \n
  • If we provide desktop, mobile or other applications for download, you may download a single copy to your computer or mobile device solely for your own personal,\n non-commercial use, provided you agree to be bound by our end user license agreement for such applications.\n
  • \n
\n You must not:\n
    \n
  • Modify copies of any materials from this site.
  • \n
  • Use any illustrations, photographs, video or audio sequences or any graphics separately from the accompanying text.
  • \n
  • Delete or alter any copyright, trademark or other proprietary rights notices from copies of materials from this site.
  • \n
\n \n You must not access or use for any commercial purposes any part of the Website or any services or materials available through the Website.\n
\n
\n If you wish to make any use of material on the Website other than that set out in this section, please address your request to: info@parslii.com.\n
\n
\n If you print, copy, modify, download or otherwise use or provide any other person with access to any part of the Website in breach of the Terms of Use, your right to use the Website will cease\n immediately and you must, at our option, return or destroy any copies of the materials you have made. No right, title or interest in or to the Website or any content on the Website is transferred to you,\n and all rights not expressly granted are reserved by the Company. Any use of the Website not expressly permitted by these Terms of Use is a breach of these Terms of Use and may violate copyright, trademark\n and other laws.\n
\n
\n Trademarks\n \n The Company name, the terms, and all related names, logos, product and service names, designs and slogans are trademarks of the Company or its affiliates or licensors.\n You must not use such marks without the prior written permission of the Company. All other names, logos, product and service names, designs and slogans on this Website are the trademarks of\n their respective owners.\n \n
\n Prohibited Uses\n \n You may use the Website only for lawful purposes and in accordance with these Terms of Use. You agree not to use the Website:\n \n
    \n
  • In any way that violates any applicable federal, state, local or international law or regulation (including, without limitation, any laws regarding the export of data or software to and from the\n US or other countries).\n
  • \n
  • For the purpose of exploiting, harming or attempting to exploit or harm minors in any way by exposing them to inappropriate content, asking for personally identifiable information or otherwise.
  • \n
  • To send, knowingly receive, upload, download, use or re-use any material which does not comply with the Content Standards set out in these Terms of Use.
  • \n
  • To transmit, or procure the sending of, any advertising or promotional material, including any \"junk mail,\" \"chain letter,\" \"spam,\" or any other similar solicitation.
  • \n
  • To impersonate or attempt to impersonate the Company, a Company employee, another user or any other person or entity (including, without limitation, by using e-mail addresses associated with any of the\n foregoing).
  • \n
  • To engage in any other conduct that restricts or inhibits anyone's use or enjoyment of the Website, or which, as determined by us, may harm the Company or users of the Website, or expose them to liability.
  • \n
\n \n Additionally, you agree not to:\n \n
    \n
  • Use the Website in any manner that could disable, overburden, damage, or impair the site or interfere with any other party's use of the Website, including their ability to engage in real time activities\n through the Website.\n
  • \n
  • Use any robot, spider or other automatic device, process or means to access the Website for any purpose, including monitoring or copying any of the material on the Website.
  • \n
  • Use any manual process to monitor or copy any of the material on the Website, or for any other purpose not expressly authorized in these Terms of Use, without our prior written consent.
  • \n
  • Use any device, software or routine that interferes with the proper working of the Website.
  • \n
  • Introduce any viruses, trojan horses, worms, logic bombs or other material which is malicious or technologically harmful.
  • \n
  • Attempt to gain unauthorized access to, interfere with, damage or disrupt any parts of the Website, the server on which the Website is stored, or any server, computer or database connected to the Website.
  • \n
  • Attack the Website via a denial-of-service attack or a distributed denial-of-service attack.
  • \n
  • Otherwise attempt to interfere with the proper working of the Website.
  • \n
\n User Contributions\n \n The Website may contain message boards, chat rooms, personal web pages or profiles, forums, bulletin boards, and other interactive features (collectively, \"Interactive Services\") that allow users to post,\n submit, publish, display or transmit to other users or other persons (hereinafter, \"post\") content or materials (collectively, \"User Contributions\") on or through the Website.\n
\n
\n All User Contributions must comply with the Content Standards set out in these Terms of Use.\n
\n
\n Any User Contribution you post to the site will be considered non-confidential and non-proprietary. By providing any User Contribution on the Website, you grant us and our affiliates and service providers,\n and each of their and our respective licensees, successors and assigns the right to use, reproduce, modify, perform, display, distribute and otherwise disclose to third parties any such material for any\n purpose.\n
\n
\n You represent and warrant that:\n
\n
    \n
  • You own or control all rights in and to the User Contributions and have the right to grant the license granted above to us and our affiliates and service providers, and each of their and our\n respective licensees, successors and assigns.\n
  • \n
  • All of your User Contributions do and will comply with these Terms of Use.\n
  • \n
\n \n You understand and acknowledge that you are responsible for any User Contributions you submit or contribute, and you, not the Company, have fully responsibility for such content, including its legality,\n reliability, accuracy and appropriateness.\n
\n
\n We are not responsible, or liable to any third party, for the content or accuracy of any User Contributions posted by you or any other user of the Website.\n
\n
\n Monitoring and Enforcement; Termination\n \n We have the right to:\n \n
    \n
  • Remove or refuse to post any User Contributions for any or no reason in our sole discretion.
  • \n
  • Take any action with respect to any User Contribution that we deem necessary or appropriate in our sole discretion, including if we believe that such User Contribution violates the Terms of Use,\n including the Content Standards, infringes any intellectual property right or other right of any person or entity, threatens the personal safety of users of the Website or the public or could create\n liability for the Company.
  • \n
  • \n Disclose your identity or other information about you to any third party who claims that material posted by you violates their rights, including their intellectual property rights or their right to privacy.\n
  • \n
  • \n Take appropriate legal action, including without limitation, referral to law enforcement, for any illegal or unauthorized use of the Website.\n
  • \n
  • \n Terminate or suspend your access to all or part of the Website for any or no reason, including without limitation, any violation of these Terms of Use.\n
  • \n
\n \n Without limiting the foregoing, we have the right to fully cooperate with any law enforcement authorities or court order requesting or directing us to disclose the identity or other information of anyone\n posting any materials on or through the Website. YOU WAIVE AND HOLD HARMLESS THE COMPANY AND ITS AFFILIATES, LICENSEES AND SERVICE PROVIDERS FROM ANY CLAIMS RESULTING FROM ANY ACTION TAKEN BY ANY OF THE\n FOREGOING PARTIES DURING OR AS A RESULT OF ITS INVESTIGATIONS AND FROM ANY ACTIONS TAKEN AS A CONSEQUENCE OF INVESTIGATIONS BY EITHER SUCH PARTIES OR LAW ENFORCEMENT AUTHORITIES.\n
\n
\n However, we do not undertake to review material before it is posted on the Website, and cannot ensure prompt removal of objectionable material after it has been posted. Accordingly, we assume no\n liability for any action or inaction regarding transmissions, communications or content provided by any user or third party. We have no liability or responsibility to anyone for performance or\n nonperformance of the activities described in this section.\n
\n
\n Content Standards\n \n These content standards apply to any and all User Contributions and use of Interactive Services. User Contributions must in their entirety comply with all applicable federal, state,\n local and international laws and regulations. Without limiting the foregoing, User Contributions must not:\n \n
    \n
  • \n Contain any material which is defamatory, obscene, indecent, abusive, offensive, harassing, violent, hateful, inflammatory or otherwise objectionable.\n
  • \n
  • \n Promote sexually explicit or pornographic material, violence, or discrimination based on race, sex, religion, nationality, disability, sexual orientation or age.\n
  • \n
  • \n Infringe any patent, trademark, trade secret, copyright or other intellectual property or other rights of any other person.\n
  • \n
  • \n Violate the legal rights (including the rights of publicity and privacy) of others or contain any material that could give rise to any civil or criminal liability under applicable laws or regulations or\n that otherwise may be in conflict with these Terms of Use.\n
  • \n
  • \n Be likely to deceive any person.\n
  • \n
  • \n Promote any illegal activity, or advocate, promote or assist any unlawful act.\n
  • \n
  • \n Cause annoyance, inconvenience or needless anxiety or be likely to upset, embarrass, alarm or annoy any other person.\n
  • \n
  • \n Impersonate any person, or misrepresent your identity or affiliation with any person or organization.\n
  • \n
  • \n Involve commercial activities or sales, such as contests, sweepstakes and other sales promotions, barter or advertising.\n
  • \n
  • \n Give the impression that they emanate from or are endorsed by us or any other person or entity, if this is not the case.\n
  • \n
\n Copyright Infringement\n \n If you believe that any User Contributions violate your copyright, please send an email to: [info@parslii.com]. It is the policy of the Company to terminate the user accounts of repeat infringers.\n \n
\n Reliance on Information Posted\n \n The information presented on or through the Website is made available solely for general information purposes. We do not warrant the accuracy, completeness or usefulness of this information.\n Any reliance you place on such information is strictly at your own risk. We disclaim all liability and responsibility arising from any reliance placed on such materials by you or any other visitor to the\n Website, or by anyone who may be informed of any of its contents.\n
\n
\n This Website includes content provided by third parties, including materials provided by other users, bloggers and third-party licensors, syndicators, aggregators and/or reporting services.\n All statements and/or opinions expressed in these materials, and all articles and responses to questions and other content, other than the content provided by the Company, are solely the opinions and the\n responsibility of the person or entity providing those materials. These materials do not necessarily reflect the opinion of the Company. We are not responsible, or liable to you or any third party, for the\n content or accuracy of any materials provided by any third parties.\n
\n
\n Changes to the Website\n \n We may update the content on this Website from time to time, but its content is not necessarily complete or up-to-date. Any of the material on the Website may be out of date at any given time,\n and we are under no obligation to update such material.\n \n
\n Linking to the Website and Social Media Features\n \n You may link to our homepage, provided you do so in a way that is fair and legal and does not damage our reputation or take advantage of it, but you must not establish a link in such a way as to suggest\n any form of association, approval or endorsement on our part\n
\n
\n This Website may provide certain social media features that enable you to:\n
\n
    \n
  • \n Link from your own or certain third-party websites to certain content on this Website.\n
  • \n
  • \n Send e-mails or other communications with certain content, or links to certain content, on this Website.\n
  • \n
  • \n Cause limited portions of content on this Website to be displayed or appear to be displayed on your own or certain third-party websites.\n
  • \n
\n \n You may use these features solely as they are provided by us and solely with respect to the content they are displayed with. Subject to the foregoing, you must not:\n \n
    \n
  • \n Establish a link from any website that is not owned by you.\n
  • \n
  • \n Cause the Website or portions of it to be displayed, or appear to be displayed by, for example, framing, deep linking or in-line linking, on any other site.\n
  • \n
  • \n Link to any part of the Website other than the homepage.\n
  • \n
  • \n Otherwise take any action with respect to the materials on this Website that is inconsistent with any other provision of these Terms of Use.\n
  • \n
\n \n The website from which you are linking, or on which you make certain content accessible, must comply in all respects with the Content Standards set out in these Terms of Use.\n
\n
\n You agree to cooperate with us in causing any unauthorized framing or linking immediately to cease. We reserve the right to withdraw linking permission without notice.\n
\n
\n We may disable all or any social media features and any links at any time without notice in our discretion.\n
\n
\n Links from the Website\n \n If the Website contains links to other sites and resources provided by third parties, these links are provided for your convenience only. This includes links contained in advertisements,\n including banner advertisements and sponsored links. We have no control over the contents of those sites or resources, and accept no responsibility for them or for any loss or damage that may arise\n from your use of them. If you decide to access any of the third party websites linked to this Website, you do so entirely at your own risk and subject to the terms and conditions of use for such websites.\n \n
\n Errors, Omissions, and Interruptions\n \n Although some of the content, information or data made available to you on the Website is obtained from sources Parslii believes to be reliable, Parslii cannot and does not guarantee the accuracy,\n validity, timeliness or completeness of any such content, information or data made available to you on the Website or on any report, research, or content downloaded from the Website for any particular\n purpose.\n
\n
\n Parslii will not be liable or have any responsibility of any kind for any loss or damage that you incur in the event of any failure or interruption of the Website or resulting from the act or\n omission of any other party involved in making the Website or the Content available to you, or from any other cause relating to your access to, or inability to access, or use of, or inability to use\n any of the Website or the Content, whether or not the circumstances giving rise to such cause may have been within the control of Parslii or of any of their Subcontractors or Suppliers.\n
\n
\n Not Legal Advice\n \n All property research and analysis information contained within this Website or downloaded reports or content is subject to the possibility of errors, omissions, change of ownership, change of\n tax status or other conditions without notice. Any data, statistics, estimates, projections, or assumptions are intended solely for use by the user to aid in property research and analysis and in\n no way are meant to be understood as opinions, legal advice, investment advice, or advice by Parslii of any kind. It is the sole responsibility of You the user to consult with legal, regulatory,\n and financial advisors when making decisions about property, leasing and lease negotiations.\n \n
\n Impartiality\n \n The Parslii analysis system is a proprietary impartial ‘equally applied’ system. All Parslii research and Parslii Scores are derived from publicly available data and measurable information.\n Every property goes through the exact same analysis system so that there is no analysis manipulation or bias for or against any property. The analysis system produces Parslii research and Parslii Scores\n without regard to any one person’s opinion or hearsay.\n \n
\n Geographic Restrictions\n \n The owner of the Website is based in the State Of New York in the United States. We provide this Website for use only by persons located in the United States. We make no claims that the Website\n or any of its content is accessible or appropriate outside of the United States. Access to the Website may not be legal by certain persons or in certain countries. If you access the Website from outside\n the United States, you do so on your own initiative and are responsible for compliance with local laws.\n \n
\n Disclaimer of Warranties\n \n You understand that we cannot and do not guarantee or warrant that files available for downloading from the internet or the Website will be free of viruses or other destructive code.\n You are responsible for implementing sufficient procedures and checkpoints to satisfy your particular requirements for anti-virus protection and accuracy of data input and output, and for maintaining\n a means external to our site for any reconstruction of any lost data. WE WILL NOT BE LIABLE FOR ANY LOSS OR DAMAGE CAUSED BY A DISTRIBUTED DENIAL-OF-SERVICE ATTACK, VIRUSES OR OTHER TECHNOLOGICALLY HARMFUL\n MATERIAL THAT MAY INFECT YOUR COMPUTER EQUIPMENT, COMPUTER PROGRAMS, DATA OR OTHER PROPRIETARY MATERIAL DUE TO YOUR USE OF THE WEBSITE OR ANY SERVICES OR ITEMS OBTAINED THROUGH THE WEBSITE OR TO YOUR\n DOWNLOADING OF ANY MATERIAL POSTED ON IT, OR ON ANY WEBSITE LINKED TO IT.\n
\n
\n YOUR USE OF THE WEBSITE, ITS CONTENT AND ANY SERVICES OR ITEMS OBTAINED THROUGH THE WEBSITE IS AT YOUR OWN RISK. THE WEBSITE, ITS CONTENT AND ANY SERVICES OR ITEMS OBTAINED THROUGH THE\n WEBSITE ARE PROVIDED ON AN \"AS IS\" AND \"AS AVAILABLE\" BASIS, WITHOUT ANY WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED. NEITHER THE COMPANY NOR ANY PERSON ASSOCIATED WITH THE COMPANY MAKES\n ANY WARRANTY OR REPRESENTATION WITH RESPECT TO THE COMPLETENESS, SECURITY, RELIABILITY, QUALITY, ACCURACY OR AVAILABILITY OF THE WEBSITE. WITHOUT LIMITING THE FOREGOING, NEITHER THE COMPANY NOR ANYONE\n ASSOCIATED WITH THE COMPANY REPRESENTS OR WARRANTS THAT THE WEBSITE, ITS CONTENT OR ANY SERVICES OR ITEMS OBTAINED THROUGH THE WEBSITE WILL BE ACCURATE, RELIABLE, ERROR-FREE OR UNINTERRUPTED, THAT\n DEFECTS WILL BE CORRECTED, THAT OUR SITE OR THE SERVER THAT MAKES IT AVAILABLE ARE FREE OF VIRUSES OR OTHER HARMFUL COMPONENTS OR THAT THE WEBSITE OR ANY SERVICES OR ITEMS OBTAINED THROUGH THE WEBSITE\n WILL OTHERWISE MEET YOUR NEEDS OR EXPECTATIONS.\n
\n
\n THE COMPANY HEREBY DISCLAIMS ALL WARRANTIES OF ANY KIND, WHETHER EXPRESS OR IMPLIED, STATUTORY OR OTHERWISE, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, NON-INFRINGEMENT AND\n FITNESS FOR PARTICULAR PURPOSE.\n
\n
\n THE FOREGOING DOES NOT AFFECT ANY WARRANTIES WHICH CANNOT BE EXCLUDED OR LIMITED UNDER APPLICABLE LAW.\n
\n
\n Limitation on Liability\n \n TO THE FULLEST EXTENT PROVIDED BY LAW, IN NO EVENT WILL THE COMPANY, ITS AFFILIATES OR THEIR LICENSORS, SERVICE PROVIDERS, EMPLOYEES, AGENTS, OFFICERS OR DIRECTORS BE LIABLE FOR DAMAGES OF ANY KIND,\n UNDER ANY LEGAL THEORY, ARISING OUT OF OR IN CONNECTION WITH YOUR USE, OR INABILITY TO USE, THE WEBSITE, ANY WEBSITES LINKED TO IT, ANY CONTENT ON THE WEBSITE OR SUCH OTHER WEBSITES OR ANY SERVICES\n OR ITEMS OBTAINED THROUGH THE WEBSITE OR SUCH OTHER WEBSITES, INCLUDING ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, CONSEQUENTIAL OR PUNITIVE DAMAGES, INCLUDING BUT NOT LIMITED TO, PERSONAL INJURY,\n PAIN AND SUFFERING, EMOTIONAL DISTRESS, LOSS OF REVENUE, LOSS OF PROFITS, LOSS OF BUSINESS OR ANTICIPATED SAVINGS, LOSS OF USE, LOSS OF GOODWILL, LOSS OF DATA, AND WHETHER CAUSED BY TORT\n (INCLUDING NEGLIGENCE), BREACH OF CONTRACT OR OTHERWISE, EVEN IF FORESEEABLE. Should Company be found liable for any damages, your exclusive remedy, and Company’s entire liability under these Terms and\n Conditions shall be a refund of the fees paid to Company hereunder, and in no event will Company’s liability for any reason exceed such fee.\n
\n
\n THE FOREGOING DOES NOT AFFECT ANY LIABILITY WHICH CANNOT BE EXCLUDED OR LIMITED UNDER APPLICABLE LAW.\n
\n
\n Indemnification\n \n You agree to defend, indemnify and hold harmless the Company, its affiliates, licensors and service providers, and its and their respective officers, directors, employees, contractors,\n agents, licensors, suppliers, successors and assigns from and against any claims, liabilities, damages, judgments, awards, losses, costs, expenses or fees (including reasonable attorneys' fees)\n arising out of or relating to your violation of these Terms of Use or your use of the Website, including, but not limited to, your User Contributions, any use of the Website's content, services and\n products other than as expressly authorized in these Terms of Use, or your use of any information obtained from the Website.\n \n
\n Governing Law and Jurisdiction\n \n All matters relating to the Website and these Terms of Use, and any dispute or claim arising therefrom or related thereto (in each case, including non-contractual disputes or claims),\n shall be governed by and construed in accordance with the internal laws of the State of New York without giving effect to any choice or conflict of law provision or rule (whether of the State of\n New York or any other jurisdiction).\n
\n
\n Any legal suit, action or proceeding arising out of, or related to, these Terms of Use or the Website shall be instituted exclusively in the federal courts of the United States or the courts\n of the State of New York, in each case located in the City of New York and County of New York, although we retain the right to bring any suit, action or proceeding against you for breach of these\n Terms of Use in your country of residence or any other relevant country. You waive any and all objections to the exercise of jurisdiction over you by such courts and to venue in such courts.\n
\n
\n Arbitration\n \n At Company's sole discretion, it may require You to submit any disputes arising from these Terms of Use or use of the Website, including disputes arising from or concerning their interpretation,\n violation, invalidity, non-performance, or termination, to final and binding arbitration under the Rules of Arbitration of the American Arbitration Association applying New York law.\n \n
\n No Class Action\n \n NEITHER YOU NOR WE WILL PARTICIPATE IN A CLASS ACTION OR CLASS-WIDE ARBITRATION FOR ANY CLAIMS COVERED BY THESE TERMS OF SERVICE. YOU ARE GIVING UP YOUR RIGHT TO PARTICIPATE AS A CLASS\n REPRESENTATIVE OR CLASS MEMBER ON ANY CLASS CLAIM YOU MAY HAVE AGAINST US INCLUDING ANY RIGHT TO CLASS ARBITRATION OR ANY CONSOLIDATION OF INDIVIDUAL ARBITRATIONS. You also agree not to participate\n in claims brought in a private attorney general or representative capacity, or consolidated claims involving another person’s account, if we are a party to the proceeding.\n \n
\n Severability\n \n If the prohibition against class actions and other claims brought on behalf of third parties contained above is found to be unenforceable, then all of the preceding language in this Arbitration\n section will be null and void. This arbitration agreement will survive the termination of your relationship with us.\n \n
\n Limitation on Time to File Claims\n \n ANY CAUSE OF ACTION OR CLAIM YOU MAY HAVE ARISING OUT OF OR RELATING TO THESE TERMS OF USE OR THE WEBSITE MUST BE COMMENCED WITHIN ONE (1) YEAR AFTER THE CAUSE OF ACTION ACCRUES; OTHERWISE,\n SUCH CAUSE OF ACTION OR CLAIM IS PERMANENTLY BARRED.\n \n
\n Waiver and Severability\n \n No waiver of by the Company of any term or condition set forth in these Terms of Use shall be deemed a further or continuing waiver of such term or condition or a waiver of any other term or condition,\n and any failure of the Company to assert a right or provision under these Terms of Use shall not constitute a waiver of such right or provision.\n
\n
\n If any provision of these Terms of Use is held by a court or other tribunal of competent jurisdiction to be invalid, illegal or unenforceable for any reason, such provision shall be eliminated or\n limited to the minimum extent such that the remaining provisions of the Terms of Use will continue in full force and effect.\n
\n
\n Entire Agreement\n \n The Terms of Use constitutes the sole and entire agreement between you and Parslii LLC with respect to the Website and supersedes all prior and contemporaneous understandings, agreements,\n representations and warranties, both written and oral, with respect to the Website\n \n
\n
\n
\n\n
\n );\n}\n\n","export interface ScoreInfo {\n questionId: number,\n questionDescription: string,\n answerId: number,\n answerDescription: string,\n fact: string,\n additionalInfo: string,\n score: number,\n id: string\n}\n\nexport interface Answer{\n internalId: number,\n id: string,\n description: string,\n score: number,\n questionId: number,\n createdBy: number\n createdUtc: Date,\n\n}\n\nexport interface Question{\n internalId: number,\n id: string,\n description: string,\n maxScore: number,\n parentQuestionId: number,\n createdBy: number\n createdUtc: Date,\n answerType: AnswerType,\n required: boolean,\n questionType: QuestionType\n}\n\nexport enum AnswerType{\n Boolean, \n String,\n Number\n}\n\nexport enum QuestionType{\n Property,\n Neighborhood,\n Landlord\n}","import React, { useEffect, useRef, useState } from 'react';\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport { Neighborhood } from '../Models/Neighborhood';\nimport { AppBar, createStyles, FormControl, IconButton, List, ListItem, makeStyles, MenuItem, Select, Slide, TextField, Theme, Toolbar, Typography } from '@material-ui/core';\nimport { Answer, ScoreInfo } from '../Models/Info';\nimport { TransitionProps } from '@material-ui/core/transitions';\nimport CloseIcon from '@material-ui/icons/Close';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n appBar: {\n position: 'relative',\n backgroundColor: '#0404fc'\n },\n title: {\n marginLeft: theme.spacing(2),\n flex: 1,\n },\n }),\n);\n\n\n\n\ntype GoogleLatLng = google.maps.LatLng;\ntype GoogleMap = google.maps.Map;\n\nexport interface EditNeighborhoodDialogProps {\n open: boolean,\n onClose: (n: any) => void,\n neighborhood: Neighborhood,\n answers: Answer[]\n}\n\nconst Transition = React.forwardRef(function Transition(\n props: TransitionProps & { children?: React.ReactElement },\n ref: React.Ref,\n) {\n return ;\n});\n\nexport default function EditNeighborhoodDialog(props: EditNeighborhoodDialogProps) {\n const classes = useStyles();\n const [neighborhood, setNeighborhood] = useState({} as Neighborhood);\n const ref = useRef(null);\n // eslint-disable-next-line\n const [map, setMap] = useState();\n\n useEffect(() => {\n if (props.open === true && neighborhood.id == null) {\n setNeighborhood(props.neighborhood)\n \n }\n if(neighborhood.id != null)\n {\n initMap(new google.maps.LatLng(Number(props.neighborhood.latCenter), Number(props.neighborhood.lngCenter)))\n }\n if(props.open === false && neighborhood.id != null)\n {\n setNeighborhood({} as Neighborhood);\n }\n\n }, [props, neighborhood])\n\n const handleClose = () => {\n props.onClose(null);\n };\n\n const initMap = (address: GoogleLatLng) => {\n if (ref.current) {\n setMap(\n new google.maps.Map(ref.current, {\n zoom: 12,\n center: address,\n mapTypeControl: false,\n streetViewControl: false,\n rotateControl: false,\n scaleControl: true,\n fullscreenControl: false,\n panControl: false,\n zoomControl: true,\n gestureHandling: 'greedy',\n mapTypeId: google.maps.MapTypeId.ROADMAP,\n draggableCursor: 'pointer',\n styles: [\n {\n featureType: \"poi\",\n stylers: [\n { visibility: \"off\" }\n ]\n },\n {\n featureType: \"transit\",\n stylers: [{ visibility: \"off\" }],\n },\n ]\n })\n )\n }\n }\n\n const handleChangeLat = (event: React.ChangeEvent) => {\n var temp = Object.assign({}, neighborhood) as Neighborhood;\n temp.latCenter = event.target.value;\n setNeighborhood(temp);\n\n };\n\n const handleChangeFact = (event: React.ChangeEvent<{ value: unknown }>, questionIndex: number) => {\n var temp = Object.assign({}, neighborhood) as Neighborhood;\n temp.scoreInfo[questionIndex].fact = event.target.value as string;\n setNeighborhood(temp);\n\n };\n\n const handleChangeLng = (event: React.ChangeEvent) => {\n var temp = Object.assign({}, neighborhood) as Neighborhood;\n temp.lngCenter = event.target.value;\n setNeighborhood(temp);\n\n };\n\n const handleChangeAnswer = (event: React.ChangeEvent<{ value: unknown }>, questionIndex: number) => {\n var temp = Object.assign({}, neighborhood) as Neighborhood;\n temp.scoreInfo[questionIndex].answerId = event.target.value as number;\n temp.scoreInfo[questionIndex].score = props.answers.find(a => a.internalId === event.target.value as number)?.score as number;\n temp.scoreInfo[questionIndex].answerDescription = props.answers.find(a => a.internalId === event.target.value as number)?.description as string;\n setNeighborhood(temp);\n }\n\n const handleSave = () => {\n props.onClose(neighborhood);\n };\n return (\n \n {neighborhood.name != null && \n \n \n \n \n \n {neighborhood.name}\n \n \n \n }\n \n
\n \n \n
\n \n {neighborhood.scoreInfo != null && neighborhood.scoreInfo.map((s: ScoreInfo, i: number) => {\n return (\n \n
\n {s.questionDescription}\n
\n
\n \n {\n handleChangeAnswer(e, i)\n }}\n >\n {props.answers.map((a, j) => {\n if (a.questionId === s.questionId) {\n return (\n {a.description} ({a.score})\n )\n }\n else {\n return null;\n }\n })}\n \n \n
\n
\n {\n handleChangeFact(e, i)\n }} value={s.fact != null ? s.fact : \"\"}\n helperText={s.additionalInfo} />\n
\n
\n\n )\n })}\n
\n Map View\n {neighborhood &&
}\n
\n\n
\n );\n}\n","import React, { useEffect, useState } from 'react';\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport { AppBar, Checkbox, createStyles, FormControl, FormControlLabel, IconButton, InputLabel, makeStyles, MenuItem, Select, Slide, TextField, Theme, Toolbar, Typography } from '@material-ui/core';\nimport { Answer, Question, QuestionType } from '../Models/Info';\nimport { TransitionProps } from '@material-ui/core/transitions';\nimport CloseIcon from '@material-ui/icons/Close';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n appBar: {\n position: 'relative',\n backgroundColor: '#0404fc'\n },\n title: {\n marginLeft: theme.spacing(2),\n flex: 1,\n },\n }),\n);\n\n\n\n\n\nexport interface EditQuestionDialogProps {\n open: boolean,\n onClose: (q: any, a: any[]) => void,\n question: Question,\n answers: Answer[],\n}\n\nconst Transition = React.forwardRef(function Transition(\n props: TransitionProps & { children?: React.ReactElement },\n ref: React.Ref,\n) {\n return ;\n});\n\nexport default function EditQuestionDialog(props: EditQuestionDialogProps) {\n const classes = useStyles();\n const [question, setQuestion] = useState({} as Question);\n const [answers, setAnswers] = useState([] as Answer[]);\n useEffect(() => {\n if (props.open === true) {\n setQuestion(props.question)\n setAnswers(props.answers)\n\n }\n\n }, [props])\n\n const handleClose = () => {\n setQuestion({} as Question);\n props.onClose(null, []);\n };\n\n\n const handleChangeQuestionDescription = (event: React.ChangeEvent) => {\n var temp = Object.assign({}, question) as Question;\n temp.description = event.target.value;\n setQuestion(temp);\n\n };\n\n const handleChangeQuestionType = (event: React.ChangeEvent<{ value: any }>) => {\n var type: keyof typeof QuestionType = event.target.value;\n var temp = Object.assign({}, question) as Question;\n temp.questionType = QuestionType[type];\n setQuestion(temp);\n }\n\n const handleChangeAnswerDescription = (event: React.ChangeEvent<{ value: unknown }>, i: number) => {\n var temp = Object.assign([], answers) as Answer[];\n temp[i].description = event.target.value as string;\n setAnswers(temp);\n\n };\n\n const handleChangeAnswerScore = (event: React.ChangeEvent<{ value: unknown }>, i: number) => {\n var temp = Object.assign([], answers) as Answer[];\n var score = event.target.value as number;\n if (!isNaN(score)) {\n temp[i].score = event.target.value as number;\n var isHigher = answers.filter(a => a.score > score).length === 0;\n if (isHigher) {\n var quest = Object.assign({}, question) as Question;\n quest.maxScore = score;\n setQuestion(quest);\n }\n setAnswers(temp);\n }\n\n\n };\n const handleChangeRequired = (event: React.ChangeEvent) => {\n var quest = Object.assign({}, question) as Question;\n quest.required = event.target.checked;\n setQuestion(quest);\n };\n\n const handleSave = () => {\n props.onClose(question, []);\n };\n return (\n \n {question.id != null && \n \n \n \n \n \n {question.description}\n \n \n \n }\n \n
\n \n
\n
\n \n Question Type\n {\n handleChangeQuestionType(e)\n }}\n >\n {QuestionType[0]}\n {QuestionType[1]}\n {QuestionType[2]}\n \n \n \n }\n label=\"Is Required\"\n />\n Max Score: {question.maxScore}\n
\n
\n Answers\n {answers.length > 0 && answers.map((a, i) => {\n return (\n
\n { handleChangeAnswerDescription(e, i) }} style={{ width: \"80%\", marginRight: \"1%\" }} value={a.description} />\n { handleChangeAnswerScore(e, i) }} style={{ width: \"19%\" }} value={a.score} />\n
\n )\n })}\n
\n
\n\n
\n );\n}\n","import React from 'react';\nimport { makeStyles, withStyles } from '@material-ui/core/styles';\nimport clsx from 'clsx';\nimport Check from '@material-ui/icons/Check';\nimport StepConnector from '@material-ui/core/StepConnector';\nimport { StepIconProps } from '@material-ui/core/StepIcon';\n\nexport const AddPropStepConnector = withStyles({\n alternativeLabel: {\n top: 10,\n left: 'calc(-50% + 16px)',\n right: 'calc(50% + 16px)',\n },\n active: {\n '& $line': {\n borderColor: '#0404fc',\n },\n },\n completed: {\n '& $line': {\n borderColor: '#0404fc',\n },\n },\n line: {\n borderColor: '#eaeaf0',\n borderTopWidth: 3,\n borderRadius: 1,\n },\n})(StepConnector);\n\nconst useQontoStepIconStyles = makeStyles({\n root: {\n color: '#eaeaf0',\n backgroundColor: '#ccc',\n zIndex: 1,\n width: 20,\n height: 20,\n display: 'flex',\n borderRadius: '50%',\n justifyContent: 'center',\n alignItems: 'center',\n },\n active: {\n color: '#0404fc',\n },\n circle: {\n width: 20,\n height: 20,\n borderRadius: '50%',\n backgroundColor: 'currentColor',\n },\n completed: {\n backgroundColor: '#0404fc',\n color: \"white\",\n zIndex: 1,\n borderRadius: '50%',\n width: 20,\n height: 20,\n },\n});\n\nexport function AddPropertyStepIcon(props: StepIconProps) {\n const classes = useQontoStepIconStyles();\n const { active, completed } = props;\n\n return (\n \n {completed ? :
}\n
\n );\n}","import React, { useEffect, useState } from 'react';\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport { Neighborhood } from '../Models/Neighborhood';\nimport { AppBar, createStyles, FormControl, FormControlLabel, FormHelperText, IconButton, InputLabel, List, ListItem, makeStyles, MenuItem, Radio, RadioGroup, Select, Slide, Step, StepLabel, Stepper, TextField, Theme, Toolbar, Typography } from '@material-ui/core';\nimport { Answer, Question, ScoreInfo } from '../Models/Info';\nimport { TransitionProps } from '@material-ui/core/transitions';\nimport CloseIcon from '@material-ui/icons/Close';\nimport { Address, Landlord, Property } from '../Models/Property';\nimport { AddPropertyStepIcon, AddPropStepConnector } from './AddPropertyStepIcon';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n appBar: {\n position: 'relative',\n backgroundColor: '#0404fc'\n },\n title: {\n marginLeft: theme.spacing(2),\n flex: 1,\n },\n stepper: {\n '&.MuiStepIcon-root.MuiStepIcon-completed': {\n color: \"red!important\"\n }\n },\n input: {\n backgroundColor: \"white\",\n '& label.Mui-focused': {\n color: '#0404fc',\n borderWidth: \"3px\"\n },\n '& .MuiInput-underline:after': {\n borderBottomColor: '#0404fc',\n borderWidth: \"3px\"\n },\n '& .MuiOutlinedInput-root': {\n '& fieldset': {\n borderColor: '#0404fc',\n borderWidth: \"3px\"\n },\n '&:hover fieldset': {\n borderColor: '#0404fc',\n borderWidth: \"3px\"\n },\n '&.Mui-focused fieldset': {\n borderColor: '#0404fc',\n borderWidth: \"3px\"\n },\n },\n }\n }),\n);\n\n\n\n\n\nexport interface AddPropertyDialogProps {\n open: boolean,\n onClose: (property: any, propertyScoreInfo: any, neighborhood: any, neighborhoodScoreInfo: any, landlord: any, landlordScoreInfo: any) => void,\n questions: Question[],\n answers: Answer[],\n neighborhoods: Neighborhood[],\n landlords: Landlord[]\n}\n\nconst Transition = React.forwardRef(function Transition(\n props: TransitionProps & { children?: React.ReactElement },\n ref: React.Ref,\n) {\n return ;\n});\n\nexport default function AddPropertyDialog(props: AddPropertyDialogProps) {\n const classes = useStyles();\n const steps = [\"Property\", \"Neighborhood\", \"Landlord\"]\n const [activeStep, setActiveStep] = React.useState(0);\n const [property, setProperty] = React.useState({} as Property);\n const [address, setAddress] = React.useState(\"\");\n const [addressError, setAddressError] = React.useState(false);\n const [city, setCity] = React.useState(\"\");\n const [cityError, setCityError] = useState(false);\n const [state, setState] = React.useState(\"\");\n const [stateError, setStateError] = useState(false);\n const [zip, setZip] = React.useState(\"\");\n const [zipErorr, setZipError] = useState(false);\n const [block, setBlock] = useState(\"\");\n const [blockError, setBlockError] = useState(false);\n const [lot, setLot] = useState(\"\");\n const [lotError, setLotError] = useState(false);\n const [borough, setBorough] = useState(\"\");\n const [boroughError, setBoroughError] = useState(false);\n const [properScoreInfo, setProperScoreInfo] = React.useState([] as ScoreInfo[]);\n const [propScoreInfoErrors, setPropScoreInfoErrors] = React.useState([] as number[]);\n const [selectedNeighborhood, setSelectedNeighborhood] = React.useState({ internalId: 0 } as Neighborhood)\n const [landlord, setLandlord] = React.useState({ internalId: -1 } as Landlord);\n const [landlordName, setLandlordName] = React.useState(\"\");\n const [landlordNameError, setLandlordNameError] = React.useState(false);\n const [landlordScoreInfo, setLandlordScoreInfo] = useState([] as ScoreInfo[]);\n const [stepErrors, setStepErrors] = useState([] as string[]);\n const [masterAddress, setMasterAddress] = useState(\"\");\n const [blockLockError, setBlockLockError] = React.useState(false);\n\n const BLOCK_LOC_DROPDOWN = [\"23-parslii-report-block-long-corner-e.png\", \"23-parslii-report-block-long-corner-w.png\",\n \"23-parslii-report-block-long-mid.png\", \"23-parslii-report-block-short-corner-n.png\",\n \"23-parslii-report-block-short-corner-s.png\", \"23-parslii-report-block-short-mid.png\"]\n\n useEffect(() => {\n if (props.open === true && properScoreInfo.length === 0) {\n var info = [] as ScoreInfo[]\n props.questions.filter(q => q.questionType === 0 && q.parentQuestionId != null && q.required === true).forEach(q => {\n\n var s = {} as ScoreInfo;\n s.questionDescription = q.description;\n s.questionId = q.internalId;\n info.push(s);\n\n });\n setProperScoreInfo(info);\n info = [] as ScoreInfo[]\n props.questions.filter(q => q.questionType === 2 && q.parentQuestionId != null && q.required === true).forEach(q => {\n\n var s = {} as ScoreInfo;\n s.questionDescription = q.description;\n s.questionId = q.internalId;\n info.push(s);\n\n });\n setLandlordScoreInfo(info);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [props])\n const handleClose = () => {\n setActiveStep(0);\n props.onClose(null, null, null, null, null, null);\n };\n\n const handleNext = () => {\n if (activeStep === 0) {\n setStepErrors([] as string[]);\n var questionErrors = [] as number[]\n properScoreInfo.forEach((element, i) => {\n if (!element.answerId || element.answerId == null) {\n questionErrors.push(i)\n }\n if(element.questionId === 3 && !element.additionalInfo)\n {\n console.log(element);\n setBlockLockError(true);\n }\n else if(element.questionId === 3){\n \n setBlockLockError(false);\n }\n });\n if (questionErrors.length > 0) {\n setPropScoreInfoErrors(questionErrors);\n setStepErrors((stepError) => stepError.concat([\"Missing Required answer(s)!\"]))\n setAddressError(address === \"\");\n if (address === \"\") {\n setStepErrors((stepError) => stepError.concat([\"Address is Required!\"]))\n }\n setCityError(city === \"\");\n if (city === \"\") {\n setStepErrors((stepError) => stepError.concat([\"City is Required!\"]))\n }\n setStateError(state === \"\");\n if (state === \"\") {\n setStepErrors((stepError) => stepError.concat([\"State is Required!\"]))\n }\n setZipError(zip === \"\");\n if (zip === \"\") {\n setStepErrors((stepError) => stepError.concat([\"Zip is Required!\"]))\n }\n setBlockError(block === \"\");\n if (block === \"\") {\n setStepErrors((stepErrors) => stepErrors.concat([\"Block is Required!\"]));\n }\n setLotError(lot === \"\");\n if (lot === \"\") {\n setStepErrors((stepErrors) => stepErrors.concat([\"Lot is Required!\"]));\n }\n setBoroughError(borough === \"\");\n if (borough === \"\") {\n setStepErrors((stepErrors) => stepErrors.concat([\"Borough is Required!\"]));\n }\n }\n else {\n setPropScoreInfoErrors([] as number[]);\n if (address === \"\" || city === \"\" || state === \"\" || zip === \"\" || block === \"\" || lot === \"\") {\n setAddressError(address === \"\");\n if (address === \"\") {\n setStepErrors((stepError) => stepError.concat([\"Address is Required!\"]))\n }\n setCityError(city === \"\")\n if (city === \"\") {\n setStepErrors((stepError) => stepError.concat([\"City is Required!\"]))\n }\n setStateError(state === \"\")\n if (state === \"\") {\n setStepErrors((stepError) => stepError.concat([\"State is Required!\"]))\n }\n setZipError(zip === \"\")\n if (zip === \"\") {\n setStepErrors((stepError) => stepError.concat([\"Zip is Required!\"]))\n }\n setBlockError(block === \"\");\n if (block === \"\") {\n setStepErrors((stepErrors) => stepErrors.concat([\"Block is Required!\"]));\n }\n setLotError(lot === \"\");\n if (lot === \"\") {\n setStepErrors((stepErrors) => stepErrors.concat([\"Lot is Required!\"]));\n }\n setBoroughError(borough === \"\");\n if (borough === \"\") {\n setStepErrors((stepErrors) => stepErrors.concat([\"Borough is Required!\"]));\n }\n }\n else {\n setActiveStep((prevActiveStep) => prevActiveStep + 1);\n }\n\n }\n\n }\n else if (activeStep === 1) {\n setStepErrors([] as string[]);\n if (selectedNeighborhood.internalId === 0) {\n setStepErrors((stepError) => stepError.concat([\"Selecting a neighborhood is Required!\"]))\n }\n else {\n setActiveStep((prevActiveStep) => prevActiveStep + 1);\n }\n\n }\n else {\n setActiveStep((prevActiveStep) => prevActiveStep + 1);\n }\n\n };\n\n const handleBack = () => {\n setStepErrors([] as string[]);\n setActiveStep((prevActiveStep) => prevActiveStep - 1);\n };\n\n const handleSave = () => {\n\n setStepErrors([] as string[]);\n var questionErrors = [] as number[]\n landlordScoreInfo.forEach((element, i) => {\n if (!element.answerId || element.answerId == null) {\n questionErrors.push(i)\n }\n });\n if (landlordName !== \"\" && questionErrors.length === 0) {\n var p = Object.assign({}, property);\n p.internalId = -1;\n setActiveStep(0);\n props.onClose(p, properScoreInfo, selectedNeighborhood, null, landlord, landlordScoreInfo);\n }\n else {\n setLandlordNameError(landlordName === \"\");\n if (landlordName === \"\") {\n setStepErrors((stepError) => stepError.concat([\"Landlord Name is required or select existing landlord!\"]))\n }\n if (questionErrors.length !== 0) {\n setPropScoreInfoErrors(questionErrors);\n setStepErrors((stepError) => stepError.concat([\"Missing Required answer(s)!\"]))\n }\n }\n\n\n\n };\n\n const handleChangeAddress = (event: React.ChangeEvent) => {\n setAddress(event.target.value);\n let p = Object.assign({}, property);\n if (!property.addresses) {\n p.addresses = [{ address: event.target.value } as Address]\n }\n else {\n p.addresses[0].address = event.target.value;\n }\n setProperty(p)\n\n };\n\n const handleChangeMasterAddress = (event: React.ChangeEvent) => {\n setMasterAddress(event.target.value);\n let p = Object.assign({}, property);\n if (!property.addresses) {\n p.addresses = [{ masterAddress: event.target.value } as Address]\n }\n else {\n p.addresses[0].masterAddress = event.target.value;\n }\n setProperty(p)\n\n };\n\n const handleChangeBlock = (event: React.ChangeEvent) => {\n setBlock(event.target.value);\n let p = Object.assign({}, property);\n if (!property.addresses) {\n p.addresses = [{ block: Number(event.target.value) } as Address]\n }\n else {\n p.addresses[0].block = Number(event.target.value);\n }\n setProperty(p)\n\n };\n\n const handleChangeLot = (event: React.ChangeEvent) => {\n setLot(event.target.value);\n let p = Object.assign({}, property);\n if (!property.addresses) {\n p.addresses = [{ lot: Number(event.target.value) } as Address]\n }\n else {\n p.addresses[0].lot = Number(event.target.value);\n console.log(p);\n }\n setProperty(p)\n\n };\n\n const handleChangeBorough = (event: React.ChangeEvent) => {\n setBorough(event.target.value);\n let p = Object.assign({}, property);\n if (!property.addresses) {\n p.addresses = [{ lot: Number(event.target.value) } as Address]\n }\n else {\n p.addresses[0].borough = Number(event.target.value);\n console.log(p);\n }\n setProperty(p)\n\n };\n\n const handleChangeCity = (event: React.ChangeEvent) => {\n setCity(event.target.value);\n let p = Object.assign({}, property);\n if (!property.addresses) {\n p.addresses = [{ city: event.target.value } as Address]\n }\n else {\n p.addresses[0].city = event.target.value;\n }\n setProperty(p)\n\n };\n\n const handleChangeState = (event: React.ChangeEvent) => {\n setState(event.target.value);\n let p = Object.assign({}, property);\n if (!property.addresses) {\n p.addresses = [{ state: event.target.value } as Address]\n }\n else {\n p.addresses[0].state = event.target.value;\n }\n setProperty(p)\n\n };\n\n const handleChangeZip = (event: React.ChangeEvent) => {\n setZip(event.target.value);\n let p = Object.assign({}, property);\n if (!property.addresses) {\n p.addresses = [{ zip: event.target.value } as Address]\n }\n else {\n p.addresses[0].zip = event.target.value;\n }\n setProperty(p)\n\n };\n\n const handleChangeAnswer = (event: React.ChangeEvent<{ value: unknown }>, questionIndex: number) => {\n if (activeStep === 0) {\n var temp = Object.assign([], properScoreInfo) as ScoreInfo[];\n temp[questionIndex].answerId = event.target.value as number;\n temp[questionIndex].score = props.answers.find(a => a.internalId === event.target.value as number)?.score as number;\n temp[questionIndex].answerDescription = props.answers.find(a => a.internalId === event.target.value as number)?.description as string;\n setProperScoreInfo(temp);\n }\n else if (activeStep === 2) {\n temp = Object.assign([], landlordScoreInfo) as ScoreInfo[];\n temp[questionIndex].answerId = event.target.value as number;\n temp[questionIndex].score = props.answers.find(a => a.internalId === event.target.value as number)?.score as number;\n temp[questionIndex].answerDescription = props.answers.find(a => a.internalId === event.target.value as number)?.description as string;\n setLandlordScoreInfo(temp);\n }\n\n }\n\n const handleChangeFact = (event: React.ChangeEvent<{ value: unknown }>, questionIndex: number) => {\n if (activeStep === 0) {\n var temp = Object.assign([], properScoreInfo) as ScoreInfo[];\n temp[questionIndex].fact = event.target.value as string;\n setProperScoreInfo(temp);\n }\n else if (activeStep === 2) {\n temp = Object.assign([], landlordScoreInfo) as ScoreInfo[];\n temp[questionIndex].fact = event.target.value as string;\n setLandlordScoreInfo(temp);\n }\n\n };\n\n const handleChangeAdditionalInfo = (event: React.ChangeEvent<{ value: unknown }>, questionIndex: number) => {\n if (activeStep === 0) {\n var temp = Object.assign([], properScoreInfo) as ScoreInfo[];\n temp[questionIndex].additionalInfo = event.target.value as string;\n setProperScoreInfo(temp);\n }\n else if (activeStep === 2) {\n temp = Object.assign([], landlordScoreInfo) as ScoreInfo[];\n temp[questionIndex].additionalInfo = event.target.value as string;\n setLandlordScoreInfo(temp);\n }\n\n };\n\n const handleChangeNeighborhood = (event: React.ChangeEvent) => {\n setSelectedNeighborhood(props.neighborhoods.find(n => n.internalId.toString() === (event.target as HTMLInputElement).value) as Neighborhood);\n };\n\n\n\n\n const handleChangeLandlordName = (event: React.ChangeEvent) => {\n setLandlordName(event.target.value);\n let l = Object.assign({}, landlord);\n l.name = event.target.value;\n setLandlord(l)\n\n };\n\n\n\n\n\n return (\n \n \n \n \n \n \n \n Add Property\n \n {activeStep > 0 && }\n {activeStep === 2 ? : }\n \n \n \n } activeStep={activeStep}>\n {steps.map((label) => {\n return (\n \n {label}\n \n );\n })}\n \n {activeStep === 0 &&
\n {stepErrors.length > 0 && \n {stepErrors.map((e, i) => {\n return (\n {e}\n )\n })}\n }\n
\n \n \n \n \n
\n
\n \n \n \n
\n
\n \n
\n
\n \n {properScoreInfo.map((q, i) => {\n return (\n \n
\n {q.questionDescription}{(props.questions.find(a => a.internalId === q.questionId) as Question).required && *}\n
\n
\n \n {\n handleChangeAnswer(e, i)\n }}\n >\n {props.answers.map((a, j) => {\n if (a.questionId === q.questionId) {\n return (\n {a.description} ({a.score})\n )\n }\n else {\n return null;\n }\n })}\n \n {propScoreInfoErrors.includes(i) && **Required}\n \n
\n
\n {\n handleChangeFact(e, i)\n }} value={q.fact != null ? q.fact : \"\"}\n />\n
\n
\n {q.questionId !== 3 ? {\n handleChangeAdditionalInfo(e, i)\n }} value={q.additionalInfo != null ? q.additionalInfo : \"\"}\n /> :\n \n Additional Info\n {\n handleChangeAdditionalInfo(e, i)\n }}\n >\n {BLOCK_LOC_DROPDOWN.map((a, j) => {\n return (\n {a}\n )\n })}\n \n {blockLockError && *Required}\n \n }\n
\n
\n )\n })}\n
\n
\n
}\n {activeStep === 1 &&
\n {stepErrors.length > 0 && \n {stepErrors.map((e, i) => {\n return (\n {e}\n )\n })}\n }\n Select Existing Neighborhood: {selectedNeighborhood.name !== null && {selectedNeighborhood.name}}\n \n \n {props.neighborhoods.map((n, i) => {\n return (\n } label={n.name} />\n )\n })}\n \n \n
}\n {activeStep === 2 &&
\n {stepErrors.length > 0 && \n {stepErrors.map((e, i) => {\n return (\n {e}\n )\n })}\n }\n
\n Create new Landlord:\n
\n \n
\n
\n \n {landlordScoreInfo.map((q, i) => {\n return (\n \n
\n {q.questionDescription}\n
\n
\n \n {\n handleChangeAnswer(e, i)\n }}\n >\n {props.answers.map((a, j) => {\n if (a.questionId === q.questionId) {\n return (\n {a.description} ({a.score})\n )\n }\n else {\n return null;\n }\n })}\n \n \n
\n
\n {\n handleChangeFact(e, i)\n }} value={q.fact != null ? q.fact : \"\"}\n />\n
\n
\n {\n handleChangeAdditionalInfo(e, i)\n }} value={q.additionalInfo != null ? q.additionalInfo : \"\"}\n />\n
\n
\n )\n })}\n
\n
\n
\n
}\n
\n\n
\n );\n}\n","import React from 'react';\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport { connect } from 'react-redux';\n\nexport interface ContinueSessionDialogProps{\n open: boolean,\n onClose: (refresh: boolean) => void\n}\nfunction ContinueSessionDialog(props: ContinueSessionDialogProps) {\n\n return (\n \n Session Expired\n \n \n Your session has expired. Would you like to refresh you session? \n \n \n \n \n \n \n \n );\n}\n\nconst mapStateToProps = (state: any) => ({\n userState: state.userState\n\n});\n\n\nexport default connect(mapStateToProps)(ContinueSessionDialog)","import React, { useEffect, useState } from 'react';\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport { AppBar, createStyles, IconButton, makeStyles, Paper, Slide, Table, TableBody, TableCell, TableContainer, TableHead, TableRow, Theme, Toolbar, Typography } from '@material-ui/core';\nimport { TransitionProps } from '@material-ui/core/transitions';\nimport CloseIcon from '@material-ui/icons/Close';\nimport { Property } from '../Models/Property';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n appBar: {\n position: 'relative',\n backgroundColor: '#0404fc'\n },\n title: {\n marginLeft: theme.spacing(2),\n flex: 1,\n },\n }),\n);\n\n\n\n\nexport interface taxDataDialog {\n open: boolean,\n onClose: () => void,\n property: Property\n}\n\nconst Transition = React.forwardRef(function Transition(\n props: TransitionProps & { children?: React.ReactElement },\n ref: React.Ref,\n) {\n return ;\n});\n\nexport default function TaxDataDialog(props: taxDataDialog) {\n const classes = useStyles();\n const [data, setData] = useState([] as any[]);\n const [taxRate, setTaxRate] = useState([] as any[]);\n\n\n useEffect(() => {\n if (props.property.id != null) {\n getTaxData(props.property)\n getTaxRates();\n }\n\n }, [props])\n\n const handleClose = () => {\n setData([] as any[]);\n props.onClose();\n };\n\n const getTaxData = async (property: Property) => {\n\n var requestOptions = {\n headers: {\n 'Content-Type': 'application/json',\n }\n }\n try {\n await fetch(\"https://data.cityofnewyork.us/resource/yjxr-fw8i.json?block=\" + property.addresses[0].block + \"&lot=\" + property.addresses[0].lot + \"&boro=\" + property.addresses[0].borough, requestOptions)\n .then(async result => {\n var r = await result.json();\n console.log(r);\n setData(r.sort((a: any,b: any) => Number(b.year.split('/')[0]) - Number(a.year.split('/')[0])));\n })\n }\n catch (ex) {\n console.error(ex);\n }\n }\n\n const getTaxRates = async () => {\n\n var requestOptions = {\n headers: {\n 'Content-Type': 'application/json',\n }\n }\n try {\n await fetch(\"https://data.cityofnewyork.us/resource/7zb8-7bpk.json\", requestOptions)\n .then(async result => {\n var r = await result.json();\n console.log(r);\n setTaxRate(r);\n })\n }\n catch (ex) {\n console.error(ex);\n }\n }\n\n const handleSave = () => {\n props.onClose();\n };\n return (\n \n {props.property.id != null && \n \n \n \n \n \n {props.property.addresses[0].address + \", \" + props.property.addresses[0].city + \", \" + props.property.addresses[0].state + \" \" + props.property.addresses[0].zip}\n \n \n \n }\n \n {data.length !== 0 && taxRate.length !== 0 && \n \n \n \n Year\n Bldg. Class\n Market Value\n Assessed Value\n Taxable\n Tax Rate\n Property Tax\n Change Rate\n \n \n \n {data.map((d, i) => {\n console.log(d.year.substring(2))\n var rateYear = taxRate.find(r => r.year === d.year.substring(2))\n var rate = \"\";\n if (d.taxclass.toString().includes('2')) {\n rate = rateYear.class_2;\n }\n else if (d.taxclass.toString().includes('4')) {\n rate = rateYear.class_4;\n }\n var deduct = d.extot2 ? d.extot2 : 0;\n var propTax = !isNaN(d.avtot2) ? Math.round((Number(rate) / 100) * (Number(d.avtot2) - deduct)) : Math.round((Number(rate) / 100) * (Number(d.avtot)- deduct))\n var change = 0;\n if (i < data.length - 1) {\n var oldRate;\n if (d.taxclass.toString().includes('2')) {\n oldRate = taxRate.find(r => r.year === data[i + 1].year.substring(2)).class_2;\n }\n else if (d.taxclass.toString().includes('4')) {\n oldRate = taxRate.find(r => r.year === data[i + 1].year.substring(2)).class_4;\n }\n var oldDeduct = data[i + 1].extot2 ? data[i + 1].extot2 : 0;\n var old = !isNaN(d.avtot2) ? Math.round((Number(oldRate) / 100) * Number(data[i + 1].avtot2 - oldDeduct)) : Math.round((Number(oldRate) / 100) * Number(data[i + 1].avtot-oldDeduct))\n change = ((propTax - old) / propTax) * 100\n }\n return (\n \n {d.year}\n {d.bldgcl}\n {Number(d.fullval) === 0 ? \"\" : \"$\" + Number(d.fullval).toLocaleString('en-US')}\n {!isNaN(d.avtot2) ? \"$\" + Number(d.avtot).toLocaleString('en-US') : \"\"}\n {!isNaN(d.avtot2) ? \"$\" + Number(d.avtot2).toLocaleString('en-US') : (Number(d.avtot) === 0 ? \"\" : \"$\" + Number(d.avtot).toLocaleString('en-US'))}\n {(Math.round(Number(rate) * 1000)) / 1000}%\n {propTax === 0 ? \"\" : \"$\" + propTax.toLocaleString('en-US')}\n {isNaN(Math.round(change * 100) / 100) || Math.round(change * 100) / 100 === 0 ? \"\" : Math.round(change * 100) / 100 + \"%\"}\n \n )\n })}\n \n
\n This may not be a complete data set. This is public data that comes from the New York City Department of Finance\n
}\n
\n\n
\n );\n}\n","import React, { useEffect, useState } from 'react';\nimport { createStyles, makeStyles, Theme } from '@material-ui/core/styles';\nimport { Accordion, AccordionDetails, AccordionSummary, Backdrop, Box, Button, CircularProgress, Collapse, IconButton, List, ListItem, Paper, Snackbar, Table, TableBody, TableCell, TableHead, TableRow, Typography } from '@material-ui/core';\nimport { baseEndpoint } from '../App';\nimport { Neighborhood } from '../Models/Neighborhood';\nimport { ExpandMore } from '@material-ui/icons';\nimport EditIcon from '@material-ui/icons/Edit';\nimport { Landlord, Property } from '../Models/Property';\nimport EditNeighborhoodDialog from './EditNeighborhoodDialog';\nimport { Answer, Question, QuestionType, ScoreInfo } from '../Models/Info';\nimport { connect } from 'react-redux';\nimport AddIcon from '@material-ui/icons/Add';\n\nimport KeyboardArrowDownIcon from '@material-ui/icons/KeyboardArrowDown';\nimport KeyboardArrowUpIcon from '@material-ui/icons/KeyboardArrowUp';\nimport EditQuestionDialog from './EditQuestionDialog';\nimport { Alert } from '@material-ui/lab';\nimport AddPropertyDialog from './AddPropertyDialog';\nimport ContinueSessionDialog from '../SignUp/ContinueSessionDialog';\nimport { refreshSession } from '../Actions/thunks';\nimport TaxDataDialog from './TaxDataDialog';\n\nconst useRowStyles = makeStyles({\n root: {\n '& > *': {\n borderBottom: 'unset',\n },\n },\n});\n\nfunction QuestionRow(props: { row: Question, parent: string, answers: Answer[], editQuestion: (q: Question, a: Answer[]) => void }) {\n const { row, parent, answers, editQuestion } = props;\n const [open, setOpen] = React.useState(false);\n const classes = useRowStyles();\n\n return (\n \n \n \n setOpen(!open)}>\n {open ? : }\n \n \n {parent}\n {QuestionType[row.questionType]}\n {row.description}{row.required && *}\n {row.maxScore}\n editQuestion(row, answers)} style={{ color: \"#ffb74d\" }}>\n \n \n \n \n \n \n Answers\n \n \n \n \n Answer\n Score\n \n \n \n {answers.map((a, i) => {\n return (\n \n {a.description}\n {a.score}\n \n )\n })}\n \n
\n
\n
\n
\n
\n
\n );\n}\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n flexGrow: 1,\n margin: \"15px\",\n textAlign: \"left\"\n },\n menuButton: {\n marginRight: theme.spacing(2),\n },\n title: {\n flexGrow: 1,\n },\n }),\n);\n\nexport const loadMapApi = () => {\n const mapsUrl = \"https://maps.googleapis.com/maps/api/js?key=AIzaSyBJ8YqLm8Q0vyLA74cV2TUvVqNM-o_NAoQ&libraries=places&languages=no®ion=NO&v=quarterly\"\n const scripts = document.getElementsByTagName('script');\n for (let i = 0; i < scripts.length; i++) {\n if (scripts[i].src.indexOf(mapsUrl) === 0) {\n return scripts[i];\n }\n }\n\n const googleMapsScript = document.createElement('script');\n googleMapsScript.src = mapsUrl;\n googleMapsScript.async = true;\n googleMapsScript.defer = true;\n window.document.body.appendChild(googleMapsScript);\n\n return googleMapsScript;\n}\n\nexport interface AdminDashboardProps {\n userState: any,\n refreshSession: () => void\n}\n\nfunction AdminDashboard(props: AdminDashboardProps) {\n const [neighborhoods, setNeighborhoods] = useState([] as Neighborhood[]);\n const [allProperties, setAllProperties] = useState([] as Property[]);\n const [editNeighborhoodOpen, setEditNeighborhoodOpen] = useState(false);\n const [selectedNeighborhood, setSelectedNeighborhood] = useState({} as Neighborhood);\n const [allAnswers, setAllAnswers] = useState([] as Answer[]);\n const [allQuestions, setAllQuestions] = useState([] as Question[]);\n const [selectedTab, setSelectedTab] = useState(0);\n const [selectedEditQuestion, setSelectedEditQuestion] = useState({} as Question);\n const [editQuestionOpen, setEditQuestionOpen] = useState(false);\n const [selectedEditAnswers, setSelectedEditAnswers] = useState([] as Answer[]);\n const [editNotifOpen, setEditNotifOpen] = useState(false);\n const [editNotifMessage, setEditNotifMessage] = useState(\"\");\n const [editLoad, setEditLoad] = useState(false);\n const [addPropertyOpen, setAddPropertyOpen] = useState(false);\n const [landlords, setLandlords] = useState([] as Landlord[]);\n const [sessionExpiredOpen, setSessionExpiredOpen] = useState(false);\n const [taxDataOpen, setTaxDataOpen] = useState(false);\n const [taxProperty, setTaxProperty] = useState({} as Property);\n const classes = useStyles();\n useEffect(() => {\n loadMapApi();\n fetchNeighborhoods();\n fetchProperties();\n fetchAnswers();\n fetchQuestions();\n fetchLandlords()\n\n }, [props])\n\n async function fetchNeighborhoods() {\n try {\n await fetch(baseEndpoint + 'neighborhoods').then(async (response) => {\n if (response.ok) {\n var r = await response.json() as Neighborhood[];\n setNeighborhoods(r);\n }\n })\n }\n catch (ex) {\n\n }\n }\n\n async function fetchLandlords() {\n try {\n await fetch(baseEndpoint + 'landlords/list').then(async (response) => {\n if (response.ok) {\n var r = await response.json() as Landlord[];\n setLandlords(r);\n }\n })\n }\n catch (ex) {\n\n }\n }\n\n async function fetchProperties() {\n try {\n await fetch(baseEndpoint + 'Properties/list').then(async (response) => {\n if (response.ok) {\n var r = await response.json() as Property[];\n setAllProperties(r);\n }\n })\n }\n catch (ex) {\n\n }\n }\n async function fetchAnswers() {\n try {\n await fetch(baseEndpoint + 'Answers/list').then(async (response) => {\n if (response.ok) {\n var r = await response.json() as Answer[];\n setAllAnswers(r);\n }\n })\n }\n catch (ex) {\n\n }\n }\n\n async function fetchQuestions() {\n try {\n await fetch(baseEndpoint + 'questions/list').then(async (response) => {\n if (response.ok) {\n var r = await response.json() as Question[];\n setAllQuestions(r);\n }\n })\n }\n catch (ex) {\n\n }\n }\n\n const editNeighborhood = async (n: Neighborhood) => {\n\n\n try {\n await fetch(baseEndpoint + 'neighborhoods/info/' + n.internalId).then(async (response) => {\n if (response.ok) {\n var r = await response.json() as ScoreInfo[];\n n.scoreInfo = r;\n setSelectedNeighborhood(n);\n setEditNeighborhoodOpen(true);\n }\n })\n }\n catch (ex) {\n\n }\n }\n\n const closeEditNeighborhood = async (value: Neighborhood) => {\n if (value != null) {\n var info = Object.assign([], value.scoreInfo);\n var val = Object.assign({}, value)\n val.scoreInfo = [] as ScoreInfo[];\n var requestOptions = {\n method: 'POST',\n headers: {\n \"Authorization\": \"Bearer \" + props.userState.user.currentToken,\n 'Content-Type': 'application/json',\n 'Response-Type': 'Blob',\n },\n body: JSON.stringify({ neighborhood: val, info: info })\n }\n try {\n await fetch(baseEndpoint + \"neighborhoods/info/update/\" + val.internalId, requestOptions)\n .then(async response => {\n if (response.ok) {\n await response.json();\n setEditNeighborhoodOpen(false);\n }\n else {\n if (response.status === 403) {\n setEditLoad(false);\n setSessionExpiredOpen(true);\n }\n }\n\n })\n } catch (error) {\n setEditNeighborhoodOpen(false);\n }\n\n }\n else{\n setEditNeighborhoodOpen(false);\n }\n\n }\n\n const editQuestion = (question: Question, answers: Answer[]) => {\n setSelectedEditQuestion(question);\n setSelectedEditAnswers(answers);\n setEditQuestionOpen(true);\n }\n\n const closeEditQuestion = async (question: Question, answers: Answer[]) => {\n if (question != null) {\n setEditLoad(true);\n var requestOptions = {\n method: 'POST',\n headers: {\n \"Authorization\": \"Bearer \" + props.userState.user.currentToken,\n 'Content-Type': 'application/json',\n 'Response-Type': 'Blob',\n },\n body: JSON.stringify(question)\n }\n try {\n await fetch(baseEndpoint + \"questions/update/\" + question.internalId, requestOptions)\n .then(async response => {\n if (response.ok) {\n await response.json()\n fetchQuestions();\n setEditLoad(false);\n setEditNotifMessage(question.description + \" edited successfully!\");\n setEditNotifOpen(true);\n }\n else {\n if (response.status === 403) {\n setEditLoad(false);\n setEditNotifMessage(\"Error: Session has expired. Please logout and back in.\");\n setEditNotifOpen(true);\n }\n }\n\n })\n } catch (error) {\n console.log(error);\n\n }\n\n }\n setSelectedEditQuestion({} as Question);\n setSelectedEditAnswers([] as Answer[]);\n setEditQuestionOpen(false);\n }\n\n const handleAddPropertyOpen = () => {\n setAddPropertyOpen(true);\n }\n\n const handloseCloseSessionExpired = (refresh: boolean) =>{\n setSessionExpiredOpen(false);\n if(refresh === true)\n {\n props.refreshSession();\n }\n }\n\n const handleCloseAddProperty = async (property: Property, propScoreInfo: ScoreInfo[], neighborhood: Neighborhood, neighborhoodScoreInfo: ScoreInfo[], landlord: Landlord, landlordScoreInfo: ScoreInfo[]) =>{\n \n if (property != null) {\n setEditLoad(true);\n var requestOptions = {\n method: 'POST',\n headers: {\n \"Authorization\": \"Bearer \" + props.userState.user.currentToken,\n 'Content-Type': 'application/json',\n 'Response-Type': 'application/json',\n },\n body: JSON.stringify({ property: property, propertyScoreInfo: propScoreInfo, neighborhood: neighborhood, neighborhoodScoreInfo: neighborhoodScoreInfo,\n landlord: landlord, landlordScoreInfo: landlordScoreInfo})\n }\n try {\n await fetch(baseEndpoint + \"properties/add\", requestOptions)\n .then(async response => {\n if (response.ok) {\n var r = await response.json()\n console.log(r);\n setEditLoad(false);\n setEditNotifMessage(\"Added \" + property.addresses[0].address + \" successfully!\");\n setEditNotifOpen(true);\n setAddPropertyOpen(false);\n }\n else {\n if (response.status === 403) {\n setEditLoad(false);\n setSessionExpiredOpen(true);\n }\n else{\n var error = await response.text();\n console.error(\"Send to Simon: \" + error)\n setEditLoad(false);\n setEditNotifMessage(\"An error occured while adding \" + property.addresses[0].address);\n setEditNotifOpen(true);\n }\n }\n\n })\n } catch (error: unknown) {\n if(error instanceof Error)\n {\n console.error(\"Send to Simon: \" + error.message);\n }\n \n setEditLoad(false);\n \n setEditNotifMessage(\"An error occured while adding \" + property.addresses[0].address);\n setEditNotifOpen(true);\n\n }\n \n }\n else{\n setAddPropertyOpen(false);\n }\n\n }\n const openTaxData = (p: Property) =>{\n setTaxProperty(p);\n setTaxDataOpen(true);\n }\n\n const handleCloseTaxData = () =>{\n setTaxProperty({} as Property);\n setTaxDataOpen(false);\n }\n return (\n
\n \n \n \n
\n \n \n \n
\n {selectedTab === 0 && \n Neighborhoods\n \n {neighborhoods.length !== 0 ? \n {neighborhoods.map((n, i) => {\n return (\n \n \n }\n IconButtonProps={{ style: { marginRight: \"70%\" } }}\n aria-controls=\"panel1a-content\"\n id=\"panel1a-header\"\n >\n {n.name}\n\n \n \n \n \n {allProperties.length > 0 && allProperties.map((p, j) => {\n if (p.neighborhoodId === n.internalId) {\n var adds = \"\";\n p.addresses.forEach((a, k) => {\n adds += a.address + \", \" + a.city + \", \" + a.state + \" \" + a.zip;\n if (k !== p.addresses.length - 1) {\n adds += \" - \";\n }\n });\n return (\n \n \n \n )\n }\n else {\n return null;\n }\n\n })}\n \n \n \n \n )\n })}\n :
}\n
}\n {selectedTab === 1 && \n \n \n \n \n Group\n Type\n Question\n Max Score\n \n \n \n \n {allQuestions.map((q, i) => {\n if (q.parentQuestionId != null) {\n return (\n p.internalId === q.parentQuestionId)[0].description} answers={allAnswers.filter(a => a.questionId === q.internalId)} />\n )\n }\n else {\n return null\n }\n })}\n \n
\n
}\n {selectedTab === 2 && \n Tax Data\n {neighborhoods.length !== 0 ? \n {neighborhoods.map((n, i) => {\n return (\n \n \n }\n IconButtonProps={{ style: { marginRight: \"70%\" } }}\n aria-controls=\"panel1a-content\"\n id=\"panel1a-header\"\n >\n {n.name}\n\n \n \n \n {allProperties.length > 0 && allProperties.map((p, j) => {\n if (p.neighborhoodId === n.internalId && p.addresses[0].block !== 0) {\n var adds = \"\";\n p.addresses.forEach((a, k) => {\n adds += a.address + \", \" + a.city + \", \" + a.state + \" \" + a.zip;\n if (k !== p.addresses.length - 1) {\n adds += \" - \";\n }\n });\n return (\n \n \n \n )\n }\n else {\n return null;\n }\n\n })}\n \n \n \n \n )\n })}\n :
}\n
}\n \n \n {addPropertyOpen === true && }\n\n {\n setEditNotifOpen(false);\n }}\n anchorOrigin={{ vertical: 'top', horizontal: 'center' }}>\n {\n setEditNotifOpen(false);\n }} variant=\"filled\" severity={editNotifMessage.includes(\"successfully!\") ? \"success\" : \"error\"}>\n {editNotifMessage}\n \n \n \n \n
\n );\n}\n\nconst mapStateToProps = (state: any) => ({\n userState: state.userState\n\n});\nconst mapDispatchToProps = (dispatch: any) => ({\n refreshSession: () => dispatch(refreshSession())\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(AdminDashboard)\n","import React, { ChangeEvent, useState } from 'react';\nimport { createStyles, makeStyles, Theme } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport { IconButton, InputAdornment, TextField } from '@material-ui/core';\nimport SearchIcon from '@material-ui/icons/Search';\nimport { useHistory } from 'react-router-dom'\nconst queryString = require('query-string');\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n flexGrow: 1,\n backgroundImage: \"url(home_background_mobile.jpg)\",\n backgroundRepeat: \"no-repeat\",\n backgroundSize: \"cover\"\n },\n menuButton: {\n marginRight: theme.spacing(2),\n },\n title: {\n flexGrow: 1,\n },\n input: {\n backgroundColor: \"white\",\n '& .MuiOutlinedInput-adornedEnd':{\n paddingRight: \"0px\"\n },\n '& label.Mui-focused': {\n color: '#0404fc',\n borderWidth: \"3px\"\n },\n '& .MuiInput-underline:after': {\n borderBottomColor: '#0404fc',\n borderWidth: \"3px\"\n },\n '& .MuiOutlinedInput-root': {\n '& fieldset': {\n borderColor: '#0404fc',\n borderWidth: \"3px\"\n },\n '&:hover fieldset': {\n borderColor: '#0404fc',\n borderWidth: \"3px\"\n },\n '&.Mui-focused fieldset': {\n borderColor: '#0404fc',\n borderWidth: \"3px\"\n },\n },\n }\n }),\n);\n\nexport default function HomeMobile() {\n const classes = useStyles();\n const [searchTerm, setSearchTerm] = useState(\"\");\n let history = useHistory();\n\n const handleChangeSearchTerm = (event: ChangeEvent) => {\n setSearchTerm(event.target.value);\n }\n\n const searchPropertyList = () =>{\n var url = \"/properties?\";\n var query = {\n search: searchTerm\n }\n url += queryString.stringify(query, {skipNull: true})\n history.push(url) \n }\n\n return (\n
\n 330 ? \"h3\" : \"h4\"}>New York City\n 330 ? \"h5\" : \"h6\"}>Commercial Real Estate Research\n\n
{\n e.preventDefault();\n searchPropertyList();\n }}>\n Find a Parslii Score\n \n }}\n />\n \n\n
\n );\n}\n","import React from 'react';\nimport { makeStyles, Theme } from '@material-ui/core/styles';\nimport { Button, Typography } from '@material-ui/core';\nimport { connect } from 'react-redux';\nimport { signOut } from '../Actions/thunks';\n\nconst useStyles = makeStyles((theme: Theme) => ({\n appBar: {\n top: \"auto\",\n bottom: 0,\n position: \"relative\",\n // backgroundColor: \"#326b9d\",\n padding: \"0 0px 12px!important\",\n height: \"17vh\",\n backgroundColor: \"#0404fc\",\n placeContent: \"center\"\n },\n dividerRoot: {\n backgroundColor: \"black\"\n }\n}));\n\nfunction MobileFooter(props: any) {\n const classes = useStyles();\n\nconsole.log(window.location);\n return (\n
\n {window.location.pathname !== \"/properties\" && }\n
\n Please see our full Terms of Use.\n \n\n
\n\n
\n );\n}\nconst mapStateToProps = (state: any) => ({\n userState: state.userState\n});\nconst mapDispatchToProps = (dispatch: any) => ({\n signOut: () => dispatch(signOut()),\n});\nexport default connect(mapStateToProps, mapDispatchToProps)(MobileFooter);","import React, { ChangeEvent, useEffect, useRef, useState } from 'react';\nimport { createStyles, makeStyles, Theme } from '@material-ui/core/styles';\nimport { Typography, List, ListItem, Button, TextField, InputAdornment, IconButton, Slide, Paper, setRef } from '@material-ui/core';\nimport { Property } from '../Models/Property';\nimport { baseEndpoint } from '../App';\nimport { Neighborhood } from '../Models/Neighborhood';\nimport SearchIcon from '@material-ui/icons/Search';\nimport ClearIcon from '@material-ui/icons/Clear';\nimport ArrowBackIcon from '@material-ui/icons/ArrowBack';\nimport { ToggleButton, ToggleButtonGroup } from '@material-ui/lab';\nimport { useHistory } from 'react-router-dom';\nimport { CircularProgress } from '@material-ui/core';\nconst queryString = require('query-string');\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n flexGrow: 1,\n marginTop: \"10px\",\n display: \"flex\",\n },\n menuButton: {\n marginRight: theme.spacing(2),\n },\n title: {\n flexGrow: 1,\n },\n input: {\n backgroundColor: \"white\",\n '& label.Mui-focused': {\n color: '#0404fc',\n borderWidth: \"3px\"\n },\n '& .MuiInput-underline:after': {\n borderBottomColor: '#0404fc',\n borderWidth: \"3px\"\n },\n '& .MuiOutlinedInput-root': {\n '& fieldset': {\n borderColor: '#0404fc',\n borderWidth: \"3px\"\n },\n '&:hover fieldset': {\n borderColor: '#0404fc',\n borderWidth: \"3px\"\n },\n '&.Mui-focused fieldset': {\n borderColor: '#0404fc',\n borderWidth: \"3px\"\n },\n },\n },\n toggleActive: {\n backgroundColor: \"white\",\n color: \"black\"\n },\n toggleDisabled: {\n backgroundColor: \"#0404fc!important\",\n color: \"white!important\"\n }\n }),\n);\n\nexport const loadMapApi = () => {\n const mapsUrl = \"https://maps.googleapis.com/maps/api/js?key=AIzaSyBJ8YqLm8Q0vyLA74cV2TUvVqNM-o_NAoQ&libraries=places&languages=no®ion=NO&v=quarterly\"\n const scripts = document.getElementsByTagName('script');\n for (let i = 0; i < scripts.length; i++) {\n if (scripts[i].src.indexOf(mapsUrl) === 0) {\n return scripts[i];\n }\n }\n\n const googleMapsScript = document.createElement('script');\n googleMapsScript.src = mapsUrl;\n googleMapsScript.async = true;\n googleMapsScript.defer = true;\n window.document.body.appendChild(googleMapsScript);\n\n return googleMapsScript;\n}\n\n\ntype GoogleLatLng = google.maps.LatLng;\ntype GoogleMap = google.maps.Map;\n\nexport default function PropertyListMobile(props: any) {\n const classes = useStyles();\n const [scriptLoaded, setScriptLoaded] = useState(false);\n const ref = useRef(null);\n const [markers, setMarkers] = useState();\n const [map, setMap] = useState();\n const [allProperties, setAllProperties] = useState([] as Property[]);\n const [searchedProperties, setSearchedProperties] = useState([] as Property[])\n const [shownProperties, setShownProperties] = useState([] as Property[]);\n const [neighborhoods, setNeighborhoods] = useState([] as Neighborhood[]);\n const [searchTerm, setSearchTerm] = useState(\"\");\n const [currentTerm, setCurrentTerm] = useState(\"\");\n const [selectedNeighborhood, setSelectedNeighborhood] = useState({ id: \"-1\" } as unknown as Neighborhood)\n const [viewType, setViewType] = useState<\"list\" | \"map\">(\"list\");\n const [neighborhoodLoading, setNeighborhoodLoading] = useState(false);\n let history = useHistory();\n\n\n useEffect(() => {\n\n if (!map && viewType === \"map\") {\n if (scriptLoaded === false) {\n const googleMapScript = loadMapApi();\n googleMapScript.addEventListener('load', function () {\n setScriptLoaded(true);\n initMap(new google.maps.LatLng(Number(selectedNeighborhood.latCenter), Number(selectedNeighborhood.lngCenter)))\n });\n }\n else {\n initMap(new google.maps.LatLng(Number(selectedNeighborhood.latCenter), Number(selectedNeighborhood.lngCenter)))\n }\n\n }\n else if (shownProperties.length > 0 && neighborhoods.length > 0 && !markers && viewType === \"map\") {\n createMarkers(shownProperties);\n }\n if (viewType === \"list\") {\n setRef(ref, null);\n setMap(undefined);\n setMarkers(undefined)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [map, allProperties, shownProperties, neighborhoods, selectedNeighborhood, viewType]);\n useEffect(() => {\n if (neighborhoods.length === 0) {\n if (window.location.search !== \"\") {\n var term = queryString.parse(window.location.search).search\n setCurrentTerm(term)\n setSearchTerm(term)\n fetchPropertiesBySearch(term);\n }\n\n fetchNeighborhoods();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [props])\n\n const initMap = (address: GoogleLatLng) => {\n if (ref.current) {\n setMap(\n new google.maps.Map(ref.current, {\n zoom: 12,\n center: address,\n mapTypeControl: false,\n streetViewControl: false,\n rotateControl: false,\n scaleControl: true,\n fullscreenControl: false,\n panControl: false,\n zoomControl: true,\n gestureHandling: 'greedy',\n mapTypeId: google.maps.MapTypeId.ROADMAP,\n draggableCursor: 'pointer',\n styles: [\n {\n featureType: \"poi\",\n stylers: [\n { visibility: \"off\" }\n ]\n },\n {\n featureType: \"transit\",\n stylers: [{ visibility: \"off\" }],\n },\n ]\n })\n )\n }\n }\n\n\n async function fetchPropertiesByNeighborhood(n: Neighborhood) {\n try {\n setSelectedNeighborhood(n);\n await fetch(baseEndpoint + 'Properties/neighborhood/' + n.internalId).then(async (response) => {\n if (response.ok) {\n var r = await response.json() as Property[];\n setAllProperties(r);\n setShownProperties(r);\n }\n })\n }\n catch (ex) {\n\n }\n }\n\n async function fetchPropertiesBySearch(term: string) {\n try {\n await fetch(baseEndpoint + 'Properties/search/' + term).then(async (response) => {\n if (response.ok) {\n var r = await response.json() as Property[];\n setSearchedProperties(r);\n }\n })\n }\n catch (ex) {\n\n }\n }\n\n function createMarkers(proper: Property[]) {\n var mark = [] as any[]\n if (!markers) {\n mark = [] as any[]\n }\n proper.forEach(p => {\n var latLng = { lat: p.addresses[0].lat, lng: p.addresses[0].lng }\n var add = p.addresses[0].address + \" \" + p.addresses[0].city + \", \" + p.addresses[0].state + \" \" + p.addresses[0].zip;\n var m = new google.maps.Marker({\n position: latLng,\n icon: 'green-pin.png',\n label: {\n text: (Math.round(p.calcScore)).toString(),\n color: '#0404fc',\n fontSize: \"9px\",\n fontWeight: \"bold\"\n },\n title: add,\n })\n m.addListener('click', () => {\n history.push('/property/' + p.addresses[0].internalId.toString())\n })\n\n\n p.addresses.forEach(a => {\n\n var elem = document.getElementById(a.internalId.toString());\n if (!!elem) {\n elem.onmouseover = function () {\n m.setIcon('blue-pin.png');\n m.setLabel({\n text: (Math.round(p.calcScore)).toString(),\n color: '#17d703',\n fontSize: \"10px\",\n fontWeight: \"bold\"\n })\n m.setZIndex(100);\n }\n elem.onmouseleave = function () {\n m.setIcon('green-pin.png');\n m.setLabel({\n text: (Math.round(p.calcScore)).toString(),\n color: '#0404fc',\n fontSize: \"9px\",\n fontWeight: \"bold\"\n })\n m.setZIndex(0);\n }\n }\n })\n\n m.setMap(map as GoogleMap);\n mark.push(m);\n });\n setMarkers(mark);\n }\n\n async function fetchNeighborhoods() {\n setNeighborhoodLoading(true);\n try {\n await fetch(baseEndpoint + 'neighborhoods').then(async (response) => {\n if (response.ok) {\n var r = await response.json() as Neighborhood[];\n setNeighborhoods(r);\n setNeighborhoodLoading(false);\n }\n })\n }\n catch (ex) {\n\n }\n }\n\n const handleChangeSearchTerm = (event: ChangeEvent) => {\n setSearchTerm(event.target.value);\n }\n\n const search = () => {\n var url = \"/properties?\";\n var query = {\n search: searchTerm\n }\n url += queryString.stringify(query, { skipNull: true })\n history.push(url)\n }\n\n const clear = () => {\n setSearchTerm(\"\");\n history.push(\"/properties\")\n }\n\n const handleChangeViewType = (event: React.MouseEvent, type: string) => {\n if (type != null) {\n setViewType(type as \"list\" | \"map\");\n }\n\n };\n console.log(window.location)\n return (\n
\n
\n
\n
\n {selectedNeighborhood.id === \"-1\" &&
\n
{\n search();\n e.preventDefault();\n }} style={{ marginTop: \"10px\" }}>\n ,\n endAdornment: searchTerm !== \"\" ? : null\n }}\n />\n \n {(currentTerm === \"\" || neighborhoods.filter(n => n.name.toUpperCase().includes(currentTerm.toUpperCase())).length !== 0) && Select Neighborhood:}\n {neighborhoodLoading === false ? \n {(currentTerm === \"\" || neighborhoods.filter(n => n.name.toUpperCase().includes(currentTerm.toUpperCase())).length !== 0) && \n { neighborhoods.map((n, i) => {\n if (currentTerm === \"\" || n.name.toUpperCase().includes(currentTerm.toUpperCase())) {\n return (\n \n )\n }\n else {\n return null\n }\n\n })}\n }\n {currentTerm !== \"\" && searchedProperties.length !== 0 &&
\n Properties:\n \n {searchedProperties.map((p, i) => {\n return (p.addresses.map((a, j) => {\n return (\n { history.push('/property/' + a.internalId) }} style={{ display: \"flex\", width: \"100%\" }} elevation={3}>\n
\n {a.address}\n
\n\n \"leaf\"\n {(Math.round(p.calcScore)).toString()}\n
\n
\n \"Not\n
\n
)\n }))\n\n })}\n
\n
}\n
:\n
\n }\n\n
\n
}\n {selectedNeighborhood.id !== \"-1\" && \n
\n
\n {\n setSelectedNeighborhood({ id: \"-1\" } as Neighborhood)\n setViewType(\"list\");\n }}>\n {selectedNeighborhood.name}:\n
\n {viewType === \"list\" &&
\n\n \n {shownProperties.map((p, i) => {\n return (p.addresses.map((a, j) => {\n return (\n { history.push('/property/' + a.internalId) }} style={{ display: \"flex\", width: \"100%\" }} elevation={3}>\n
\n {a.address}\n
\n\n \"leaf\"\n {(Math.round(p.calcScore)).toString()}\n
\n
\n \"Not\n
\n
)\n }))\n\n })}\n
\n
}\n \n\n
\n {scriptLoaded && (\n
\n )}\n\n
\n
\n\n \n \n \n List\n \n \n Map\n \n \n \n
\n
}\n
\n\n
\n\n
\n
\n );\n}","import React, { useEffect } from 'react';\nimport { createStyles, makeStyles, Theme } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport Button from '@material-ui/core/Button';\nimport { FormControl, InputLabel, MenuItem, Select, TextField, Snackbar } from '@material-ui/core';\nimport { useState } from 'react';\nimport { baseEndpoint } from '../App';\nimport { connect } from 'react-redux';\nimport { Alert } from '@material-ui/lab';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n flexGrow: 1,\n marginTop: \"10px\",\n display: \"block\"\n },\n menuButton: {\n marginRight: theme.spacing(2),\n },\n title: {\n flexGrow: 1,\n },\n input: {\n backgroundColor: \"white\",\n '& label.Mui-focused': {\n color: '#0404fc',\n borderWidth: \"3px\",\n backgroundColor: \"white\"\n },\n '& .MuiInputLabel-outlined': {\n backgroundColor: \"white\",\n paddingRight: \"10px\",\n fontSize: \"0.85em\",\n transform: \"translate(14px, 13px) scale(1)\"\n },\n '& .MuiInputLabel-outlined.MuiInputLabel-shrink': {\n transform: \"translate(14px, -6px) scale(0.75)\"\n },\n '& .MuiOutlinedInput-input': {\n paddingTop: \"10px\",\n paddingBottom: \"10px\",\n fontSize: \"0.85em\"\n },\n '& .MuiOutlinedInput-root': {\n '& fieldset': {\n borderColor: '#0404fc',\n borderWidth: \"3px\"\n },\n '&:hover fieldset': {\n borderColor: '#0404fc',\n borderWidth: \"3px\"\n },\n '&.Mui-focused fieldset': {\n borderColor: '#0404fc',\n borderWidth: \"3px\"\n },\n },\n },\n inputError: {\n backgroundColor: \"white\",\n '& label.Mui-focused': {\n borderWidth: \"3px\"\n },\n '& .MuiInput-underline:after': {\n borderWidth: \"3px\"\n },\n '& .MuiInputLabel-outlined': {\n backgroundColor: \"white\",\n paddingRight: \"10px\",\n transform: \"translate(14px, 13px) scale(1)\"\n },\n '& .MuiInputLabel-outlined.MuiInputLabel-shrink': {\n transform: \"translate(14px, -6px) scale(0.75)\"\n },\n '& .MuiOutlinedInput-input': {\n paddingTop: \"12px\",\n paddingBottom: \"12px\"\n },\n '& .MuiOutlinedInput-root': {\n '& fieldset': {\n borderWidth: \"3px\"\n },\n '&:hover fieldset': {\n borderWidth: \"3px\"\n },\n '&.Mui-focused fieldset': {\n borderWidth: \"3px\"\n },\n },\n }\n }),\n);\n\nfunction RequestPropertyMobile(props: any) {\n const classes = useStyles();\n const [firstName, setFirstName] = useState(\"\");\n const [firstNameError, setFirstNameError] = useState(false);\n const [lastName, setLastName] = useState(\"\");\n const [lastNameError, setLastNameError] = useState(false);\n const [company, setCompany] = useState(\"\");\n const [companyError, setCompanyError] = useState(false);\n const [category, setCategory] = useState(0);\n const [categoryError, setCategoryError] = useState(false);\n const [email, setEmail] = useState(\"\");\n const [emailError, setEmailError] = useState(\"\");\n const [address, setAddress] = useState(\"\");\n const [addressError, setAddressError] = useState(false);\n const [comments, setComments] = useState(\"\");\n const [zip, setZip] = useState(\"\");\n const [zipError, setZipError] = useState(\"\");\n const [requestAlertOpen, setRequestAlertOpen] = useState(false);\n const [alertMessage, setAlertMessage] = useState(\"\");\n\n useEffect(() => {\n if (props.userState.isAuth) {\n setFirstName(props.userState.user.firstName);\n setLastName(props.userState.user.lastName);\n setEmail(props.userState.user.emailAddress);\n if (props.userState.user.category !== 1) {\n setCategory(props.userState.user.category)\n }\n }\n else {\n setCategory(0)\n setFirstName(\"\");\n setLastName(\"\");\n setEmail(\"\");\n }\n }, [props])\n\n const handleChangeFirstName = (event: React.ChangeEvent) => {\n setFirstName(event.target.value);\n };\n\n const handleChangeLastName = (event: React.ChangeEvent) => {\n setLastName(event.target.value);\n };\n\n const handleChangeCompany = (event: React.ChangeEvent) => {\n setCompany(event.target.value);\n };\n\n const handleChangeCategory = (event: React.ChangeEvent<{ value: unknown }>) => {\n setCategory(event.target.value as number);\n };\n\n const handleChangeEmail = (event: React.ChangeEvent) => {\n setEmail(event.target.value);\n };\n\n const handleChangeAddress = (event: React.ChangeEvent) => {\n setAddress(event.target.value);\n };\n\n const handleChangeZip = (event: React.ChangeEvent) => {\n setZip(event.target.value);\n };\n\n const handleChangeComments = (event: React.ChangeEvent) => {\n setComments(event.target.value);\n };\n\n const handleSendRequest = async () => {\n var emailRegEx = new RegExp(/^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/); // eslint-disable-line\n var emailMatch = emailRegEx.test(email);\n if (firstName.trim() === \"\") {\n setFirstNameError(true);\n }\n else {\n setFirstNameError(false);\n }\n if (lastName.trim() === \"\") {\n setLastNameError(true);\n }\n else {\n setLastNameError(false);\n }\n if (category === 3 && company.trim() === \"\") {\n setCompanyError(true);\n }\n else {\n setCompanyError(false);\n }\n if (category === 0) {\n setCategoryError(true);\n }\n else {\n setCategoryError(false);\n }\n if (email.trim() === \"\") {\n setEmailError(\"**Email required\");\n }\n else if (emailMatch === false) {\n setEmailError(\"**Invalid email\")\n }\n else if (emailError !== \"\") {\n setEmailError(\"\");\n }\n if (address.trim() === \"\") {\n setAddressError(true);\n }\n else {\n setAddressError(false);\n }\n if (zip.trim() === \"\") {\n setZipError(\"**Property zip code is required\");\n }\n else if (isNaN(+zip) || zip.trim().length !== 5) {\n setZipError(\"**Invalid zip code\")\n }\n else {\n setZipError(\"\");\n }\n if (firstName.trim() !== \"\" && lastName.trim() !== \"\" && (category !== 3 || company.trim() !== \"\") && category !== 0 && email.trim() !== \"\" && emailMatch === true && address.trim() !== \"\" && zip.trim() !== \"\") {\n var requestOptions = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Response-Type': 'application/json',\n },\n body: JSON.stringify({ FirstName: firstName, LastName: lastName, EmailAddress: email, Address: address, Zip: zip, Company: company, Comments: comments, Category: category })\n }\n try {\n await fetch(baseEndpoint + \"properties/request\", requestOptions)\n .then(async response => {\n if (response.ok) {\n setAlertMessage(\"Thank you for your property request! We will get back to you soon!\");\n setRequestAlertOpen(true);\n }\n else {\n setAlertMessage(\"There was an error with your request! Please try again later!\");\n setRequestAlertOpen(true);\n }\n });\n }\n catch (error) {\n console.log(error);\n }\n }\n\n\n }\n\n const handleCloseRequestAlert = () => {\n setRequestAlertOpen(false);\n }\n\n return (\n
\n
\n \n Want to Know a Property's Score?\n \n \"Parslii\n
\n
\n Let us know!\n
\n\n
\n
\n \n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n Category *\n \n Tenant\n Broker\n Landlord\n \n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n\n
\n
\n \n \n {alertMessage}\n \n \n
\n );\n}\nconst mapStateToProps = (state: any) => ({\n userState: state.userState\n});\nexport default connect(mapStateToProps)(RequestPropertyMobile);","import { useEffect, useRef, useState } from 'react';\nimport { createStyles, makeStyles, Theme } from '@material-ui/core/styles';\nimport { Property } from '../Models/Property';\nimport { baseEndpoint } from '../App';\nimport { RouteComponentProps, useHistory } from 'react-router-dom';\nimport { Button, Typography } from '@material-ui/core';\nimport { loadMapApi } from '../PropertyList/PropertyList';\nimport { addToCart } from '../Actions/CartActions';\nimport { connect } from 'react-redux';\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n flexGrow: 1,\n marginTop: \"10px\",\n display: \"flex\"\n },\n menuButton: {\n marginRight: theme.spacing(2),\n },\n title: {\n flexGrow: 1,\n },\n input: {\n backgroundColor: \"white\",\n '& label.Mui-focused': {\n color: '#0404fc',\n borderWidth: \"3px\",\n backgroundColor: \"white\"\n },\n '& .MuiInputLabel-outlined': {\n backgroundColor: \"white\",\n paddingRight: \"10px\",\n transform: \"translate(14px, 13px) scale(1)\"\n },\n '& .MuiInputLabel-outlined.MuiInputLabel-shrink': {\n transform: \"translate(14px, -6px) scale(0.75)\"\n },\n '& .MuiOutlinedInput-input': {\n paddingTop: \"12px\",\n paddingBottom: \"12px\"\n },\n '& .MuiOutlinedInput-root': {\n '& fieldset': {\n borderColor: '#0404fc',\n borderWidth: \"3px\"\n },\n '&:hover fieldset': {\n borderColor: '#0404fc',\n borderWidth: \"3px\"\n },\n '&.Mui-focused fieldset': {\n borderColor: '#0404fc',\n borderWidth: \"3px\"\n },\n },\n },\n }),\n);\n\n\n\ninterface PropertyPagePropes {\n id: string,\n\n}\n\ninterface PropertyCartProps {\n cartState: any,\n addToCart: (property: Property) => string,\n userState: any\n}\n\ntype GoogleLatLng = google.maps.LatLng;\ntype GoogleMap = google.maps.Map;\n\n\nfunction PropertyPageMobile(props: RouteComponentProps & PropertyCartProps) {\n const classes = useStyles();\n const history = useHistory()\n const [addressId, setAddressId] = useState(-1);\n const [property, setProperty] = useState({} as Property);\n const [streetViewUrl, setStreetViewUrl] = useState(\"\");\n const [scriptLoaded, setScriptLoaded] = useState(false);\n const ref = useRef(null);\n const [marker, setMarker] = useState();\n const [map, setMap] = useState();\n const [heading, setHeading] = useState(\"-1\");\n const [lat, setLat] = useState(\"0\");\n const [lng, setLng] = useState(\"0\");\n\n useEffect(() => {\n\n if (property.id == null) {\n fetchProperty();\n }\n else if (!map) {\n const googleMapScript = loadMapApi();\n googleMapScript.addEventListener('load', function () {\n setScriptLoaded(true);\n initMap(new google.maps.LatLng(property.addresses[0].lat, property.addresses[0].lng))\n\n });\n }\n else if (map) {\n var m = marker;\n var add = property.addresses[0].address + \" \" + property.addresses[0].city + \", \" + property.addresses[0].state + \" \" + property.addresses[0].zip;\n var latLng = { lat: property.addresses[0].lat, lng: property.addresses[0].lng }\n m = new google.maps.Marker({\n position: latLng,\n icon: '../green-pin.png',\n title: add,\n })\n console.log(map);\n m.setMap(map as GoogleMap);\n setMarker(m);\n }\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [props.match.params.id, property, map]);\n\n const initMap = (address: GoogleLatLng) => {\n if (ref.current) {\n setMap(\n new google.maps.Map(ref.current, {\n zoom: 18,\n center: address,\n mapTypeControl: false,\n streetViewControl: false,\n rotateControl: false,\n scaleControl: true,\n fullscreenControl: false,\n panControl: false,\n zoomControl: true,\n gestureHandling: 'cooperative',\n mapTypeId: google.maps.MapTypeId.ROADMAP,\n draggableCursor: 'pointer',\n styles: [\n {\n featureType: \"poi\",\n stylers: [\n { visibility: \"off\" }\n ]\n },\n {\n featureType: \"transit\",\n stylers: [{ visibility: \"off\" }],\n },\n ]\n })\n )\n }\n }\n\n async function fetchProperty() {\n console.log(props.match.params.id)\n try {\n await fetch(baseEndpoint + 'Properties/address/' + props.match.params.id).then(async (response) => {\n if (response.ok) {\n var r = await response.json() as Property;\n setAddressId(Number(props.match.params.id));\n setProperty(r);\n if (property.id == null) {\n setHeading(r.addresses[0].heading.toString());\n setLat(r.addresses[0].lat.toString());\n setLng(r.addresses[0].lng.toString());\n }\n\n var url = \"https://maps.googleapis.com/maps/api/streetview?size=450x450&location=\" + (lat === \"0\" ? r.addresses[0].lat : lat) + \",\" + (lng === \"0\" ? r.addresses[0].lng : lng) + \"&source=outdoor&heading=\" + (heading === \"-1\" ? r.addresses[0].heading : heading) + \"&fov=90&&key=AIzaSyBJ8YqLm8Q0vyLA74cV2TUvVqNM-o_NAoQ\"\n setStreetViewUrl(url);\n }\n })\n }\n catch (ex) {\n\n }\n }\n\n\n const handleAddToCart = async () => {\n props.addToCart(property);\n history.push(\"/cart\");\n }\n\n\n\n\n return (\n
\n
\n {property.id != null &&
{property.addresses[0].address + \" \" + property.addresses[0].city}
}\n {property.id != null &&
\n {streetViewUrl !== \"\" && addressId > 0 && \"Not}\n
}\n
\n
\n
\n Parslii Score\n Parslii Score is a measure of a property's strengths and viability for supporting a successful business\n {property.id != null &&}\n
\n
\n\n \"leaf\"\n {(Math.round(property.calcScore)).toString()}\n
\n\n
\n\n {scriptLoaded && (\n
\n )}\n\n
\n
\n\n
\n );\n}\nconst mapStateToProps = (state: any) => ({\n cartState: state.cartState,\n userState: state.userState\n\n});\n\nconst mapDispatchToProps = (dispatch: any) => ({\n addToCart: (property: Property) => dispatch(addToCart(property)),\n});\nexport default connect(mapStateToProps, mapDispatchToProps)(PropertyPageMobile)","\nimport { Checkbox, createStyles, Dialog, DialogContent, DialogTitle, Link, makeStyles, TextField, Theme, Typography } from '@material-ui/core';\nimport {\n CreditCardInput, SquarePaymentsForm\n} from 'react-square-web-payments-sdk';\nimport { connect } from 'react-redux';\nimport { baseEndpoint } from '../App';\nimport React, { useEffect, useState } from 'react';\nimport TermsDialog from '../InfoPages/TermsDialog';\nimport { Alert } from '@material-ui/lab';\nimport { BETA_PRICE } from './Cart';\nconst config = require(\"../env.json\")\n\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n input: {\n backgroundColor: \"white\",\n '& label.Mui-focused': {\n color: '#0404fc',\n borderWidth: \"3px\"\n },\n '& .MuiInput-underline:after': {\n borderBottomColor: '#0404fc',\n borderWidth: \"3px\"\n },\n '& .MuiInputLabel-outlined': {\n backgroundColor: \"white\",\n paddingRight: \"10px\",\n transform: \"translate(14px, 13px) scale(1)\"\n },\n '& .MuiInputLabel-outlined.MuiInputLabel-shrink': {\n transform: \"translate(14px, -6px) scale(0.75)\"\n },\n '& .MuiOutlinedInput-input': {\n paddingTop: \"12px\",\n paddingBottom: \"12px\"\n },\n '& .MuiOutlinedInput-root': {\n '& fieldset': {\n borderColor: '#0404fc',\n borderWidth: \"3px\"\n },\n '&:hover fieldset': {\n borderColor: '#0404fc',\n borderWidth: \"3px\"\n },\n '&.Mui-focused fieldset': {\n borderColor: '#0404fc',\n borderWidth: \"3px\"\n },\n },\n },\n inputError: {\n backgroundColor: \"white\",\n '& label.Mui-focused': {\n borderWidth: \"3px\"\n },\n '& .MuiInput-underline:after': {\n borderWidth: \"3px\"\n },\n '& .MuiInputLabel-outlined': {\n backgroundColor: \"white\",\n paddingRight: \"10px\",\n transform: \"translate(14px, 13px) scale(1)\"\n },\n '& .MuiInputLabel-outlined.MuiInputLabel-shrink': {\n transform: \"translate(14px, -6px) scale(0.75)\"\n },\n '& .MuiOutlinedInput-input':{\n paddingTop: \"8px\",\n paddingBottom: \"8px\"\n },\n '& .MuiOutlinedInput-root': {\n '& fieldset': {\n borderWidth: \"3px\"\n },\n '&:hover fieldset': {\n borderWidth: \"3px\"\n },\n '&.Mui-focused fieldset': {\n borderWidth: \"3px\"\n },\n },\n }\n }),\n);\n\nexport interface BillingDialogProps {\n open: boolean,\n onClose: (value: any[]) => void,\n cartState: any,\n userState: any\n}\nfunction BillingDialogMobile(props: BillingDialogProps) {\n const { onClose, open } = props;\n const [firstName, setFirstName] = useState(\"\");\n const [firstNameError, setFirstNameError] = useState(false);\n const [lastName, setLastName] = useState(\"\");\n const [lastNameError, setLastNameError] = useState(false);\n const [address, setAddress] = useState(\"\");\n const [addressError, setAddressError] = useState(false);\n const [city, setCity] = useState(\"\");\n const [cityError, setCityError] = useState(false);\n const [state, setState] = useState(\"\");\n const [stateError, setStateError] = useState(\"\");\n const [email, setEmail] = useState(\"\");\n const [emailError, setEmailError] = useState(\"\");\n const [agreeToTerms, setAgreeToTerms] = useState(false);\n const [termsOpen, setTermsOpen] = useState(false);\n const [agreeError, setAgreeError] = useState(false);\n const [errorMessage, setErrorMessage] = useState(\"\");\n const classes = useStyles();\n\n const handleClose = () => {\n setFirstNameError(false);\n setLastNameError(false);\n setAddressError(false);\n setCityError(false);\n setStateError(\"\");\n setEmailError(\"\");\n setFirstName(\"\");\n setLastName(\"\");\n setAddress(\"\");\n setState(\"\");\n setCity(\"\");\n setEmail(\"\");\n setAgreeToTerms(false);\n setErrorMessage(\"\");\n onClose([] as any[]);\n\n };\n\n useEffect(() => {\n if (props.open && props.userState.isAuth) {\n setFirstName(props.userState.user.firstName);\n setLastName(props.userState.user.lastName);\n setEmail(props.userState.user.emailAddress);\n }\n }, [props.userState, props.open])\n\n const checkout = async (token: string, zip: string) => {\n try {\n setErrorMessage(\"\");\n var ids = [] as number[];\n props.cartState.items.forEach((c: any) => {\n ids.push(c.addresses[0].internalId);\n })\n var j = {\n sourceId: token,\n amount: (props.cartState.items.length * BETA_PRICE * 100).toString(),\n addresses: ids,\n email: email,\n billingAddress: {\n add: address,\n city: city,\n state: state,\n zip: zip\n }\n };\n var requestOptions = {\n method: 'POST',\n headers: {\n \"Authorization\": \"Bearer \" + props.userState.user.currentToken,\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(j)\n }\n await fetch(baseEndpoint + \"checkout/pay\", requestOptions).then(async response => {\n if (response.ok) {\n var r = await response.json() as any[];\n if (r[0].status === \"COMPLETED\") {\n setAgreeToTerms(false);\n setErrorMessage(\"\");\n onClose(r as any[]);\n }\n console.log(r);\n }\n else {\n var error = await response.text()\n if (error === \"Invalid session!\") {\n setErrorMessage(error + \" Try signing out and back in!\");\n }\n else if(error === \"HTTP Response Not OK\")\n {\n setErrorMessage(\"Invalid card entered please try again!\")\n }\n }\n })\n }\n catch (error: any) {\n if(error === \"HTTP Response Not OK\")\n {\n setErrorMessage(\"Invalid card entered please try again!\")\n }\n }\n\n }\n\n const handleChangeFirstName = (event: React.ChangeEvent) => {\n setFirstName(event.target.value)\n }\n\n const handleChangeLastName = (event: React.ChangeEvent) => {\n setLastName(event.target.value);\n }\n\n const handleChangeAddress = (event: React.ChangeEvent) => {\n setAddress(event.target.value);\n }\n\n const handleChangeCity = (event: React.ChangeEvent) => {\n setCity(event.target.value);\n }\n\n const handleChangeState = (event: React.ChangeEvent) => {\n setState(event.target.value.toUpperCase());\n }\n\n const handleChangeEmail = (event: React.ChangeEvent) => {\n setEmail(event.target.value);\n }\n\n const handleChangeAgreeToTerms = () => {\n setAgreeToTerms(!agreeToTerms);\n if (agreeToTerms === false && agreeError === true) {\n setAgreeError(false);\n }\n }\n\n const handleOpenTerms = () => {\n setTermsOpen(true);\n }\n\n const handleCloseTerms = () => {\n setTermsOpen(false);\n }\n return (\n \n Billing Info\n \n {errorMessage !== \"\" && {errorMessage}}\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n \n
\n
\n \n
\n
\n \n {agreeError === false ? \"I agree to the\" : **I agree to the} terms of use \n
\n
\n
\n {\n console.log(\"Here\");\n console.log(token);\n console.log(buyer);\n var stateRegEx = new RegExp('^((A[LKSZR])|(C[AOT])|(D[EC])|(F[ML])|(G[AU])|(HI)|(I[DLNA])|(K[SY])|(LA)|(M[EHDAINSOT])|(N[EVHJMYCD])|(MP)|(O[HKR])|(P[WAR])|(RI)|(S[CD])|(T[NX])|(UT)|(V[TIA])|(W[AVIY]))$');\n var emailRegEx = new RegExp(/^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/); // eslint-disable-line\n var stateMatch = stateRegEx.test(state);\n var emailMatch = emailRegEx.test(email);\n if (firstName.trim() === \"\") {\n setFirstNameError(true)\n }\n else if (firstNameError === true) {\n setFirstNameError(false);\n }\n if (lastName.trim() === \"\") {\n setLastNameError(true);\n }\n else if (lastNameError === true) {\n setLastNameError(false);\n }\n if (address.trim() === \"\") {\n setAddressError(true)\n }\n else if (addressError === true) {\n setAddressError(false)\n }\n if (city.trim() === \"\") {\n setCityError(true)\n }\n else if (cityError === true) {\n setCityError(false);\n }\n if (state === \"\") {\n setStateError(\"**State is required\");\n }\n else if (stateMatch === false) {\n setStateError(\"**Invalid state\");\n }\n else if (stateError !== \"\") {\n setStateError(\"\");\n }\n if (email.trim() === \"\") {\n setEmailError(\"**Email required\");\n }\n else if (emailMatch === false) {\n setEmailError(\"**Invalid email\")\n }\n else if (emailError !== \"\") {\n setEmailError(\"\");\n }\n if (agreeToTerms === false) {\n setAgreeError(true)\n }\n\n if (buyer && token.status === \"OK\" && firstName !== \"\" && lastName !== \"\" && address !== \"\" && city !== \"\" && state !== \"\" && stateMatch !== false && email !== \"\" && emailMatch !== false && agreeToTerms === true) {\n checkout(token.token, token.details.billing.postalCode);\n }\n }}\n /**\n * This function enable the Strong Customer Authentication (SCA) flow\n *\n * We strongly recommend use this function to verify the buyer and\n * reduce the chance of fraudulent transactions.\n */\n createVerificationDetails={() => ({\n amount: (props.cartState.items.length * BETA_PRICE).toString(),\n /* collected from the buyer */\n billingContact: {\n addressLines: [address],\n familyName: firstName,\n givenName: lastName,\n countryCode: 'US',\n city: city,\n state: state\n },\n currencyCode: 'USD',\n intent: 'CHARGE',\n })}\n /**\n * Identifies the location of the merchant that is taking the payment.\n * Obtained from the Square Application Dashboard - Locations tab.\n */\n locationId={config.REACT_APP_LOCATION_ID}\n > \n \n\n \n
\n
\n \n
\n );\n}\n\nconst mapStateToProps = (state: any) => ({\n cartState: state.cartState,\n userState: state.userState\n});\nexport default connect(mapStateToProps)(BillingDialogMobile);\n","import React, { useEffect, useState } from 'react';\nimport { createStyles, makeStyles, Theme } from '@material-ui/core/styles';\nimport { Backdrop, Button, Card, CardActions, CardContent, CircularProgress, IconButton, List, ListItem, Snackbar, Tooltip, Typography } from '@material-ui/core';\nimport { connect } from 'react-redux';\nimport { clearCart, removeFromCart } from '../Actions/CartActions';\nimport { Property } from '../Models/Property';\nimport HighlightOffIcon from '@material-ui/icons/HighlightOff';\nimport { baseEndpoint } from '../App';\nimport { CheckoutOptionDialog } from './CheckoutOptionDialog';\nimport FileSaver from 'file-saver';\nimport { Alert } from '@material-ui/lab';\nimport LoginDialog from '../Header/LoginDialog';\nimport {Color} from \"@material-ui/lab/Alert\"\nimport BillingDialogMobile from './BillingDialogMobile';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n flexGrow: 1,\n margin: \"15px\",\n textAlign: \"left\",\n height: \"65vh\"\n },\n menuButton: {\n marginRight: theme.spacing(2),\n },\n title: {\n flexGrow: 1,\n },\n backdrop: {\n zIndex: theme.zIndex.drawer + 1,\n color: '#fff',\n },\n }),\n);\nexport const PRICE = 150;\nexport const BETA_PRICE = 20;\nfunction CartMobile(props: any) {\n const classes = useStyles();\n const [billingOpen, setBillingOpen] = useState(false);\n const [checkoutOptionsOpen, setCheckoutOptionsOpen] = useState(false);\n const [downloadLoading, setDownloadLoading] = useState(false);\n const [downloadAlertOpen, setDownloadAlertOpen] = useState([]);\n const [loginOpen, setLoginOpen] = useState(false);\n const [checkoutAlertOpen, setCheckoutAlertOpen] = useState(false);\n const [checkoutAlert, setCheckoutAlert] = useState(\"\");\n const [alertSeverity, setAlertSeverity] = useState(\"success\");\n const [loadingEllipses, setLoadingEllipses] = React.useState(\" \");\n useEffect(() => {\n if (props.cartState.items > 0) {\n var o = [] as boolean[]\n props.cartState.items.forEach((c: any) => {\n o.push(false);\n })\n setDownloadAlertOpen(o);\n }\n if (props.userState.isAuth === true) {\n setLoginOpen(false);\n }\n }, [props]);\n\n useEffect(() =>{\n setTimeout(()=>{\n if(downloadLoading === true)\n {\n var count = loadingEllipses.split('.');\n console.log(count);\n if(count.length === 1)\n {\n setLoadingEllipses(\". \");\n }\n else if(count.length === 2){\n setLoadingEllipses(\".. \");\n }\n else if(count.length === 3)\n {\n setLoadingEllipses(\"...\");\n }\n else if(count.length === 4)\n {\n setLoadingEllipses(\" \");\n }\n \n }\n else{\n setLoadingEllipses(\" \");\n }\n }, 500)\n\n\n },[downloadLoading, loadingEllipses])\n\n const removeFromCart = (id: number) => {\n props.removeFromCart(id);\n }\n\n const checkout = () => {\n setBillingOpen(true);\n\n }\n const handleCheckoutOptionsOpen = () => {\n if (props.userState.isAuth === true) {\n checkout();\n }\n else {\n setCheckoutOptionsOpen(true);\n }\n\n }\n\n const handleCheckoutOptionsClose = (value: string) => {\n setCheckoutOptionsOpen(false);\n if (value === \"guest\") {\n checkout();\n }\n if (value === \"user\") {\n checkout();\n setLoginOpen(true);\n }\n }\n\n const downloadScoreReport = async (id: string, email: string, addressId: number, last: boolean) => {\n var requestOptions = {\n method: 'POST',\n headers: {\n \"Authorization\": \"Bearer \" + props.userState.user.currentToken,\n 'Content-Type': 'application/json',\n 'Response-Type': 'Blob',\n },\n body: JSON.stringify(email)\n }\n try {\n await fetch(baseEndpoint + \"properties/report/\" + id, requestOptions)\n .then(async response => {\n if (response.ok) {\n var p = props.cartState.items.filter((pr: any) => pr.addresses[0].internalId === addressId)[0];\n console.log(p);\n var address = p.addresses[0].address + \" \" + p.addresses[0].city + \", \" + p.addresses[0].state + \" \" + p.addresses[0].zip;\n //Create a Blob from the PDF Stream\n const file = new Blob([await response.blob()], { type: \"application/pdf\" });\n FileSaver.saveAs(file, address);\n if (last === true) {\n setDownloadLoading(false);\n props.clearCart();\n setAlertSeverity(\"success\");\n setCheckoutAlert(\"Property report download complete!\");\n setCheckoutAlertOpen(true);\n \n }\n var temp = Object.assign([], downloadAlertOpen) as boolean[];\n temp[props.cartState.items.findIndex((pr: any) => pr.addresses[0].internalId === id)] = true;\n setDownloadAlertOpen(temp);\n return\n }\n else {\n if (last === true) {\n var mess = await response.text();\n console.log(mess);\n setAlertSeverity(\"error\");\n setCheckoutAlert(\"Error: \"+ mess+\"\");\n setCheckoutAlertOpen(true);\n setDownloadLoading(false);\n }\n return;\n }\n\n })\n } catch (error) {\n console.log(error);\n if (last === true) {\n setDownloadLoading(false);\n }\n\n return\n }\n }\n\n\n const handleBillingClose = (value: any[]) => {\n console.log(value);\n if (value.length > 0) {\n setDownloadLoading(true);\n value.forEach((c: any, i: number) => {\n var last = i + 1 >= value.length\n downloadScoreReport(c.id, c.email, c.addressId, last);\n })\n }\n setBillingOpen(false);\n }\n\n const handleCloseDownloadAlert = (index: number) => {\n var temp = Object.assign([], downloadAlertOpen) as boolean[];\n temp[index] = false;\n setDownloadAlertOpen(temp);\n }\n\n const handleCloseLogin = () => {\n setLoginOpen(false);\n if (props.userState.isAuth === true) {\n checkout();\n }\n\n }\n\n const handleCloseAlert = () =>{\n setCheckoutAlertOpen(false);\n }\n return (\n
\n {downloadAlertOpen.length > 0 && downloadAlertOpen.map((o: boolean, i: number) => {\n var p = props.cartState.items[i];\n var address = p.addresses[0].address + \" \" + p.addresses[0].city + \", \" + p.addresses[0].state + \" \" + p.addresses[0].zip;\n return ( { handleCloseDownloadAlert(i) }}>\n { handleCloseDownloadAlert(i) }} severity=\"success\" style={{ width: '100%' }}>\n {address} download success!\n \n )\n })}\n
\n \n \n Score Report Shopping Cart\n {props.cartState != null && props.cartState.items.length > 0 && \n {props.cartState.items.map((p: Property, i: number) => {\n var address = p.addresses[0].address + \" \" + p.addresses[0].city + \", \" + p.addresses[0].state + \" \" + p.addresses[0].zip;\n return (\n \n
\n
\n
\n { removeFromCart(p.addresses[0].internalId) }} style={{ padding: \"5px\", color: \"#C71020\" }}>\n
\n
\"\"
{address}\n
\n
\n Score: {(Math.round(p.calcScore)).toString()} Neighborhood: {p.neighborhood.name}\n
\n
\n
\n )\n })}\n
}\n
\n\n {props.cartState && props.cartState.items.length > 0 && \n Total(beta): ${props.cartState.items.length * BETA_PRICE} \n Total: ${props.cartState.items.length * PRICE} \n
\n \n \n
\n\n
}\n
\n \n \n \n
\n \n { \"Please wait while we download your property report\" + (props.cartState.items.length > 1 ? \"s\" : \"\") + loadingEllipses}\n \n
\n
\n {props.userState.isAuth === false && }\n \n \n {checkoutAlert}\n \n \n
\n );\n}\nconst mapDispatchToProps = (dispatch: any) => ({\n removeFromCart: (id: number) => dispatch(removeFromCart(id)),\n clearCart: () => dispatch(clearCart())\n});\nconst mapStateToProps = (state: any) => ({\n cartState: state.cartState,\n userState: state.userState\n});\nexport default connect(mapStateToProps, mapDispatchToProps)(CartMobile);","import React from 'react';\nimport { createStyles, makeStyles, Theme } from '@material-ui/core/styles';\nimport { Paper, Typography } from '@material-ui/core';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n flexGrow: 1,\n margin: \"15px\",\n textAlign: \"left\"\n },\n menuButton: {\n marginRight: theme.spacing(2),\n },\n title: {\n flexGrow: 1,\n },\n }),\n);\n\nexport default function AboutPageMobile() {\n const classes = useStyles();\n\n return (\n
\n
\n \n About Us\n
\n What is Parslii?\n \n Parslii is a research and rating system for retail and restaurant commercial real estate properties.\n The Parslii system researches, analyzes, scores, and uncovers insights into properties with retail storefront spaces.\n Similar to buying a TV or major appliance, Parslii allows you to select several properties and compare all of their details side-by-side,\n in an effort to help you make a more informed decision about the space you choose for your business.\n
\n
\n Parslii does the research for you, compiling and analyzing over 60 different data points from dozens of sources,\n and then extracts insights from the data, so that the process of choosing a space is as transparent and objective as possible.\n
\n How does Parslii work?\n \n Parslii takes all of the data harvested about a particular building, feeds it through our analysis system,\n and translates that into a score. This Parslii Score, on a scale from 0 - 100, will give a general view of how that building ranks against other\n buildings in terms of its viability as a location for launching and sustaining a successful business.\n
\n
\n If a Parslii Score for a building seems within an acceptable range, you can purchase the full Parslii Score Reports for that, and any other buildings\n you are interested in, and directly compare the findings for each, in every category of analysis. This Score Report comparison will give you a much clearer,\n thorough, and objective understanding of the positive and negative aspects pertaining to the buildings, in order for you to make a decision based on factual data rather\n than on gut feeling or hearsay.\n
\n
\n
\n \n Buying Parslii Score Reports for several properties before my business makes its first dollar seems expensive. I know it takes money to make money,\n but I am trying to keep things as tight as possible. Is the expense of buying Score Reports worth it?\n \n \n We would have asked the same thing if Parslii was around when we were looking for commercial space!\n With investment money burning quickly, it never seemed like there was an extra few hundred dollars to spend.\n Besides, you think, “I can do the research myself!” But, after signing a lease, and a few months in, you realize\n that the clause about property taxes which you didn’t think much of (everybody has to pay taxes, right??), has come back to bite you.\n And the landlord is sending ginormous invoices. Then, after an eviction notice, tons of emotional stress, a year in court, and tens of\n thousands of dollars in attorney’s fees, you wish you would have better understood the situation you were getting yourself into back then,\n before you signed that faulty lease. Maybe you could have avoided this painful and costly trap. Suddenly the small initial expense of a\n Parslii Score Report, which would have alerted you to property tax red flags, seems like it would have been a wise investment.\n
\n
\n Our founder knows this regret very personally because he went through all of it himself.\n In 2015 he built and opened a restaurant in New York City, managing the entire process, from searching for commercial real estate,\n negotiating leases, and getting City permits, to dealing with contractors, landlord eviction notices, and lots of attorneys, by himself.\n He dealt with it all. And dealing with it meant he ended up learning the hard way, by researching issues himself, making educated guesses, and learning from mistakes.\n Of course some of those lessons ended up being very costly in both money and stress. One of the thoughts he kept coming back to was,\n “If only I would have known this sooner!!”\n He felt so strongly about this, and the need for tenants to be better informed and know what they are getting into before they take the plunge, that he wrote a book about his experience.\n
\n Burnt - A Trial By Fire Education In The Cruel World Of New York City Commercial Real Estate And Hospitality\n \"Book\n
\n \n The book is full of tips meant to help those with dreams of opening their own business, so that they can learn from his experience in commercial real estate,\n avoid the traps, pitfalls, and inevitable mistakes he made, and have a much easier and more successful go of it in general. The book also has a few chapters that are just plain crazy.\n Check it out!\n
\n
\n Of course the experiences detailed in the book of wading neck-deep into the murky waters of New York commercial real estate were also the inspiration\n for what would become Parslii. So his answer to the question of the upfront cost of Parslii Score Reports being money well spent is definitely “YES!”\n
\n
\n
\n \n \n
\n Could I just do the research by myself?\n \n All of the data that Parslii uses is publicly accessible so, sure, you could just do the research yourself.\n And maybe you are smart enough to know where to find it all and know how to make sense of it all. But many people don’t know where to find lots of important data.\n And many people don’t even know what they should be looking for. And many people, given the data, don’t know what insights they could be pulling from it.\n You probably aren’t one of those people. So go ahead.\n
\n
\n However, doing thorough research on a commercial property can take a significant amount of time.\n And many people, managing a growing business or working at trying to launch one, simply don’t have much time to spare.\n So Parslii can do the research work for you and save you lots of time. Maybe you are one of those people?\n
\n What if a building I am interested in does not have a Parslii Score?\n \n You can request a score! We are adding buildings and property scores all the time so we can certainly look\n into a property you are interested in! Just fill out the form on the Parslii ‘Property Score Request Form’ page with the\n address of the property that you are interested in, and submit. The Parslii team will do the analysis on that building and\n let you know what score it received (it will also now show up on the map). You can then decide if you would like to purchase the full Score Report for that property.\n \n Where does Parslii find its data?\n Parslii gathers its data for analysis from multiple publicly available sources.\n What is a Parslii Certification?\n \n While Parslii Scores are derived only from available data, Parslii will give owners the opportunity to\n certify data points about a building that might not otherwise be publicly available. They will also be able to certify that they will offer various\n concessions and/or lease language in term negotiations. Certifications are an opportunity for owners to make the lease negotiation process quicker, less costly, and more efficient.\n The Parslii Score for a given building will improve with each Certification that the owner provides.\n \n What is ESG and why does Parslii care about it?\n \n Businesses are rapidly growing in development of their Environmental, Social, and Governance (also known as ESG) practices.\n At the same time, investors and customers are increasingly focused on these issues as they choose where to spend their money.\n While people might think that many ESG factors seem as though they would not apply to real estate, in actuality ESG practices affect multiple\n areas of commercial real estate, from environmental concerns and building energy efficiency, to labor practices, equality in leasing, and social outreach to name a few. For example, in 2019 New York City enacted Local Law 97 which requires many buildings in the city to drastically reduce their carbon emissions starting in 2024. How building owners navigate these requirements will greatly affect the financial health of their buildings and their tenants through the length of their lease.\n
\n
\n In an effort to bring important ESG practices further into focus for the real estate industry,\n Parslii offers a platform for property owners to document their ESG milestones, initiatives,\n and projected plans. This parslii ESG verification program can be a vital tool for potential\n tenants, as well as investors, to make sure an owner’s ESG practices align with the values and\n outlook of not only their business but also the values of their customers.\n
\n
\n Parslii Property Reports will provide owners with an opportunity to tout their company’s ESG implementation track record and plans for compliance into the future.\n
\n What is the Parslii methodology?\n \n The Parslii system and analysis methodology is proprietary. However, we work very hard to make sure all data\n is as accurate, objective, and thorough as possible. And we are constantly updating it.\n
\n
\n The Parslii analysis system never directly solicits or publishes tenant reviews or opinions\n about a property or owner in order to influence a building’s Parslii Score. All Parslii Scores are\n derived from publicly available data and measurable information. Also, every building goes through the\n exact same analysis system so there is no bias for or against any property. The facts and analysis dictate the Score.\n
\n Can I use Parslii research in place of hiring a real estate attorney?\n \n No. Parslii research and Property Report insights ARE NOT legal advice. They are meant\n to augment and inform your legal approach to lease negotiations. Any decisions regarding leasing and lease\n negotiations should be made in conjunction with an experienced real estate attorney.\n \n How often does Parslii update its scores and research?\n \n Parslii is continually verifying and updating the data that it uses for its analysis. Parslii is also\n continually adding to and refining its analysis algorithm. So Parslii Scores may adjust from time to time.\n \n \n What if I see something on Parslii that I think is wrong? What if I have information about a building, a landlord,\n a location, etc. that few others may know and that I think might affect its Parslii Score or be important when considering that building for a lease?\n \n \n If you see something, say something! Please let us know! We want Parslii data to be as thorough and accurate as possible, \n so we want to see any mistakes corrected more than anyone. Submit a tip by using our ‘Contact’ form or by emailing us at info@parslii.com\n \n Are Parslii Scores and Score Report analysis available anywhere beyond New York City?\n \n Parslii launched in New York City and has been concentrating on refinement of our system and database growth here. As soon as we can, though, we will make Parlii Scores available in other cities. \n Please feel free to contact us at info@parslii.com and let us know what city’s commercial real estate scene you are interested in us tackling next.\n \n I am a commercial real estate broker. Can I use a good Parslii Score and the info on a full Score Report to help me lease a commercial retail space I am listing?\n \n A good Parslii Score can certainly help to get potential tenants interested in a space. We are creating a widget so that brokers can whitelabel a \n Parslii Score onto their listing for a space. Contact us at info@parslii.com to inquire about getting a white label Parslii Score for your listing.\n
\n
\n While the research and insight material published in a full Parslii Score Report is the property of Parslii and cannot be passed beyond the original purchaser, real estate brokers can subscribe to Parslii in order to share \n Parslii research information with potential tenants of a space that they list. Please contact us at info@parslii.com for more information.\n
\n I am a property owner. My buildings seem to have low Parslii Scores. What can I do?\n \n All Parslii scores for all buildings are based on the same set of data metrics. So a low score cannot be changed unless the underlying data changes in some way. However, we are launching a system of post-score Certifications that \n property owners can add to their properties in order to increase a building’s Parslii Score. Please contact us at info@parslii.com for more information about Parslii Owner Certifications.\n \n
\n
\n\n
\n );\n}\n\n","import { useEffect, useRef, useState } from 'react';\nimport { createStyles, makeStyles, Theme } from '@material-ui/core/styles';\nconst queryString = require('query-string');\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n flexGrow: 1,\n position: \"absolute\",\n backgroundColor: \"white\",\n zIndex: 999,\n height: \"90%\",\n width: \"100%\"\n },\n }),\n);\n\nexport const loadMapApi = () => {\n const mapsUrl = \"https://maps.googleapis.com/maps/api/js?key=AIzaSyBJ8YqLm8Q0vyLA74cV2TUvVqNM-o_NAoQ&libraries=places&languages=no®ion=NO&v=quarterly\"\n const scripts = document.getElementsByTagName('script');\n for (let i = 0; i < scripts.length; i++) {\n if (scripts[i].src.indexOf(mapsUrl) === 0) {\n return scripts[i];\n }\n }\n\n const googleMapsScript = document.createElement('script');\n googleMapsScript.src = mapsUrl;\n googleMapsScript.async = true;\n googleMapsScript.defer = true;\n window.document.body.appendChild(googleMapsScript);\n\n return googleMapsScript;\n}\n\n\ntype GoogleLatLng = google.maps.LatLng;\ntype GoogleMap = google.maps.Map;\nlet places: google.maps.places.PlacesService;\n\nexport default function MapPage(props: any) {\n const classes = useStyles();\n const [scriptLoaded, setScriptLoaded] = useState(false);\n const ref = useRef(null);\n const [map, setMap] = useState();\n const params = queryString.parse(props.location.search, { arrayFormat: 'index' })\n\n\n useEffect(() => {\n\n if (!map) {\n const googleMapScript = loadMapApi();\n googleMapScript.addEventListener('load', function () {\n setScriptLoaded(true);\n initMap(new google.maps.LatLng(params.lat, params.lng))\n\n });\n\n }\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [map]);\n\n const initMap = (address: GoogleLatLng) => {\n if (ref.current) {\n const transitLayer = new google.maps.TransitLayer();\n var m =\n new google.maps.Map(ref.current, {\n zoom: Number(params.zoom),\n center: address,\n mapTypeControl: false,\n streetViewControl: false,\n rotateControl: false,\n scaleControl: true,\n fullscreenControl: false,\n panControl: false,\n zoomControl: false,\n gestureHandling: 'cooperative',\n mapTypeId: google.maps.MapTypeId.ROADMAP,\n draggableCursor: 'pointer',\n styles: [\n {\n featureType: \"poi\",\n stylers: [\n { visibility: params.hotels && params.hotels === \"true\" ? \"off\" : \"on\" }\n ]\n },\n {\n featureType: \"transit\",\n elementType: \"labels.icon\",\n stylers: [{ visibility: (params.transitLayer && params.transitLayer === \"true\") ? \"on\" : \"off\" }],\n },\n ]\n })\n if (params.transitLayer && params.transitLayer === \"true\") {\n transitLayer.setMap(m)\n }\n else if (params.bikeLayer && params.bikeLayer === \"true\") {\n const bikeLayer = new google.maps.BicyclingLayer();\n bikeLayer.setMap(m);\n }\n else if (params.hotels && params.hotels === \"true\") {\n google.maps.event.addListener(m, 'bounds_changed', function () {\n places = new google.maps.places.PlacesService(m);\n search(m);\n });\n\n }\n else {\n setMap(m);\n }\n var latLng = { lat: Number(params.lat), lng: Number(params.lng) }\n new google.maps.Marker({\n position: latLng,\n icon: 'bullet-leaf.png',\n map: m\n });\n\n\n setMap(m);\n }\n }\n\n function search(ma: any) {\n console.log(ma.getBounds());\n const search = {\n bounds: ma.getBounds() as google.maps.LatLngBounds,\n types: [\"lodging\"],\n };\n\n places.nearbySearch(\n search,\n (\n results: google.maps.places.PlaceResult[] | null,\n status: google.maps.places.PlacesServiceStatus,\n pagination: google.maps.places.PlaceSearchPagination | null\n ) => {\n if (status === google.maps.places.PlacesServiceStatus.OK && results) {\n console.log(results);\n // Create a marker for each hotel found, and\n // assign a letter of the alphabetic to each marker icon.\n for (let i = 0; i < results.length; i++) {\n // Use marker animation to drop the icons incrementally on the map.\n let m = new google.maps.Marker({\n position: (results[i].geometry as google.maps.places.PlaceGeometry)\n .location,\n });\n // If the user clicks a hotel marker, show the details of that hotel\n // in an info window.\n // @ts-ignore TODO refactor to avoid storing on marker\n m.setMap(ma);\n }\n }\n }\n );\n }\n\n\n\n return (\n
\n
\n {scriptLoaded && (\n
\n )}\n
\n
\n );\n}","import { useState } from 'react';\nimport { createStyles, makeStyles, Theme } from '@material-ui/core/styles';\nimport { Chart } from 'react-chartjs-2';\nimport { baseEndpoint } from '../App';\nimport { Property } from '../Models/Property';\nimport { TableContainer, Paper, Table, TableHead, TableRow, TableCell, TableBody, Typography } from '@material-ui/core';\nconst queryString = require('query-string');\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n flexGrow: 1,\n position: \"absolute\",\n backgroundColor: \"white\",\n zIndex: 999,\n height: \"90%\",\n width: \"100%\",\n },\n menuButton: {\n marginRight: theme.spacing(2),\n },\n title: {\n flexGrow: 1,\n },\n }),\n);\n\nexport default function TaxChart(props: any) {\n const classes = useStyles();\n const [addressId, setAddressId] = useState();\n const [property, setProperty] = useState({} as Property);\n const [data, setData] = useState([] as any[]);\n const [taxRate, setTaxRate] = useState([] as any[]);\n Chart.defaults.maintainAspectRatio = false;\n var id = queryString.parse(props.location.search, { arrayFormat: 'index' }).id\n if (id && id !== addressId) {\n fetchProperty(id);\n setAddressId(id);\n }\n\n\n async function fetchProperty(id: number) {\n try {\n await fetch(baseEndpoint + 'properties/address/' + id).then(async (response) => {\n if (response.ok) {\n var r = await response.json() as Property;\n setProperty(r)\n fetchTaxData(r.addresses[0].block, r.addresses[0].lot, r.addresses[0].borough);\n getTaxRates();\n console.log(property)\n }\n });\n }\n catch (ex) {\n\n }\n }\n\n async function fetchTaxData(block: number, lot: number, borough: number)\n {\n try {\n await fetch('https://data.cityofnewyork.us/resource/yjxr-fw8i.json?block='+ block + '&lot='+ lot+ \"&boro=\" + borough).then(async (response) => {\n if (response.ok) {\n var r = await response.json() as any[];\n console.log(r);\n setData(r.sort((a: any,b: any) => Number(b.year.split('/')[0]) - Number(a.year.split('/')[0])));\n }\n });\n }\n catch (ex) {\n\n }\n }\n\n const getTaxRates = async () => {\n\n var requestOptions = {\n headers: {\n 'Content-Type': 'application/json',\n }\n }\n try {\n await fetch(\"https://data.cityofnewyork.us/resource/7zb8-7bpk.json\", requestOptions)\n .then(async result => {\n var r = await result.json();\n console.log(r);\n setTaxRate(r);\n })\n }\n catch (ex) {\n console.error(ex);\n }\n }\n\n return (\n
\n {data.length !== 0 && taxRate.length !== 0 && \n \n \n \n Year\n Bldg. Class\n Market Value\n Assessed Value\n Taxable\n Tax Rate\n Property Tax\n Change Rate\n \n \n \n {data.map((d, i) => {\n console.log(d.year.substring(2))\n var rateYear = taxRate.find(r => r.year === d.year.substring(2))\n var rate = \"\";\n if (d.taxclass.toString().includes('2')) {\n rate = rateYear.class_2;\n }\n else if (d.taxclass.toString().includes('4')) {\n rate = rateYear.class_4;\n }\n var deduct = d.extot2 ? d.extot2 : 0;\n var propTax = !isNaN(d.avtot2) ? Math.round((Number(rate) / 100) * (Number(d.avtot2) - deduct)) : Math.round((Number(rate) / 100) * (Number(d.avtot)- deduct))\n var change = 0;\n if (i < data.length - 1) {\n var oldRate;\n if (d.taxclass.toString().includes('2')) {\n oldRate = taxRate.find(r => r.year === data[i + 1].year.substring(2)).class_2;\n }\n else if (d.taxclass.toString().includes('4')) {\n oldRate = taxRate.find(r => r.year === data[i + 1].year.substring(2)).class_4;\n }\n var old = !isNaN(d.avtot2) ? Math.round((Number(oldRate) / 100) * Number(data[i + 1].avtot2)) : Math.round((Number(oldRate) / 100) * Number(data[i + 1].avtot))\n change = ((propTax - old) / propTax) * 100\n }\n return (\n \n {d.year}\n {d.bldgcl}\n {Number(d.fullval) === 0 ? \"\" : \"$\" + Number(d.fullval).toLocaleString('en-US')}\n {!isNaN(d.avtot2) ? \"$\" + Number(d.avtot).toLocaleString('en-US') : \"\"}\n {!isNaN(d.avtot2) ? \"$\" + Number(d.avtot2).toLocaleString('en-US') : (Number(d.avtot) === 0 ? \"\" : \"$\" + Number(d.avtot).toLocaleString('en-US'))}\n {(Math.round(Number(rate) * 1000)) / 1000}%\n {\"$\" + propTax.toLocaleString('en-US')}\n {isNaN(Math.round(change * 100) / 100) || Math.round(change * 100) / 100 === 0 ? \"\" : Math.round(change * 100) / 100 + \"%\"}\n \n )\n })}\n \n
\n
**Property tax history information taken from the New York City Department of Finance data sets may be incomplete, or differ slightly from actual tax bills.\n
\n
}\n
\n );\n}","import React from 'react';\nimport './App.css';\nimport Header from './Header/Header';\nimport Home from './Home/Home';\nimport Footer from './Footer/Footer';\nimport { Switch, Route, Redirect, useHistory } from 'react-router-dom';\nimport RequestProperty from './RequestProperty/RequestProperty';\nimport PropertyList from './PropertyList/PropertyList';\nimport PropertyPage from './PropertyPage/PropertyPage';\nimport PopularityChart from './Charts/PopularityChart';\nimport IncomeChart from './Charts/IncomeChart';\nimport PopDensityChart from './Charts/PopDensityChart';\nimport CourtCaseChart from './Charts/CourtCaseChart';\nimport AboutPage from './InfoPages/AboutPage';\nimport ContactUsPage from './InfoPages/ContactUsPage';\nimport Cart from './Cart/Cart';\nimport { connect } from 'react-redux';\nimport SignUp from './SignUp/SignUp';\nimport TermsPage from './InfoPages/TermsPage';\nimport AdminDashboard from './Dashboards/AdminDashboard';\nimport HomeMobile from './Home/HomeMobile';\nimport MobileFooter from './Footer/MobileFooter';\nimport PropertyListMobile from './PropertyList/PropertyListMobile';\nimport RequestPropertyMobile from './RequestProperty/RequestPropertyMobile';\nimport PropertyPageMobile from './PropertyPage/PropertyPageMobile';\nimport CartMobile from './Cart/CartMobile';\nimport AboutPageMobile from './InfoPages/AboutPageMobile';\nimport MapPage from './MapPage/MapPage';\nimport TaxChart from './Charts/TaxChart';\nconst config = require(\"./env.json\")\nexport const baseEndpoint = config.REACT_APP_API_URL + \"api/\";\n//export const baseEndpoint = \"https://localhost:44381/api/\";\nexport const isMobile = window.innerWidth <= 786;\nfunction App(props: any) {\n const isMobile = window.innerWidth <= 768;\n console.log(isMobile);\n const history = useHistory()\n return (\n\n
\n
\n {isMobile === false ?\n //Desktop\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 {props.userState.isAuth === false && (\n \n )}\n />}\n {props.userState.isAuth === true && props.userState.user.category === 1 && baseEndpoint.includes(\"dev\") && (\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 //Mobile\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 {props.userState.isAuth === false && (\n \n )}\n />}\n \n }\n {isMobile === false ?
: }\n
\n\n );\n}\nconst mapStateToProps = (state: any) => ({\n userState: state.userState,\n});\nexport default connect(\n mapStateToProps\n)(App);\n","import { ReportHandler } from 'web-vitals';\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import { CartActionType } from \"../Actions/CartActions\";\nimport { Property } from \"../Models/Property\";\n\nconst initCartState = {\n items: [] as Property[],\n\n}\n\nconst cartReducer = (state = initCartState, action: any) => {\n const { type, payload } = action;\n var newState = Object.assign({}, state);\n if (type === CartActionType.ADD_TO_CART) {\n\n if (newState.items.length === 0) {\n newState.items = [payload.property];\n }\n else {\n newState.items.push(payload.property);\n }\n return newState;\n }\n else if(type === CartActionType.REMOVE_FROM_CART)\n {\n newState.items = state.items.filter(p => p.addresses[0].internalId !== payload.id)\n return newState;\n }\n else if(type === CartActionType.CLEAR_CART)\n {\n newState.items = [] as Property[];\n return newState;\n }\n else {\n return state\n }\n\n}\n\n\n\nexport default cartReducer;","import { UserActionType } from \"../Actions/UserActions\";\nimport { User } from \"../Models/User\";\n\nconst initUserState = {\n isAuth: false,\n signupMessage: \"\",\n loginMessage: \"\",\n resetMessage: \"\",\n user: {} as User\n}\n\nconst userReducer = (state: any = initUserState, action: any) => {\n\n const { type, payload } = action;\n if (type === UserActionType.LOGIN) {\n\n state = {\n isAuth: true,\n user: payload.user,\n signupMessage: \"\",\n resetMessage: \"\",\n loginMessage: \"\",\n }\n return state;\n }\n else if (type === UserActionType.SIGN_OUT) {\n state = {\n isAuth: false,\n user: {},\n signupMessage: \"\",\n resetMessage: \"\",\n loginMessage: \"\",\n }\n return state;\n }\n else if (type === UserActionType.USER_SIGNUP_ERROR) {\n state = {\n isAuth: false,\n user: {},\n signupMessage: payload.message,\n resetMessage: \"\",\n loginMessage: \"\",\n }\n return state;\n }\n else if (type === UserActionType.RESET_PASSWORD_ERROR) {\n\n state = {\n isAuth: false,\n user: {},\n signupMessage: \"\",\n resetMessage: payload.message,\n loginMessage: \"\",\n }\n return state;\n }\n else if (type === UserActionType.USER_LOGIN_ERROR) {\n state = {\n isAuth: false,\n user: {},\n signupMessage: \"\",\n resetMessage: \"\",\n loginMessage: payload.message,\n }\n return state;\n }\n else {\n return state\n }\n}\n\nexport default userReducer;","import cartReducer from \"./Reducers/CartReducer\";\nimport storage from 'redux-persist/lib/storage';\nimport autoMergeLevel1 from 'redux-persist/lib/stateReconciler/autoMergeLevel1';\nimport { createStore, combineReducers, applyMiddleware } from 'redux';\nimport { persistReducer, persistStore } from 'redux-persist';\nimport userReducer from \"./Reducers/UserReducer\";\nimport thunk from \"redux-thunk\";\n\nconst reducers: any = { \n cartState: cartReducer,\n userState: userReducer\n};\n\nexport const persistConfig = {\n key: 'root',\n storage: storage,\n stateReconciler: autoMergeLevel1,\n}\n\nconst rootReducer: any = combineReducers(reducers);\nconst persistedReducer = persistReducer(persistConfig, rootReducer);\n\n\nexport const configureStore = () => \n createStore(\n persistedReducer, applyMiddleware(thunk)\n )\n\n export const store = configureStore();\nexport const persistor = persistStore(store) ;","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport reportWebVitals from './reportWebVitals';\nimport { BrowserRouter } from 'react-router-dom';\nimport { PersistGate } from 'redux-persist/integration/react';\nimport { Provider} from 'react-redux';\nimport { persistor, store } from './store';\n\n\nReactDOM.render(\n \n Loading...
} persistor={persistor}>\n \n \n \n \n \n, \n document.getElementById('root')\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"sourceRoot":""}