{"version":3,"sources":["components/api-authorization/ApiAuthorizationConstants.js","components/api-authorization/AuthorizeService.js","components/api-authorization/LoginMenu.js","components/NavMenu.tsx","components/Layout.tsx","components/Home.tsx","components/api-authorization/AuthorizeRoute.js","components/api-authorization/Login.js","components/api-authorization/Logout.js","components/api-authorization/ApiAuthorizationRoutes.js","components/Admin/RegisterConfirmation.tsx","components/Dropdowns/UserDropdown.tsx","components/Clients/TeamLeaderDialog.tsx","components/Clients/ClientTableRow.tsx","components/Clients/ClientTable.tsx","components/Clients/ClientList.tsx","components/Teams/TeamViewModel.tsx","components/Teams/TeamTableRow.tsx","components/Teams/TeamTable.tsx","components/Teams/TeamList.tsx","components/ViewModels/CampaignViewModel.tsx","components/Campaigns/CampaignPage/LeadListItem.tsx","components/Campaigns/CampaignPage/LeadList.tsx","components/Dropdowns/NoteTypeDropdown.tsx","components/Campaigns/CampaignPage/CreateNote.tsx","components/Campaigns/CampaignPage/Notes.tsx","components/Campaigns/CampaignPage/CreateStatusNote.tsx","components/Campaigns/CampaignPage/Status.tsx","components/Utilities/InfoEdit.tsx","components/Campaigns/CampaignPage/CampaignInfo.tsx","components/Campaigns/CampaignPage/WoodPecker/WoodpeckerNoInfo.tsx","components/Campaigns/CampaignPage/WoodPecker/WoodpeckerViewModel.tsx","components/Campaigns/CampaignPage/WoodPecker/GeneralInfo.tsx","components/Campaigns/CampaignPage/WoodPecker/Stats.tsx","components/Campaigns/CampaignPage/WoodPecker/EmailStats.tsx","components/Campaigns/CampaignPage/WoodPecker/WoodpeckerInfo.tsx","components/Campaigns/CampaignPage/WoodPecker/Emails.tsx","components/Campaigns/CampaignPage/Campaign.tsx","components/ViewModels/RegisterUserViewModel.tsx","components/Utilities/Alert.tsx","components/Admin/UpdateUser.tsx","components/Admin/RegisterUser.tsx","components/Admin/ManageUsers.tsx","components/Dropdowns/PackageDropdown.tsx","components/Admin/UpdatePackages.tsx","components/Admin/AdminDashboard.tsx","components/PowerBITest/PowerBI.tsx","components/ViewModels/ClientViewModel.tsx","components/Clients/ClientPage/CreateNote.tsx","components/Clients/ClientPage/Notes.tsx","components/Clients/ClientPage/ClientInfo.tsx","components/Clients/ClientPage/CampaignTableRow.tsx","components/Utilities/ResponsiveTable.tsx","components/Clients/ClientPage/CampaignTable.tsx","components/ViewModels/FileDataViewModel.ts","components/Clients/ClientPage/MultiFileInput.tsx","components/ViewModels/CreateFileViewModel.ts","components/Clients/ClientPage/UtilityMethods.tsx","components/Clients/ClientPage/Message.tsx","components/Clients/ClientPage/CreateMessage.tsx","components/Clients/ClientPage/Messages.tsx","components/Clients/ClientPage/CreateStatusNote.tsx","components/Clients/ClientPage/Status.tsx","components/Clients/ClientPage/Client.tsx","components/ViewModels/CustomerSatisfactionSurveyViewModel.ts","components/CustomerSatisfactionSurvey/CustomerSatisfactionSurvey.tsx","components/Profile/MultiFileInput.tsx","components/Profile/Profile.tsx","components/PowerBITest/SuperAdminPowerBI.tsx","components/Utilities/DatePicker.tsx","components/Reports/Woodpecker/EmailReportTableRow.tsx","components/Dropdowns/ClientFilterDropdown.tsx","components/Reports/Woodpecker/EmailReportTable.tsx","components/Reports/Woodpecker/EmailReportContainer.tsx","components/Dropdowns/CountryDropdown.tsx","components/Clients/CreateClient.tsx","components/EmailTemplate/EmailStats.tsx","components/EmailTemplate/LeadEmailTable.tsx","components/EmailTemplate/ViewModels/WoodpeckerViewModel.tsx","components/EmailTemplate/ViewModels/EmailStatsViewModel.tsx","components/EmailTemplate/StatEmailTemplate.tsx","App.tsx","index.tsx","../DenseTableCell.tsx"],"names":["ApplicationName","QueryParameterNames","LogoutActions","LoginActions","prefix","ApplicationPaths","DefaultLoginRedirectPath","ApiAuthorizationClientConfigurationUrl","ApiAuthorizationPrefix","Login","LoginFailed","LoginCallback","Register","Profile","LogOut","LoggedOut","LogOutCallback","IdentityRegisterPath","IdentityManagePath","AuthorizeService","_callbacks","_nextSubscriptionId","_user","_isAuthenticated","_popUpDisabled","a","this","getUser","user","profile","ensureUserManagerInitialized","userManager","console","log","expired","signinSilent","createArguments","silentUser","access_token","state","updateState","success","Error","signinPopup","popUpUser","message","error","signinRedirect","redirect","url","signinCallback","signoutPopup","undefined","signoutRedirect","signoutCallback","response","data","notifySubscribers","callback","push","subscription","subscriptionId","subscriptionIndex","map","element","index","found","filter","length","splice","i","useReplaceToNavigate","status","AuthenticationResultStatus","Fail","Success","Redirect","fetch","ok","json","settings","automaticSilentRenew","includeIdTokenInSilentRenew","userStore","WebStorageStateStore","UserManager","events","addUserSignedOut","removeUser","authService","LoginMenu","props","isAuthenticated","userName","_subscription","subscribe","populateState","unsubscribe","Promise","all","setState","name","profilePath","logoutPath","pathname","local","authenticatedView","registerPath","loginPath","anonymousView","link","React","forwardRef","ref","to","Button","color","component","Component","useStyles","makeStyles","theme","createStyles","root","display","titleImage","flexGrow","appBar","zIndex","drawer","backgroundColor","palette","primary","main","width","flexShrink","drawerPaper","miniDrawer","miniDrawerPaper","drawerContainer","overflow","drawerToggleMin","position","top","left","drawerToggleMax","content","padding","spacing","report","height","margin","icon","paddingLeft","avatar","secondary","contrastText","small","highlightOnHover","textDecoration","ListItemLink","show","className","renderLink","itemProps","ListItem","button","style","ListItemIcon","ListItemText","NavMenu","classes","role","setRole","setShow","setUserName","setName","getRole","getAccessToken","token","headers","then","text","CssBaseline","AppBar","Toolbar","alt","src","List","paddingTop","paddingBottom","Typography","variant","Avatar","Drawer","paper","Layout","Container","maxWidth","children","Home","AuthorizeRoute","ready","authenticated","authenticationChanged","populateAuthenticationState","redirectUrl","encodeURI","window","location","href","rest","render","action","login","getReturnUrl","processLoginCallback","URLSearchParams","search","get","redirectToProfile","redirectToRegister","Backdrop","backdrop","open","CircularProgress","returnUrl","signIn","result","navigateToReturnUrl","completeSignIn","fromQuery","startsWith","origin","redirectToApiAuthorizationPath","apiAuthorizationPath","replace","withStyles","Logout","isReady","history","logout","processLogoutCallback","signOut","completeSignOut","ApiAuthorizationRoutes","path","loginAction","logoutAction","RegisterConfirmation","useParams","userId","code","password","setPassword","confirmPassword","setConfirmPassword","setRedirect","createUser","method","body","JSON","stringify","ValidatorForm","addValidationRule","value","test","onSubmit","Grid","container","item","xs","Paper","fullWidth","label","type","validators","errorMessages","onChange","event","target","UserDropdown","setSearch","setvalue","handleChange","newValue","client","users","find","f","id","items","required","Autocomplete","options","inputValue","onInputChange","newInputValue","renderOption","p","option","MenuItem","marginRight","renderInput","params","placeholder","InputProps","startAdornment","InputAdornment","TextField","buttonProgress","marginTop","marginLeft","TeamLeaderDialog","teamLeader","setTeamLeader","submitting","setSubmitting","setError","onClose","close","submit","clientId","catch","Dialog","DialogTitle","DialogContent","DialogContentText","DialogActions","onClick","disabled","size","green","getContrastText","blue","amber","lightRed","red","grey","default","ClientTableRow","openTLeaderDialog","setDialogOpen","openWarningDialog","setWarningOpen","statuses","class","viewButton","openDialog","handleWarningClose","archiveClient","refresh","TableCell","roles","IconButton","statusClass","TableRow","clientName","clientType","Date","startDate","toLocaleDateString","Chip","align","textAlign","teamLeaders","autoFocus","ClientTable","setUsers","getData","clients","Table","TableHead","TableBody","table","minWidth","background","pagination","ClientList","setClients","filteredClients","setFilteredClients","loaded","setLoaded","setRoles","page","setPage","pageMax","setPageMax","initialise","filtered","toLowerCase","includes","Math","ceil","sub","createButton","list","justifyContent","alignItems","sm","LinearProgress","Pagination","count","showFirstButton","showLastButton","TeamViewModel","members","teamLeaderId","not","b","indexOf","intersection","TeamTableRow","openUserDialog","checked","setChecked","team","setTeamLeaderId","obj","setLeft","right","setRight","leftChecked","rightChecked","handleUserClose","deleteTeam","submitMembers","handleToggle","currentIndex","newChecked","customList","dense","labelId","Checkbox","tabIndex","disableRipple","inputProps","direction","concat","TeamTable","teams","TeamList","setTeams","dialog","newTeam","setNewTeam","handleClose","createTeam","CampaignViewModel","campaignHolderEmail","googleSheetLink","clientEmail","clientPhone","clientPartner","packageId","packageName","price","countryId","country","agreementLength","opportunities","executives","clientTeamLeaderId","clientTeamLeader","mainExecutiveId","mainExecutive","vpnNumber","woodPeckerId","CreateMessageViewModel","title","campaignId","CreateNoteViewModel","commonReason","noteTypeId","statusTo","CreatePackageViewModel","custom","marginBottom","wordBreak","heading","fontSize","typography","pxToRem","fontWeight","fontWeightRegular","LeadListItem","lead","Accordion","AccordionSummary","expandIcon","interested","Divider","AccordionDetails","timestamp","toLocaleString","companyName","phoneNumber","email","notes","LeadList","leads","setLeads","filteredLeads","setFilteredLeads","slice","Grow","in","timeout","l","NoteTypeDropdown","setList","CreateNote","note","setNote","saving","setSaving","serverError","clientNote","setClientNote","newNote","FormControlLabel","control","Switch","multiline","rows","whiteSpace","Notes","setNotes","setDialog","notesArray","split","author","subType","applicationContent","CreateStatusNote","loading","setLoading","reasons","setReasons","getReasons","from","commonReasons","m","statusGrid","darkRed","StatusListItem","Status","anchorEl","setAnchorEl","newStatus","setNew","setUser","adminStatuses","handleDialog","adminList","Fab","Menu","Boolean","InfoEdit","editing","setEditing","selectId","info","newInfo","setInfo","handleEdit","pastEdit","isNaN","valueAsNumber","save","onSave","min","max","infoList","select","date","LocalizationProvider","dateAdapter","AdapterDateFns","DatePicker","showToolbar","clearable","nullable","mask","inputFormat","showPassword","InputBase","readOnly","decorator","togglePassword","hasClipboard","onCopy","defaultProps","showButton","bottomSpacing","CampaignInfo","campaign","setCampaign","redirectToList","openWarning","setOpen","updateCampaignHolderEmail","updateGoogleSheetLink","disableCampaign","Skeleton","minHeight","flexDirection","WoodpeckerNoInfo","WoodpeckerViewModel","folder_name","from_name","gdpr_unsubscribe","created","per_day","from_email","bcc","cc","folder_id","stats","Stats","prospects","delivery","invalid","bounced","queue","sent","check","autoreplied","opened","optout","clicked","replied","maybe_later","not_interested","emails","emailsCurrentWeek","GeneralInfo","woodpeckerDetails","timezone","round","StyledTableCell","styled","tableCellClasses","head","common","black","white","StyledTableRow","hover","border","EmailStats","TableContainer","row","scope","number","step","emailSend","open_","csvButton","WoodpeckerInfo","getTime","getDay","setStartDate","getEndOfWeek","endDate","setEndDate","updateData","emailCurrentWeek","linkUrl","toString","csvHeaders","key","csvWeeklyData","csvTotalData","filename","locale","enLocale","maxDate","Emails","subject","dangerouslySetInnerHTML","__html","msg","topSpacing","dividerColour","Campaign","useLocation","exec","setExec","active","setActive","openExecDialog","openSurveyDialog","setSurveyDialogOpen","woodPeckerDetails","setWoodPeckerDetails","isActive","actualStartDate","setHours","isNullOrUndefined","agreementEnd","getWoodpeckerData","toISOString","updateMainExecutive","lg","RegisterUserViewModel","UpdateUserViewModel","Alert","elevation","UpdateUser","useHistory","changes","setChanges","showAlert","alert","setAlert","updating","setUpdating","userResponse","userData","reason","openAlert","severity","updateName","updateEmail","updateRole","gutterBottom","goBack","RegisterUser","creating","setCreating","ManageUsers","updateLink","enableUser","disableButton","PackageDropdown","UpdatePackages","toUpdate","setPackage","newPrice","setPrice","updatePackage","parseInt","pattern","AdminDashboard","Access","SetAccess","PowerBI","ClientViewModel","partner","contactName","contactEmail","contactPhone","campaigns","weeklyTargetOpportunities","renewalDate","CreateClientViewModel","ref_PackageId","ref_CountryId","ClientInfo","setClient","countries","setCountries","packages","setPackages","updateContactName","updatePartner","updateContactPhone","updateContactEmail","updateStartDate","toJSON","updateAgreement","updateRenewal","customPricing","customPackage","parseFloat","updateCountry","CampaignTableRow","scrollTable","overflowX","ResponsiveTable","stickyHeader","total","reduce","sum","CampaignTable","FileDataViewModel","assetId","dateAdded","fileName","fileType","MultiFileInput","addFile","fileData","file","clearFilesKey","e","setValue","removeFile","files","filesData","dataindex","fileTypes","fileNames","onDrop","currFile","newFileData","newFile","currFileData","getRootProps","getInputProps","isDragActive","fileInput","CreateFileViewModel","UtilityMethods","model","form","formKey","namespace","formData","FormData","Array","forEach","tempFormKey","File","append","convertModelToFormData","propertyName","hasOwnProperty","EditMessage","messId","mess","messageId","Message","newMessage","setMessage","deleteMessage","editMessage","handleEditing","AccordionActions","CreateMessage","Messages","messages","setMessages","currentTarget","Client","ClientId","openUploadDialog","setUploadOpen","setFileData","setFiles","fileList","setFileList","filesUpdating","setFilesUpdating","getFiles","deleteFile","filesList","textOverflow","Tooltip","encodeURIComponent","endsWith","substring","formdata","now","createFileViewModel","mode","cache","credentials","fileData2","CustomerSatisfactionSurveyViewModel","surveyId","question1Score","question1note","question2Score","question2note","question3Score","question3note","question4Score","question4note","CustomerSatisfactionSurvey","survey","setSurvey","submitted","setSubmitted","emptyFields","setEmptyFields","surveyValid","setSurveyValid","getSurvey","submitResults","handleChangeNumber","val","FormControl","RadioGroup","Radio","Snackbar","autoHideDuration","newUrl","source","document","getElementById","SuperAdminPowerBI","Datepicker","views","monthOnly","openTo","disableFuture","disablePast","EmailReportTableRow","campaignName","earliestRecord","latestRecord","openedPercentage","toFixed","ClientFilterDropdown","headCells","numeric","disablePadding","maxHeight","visuallyHidden","clip","EmailReportTable","tab","orderBy","setOrderBy","order","setOrder","d","setDate","getDate","today","month","setMonth","setData","clientFilter","setClientFilter","onTabChange","searchstartdate","moment","startOf","searchenddate","clone","add","endOf","createSortHandler","property","handleRequestSort","toDate","onDateChange","datepicker","csvData","package","headCell","sortDirection","TableSortLabel","colSpan","EmailReportContainer","setTab","Tabs","newTab","indicatorColor","textColor","Tab","CountryDropdown","CreateClient","setSuccess","nameFree","setNameFree","woodpeckerVM","reply","interestedCurrentWeek","maybe_laterCurrentWeek","DenseTableCell","LeadEmailTable","interestedTable","leadEmailVM","EmailStatsViewModel","woodpeckerViewModel","interestedLeadEmailViewModel","maybeLeadEmailViewModel","StatEmailTemplate","useState","emailStatsViewModel","setEmailStatsViewModel","toCopy","useRef","useEffect","Fragment","current","getSelection","removeAllRanges","range","createRange","selectNode","addRange","execCommand","createTheme","adaptV4Theme","App","StyledEngineProvider","injectFirst","ThemeProvider","responsiveFontSizes","exact","baseUrl","getElementsByTagName","getAttribute","rootElement","ReactDOM","basename"],"mappings":"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","file":"static/js/main.1d394d91.chunk.js","sourcesContent":["export const ApplicationName = 'CRMTool';\r\n\r\nexport const QueryParameterNames = {\r\n ReturnUrl: 'returnUrl',\r\n Message: 'message'\r\n};\r\n\r\nexport const LogoutActions = {\r\n LogoutCallback: 'logout-callback',\r\n Logout: 'logout',\r\n LoggedOut: 'logged-out'\r\n};\r\n\r\nexport const LoginActions = {\r\n Login: 'login',\r\n LoginCallback: 'login-callback',\r\n LoginFailed: 'login-failed',\r\n Profile: 'profile',\r\n Register: 'register'\r\n};\r\n\r\nconst prefix = '/authentication';\r\n\r\nexport const ApplicationPaths = {\r\n DefaultLoginRedirectPath: '/',\r\n ApiAuthorizationClientConfigurationUrl: `/_configuration/${ApplicationName}`,\r\n ApiAuthorizationPrefix: prefix,\r\n Login: `${prefix}/${LoginActions.Login}`,\r\n LoginFailed: `${prefix}/${LoginActions.LoginFailed}`,\r\n LoginCallback: `${prefix}/${LoginActions.LoginCallback}`,\r\n Register: `${prefix}/${LoginActions.Register}`,\r\n Profile: `${prefix}/${LoginActions.Profile}`,\r\n LogOut: `${prefix}/${LogoutActions.Logout}`,\r\n LoggedOut: `${prefix}/${LogoutActions.LoggedOut}`,\r\n LogOutCallback: `${prefix}/${LogoutActions.LogoutCallback}`,\r\n IdentityRegisterPath: '/Identity/Campaign/Register',\r\n IdentityManagePath: '/Identity/Campaign/Manage'\r\n};\r\n","import { UserManager, WebStorageStateStore } from 'oidc-client';\r\nimport { ApplicationPaths, ApplicationName } from './ApiAuthorizationConstants';\r\n\r\nexport class AuthorizeService {\r\n _callbacks = [];\r\n _nextSubscriptionId = 0;\r\n _user = null;\r\n _isAuthenticated = false;\r\n\r\n // By default pop ups are disabled because they don't work properly on Edge.\r\n // If you want to enable pop up authentication simply set this flag to false.\r\n _popUpDisabled = true;\r\n\r\n async isAuthenticated() {\r\n const user = await this.getUser();\r\n return !!user;\r\n }\r\n\r\n async getUser() {\r\n if (this._user && this._user.profile) {\r\n return this._user.profile;\r\n }\r\n\r\n try {\r\n await this.ensureUserManagerInitialized();\r\n const user = await this.userManager.getUser();\r\n return user && user.profile;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async getAccessToken() {\r\n await this.ensureUserManagerInitialized();\r\n const user = await this.userManager.getUser();\r\n\r\n if (user.expired) {\r\n try {\r\n //Attempt to sign in our user silently\r\n const silentUser = await this.userManager.signinSilent(this.createArguments())\r\n //Return refreshed access token\r\n return silentUser && silentUser.access_token\r\n } catch (err) {\r\n //Failed to sign in user silently\r\n //Sign out user or use other authentication method\r\n console.log('Token refresh error: ' + err);\r\n }\r\n }\r\n\r\n return user && user.access_token;\r\n }\r\n\r\n // We try to authenticate the user in three different ways:\r\n // 1) We try to see if we can authenticate the user silently. This happens\r\n // when the user is already logged in on the IdP and is done using a hidden iframe\r\n // on the client.\r\n // 2) We try to authenticate the user using a PopUp Window. This might fail if there is a\r\n // Pop-Up blocker or the user has disabled PopUps.\r\n // 3) If the two methods above fail, we redirect the browser to the IdP to perform a traditional\r\n // redirect flow.\r\n async signIn(state) {\r\n await this.ensureUserManagerInitialized();\r\n try {\r\n const silentUser = await this.userManager.signinSilent(this.createArguments());\r\n this.updateState(silentUser);\r\n return this.success(state);\r\n } catch (silentError) {\r\n // User might not be authenticated, fallback to popup authentication\r\n console.log(\"Silent authentication error: \", silentError);\r\n\r\n try {\r\n if (this._popUpDisabled) {\r\n throw new Error('Popup disabled. Change \\'AuthorizeService.js:AuthorizeService._popupDisabled\\' to false to enable it.')\r\n }\r\n\r\n const popUpUser = await this.userManager.signinPopup(this.createArguments());\r\n this.updateState(popUpUser);\r\n return this.success(state);\r\n } catch (popUpError) {\r\n if (popUpError.message === \"Popup window closed\") {\r\n // The user explicitly cancelled the login action by closing an opened popup.\r\n return this.error(\"The user closed the window.\");\r\n } else if (!this._popUpDisabled) {\r\n console.log(\"Popup authentication error: \", popUpError);\r\n }\r\n\r\n // PopUps might be blocked by the user, fallback to redirect\r\n try {\r\n await this.userManager.signinRedirect(this.createArguments(state));\r\n return this.redirect();\r\n } catch (redirectError) {\r\n console.log(\"Redirect authentication error: \", redirectError);\r\n return this.error(redirectError);\r\n }\r\n }\r\n }\r\n }\r\n\r\n async completeSignIn(url) {\r\n try {\r\n await this.ensureUserManagerInitialized();\r\n const user = await this.userManager.signinCallback(url);\r\n this.updateState(user);\r\n return this.success(user && user.state);\r\n } catch (error) {\r\n console.log('There was an error signing in: ', error);\r\n return this.error('There was an error signing in.');\r\n }\r\n }\r\n\r\n // We try to sign out the user in two different ways:\r\n // 1) We try to do a sign-out using a PopUp Window. This might fail if there is a\r\n // Pop-Up blocker or the user has disabled PopUps.\r\n // 2) If the method above fails, we redirect the browser to the IdP to perform a traditional\r\n // post logout redirect flow.\r\n async signOut(state) {\r\n await this.ensureUserManagerInitialized();\r\n try {\r\n if (this._popUpDisabled) {\r\n throw new Error('Popup disabled. Change \\'AuthorizeService.js:AuthorizeService._popupDisabled\\' to false to enable it.')\r\n }\r\n\r\n await this.userManager.signoutPopup(this.createArguments());\r\n this.updateState(undefined);\r\n return this.success(state);\r\n } catch (popupSignOutError) {\r\n console.log(\"Popup signout error: \", popupSignOutError);\r\n try {\r\n await this.userManager.signoutRedirect(this.createArguments(state));\r\n return this.redirect();\r\n } catch (redirectSignOutError) {\r\n console.log(\"Redirect signout error: \", redirectSignOutError);\r\n return this.error(redirectSignOutError);\r\n }\r\n }\r\n }\r\n\r\n async completeSignOut(url) {\r\n await this.ensureUserManagerInitialized();\r\n try {\r\n const response = await this.userManager.signoutCallback(url);\r\n this.updateState(null);\r\n return this.success(response && response.data);\r\n } catch (error) {\r\n console.log(`There was an error trying to log out '${error}'.`);\r\n return this.error(error);\r\n }\r\n }\r\n\r\n updateState(user) {\r\n this._user = user;\r\n this._isAuthenticated = !!this._user;\r\n this.notifySubscribers();\r\n }\r\n\r\n subscribe(callback) {\r\n this._callbacks.push({ callback, subscription: this._nextSubscriptionId++ });\r\n return this._nextSubscriptionId - 1;\r\n }\r\n\r\n unsubscribe(subscriptionId) {\r\n const subscriptionIndex = this._callbacks\r\n .map((element, index) => element.subscription === subscriptionId ? { found: true, index } : { found: false })\r\n .filter(element => element.found === true);\r\n if (subscriptionIndex.length !== 1) {\r\n throw new Error(`Found an invalid number of subscriptions ${subscriptionIndex.length}`);\r\n }\r\n\r\n this._callbacks.splice(subscriptionIndex[0].index, 1);\r\n }\r\n\r\n notifySubscribers() {\r\n for (let i = 0; i < this._callbacks.length; i++) {\r\n const callback = this._callbacks[i].callback;\r\n callback();\r\n }\r\n }\r\n\r\n createArguments(state) {\r\n return { useReplaceToNavigate: true, data: state };\r\n }\r\n\r\n error(message) {\r\n return { status: AuthenticationResultStatus.Fail, message };\r\n }\r\n\r\n success(state) {\r\n return { status: AuthenticationResultStatus.Success, state };\r\n }\r\n\r\n redirect() {\r\n return { status: AuthenticationResultStatus.Redirect };\r\n }\r\n\r\n async ensureUserManagerInitialized() {\r\n if (this.userManager !== undefined) {\r\n return;\r\n }\r\n let response;\r\n try {\r\n response = await fetch(ApplicationPaths.ApiAuthorizationClientConfigurationUrl);\r\n } catch (error) {\r\n console.log('ensure: ' + error);\r\n }\r\n if (!response.ok) {\r\n throw new Error(`Could not load settings for '${ApplicationName}'`);\r\n }\r\n\r\n let settings = await response.json();\r\n settings.automaticSilentRenew = true;\r\n settings.includeIdTokenInSilentRenew = true;\r\n settings.userStore = new WebStorageStateStore({\r\n prefix: ApplicationName\r\n });\r\n this.userManager = new UserManager(settings);\r\n\r\n this.userManager.events.addUserSignedOut(async () => {\r\n await this.userManager.removeUser();\r\n this.updateState(undefined);\r\n });\r\n\r\n }\r\n\r\n static get instance() { return authService }\r\n}\r\n\r\nconst authService = new AuthorizeService();\r\n\r\nexport default authService;\r\n\r\nexport const AuthenticationResultStatus = {\r\n Redirect: 'redirect',\r\n Success: 'success',\r\n Fail: 'fail'\r\n};\r\n","import React, { Component } from 'react';\r\nimport Button from '@mui/material/Button';\r\nimport authService from './AuthorizeService';\r\nimport { ApplicationPaths } from './ApiAuthorizationConstants';\r\nimport { Link as RouterLink } from 'react-router-dom';\r\n\r\nexport class LoginMenu extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n isAuthenticated: false,\r\n userName: null\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this._subscription = authService.subscribe(() => this.populateState());\r\n this.populateState();\r\n }\r\n\r\n componentWillUnmount() {\r\n authService.unsubscribe(this._subscription);\r\n }\r\n\r\n async populateState() {\r\n const [isAuthenticated, user] = await Promise.all([authService.isAuthenticated(), authService.getUser()])\r\n this.setState({\r\n isAuthenticated,\r\n userName: user && user.name\r\n });\r\n }\r\n\r\n render() {\r\n const { isAuthenticated, userName } = this.state;\r\n if (!isAuthenticated) {\r\n const registerPath = `${ApplicationPaths.Register}`;\r\n const loginPath = `${ApplicationPaths.Login}`;\r\n return this.anonymousView(registerPath, loginPath);\r\n } else {\r\n const profilePath = `${ApplicationPaths.Profile}`;\r\n const logoutPath = { pathname: `${ApplicationPaths.LogOut}`, state: { local: true } };\r\n return this.authenticatedView(userName, profilePath, logoutPath);\r\n }\r\n }\r\n\r\n authenticatedView(userName, profilePath, logoutPath) {\r\n const link = React.forwardRef((props, ref) => (\r\n \r\n ));\r\n\r\n return (\r\n \r\n );\r\n\r\n }\r\n\r\n anonymousView(registerPath, loginPath) {\r\n const link = React.forwardRef((props, ref) => (\r\n \r\n ));\r\n\r\n return (\r\n \r\n );\r\n }\r\n}\r\n","import * as React from 'react';\r\nimport { Theme } from '@mui/material/styles';\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport Drawer from '@mui/material/Drawer';\r\nimport AppBar from '@mui/material/AppBar';\r\nimport Toolbar from '@mui/material/Toolbar';\r\nimport List from '@mui/material/List';\r\nimport ListItem from '@mui/material/ListItem';\r\nimport ListItemIcon from '@mui/material/ListItemIcon';\r\nimport ListItemText from '@mui/material/ListItemText';\r\nimport BusinessIcon from '@mui/icons-material/Business';\r\n//import ContactMailIcon from '@mui/icons-material/ContactMail';\r\nimport CampaignCircleIcon from '@mui/icons-material/AccountCircle';\r\nimport AssessmentIcon from '@mui/icons-material/Assessment';\r\nimport CssBaseline from '@mui/material/CssBaseline';\r\nimport { Link as RouterLink, LinkProps as RouterLinkProps } from 'react-router-dom';\r\nimport authService from './api-authorization/AuthorizeService';\r\nimport { LoginMenu } from './api-authorization/LoginMenu';\r\nimport GroupIcon from '@mui/icons-material/Group';\r\nimport './NavMenu.css';\r\nimport Typography from '@mui/material/Typography';\r\nimport Avatar from '@mui/material/Avatar';\r\n\r\nconst drawerWidth = 160;\r\nconst miniDrawerWidth = 75;\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n display: 'flex',\r\n },\r\n titleImage: {\r\n flexGrow: 1\r\n },\r\n appBar: {\r\n zIndex: theme.zIndex.drawer + 1,\r\n backgroundColor: theme.palette.primary.main\r\n },\r\n drawer: {\r\n width: drawerWidth,\r\n flexShrink: 0,\r\n },\r\n drawerPaper: {\r\n width: drawerWidth,\r\n backgroundColor: theme.palette.primary.main,\r\n\r\n },\r\n miniDrawer: {\r\n width: miniDrawerWidth,\r\n flexShrink: 0,\r\n },\r\n miniDrawerPaper: {\r\n width: miniDrawerWidth,\r\n backgroundColor: theme.palette.primary.main\r\n },\r\n drawerContainer: {\r\n overflow: 'auto',\r\n color: '#ffffff'\r\n },\r\n drawerToggleMin: {\r\n width: 10,\r\n position: \"fixed\",\r\n top: \"50%\",\r\n left: 62,\r\n zIndex: theme.zIndex.drawer + 1\r\n },\r\n drawerToggleMax: {\r\n width: 10,\r\n position: \"fixed\",\r\n top: \"50%\",\r\n left: 227,\r\n zIndex: theme.zIndex.drawer + 1\r\n },\r\n content: {\r\n flexGrow: 1,\r\n padding: theme.spacing(3),\r\n },\r\n report: {\r\n height: \"23vh\",\r\n margin: \"0\",\r\n width: \"220px\"\r\n },\r\n icon: {\r\n color: 'inherit'\r\n },\r\n padding: {\r\n paddingLeft: theme.spacing(2),\r\n },\r\n avatar: {\r\n color: theme.palette.secondary.contrastText,\r\n backgroundColor: '#fcfc8c'\r\n },\r\n small: {\r\n width: theme.spacing(6),\r\n height: theme.spacing(6),\r\n color: '#000000',\r\n backgroundColor: '#fcfc8c',\r\n },\r\n highlightOnHover: {\r\n \"&:hover\": {\r\n color: \"#fcfc8c\",\r\n textDecoration: \"underline #fcfc8c\",\r\n \r\n \r\n }\r\n },\r\n\r\n }),\r\n);\r\n\r\ninterface ListItemLinkProps {\r\n icon?: React.ReactElement;\r\n primary: string;\r\n secondary?: any;\r\n to: string;\r\n show: boolean;\r\n className: string;\r\n}\r\n\r\nfunction ListItemLink(props: ListItemLinkProps) {\r\n const { icon, primary, secondary, to, show,className} = props;\r\n\r\n const renderLink = React.useMemo(\r\n () =>\r\n React.forwardRef>((itemProps, ref) => (\r\n \r\n )),\r\n [to],\r\n );\r\n\r\n return (\r\n
  • \r\n \r\n {icon ? {icon} : null}\r\n {show &&\r\n \r\n }\r\n \r\n
  • \r\n );\r\n}\r\n\r\nexport default function NavMenu() {\r\n const classes = useStyles();\r\n const [role, setRole] = React.useState('');\r\n const [show, setShow] = React.useState(true);\r\n const [userName, setUserName] = React.useState('');\r\n const [name, setName] = React.useState('');\r\n React.useEffect(() => { getRole(); }, []);\r\n\r\n \r\n const getRole = async () => {\r\n const user = await authService.getUser();\r\n if (user !== null) {\r\n setRole(user.role);\r\n setUserName(user.name);\r\n const token = await authService.getAccessToken();\r\n \r\n fetch(`Campaign/GetName`, {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n }).then(response => response.text())\r\n .then(data => {\r\n setName(data);\r\n });\r\n }\r\n setShow(true);\r\n\r\n\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n
    \r\n \"Ignite\"\r\n
    \r\n \r\n {name}} icon={{name[0]}} show={show} />\r\n \r\n \r\n
    \r\n
    \r\n {role !== undefined &&\r\n role.length > 0 &&\r\n \r\n {\r\n // \r\n }\r\n \r\n \r\n
    \r\n \r\n {role !== undefined ?\r\n role.length > 0 &&\r\n \r\n } show={show} />\r\n {/*} show={show} />*/}\r\n } show={show} />\r\n {(role === \"Admin\" || role === \"SuperAdmin\") && } show={show} />}\r\n {(role === \"Admin\" || role === \"SuperAdmin\") && } show={show} />}\r\n { (role === \"Admin\" || role === \"SuperAdmin\") && } show={show} />}\r\n \r\n \r\n : \r\n }\r\n \r\n
    \r\n \r\n
    \r\n }\r\n
    \r\n );\r\n}\r\n","import NavMenu from './NavMenu';\r\nimport Container from '@mui/material/Container';\r\nimport Toolbar from '@mui/material/Toolbar';\r\nimport { Theme } from '@mui/material/styles';\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n display: 'flex',\r\n },\r\n content: {\r\n flexGrow: 1,\r\n padding: theme.spacing(0),\r\n paddingTop: theme.spacing(1),\r\n width: 'calc(100% - 240px)',\r\n backgroundColor: '#ffffff'\r\n },\r\n }),\r\n);\r\n\r\ninterface IProps {\r\n children: any;\r\n}\r\n\r\nconst Layout = (props: IProps) => {\r\n const classes = useStyles();\r\n return (\r\n
    \r\n \r\n
    \r\n \r\n \r\n {props.children}\r\n \r\n
    \r\n
    \r\n );\r\n}\r\nexport default Layout;","import * as React from 'react';\r\nimport authService from './api-authorization/AuthorizeService';\r\nimport { Redirect } from 'react-router';\r\n\r\nexport function Home() {\r\n const [role, setRole] = React.useState('');\r\n\r\n React.useEffect(() => { getRole(); }, []);\r\n\r\n const getRole = async () => {\r\n const user = await authService.getUser();\r\n if (user !== null) {\r\n setRole(user.role);\r\n }\r\n }\r\n\r\n return (\r\n \r\n {role && role.length > 0 &&\r\n \r\n {(role !== \"Executive\" && role !== \"Creator\") ?\r\n \r\n :\r\n \r\n }\r\n \r\n }\r\n \r\n );\r\n}\r\n","import React from 'react'\r\nimport { Component } from 'react'\r\nimport { Route, Redirect } from 'react-router-dom'\r\nimport { ApplicationPaths, QueryParameterNames } from './ApiAuthorizationConstants'\r\nimport authService from './AuthorizeService'\r\n\r\nexport default class AuthorizeRoute extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n ready: false,\r\n authenticated: false\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this._subscription = authService.subscribe(() => this.authenticationChanged());\r\n this.populateAuthenticationState();\r\n }\r\n\r\n componentWillUnmount() {\r\n authService.unsubscribe(this._subscription);\r\n }\r\n\r\n render() {\r\n const { ready, authenticated } = this.state;\r\n const redirectUrl = `${ApplicationPaths.Login}?${QueryParameterNames.ReturnUrl}=${encodeURI(window.location.href)}`\r\n if (!ready) {\r\n return
    ;\r\n } else {\r\n const { component: Component, ...rest } = this.props;\r\n return {\r\n if (authenticated) {\r\n return \r\n } else {\r\n return \r\n }\r\n }} />\r\n }\r\n }\r\n\r\n async populateAuthenticationState() {\r\n const authenticated = await authService.isAuthenticated();\r\n this.setState({ ready: true, authenticated });\r\n }\r\n\r\n async authenticationChanged() {\r\n this.setState({ ready: false, authenticated: false });\r\n await this.populateAuthenticationState();\r\n }\r\n}\r\n","import React from 'react'\r\nimport { Component } from 'react';\r\nimport authService from './AuthorizeService';\r\nimport { AuthenticationResultStatus } from './AuthorizeService';\r\nimport { LoginActions, QueryParameterNames, ApplicationPaths } from './ApiAuthorizationConstants';\r\nimport Backdrop from '@mui/material/Backdrop';\r\nimport CircularProgress from '@mui/material/CircularProgress';\r\nimport withStyles from '@mui/styles/withStyles';\r\nimport Typography from '@mui/material/Typography';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst styles = (theme) =>\r\n ({\r\n backdrop: {\r\n zIndex: theme.zIndex.drawer + 1,\r\n color: theme.palette.primary.main,\r\n },\r\n });\r\n\r\n// The main responsibility of this component is to handle the user's login process.\r\n// This is the starting point for the login process. Any component that needs to authenticate\r\n// a user can simply perform a redirect to this component with a returnUrl query parameter and\r\n// let the component perform the login and return back to the return url.\r\nexport class Login extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n message: undefined\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n const action = this.props.action;\r\n switch (action) {\r\n case LoginActions.Login:\r\n this.login(this.getReturnUrl());\r\n break;\r\n case LoginActions.LoginCallback:\r\n this.processLoginCallback();\r\n break;\r\n case LoginActions.LoginFailed:\r\n const params = new URLSearchParams(window.location.search);\r\n const error = params.get(QueryParameterNames.Message);\r\n console.log(error);\r\n debugger;\r\n this.setState({ message: error });\r\n break;\r\n case LoginActions.Profile:\r\n this.redirectToProfile();\r\n break;\r\n case LoginActions.Register:\r\n this.redirectToRegister();\r\n break;\r\n default:\r\n throw new Error(`Invalid action '${action}'`);\r\n }\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n const action = this.props.action;\r\n const { message } = this.state;\r\n\r\n if (!!message) {\r\n return {message}\r\n } else {\r\n switch (action) {\r\n case LoginActions.Login:\r\n return (\r\n \r\n \r\n );\r\n case LoginActions.LoginCallback:\r\n return (\r\n \r\n \r\n );\r\n case LoginActions.Profile:\r\n case LoginActions.Register:\r\n return (
    );\r\n default:\r\n throw new Error(`Invalid action '${action}'`);\r\n }\r\n }\r\n }\r\n\r\n async login(returnUrl) {\r\n const state = { returnUrl };\r\n const result = await authService.signIn(state);\r\n switch (result.status) {\r\n case AuthenticationResultStatus.Redirect:\r\n break;\r\n case AuthenticationResultStatus.Success:\r\n await this.navigateToReturnUrl(returnUrl);\r\n break;\r\n case AuthenticationResultStatus.Fail:\r\n this.setState({ message: result.message });\r\n break;\r\n default:\r\n throw new Error(`Invalid status result ${result.status}.`);\r\n }\r\n }\r\n\r\n async processLoginCallback() {\r\n const url = window.location.href;\r\n let result;\r\n try {\r\n result = await authService.completeSignIn(url);\r\n } catch (error) {\r\n console.log('callback: ' + error);\r\n debugger;\r\n }\r\n\r\n switch (result.status) {\r\n case AuthenticationResultStatus.Redirect:\r\n // There should not be any redirects as the only time completeSignIn finishes\r\n // is when we are doing a redirect sign in flow.\r\n throw new Error('Should not redirect.');\r\n case AuthenticationResultStatus.Success:\r\n await this.navigateToReturnUrl(this.getReturnUrl(result.state));\r\n break;\r\n case AuthenticationResultStatus.Fail:\r\n this.setState({ message: result.message });\r\n break;\r\n default:\r\n throw new Error(`Invalid authentication result status '${result.status}'.`);\r\n }\r\n }\r\n\r\n getReturnUrl(state) {\r\n const params = new URLSearchParams(window.location.search);\r\n const fromQuery = params.get(QueryParameterNames.ReturnUrl);\r\n if (fromQuery && !fromQuery.startsWith(`${window.location.origin}/`)) {\r\n // This is an extra check to prevent open redirects.\r\n throw new Error(\"Invalid return url. The return url needs to have the same origin as the current page.\")\r\n }\r\n return (state && state.returnUrl) || fromQuery || `${window.location.origin}/`;\r\n }\r\n\r\n redirectToRegister() {\r\n this.redirectToApiAuthorizationPath(`${ApplicationPaths.IdentityRegisterPath}?${QueryParameterNames.ReturnUrl}=${encodeURI(ApplicationPaths.Login)}`);\r\n }\r\n\r\n redirectToProfile() {\r\n this.redirectToApiAuthorizationPath(ApplicationPaths.IdentityManagePath);\r\n }\r\n\r\n redirectToApiAuthorizationPath(apiAuthorizationPath) {\r\n const redirectUrl = `${window.location.origin}${apiAuthorizationPath}`;\r\n // It's important that we do a replace here so that when the user hits the back arrow on the\r\n // browser he gets sent back to where it was on the app instead of to an endpoint on this\r\n // component.\r\n window.location.replace(redirectUrl);\r\n }\r\n\r\n navigateToReturnUrl(returnUrl) {\r\n // It's important that we do a replace here so that we remove the callback uri with the\r\n // fragment containing the tokens from the browser history.\r\n window.location.replace(returnUrl);\r\n }\r\n}\r\n\r\nLogin.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n};\r\n\r\nexport default withStyles(styles)(Login);","import React from 'react'\r\nimport { Component } from 'react';\r\nimport authService from './AuthorizeService';\r\nimport { AuthenticationResultStatus } from './AuthorizeService';\r\nimport { QueryParameterNames, LogoutActions, ApplicationPaths } from './ApiAuthorizationConstants';\r\nimport Backdrop from '@mui/material/Backdrop';\r\nimport CircularProgress from '@mui/material/CircularProgress';\r\nimport withStyles from '@mui/styles/withStyles';\r\nimport Typography from '@mui/material/Typography';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst styles = (theme) =>\r\n ({\r\n backdrop: {\r\n zIndex: theme.zIndex.drawer + 1,\r\n color: theme.palette.primary.main,\r\n },\r\n });\r\n\r\n// The main responsibility of this component is to handle the user's logout process.\r\n// This is the starting point for the logout process, which is usually initiated when a\r\n// user clicks on the logout button on the LoginMenu component.\r\nexport class Logout extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n message: undefined,\r\n isReady: false,\r\n authenticated: false\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n const action = this.props.action;\r\n switch (action) {\r\n case LogoutActions.Logout:\r\n if (!!window.history.state.state.local) {\r\n this.logout(this.getReturnUrl());\r\n } else {\r\n // This prevents regular links to /authentication/logout from triggering a logout\r\n this.setState({ isReady: true, message: \"The logout was not initiated from within the page.\" });\r\n }\r\n break;\r\n case LogoutActions.LogoutCallback:\r\n this.processLogoutCallback();\r\n break;\r\n case LogoutActions.LoggedOut:\r\n this.setState({ isReady: true, message: \"You successfully logged out!\" });\r\n break;\r\n default:\r\n throw new Error(`Invalid action '${action}'`);\r\n }\r\n\r\n this.populateAuthenticationState();\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n const { isReady, message } = this.state;\r\n if (!isReady) {\r\n return
    \r\n }\r\n if (!!message) {\r\n return ({message});\r\n } else {\r\n const action = this.props.action;\r\n switch (action) {\r\n case LogoutActions.Logout:\r\n return (\r\n \r\n \r\n \r\n );\r\n case LogoutActions.LogoutCallback:\r\n return (\r\n \r\n \r\n \r\n );\r\n case LogoutActions.LoggedOut:\r\n return ({message});\r\n default:\r\n throw new Error(`Invalid action '${action}'`);\r\n }\r\n }\r\n }\r\n\r\n async logout(returnUrl) {\r\n const state = { returnUrl };\r\n const isauthenticated = await authService.isAuthenticated();\r\n if (isauthenticated) {\r\n const result = await authService.signOut(state);\r\n switch (result.status) {\r\n case AuthenticationResultStatus.Redirect:\r\n break;\r\n case AuthenticationResultStatus.Success:\r\n await this.navigateToReturnUrl(returnUrl);\r\n break;\r\n case AuthenticationResultStatus.Fail:\r\n this.setState({ message: result.message });\r\n break;\r\n default:\r\n throw new Error(\"Invalid authentication result status.\");\r\n }\r\n } else {\r\n this.setState({ message: \"You successfully logged out!\" });\r\n }\r\n }\r\n\r\n async processLogoutCallback() {\r\n const url = window.location.href;\r\n const result = await authService.completeSignOut(url);\r\n switch (result.status) {\r\n case AuthenticationResultStatus.Redirect:\r\n // There should not be any redirects as the only time completeAuthentication finishes\r\n // is when we are doing a redirect sign in flow.\r\n throw new Error('Should not redirect.');\r\n case AuthenticationResultStatus.Success:\r\n await this.navigateToReturnUrl(this.getReturnUrl(result.state));\r\n break;\r\n case AuthenticationResultStatus.Fail:\r\n this.setState({ message: result.message });\r\n break;\r\n default:\r\n throw new Error(\"Invalid authentication result status.\");\r\n }\r\n }\r\n\r\n async populateAuthenticationState() {\r\n const authenticated = await authService.isAuthenticated();\r\n this.setState({ isReady: true, authenticated });\r\n }\r\n\r\n getReturnUrl(state) {\r\n const params = new URLSearchParams(window.location.search);\r\n const fromQuery = params.get(QueryParameterNames.ReturnUrl);\r\n if (fromQuery && !fromQuery.startsWith(`${window.location.origin}/`)) {\r\n // This is an extra check to prevent open redirects.\r\n throw new Error(\"Invalid return url. The return url needs to have the same origin as the current page.\")\r\n }\r\n return (state && state.returnUrl) ||\r\n fromQuery ||\r\n `${window.location.origin}${ApplicationPaths.LoggedOut}`;\r\n }\r\n\r\n navigateToReturnUrl(returnUrl) {\r\n return window.location.replace(returnUrl);\r\n }\r\n}\r\n\r\nLogout.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n};\r\n\r\nexport default withStyles(styles)(Logout);\r\n","import React, { Component, Fragment } from 'react';\r\nimport { Route } from 'react-router';\r\nimport Login from './Login'\r\nimport Logout from './Logout'\r\nimport { ApplicationPaths, LoginActions, LogoutActions } from './ApiAuthorizationConstants';\r\n\r\nexport default class ApiAuthorizationRoutes extends Component {\r\n\r\n render () {\r\n return(\r\n \r\n loginAction(LoginActions.Login)} />\r\n loginAction(LoginActions.LoginFailed)} />\r\n loginAction(LoginActions.LoginCallback)} />\r\n loginAction(LoginActions.Profile)} />\r\n loginAction(LoginActions.Register)} />\r\n logoutAction(LogoutActions.Logout)} />\r\n logoutAction(LogoutActions.LogoutCallback)} />\r\n logoutAction(LogoutActions.LoggedOut)} />\r\n );\r\n }\r\n}\r\n\r\nfunction loginAction(name){\r\n return ();\r\n}\r\n\r\nfunction logoutAction(name) {\r\n return ();\r\n}\r\n","import * as React from 'react';\r\nimport Paper from '@mui/material/Paper';\r\nimport { Theme } from '@mui/material/styles';\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport Grid from '@mui/material/Grid';\r\nimport Typography from '@mui/material/Typography';\r\nimport Button from '@mui/material/Button';\r\nimport { useParams, Redirect } from 'react-router';\r\nimport { ValidatorForm, TextValidator } from 'react-material-ui-form-validator';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n paper: {\r\n padding: theme.spacing(2),\r\n },\r\n }),\r\n);\r\n\r\ninterface RouteParams {\r\n userId: string;\r\n code: string;\r\n}\r\n\r\nexport default function RegisterConfirmation() {\r\n const classes = useStyles();\r\n const { userId, code } = useParams();\r\n\r\n const [password, setPassword] = React.useState('');\r\n const [confirmPassword, setConfirmPassword] = React.useState('');\r\n const [redirect, setRedirect] = React.useState(false);\r\n\r\n const onChange = (event: React.ChangeEvent) => {\r\n setPassword(event.target.value);\r\n }\r\n\r\n const onConfirmChange = (event: React.ChangeEvent) => {\r\n setConfirmPassword(event.target.value);\r\n }\r\n\r\n const createUser = async () => {\r\n fetch('User/SetPassword', {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json; charset=utf-8' },\r\n body: JSON.stringify({ userId: userId, code: code, password: password })\r\n })\r\n .then(response => response.text())\r\n .then(data => {\r\n if (data === 'Ok') {\r\n setRedirect(true);\r\n }\r\n });\r\n }\r\n\r\n ValidatorForm.addValidationRule('isPasswordMatch', value => {\r\n if (value !== password) {\r\n return false;\r\n }\r\n return true;\r\n });\r\n\r\n ValidatorForm.addValidationRule('hasUppercase', value => {\r\n if (/^(?=.*[A-Z]).{1,}$/.test(value)) {\r\n return true;\r\n }\r\n return false;\r\n });\r\n\r\n ValidatorForm.addValidationRule('hasLowercase', value => {\r\n if (/^(?=.*[a-z]).{1,}$/.test(value)) {\r\n return true;\r\n }\r\n return false;\r\n });\r\n\r\n ValidatorForm.addValidationRule('hasNumber', value => {\r\n if (/^(?=.*[0-9]).{1,}$/.test(value)) {\r\n return true;\r\n }\r\n return false;\r\n });\r\n\r\n ValidatorForm.addValidationRule('hasSpecialChar', value => {\r\n if (/^(?=.*[\\W]).{1,}$/.test(value)) {\r\n return true;\r\n }\r\n return false;\r\n });\r\n\r\n ValidatorForm.addValidationRule('noWhitespace', value => {\r\n if (/^\\S*$/.test(value)) {\r\n return true;\r\n }\r\n return false;\r\n });\r\n\r\n return (\r\n \r\n {\r\n redirect ? \r\n :\r\n \r\n \r\n \r\n \r\n Create Password\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n );\r\n}","import * as React from 'react';\r\nimport TextField from '@mui/material/TextField';\r\nimport { TextValidator } from 'react-material-ui-form-validator';\r\nimport Autocomplete from '@mui/material/Autocomplete';\r\nimport DropdownViewModel from '../ViewModels/DropdownViewModel';\r\nimport Avatar from '@mui/material/Avatar';\r\nimport MenuItem from '@mui/material/MenuItem';\r\nimport InputAdornment from '@mui/material/InputAdornment';\r\n\r\ninterface IDropdownProps {\r\n id: string;\r\n label: string;\r\n name: string;\r\n users: DropdownViewModel[];\r\n onChange: (value: string | number, name: string, client: string) => void;\r\n required: boolean;\r\n}\r\n\r\nexport default function UserDropdown(props: IDropdownProps) {\r\n const [search, setSearch] = React.useState('');\r\n const [value, setvalue] = React.useState('');\r\n\r\n const handleChange = (event: any, newValue: any) => {\r\n if (props) {\r\n const client = props.users && props.users.find(f => f.value === newValue);\r\n props.onChange(client?.id ?? \"\", props.name, client?.value ?? '');\r\n setvalue(client?.value ?? '');\r\n }\r\n }\r\n\r\n const items = props.users.map((item) => item.value);\r\n return (\r\n \r\n {\r\n props.required ?\r\n {\r\n setSearch(newInputValue);\r\n }}\r\n renderOption={(p: any, option: string) => {\r\n const user = props.users.find(f => f.value == option);\r\n return (\r\n \r\n {option}\r\n );\r\n }}\r\n renderInput={(params) => {\r\n const user = props.users.find(f => f.value == value);\r\n return (\r\n \r\n \r\n \r\n ),\r\n }}\r\n />\r\n );\r\n }}\r\n />\r\n :\r\n {\r\n setSearch(newInputValue);\r\n }}\r\n renderOption={(p: any, option: string) => {\r\n const user = props.users.find(f => f.value == option);\r\n return (\r\n \r\n {option}\r\n );\r\n }}\r\n renderInput={(params) => {\r\n const user = props.users.find(f => f.value == value);\r\n return (\r\n \r\n \r\n ),\r\n }}\r\n />);\r\n }}\r\n />\r\n }\r\n \r\n );\r\n}","import * as React from 'react';\r\nimport Button from '@mui/material/Button';\r\nimport Dialog from '@mui/material/Dialog';\r\nimport DialogActions from '@mui/material/DialogActions';\r\nimport DialogContent from '@mui/material/DialogContent';\r\nimport DialogContentText from '@mui/material/DialogContentText';\r\nimport DialogTitle from '@mui/material/DialogTitle';\r\nimport { Theme } from '@mui/material/styles';\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport CircularProgress from '@mui/material/CircularProgress';\r\nimport authService from '../api-authorization/AuthorizeService';\r\nimport UserDropdown from '../Dropdowns/UserDropdown';\r\nimport DropdownViewModel from '../ViewModels/DropdownViewModel';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n buttonProgress: {\r\n position: 'absolute',\r\n top: '50%',\r\n left: '50%',\r\n marginTop: -12,\r\n marginLeft: -12,\r\n }\r\n })\r\n);\r\n\r\ninterface ITeamLeaderProps {\r\n users: DropdownViewModel[];\r\n clientId: number;\r\n open: boolean;\r\n close: (refresh: boolean) => void;\r\n}\r\n\r\nexport default function TeamLeaderDialog(props: ITeamLeaderProps) {\r\n const classes = useStyles();\r\n const [teamLeader, setTeamLeader] = React.useState(\"\");\r\n const [submitting, setSubmitting] = React.useState(false);\r\n const [error, setError] = React.useState('');\r\n\r\n const onChange = (value: number | string, name: string, client: string) => {\r\n setTeamLeader(value as string);\r\n }\r\n\r\n const onClose = () => {\r\n if (!submitting) {\r\n setTeamLeader(\"\");\r\n props.close(false);\r\n }\r\n }\r\n\r\n const submit = async () => {\r\n setSubmitting(true);\r\n const token = await authService.getAccessToken();\r\n\r\n fetch(`Client/SetClientTeamLeader?clientId=${props.clientId}&teamLeaderId=${teamLeader}`, {\r\n method: 'POST',\r\n headers: !token ? { 'Content-Type': 'application/json; charset=utf-8' } : { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json; charset=utf-8' },\r\n })\r\n .then(response => response.text())\r\n .then(data => {\r\n setSubmitting(false);\r\n props.close(true);\r\n })\r\n .catch(error => {\r\n setError('A server error has occurred, please try again.');\r\n });\r\n }\r\n\r\n return (\r\n \r\n Set Client Manager\r\n \r\n \r\n Set the manager for this client.\r\n {error}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}","import * as React from 'react';\r\nimport TableCell from '@mui/material/TableCell';\r\nimport TableRow from '@mui/material/TableRow';\r\nimport ClientViewModel from '../ViewModels/ClientViewModel';\r\nimport Button from '@mui/material/Button';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport { Link as RouterLink, LinkProps as RouterLinkProps } from 'react-router-dom';\r\nimport TeamLeaderDialog from './TeamLeaderDialog';\r\nimport Edit from '@mui/icons-material/Edit';\r\nimport Dialog from '@mui/material/Dialog';\r\nimport DialogActions from '@mui/material/DialogActions';\r\nimport DialogContent from '@mui/material/DialogContent';\r\nimport DialogContentText from '@mui/material/DialogContentText';\r\nimport DialogTitle from '@mui/material/DialogTitle';\r\nimport authService from '../api-authorization/AuthorizeService';\r\nimport DropdownViewModel from '../ViewModels/DropdownViewModel';\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport green from '@mui/material/colors/green';\r\nimport red from '@mui/material/colors/red';\r\nimport amber from '@mui/material/colors/amber';\r\nimport Chip from '@mui/material/Chip';\r\nimport grey from '@mui/material/colors/grey';\r\nimport blue from '@mui/material/colors/blue';\r\nimport { Theme } from '@mui/material/styles';\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n green: {\r\n color: theme.palette.getContrastText(green[500]),\r\n backgroundColor: green[500],\r\n width: '100%'\r\n },\r\n blue: {\r\n color: theme.palette.getContrastText(blue[500]),\r\n backgroundColor: blue[500],\r\n width: '100%'\r\n },\r\n amber: {\r\n color: theme.palette.getContrastText(amber[500]),\r\n backgroundColor: amber[500],\r\n width: '100%'\r\n },\r\n lightRed: {\r\n color: theme.palette.getContrastText('#ff7961'),\r\n backgroundColor: '#ff7961',\r\n width: '100%'\r\n },\r\n red: {\r\n color: theme.palette.getContrastText(red[500]),\r\n backgroundColor: red[500],\r\n width: '100%'\r\n },\r\n grey: {\r\n color: theme.palette.getContrastText(grey[500]),\r\n backgroundColor: grey[500],\r\n width: '100%'\r\n },\r\n default: {\r\n width: '100%'\r\n },\r\n })\r\n);\r\ninterface IClientListProps {\r\n teamLeaders: DropdownViewModel[];\r\n client: ClientViewModel;\r\n roles: string | string[];\r\n refresh: () => void;\r\n}\r\n\r\nexport default function ClientTableRow(props: IClientListProps) {\r\n const id = props.client.id;\r\n const classes = useStyles();\r\n const [openTLeaderDialog, setDialogOpen] = React.useState(false);\r\n const [openWarningDialog, setWarningOpen] = React.useState(false);\r\n const statuses = [\r\n { status: \"Live\", class: classes.green },\r\n { status: \"Pending\", class: classes.amber },\r\n { status: \"Notice\", class: classes.lightRed },\r\n { status: \"Cancelled\", class: classes.red },\r\n { status: \"Onboarding\", class: classes.default },\r\n { status: \"Complete\", class: classes.default },\r\n { status: \"Paused\", class: classes.grey },\r\n { status: \"Confirmed Cancelling\", class: classes.red },\r\n { status: \"DRAFT\", class: classes.blue },\r\n { status: \"RUNNING\", class: classes.green },\r\n { status: \"EDITED\", class: classes.green },\r\n { status: \"COMPLETED\", class: classes.default },\r\n { status: \"PAUSED\", class: classes.amber },\r\n { status: \"STOPPED\", class: classes.red },\r\n { status: \"DELETED\", class: classes.red },\r\n { status: \"Unknown\", class: classes.red },\r\n ];\r\n \r\n const viewButton = React.forwardRef>((props, ref) => (\r\n \r\n ));\r\n const openDialog = () => {\r\n setDialogOpen(true);\r\n }\r\n\r\n const openArchiveDialog = () => {\r\n setWarningOpen(true);\r\n }\r\n\r\n const handleWarningClose = () => {\r\n setWarningOpen(false);\r\n }\r\n\r\n const handleClose = (refresh: boolean) => {\r\n if (refresh) {\r\n props.refresh();\r\n }\r\n setDialogOpen(false);\r\n }\r\n\r\n const archiveClient = async () => {\r\n const token = await authService.getAccessToken();\r\n\r\n fetch(`Client/ArchiveClient?id=${props.client.id}`, {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n })\r\n .then(response => {\r\n if (response.ok) {\r\n props.refresh();\r\n setWarningOpen(false);\r\n }\r\n })\r\n .catch(error => {\r\n console.log('Update error: ' + error);\r\n });\r\n }\r\n\r\n let teamLeader = ;\r\n if (props.client.teamLeader && props.client.teamLeader.length > 0) {\r\n teamLeader = \r\n {props.client.teamLeader}\r\n {(props.roles !== \"Executive\" && props.roles !== \"Creator\") && }\r\n ;\r\n }\r\n else if (props.roles !== \"Executive\" && props.roles !== \"Creator\") {\r\n teamLeader = ;\r\n } else {\r\n teamLeader = No Team Leader;\r\n }\r\n const statusClass = props.client.status.length > 0 ? statuses.find(f => f.status === props.client.status)!.class : classes.default;\r\n return (\r\n \r\n \r\n {props.client.clientName}\r\n {props.client.clientType}\r\n {new Date(props.client.startDate).toLocaleDateString(\"en-GB\")}\r\n {teamLeader}\r\n \r\n \r\n {\r\n props.roles !== \"Executive\" &&\r\n \r\n {props.roles !== \"Creator\" && }\r\n \r\n }\r\n \r\n \r\n \r\n {\"Are you sure?\"}\r\n \r\n \r\n This will permanently archive this client and its campaigns.\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n );\r\n}","import * as React from 'react';\r\nimport Table from '@mui/material/Table';\r\nimport TableBody from '@mui/material/TableBody';\r\nimport TableCell from '@mui/material/TableCell';\r\nimport TableHead from '@mui/material/TableHead';\r\nimport TableRow from '@mui/material/TableRow';\r\nimport ClientViewModel from '../ViewModels/ClientViewModel';\r\nimport ClientTableRow from './ClientTableRow';\r\nimport DropdownViewModel from '../ViewModels/DropdownViewModel';\r\nimport authService from '../api-authorization/AuthorizeService';\r\n\r\ninterface IClientTableProps {\r\n clients: ClientViewModel[];\r\n roles: string | string[];\r\n refresh: () => void;\r\n}\r\n\r\nexport default function ClientTable(props: IClientTableProps) {\r\n const [users, setUsers] = React.useState([]);\r\n React.useEffect(() => { getData(); }, []);\r\n\r\n const items = props.clients.map((item, index) =>\r\n \r\n );\r\n\r\n const getData = async () => {\r\n const token = await authService.getAccessToken();\r\n\r\n fetch('User/GetTeamLeaders', {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` },\r\n })\r\n .then(response => response.json())\r\n .then(data => {\r\n setUsers(data);\r\n })\r\n .catch(error => {\r\n console.log('Get team leaders error: ' + error);\r\n });\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n Client\r\n Client Type\r\n Onboarded Date\r\n Account Manager\r\n Status\r\n \r\n {\r\n props.roles !== \"Executive\" &&\r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n {items}\r\n \r\n
    \r\n );\r\n}","import * as React from 'react';\r\n//import Paper from '@mui/material/Paper';\r\n//import { createStyles, Theme, makeStyles } from '@mui/material/styles';\r\nimport Grid from '@mui/material/Grid';\r\nimport Typography from '@mui/material/Typography';\r\nimport ClientViewModel/*, { UserClientListViewModel }*/ from '../ViewModels/ClientViewModel';\r\nimport authService from '../api-authorization/AuthorizeService';\r\nimport Button from '@mui/material/Button';\r\nimport { Link as RouterLink, LinkProps as RouterLinkProps } from 'react-router-dom';\r\nimport LinearProgress from '@mui/material/LinearProgress';\r\nimport ClientTable from './ClientTable';\r\nimport TextField from '@mui/material/TextField';\r\nimport InputAdornment from '@mui/material/InputAdornment';\r\nimport Search from '@mui/icons-material/Search';\r\nimport Pagination from '@mui/material/Pagination';\r\nimport { Theme } from '@mui/material/styles';\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n paper: {\r\n padding: theme.spacing(2),\r\n },\r\n table: {\r\n minWidth: 650,\r\n\r\n },\r\n root: {\r\n flexGrow: 1,\r\n backgroundColor: theme.palette.background.paper,\r\n },\r\n pagination: {\r\n paddingTop: theme.spacing(2),\r\n }\r\n }),\r\n\r\n);\r\n\r\nexport default function ClientList() {\r\n const classes = useStyles();\r\n\r\n const [clients, setClients] = React.useState([]);\r\n const [filteredClients, setFilteredClients] = React.useState([]);\r\n //const [userClients, setUserClients] = React.useState([]);\r\n const [loaded, setLoaded] = React.useState(true);\r\n const [roles, setRoles] = React.useState(\"\");\r\n const [search, setSearch] = React.useState('');\r\n const [page, setPage] = React.useState(1);\r\n const [pageMax, setPageMax] = React.useState(0);\r\n\r\n React.useEffect(() => {\r\n const initialise = async () => {\r\n setLoaded(false);\r\n const user = await authService.getUser();\r\n setRoles(user.role);\r\n }\r\n initialise();\r\n }, []);\r\n\r\n React.useEffect(() => {\r\n if (!loaded) {\r\n setLoaded(true);\r\n }\r\n }, [clients, loaded]);\r\n React.useEffect(() => {\r\n const filter = () => {\r\n let filtered = [...clients];\r\n if (search.length > 0) {\r\n filtered = filtered.filter(item => item.clientName.toLowerCase().includes(search.toLowerCase()));\r\n }\r\n setPageMax(Math.ceil(filtered.length / 25));\r\n if (page > Math.ceil(filtered.length / 25)) {\r\n setPage(1);\r\n }\r\n filtered = filtered.splice((page - 1) * 25, 25);\r\n setFilteredClients(filtered);\r\n }\r\n filter();\r\n }, [search, clients, page]);\r\n const handlePageChange = (event: any, newValue: any) => {\r\n setPage(newValue);\r\n };\r\n const getData = React.useCallback(async () => {\r\n setLoaded(false);\r\n const token = await authService.getAccessToken();\r\n const user = await authService.getUser();\r\n\r\n if (roles === 'Executive') {\r\n fetch('Client/GetUserClientsList?userId=' + user.sub, {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n })\r\n .then(response => response.json())\r\n .then(data => {\r\n setClients(data);\r\n })\r\n .catch(error => { setLoaded(true) });\r\n } else {\r\n fetch('Client/GetClients', {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n })\r\n .then(response => response.json())\r\n .then(data => {\r\n setClients(data);\r\n setLoaded(true);\r\n })\r\n .catch(error => { setLoaded(true) });\r\n }\r\n }, [roles]);\r\n React.useEffect(() => {\r\n if (roles && roles.length > 0) {\r\n getData();\r\n }\r\n }, [roles, getData]);\r\n\r\n const createButton = React.forwardRef>((props, ref) => (\r\n \r\n ));\r\n\r\n const onFilterChange = (event: React.ChangeEvent) => {\r\n setSearch(event.target.value);\r\n }\r\n\r\n //const filter = React.useCallback(() => {\r\n // let filtered = clients;\r\n\r\n // if (search.length > 0) {\r\n // filtered = filtered.filter(item => item.clientName.toLowerCase().includes(search.toLowerCase()));\r\n // }\r\n\r\n // setFilteredClients(filtered);\r\n //}, [search, clients]);\r\n //React.useEffect(() => {\r\n // filter();\r\n //}, [search, filter]);\r\n\r\n const list = ;\r\n\r\n return (\r\n //\r\n //\r\n \r\n \r\n \r\n \r\n Clients\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ),\r\n }}\r\n onChange={onFilterChange}\r\n />\r\n \r\n {(roles && (roles.includes('SuperAdmin') ||roles.includes('Admin') || roles.includes('Team Leader') || roles.includes('Creator'))) &&\r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n {!loaded && }\r\n {list}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}","import DropdownViewModel from \"../ViewModels/DropdownViewModel\";\r\n\r\nexport default class TeamViewModel {\r\n public id: number = 0;\r\n public name: string = '';\r\n public members: DropdownViewModel[] = [];\r\n public teamLeaderId: string = '';\r\n}\r\n","import * as React from 'react';\r\nimport TableCell from '@mui/material/TableCell';\r\nimport TableRow from '@mui/material/TableRow';\r\nimport Button from '@mui/material/Button';\r\nimport Dialog from '@mui/material/Dialog';\r\nimport DialogActions from '@mui/material/DialogActions';\r\nimport DialogContent from '@mui/material/DialogContent';\r\nimport DialogContentText from '@mui/material/DialogContentText';\r\nimport DialogTitle from '@mui/material/DialogTitle';\r\nimport authService from '../api-authorization/AuthorizeService';\r\nimport DropdownViewModel from '../ViewModels/DropdownViewModel';\r\nimport TeamViewModel from './TeamViewModel';\r\nimport Grid from '@mui/material/Grid';\r\nimport { Theme } from '@mui/material/styles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport ListItem from '@mui/material/ListItem';\r\nimport Paper from '@mui/material/Paper';\r\nimport List from '@mui/material/List';\r\nimport ListItemIcon from '@mui/material/ListItemIcon';\r\nimport Checkbox from '@mui/material/Checkbox';\r\nimport ListItemText from '@mui/material/ListItemText';\r\nimport UserDropdown from '../Dropdowns/UserDropdown';\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n margin: 'auto',\r\n },\r\n paper: {\r\n width: 200,\r\n height: 450,\r\n overflow: 'auto',\r\n },\r\n button: {\r\n margin: theme.spacing(0.5, 0),\r\n },\r\n }),\r\n);\r\nfunction not(a: DropdownViewModel[], b: DropdownViewModel[]) {\r\n return a.filter((value) => b.indexOf(value) === -1);\r\n}\r\n\r\nfunction intersection(a: DropdownViewModel[], b: DropdownViewModel[]) {\r\n return a.filter((value) => b.indexOf(value) !== -1);\r\n}\r\ninterface ITeamListProps {\r\n teamLeaders: DropdownViewModel[];\r\n team: TeamViewModel;\r\n roles: string | string[];\r\n refresh: () => void;\r\n users: DropdownViewModel[];\r\n}\r\n\r\nexport default function TeamTableRow(props: ITeamListProps) {\r\n const classes = useStyles();\r\n const [openUserDialog, setDialogOpen] = React.useState(false);\r\n const [openWarningDialog, setWarningOpen] = React.useState(false);\r\n const [checked, setChecked] = React.useState([]);\r\n const [teamLeaderId, setTeamLeaderId] = React.useState(props.team.teamLeaderId);\r\n const [left, setLeft] = React.useState(props.users.filter(function (obj) {\r\n return props.team.members.filter(f => f.id === obj.id).length === 0;\r\n }));\r\n const [right, setRight] = React.useState(props.team.members);\r\n const leftChecked = intersection(checked, left);\r\n const rightChecked = intersection(checked, right);\r\n React.useEffect(() => {\r\n setLeft(props.users.filter(function (obj) {\r\n return props.team.members.filter(f => f.id === obj.id).length === 0;\r\n }));\r\n setRight(props.team.members);\r\n }, [props.team, props.users]);\r\n const openUserManager = () => {\r\n setDialogOpen(true);\r\n }\r\n const handleUserClose = (refresh: boolean) => {\r\n if (refresh) {\r\n props.refresh();\r\n }\r\n setDialogOpen(false);\r\n }\r\n const openArchiveDialog = () => {\r\n setWarningOpen(true);\r\n }\r\n\r\n const handleWarningClose = () => {\r\n setWarningOpen(false);\r\n }\r\n\r\n\r\n\r\n const deleteTeam = async () => {\r\n const token = await authService.getAccessToken();\r\n\r\n fetch(`Team/RemoveTeam?teamId=${props.team.id}`, {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n })\r\n .then(response => {\r\n if (response.ok) {\r\n props.refresh();\r\n setWarningOpen(false);\r\n }\r\n })\r\n .catch(error => {\r\n console.log('Update error: ' + error);\r\n });\r\n }\r\n const submitMembers = async () => {\r\n const token = await authService.getAccessToken();\r\n\r\n fetch(`Team/SubmitMembers?teamId=${props.team.id}&teamLeaderId=${teamLeaderId}`, {\r\n method: 'POST',\r\n headers: !token ? { 'Content-Type': 'application/json; charset=utf-8' } : { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json; charset=utf-8' },\r\n body: JSON.stringify(right)\r\n })\r\n .then(response => response.json())\r\n .then(data => {\r\n if (data) {\r\n handleUserClose(true);\r\n }\r\n })\r\n .catch(error => { });\r\n }\r\n const handleToggle = (value: DropdownViewModel) => () => {\r\n const currentIndex = checked.indexOf(value);\r\n const newChecked = [...checked];\r\n\r\n if (currentIndex === -1) {\r\n newChecked.push(value);\r\n } else {\r\n newChecked.splice(currentIndex, 1);\r\n }\r\n\r\n setChecked(newChecked);\r\n };\r\n\r\n const handleAllRight = () => {\r\n setRight(right.concat(left));\r\n setLeft([]);\r\n };\r\n\r\n const handleCheckedRight = () => {\r\n setRight(right.concat(leftChecked));\r\n setLeft(not(left, leftChecked));\r\n setChecked(not(checked, leftChecked));\r\n };\r\n\r\n const handleCheckedLeft = () => {\r\n setLeft(left.concat(rightChecked));\r\n setRight(not(right, rightChecked));\r\n setChecked(not(checked, rightChecked));\r\n };\r\n\r\n const handleAllLeft = () => {\r\n setLeft(left.concat(right));\r\n setRight([]);\r\n };\r\n const customList = (items: DropdownViewModel[]) => (\r\n \r\n \r\n {items.map((value: DropdownViewModel) => {\r\n const labelId = `transfer-list-item-${value}-label`;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n );\r\n const onChange = (value: number | string, name: string, client: string) => {\r\n setTeamLeaderId(value as string);\r\n }\r\n\r\n return (\r\n \r\n \r\n {props.team.name}\r\n\r\n {\r\n props.roles !== \"Executive\" &&\r\n \r\n {props.roles !== \"Creator\" && }\r\n {props.roles !== \"Creator\" && }\r\n \r\n }\r\n \r\n \r\n {\"Are you sure?\"}\r\n \r\n \r\n This will permanently delete this Team.\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n {\"User Manager\"}\r\n \r\n \r\n\r\n \r\n {customList(left)}\r\n \r\n \r\n \r\n ≫\r\n \r\n \r\n >\r\n \r\n \r\n <\r\n \r\n \r\n ≪\r\n \r\n \r\n \r\n {customList(right)}\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n );\r\n}","import * as React from 'react';\r\nimport Table from '@mui/material/Table';\r\nimport TableBody from '@mui/material/TableBody';\r\nimport TableCell from '@mui/material/TableCell';\r\nimport TableHead from '@mui/material/TableHead';\r\nimport TableRow from '@mui/material/TableRow';\r\nimport DropdownViewModel from '../ViewModels/DropdownViewModel';\r\nimport authService from '../api-authorization/AuthorizeService';\r\nimport TeamViewModel from './TeamViewModel';\r\nimport TeamTableRow from './TeamTableRow';\r\n\r\ninterface ITeamTableProps {\r\n teams: TeamViewModel[];\r\n roles: string | string[];\r\n refresh: () => void;\r\n users: DropdownViewModel[];\r\n}\r\n\r\nexport default function TeamTable(props: ITeamTableProps) {\r\n const [users, setUsers] = React.useState([]);\r\n React.useEffect(() => { getData(); }, []);\r\n\r\n const items = props.teams.map((item, index) =>\r\n \r\n );\r\n\r\n const getData = async () => {\r\n const token = await authService.getAccessToken();\r\n\r\n fetch('User/GetTeamLeaders', {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` },\r\n })\r\n .then(response => response.json())\r\n .then(data => {\r\n setUsers(data);\r\n })\r\n .catch(error => {\r\n console.log('Get team leaders error: ' + error);\r\n });\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n Team\r\n \r\n \r\n \r\n \r\n \r\n {items}\r\n \r\n
    \r\n );\r\n}","import * as React from 'react';\r\n// import Paper from '@mui/material/Paper';\r\n// import { createStyles, Theme, makeStyles } from '@mui/material/styles';\r\nimport Grid from '@mui/material/Grid';\r\nimport Typography from '@mui/material/Typography';\r\nimport authService from '../api-authorization/AuthorizeService';\r\nimport Button from '@mui/material/Button';\r\nimport LinearProgress from '@mui/material/LinearProgress';\r\nimport TeamViewModel from './TeamViewModel';\r\nimport TeamTable from './TeamTable';\r\nimport Dialog from '@mui/material/Dialog';\r\nimport DialogContent from '@mui/material/DialogContent';\r\nimport DialogTitle from '@mui/material/DialogTitle';\r\nimport DialogActions from '@mui/material/DialogActions';\r\nimport { ValidatorForm, TextValidator } from 'react-material-ui-form-validator';\r\nimport DropdownViewModel from '../ViewModels/DropdownViewModel';\r\n//const useStyles = makeStyles((theme: Theme) =>\r\n// createStyles({\r\n// paper: {\r\n// padding: theme.spacing(2),\r\n// },\r\n// table: {\r\n// minWidth: 650,\r\n// },\r\n// })\r\n//);\r\n\r\nexport default function TeamList() {\r\n // const classes = useStyles();\r\n\r\n const [teams, setTeams] = React.useState([]);\r\n const [users, setUsers] = React.useState([]);\r\n const [loaded, setLoaded] = React.useState(true);\r\n const [submitting, setSubmitting,] = React.useState(false);\r\n const [roles, setRoles] = React.useState(\"\");\r\n const [dialog, setDialogOpen] = React.useState(false);\r\n const [newTeam, setNewTeam] = React.useState(new TeamViewModel());\r\n\r\n React.useEffect(() => {\r\n const initialise = async () => {\r\n setLoaded(false);\r\n const user = await authService.getUser();\r\n setRoles(user.role);\r\n }\r\n initialise();\r\n }, []);\r\n\r\n React.useEffect(() => {\r\n if (!loaded) {\r\n setLoaded(true);\r\n }\r\n }, [teams, loaded]);\r\n const openDialog = () => {\r\n setDialogOpen(true);\r\n }\r\n const handleClose = (refresh: boolean) => {\r\n if (refresh) {\r\n getData();\r\n }\r\n setDialogOpen(false);\r\n }\r\n const getData = React.useCallback(async () => {\r\n setLoaded(false);\r\n const token = await authService.getAccessToken();\r\n\r\n fetch('Team/GetTeams', {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n })\r\n .then(response => response.json())\r\n .then(data => {\r\n setTeams(data);\r\n fetch('Team/GetUsers', {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n })\r\n .then(response => response.json())\r\n .then(data => {\r\n setUsers(data);\r\n setLoaded(true);\r\n })\r\n .catch(error => { setLoaded(true) });\r\n })\r\n .catch(error => { setLoaded(true) });\r\n\r\n \r\n \r\n }, [roles]);\r\n React.useEffect(() => {\r\n if (roles && roles.length > 0) {\r\n getData();\r\n }\r\n }, [roles, getData]);\r\n\r\n const createTeam = async () => {\r\n const token = await authService.getAccessToken();\r\n\r\n fetch('Team/CreateTeam', {\r\n method: 'POST',\r\n headers: !token ? { 'Content-Type': 'application/json; charset=utf-8' } : { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json; charset=utf-8' },\r\n body: JSON.stringify(newTeam)\r\n })\r\n .then(response => response.json())\r\n .then(data => {\r\n if (data) {\r\n handleClose(true);\r\n setNewTeam(new TeamViewModel());\r\n }\r\n setSubmitting(false);\r\n })\r\n .catch(error => { setSubmitting(false); });\r\n };\r\n const handleChange = (event: React.ChangeEvent) => {\r\n setNewTeam({\r\n ...newTeam,\r\n [event.target.name]: event.target.value\r\n });\r\n }\r\n\r\n const list = ;\r\n\r\n return (\r\n \r\n {// \r\n }\r\n \r\n \r\n \r\n \r\n Teams\r\n \r\n \r\n \r\n \r\n {(roles && (roles.includes('SuperAdmin') ||roles.includes('Admin') || roles.includes('Team Leader') || roles.includes('Creator'))) &&\r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n {!loaded && }\r\n {list}\r\n \r\n \r\n {// \r\n }\r\n \r\n \r\n {\"Create new team\"}\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n );\r\n}","export default class CampaignViewModel {\r\n public id: number = 0;\r\n public name: string = '';\r\n public userName: string = '';\r\n public password: string = '';\r\n public campaignHolderEmail: string = '';\r\n public googleSheetLink: string = ''; \r\n public clientId: number = 0;\r\n public clientName: string = '';\r\n public clientEmail: string = '';\r\n public clientPhone: string = '';\r\n public clientPartner: string = '';\r\n public packageId: number = 0;\r\n public packageName: string = '';\r\n public price: number = 0;\r\n public countryId: number = 0;\r\n public country: string = '';\r\n public agreementLength: string = '';\r\n public opportunities: OpportunityViewModel[] = [];\r\n public executives: string[] = [];\r\n public status: string = '';\r\n public clientTeamLeaderId: string = '';\r\n public clientTeamLeader: string = '';\r\n public mainExecutiveId: string = '';\r\n public mainExecutive: string = '';\r\n public vpnNumber: string = \"\";\r\n public woodPeckerId: string = '';\r\n}\r\n\r\nexport class CampaignListViewModel {\r\n public id: number = 0;\r\n public name: string = '';\r\n public username: string = '';\r\n public password: string = '';\r\n public clientId: number = 0;\r\n public clientName: string = '';\r\n public packageName: string = '';\r\n public price: string = '';\r\n public country: string = '';\r\n public activityLogged: boolean = false;\r\n public opportunities: number = 0;\r\n public status: string = '';\r\n public archived: boolean = false;\r\n public isManager: boolean = false;\r\n public isExecutive: boolean = false;\r\n public mainExecutive: string = '';\r\n public userCampaigns: []=[];\r\n public mainExecutiveId: any;\r\n public isTeamLeader: boolean = false;\r\n public emails: number = 0;\r\n}\r\n\r\nexport class OpportunityViewModel {\r\n public campaignId: number = 0;\r\n public name: string = '';\r\n public link: string = '';\r\n public companyName: string = '';\r\n public notes: string = '';\r\n public email: string = '';\r\n public phoneNumber: string = '';\r\n public id: number = 0;\r\n public timestamp: Date = new Date();\r\n public interested: string = \"\";\r\n}\r\n\r\nexport class UserCampaignViewModel {\r\n public userId: string = '';\r\n public campaignId: number = 0;\r\n public startDate: Date = new Date();\r\n public endDate: Date | null = null;\r\n}\r\n\r\nexport class UserCampaignListViewModel {\r\n public id: number = 0;\r\n public campaignId: number = 0;\r\n public name: string = '';\r\n public temp: boolean = false;\r\n}\r\n\r\nexport class MessageViewModel {\r\n public id: number = 0;\r\n public title: string = '';\r\n public content: string = '';\r\n public campaignId: number = 0;\r\n}\r\n\r\nexport class CreateMessageViewModel {\r\n public title: string = '';\r\n public content: string = '';\r\n public campaignId: number = 0;\r\n\r\n public constructor(id: number) {\r\n this.campaignId = id;\r\n this.title = '';\r\n this.content = '';\r\n }\r\n}\r\n\r\nexport class NoteViewModel {\r\n public id: number = 0;\r\n public author: string = '';\r\n public content: string = '';\r\n public type: string = '';\r\n public subType: string = '';\r\n public timestamp: Date = new Date();\r\n public client: boolean = false;\r\n public applicationContent: string = '';\r\n}\r\n\r\nexport class CreateNoteViewModel {\r\n public content: string = '';\r\n public commonReason: string = '';\r\n public noteTypeId: number = 0;\r\n public id: number = 0;\r\n public statusTo: string = '';\r\n public constructor(id: number) {\r\n this.id = id;\r\n this.noteTypeId = 0;\r\n this.content = '';\r\n }\r\n}\r\n\r\nexport class CreatePackageViewModel {\r\n public campaignId: number = 0;\r\n public packageName: string = '';\r\n public price: number = 0;\r\n public custom: boolean = false;\r\n}\r\n\r\n","import { Theme } from '@mui/material/styles';\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport Grid from '@mui/material/Grid';\r\nimport Typography from '@mui/material/Typography';\r\nimport { OpportunityViewModel } from '../../ViewModels/CampaignViewModel';\r\nimport Divider from '@mui/material/Divider';\r\nimport Accordion from '@mui/material/Accordion';\r\nimport AccordionSummary from '@mui/material/AccordionSummary';\r\nimport AccordionDetails from '@mui/material/AccordionDetails';\r\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\r\nimport SentimentNeutralIcon from '@mui/icons-material/SentimentNeutral';\r\nimport SentimentSatisfiedAltIcon from '@mui/icons-material/SentimentSatisfiedAlt';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n paper: {\r\n padding: theme.spacing(2),\r\n marginBottom: theme.spacing(2)\r\n },\r\n wordBreak: {\r\n wordBreak: 'break-all'\r\n },\r\n heading: {\r\n fontSize: theme.typography.pxToRem(15),\r\n fontWeight: theme.typography.fontWeightRegular,\r\n },\r\n buttonProgress: {\r\n position: 'absolute',\r\n top: '50%',\r\n left: '50%',\r\n marginTop: -12,\r\n marginLeft: -12,\r\n }\r\n })\r\n);\r\n\r\ninterface IListItemProps {\r\n lead: OpportunityViewModel;\r\n refresh: () => void;\r\n}\r\n\r\nexport default function LeadListItem(props: IListItemProps) {\r\n const classes = useStyles();\r\n const { lead } = props;\r\n \r\n\r\n return (\r\n \r\n }\r\n aria-controls={lead.id + \"-content\"}\r\n id={lead.id + \"-header\"}\r\n >\r\n {lead.name}\r\n {\r\n lead.interested ==\"INTERESTED\"?\r\n \r\n :\r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n {new Date(lead.timestamp).toLocaleString()}\r\n \r\n \r\n Company\r\n {lead.companyName}\r\n \r\n \r\n Link\r\n {lead.link}\r\n \r\n \r\n Phone Number\r\n {lead.phoneNumber}\r\n \r\n \r\n Email\r\n {lead.email}\r\n \r\n \r\n Notes\r\n {lead.notes}\r\n \r\n \r\n \r\n \r\n );\r\n}","import * as React from 'react';\r\nimport Grid from '@mui/material/Grid';\r\nimport Typography from '@mui/material/Typography';\r\nimport { OpportunityViewModel } from '../../ViewModels/CampaignViewModel';\r\nimport authService from '../../api-authorization/AuthorizeService';\r\nimport LinearProgress from '@mui/material/LinearProgress';\r\nimport LeadListItem from './LeadListItem';\r\nimport Grow from '@mui/material/Grow';\r\nimport Pagination from '@mui/material/Pagination';\r\ninterface IListProps {\r\n campaignId: number;\r\n active: boolean;\r\n}\r\n\r\nexport default function LeadList(props: IListProps) {\r\n const [leads, setLeads] = React.useState([]);\r\n const [loaded, setLoaded] = React.useState(false);\r\n const [page, setPage] = React.useState(1);\r\n const [pageMax, setPageMax] = React.useState(1);\r\n const [filteredLeads, setFilteredLeads] = React.useState([]);\r\n const getData = React.useCallback(async () => {\r\n setLoaded(false);\r\n const token = await authService.getAccessToken();\r\n\r\n fetch(`Woodpecker/GetWoodpeckerLeads?campaignId=${props.campaignId}`, {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n })\r\n .then(response => response.json())\r\n .then((data: OpportunityViewModel[]) => {\r\n setLeads(data);\r\n setLoaded(true);\r\n setPageMax(Math.ceil(data.length / 10));\r\n setFilteredLeads(data.slice(0,10))\r\n })\r\n .catch(error => {\r\n console.log('Lead list error: ' + error);\r\n setLoaded(true);\r\n });\r\n }, [props.campaignId]);\r\n React.useEffect(() => {\r\n getData();\r\n }, [getData]);\r\n\r\n \r\n\r\n const items = filteredLeads.map((lead, index) => {\r\n return ;\r\n });\r\n const handlePageChange = (event: any, newValue: any) => {\r\n setPage(newValue);\r\n let l = leads.slice();\r\n setFilteredLeads(l.splice((newValue - 1) * 10, 10));\r\n };\r\n return (\r\n \r\n \r\n \r\n Opportunities\r\n \r\n \r\n {!loaded ? :\r\n \r\n \r\n \r\n {items}\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n );\r\n}","import * as React from 'react';\r\nimport MenuItem from '@mui/material/MenuItem';\r\nimport authService from '../api-authorization/AuthorizeService';\r\nimport CircularProgress from '@mui/material/CircularProgress';\r\nimport { SelectValidator } from 'react-material-ui-form-validator';\r\n\r\ninterface IDropdownProps {\r\n id: number;\r\n onChange: (event: React.ChangeEvent) => void;\r\n}\r\n\r\nclass DropdownViewModel {\r\n id: number = 0;\r\n value: string = '';\r\n}\r\n\r\nexport default function NoteTypeDropdown(props: IDropdownProps) {\r\n const [list, setList] = React.useState([]);\r\n const [loaded, setLoaded] = React.useState(false);\r\n\r\n React.useEffect(() => {\r\n setLoaded(false);\r\n getData();\r\n }, []);\r\n\r\n const getData = async () => {\r\n const token = await authService.getAccessToken();\r\n\r\n const response = await fetch('Campaign/GetNoteTypes', {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n });\r\n const data = await response.json();\r\n setList(data);\r\n setLoaded(true);\r\n }\r\n\r\n const items = list.map((item, index) =>\r\n {item.value});\r\n\r\n return (\r\n \r\n {loaded ? null : }\r\n \r\n )\r\n }}\r\n >\r\n {items}\r\n \r\n );\r\n}","import * as React from 'react';\r\nimport { Theme } from '@mui/material/styles';\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport Dialog from '@mui/material/Dialog';\r\nimport DialogActions from '@mui/material/DialogActions';\r\nimport DialogContent from '@mui/material/DialogContent';\r\nimport DialogTitle from '@mui/material/DialogTitle';\r\nimport Typography from '@mui/material/Typography';\r\nimport Grid from '@mui/material/Grid';\r\nimport Button from '@mui/material/Button';\r\nimport CircularProgress from '@mui/material/CircularProgress';\r\nimport { CreateNoteViewModel } from '../../ViewModels/CampaignViewModel';\r\nimport { ValidatorForm, TextValidator } from 'react-material-ui-form-validator';\r\nimport authService from '../../api-authorization/AuthorizeService';\r\nimport NoteTypeDropdown from '../../Dropdowns/NoteTypeDropdown';\r\nimport FormControlLabel from '@mui/material/FormControlLabel';\r\nimport Switch from '@mui/material/Switch';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n heading: {\r\n fontSize: theme.typography.pxToRem(15),\r\n fontWeight: theme.typography.fontWeightRegular,\r\n },\r\n buttonProgress: {\r\n position: 'absolute',\r\n top: '50%',\r\n left: '50%',\r\n marginTop: -12,\r\n marginLeft: -12,\r\n }\r\n }),\r\n);\r\n\r\ninterface ICreateProps {\r\n clientId: number;\r\n campaignId: number;\r\n open: boolean;\r\n close: (refresh: boolean) => void;\r\n}\r\n\r\nexport default function CreateNote(props: ICreateProps) {\r\n const classes = useStyles();\r\n const [note, setNote] = React.useState(new CreateNoteViewModel(props.campaignId));\r\n const [saving, setSaving] = React.useState(false);\r\n const [serverError, setError] = React.useState('');\r\n const [clientNote, setClientNote] = React.useState(false);\r\n\r\n const handleChange = (event: React.ChangeEvent) => {\r\n setNote({\r\n ...note,\r\n [event.target.name]: event.target.value\r\n });\r\n }\r\n\r\n const handleClientToggle = (event: React.ChangeEvent) => {\r\n setClientNote(event.target.checked);\r\n }\r\n\r\n const onClose = () => {\r\n if (!saving) {\r\n setNote(new CreateNoteViewModel(props.campaignId));\r\n props.close(false);\r\n }\r\n }\r\n\r\n const submit = async () => {\r\n setSaving(true);\r\n const token = await authService.getAccessToken();\r\n\r\n if (clientNote) {\r\n const newNote = note;\r\n note.id = props.clientId;\r\n\r\n fetch('Client/CreateNote', {\r\n method: 'POST',\r\n headers: !token ? { 'Content-Type': 'application/json; charset=utf-8' } : { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json; charset=utf-8' },\r\n body: JSON.stringify(newNote)\r\n })\r\n .then(response => response.text())\r\n .then(data => {\r\n setSaving(false);\r\n props.close(true);\r\n setNote(new CreateNoteViewModel(props.campaignId));\r\n })\r\n .catch(error => {\r\n setSaving(false);\r\n setError('A server error has occurred, please try again.');\r\n });\r\n\r\n } else {\r\n fetch('Campaign/CreateNote', {\r\n method: 'POST',\r\n headers: !token ? { 'Content-Type': 'application/json; charset=utf-8' } : { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json; charset=utf-8' },\r\n body: JSON.stringify(note)\r\n })\r\n .then(response => response.text())\r\n .then(data => {\r\n setSaving(false);\r\n props.close(true);\r\n setNote(new CreateNoteViewModel(props.campaignId));\r\n })\r\n .catch(error => {\r\n setSaving(false);\r\n setError('A server error has occurred, please try again.');\r\n });\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n Add Note\r\n \r\n \r\n \r\n \r\n \r\n {serverError}\r\n \r\n \r\n }\r\n label=\"Client Note\"\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}","import * as React from 'react';\r\nimport { Theme } from '@mui/material/styles';\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport Grid from '@mui/material/Grid';\r\nimport Paper from '@mui/material/Paper';\r\nimport Typography from '@mui/material/Typography';\r\nimport { NoteViewModel } from '../../ViewModels/CampaignViewModel';\r\nimport authService from '../../api-authorization/AuthorizeService';\r\nimport Divider from '@mui/material/Divider';\r\nimport CreateNote from './CreateNote';\r\nimport Button from '@mui/material/Button';\r\nimport Flag from '@mui/icons-material/Flag';\r\nimport Grow from '@mui/material/Grow';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n paper: {\r\n padding: theme.spacing(2),\r\n marginBottom: theme.spacing(2)\r\n },\r\n notes: {\r\n whiteSpace: 'pre-wrap'\r\n }\r\n })\r\n);\r\n\r\ninterface IListProps {\r\n campaignId: number;\r\n clientId: number;\r\n}\r\n\r\nexport default function Notes(props: IListProps) {\r\n const classes = useStyles();\r\n const [notes, setNotes] = React.useState([]);\r\n const [loaded, setLoaded] = React.useState(false);\r\n const [openDialog, setDialog] = React.useState(false);\r\n\r\n const getData = React.useCallback(async () => {\r\n setLoaded(false);\r\n const token = await authService.getAccessToken();\r\n\r\n fetch(`Campaign/GetNotes?clientId=${props.clientId}&campaignId=${props.campaignId}`, {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n })\r\n .then(response => response.json())\r\n .then(data => {\r\n setNotes(data);\r\n setLoaded(true);\r\n })\r\n .catch(error => {\r\n console.log('Note list error: ' + error);\r\n setLoaded(true);\r\n });\r\n }, [props.campaignId, props.clientId]);\r\n React.useEffect(() => {\r\n if (props.clientId > 0) {\r\n getData();\r\n }\r\n }, [getData, props.clientId]);\r\n\r\n const items = notes.map((note, index) => {\r\n const notesArray = note.content.split('\\n');\r\n return (\r\n \r\n \r\n \r\n \r\n {note.client &&\r\n \r\n }\r\n {note.content.startsWith(\"Customer Satifaction Survey Results for Week of\") ?\r\n {notesArray[0]}\r\n :\r\n { note.type }\r\n }\r\n \r\n \r\n \r\n {new Date(note.timestamp).toLocaleString()}\r\n \r\n \r\n \r\n \r\n \r\n Created By: {note.author}\r\n \r\n {\r\n note.subType!=null &&\r\n \r\n {note.subType}\r\n \r\n }\r\n {\r\n note.applicationContent!=null &&\r\n \r\n {note.applicationContent}\r\n \r\n }\r\n {note.content.startsWith(\"Customer Satifaction Survey Results for Week of\") ?\r\n \r\n {notesArray[2].slice(0, 9)}\r\n {notesArray[2].slice(10)}\r\n \r\n {notesArray[3].slice(0, 8)}\r\n {notesArray[3].slice(9)}\r\n \r\n {notesArray[4].slice(0, 14)}\r\n {notesArray[4].slice(15)}\r\n \r\n {notesArray[5].slice(0, 13)}\r\n {notesArray[5].slice(14)}\r\n \r\n\r\n \r\n Comments: \r\n {notesArray[7]}\r\n\r\n\r\n \r\n :\r\n \r\n \r\n {note.content}\r\n\r\n\r\n \r\n }\r\n \r\n \r\n );\r\n });\r\n\r\n const handleDialog = () => {\r\n setDialog(!openDialog);\r\n }\r\n\r\n const closeDialog = (refresh: boolean) => {\r\n setDialog(false);\r\n\r\n if (refresh) {\r\n getData();\r\n }\r\n }\r\n\r\n \r\n return (\r\n \r\n \r\n \r\n Notes\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {items}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}","import * as React from 'react';\r\nimport { Theme } from '@mui/material/styles';\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport Dialog from '@mui/material/Dialog';\r\nimport DialogActions from '@mui/material/DialogActions';\r\nimport DialogContent from '@mui/material/DialogContent';\r\nimport DialogTitle from '@mui/material/DialogTitle';\r\nimport Typography from '@mui/material/Typography';\r\nimport Grid from '@mui/material/Grid';\r\nimport Button from '@mui/material/Button';\r\nimport CircularProgress from '@mui/material/CircularProgress';\r\nimport { CreateNoteViewModel } from '../../ViewModels/CampaignViewModel';\r\nimport { ValidatorForm, TextValidator, SelectValidator } from 'react-material-ui-form-validator';\r\nimport authService from '../../api-authorization/AuthorizeService';\r\nimport MenuItem from '@mui/material/MenuItem';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n heading: {\r\n fontSize: theme.typography.pxToRem(15),\r\n fontWeight: theme.typography.fontWeightRegular,\r\n },\r\n buttonProgress: {\r\n position: 'absolute',\r\n top: '50%',\r\n left: '50%',\r\n marginTop: -12,\r\n marginLeft: -12,\r\n }\r\n }),\r\n);\r\n\r\ninterface ICreateProps {\r\n clientId: number;\r\n campaignId: number;\r\n open: boolean;\r\n close: (refresh: boolean) => void;\r\n from: string;\r\n to: string;\r\n}\r\n\r\nexport default function CreateStatusNote(props: ICreateProps) {\r\n const classes = useStyles();\r\n const [note, setNote] = React.useState(new CreateNoteViewModel(props.campaignId));\r\n const [saving, setSaving] = React.useState(false);\r\n const [loading, setLoading] = React.useState(true);\r\n const [serverError, setError] = React.useState('');\r\n const [reasons, setReasons] = React.useState([]);\r\n\r\n React.useEffect(() => {\r\n\r\n getReasons();\r\n }, [props.to]);\r\n const getReasons = async () => {\r\n const token = await authService.getAccessToken();\r\n\r\n fetch(`Client/GetCommonReasons?from=${props.from}&to=${props.to}`, {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n })\r\n .then(response => response.json())\r\n .then(data => {\r\n setReasons(data);\r\n setLoading(false);\r\n })\r\n .catch(error => {\r\n });\r\n }\r\n const handleChange = (event: React.ChangeEvent) => {\r\n setNote({\r\n ...note,\r\n [event.target.name]: event.target.value\r\n });\r\n }\r\n\r\n\r\n const onClose = () => {\r\n if (!saving) {\r\n setNote(new CreateNoteViewModel(props.campaignId));\r\n props.close(false);\r\n }\r\n }\r\n\r\n const submit = async () => {\r\n setSaving(true);\r\n const token = await authService.getAccessToken();\r\n\r\n const newNote = note;\r\n note.id = props.campaignId;\r\n note.statusTo = props.to;\r\n fetch('Client/CreateStatusNote', {\r\n method: 'POST',\r\n headers: !token ? { 'Content-Type': 'application/json; charset=utf-8' } : { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json; charset=utf-8' },\r\n body: JSON.stringify(newNote)\r\n })\r\n .then(response => response.text())\r\n .then(data => {\r\n setNote(new CreateNoteViewModel(props.campaignId));\r\n fetch(`Campaign/UpdateStatus?campaignId=${props.campaignId}&status=${props.to}`, {\r\n method: 'POST',\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n })\r\n .then(response => response.text())\r\n .then(data => {\r\n setSaving(false);\r\n props.close(true);\r\n })\r\n .catch(error => {\r\n setSaving(false);\r\n });\r\n })\r\n .catch(error => {\r\n setSaving(false);\r\n setError('A server error has occurred, please try again.');\r\n });\r\n\r\n \r\n }\r\n const commonReasons = reasons.map(m => {m});\r\n return (\r\n\r\n \r\n \r\n Add Note\r\n \r\n \r\n {!loading &&\r\n \r\n \r\n \r\n \r\n {serverError}\r\n \r\n {\r\n reasons.length > 0 &&\r\n \r\n \r\n {commonReasons}\r\n \r\n \r\n }\r\n \r\n {\r\n reasons.length > 0 ?\r\n \r\n :\r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n );\r\n}","import * as React from 'react';\r\nimport { Theme } from '@mui/material/styles';\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport Grid from '@mui/material/Grid';\r\nimport Fab from '@mui/material/Fab';\r\nimport Typography from '@mui/material/Typography';\r\nimport MenuItem from '@mui/material/MenuItem';\r\nimport Menu from '@mui/material/Menu';\r\nimport green from '@mui/material/colors/green';\r\nimport red from '@mui/material/colors/red';\r\nimport amber from '@mui/material/colors/amber';\r\nimport grey from '@mui/material/colors/grey';\r\nimport CreateStatusNote from './CreateStatusNote';\r\nimport Divider from '@mui/material/Divider';\r\nimport blue from '@mui/material/colors/blue';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n paper: {\r\n marginBottom: theme.spacing(2)\r\n },\r\n statusGrid: {\r\n flexGrow: 1\r\n },\r\n green: {\r\n color: theme.palette.getContrastText(green[500]),\r\n backgroundColor: green[500],\r\n '&:hover': {\r\n backgroundColor: green[700],\r\n },\r\n width: '100%'\r\n },\r\n blue: {\r\n color: theme.palette.getContrastText(blue[500]),\r\n backgroundColor: blue[500],\r\n '&:hover': {\r\n backgroundColor: blue[700],\r\n },\r\n width: '100%'\r\n },\r\n amber: {\r\n color: theme.palette.getContrastText(amber[500]),\r\n backgroundColor: amber[500],\r\n '&:hover': {\r\n backgroundColor: amber[700],\r\n },\r\n width: '100%'\r\n },\r\n lightRed: {\r\n color: theme.palette.getContrastText('#ff7961'),\r\n backgroundColor: '#ff7961',\r\n '&:hover': {\r\n backgroundColor: '#ff7961',\r\n },\r\n width: '100%'\r\n },\r\n red: {\r\n color: theme.palette.getContrastText(red[500]),\r\n backgroundColor: red[500],\r\n '&:hover': {\r\n backgroundColor: red[700],\r\n },\r\n width: '100%'\r\n },\r\n darkRed: {\r\n color: theme.palette.getContrastText(red[700]),\r\n backgroundColor: red[700],\r\n '&:hover': {\r\n backgroundColor: red[900],\r\n },\r\n width: '100%'\r\n },\r\n grey: {\r\n color: theme.palette.getContrastText(grey[500]),\r\n backgroundColor: grey[500],\r\n width: '100%'\r\n },\r\n default: {\r\n width: '100%'\r\n },\r\n buttonProgress: {\r\n position: 'absolute',\r\n top: '50%',\r\n left: '50%',\r\n marginTop: -12,\r\n marginLeft: -12,\r\n }\r\n })\r\n);\r\n\r\ninterface IListItemProps {\r\n status: string;\r\n onClick: (value: string) => void;\r\n}\r\n\r\nconst StatusListItem = React.forwardRef((props: IListItemProps, ref: any) => {\r\n const onChange = () => {\r\n props.onClick(props.status);\r\n }\r\n\r\n return (\r\n \r\n {props.status}\r\n \r\n );\r\n});\r\n\r\ninterface IStatusProps {\r\n campaignId: number;\r\n status: string;\r\n clientId: number;\r\n refresh: () => void;\r\n user: any;\r\n}\r\n\r\nexport default function Status(props: IStatusProps) {\r\n const classes = useStyles();\r\n const [anchorEl, setAnchorEl] = React.useState(null);\r\n const [newStatus, setNew] = React.useState(props.status);\r\n const [user, setUser] = React.useState(null);\r\n //const [saving, setSaving] = React.useState(false);\r\n React.useEffect(() => { setNew(props.status); }, [props.status]);\r\n React.useEffect(() => { setUser(props.user); }, [props.user]);\r\n const [openDialog, setDialog] = React.useState(false);\r\n const adminStatuses = [\r\n { status: \"Live\", class: classes.green },\r\n { status: \"Pending\", class: classes.amber },\r\n { status: \"Notice\", class: classes.lightRed },\r\n { status: \"Cancelled\", class: classes.red },\r\n { status: \"Onboarding\", class: classes.default },\r\n { status: \"Complete\", class: classes.default },\r\n { status: \"Paused\", class: classes.grey },\r\n { status: \"Confirmed Cancelling\", class: classes.red },\r\n { status: \"DRAFT\", class: classes.blue },\r\n { status: \"RUNNING\", class: classes.green },\r\n { status: \"EDITED\", class: classes.green },\r\n { status: \"COMPLETED\", class: classes.default },\r\n { status: \"PAUSED\", class: classes.amber },\r\n { status: \"DELETED\", class: classes.red },\r\n { status: \"Unknown\", class: classes.red },\r\n { status: \"STOPPED\", class: classes.red },\r\n ];\r\n const statuses = [\r\n { status: \"Live\", class: classes.green },\r\n\r\n ];\r\n\r\n const onChange = async (value: string) => {\r\n setNew(value);\r\n //setSaving(true);\r\n handleClose();\r\n handleDialog();\r\n //const token = await authService.getAccessToken();\r\n\r\n //fetch(`Campaign/UpdateStatus?campaignId=${props.campaignId}&status=${value}`, {\r\n // method: 'POST',\r\n // headers: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n //})\r\n // .then(response => response.text())\r\n // .then(data => {\r\n // setSaving(false);\r\n // })\r\n // .catch(error => {\r\n // setSaving(false);\r\n // });\r\n }\r\n\r\n //const openMenu = (event: React.MouseEvent) => {\r\n // setAnchorEl(event.currentTarget); \r\n //}\r\n\r\n const handleClose = () => {\r\n setAnchorEl(null);\r\n };\r\n const handleDialog = () => {\r\n setDialog(!openDialog);\r\n }\r\n\r\n const closeDialog = (refresh: boolean) => {\r\n setDialog(false);\r\n\r\n if (!refresh) {\r\n setNew(props.status);\r\n } else {\r\n props.refresh();\r\n }\r\n }\r\n const statusClass = newStatus.length > 0 ? adminStatuses.find(f => f.status === newStatus)!.class : classes.default;\r\n const list = statuses.map((status) => (\r\n \r\n ));\r\n const adminList = adminStatuses.map((status) => (\r\n \r\n ));\r\n return (\r\n \r\n
    \r\n \r\n \r\n Status\r\n \r\n \r\n \r\n {newStatus}\r\n {/*saving && */}\r\n \r\n \r\n \r\n
    \r\n \r\n \r\n {\r\n (user?.role === \"Admin\" || user?.role === \"SuperAdmin\") ?\r\n adminList :\r\n list\r\n }\r\n \r\n \r\n
    \r\n );\r\n}","import * as React from 'react';\r\nimport { Theme } from '@mui/material/styles';\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport Grid from '@mui/material/Grid';\r\nimport Typography from '@mui/material/Typography';\r\nimport TextField from '@mui/material/TextField';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport Edit from '@mui/icons-material/Edit';\r\nimport Cancel from '@mui/icons-material/Cancel';\r\nimport Save from '@mui/icons-material/Save';\r\nimport MenuItem from '@mui/material/MenuItem';\r\nimport DatePicker from '@mui/lab/DatePicker';\r\nimport AdapterDateFns from '@mui/lab/AdapterDateFns';\r\nimport LocalizationProvider from '@mui/lab/LocalizationProvider';\r\nimport green from '@mui/material/colors/green';\r\nimport DropdownViewModel from '../ViewModels/DropdownViewModel';\r\nimport Visibility from '@mui/icons-material/Visibility';\r\nimport VisibilityOff from '@mui/icons-material/VisibilityOff';\r\nimport InputBase from '@mui/material/InputBase';\r\nimport CopyToClipboard from 'react-copy-to-clipboard';\r\nimport FileCopyIcon from '@mui/icons-material/FileCopy';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n green: {\r\n color: green[500],\r\n '&:hover': {\r\n color: green[700],\r\n },\r\n },\r\n password: {\r\n paddingBottom: 0\r\n },\r\n })\r\n);\r\n\r\ninterface IEditProps {\r\n decorator?: string;\r\n info: string | number | Date | null;\r\n date?: boolean;\r\n nullable?: boolean;\r\n label: string;\r\n selectId?: string | number;\r\n infoList?: DropdownViewModel[];\r\n onSave: (newValue: string | number | Date | null) => Promise;\r\n showPassword?: boolean;\r\n hasClipboard?: boolean;\r\n togglePassword?: () => void;\r\n}\r\n\r\nexport default function InfoEdit(props: IEditProps) {\r\n const classes = useStyles();\r\n const [editing, setEditing] = React.useState(false);\r\n const [newInfo, setInfo] = React.useState(props.selectId ?? props.info);\r\n const [saving, setSaving] = React.useState(false);\r\n\r\n React.useEffect(() => setInfo(props.selectId ?? props.info), [editing, props.selectId, props.info]);\r\n\r\n const handleEdit = () => {\r\n var pastEdit = editing;\r\n\r\n setEditing(!editing);\r\n\r\n if (pastEdit) {\r\n setInfo(props.info);\r\n }\r\n }\r\n\r\n const onChange = (event: React.ChangeEvent) => {\r\n if (isNaN(event.target.valueAsNumber)) {\r\n setInfo(event.target.value);\r\n }\r\n else {\r\n if (props.label.includes('Renewal') && event.target.valueAsNumber > 31) setInfo(31);\r\n else if (props.label.includes('Renewal') && event.target.valueAsNumber < 1) setInfo(1);\r\n else setInfo(event.target.valueAsNumber);\r\n }\r\n }\r\n\r\n const save = () => {\r\n props.onSave(newInfo).then(() => {\r\n setSaving(false);\r\n setEditing(false);\r\n });\r\n }\r\n\r\n const inputProps = props.label.includes('Renewal') ? { min: 1, max: 31 } : {};\r\n\r\n const element = editing && props.infoList ?\r\n \r\n \r\n {props.label}\r\n \r\n \r\n \r\n {props.infoList.map(item => {\r\n return \r\n {item.value}\r\n ;\r\n })}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n : editing ?\r\n \r\n \r\n {props.label}\r\n \r\n \r\n {props.date ?\r\n \r\n {\r\n setInfo(newValue as Date);\r\n }}\r\n renderInput={(params) => }\r\n />\r\n \r\n :\r\n \r\n }\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n :\r\n \r\n \r\n {props.label}\r\n \r\n \r\n {props.showPassword !== undefined ?\r\n \r\n :\r\n {props.decorator}{props.date ? props.info ? new Date(props.info).toLocaleDateString(\"en-GB\") : 'None' : props.info}\r\n }\r\n \r\n \r\n \r\n {props.showPassword !== undefined &&\r\n \r\n {props.showPassword ? : }\r\n \r\n }\r\n {props.hasClipboard !== undefined && props.hasClipboard &&\r\n \r\n { }}>\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n ;\r\n\r\n return (\r\n \r\n {element}\r\n );\r\n}\r\n\r\nInfoEdit.defaultProps = {\r\n date: false\r\n};","import * as React from 'react';\r\nimport { Theme } from '@mui/material/styles';\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport Grid from '@mui/material/Grid';\r\nimport Typography from '@mui/material/Typography';\r\nimport CampaignViewModel from '../../ViewModels/CampaignViewModel';\r\nimport authService from '../../api-authorization/AuthorizeService';\r\nimport Skeleton from '@mui/material/Skeleton';\r\nimport InfoEdit from '../../Utilities/InfoEdit';\r\nimport Button from '@mui/material/Button';\r\nimport { Redirect } from 'react-router';\r\nimport Dialog from '@mui/material/Dialog';\r\nimport DialogActions from '@mui/material/DialogActions';\r\nimport DialogContent from '@mui/material/DialogContent';\r\nimport DialogContentText from '@mui/material/DialogContentText';\r\nimport DialogTitle from '@mui/material/DialogTitle';\r\nimport { Link as RouterLink, LinkProps as RouterLinkProps } from 'react-router-dom';\r\nimport Divider from '@mui/material/Divider';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n paper: {\r\n marginBottom: theme.spacing(2)\r\n },\r\n showButton: {\r\n padding: 8\r\n },\r\n bottomSpacing: {\r\n marginBottom: theme.spacing(2)\r\n },\r\n password: {\r\n paddingBottom: 0\r\n }\r\n })\r\n);\r\n\r\ninterface IInfoProps {\r\n campaignId: number;\r\n}\r\n\r\nexport default function CampaignInfo(props: IInfoProps) {\r\n const classes = useStyles();\r\n const [loaded, setLoaded] = React.useState(false);\r\n const [campaign, setCampaign] = React.useState(new CampaignViewModel());\r\n const [user, setUser] = React.useState(null);\r\n const [redirectToList, setRedirect] = React.useState(false);\r\n const [openWarning, setOpen] = React.useState(false);\r\n React.useEffect(() => {\r\n const getData = async () => {\r\n setLoaded(false);\r\n const token = await authService.getAccessToken();\r\n const user = await authService.getUser();\r\n setUser(user);\r\n\r\n fetch(`Campaign/GetCampaign?id=${props.campaignId}`, {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n })\r\n .then(response => response.json())\r\n .then(data => {\r\n setCampaign(data);\r\n setLoaded(true);\r\n })\r\n .catch(error => {\r\n console.log('Campaign error: ' + error);\r\n setLoaded(true);\r\n });\r\n }\r\n getData();\r\n }, [props.campaignId]);\r\n\r\n const handleClickOpen = () => {\r\n setOpen(true);\r\n };\r\n\r\n const handleClose = () => {\r\n setOpen(false);\r\n };\r\n\r\n\r\n \r\n\r\n \r\n const updateCampaignHolderEmail = async (value: string | number | Date | null) => {\r\n try {\r\n const token = await authService.getAccessToken();\r\n\r\n const response = await fetch(`Campaign/UpdateCampaignHolderEmail?id=${props.campaignId}&email=${value}`, {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` },\r\n method: 'POST'\r\n });\r\n\r\n if (response.ok) {\r\n setCampaign({\r\n ...campaign,\r\n campaignHolderEmail: value as string\r\n });\r\n }\r\n return true;\r\n\r\n } catch (error) {\r\n console.log('Update error: ' + error);\r\n return true;\r\n }\r\n }\r\n\r\n const updateGoogleSheetLink = async (value: string | number | Date | null) => {\r\n try {\r\n const token = await authService.getAccessToken();\r\n\r\n const response = await fetch(`Campaign/UpdateGoogleSheetLink?id=${props.campaignId}&link=${value}`, {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` },\r\n method: 'POST'\r\n });\r\n\r\n if (response.ok) {\r\n setCampaign({\r\n ...campaign,\r\n googleSheetLink: value as string\r\n });\r\n }\r\n return true;\r\n\r\n } catch (error) {\r\n console.log('Update error: ' + error);\r\n return true;\r\n }\r\n }\r\n\r\n \r\n\r\n const disableCampaign = async () => {\r\n const token = await authService.getAccessToken();\r\n\r\n fetch(`Campaign/DisableCampaign?campaignId=${props.campaignId}`, {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n })\r\n .then(response => {\r\n if (response.ok) {\r\n setRedirect(true);\r\n }\r\n })\r\n .catch(error => {\r\n console.log('Update error: ' + error);\r\n });\r\n }\r\n const viewButton = React.forwardRef>((props, ref) => (\r\n \r\n ));\r\n return (\r\n \r\n
    \r\n {redirectToList && }\r\n \r\n \r\n {loaded ? campaign.name : }\r\n \r\n {\r\n campaign.clientPartner != null &&\r\n \r\n {!loaded ?\r\n \r\n :\r\n \r\n {loaded ? campaign.clientPartner : }\r\n Partner\r\n \r\n }\r\n \r\n }\r\n \r\n {!loaded ?\r\n \r\n :\r\n \r\n \r\n \r\n Client\r\n {loaded ? campaign.clientName : }\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n {!loaded ?\r\n \r\n :\r\n \r\n Phone\r\n {loaded ? campaign.clientPhone : }\r\n \r\n }\r\n \r\n \r\n {!loaded ?\r\n \r\n :\r\n \r\n Email\r\n {loaded ? campaign.clientEmail : }\r\n \r\n }\r\n \r\n \r\n {(user?.role !== \"Executive\" && user?.role !== \"Creator\") ?\r\n loaded ? : \r\n :\r\n \r\n Campaign Holder Email\r\n {loaded ? campaign.campaignHolderEmail : }\r\n \r\n }\r\n \r\n \r\n {(user?.role !== \"Executive\" && user?.role !== \"Creator\") ?\r\n loaded ? : \r\n :\r\n \r\n Google Sheet Link\r\n {loaded ? campaign.googleSheetLink : }\r\n \r\n }\r\n \r\n {(user?.role !== \"Executive\" && user?.role !== \"Creator\") &&\r\n \r\n \r\n \r\n }\r\n \r\n \r\n {\"Are you sure?\"}\r\n \r\n \r\n This will permanently archive the campaign.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n
    \r\n );\r\n}","import * as React from 'react';\r\nimport { Theme } from '@mui/material/styles';\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport Paper from '@mui/material/Paper';\r\nimport Typography from '@mui/material/Typography';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n paper: {\r\n padding: theme.spacing(2),\r\n marginBottom: theme.spacing(2),\r\n minHeight: '300px',\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n justifyContent: \"center\"\r\n },\r\n notes: {\r\n whiteSpace: 'pre-wrap'\r\n }\r\n })\r\n);\r\n\r\ninterface IWoodpeckerNoInfoProps {\r\n}\r\n\r\nexport default function WoodpeckerNoInfo(props: IWoodpeckerNoInfoProps) {\r\n const classes = useStyles();\r\n // const { user, clientNote, clientId } = props;\r\n\r\n \r\n return (\r\n \r\n \r\n Woodpecker Campaign not found\r\n \r\n \r\n );\r\n}","export default class WoodpeckerViewModel {\r\n id: number = -1;\r\n name: string = '';\r\n status: string = '';\r\n folder_name: string = '';\r\n from_name: string = '';\r\n gdpr_unsubscribe: boolean = false;\r\n created: string = '';\r\n per_day: number = -1;\r\n from_email: string = '';\r\n bcc: string = '';\r\n cc: string = '';\r\n folder_id: number = -1;\r\n stats: Stats = new Stats();\r\n error: string = '';\r\n timestamp: string = '';\r\n}\r\nclass Stats {\r\n public prospects: number = -1;\r\n public delivery: number = -1;\r\n public invalid: number = -1;\r\n public bounced: number = -1;\r\n public queue: number = -1;\r\n public sent: number = -1;\r\n public check: number = -1;\r\n public autoreplied: number = -1;\r\n public opened: number = -1;\r\n public optout: number = -1;\r\n public clicked: number = -1;\r\n public replied: number = -1;\r\n public interested: number = -1;\r\n public maybe_later: number = -1;\r\n public not_interested: number = -1;\r\n public emails: Email[] = [];\r\n public emailsCurrentWeek: Email[] = [];\r\n}\r\nexport class Email {\r\n public subject: string = '';\r\n public msg: string = '';\r\n public timezone: string = '';\r\n public use_prospect_timezone: boolean = false;\r\n public sunFrom: number = -1;\r\n public sunTo: number = -1;\r\n public monFrom: number = -1;\r\n public monTo: number = -1;\r\n public tueFrom: number = -1;\r\n public tueTo: number = -1;\r\n public wedFrom: number = -1;\r\n public wedTo: number = -1;\r\n public thuFrom: number = -1;\r\n public thuTo: number = -1;\r\n public friFrom: number = -1;\r\n public friTo: number = -1;\r\n public satFrom: number = -1;\r\n public satTo: number = -1;\r\n public sunday: Sunday[] = [];\r\n public monday: Monday[] = [];\r\n public tuesday: Tuesday[] = [];\r\n public wednesday: Wednesday[] = [];\r\n public thursday: Thursday[] = [];\r\n public friday: Friday[] = [];\r\n public saturday: Saturday[] = [];\r\n public track_open: boolean = false;\r\n public track_click: boolean = false;\r\n public attach_follow: boolean = false;\r\n public follow_up: number = -1;\r\n public number: number = -1;\r\n public step: number = -1;\r\n // public object condition { get; set; }\r\n public emailSend: number = -1;\r\n public toSend: number = -1;\r\n public delivery: number = -1;\r\n public open_: string = '';\r\n public open: number = -1;\r\n public reply_: string = '';\r\n public reply: number = -1;\r\n public invalid_: string = '';\r\n public invalid: number = -1;\r\n public bounce_: string = '';\r\n public bounce: number = -1;\r\n}\r\nclass Sunday {\r\n public from: number = -1;\r\n public to: number = -1;\r\n}\r\nclass Saturday {\r\n public from: number = -1;\r\n public to: number = -1;\r\n}\r\nclass Friday {\r\n public from: number = -1;\r\n public to: number = -1;\r\n}\r\nclass Thursday {\r\n public from: number = -1;\r\n public to: number = -1;\r\n}\r\nclass Wednesday {\r\n public from: number = -1;\r\n public to: number = -1;\r\n}\r\nclass Tuesday {\r\n public from: number = -1;\r\n public to: number = -1;\r\n}\r\nclass Monday {\r\n public from: number = -1;\r\n public to: number = -1;\r\n}","// import * as React from 'react';\r\n//import { Theme } from '@mui/material/styles';\r\n//import createStyles from '@mui/styles/createStyles';\r\n//import makeStyles from '@mui/styles/makeStyles';\r\nimport Typography from '@mui/material/Typography';\r\nimport WoodpeckerViewModel from './WoodpeckerViewModel';\r\nimport Grid from '@mui/material/Grid';\r\n\r\n//const useStyles = makeStyles((theme: Theme) =>\r\n// createStyles({\r\n// paper: {\r\n// padding: theme.spacing(2),\r\n// marginBottom: theme.spacing(2),\r\n// minHeight: '300px',\r\n// display: \"flex\",\r\n// flexDirection: \"column\",\r\n// justifyContent: \"center\"\r\n// },\r\n// notes: {\r\n// whiteSpace: 'pre-wrap'\r\n// }\r\n// })\r\n//);\r\n\r\ninterface IGeneralInfoProps {\r\n woodpeckerDetails: WoodpeckerViewModel;\r\n}\r\n\r\nexport default function GeneralInfo(props: IGeneralInfoProps) {\r\n // const classes = useStyles();\r\n // const { user, clientNote, clientId } = props;\r\n\r\n \r\n return (\r\n \r\n \r\n From Name: {props.woodpeckerDetails.from_name}\r\n \r\n \r\n From Email: {props.woodpeckerDetails.from_email}\r\n \r\n \r\n Status: {props.woodpeckerDetails.status}\r\n \r\n \r\n Per Day: {props.woodpeckerDetails.per_day}\r\n \r\n \r\n Timezone: {props.woodpeckerDetails.stats.emails.length > 0 ? props.woodpeckerDetails.stats.emails[0].timezone : \"Not Found\"}\r\n \r\n \r\n );\r\n}","import * as React from 'react';\r\n//import { Theme } from '@mui/material/styles';\r\n//import createStyles from '@mui/styles/createStyles';\r\n//import makeStyles from '@mui/styles/makeStyles';\r\n//import Paper from '@mui/material/Paper';\r\nimport Typography from '@mui/material/Typography';\r\nimport Grid from '@mui/material/Grid';\r\nimport WoodpeckerViewModel from './WoodpeckerViewModel';\r\nimport SentimentNeutralIcon from '@mui/icons-material/SentimentNeutral';\r\nimport SentimentSatisfiedAltIcon from '@mui/icons-material/SentimentSatisfiedAlt';\r\nimport SentimentVeryDissatisfiedIcon from '@mui/icons-material/SentimentVeryDissatisfied';\r\n\r\n//const useStyles = makeStyles((theme: Theme) =>\r\n// createStyles({\r\n// paper: {\r\n// padding: theme.spacing(2),\r\n// marginBottom: theme.spacing(2),\r\n// minHeight: '300px',\r\n// display: \"flex\",\r\n// flexDirection: \"column\",\r\n// justifyContent: \"center\"\r\n// },\r\n// notes: {\r\n// whiteSpace: 'pre-wrap'\r\n// }\r\n// })\r\n//);\r\n\r\ninterface IStatsProps {\r\n woodpeckerDetails: WoodpeckerViewModel;\r\n}\r\n\r\nexport default function Stats(props: IStatsProps) {\r\n // const classes = useStyles();\r\n // const { user, clientNote, clientId } = props;\r\n\r\n\r\n return (\r\n \r\n \r\n \r\n Prospects: {props.woodpeckerDetails.stats.prospects}\r\n \r\n \r\n Delivered: {props.woodpeckerDetails.stats.delivery}\r\n \r\n \r\n Opened: {Math.round(props.woodpeckerDetails.stats.opened * 1000 / props.woodpeckerDetails.stats.delivery) / 10}%\r\n \r\n \r\n Interest Level\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {props.woodpeckerDetails.stats.interested}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {props.woodpeckerDetails.stats.maybe_later}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {props.woodpeckerDetails.stats.not_interested}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}","//import * as React from 'react';\r\n//import { Theme } from '@mui/material/styles';\r\n//import createStyles from '@mui/styles/createStyles';\r\n//import makeStyles from '@mui/styles/makeStyles';\r\nimport { Email } from './WoodpeckerViewModel';\r\nimport { styled } from '@mui/material/styles';\r\nimport Table from '@mui/material/Table';\r\nimport TableBody from '@mui/material/TableBody';\r\nimport TableCell, { tableCellClasses } from '@mui/material/TableCell';\r\nimport TableContainer from '@mui/material/TableContainer';\r\nimport TableHead from '@mui/material/TableHead';\r\nimport TableRow from '@mui/material/TableRow';\r\nimport Paper from '@mui/material/Paper';\r\n\r\n//const useStyles = makeStyles((theme: Theme) =>\r\n// createStyles({\r\n// paper: {\r\n// padding: theme.spacing(2),\r\n// marginBottom: theme.spacing(2),\r\n// },\r\n// notes: {\r\n// whiteSpace: 'pre-wrap'\r\n// }\r\n// })\r\n//);\r\n\r\ninterface IEmailStatsProps {\r\n email: Email[];\r\n}\r\nconst StyledTableCell = styled(TableCell)(({ theme }) => ({\r\n [`&.${tableCellClasses.head}`]: {\r\n backgroundColor: theme.palette.common.black,\r\n color: theme.palette.common.white,\r\n },\r\n [`&.${tableCellClasses.body}`]: {\r\n fontSize: 14,\r\n },\r\n}));\r\n\r\nconst StyledTableRow = styled(TableRow)(({ theme }) => ({\r\n '&:nth-of-type(odd)': {\r\n backgroundColor: theme.palette.action.hover,\r\n },\r\n // hide last border\r\n '&:last-child td, &:last-child th': {\r\n border: 0,\r\n },\r\n}));\r\nexport default function EmailStats(props: IEmailStatsProps) {\r\n // const classes = useStyles();\r\n // const { user, clientNote, clientId } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n Number\r\n Step\r\n Sent\r\n Delivered\r\n Open\r\n Open%\r\n \r\n \r\n \r\n {props.email.map((row) => (\r\n \r\n \r\n {row.number}\r\n \r\n {row.step}\r\n {row.emailSend}\r\n {row.delivery}\r\n {row.open}\r\n {row.open_}\r\n \r\n ))}\r\n \r\n
    \r\n
    \r\n\r\n );\r\n}","import * as React from 'react';\r\nimport { Theme } from '@mui/material/styles';\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\n// import Paper from '@mui/material/Paper';\r\nimport { Link as RouterLink, LinkProps as RouterLinkProps } from 'react-router-dom';\r\nimport Typography from '@mui/material/Typography';\r\nimport Grid from '@mui/material/Grid';\r\nimport WoodpeckerViewModel from './WoodpeckerViewModel';\r\nimport GeneralInfo from './GeneralInfo';\r\nimport Stats from './Stats';\r\nimport Divider from '@mui/material/Divider';\r\nimport EmailStats from './EmailStats';\r\nimport Button from '@mui/material/Button';\r\nimport { CSVLink } from 'react-csv';\r\nimport AdapterDateFns from '@mui/lab/AdapterDateFns';\r\nimport LocalizationProvider from '@mui/lab/LocalizationProvider';\r\nimport DatePicker from '@mui/lab/DatePicker';\r\nimport TextField from '@mui/material/TextField';\r\nimport enLocale from 'date-fns/locale/en-GB';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n paper: {\r\n // marginBottom: theme.spacing(2)\r\n },\r\n notes: {\r\n whiteSpace: 'pre-wrap'\r\n },\r\n csvButton: {\r\n color: 'inherit',\r\n textDecoration: 'inherit'\r\n }\r\n })\r\n);\r\n\r\ninterface IWoodpeckerInfoProps {\r\n woodpeckerDetails: WoodpeckerViewModel;\r\n updateData: (startDate: Date | null, endDate: Date | null) => void;\r\n}\r\nconst getStartOfWeek = (date: Date) => {\r\n var newDate = new Date(date.getTime() - (1000 * 60 * 60 * 24 * date.getDay()));\r\n return newDate;\r\n}\r\nconst getEndOfWeek = (date: Date) => {\r\n var newDate = new Date(date.getTime() + (1000 * 60 * 60 * 24 * (6 - date.getDay())));\r\n return newDate;\r\n}\r\nexport default function WoodpeckerInfo(props: IWoodpeckerInfoProps) {\r\n const classes = useStyles();\r\n // const { user, clientNote, clientId } = props;\r\n const [startDate, setStartDate] = React.useState(getStartOfWeek(new Date()));\r\n const [endDate, setEndDate] = React.useState(getEndOfWeek(new Date()));\r\n\r\n React.useEffect(() => props.updateData(startDate, endDate), [startDate, endDate]);\r\n\r\n const emails = ;\r\n const emailCurrentWeek = ;\r\n const linkUrl = \"https://app.woodpecker.co/panel?u=147656#clients/\" + props.woodpeckerDetails.id.toString() + \"/stats\";\r\n\r\n const csvHeaders = [\r\n { label: \"Number\", key: \"number\" },\r\n { label: \"Step\", key: \"step\" },\r\n { label: \"Sent\", key: \"emailSend\" },\r\n { label: \"Delivered\", key: \"delivery\" },\r\n { label: \"Open\", key: \"open\" },\r\n { label: \"Open%\", key: \"open_\" },\r\n ];\r\n const csvWeeklyData = props.woodpeckerDetails.stats.emailsCurrentWeek.map((item) => {\r\n return {\r\n number: item.number,\r\n step: item.step,\r\n emailSend: item.emailSend,\r\n delivery: item.delivery,\r\n open: item.open,\r\n open_: item.open_\r\n };\r\n });\r\n const csvTotalData = props.woodpeckerDetails.stats.emails.map((item) => {\r\n return {\r\n number: item.number,\r\n step: item.step,\r\n emailSend: item.emailSend,\r\n delivery: item.delivery,\r\n open: item.open,\r\n open_: item.open_\r\n };\r\n });\r\n const id = props.woodpeckerDetails.id;\r\n const viewButton = React.forwardRef>((props, ref) => (\r\n \r\n ));\r\n return (\r\n \r\n \r\n \r\n Woodpecker\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Totals\r\n \r\n \r\n \r\n \r\n \r\n {emails}\r\n \r\n \r\n Week To Date\r\n \r\n \r\n \r\n \r\n \r\n {\r\n setStartDate(newValue);\r\n }}\r\n maxDate={new Date()}\r\n renderInput={(params) => }\r\n />\r\n \r\n \r\n \r\n \r\n {\r\n setEndDate(newValue);\r\n }}\r\n renderInput={(params) => }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {emailCurrentWeek}\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}","//import * as React from 'react';\r\n//import { Theme } from '@mui/material/styles';\r\n//import createStyles from '@mui/styles/createStyles';\r\n//import makeStyles from '@mui/styles/makeStyles';\r\nimport Typography from '@mui/material/Typography';\r\nimport { Email } from './WoodpeckerViewModel';\r\nimport AccordionDetails from '@mui/material/AccordionDetails';\r\nimport AccordionSummary from '@mui/material/AccordionSummary';\r\nimport Accordion from '@mui/material/Accordion';\r\nimport ExpandMore from '@mui/icons-material/ExpandMore';\r\nimport Grid from '@mui/material/Grid';\r\nimport Divider from '@mui/material/Divider';\r\n\r\n//const useStyles = makeStyles((theme: Theme) =>\r\n// createStyles({\r\n// paper: {\r\n// padding: theme.spacing(2),\r\n// marginBottom: theme.spacing(2),\r\n// },\r\n// notes: {\r\n// whiteSpace: 'pre-wrap'\r\n// }\r\n// })\r\n//);\r\n\r\ninterface IEmailsProps {\r\n email: Email;\r\n}\r\n\r\nexport default function Emails(props: IEmailsProps) {\r\n // const classes = useStyles();\r\n // const { user, clientNote, clientId } = props;\r\n\r\n\r\n return (\r\n \r\n }\r\n >\r\n \r\n \r\n Subject: {props.email.subject}\r\n \r\n \r\n Number: {props.email.number}\r\n \r\n \r\n Step: {props.email.step}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n}","import * as React from 'react';\r\nimport { Theme } from '@mui/material/styles';\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport Grid from '@mui/material/Grid';\r\nimport Typography from '@mui/material/Typography';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport { useLocation } from 'react-router';\r\nimport CampaignViewModel, { UserCampaignViewModel } from '../../ViewModels/CampaignViewModel';\r\nimport authService from '../../api-authorization/AuthorizeService';\r\nimport LinearProgress from '@mui/material/LinearProgress';\r\nimport LeadList from './LeadList';\r\nimport Notes from './Notes';\r\nimport Status from './Status';\r\nimport CampaignInfo from './CampaignInfo';\r\nimport Skeleton from '@mui/lab/Skeleton';\r\nimport { isNullOrUndefined } from 'util';\r\n//import Edit from '@mui/icons-material/Edit';\r\nimport Dialog from '@mui/material/Dialog';\r\nimport { ValidatorForm } from 'react-material-ui-form-validator';\r\nimport DialogTitle from '@mui/material/DialogTitle';\r\nimport DialogContent from '@mui/material/DialogContent';\r\nimport DialogActions from '@mui/material/DialogActions';\r\nimport Button from '@mui/material/Button';\r\nimport CircularProgress from '@mui/material/CircularProgress';\r\nimport UserDropdown from '../../Dropdowns/UserDropdown';\r\nimport DialogContentText from '@mui/material/DialogContentText';\r\nimport DropdownViewModel from '../../ViewModels/DropdownViewModel';\r\nimport CopyToClipboard from 'react-copy-to-clipboard';\r\nimport FileCopyIcon from '@mui/icons-material/FileCopy';\r\nimport Divider from '@mui/material/Divider';\r\nimport WoodpeckerNoInfo from './WoodPecker/WoodpeckerNoInfo';\r\nimport Avatar from '@mui/material/Avatar';\r\nimport WoodpeckerViewModel from './WoodPecker/WoodpeckerViewModel';\r\nimport WoodpeckerInfo from './WoodPecker/WoodpeckerInfo';\r\nimport Emails from './WoodPecker/Emails';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n paper: {\r\n marginBottom: theme.spacing(2)\r\n },\r\n showButton: {\r\n padding: 8\r\n },\r\n bottomSpacing: {\r\n marginBottom: theme.spacing(2)\r\n },\r\n password: {\r\n paddingBottom: 0\r\n },\r\n buttonProgress: {\r\n position: 'absolute',\r\n top: '50%',\r\n left: '50%',\r\n marginTop: -12,\r\n marginLeft: -12\r\n },\r\n topSpacing: {\r\n marginTop: theme.spacing(2)\r\n },\r\n dividerColour: {\r\n backgroundColor: '#f7f7f8'\r\n }\r\n })\r\n);\r\n\r\ninterface LocationState {\r\n campaignId: number;\r\n}\r\n\r\nexport default function Campaign() {\r\n const classes = useStyles();\r\n const location = useLocation();\r\n const { campaignId } = location.state || {\r\n campaignId: 0\r\n };\r\n const [loaded, setLoaded] = React.useState(false);\r\n const [campaign, setCampaign] = React.useState(new CampaignViewModel());\r\n const [user, setUser] = React.useState(null);\r\n const [exec, setExec] = React.useState({ campaignId: campaignId, userId: '', startDate: new Date(), endDate: new Date() });\r\n const [active, setActive] = React.useState(false);\r\n const [openExecDialog, setDialogOpen] = React.useState(false);\r\n const [submitting, setSubmitting] = React.useState(false);\r\n const [error, setError] = React.useState('');\r\n const [users, setUsers] = React.useState([]);\r\n const [openSurveyDialog, setSurveyDialogOpen] = React.useState(false);\r\n const [woodPeckerDetails, setWoodPeckerDetails] = React.useState(new WoodpeckerViewModel());\r\n React.useEffect(() => {\r\n\r\n getData();\r\n }, [campaignId]);\r\n\r\n const getData = async () => {\r\n setLoaded(false);\r\n const token = await authService.getAccessToken();\r\n const user = await authService.getUser();\r\n setUser(user);\r\n\r\n fetch(`Campaign/GetCampaign?id=${campaignId}`, {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n })\r\n .then(response => response.json())\r\n .then(data => {\r\n setCampaign(data);\r\n\r\n const isActive = new Date(data.actualStartDate).setHours(0, 0, 0, 0) <= (new Date()).setHours(0, 0, 0, 0) && (isNullOrUndefined(data.agreementEnd) || new Date(data.agreementEnd!).setHours(0, 0, 0, 0) > (new Date()).setHours(0, 0, 0, 0));\r\n setActive(isActive);\r\n\r\n fetch(`WoodPecker/GetCampaign?id=${data.woodPeckerId}`, {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` },\r\n })\r\n .then(response => response.json())\r\n .then(data => {\r\n setWoodPeckerDetails(data);\r\n setLoaded(true);\r\n })\r\n .catch(error => {\r\n setError('A server error has occurred, please try again.');\r\n setLoaded(true);\r\n });\r\n\r\n fetch(`User/GetUsersNotOnCampaign?campaignId=${campaignId}`, {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` },\r\n })\r\n .then(response => response.json())\r\n .then(data => {\r\n setUsers(data);\r\n setLoaded(true);\r\n })\r\n .catch(error => {\r\n setError('A server error has occurred, please try again.');\r\n setLoaded(true);\r\n });\r\n })\r\n .catch(error => {\r\n console.log('Campaign error: ' + error);\r\n setLoaded(true);\r\n });\r\n }\r\n\r\n const getWoodpeckerData = async (startDate: Date | null, endDate: Date | null) => {\r\n setLoaded(false);\r\n const token = await authService.getAccessToken();\r\n\r\n const url = (startDate === null || endDate === null) ? `WoodPecker/GetCampaign?id=${campaign.woodPeckerId}` : `WoodPecker/GetCampaignHistorical?id=${campaign.woodPeckerId}&startDate=${startDate.toISOString()}&endDate=${endDate.toISOString()}`\r\n\r\n fetch(url, {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` },\r\n })\r\n .then(response => response.json())\r\n .then(data => {\r\n setWoodPeckerDetails(data);\r\n setLoaded(true);\r\n })\r\n .catch(error => {\r\n setError('A server error has occurred, please try again.');\r\n setLoaded(true);\r\n });\r\n }\r\n const updateMainExecutive = async () => {\r\n setSubmitting(true);\r\n const token = await authService.getAccessToken();\r\n fetch('Campaign/AssignMainExecutive', {\r\n method: 'POST',\r\n headers: !token ? { 'Content-Type': 'application/json; charset=utf-8' } : { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json; charset=utf-8' },\r\n body: JSON.stringify(exec)\r\n })\r\n .then(response => response.text())\r\n .then(data => {\r\n setSubmitting(false);\r\n setExec({ campaignId: campaignId, userId: '', startDate: new Date(), endDate: new Date() });\r\n setDialogOpen(false);\r\n getData();\r\n })\r\n .catch(error => {\r\n setError('A server error has occurred, please try again.');\r\n });\r\n }\r\n const onChange = (value: number | string, name: string, client: string) => {\r\n setExec({\r\n ...exec,\r\n [name]: value\r\n });\r\n }\r\n const onClose = () => {\r\n if (!submitting) {\r\n setExec({ campaignId: campaignId, userId: '', startDate: new Date(), endDate: null });\r\n setDialogOpen(false);\r\n }\r\n }\r\n const handleSurveyClose = () => {\r\n setSurveyDialogOpen(false);\r\n };\r\n const emails = woodPeckerDetails.stats ? woodPeckerDetails.stats.emails.map((m, i) => ) : [];\r\n return (\r\n \r\n {!loaded && }\r\n \r\n \r\n \r\n
    \r\n \r\n \r\n Account Manager\r\n \r\n {loaded ? campaign.clientTeamLeader.length > 0 ?\r\n \r\n \r\n \r\n \r\n \r\n {campaign.clientTeamLeader}\r\n \r\n : 'None Assigned'\r\n : \r\n }\r\n \r\n \r\n \r\n
    \r\n
    \r\n\r\n \r\n
    \r\n {woodPeckerDetails.id === -1 &&\r\n \r\n }\r\n {\r\n woodPeckerDetails.id === 0 &&\r\n \r\n }\r\n {woodPeckerDetails.id > 0 &&\r\n \r\n }\r\n
    \r\n \r\n \r\n \r\n
    \r\n {emails}\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n Assign Executive\r\n \r\n \r\n {error}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {campaign.googleSheetLink}\r\n \r\n \r\n { }}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}","export default class RegisterUserViewModel {\r\n public name: string = '';\r\n public email: string = '';\r\n public role: string = '';\r\n}\r\n\r\nexport class UpdateUserViewModel {\r\n public id: string = '';\r\n public name: string = '';\r\n public email: string = '';\r\n public role: string = '';\r\n\r\n constructor(userId: string) {\r\n this.id = userId;\r\n }\r\n}","import MuiAlert, { AlertProps } from '@mui/material/Alert';\r\n\r\nexport default function Alert(props: AlertProps) {\r\n return ;\r\n}","import * as React from 'react';\r\nimport Paper from '@mui/material/Paper';\r\nimport { Theme } from '@mui/material/styles';\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport Grid from '@mui/material/Grid';\r\nimport Typography from '@mui/material/Typography';\r\nimport Button from '@mui/material/Button';\r\nimport { UpdateUserViewModel } from '../ViewModels/RegisterUserViewModel';\r\nimport CircularProgress from '@mui/material/CircularProgress';\r\nimport MenuItem from '@mui/material/MenuItem';\r\nimport authService from '../api-authorization/AuthorizeService';\r\nimport { ValidatorForm, TextValidator, SelectValidator } from 'react-material-ui-form-validator';\r\nimport { /*Redirect,*/ useLocation, useHistory } from 'react-router';\r\nimport Alert from '../Utilities/Alert';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n paper: {\r\n padding: theme.spacing(2),\r\n },\r\n }),\r\n);\r\n\r\ninterface LocationState {\r\n userId: string;\r\n}\r\n\r\nexport default function UpdateUser() {\r\n const classes = useStyles();\r\n const history = useHistory();\r\n const location = useLocation();\r\n const { userId } = location.state || {\r\n userId: ''\r\n };\r\n\r\n const [changes, setChanges] = React.useState(new UpdateUserViewModel(userId));\r\n const [loaded, setLoaded] = React.useState(false);\r\n const [roles, setRoles] = React.useState([]);\r\n const [showAlert, setShow] = React.useState(false);\r\n const [alert, setAlert] = React.useState();\r\n const [updating, setUpdating] = React.useState(false);\r\n\r\n React.useEffect(() => {\r\n const getData = async () => {\r\n const token = await authService.getAccessToken();\r\n\r\n const userResponse = await fetch('User/GetUser?id=' + userId, {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n });\r\n const userData = await userResponse.json();\r\n setChanges(userData);\r\n\r\n const response = await fetch('User/GetRoles', {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n });\r\n const data = await response.json();\r\n setRoles(data);\r\n setLoaded(true);\r\n }\r\n getData();\r\n }, [userId]);\r\n\r\n const handleClose = (event?: React.SyntheticEvent, reason?: string) => {\r\n if (reason === 'clickaway') {\r\n return;\r\n }\r\n\r\n setShow(false);\r\n };\r\n\r\n const openAlert = (message: string, error: boolean) => {\r\n setAlert(\r\n \r\n {message}\r\n \r\n );\r\n setShow(true);\r\n }\r\n\r\n const onChange = (event: React.ChangeEvent) => {\r\n setChanges({\r\n ...changes,\r\n [event.target.name]: event.target.value\r\n });\r\n }\r\n\r\n\r\n const updateName = async () => {\r\n const token = await authService.getAccessToken();\r\n setUpdating(true);\r\n\r\n fetch(`User/UpdateName?id=${changes.id}&name=${changes.name}`, {\r\n method: 'POST',\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n })\r\n .then((response) => {\r\n if (response.ok) {\r\n openAlert(\"User updated successfully\", false);\r\n setUpdating(false);\r\n } else {\r\n openAlert(\"Failed to update user, please try again.\", true);\r\n setUpdating(false);\r\n }\r\n })\r\n .catch(() => {\r\n openAlert(\"Failed to update user, please try again.\", true);\r\n setUpdating(false);\r\n });\r\n }\r\n\r\n const updateEmail = async () => {\r\n const token = await authService.getAccessToken();\r\n setUpdating(true);\r\n\r\n fetch(`User/UpdateEmail?id=${changes.id}&email=${changes.email}`, {\r\n method: 'POST',\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n })\r\n .then((response) => {\r\n if (response.ok) {\r\n openAlert(\"User updated successfully\", false);\r\n setUpdating(false);\r\n } else {\r\n openAlert(\"Failed to update user, please try again.\", true);\r\n setUpdating(false);\r\n }\r\n })\r\n .catch(() => {\r\n openAlert(\"Failed to update user, please try again.\", true);\r\n setUpdating(false);\r\n });\r\n }\r\n\r\n const updateRole = async () => {\r\n const token = await authService.getAccessToken();\r\n setUpdating(true);\r\n\r\n fetch(`User/UpdateRole?id=${changes.id}&role=${changes.role}`, {\r\n method: 'POST',\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n })\r\n .then((response) => {\r\n if (response.ok) {\r\n openAlert(\"User updated successfully\", false);\r\n setUpdating(false);\r\n } else {\r\n openAlert(\"Failed to update user, please try again.\", true);\r\n setUpdating(false);\r\n }\r\n })\r\n .catch(() => {\r\n openAlert(\"Failed to update user, please try again.\", true);\r\n setUpdating(false);\r\n });\r\n }\r\n\r\n const items = roles.map((item, index) =>\r\n {item}\r\n );\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n Update User\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {loaded ? null : }\r\n \r\n )\r\n }}>\r\n {items}\r\n \r\n \r\n \r\n \r\n \r\n {showAlert &&\r\n \r\n {alert}\r\n \r\n }\r\n \r\n );\r\n}","import * as React from 'react';\r\nimport Paper from '@mui/material/Paper';\r\nimport { Theme } from '@mui/material/styles';\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport Grid from '@mui/material/Grid';\r\nimport Typography from '@mui/material/Typography';\r\nimport Button from '@mui/material/Button';\r\nimport RegisterUserViewModel from '../ViewModels/RegisterUserViewModel';\r\nimport CircularProgress from '@mui/material/CircularProgress';\r\nimport MenuItem from '@mui/material/MenuItem';\r\nimport authService from '../api-authorization/AuthorizeService';\r\nimport { ValidatorForm, TextValidator, SelectValidator } from 'react-material-ui-form-validator';\r\nimport MuiAlert, { AlertProps } from '@mui/material/Alert';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n paper: {\r\n padding: theme.spacing(2),\r\n },\r\n }),\r\n);\r\n\r\nfunction Alert(props: AlertProps) {\r\n return ;\r\n}\r\n\r\n\r\nexport default function RegisterUser() {\r\n const classes = useStyles();\r\n\r\n const [user, setUser] = React.useState(new RegisterUserViewModel());\r\n const [loaded, setLoaded] = React.useState(false);\r\n const [creating, setCreating] = React.useState(false);\r\n const [roles, setRoles] = React.useState([]);\r\n const [showAlert, setShow] = React.useState(false);\r\n const [alert, setAlert] = React.useState();\r\n\r\n React.useEffect(() => {\r\n getData();\r\n }, []);\r\n\r\n const handleClose = (event?: React.SyntheticEvent, reason?: string) => {\r\n if (reason === 'clickaway') {\r\n return;\r\n }\r\n\r\n setShow(false);\r\n };\r\n\r\n const openAlert = (message: string, error: boolean) => {\r\n setAlert(\r\n \r\n {message}\r\n \r\n );\r\n setShow(true);\r\n }\r\n\r\n const onChange = (event: React.ChangeEvent) => {\r\n setUser({\r\n ...user,\r\n [event.target.name]: event.target.value\r\n });\r\n }\r\n\r\n const getData = async () => {\r\n const token = await authService.getAccessToken();\r\n\r\n const response = await fetch('User/GetRoles', {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n });\r\n const data = await response.json();\r\n setRoles(data);\r\n setLoaded(true);\r\n }\r\n\r\n const createUser = async () => {\r\n const token = await authService.getAccessToken();\r\n setCreating(true);\r\n\r\n fetch('User/RegisterUser', {\r\n method: 'POST',\r\n headers: !token ? { 'Content-Type': 'application/json; charset=utf-8' } : { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json; charset=utf-8' },\r\n body: JSON.stringify(user)\r\n })\r\n .then((response) => {\r\n if (response.ok) {\r\n openAlert(\"User created successfully\", false);\r\n setUser(new RegisterUserViewModel());\r\n } else {\r\n openAlert(\"Failed to create user, please try again.\", true);\r\n }\r\n setCreating(false);\r\n })\r\n .catch(() => {\r\n openAlert(\"Failed to create user, please try again.\", true);\r\n setCreating(false);\r\n });\r\n }\r\n\r\n const items = roles.map((item, index) =>\r\n {item}\r\n );\r\n\r\n return (\r\n \r\n \r\n Register New User\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {loaded ? null : }\r\n \r\n )\r\n }}>\r\n {items}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {showAlert &&\r\n \r\n {alert}\r\n \r\n }\r\n \r\n );\r\n}","import * as React from 'react';\r\nimport Paper from '@mui/material/Paper';\r\nimport { Theme } from '@mui/material/styles';\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport Grid from '@mui/material/Grid';\r\nimport Typography from '@mui/material/Typography';\r\nimport Button from '@mui/material/Button';\r\nimport UserDropdown from '../Dropdowns/UserDropdown';\r\nimport { Link as RouterLink, LinkProps as RouterLinkProps } from 'react-router-dom';\r\nimport authService from '../api-authorization/AuthorizeService';\r\nimport Alert from '../Utilities/Alert';\r\nimport CircularProgress from '@mui/material/CircularProgress';\r\nimport DropdownViewModel from '../ViewModels/DropdownViewModel';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n paper: {\r\n padding: theme.spacing(2),\r\n },\r\n buttonProgress: {\r\n position: 'absolute',\r\n top: '50%',\r\n left: '50%',\r\n marginTop: -12,\r\n marginLeft: -12,\r\n }\r\n }),\r\n);\r\n\r\nexport default function ManageUsers() {\r\n const classes = useStyles();\r\n const [user, setUser] = React.useState('');\r\n const [users, setUsers] = React.useState([]);\r\n const [showAlert, setShow] = React.useState(false);\r\n const [alert, setAlert] = React.useState();\r\n const [updating, setUpdating] = React.useState(false);\r\n React.useEffect(() => { getData(); }, []);\r\n\r\n const handleChange = (value: number | string, name: string, client: string) => {\r\n setUser(value as string);\r\n }\r\n\r\n const updateLink = React.forwardRef>((props, ref) => (\r\n \r\n ));\r\n\r\n const handleClose = (event?: React.SyntheticEvent, reason?: string) => {\r\n if (reason === 'clickaway') {\r\n return;\r\n }\r\n\r\n setShow(false);\r\n };\r\n\r\n const openAlert = (message: string, error: boolean) => {\r\n setAlert(\r\n \r\n {message}\r\n \r\n );\r\n setShow(true);\r\n }\r\n\r\n const getData = async () => {\r\n const token = await authService.getAccessToken();\r\n\r\n fetch('User/GetUsers', {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` },\r\n })\r\n .then(response => response.json())\r\n .then(data => {\r\n setUsers(data);\r\n })\r\n .catch(error => {\r\n console.log('Users get error: ' + error);\r\n });\r\n }\r\n\r\n const removeUser = async () => {\r\n const token = await authService.getAccessToken();\r\n setUpdating(true);\r\n\r\n fetch(`User/RemoveUser?id=${user}`, {\r\n method: 'POST',\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n })\r\n .then((response) => {\r\n if (response.ok) {\r\n openAlert(\"User removed successfully\", false);\r\n setUpdating(false);\r\n getData();\r\n } else {\r\n openAlert(\"Failed to remove user, please try again.\", true);\r\n setUpdating(false);\r\n }\r\n })\r\n .catch(() => {\r\n openAlert(\"Failed to remove user, please try again.\", true);\r\n setUpdating(false);\r\n });\r\n }\r\n\r\n const enableUser = async () => {\r\n const token = await authService.getAccessToken();\r\n setUpdating(true);\r\n\r\n fetch(`User/EnableUser?id=${user}`, {\r\n method: 'POST',\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n })\r\n .then((response) => {\r\n if (response.ok) {\r\n openAlert(\"User enabled successfully\", false);\r\n setUpdating(false);\r\n getData();\r\n } else {\r\n openAlert(\"Failed to enable user, please try again.\", true);\r\n setUpdating(false);\r\n }\r\n })\r\n .catch(() => {\r\n openAlert(\"Failed to enable user, please try again.\", true);\r\n setUpdating(false);\r\n });\r\n }\r\n\r\n const disableButton = user.length > 0 && users.find(f => f.id === user)?.disabled === true ?\r\n \r\n :\r\n ;\r\n\r\n return (\r\n \r\n Manage Users\r\n \r\n \r\n \r\n \r\n \r\n {disableButton}\r\n \r\n \r\n \r\n \r\n \r\n {showAlert &&\r\n \r\n {alert}\r\n \r\n }\r\n \r\n );\r\n}","import * as React from 'react';\r\nimport TextField from '@mui/material/TextField';\r\nimport MenuItem from '@mui/material/MenuItem';\r\nimport authService from '../api-authorization/AuthorizeService';\r\nimport CircularProgress from '@mui/material/CircularProgress';\r\n\r\ninterface IDropdownProps {\r\n id: number;\r\n onChange: (event: React.ChangeEvent) => void;\r\n}\r\n\r\nclass DropdownViewModel {\r\n id: number = 0;\r\n value: string = '';\r\n}\r\n\r\nexport default function PackageDropdown(props: IDropdownProps) {\r\n const [list, setList] = React.useState([]);\r\n const [loaded, setLoaded] = React.useState(false);\r\n\r\n React.useEffect(() => {\r\n setLoaded(false);\r\n getData();\r\n }, []);\r\n\r\n const getData = async () => {\r\n const token = await authService.getAccessToken();\r\n\r\n const response = await fetch('Campaign/GetPackages', {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n });\r\n const data = await response.json();\r\n setList(data);\r\n setLoaded(true);\r\n }\r\n\r\n const items = list.map((item, index) =>\r\n {item.value});\r\n\r\n return (\r\n \r\n {loaded ? null : }\r\n \r\n )\r\n }}\r\n >\r\n {items}\r\n \r\n );\r\n}","import * as React from 'react';\r\nimport Paper from '@mui/material/Paper';\r\nimport { Theme } from '@mui/material/styles';\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport Grid from '@mui/material/Grid';\r\nimport Typography from '@mui/material/Typography';\r\nimport Button from '@mui/material/Button';\r\nimport PackageDropdown from '../Dropdowns/PackageDropdown';\r\nimport TextField from '@mui/material/TextField';\r\nimport CircularProgress from '@mui/material/CircularProgress';\r\nimport Alert from '../Utilities/Alert';\r\nimport authService from '../api-authorization/AuthorizeService';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n paper: {\r\n padding: theme.spacing(2),\r\n },\r\n buttonProgress: {\r\n position: 'absolute',\r\n top: '50%',\r\n left: '50%',\r\n marginTop: -12,\r\n marginLeft: -12,\r\n }\r\n }),\r\n);\r\n\r\nexport default function UpdatePackages() {\r\n const classes = useStyles();\r\n const [toUpdate, setPackage] = React.useState(0);\r\n const [newPrice, setPrice] = React.useState(0.00);\r\n const [updating, setUpdating] = React.useState(false);\r\n const [alert, setAlert] = React.useState();\r\n const [showAlert, setShow] = React.useState(false);\r\n\r\n const handleChange = (event: React.ChangeEvent) => {\r\n setPackage(parseInt(event.target.value));\r\n }\r\n\r\n const handlePriceChange = (event: React.ChangeEvent) => {\r\n setPrice(event.target.valueAsNumber);\r\n }\r\n\r\n const handleClose = (event?: React.SyntheticEvent, reason?: string) => {\r\n if (reason === 'clickaway') {\r\n return;\r\n }\r\n\r\n setShow(false);\r\n };\r\n\r\n const openAlert = (message: string, error: boolean) => {\r\n setAlert(\r\n \r\n {message}\r\n \r\n );\r\n setShow(true);\r\n }\r\n\r\n const updatePackage = async () => {\r\n const token = await authService.getAccessToken();\r\n setUpdating(true);\r\n\r\n fetch(`Campaign/UpdatePackagePrice?id=${toUpdate}&price=${newPrice}`, {\r\n method: 'POST',\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n })\r\n .then((response) => {\r\n if (response.ok) {\r\n openAlert(\"Package updated successfully\", false);\r\n setUpdating(false);\r\n } else {\r\n openAlert(\"Failed to update package, please try again.\", true);\r\n setUpdating(false);\r\n }\r\n })\r\n .catch(() => {\r\n openAlert(\"Failed to update package, please try again.\", true);\r\n setUpdating(false);\r\n });\r\n }\r\n\r\n return (\r\n \r\n Update Package\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {showAlert &&\r\n \r\n {alert}\r\n \r\n }\r\n \r\n );\r\n}","import * as React from 'react';\r\nimport Grid from '@mui/material/Grid';\r\n// import Typography from '@mui/material/Typography';\r\nimport RegisterUser from './RegisterUser';\r\nimport ManageUsers from './ManageUsers';\r\nimport UpdatePackages from './UpdatePackages';\r\nimport authService from '../api-authorization/AuthorizeService';\r\n\r\nexport default function AdminDashboard() {\r\n const [Access, SetAccess] = React.useState(false);\r\n\r\n React.useEffect(() => {\r\n authService.getUser().then(user => {\r\n if (user.role == \"Admin\" || user.role == \"SuperAdmin\") {\r\n\r\n SetAccess(true);\r\n }\r\n });\r\n }, []);\r\n\r\n return (\r\n \r\n { Access &&\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n );\r\n}","import * as React from 'react';\r\nimport authService from '../api-authorization/AuthorizeService';\r\n// import Typography from '@mui/material/Typography';\r\n\r\nexport default function PowerBI() {\r\n\r\n const [Access, SetAccess] = React.useState(false);\r\n React.useEffect(() => {\r\n authService.getUser().then(user => {\r\n if (user.role == \"Admin\" || user.role == \"SuperAdmin\") {\r\n\r\n SetAccess(true);\r\n }\r\n });\r\n }, []);\r\n\r\n\r\n\r\n return (\r\n \r\n {\r\n Access &&\r\n
    \r\n \r\n
    \r\n }\r\n
    \r\n );\r\n}","import { CampaignListViewModel } from \"./CampaignViewModel\";\r\n\r\n\r\nexport default class ClientViewModel {\r\n public id: number = 0;\r\n public clientName: string = '';\r\n public partner: string = '';\r\n public contactName: string = '';\r\n public contactEmail: string = '';\r\n public contactPhone: string = '';\r\n public startDate: Date = new Date();\r\n public clientType: string = '';\r\n public teamLeader: string = '';\r\n public teamLeaderId: string = '';\r\n public campaigns: CampaignListViewModel[] = [];\r\n public weeklyTargetOpportunities: number = 0;\r\n public countryId: number = 0;\r\n public country: string = '';\r\n public packageId: number = 0;\r\n public packageName: string = '';\r\n public price: number = 0;\r\n public status: string = '';\r\n public agreementLength: string = '';\r\n public renewalDate: number = 0;\r\n public agreementEnd: Date | null = null;\r\n}\r\n\r\nexport class CreateClientViewModel {\r\n public clientName: string = '';\r\n public contactName: string = '';\r\n public contactEmail: string = '';\r\n public contactPhone: string = '';\r\n public startDate: Date = new Date();\r\n public ref_PackageId: number = 0;\r\n public teamLeader: string = '';\r\n public ref_CountryId: number = 0;\r\n}\r\n\r\nexport class UserClientListViewModel {\r\n public name: string = '';\r\n public clients: ClientViewModel[] = [];\r\n}","import * as React from 'react';\r\nimport { Theme } from '@mui/material/styles';\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport Dialog from '@mui/material/Dialog';\r\nimport DialogActions from '@mui/material/DialogActions';\r\nimport DialogContent from '@mui/material/DialogContent';\r\nimport DialogTitle from '@mui/material/DialogTitle';\r\nimport Typography from '@mui/material/Typography';\r\nimport Grid from '@mui/material/Grid';\r\nimport Button from '@mui/material/Button';\r\nimport CircularProgress from '@mui/material/CircularProgress';\r\nimport { CreateNoteViewModel } from '../../ViewModels/CampaignViewModel';\r\nimport { ValidatorForm, TextValidator } from 'react-material-ui-form-validator';\r\nimport authService from '../../api-authorization/AuthorizeService';\r\nimport NoteTypeDropdown from '../../Dropdowns/NoteTypeDropdown';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n heading: {\r\n fontSize: theme.typography.pxToRem(15),\r\n fontWeight: theme.typography.fontWeightRegular,\r\n },\r\n buttonProgress: {\r\n position: 'absolute',\r\n top: '50%',\r\n left: '50%',\r\n marginTop: -12,\r\n marginLeft: -12,\r\n }\r\n }),\r\n);\r\n\r\ninterface ICreateProps {\r\n clientId: number;\r\n open: boolean;\r\n close: (refresh: boolean) => void;\r\n}\r\n\r\nexport default function CreateNote(props: ICreateProps) {\r\n const classes = useStyles();\r\n const [note, setNote] = React.useState(new CreateNoteViewModel(props.clientId));\r\n const [saving, setSaving] = React.useState(false);\r\n const [serverError, setError] = React.useState('');\r\n\r\n const handleChange = (event: React.ChangeEvent) => {\r\n setNote({\r\n ...note,\r\n [event.target.name]: event.target.value\r\n });\r\n }\r\n\r\n\r\n const onClose = () => {\r\n if (!saving) {\r\n setNote(new CreateNoteViewModel(props.clientId));\r\n props.close(false);\r\n }\r\n }\r\n\r\n const submit = async () => {\r\n setSaving(true);\r\n const token = await authService.getAccessToken();\r\n const newNote = note;\r\n note.id = props.clientId;\r\n\r\n fetch('Client/CreateNote', {\r\n method: 'POST',\r\n headers: !token ? { 'Content-Type': 'application/json; charset=utf-8' } : { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json; charset=utf-8' },\r\n body: JSON.stringify(newNote)\r\n })\r\n .then(response => response.text())\r\n .then(data => {\r\n setSaving(false);\r\n props.close(true);\r\n setNote(new CreateNoteViewModel(props.clientId));\r\n })\r\n .catch(error => {\r\n setSaving(false);\r\n setError('A server error has occurred, please try again.');\r\n });\r\n\r\n \r\n }\r\n\r\n return (\r\n \r\n \r\n Add Note\r\n \r\n \r\n \r\n \r\n \r\n {serverError}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}","import * as React from 'react';\r\nimport { Theme } from '@mui/material/styles';\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport Grid from '@mui/material/Grid';\r\nimport Paper from '@mui/material/Paper';\r\nimport Typography from '@mui/material/Typography';\r\nimport { NoteViewModel } from '../../ViewModels/CampaignViewModel';\r\nimport authService from '../../api-authorization/AuthorizeService';\r\nimport Divider from '@mui/material/Divider';\r\nimport CreateNote from './CreateNote';\r\nimport Button from '@mui/material/Button';\r\nimport Flag from '@mui/icons-material/Flag';\r\nimport Grow from '@mui/material/Grow';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n paper: {\r\n padding: theme.spacing(2),\r\n marginBottom: theme.spacing(2)\r\n },\r\n notes: {\r\n whiteSpace: 'pre-wrap'\r\n }\r\n })\r\n);\r\n\r\ninterface IListProps {\r\n clientId: number;\r\n}\r\n\r\nexport default function Notes(props: IListProps) {\r\n const classes = useStyles();\r\n const [notes, setNotes] = React.useState([]);\r\n const [loaded, setLoaded] = React.useState(false);\r\n const [openDialog, setDialog] = React.useState(false);\r\n\r\n const getData = React.useCallback(async () => {\r\n setLoaded(false);\r\n const token = await authService.getAccessToken();\r\n\r\n fetch(`Client/GetNotes?clientId=${props.clientId}`, {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n })\r\n .then(response => response.json())\r\n .then(data => {\r\n setNotes(data);\r\n setLoaded(true);\r\n })\r\n .catch(error => {\r\n console.log('Note list error: ' + error);\r\n setLoaded(true);\r\n });\r\n }, [props.clientId]);\r\n React.useEffect(() => {\r\n if (props.clientId > 0) {\r\n getData();\r\n }\r\n }, [getData, props.clientId]);\r\n\r\n const items = notes.map((note, index) => {\r\n return (\r\n \r\n \r\n \r\n \r\n {note.client &&\r\n \r\n }\r\n {note.type}\r\n \r\n \r\n \r\n {new Date(note.timestamp).toLocaleString()}\r\n \r\n \r\n \r\n \r\n \r\n Created By: {note.author}\r\n \r\n {\r\n note.subType!=null &&\r\n \r\n {note.subType}\r\n \r\n }\r\n {\r\n note.applicationContent!=null &&\r\n \r\n {note.applicationContent}\r\n \r\n }\r\n \r\n {note.content}\r\n \r\n \r\n \r\n );\r\n });\r\n\r\n const handleDialog = () => {\r\n setDialog(!openDialog);\r\n }\r\n\r\n const closeDialog = (refresh: boolean) => {\r\n setDialog(false);\r\n\r\n if (refresh) {\r\n getData();\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n Notes\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {items}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}","import * as React from 'react';\r\nimport Paper from '@mui/material/Paper';\r\nimport { Theme } from '@mui/material/styles';\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport Grid from '@mui/material/Grid';\r\nimport Typography from '@mui/material/Typography';\r\nimport authService from '../../api-authorization/AuthorizeService';\r\nimport Skeleton from '@mui/material/Skeleton';\r\nimport Button from '@mui/material/Button';\r\nimport { Redirect } from 'react-router';\r\nimport Dialog from '@mui/material/Dialog';\r\nimport DialogActions from '@mui/material/DialogActions';\r\nimport DialogContent from '@mui/material/DialogContent';\r\nimport DialogContentText from '@mui/material/DialogContentText';\r\nimport DialogTitle from '@mui/material/DialogTitle';\r\nimport ClientViewModel from '../../ViewModels/ClientViewModel';\r\nimport InfoEdit from '../../Utilities/InfoEdit';\r\n// import { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport DropdownViewModel from '../../ViewModels/DropdownViewModel';\r\nimport { CreatePackageViewModel } from '../../ViewModels/CampaignViewModel';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n paper: {\r\n padding: theme.spacing(2),\r\n marginBottom: theme.spacing(2)\r\n },\r\n showButton: {\r\n padding: 8,\r\n },\r\n bottomSpacing: {\r\n marginBottom: theme.spacing(2)\r\n },\r\n password: {\r\n paddingBottom: 0\r\n },\r\n })\r\n);\r\n\r\ninterface IInfoProps {\r\n clientId: number;\r\n}\r\n\r\nexport default function ClientInfo(props: IInfoProps) {\r\n const classes = useStyles();\r\n const [loaded, setLoaded] = React.useState(false);\r\n const [client, setClient] = React.useState(new ClientViewModel());\r\n const [user, setUser] = React.useState(null);\r\n const [redirectToList, setRedirect] = React.useState(false);\r\n const [openWarning, setOpen] = React.useState(false);\r\n // const [openLpwReason, setLpwReason] = React.useState(false);\r\n // const [submitting, setSubmitting] = React.useState(false);\r\n //const [lpw, setLpw] = React.useState(0);\r\n // const [reason, setReason] = React.useState(\"\");\r\n const [countries, setCountries] = React.useState([]);\r\n const [packages, setPackages] = React.useState([]);\r\n React.useEffect(() => {\r\n const getData = async () => {\r\n setLoaded(false);\r\n const token = await authService.getAccessToken();\r\n const user = await authService.getUser();\r\n setUser(user);\r\n\r\n fetch(`Client/GetClient?clientId=${props.clientId}`, {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n })\r\n .then(response => response.json())\r\n .then(data => {\r\n setClient(data);\r\n setLoaded(true);\r\n })\r\n .catch(error => {\r\n console.log('client error: ' + error);\r\n setLoaded(true);\r\n });\r\n fetch('Campaign/GetCountries', {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n })\r\n .then(response => response.json())\r\n .then(data => {\r\n setCountries(data);\r\n });\r\n fetch(`Campaign/GetPackages`, {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n })\r\n .then(response => response.json())\r\n .then(data => {\r\n setPackages(data);\r\n })\r\n .catch(error => {\r\n console.log('Package list error: ' + error);\r\n });\r\n }\r\n getData();\r\n }, [props.clientId]);\r\n\r\n const handleClickOpen = () => {\r\n setOpen(true);\r\n };\r\n\r\n const handleClose = () => {\r\n setOpen(false);\r\n // setLpwReason(false);\r\n };\r\n const updateContactName = async (value: string | number | Date | null) => {\r\n try {\r\n const token = await authService.getAccessToken();\r\n\r\n const response = await fetch(`Client/UpdateContactName?id=${props.clientId}&contactName=${value}`, {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` },\r\n method: 'POST'\r\n });\r\n if (response.ok) {\r\n setClient({\r\n ...client,\r\n contactName: value as string\r\n });\r\n }\r\n return true;\r\n\r\n } catch (error) {\r\n console.log('Update error: ' + error);\r\n return true;\r\n }\r\n };\r\n const updatePartner = async (value: string | number | Date | null) => {\r\n try {\r\n debugger;\r\n const token = await authService.getAccessToken();\r\n\r\n const response = await fetch(`Client/UpdatePartner?id=${props.clientId}&partner=${value}`, {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` },\r\n method: 'POST'\r\n });\r\n if (response.ok) {\r\n setClient({\r\n ...client,\r\n partner: value as string\r\n });\r\n }\r\n return true;\r\n\r\n } catch (error) {\r\n console.log('Update error: ' + error);\r\n return true;\r\n }\r\n };\r\n const updateContactPhone = async (value: string | number | Date | null) => {\r\n try {\r\n const token = await authService.getAccessToken();\r\n\r\n const response = await fetch(`Client/UpdateContactPhone?id=${props.clientId}&contactPhone=${value}`, {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` },\r\n method: 'POST'\r\n });\r\n if (response.ok) {\r\n setClient({\r\n ...client,\r\n contactPhone: value as string\r\n });\r\n }\r\n return true;\r\n\r\n } catch (error) {\r\n console.log('Update error: ' + error);\r\n return true;\r\n }\r\n };\r\n const updateContactEmail = async (value: string | number | Date | null) => {\r\n try {\r\n const token = await authService.getAccessToken();\r\n\r\n const response = await fetch(`Client/UpdateContactEmail?id=${props.clientId}&contactEmail=${value}`, {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` },\r\n method: 'POST'\r\n });\r\n if (response.ok) {\r\n setClient({\r\n ...client,\r\n contactEmail: value as string\r\n });\r\n }\r\n return true;\r\n\r\n } catch (error) {\r\n console.log('Update error: ' + error);\r\n return true;\r\n }\r\n };\r\n const updateStartDate = async (value: string | number | Date | null) => {\r\n try {\r\n const token = await authService.getAccessToken();\r\n\r\n const response = await fetch(`Client/UpdateStartDate?id=${props.clientId}&startDate=${(value as Date).toJSON()}`, {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` },\r\n method: 'POST'\r\n });\r\n if (response.ok) {\r\n setClient({\r\n ...client,\r\n startDate: value as Date\r\n });\r\n }\r\n return true;\r\n\r\n } catch (error) {\r\n console.log('Update error: ' + error);\r\n return true;\r\n }\r\n };\r\n const updateAgreement = async (value: string | number | Date | null) => {\r\n try {\r\n const token = await authService.getAccessToken();\r\n const date = value === null ? '' : `${(value as Date).toJSON()}`;\r\n const response = await fetch(`Client/UpdateAgreementEnd?id=${props.clientId}&date=` + date, {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` },\r\n method: 'POST'\r\n });\r\n\r\n if (response.ok) {\r\n setClient({\r\n ...client,\r\n agreementEnd: value as Date | null\r\n });\r\n }\r\n return true;\r\n\r\n } catch (error) {\r\n console.log('Update error: ' + error);\r\n return true;\r\n }\r\n }\r\n\r\n \r\n\r\n\r\n const updateRenewal = async (value: string | number | Date | null) => {\r\n try {\r\n const token = await authService.getAccessToken();\r\n\r\n const response = await fetch(`Client/UpdateRenewal?id=${props.clientId}&renewal=${value}`, {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` },\r\n method: 'POST'\r\n });\r\n if (response.ok) {\r\n setClient({\r\n ...client,\r\n renewalDate: value as number\r\n });\r\n }\r\n return true;\r\n\r\n } catch (error) {\r\n console.log('Update error: ' + error);\r\n return true;\r\n }\r\n }\r\n const customPricing = async (value: string | number | Date | null) => {\r\n try {\r\n const token = await authService.getAccessToken();\r\n const customPackage = new CreatePackageViewModel();\r\n customPackage.campaignId = client.id;\r\n customPackage.custom = true;\r\n customPackage.packageName = \"Custom \" + client.packageName;\r\n customPackage.price = parseFloat(value as string);\r\n\r\n const response = await fetch(`Client/CreateCustomPackage`, {\r\n headers: !token ? { 'Content-Type': 'application/json; charset=utf-8' } : { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json; charset=utf-8' },\r\n method: 'POST',\r\n body: JSON.stringify(customPackage)\r\n });\r\n\r\n if (response.ok) {\r\n setClient({\r\n ...client,\r\n price: parseFloat(value as string),\r\n });\r\n }\r\n return true;\r\n\r\n } catch (error) {\r\n console.log('Update error: ' + error);\r\n return true;\r\n }\r\n }\r\n //const updateWeeklyTarget = async (value: string | number | Date | null) => {\r\n // setLpw(value as number);\r\n // setReason(\"\");\r\n // setLpwReason(true);\r\n // return true;\r\n //}\r\n const updatePackage = async (value: string | number | Date | null) => {\r\n try {\r\n const token = await authService.getAccessToken();\r\n\r\n const response = await fetch(`Client/UpdatePackage?id=${props.clientId}&packageId=${value}`, {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` },\r\n method: 'POST'\r\n });\r\n const data = await response.json();\r\n if (response.ok) {\r\n setClient({\r\n ...client,\r\n packageId: data.packageId,\r\n packageName: data.packageName,\r\n price: data.price\r\n });\r\n }\r\n return true;\r\n\r\n } catch (error) {\r\n console.log('Update error: ' + error);\r\n return true;\r\n }\r\n }\r\n //const handleReasonChange = async (event: React.ChangeEvent) => {\r\n // setReason(event.target.value);\r\n //}\r\n const updateCountry = async (value: string | number | Date | null) => {\r\n try {\r\n const token = await authService.getAccessToken();\r\n\r\n const response = await fetch(`Client/UpdateCountry?id=${props.clientId}&countryId=${value}`, {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` },\r\n method: 'POST'\r\n });\r\n const data = await response.json();\r\n if (response.ok) {\r\n setClient({\r\n ...client,\r\n countryId: data.id,\r\n country: data.name\r\n });\r\n }\r\n return true;\r\n\r\n } catch (error) {\r\n console.log('Update error: ' + error);\r\n return true;\r\n }\r\n }\r\n //const updateWeeklyTargetWithReason = async () => {\r\n // setSubmitting(true);\r\n // try {\r\n // const token = await authService.getAccessToken();\r\n\r\n // const response = await fetch(`Client/UpdateWeeklyTarget?id=${props.clientId}&target=${lpw}&reason=${reason}`, {\r\n // headers: !token ? {} : { 'Authorization': `Bearer ${token}` },\r\n // method: 'POST'\r\n // });\r\n // if (response.ok) {\r\n // setClient({\r\n // ...client,\r\n // weeklyTargetOpportunities: lpw\r\n // });\r\n // setLpwReason(false);\r\n // setSubmitting(false);\r\n // } else {\r\n // setSubmitting(false);\r\n // }\r\n // return true;\r\n\r\n // } catch (error) {\r\n // console.log('Update error: ' + error);\r\n // setSubmitting(false);\r\n // return true;\r\n // }\r\n //};\r\n const archiveClient = async () => {\r\n const token = await authService.getAccessToken();\r\n\r\n fetch(`Client/ArchiveClient?id=${props.clientId}`, {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n })\r\n .then(response => {\r\n if (response.ok) {\r\n setRedirect(true)\r\n }\r\n })\r\n .catch(error => {\r\n console.log('Update error: ' + error);\r\n });\r\n };\r\n return (\r\n \r\n {redirectToList && }\r\n \r\n \r\n {(user?.role !== \"Executive\" && user?.role !== \"Creator\") ?\r\n loaded ? : \r\n :\r\n \r\n {\r\n client.partner != null &&\r\n \r\n {loaded ? client.partner : }\r\n Partner\r\n \r\n }\r\n \r\n }\r\n \r\n \r\n {(user?.role !== \"Executive\" && user?.role !== \"Creator\") ?\r\n loaded ? : \r\n\r\n :\r\n \r\n {loaded ? client.contactName : }\r\n Contact Name\r\n \r\n }\r\n \r\n \r\n {(user?.role !== \"Executive\" && user?.role !== \"Creator\") ?\r\n loaded ? : \r\n :\r\n \r\n {loaded ? client.contactPhone : }\r\n Phone\r\n \r\n }\r\n \r\n \r\n {(user?.role !== \"Executive\" && user?.role !== \"Creator\") ?\r\n loaded ? : \r\n :\r\n \r\n {loaded ? client.contactEmail : }\r\n Email\r\n \r\n }\r\n \r\n \r\n {(user?.role !== \"Executive\" && user?.role !== \"Creator\") ?\r\n loaded ? : \r\n :\r\n \r\n Renewal Date\r\n {loaded ? {client.renewalDate} : }\r\n \r\n }\r\n \r\n \r\n {(user?.role !== \"Executive\") ?\r\n loaded ? : \r\n :\r\n \r\n End Date\r\n {loaded ? client.agreementEnd ? new Date(client.agreementEnd).toLocaleDateString(\"en-GB\") : 'No End Date' : }\r\n \r\n }\r\n \r\n \r\n {(user?.role !== \"Executive\" && user?.role !== \"Creator\") ?\r\n loaded ? : \r\n :\r\n \r\n Country\r\n {loaded ? client.country : }\r\n \r\n }\r\n \r\n \r\n {(user?.role !== \"Executive\" && user?.role !== \"Creator\") ?\r\n loaded ? : \r\n :\r\n \r\n Package\r\n {loaded ? client.packageName : }\r\n \r\n }\r\n \r\n \r\n {(user?.role !== \"Executive\") ?\r\n loaded ? : \r\n :\r\n \r\n Package Price\r\n £{loaded ? client.price : }\r\n \r\n }\r\n \r\n \r\n {\r\n (user?.role !== \"Executive\" && user?.role !== \"Creator\") ?\r\n loaded ? : \r\n :\r\n \r\n {loaded ? new Date(client.startDate).toLocaleDateString(\"en-GB\") : }\r\n Start Date\r\n \r\n }\r\n \r\n {/*\r\n {\r\n (user?.role !== \"Executive\" && user?.role !== \"Creator\") ?\r\n loaded ? : \r\n :\r\n \r\n {loaded ? client.weeklyTargetOpportunities : }\r\n LPW\r\n \r\n }\r\n */}\r\n {(user?.role !== \"Executive\" && user?.role !== \"Creator\") &&\r\n \r\n \r\n \r\n }\r\n \r\n {/*\r\n {\"LPW change reason\"}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n */}\r\n \r\n {\"Are you sure?\"}\r\n \r\n \r\n This will permanently archive the client.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}","import * as React from 'react';\r\nimport TableRow from '@mui/material/TableRow';\r\nimport Button from '@mui/material/Button';\r\nimport green from '@mui/material/colors/green';\r\nimport red from '@mui/material/colors/red';\r\nimport amber from '@mui/material/colors/amber';\r\nimport { Link as RouterLink, LinkProps as RouterLinkProps } from 'react-router-dom';\r\nimport DenseTableCell from '../../Utilities/DenseTableCell';\r\nimport { CampaignListViewModel } from '../../ViewModels/CampaignViewModel';\r\nimport Chip from '@mui/material/Chip';\r\n//import { isNullOrUndefined } from 'util';\r\nimport { Theme } from '@mui/material/styles';\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport grey from '@mui/material/colors/grey';\r\nimport blue from '@mui/material/colors/blue';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n green: {\r\n color: theme.palette.getContrastText(green[500]),\r\n backgroundColor: green[500],\r\n width: '100%'\r\n },\r\n blue: {\r\n color: theme.palette.getContrastText(blue[500]),\r\n backgroundColor: blue[500],\r\n width: '100%'\r\n },\r\n amber: {\r\n color: theme.palette.getContrastText(amber[500]),\r\n backgroundColor: amber[500],\r\n width: '100%'\r\n },\r\n lightRed: {\r\n color: theme.palette.getContrastText('#ff7961'),\r\n backgroundColor: '#ff7961',\r\n width: '100%'\r\n },\r\n red: {\r\n color: theme.palette.getContrastText(red[500]),\r\n backgroundColor: red[500],\r\n width: '100%'\r\n },\r\n grey: {\r\n color: theme.palette.getContrastText(grey[500]),\r\n backgroundColor: grey[500],\r\n width: '100%'\r\n },\r\n default: {\r\n width: '100%'\r\n },\r\n })\r\n);\r\n\r\ninterface ICampaignListProps {\r\n campaign: CampaignListViewModel;\r\n user: any;\r\n}\r\n\r\nexport default function CampaignTableRow(props: ICampaignListProps) {\r\n const classes = useStyles();\r\n const id = props.campaign.id;\r\n const viewButton = React.forwardRef>((props, ref) => (\r\n \r\n ));\r\n\r\n\r\n const statuses = [\r\n { status: \"Live\", class: classes.green },\r\n { status: \"Focus\", class: classes.amber },\r\n { status: \"Notice\", class: classes.lightRed },\r\n { status: \"Cancelled\", class: classes.red },\r\n { status: \"Onboarding\", class: classes.default },\r\n { status: \"Paused\", class: classes.grey },\r\n { status: \"Confirmed Cancelling\", class: classes.red },\r\n { status: \"Confirmed Cancelling\", class: classes.red },\r\n { status: \"DRAFT\", class: classes.blue },\r\n { status: \"RUNNING\", class: classes.green },\r\n { status: \"EDITED\", class: classes.green },\r\n { status: \"COMPLETED\", class: classes.default },\r\n { status: \"PAUSED\", class: classes.amber },\r\n { status: \"STOPPED\", class: classes.red },\r\n { status: \"DELETED\", class: classes.red },\r\n { status: \"Unknown\", class: classes.red },\r\n ];\r\n\r\n const statusClass = props.campaign.status.length > 0 ? statuses.find(f => f.status === props.campaign.status)!.class : classes.default;\r\n\r\n return (\r\n \r\n {props.campaign.name}\r\n \r\n {props.campaign.emails}\r\n {\r\n ((props.user?.role !== \"Executive\" && props.user?.role !== \"Creator\") || (props.campaign.mainExecutiveId === props.user?.sub)) ?\r\n \r\n :\r\n \r\n }\r\n \r\n );\r\n}","import { Theme } from '@mui/material/styles';\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport Table, { TableProps } from '@mui/material/Table';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n scrollTable: {\r\n display: \"block\",\r\n overflowX: \"auto\"\r\n }\r\n })\r\n);\r\n\r\nexport default function ResponsiveTable(props: TableProps) {\r\n const classes = useStyles();\r\n\r\n return (\r\n
    \r\n \r\n \r\n );\r\n}","import TableBody from '@mui/material/TableBody';\r\nimport TableHead from '@mui/material/TableHead';\r\nimport TableRow from '@mui/material/TableRow';\r\nimport CampaignTableRow from './CampaignTableRow';\r\nimport ResponsiveTable from '../../Utilities/ResponsiveTable';\r\nimport DenseTableCell from '../../Utilities/DenseTableCell';\r\nimport { CampaignListViewModel } from '../../ViewModels/CampaignViewModel';\r\nfunction total(items: CampaignListViewModel[]) {\r\n return items.map(({ emails }) => emails).reduce((sum, i) => sum + i, 0);\r\n}\r\ninterface ICampaignTableProps {\r\n campaigns: CampaignListViewModel[];\r\n user:any;\r\n}\r\n\r\nexport default function CampaignTable(props: ICampaignTableProps) {\r\n const items = props.campaigns.map((item, index) =>\r\n \r\n );\r\n\r\n return (\r\n \r\n \r\n \r\n Campaigns \r\n Status\r\n Emails\r\n \r\n \r\n \r\n \r\n {items}\r\n \r\n \r\n \r\n {total(props.campaigns)}\r\n \r\n \r\n \r\n \r\n );\r\n}","export default class FileDataViewModel {\r\n public id: number = 0;\r\n public assetId: number = 0;\r\n public dateAdded: Date = new Date();\r\n public fileName: string = '';\r\n public fileType: string = '';\r\n}","import * as React from 'react';\r\nimport { Theme } from '@mui/material/styles';\r\nimport { WithStyles, createStyles, withStyles } from '@mui/styles';\r\nimport { Button, TextField, Grid } from '@mui/material';\r\nimport Dropzone from \"react-dropzone\";\r\nimport DeleteIcon from '@mui/icons-material/Delete';\r\nimport FileDataViewModel from '../../ViewModels/FileDataViewModel';\r\n\r\nconst styles = (theme: Theme) => createStyles({\r\n root: {\r\n flexGrow: 1,\r\n },\r\n paper: {\r\n padding: theme.spacing(1),\r\n },\r\n marginTop: {\r\n marginTop: theme.spacing(1)\r\n },\r\n fileInput: {\r\n textAlign: 'center',\r\n border: '1px dashed grey',\r\n backgroundColor: 'lightgrey',\r\n padding: '30px 0px'\r\n }\r\n});\r\n\r\ninterface IFileInputProps {\r\n files: File[];\r\n fileData: FileDataViewModel[];\r\n addFile: (fileData: FileDataViewModel[], file: File[]) => void;\r\n removeFile: (fileData: FileDataViewModel) => void;\r\n submitting: boolean;\r\n}\r\n\r\ninterface IFileInputState {\r\n fileData: FileDataViewModel[];\r\n file: File[];\r\n fileTypes: string[];\r\n clearFilesKey: number; // necessary to force rerender and clear of file in dropzone\r\n\r\n}\r\n\r\nclass MultiFileInput extends React.Component, IFileInputState> {\r\n constructor(props: any) {\r\n super(props);\r\n\r\n this.state = {\r\n fileData: [],\r\n file: [],\r\n fileTypes: [],\r\n clearFilesKey: 0\r\n };\r\n }\r\n\r\n public componentDidMount() { }\r\n\r\n public render() {\r\n const onDrop = (currFile: any) => {\r\n const newFileData = this.state.fileData;\r\n const newFile = this.state.file;\r\n for (var i = 0; i < currFile.length; i++) {\r\n let currFileData = new FileDataViewModel();\r\n currFileData.fileName = currFile[i].name;\r\n newFileData.push(currFileData);\r\n newFile.push(currFile[i]);\r\n\r\n }\r\n this.setState({\r\n fileData: newFileData,\r\n file: newFile\r\n });\r\n }\r\n\r\n const fileNames = this.state.fileData.map(item => \r\n \r\n \r\n \r\n \r\n \r\n );\r\n return (\r\n \r\n \r\n \r\n {({ getRootProps, getInputProps, isDragActive }) => (\r\n
    \r\n
    \r\n \r\n {\r\n isDragActive ?\r\n

    Drop the files here ...

    \r\n :\r\n

    Drag 'n' drop some files here, or click to select files

    \r\n }\r\n
    \r\n
    \r\n )}\r\n
    \r\n
    \r\n {\r\n fileNames\r\n }\r\n \r\n \r\n \r\n
    \r\n );\r\n }\r\n\r\n private addFile = () => {\r\n this.props.addFile(this.state.fileData, this.state.file);\r\n\r\n this.setState({ fileData: [], clearFilesKey: this.state.clearFilesKey + 1 });\r\n }\r\n\r\n private onChange = (e: React.ChangeEvent) => {\r\n this.setValue(e.target.name, e.target.value);\r\n }\r\n\r\n private setValue = (key: string, value: any) => {\r\n //this.setState({ fileData: { ...this.state.fileData, [key]: value } as any });\r\n }\r\n private removeFile = (file: FileDataViewModel) => {\r\n let files = this.state.file;\r\n let filesData = this.state.fileData;\r\n const dataindex = filesData.indexOf(file);\r\n if (dataindex > -1) {\r\n filesData.splice(dataindex, 1);\r\n files.splice(dataindex, 1);\r\n }\r\n this.setState({ file: files, fileData: filesData });\r\n }\r\n}\r\n\r\nexport default withStyles(styles)(MultiFileInput);","export class CreateFileViewModel {\r\n public dateAdded: Date = new Date();\r\n public name: string = '';\r\n public file: File | undefined;\r\n public fileType: string = '';\r\n public clientId: number = -1;\r\n}","\r\nexport class UtilityMethods {\r\n public static convertModelToFormData(model: any, form: FormData, namespace = ''): FormData {\r\n let formData = form || new FormData();\r\n let formKey: any;\r\n\r\n if (model instanceof Array) {\r\n model.forEach((element, index) => {\r\n const tempFormKey = `${namespace}[${index}]`;\r\n\r\n if (element instanceof File)\r\n formData.append(formKey, element);\r\n else\r\n this.convertModelToFormData(element, formData, tempFormKey);\r\n });\r\n } else {\r\n for (let propertyName in model) {\r\n if (!model.hasOwnProperty(propertyName) || !model[propertyName]) continue;\r\n formKey = namespace ? `${namespace}.${propertyName}` : propertyName;\r\n if (model[propertyName] instanceof Date)\r\n formData.append(formKey, model[propertyName].toISOString());\r\n else if (model[propertyName] instanceof File)\r\n formData.append(formKey, model[propertyName]);\r\n else if (model[propertyName] instanceof Array) {\r\n model[propertyName].forEach((element: any, index: any) => {\r\n const tempFormKey = `${formKey}[${index}]`;\r\n\r\n if (element instanceof File)\r\n formData.append(formKey, element);\r\n else\r\n this.convertModelToFormData(element, formData, tempFormKey);\r\n });\r\n }\r\n else if (typeof model[propertyName] === 'object' && !(model[propertyName] instanceof File))\r\n this.convertModelToFormData(model[propertyName], formData, formKey);\r\n else {\r\n formData.append(formKey, model[propertyName].toString());\r\n }\r\n }\r\n }\r\n\r\n return formData;\r\n }\r\n}","import * as React from 'react';\r\nimport { Theme } from '@mui/material/styles';\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport Accordion from '@mui/material/Accordion';\r\nimport AccordionSummary from '@mui/material/AccordionSummary';\r\nimport AccordionDetails from '@mui/material/AccordionDetails';\r\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\r\nimport Typography from '@mui/material/Typography';\r\nimport { MessageViewModel } from '../../ViewModels/CampaignViewModel';\r\nimport Button from '@mui/material/Button';\r\nimport authService from '../../api-authorization/AuthorizeService';\r\nimport AccordionActions from '@mui/material/AccordionActions';\r\nimport Divider from '@mui/material/Divider';\r\nimport TextField from '@mui/material/TextField';\r\nimport CopyToClipboard from 'react-copy-to-clipboard';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n heading: {\r\n fontSize: theme.typography.pxToRem(15),\r\n fontWeight: theme.typography.fontWeightRegular,\r\n },\r\n message: {\r\n whiteSpace: 'pre-wrap'\r\n }\r\n }),\r\n);\r\n\r\nclass EditMessage {\r\n messageId: number = 0;\r\n message: string = '';\r\n\r\n constructor(messId: number, mess: string) {\r\n this.messageId = messId;\r\n this.message = mess;\r\n }\r\n}\r\n\r\ninterface IMessageProps {\r\n message: MessageViewModel;\r\n refresh: () => void;\r\n}\r\n\r\nexport default function Message(props: IMessageProps) {\r\n const classes = useStyles();\r\n const [editing, setEditing] = React.useState(false);\r\n const [newMessage, setMessage] = React.useState(props.message.content);\r\n\r\n const deleteMessage = async () => {\r\n const token = await authService.getAccessToken();\r\n\r\n fetch(`Client/DeleteMessage?messageId=${props.message.id}&clientId=${props.message.campaignId}`, {\r\n method: 'POST',\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` },\r\n })\r\n .then(response => response.text())\r\n .then(data => {\r\n props.refresh();\r\n })\r\n .catch(error => {\r\n console.log('Delete message error: ' + error);\r\n });\r\n }\r\n\r\n const editMessage = async () => {\r\n const token = await authService.getAccessToken();\r\n\r\n fetch(`Client/UpdateMessage`, {\r\n method: 'POST',\r\n headers: !token ? { 'Content-Type': 'application/json; charset=utf-8' } : { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json; charset=utf-8' },\r\n body: JSON.stringify(new EditMessage(props.message.id, newMessage))\r\n })\r\n .then(response => response.text())\r\n .then(data => {\r\n setEditing(false);\r\n props.refresh();\r\n })\r\n .catch(error => {\r\n console.log('Delete message error: ' + error);\r\n });\r\n }\r\n\r\n const handleEditing = () => {\r\n setEditing(!editing);\r\n }\r\n\r\n const handleChange = (event: React.ChangeEvent) => {\r\n setMessage(event.target.value);\r\n }\r\n\r\n return (\r\n \r\n }\r\n aria-controls={props.message.id + \"-content\"}\r\n id={props.message.id + \"-header\"}\r\n >\r\n {props.message.title}\r\n \r\n \r\n \r\n {editing ?\r\n \r\n :\r\n {props.message.content}\r\n }\r\n \r\n \r\n \r\n {editing ?\r\n \r\n \r\n \r\n \r\n :\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n );\r\n}","import * as React from 'react';\r\nimport { Theme } from '@mui/material/styles';\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport Accordion from '@mui/material/Accordion';\r\nimport AccordionSummary from '@mui/material/AccordionSummary';\r\nimport AccordionDetails from '@mui/material/AccordionDetails';\r\nimport AccordionActions from '@mui/material/AccordionActions';\r\nimport Typography from '@mui/material/Typography';\r\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\r\nimport Grid from '@mui/material/Grid';\r\nimport Button from '@mui/material/Button';\r\nimport CircularProgress from '@mui/material/CircularProgress';\r\nimport { CreateMessageViewModel } from '../../ViewModels/CampaignViewModel';\r\nimport { ValidatorForm, TextValidator } from 'react-material-ui-form-validator';\r\nimport authService from '../../api-authorization/AuthorizeService';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n heading: {\r\n fontSize: theme.typography.pxToRem(15),\r\n fontWeight: theme.typography.fontWeightRegular,\r\n },\r\n buttonProgress: {\r\n position: 'absolute',\r\n top: '50%',\r\n left: '50%',\r\n marginTop: -12,\r\n marginLeft: -12,\r\n }\r\n }),\r\n);\r\n\r\ninterface ICreateProps {\r\n clientId: number;\r\n refresh: () => void;\r\n}\r\n\r\nexport default function CreateMessage(props: ICreateProps) {\r\n const classes = useStyles();\r\n const [message, setMessage] = React.useState(new CreateMessageViewModel(props.clientId));\r\n const [saving, setSaving] = React.useState(false);\r\n const [serverError, setError] = React.useState('');\r\n\r\n const handleChange = (event: React.ChangeEvent) => {\r\n setMessage({\r\n ...message,\r\n [event.target.name]: event.target.value\r\n });\r\n }\r\n\r\n const submit = async () => {\r\n setSaving(true);\r\n const token = await authService.getAccessToken();\r\n\r\n fetch('Client/CreateMessage', {\r\n method: 'POST',\r\n headers: !token ? { 'Content-Type': 'application/json; charset=utf-8' } : { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json; charset=utf-8' },\r\n body: JSON.stringify(message)\r\n })\r\n .then(response => response.text())\r\n .then(data => {\r\n setSaving(false);\r\n props.refresh();\r\n setMessage(new CreateMessageViewModel(props.clientId));\r\n })\r\n .catch(error => {\r\n setSaving(false);\r\n setError('A server error has occurred, please try again.');\r\n });\r\n }\r\n\r\n return (\r\n \r\n }\r\n aria-controls=\"newmessage-content\"\r\n id=\"newmessage-header\"\r\n >\r\n Add pinned note\r\n \r\n \r\n \r\n \r\n \r\n {serverError}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}","import * as React from 'react';\r\nimport { Theme } from '@mui/material/styles';\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport Grid from '@mui/material/Grid';\r\nimport Typography from '@mui/material/Typography';\r\nimport { MessageViewModel } from '../../ViewModels/CampaignViewModel';\r\nimport authService from '../../api-authorization/AuthorizeService';\r\nimport Message from './Message';\r\nimport CreateMessage from './CreateMessage';\r\nimport Grow from '@mui/material/Grow';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n width: '100%',\r\n marginBottom: theme.spacing(2)\r\n }\r\n })\r\n);\r\n\r\ninterface IMessageProps {\r\n clientId: number;\r\n}\r\n\r\nexport default function Messages(props: IMessageProps) {\r\n const classes = useStyles();\r\n const [messages, setMessages] = React.useState([]);\r\n const [loaded, setLoaded] = React.useState(true);\r\n\r\n const getData = React.useCallback(async () => {\r\n setLoaded(false);\r\n const token = await authService.getAccessToken();\r\n\r\n fetch(`Client/GetMessages?clientId=${props.clientId}`, {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n })\r\n .then(response => response.json())\r\n .then(data => {\r\n setMessages(data);\r\n setLoaded(true);\r\n })\r\n .catch(error => {\r\n console.log('Message list error: ' + error);\r\n setLoaded(true);\r\n });\r\n }, [props.clientId]);\r\n React.useEffect(() => { getData(); }, [getData]);\r\n\r\n const items = messages.map(item => );\r\n\r\n return (\r\n \r\n \r\n Pinned Notes\r\n \r\n \r\n \r\n {items}\r\n \r\n \r\n \r\n \r\n );\r\n}","import * as React from 'react';\r\nimport { Theme } from '@mui/material/styles';\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport Dialog from '@mui/material/Dialog';\r\nimport DialogActions from '@mui/material/DialogActions';\r\nimport DialogContent from '@mui/material/DialogContent';\r\nimport DialogTitle from '@mui/material/DialogTitle';\r\nimport Typography from '@mui/material/Typography';\r\nimport Grid from '@mui/material/Grid';\r\nimport Button from '@mui/material/Button';\r\nimport CircularProgress from '@mui/material/CircularProgress';\r\nimport { CreateNoteViewModel } from '../../ViewModels/CampaignViewModel';\r\nimport { ValidatorForm, TextValidator, SelectValidator } from 'react-material-ui-form-validator';\r\nimport authService from '../../api-authorization/AuthorizeService';\r\nimport MenuItem from '@mui/material/MenuItem';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n heading: {\r\n fontSize: theme.typography.pxToRem(15),\r\n fontWeight: theme.typography.fontWeightRegular,\r\n },\r\n buttonProgress: {\r\n position: 'absolute',\r\n top: '50%',\r\n left: '50%',\r\n marginTop: -12,\r\n marginLeft: -12,\r\n }\r\n }),\r\n);\r\n\r\ninterface ICreateProps {\r\n clientId: number;\r\n campaignId: number;\r\n open: boolean;\r\n close: (refresh: boolean) => void;\r\n from: string;\r\n to: string;\r\n}\r\n\r\nexport default function CreateStatusNote(props: ICreateProps) {\r\n const classes = useStyles();\r\n const [note, setNote] = React.useState(new CreateNoteViewModel(props.campaignId));\r\n const [saving, setSaving] = React.useState(false);\r\n const [loading, setLoading] = React.useState(true);\r\n const [serverError, setError] = React.useState('');\r\n const [reasons, setReasons] = React.useState([]);\r\n\r\n React.useEffect(() => {\r\n\r\n getReasons();\r\n }, [props.to]);\r\n const getReasons = async () => {\r\n const token = await authService.getAccessToken();\r\n\r\n fetch(`Client/GetCommonReasons?from=${props.from}&to=${props.to}`, {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n })\r\n .then(response => response.json())\r\n .then(data => {\r\n setReasons(data);\r\n setLoading(false);\r\n })\r\n .catch(error => {\r\n });\r\n }\r\n const handleChange = (event: React.ChangeEvent) => {\r\n setNote({\r\n ...note,\r\n [event.target.name]: event.target.value\r\n });\r\n }\r\n\r\n\r\n const onClose = () => {\r\n if (!saving) {\r\n setNote(new CreateNoteViewModel(props.campaignId));\r\n props.close(false);\r\n }\r\n }\r\n\r\n const submit = async () => {\r\n setSaving(true);\r\n const token = await authService.getAccessToken();\r\n\r\n const newNote = note;\r\n note.id = props.campaignId;\r\n note.statusTo = props.to;\r\n fetch('Client/CreateStatusNote', {\r\n method: 'POST',\r\n headers: !token ? { 'Content-Type': 'application/json; charset=utf-8' } : { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json; charset=utf-8' },\r\n body: JSON.stringify(newNote)\r\n })\r\n .then(response => response.text())\r\n .then(data => {\r\n setNote(new CreateNoteViewModel(props.campaignId));\r\n fetch(`Client/UpdateStatus?clientId=${props.campaignId}&status=${props.to}`, {\r\n method: 'POST',\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n })\r\n .then(response => response.text())\r\n .then(data => {\r\n setSaving(false);\r\n props.close(true);\r\n })\r\n .catch(error => {\r\n setSaving(false);\r\n });\r\n })\r\n .catch(error => {\r\n setSaving(false);\r\n setError('A server error has occurred, please try again.');\r\n });\r\n\r\n \r\n }\r\n const commonReasons = reasons.map(m => {m});\r\n return (\r\n\r\n \r\n \r\n Add Note\r\n \r\n \r\n {!loading &&\r\n \r\n \r\n \r\n \r\n {serverError}\r\n \r\n {\r\n reasons.length > 0 &&\r\n \r\n \r\n {commonReasons}\r\n \r\n \r\n }\r\n \r\n {\r\n reasons.length > 0 ?\r\n \r\n :\r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n );\r\n}","import * as React from 'react';\r\nimport { Theme } from '@mui/material/styles';\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport Grid from '@mui/material/Grid';\r\nimport Fab from '@mui/material/Fab';\r\nimport Typography from '@mui/material/Typography';\r\nimport MenuItem from '@mui/material/MenuItem';\r\nimport Menu from '@mui/material/Menu';\r\nimport green from '@mui/material/colors/green';\r\nimport red from '@mui/material/colors/red';\r\nimport amber from '@mui/material/colors/amber';\r\nimport grey from '@mui/material/colors/grey';\r\nimport CreateStatusNote from './CreateStatusNote';\r\nimport Divider from '@mui/material/Divider';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n paper: {\r\n marginBottom: theme.spacing(2)\r\n },\r\n statusGrid: {\r\n flexGrow: 1\r\n },\r\n green: {\r\n color: theme.palette.getContrastText(green[500]),\r\n backgroundColor: green[500],\r\n '&:hover': {\r\n backgroundColor: green[700],\r\n },\r\n width: '100%'\r\n },\r\n amber: {\r\n color: theme.palette.getContrastText(amber[500]),\r\n backgroundColor: amber[500],\r\n '&:hover': {\r\n backgroundColor: amber[700],\r\n },\r\n width: '100%'\r\n },\r\n lightRed: {\r\n color: theme.palette.getContrastText('#ff7961'),\r\n backgroundColor: '#ff7961',\r\n '&:hover': {\r\n backgroundColor: '#ff7961',\r\n },\r\n width: '100%'\r\n },\r\n red: {\r\n color: theme.palette.getContrastText(red[500]),\r\n backgroundColor: red[500],\r\n '&:hover': {\r\n backgroundColor: red[700],\r\n },\r\n width: '100%'\r\n },\r\n darkRed: {\r\n color: theme.palette.getContrastText(red[700]),\r\n backgroundColor: red[700],\r\n '&:hover': {\r\n backgroundColor: red[900],\r\n },\r\n width: '100%'\r\n },\r\n grey: {\r\n color: theme.palette.getContrastText(grey[500]),\r\n backgroundColor: grey[500],\r\n width: '100%'\r\n },\r\n default: {\r\n width: '100%'\r\n },\r\n buttonProgress: {\r\n position: 'absolute',\r\n top: '50%',\r\n left: '50%',\r\n marginTop: -12,\r\n marginLeft: -12,\r\n }\r\n })\r\n);\r\n\r\ninterface IListItemProps {\r\n status: string;\r\n onClick: (value: string) => void;\r\n}\r\n\r\nconst StatusListItem = React.forwardRef((props: IListItemProps, ref: any) => {\r\n const onChange = () => {\r\n props.onClick(props.status);\r\n }\r\n\r\n return (\r\n \r\n {props.status}\r\n \r\n );\r\n});\r\n\r\ninterface IStatusProps {\r\n campaignId: number;\r\n status: string;\r\n clientId: number;\r\n refresh: () => void;\r\n user: any;\r\n}\r\n\r\nexport default function Status(props: IStatusProps) {\r\n const classes = useStyles();\r\n const [anchorEl, setAnchorEl] = React.useState(null);\r\n const [newStatus, setNew] = React.useState(props.status);\r\n const [user, setUser] = React.useState(null);\r\n //const [saving, setSaving] = React.useState(false);\r\n React.useEffect(() => { setNew(props.status); }, [props.status]);\r\n React.useEffect(() => { setUser(props.user); }, [props.user]);\r\n const [openDialog, setDialog] = React.useState(false);\r\n const adminStatuses = [\r\n { status: \"Onboarding\", class: classes.default },\r\n { status: \"Live\", class: classes.green },\r\n { status: \"Paused\", class: classes.grey },\r\n { status: \"Notice\", class: classes.lightRed },\r\n { status: \"Cancelled\", class: classes.red },\r\n ];\r\n const statuses = [\r\n { status: \"Live\", class: classes.green },\r\n ];\r\n\r\n const onChange = async (value: string) => {\r\n setNew(value);\r\n //setSaving(true);\r\n handleClose();\r\n handleDialog();\r\n //const token = await authService.getAccessToken();\r\n\r\n //fetch(`Campaign/UpdateStatus?campaignId=${props.campaignId}&status=${value}`, {\r\n // method: 'POST',\r\n // headers: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n //})\r\n // .then(response => response.text())\r\n // .then(data => {\r\n // setSaving(false);\r\n // })\r\n // .catch(error => {\r\n // setSaving(false);\r\n // });\r\n }\r\n\r\n const openMenu = (event: React.MouseEvent) => {\r\n setAnchorEl(event.currentTarget); \r\n }\r\n\r\n const handleClose = () => {\r\n setAnchorEl(null);\r\n };\r\n const handleDialog = () => {\r\n setDialog(!openDialog);\r\n }\r\n\r\n const closeDialog = (refresh: boolean) => {\r\n setDialog(false);\r\n\r\n if (!refresh) {\r\n setNew(props.status);\r\n } else {\r\n props.refresh();\r\n }\r\n }\r\n const statusClass = newStatus.length > 0 ? adminStatuses.find(f => f.status === newStatus)!.class : classes.default;\r\n const list = statuses.map((status) => (\r\n \r\n ));\r\n const adminList = adminStatuses.map((status) => (\r\n \r\n ));\r\n return (\r\n \r\n
    \r\n \r\n \r\n Status\r\n \r\n \r\n \r\n {newStatus}\r\n {/*saving && */}\r\n \r\n \r\n \r\n
    \r\n \r\n \r\n {\r\n (user?.role === \"Admin\" || user?.role === \"SuperAdmin\") ?\r\n adminList :\r\n list\r\n }\r\n \r\n \r\n
    \r\n );\r\n}","import * as React from 'react';\r\nimport Paper from '@mui/material/Paper';\r\nimport { Theme } from '@mui/material/styles';\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport Grid from '@mui/material/Grid';\r\nimport Typography from '@mui/material/Typography';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport { useLocation } from 'react-router';\r\nimport authService from '../../api-authorization/AuthorizeService';\r\nimport LinearProgress from '@mui/material/LinearProgress';\r\nimport Skeleton from '@mui/material/Skeleton';\r\nimport Edit from '@mui/icons-material/Edit';\r\nimport Dialog from '@mui/material/Dialog';\r\nimport DialogTitle from '@mui/material/DialogTitle';\r\nimport DialogContent from '@mui/material/DialogContent';\r\nimport DialogActions from '@mui/material/DialogActions';\r\nimport Button from '@mui/material/Button';\r\nimport DialogContentText from '@mui/material/DialogContentText';\r\nimport ClientViewModel from '../../ViewModels/ClientViewModel';\r\nimport Notes from './Notes';\r\nimport ClientInfo from './ClientInfo';\r\nimport CampaignTable from './CampaignTable';\r\nimport MultiFileInput from './MultiFileInput';\r\nimport FileDataViewModel from '../../ViewModels/FileDataViewModel';\r\nimport { CreateFileViewModel } from '../../ViewModels/CreateFileViewModel';\r\nimport { UtilityMethods } from './UtilityMethods';\r\nimport VisibilityIcon from '@mui/icons-material/Visibility';\r\nimport CloudDownloadIcon from '@mui/icons-material/CloudDownload';\r\nimport DeleteIcon from '@mui/icons-material/Delete';\r\nimport CircularProgress from '@mui/material/CircularProgress';\r\nimport TeamLeaderDialog from '../TeamLeaderDialog';\r\nimport DropdownViewModel from '../../ViewModels/DropdownViewModel';\r\nimport Messages from './Messages';\r\nimport Avatar from '@mui/material/Avatar';\r\nimport Tooltip from '@mui/material/Tooltip';\r\nimport Status from './Status';\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n paper: {\r\n padding: theme.spacing(2),\r\n marginBottom: theme.spacing(2)\r\n },\r\n showButton: {\r\n padding: 8,\r\n },\r\n bottomSpacing: {\r\n marginBottom: theme.spacing(2)\r\n },\r\n password: {\r\n paddingBottom: 0\r\n },\r\n buttonProgress: {\r\n position: 'absolute',\r\n top: '50%',\r\n left: '50%',\r\n marginTop: -12,\r\n marginLeft: -12,\r\n }\r\n })\r\n);\r\n\r\ninterface LocationState {\r\n clientId: number;\r\n}\r\n\r\nexport default function Client() {\r\n const classes = useStyles();\r\n const location = useLocation();\r\n const { clientId } = location.state || {\r\n ClientId: 0\r\n };\r\n const [loaded, setLoaded] = React.useState(false);\r\n const [user, setUser] = React.useState(null);\r\n const [openUploadDialog, setUploadOpen] = React.useState(false);\r\n const [submitting, setSubmitting] = React.useState(false);\r\n const [error, setError] = React.useState('');\r\n const [client, setClient] = React.useState(new ClientViewModel());\r\n const [fileData, setFileData] = React.useState(null);\r\n const [files, setFiles] = React.useState(null);\r\n const [fileList, setFileList] = React.useState([]);\r\n const [filesUpdating, setFilesUpdating] = React.useState(false);\r\n const [openExecDialog, setDialogOpen] = React.useState(false);\r\n const [users, setUsers] = React.useState([]);\r\n React.useEffect(() => {\r\n getFiles();\r\n getData();\r\n }, [clientId]);\r\n const getData = async () => {\r\n setLoaded(false);\r\n const token = await authService.getAccessToken();\r\n const user = await authService.getUser();\r\n setUser(user);\r\n\r\n fetch(`Client/GetClient?clientId=${clientId}`, {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n })\r\n .then(response => response.json())\r\n .then(data => {\r\n setClient(data);\r\n setLoaded(true);\r\n })\r\n .catch(error => {\r\n console.log('Client error: ' + error);\r\n setLoaded(true);\r\n });\r\n fetch('User/GetTeamLeaders', {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` },\r\n })\r\n .then(response => response.json())\r\n .then(data => {\r\n setUsers(data);\r\n })\r\n .catch(error => {\r\n console.log('Get team leaders error: ' + error);\r\n });\r\n \r\n }\r\n const getFiles = async () => {\r\n const token = await authService.getAccessToken();\r\n const user = await authService.getUser();\r\n setUser(user);\r\n\r\n fetch(`Client/GetFileList?clientId=${clientId}`, {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n })\r\n .then(response => response.json())\r\n .then(data => {\r\n setFileList(data);\r\n setFilesUpdating(false);\r\n })\r\n .catch(error => {\r\n console.log('File error: ' + error);\r\n });\r\n }\r\n const submit = (fileData: FileDataViewModel[], file: File[]) => {\r\n let formdata: FormData = new FormData();\r\n setSubmitting(true);\r\n setError('');\r\n var now = new Date();\r\n setFilesUpdating(true);\r\n var files: CreateFileViewModel[] = [];\r\n for (var i = 0; i < file.length; i++) {\r\n let createFileViewModel = new CreateFileViewModel;\r\n createFileViewModel.file = file[i];\r\n createFileViewModel.name = fileData[i].fileName;\r\n createFileViewModel.dateAdded = now;\r\n createFileViewModel.clientId = clientId;\r\n files.push(createFileViewModel);\r\n }\r\n formdata = UtilityMethods.convertModelToFormData(files, formdata);\r\n\r\n fetch('Client/UploadFiles', {\r\n method: 'POST',\r\n mode: 'cors',\r\n cache: 'no-cache',\r\n credentials: 'same-origin',\r\n body: formdata\r\n })\r\n .then((response: Response) => response.json())\r\n .then((data: any) => {\r\n setSubmitting(false);\r\n setUploadOpen(false);\r\n getFiles();\r\n })\r\n .catch(error => {\r\n setSubmitting(false);\r\n setError('An error occured');\r\n });\r\n }\r\n const removeFile = (fileData2: FileDataViewModel,) => {\r\n let f = files;\r\n let filesData = fileData;\r\n const dataindex = filesData.indexOf(fileData2);\r\n if (dataindex > -1) {\r\n filesData.splice(dataindex, 1);\r\n f.splice(dataindex, 1);\r\n }\r\n setFiles(f);\r\n setFileData(filesData);\r\n }\r\n const openUploaderDialog = () => {\r\n setUploadOpen(true);\r\n }\r\n const openTeamLeaderDialog = () => {\r\n setDialogOpen(true);\r\n }\r\n const onClose = (refresh: boolean) => {\r\n if (!submitting) {\r\n //setExec({ ClientId: ClientId, userId: '', startDate: new Date(), endDate: null });\r\n setUploadOpen(false);\r\n setDialogOpen(false);\r\n if (refresh) {\r\n getData();\r\n }\r\n }\r\n }\r\n const deleteFile = async (m: string) => {\r\n const token = await authService.getAccessToken();\r\n const user = await authService.getUser();\r\n setUser(user);\r\n setFilesUpdating(true);\r\n fetch(`Client/DeleteFile?fileId=${m}&clientId=${clientId}`, {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n })\r\n .then(response => response.json())\r\n .then(data => {\r\n getFiles();\r\n })\r\n .catch(error => {\r\n getFiles();\r\n console.log('File error: ' + error);\r\n });\r\n }\r\n const filesList = fileList.map(m =>\r\n \r\n \r\n \r\n {m}\r\n \r\n \r\n \r\n \r\n \r\n download(m)}\r\n disabled={\r\n !m.endsWith(\".jpg\") &&\r\n !m.endsWith(\".pdf\") &&\r\n !m.endsWith(\".weba\") &&\r\n !m.endsWith(\".webm\") &&\r\n !m.endsWith(\".webp\") &&\r\n !m.endsWith(\".wav\") &&\r\n !m.endsWith(\".txt\") &&\r\n !m.endsWith(\".tif\") &&\r\n !m.endsWith(\".tiff\") &&\r\n !m.endsWith(\".png\") &&\r\n !m.endsWith(\".mpeg\") &&\r\n !m.endsWith(\".mp3\") &&\r\n !m.endsWith(\".jpeg\") &&\r\n !m.endsWith(\".gif\") &&\r\n !m.endsWith(\".docx\") &&\r\n !m.endsWith(\".doc\") &&\r\n !m.endsWith(\".avi\") &&\r\n !m.endsWith(\".bmp\") &&\r\n !m.endsWith(\".svg\")\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n deleteFile(m)}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n return (\r\n \r\n {!loaded && }\r\n \r\n {loaded ? client.clientName : }\r\n \r\n \r\n \r\n \r\n \r\n Account Manager\r\n \r\n \r\n \r\n {loaded ? (((client.teamLeader!=null && client.teamLeader.length > 0) ?\r\n \r\n \r\n \r\n {client.teamLeader.substring(0, 2)}\r\n \r\n \r\n \r\n {client.teamLeader}\r\n \r\n : 'None Assigned'))\r\n : \r\n }\r\n \r\n \r\n \r\n {((user?.role !== \"Executive\" && user?.role !== \"Creator\") &&\r\n \r\n \r\n )\r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {loaded ?\r\n \r\n \r\n Files\r\n \r\n \r\n {filesUpdating ? : filesList}\r\n \r\n \r\n \r\n \r\n \r\n : \r\n }\r\n \r\n {loaded ?\r\n \r\n : \r\n }\r\n \r\n \r\n Upload Files\r\n \r\n \r\n {error}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}","export class CustomerSatisfactionSurveyViewModel {\r\n public surveyId: string = '';\r\n public question1Score: number | null = null;\r\n public question1note: string = '';\r\n public question2Score: number | null = null;\r\n public question2note: string = '';\r\n public question3Score: number | null = null;\r\n public question3note: string = '';\r\n public question4Score: number | null = null;\r\n public question4note: string = '';\r\npublic notes: string = '';\r\n public constructor(id: string) {\r\n this.surveyId = id;\r\n }\r\n}","import * as React from 'react';\r\nimport { Theme } from '@mui/material/styles';\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport Paper from '@mui/material/Paper';\r\nimport Grid from '@mui/material/Grid';\r\nimport Typography from '@mui/material/Typography';\r\nimport TextField from '@mui/material/TextField';\r\nimport Button from '@mui/material/Button';\r\nimport { CustomerSatisfactionSurveyViewModel } from '../ViewModels/CustomerSatisfactionSurveyViewModel';\r\nimport Snackbar from '@mui/material/Snackbar';\r\nimport Alert from '@mui/material/Alert';\r\nimport CircularProgress from '@mui/material/CircularProgress';\r\nimport RadioGroup from '@mui/material/RadioGroup';\r\nimport FormControlLabel from '@mui/material/FormControlLabel';\r\nimport Radio from '@mui/material/Radio';\r\nimport FormControl from '@mui/material/FormControl';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n paper: {\r\n padding: theme.spacing(2),\r\n },\r\n }),\r\n);\r\n\r\ninterface ICustomerSatisfactionSurveyProps {\r\n surveyId: string;\r\n}\r\n\r\nexport default function CustomerSatisfactionSurvey(props: ICustomerSatisfactionSurveyProps) {\r\n const { surveyId } = props;\r\n const classes = useStyles();\r\n const [survey, setSurvey] = React.useState(new CustomerSatisfactionSurveyViewModel(surveyId));\r\n const [open, setOpen] = React.useState(false);\r\n const [submitted, setSubmitted] = React.useState();\r\n const [emptyFields, setEmptyFields] = React.useState(false);\r\n const [surveyValid, setSurveyValid] = React.useState(null);\r\n\r\n React.useEffect(() => { getSurvey(); }, []);\r\n\r\n const getSurvey = async () => {\r\n\r\n fetch(`CustomerSurveySatifaction/GetSurvey?surveyId=${survey.surveyId}`, {\r\n headers: { 'Content-Type': 'application/json; charset=utf-8' }\r\n })\r\n .then(response => response.json())\r\n .then(data => {\r\n if (data) {\r\n setSurveyValid(false);\r\n }\r\n else {\r\n setSurveyValid(true)\r\n }\r\n })\r\n .catch(error => {\r\n console.log('Get team leaders error: ' + error);\r\n });\r\n }\r\n\r\n const submitResults = async () => {\r\n\r\n fetch('CustomerSurveySatifaction/SubmitSurveyResults', {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json; charset=utf-8' },\r\n body: JSON.stringify(survey)\r\n })\r\n .then(response => response.json())\r\n .then(data => {\r\n if (data) {\r\n setSubmitted(true);\r\n }\r\n else {\r\n setOpen(true);\r\n }\r\n })\r\n .catch(error => {\r\n console.log('Get team leaders error: ' + error);\r\n setOpen(true);\r\n });\r\n }\r\n const handleClose = (event?: React.SyntheticEvent, reason?: string) => {\r\n if (reason === 'clickaway') {\r\n setOpen(false)\r\n return;\r\n }\r\n }\r\n\r\n const pressSubmit = () => {\r\n if (survey.question1Score != null && survey.question2Score != null\r\n && survey.question3Score != null && survey.question4Score != null) {\r\n setEmptyFields(false);\r\n\r\n submitResults();\r\n }\r\n };\r\n\r\n const handleChange = (name: any, newValue: any) => {\r\n console.log(newValue)\r\n setSurvey({\r\n ...survey,\r\n [name]: newValue\r\n });\r\n }\r\n\r\n const handleChangeNumber = (e: React.ChangeEvent) => {\r\n const val = parseInt(e.target.value);\r\n setSurvey({\r\n ...survey,\r\n [e.target.name]: val\r\n });\r\n }\r\n\r\n return surveyValid === null ?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n :\r\n (!surveyValid ?\r\n (!submitted ?\r\n \r\n \r\n \r\n How would you rate the quantity of the leads generated last week?\r\n \r\n \r\n \r\n \r\n } label=\"Very Poor\" />\r\n } label=\"Poor\" />\r\n } label=\"Good\" />\r\n } label=\"Very Good\" />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n How would you rate the quality of the leads generated last week?\r\n \r\n \r\n \r\n \r\n } label=\"Very Poor\" />\r\n } label=\"Poor\" />\r\n } label=\"Good\" />\r\n } label=\"Very Good\" />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n How would you rate the communication?\r\n \r\n \r\n \r\n \r\n } label=\"Very Poor\" />\r\n } label=\"Poor\" />\r\n } label=\"Good\" />\r\n } label=\"Very Good\" />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Overall how satisfied are you with client?\r\n \r\n \r\n \r\n \r\n } label=\"Very Poor\" />\r\n } label=\"Poor\" />\r\n } label=\"Good\" />\r\n } label=\"Very Good\" />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n Additional comments (optional):\r\n {\r\n handleChange('notes', event.target.value);\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n Something went wrong. Please try again.\r\n \r\n \r\n\r\n \r\n \r\n \r\n {emptyFields &&\r\n \r\n Please ensure you've answered all questions.\r\n }\r\n \r\n \r\n \r\n Submit\r\n \r\n \r\n \r\n \r\n \r\n :\r\n \r\n Thank you for your feedback.\r\n \r\n )\r\n :\r\n \r\n Sorry, this survey is no longer active.\r\n \r\n );\r\n\r\n}","import * as React from 'react';\r\nimport { Theme } from '@mui/material/styles';\r\nimport { WithStyles, createStyles, withStyles } from '@mui/styles';\r\nimport Button from '@mui/material/Button';\r\nimport TextField from '@mui/material/TextField';\r\nimport Grid from '@mui/material/Grid';\r\nimport Dropzone from \"react-dropzone\";\r\nimport DeleteIcon from '@mui/icons-material/Delete';\r\nimport FileDataViewModel from '../ViewModels/FileDataViewModel';\r\n\r\nconst styles = (theme: Theme) => createStyles({\r\n root: {\r\n flexGrow: 1,\r\n },\r\n paper: {\r\n padding: theme.spacing(1),\r\n },\r\n marginTop: {\r\n marginTop: theme.spacing(1)\r\n },\r\n fileInput: {\r\n textAlign: 'center',\r\n border: '1px dashed grey',\r\n backgroundColor: 'lightgrey',\r\n padding: '30px 0px'\r\n }\r\n});\r\n\r\ninterface IFileInputProps {\r\n files: File[];\r\n fileData: FileDataViewModel[];\r\n addFile: (fileData: FileDataViewModel[], file: File[]) => void;\r\n removeFile: (fileData: FileDataViewModel) => void;\r\n submitting: boolean;\r\n}\r\n\r\ninterface IFileInputState {\r\n fileData: FileDataViewModel[];\r\n file: File[];\r\n fileTypes: string[];\r\n clearFilesKey: number; // necessary to force rerender and clear of file in dropzone\r\n \r\n}\r\n\r\nclass MultiFileInput extends React.Component, IFileInputState> {\r\n constructor(props: any) {\r\n super(props);\r\n\r\n this.state = {\r\n fileData: [],\r\n file: [],\r\n fileTypes: [],\r\n clearFilesKey: 0\r\n };\r\n }\r\n\r\n public componentDidMount() { }\r\n\r\n public render() {\r\n const onDrop = (currFile: any) => {\r\n const newFileData = this.state.fileData;\r\n const newFile = this.state.file;\r\n for (var i = 0; i < currFile.length; i++) {\r\n let currFileData = new FileDataViewModel();\r\n currFileData.fileName = currFile[i].name;\r\n newFileData.push(currFileData);\r\n newFile.push(currFile[i]);\r\n\r\n }\r\n this.setState({\r\n fileData: newFileData,\r\n file: newFile\r\n });\r\n }\r\n\r\n const fileNames = this.state.fileData.map(item => \r\n \r\n \r\n \r\n \r\n \r\n );\r\n return (\r\n \r\n \r\n \r\n {({ getRootProps, getInputProps, isDragActive }) => (\r\n
    \r\n
    \r\n \r\n {\r\n isDragActive ?\r\n

    Drop the files here ...

    \r\n :\r\n

    Drag 'n' drop some files here, or click to select files

    \r\n }\r\n
    \r\n
    \r\n )}\r\n
    \r\n
    \r\n {\r\n fileNames\r\n }\r\n \r\n \r\n \r\n
    \r\n );\r\n }\r\n\r\n //private onDrop = (currFile: any) => {\r\n // const newFileData = this.state.fileData;\r\n // const newFile = this.state.file;\r\n // for (var i = 0; i < currFile.length; i++) {\r\n // let currFileData = new FileDataViewModel();\r\n // currFileData.fileName = currFile[i].name;\r\n // newFileData[0]=(currFileData);\r\n // newFile[0]=(currFile[i]);\r\n\r\n // }\r\n // this.setState({\r\n // fileData: newFileData,\r\n // file: newFile\r\n // });\r\n //}\r\n\r\n private addFile = () => {\r\n this.props.addFile(this.state.fileData, this.state.file);\r\n\r\n this.setState({ fileData: [], clearFilesKey: this.state.clearFilesKey + 1 });\r\n }\r\n\r\n private onChange = (e: React.ChangeEvent) => {\r\n this.setValue(e.target.name, e.target.value);\r\n }\r\n\r\n private setValue = (key: string, value: any) => {\r\n //this.setState({ fileData: { ...this.state.fileData, [key]: value } as any });\r\n }\r\n private removeFile = (file: FileDataViewModel) => {\r\n let files = this.state.file;\r\n let filesData = this.state.fileData;\r\n const dataindex = filesData.indexOf(file);\r\n if (dataindex > -1) {\r\n filesData.splice(dataindex, 1);\r\n files.splice(dataindex, 1);\r\n }\r\n this.setState({ file: files, fileData: filesData });\r\n }\r\n}\r\n\r\nexport default withStyles(styles)(MultiFileInput);","import * as React from 'react';\r\nimport Grid from '@mui/material/Grid';\r\nimport Typography from '@mui/material/Typography';\r\nimport Dialog from '@mui/material/Dialog';\r\nimport DialogTitle from '@mui/material/DialogTitle';\r\nimport DialogContent from '@mui/material/DialogContent';\r\nimport DialogContentText from '@mui/material/DialogContentText';\r\nimport DialogActions from '@mui/material/DialogActions';\r\nimport Button from '@mui/material/Button';\r\nimport MultiFileInput from './MultiFileInput';\r\nimport FileDataViewModel from '../ViewModels/FileDataViewModel';\r\nimport { UtilityMethods } from '../Clients/ClientPage/UtilityMethods';\r\nimport { CreateFileViewModel } from '../ViewModels/CreateFileViewModel';\r\n//const useStyles = makeStyles((theme: Theme) =>\r\n// createStyles({\r\n// paper: {\r\n// padding: theme.spacing(2),\r\n// },\r\n// table: {\r\n// minWidth: 650,\r\n// },\r\n// })\r\n//);\r\n\r\nexport default function Profile() {\r\n // const classes = useStyles();\r\n const [openUploadDialog, setUploadOpen] = React.useState(false);\r\n const [error, setError] = React.useState('');\r\n const [fileData, setFileData] = React.useState(null);\r\n const [files, setFiles] = React.useState(null);\r\n const [submitting, setSubmitting] = React.useState(false);\r\n const onClose = (refresh: boolean) => {\r\n if (!submitting) {\r\n //setExec({ ClientId: ClientId, userId: '', startDate: new Date(), endDate: null });\r\n setUploadOpen(false);\r\n if (refresh) {\r\n }\r\n }\r\n }\r\n const openUploaderDialog = () => {\r\n setUploadOpen(true);\r\n }\r\n const removeFile = (fileData2: FileDataViewModel,) => {\r\n let f = files;\r\n let filesData = fileData;\r\n const dataindex = filesData.indexOf(fileData2);\r\n if (dataindex > -1) {\r\n filesData.splice(dataindex, 1);\r\n f.splice(dataindex, 1);\r\n }\r\n setFiles(f);\r\n setFileData(filesData);\r\n }\r\n const submit = (fileData: FileDataViewModel[], file: File[]) => {\r\n setSubmitting(true);\r\n setError('');\r\n let formdata: FormData = new FormData();\r\n var files: CreateFileViewModel[] = [];\r\n for (var i = 0; i < file.length; i++) {\r\n let createFileViewModel = new CreateFileViewModel;\r\n createFileViewModel.file = file[i];\r\n files.push(createFileViewModel);\r\n }\r\n formdata = UtilityMethods.convertModelToFormData(files, formdata);\r\n fetch('User/UploadAvatar', {\r\n method: 'POST',\r\n mode: 'cors',\r\n cache: 'no-cache',\r\n credentials: 'same-origin',\r\n body: formdata\r\n })\r\n .then((response: Response) => response.json())\r\n .then((data: any) => {\r\n setSubmitting(false);\r\n setUploadOpen(false);\r\n var source = '/User/GetAvatar',\r\n timestamp = (new Date()).getTime(),\r\n newUrl = source + '?_=' + timestamp;\r\n var img = document.getElementById(\"avatar\") as HTMLImageElement;\r\n img!.src = newUrl;\r\n })\r\n .catch(error => {\r\n setSubmitting(false);\r\n setError('An error occured');\r\n });\r\n }\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n Avatar\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n Upload Files\r\n \r\n \r\n {error}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}","import * as React from 'react';\r\nimport authService from '../api-authorization/AuthorizeService';\r\n// import Typography from '@mui/material/Typography';\r\n\r\n// Consider deleting or researching how to use\r\n\r\nexport default function SuperAdminPowerBI() {\r\n\r\n const [Access, SetAccess] = React.useState(false);\r\n React.useEffect(() => {\r\n authService.getUser().then(user => {\r\n if (user.role == \"SuperAdmin\") {\r\n\r\n SetAccess(true);\r\n }\r\n });\r\n }, []);\r\n\r\n\r\n\r\n return (\r\n \r\n {\r\n Access &&\r\n
    \r\n \r\n
    \r\n }\r\n
    \r\n );\r\n}","import AdapterDateFns from '@mui/lab/AdapterDateFns';\r\nimport LocalizationProvider from '@mui/lab/LocalizationProvider';\r\nimport DatePicker from '@mui/lab/DatePicker';\r\nimport TextField from '@mui/material/TextField';\r\n\r\ninterface IDatePickerProps {\r\n date: Date | null;\r\n name: string;\r\n label: string;\r\n disablePast: boolean;\r\n disableFuture: boolean;\r\n monthOnly?: boolean;\r\n onChange: (date: Date | null, name: string) => void;\r\n}\r\n\r\nexport default function Datepicker(props: IDatePickerProps) {\r\n return (\r\n \r\n {\r\n props.onChange(newValue as Date, props.name);\r\n }}\r\n disableFuture={props.disableFuture}\r\n disablePast={props.disablePast}\r\n renderInput={(params) => }\r\n />\r\n \r\n );\r\n}","import TableCell from \"@mui/material/TableCell\";\r\nimport TableRow from \"@mui/material/TableRow\";\r\nimport Tooltip from \"@mui/material/Tooltip\";\r\nimport ReportViewModel from \"../../ViewModels/ReportViewModel\";\r\n\r\ninterface IProps {\r\n row: ReportViewModel\r\n}\r\n\r\nexport default function EmailReportTableRow(props: IProps) {\r\n const { row } = props;\r\n return (\r\n \r\n {row.campaignName}\r\n {row.clientName}\r\n {row.country}\r\n \r\n \r\n
    {row.packageName}
    \r\n
    \r\n
    \r\n {row.earliestRecord}\r\n {row.latestRecord}\r\n {row.sent}\r\n {row.opened} ({row.openedPercentage.toFixed()}%)\r\n {row.clicked}\r\n {row.interested}\r\n
    \r\n );\r\n}","import * as React from 'react';\r\nimport TextField from '@mui/material/TextField';\r\nimport DropdownViewModel from '../ViewModels/DropdownViewModel';\r\nimport Autocomplete from '@mui/material/Autocomplete';\r\n\r\ninterface IDropdownProps {\r\n client: number;\r\n clients: DropdownViewModel[];\r\n onChange: (clientId: number) => void;\r\n}\r\n\r\nexport default function ClientFilterDropdown(props: IDropdownProps) {\r\n const [search, setSearch] = React.useState('');\r\n const items = props.clients.map((item, index) => item.value);\r\n const client = props.clients.find(f => f.id == props.client)?.value??'';\r\n const handleChange = (event: any, newValue: any) => {\r\n const client = props.clients.find(f => f.value === newValue);\r\n props.onChange(client?.id as number ?? -1);\r\n };\r\n return (\r\n {\r\n setSearch(newInputValue);\r\n }}\r\n renderInput={(params: any) =>\r\n \r\n }\r\n />\r\n );\r\n}","import * as React from 'react';\r\nimport TableCell from \"@mui/material/TableCell\";\r\nimport TableHead from \"@mui/material/TableHead\";\r\nimport TableRow from \"@mui/material/TableRow\";\r\nimport TableSortLabel from \"@mui/material/TableSortLabel\";\r\nimport ReportViewModel, { SortReportViewModel } from \"../../ViewModels/ReportViewModel\";\r\nimport { Theme } from '@mui/material/styles';\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport Grid from '@mui/material/Grid';\r\nimport Datepicker from '../../Utilities/DatePicker';\r\nimport EmailReportTableRow from './EmailReportTableRow';\r\nimport TableBody from '@mui/material/TableBody';\r\nimport authService from '../../api-authorization/AuthorizeService';\r\nimport CircularProgress from '@mui/material/CircularProgress';\r\nimport Typography from '@mui/material/Typography';\r\nimport DropdownViewModel from '../../ViewModels/CampaignDropdownViewModel';\r\nimport TableContainer from '@mui/material/TableContainer';\r\nimport moment from 'moment';\r\nimport Table from '@mui/material/Table';\r\nimport ClientFilterDropdown from '../../Dropdowns/ClientFilterDropdown';\r\nimport Button from '@mui/material/Button';\r\nimport { CSVLink } from 'react-csv';\r\n\r\ninterface IProps {\r\n tab: number\r\n}\r\n\r\ninterface HeadCell {\r\n disablePadding: boolean;\r\n id: keyof SortReportViewModel;\r\n label: string;\r\n numeric: boolean;\r\n}\r\n\r\nconst headCells: HeadCell[] = [\r\n { id: 'campaignName', numeric: false, disablePadding: true, label: 'Campaign' },\r\n { id: 'clientName', numeric: false, disablePadding: true, label: 'Client' },\r\n { id: 'country', numeric: false, disablePadding: true, label: 'Country' },\r\n { id: 'packageName', numeric: false, disablePadding: true, label: 'Package' },\r\n { id: 'earliestRecord', numeric: true, disablePadding: true, label: 'EarliestRecord' },\r\n { id: 'latestRecord', numeric: true, disablePadding: true, label: 'Latest Record' },\r\n { id: 'sent', numeric: true, disablePadding: true, label: 'Sent' },\r\n { id: 'opened', numeric: true, disablePadding: true, label: 'Opened' },\r\n { id: 'clicked', numeric: true, disablePadding: true, label: 'Clicked' },\r\n { id: 'interested', numeric: true, disablePadding: true, label: 'Interested' },\r\n\r\n];\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n paper: {\r\n padding: theme.spacing(2),\r\n },\r\n table: {\r\n minWidth: 750,\r\n },\r\n scrollTable: {\r\n display: \"block\",\r\n overflowX: \"auto\",\r\n maxHeight: \"66vh\"\r\n },\r\n visuallyHidden: {\r\n border: 0,\r\n clip: 'rect(0 0 0 0)',\r\n height: 1,\r\n margin: -1,\r\n overflow: 'hidden',\r\n padding: 0,\r\n position: 'absolute',\r\n top: 20,\r\n width: 1,\r\n },\r\n csvButton: {\r\n color: 'inherit',\r\n textDecoration: 'inherit'\r\n }\r\n })\r\n);\r\n\r\ntype Order = 'asc' | 'desc';\r\n\r\nexport default function EmailReportTable(props: IProps) {\r\n const classes = useStyles();\r\n const { tab } = props;\r\n const [orderBy, setOrderBy] = React.useState('');\r\n const [order, setOrder] = React.useState('desc');\r\n const d = new Date();\r\n d.setDate(d.getDate() - 7);\r\n const [date, setDate] = React.useState(d);\r\n const [endDate, setEndDate] = React.useState(new Date());\r\n const today = new Date();\r\n today.setDate(1);\r\n const [month, setMonth] = React.useState(today);\r\n const [data, setData] = React.useState(null);\r\n const [loaded, setLoaded] = React.useState(false);\r\n const [clients, setClients] = React.useState([]);\r\n const [clientFilter, setClientFilter] = React.useState(-1);\r\n\r\n React.useEffect(() => {\r\n getData();\r\n }, []);\r\n React.useEffect(() => {\r\n onTabChange();\r\n }, [tab]);\r\n React.useEffect(() => {\r\n if (data != null) {\r\n getData();\r\n }\r\n }, [month, date, endDate, order, orderBy, clientFilter]);\r\n\r\n const getData = async () => {\r\n setLoaded(false);\r\n const token = await authService.getAccessToken();\r\n\r\n var searchstartdate = moment(date).startOf('day');\r\n var searchenddate = moment(endDate).startOf('day');\r\n\r\n if (tab == 0) {\r\n searchstartdate = searchstartdate.startOf('week');\r\n searchenddate = searchstartdate.clone().add(6, 'd');\r\n }\r\n if (tab === 1) {\r\n searchstartdate = searchstartdate.startOf('month');\r\n searchenddate = searchstartdate.clone().endOf('month');\r\n }\r\n let url = `Report/GetWoodpeckerReport?clientFilter=${clientFilter}&startDate=${searchstartdate.toISOString()}&endDate=${searchenddate.toISOString()}&sortBy=${orderBy}&sort=${order}`;\r\n\r\n fetch(url, {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token} ` }\r\n })\r\n .then(response => response.json())\r\n .then(data => {\r\n setData(data);\r\n setLoaded(true);\r\n })\r\n .catch(error => {\r\n console.log('Woodpecker report error: ' + error);\r\n setLoaded(true);\r\n });\r\n\r\n fetch(`Report/GetClientDropdown`, {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token} ` }\r\n })\r\n .then(response => response.json())\r\n .then(data => {\r\n setClients(data);\r\n })\r\n .catch(error => {\r\n console.log(error);\r\n });\r\n }\r\n\r\n const handleRequestSort = (event: React.MouseEvent, property: keyof SortReportViewModel) => {\r\n const isAsc = orderBy === property && order === 'asc';\r\n setOrder(isAsc ? 'desc' : 'asc');\r\n setOrderBy(property);\r\n };\r\n\r\n const createSortHandler = (property: keyof SortReportViewModel) => (event: React.MouseEvent) => {\r\n handleRequestSort(event, property);\r\n };\r\n const onTabChange = () => {\r\n if (tab === 0) {\r\n setDate(moment(date).startOf('week').toDate());\r\n setEndDate(moment(date).endOf('week').toDate());\r\n }\r\n else if (tab === 1) {\r\n setDate(moment(date).startOf('month').toDate());\r\n setEndDate(moment(date).endOf('month').toDate());\r\n setMonth(moment(date).startOf('month').toDate());\r\n }\r\n }\r\n const onDateChange = (date: Date | null, name: string) => {\r\n if (tab === 1) {\r\n if (date !== null) {\r\n setDate(date as Date);\r\n setEndDate(moment(date).endOf('month').toDate());\r\n }\r\n } else {\r\n if (name.includes(\"end\")) {\r\n if (tab === 0) {\r\n setEndDate(moment(date).endOf('week').toDate());\r\n } else {\r\n setEndDate(date as Date);\r\n }\r\n } else {\r\n if (tab === 0) {\r\n setDate(moment(date).startOf('week').toDate());\r\n } else {\r\n setDate(date as Date);\r\n }\r\n }\r\n }\r\n }\r\n\r\n const datepicker = tab === 1 ?\r\n :\r\n ;\r\n\r\n \r\n const onClientChange = (clientId: number) => {\r\n setClientFilter(clientId);\r\n }\r\n const csvHeaders = [\r\n { label: 'Campaign', key: \"campaign\"},\r\n { label: 'Client', key: \"client\"},\r\n { label: 'Country', key: \"country\"},\r\n { label: 'Package', key: \"package\"},\r\n { label: 'EarliestRecord', key: \"earliestRecord\"},\r\n { label: 'Latest Record', key: \"latestRecord\"},\r\n { label: 'Sent', key: \"sent\"},\r\n { label: 'Opened', key: \"opened\"},\r\n { label: 'clicked', key: \"clicked\"},\r\n{ label: 'interested', key: \"interested\"},\r\n ];\r\n const csvData = data != null ? data.map((item) => {\r\n return {\r\n campaign: item.campaignName,\r\n client: item.clientName,\r\n country: item.country,\r\n package: item.packageName,\r\n earliestRecord: item.earliestRecord,\r\n latestRecord: item.latestRecord,\r\n sent: item.sent,\r\n opened: item.opened,\r\n clicked: item.clicked,\r\n interested: item.interested,\r\n };\r\n }):[];\r\n return (\r\n \r\n \r\n \r\n {datepicker}\r\n \r\n {tab === 2 &&\r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {headCells.map((headCell: HeadCell) => (\r\n \r\n \r\n {headCell.label}\r\n {orderBy === headCell.id ? (\r\n \r\n {order === 'desc' ? 'sorted descending' : 'sorted ascending'}\r\n \r\n ) : null}\r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n {!loaded &&\r\n \r\n Pulling latest data\r\n \r\n }\r\n {loaded && data && data.length > 0 &&\r\n data.map((row: ReportViewModel) => {\r\n return ();\r\n })\r\n }\r\n {loaded && data && data.length <= 0 &&\r\n \r\n No emails found\r\n \r\n }\r\n \r\n
    \r\n \r\n \r\n );\r\n}","import * as React from 'react';\r\nimport EmailReportTable from './EmailReportTable';\r\nimport Grid from '@mui/material/Grid';\r\nimport Tabs from '@mui/material/Tabs';\r\nimport Tab from '@mui/material/Tab';\r\n\r\nexport default function EmailReportContainer() {\r\n const [tab, setTab] = React.useState(2);\r\n\r\n const handleTabChange = (event: React.ChangeEvent<{}>, newTab: number) => {\r\n setTab(newTab);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}","import * as React from 'react';\r\nimport TextField from '@mui/material/TextField';\r\nimport MenuItem from '@mui/material/MenuItem';\r\nimport authService from '../api-authorization/AuthorizeService';\r\nimport CircularProgress from '@mui/material/CircularProgress';\r\n\r\ninterface IDropdownProps {\r\n id: number;\r\n onChange: (event: React.ChangeEvent) => void;\r\n}\r\n\r\nclass DropdownViewModel {\r\n id: number = 0;\r\n value: string = '';\r\n}\r\n\r\nexport default function CountryDropdown(props: IDropdownProps) {\r\n const [list, setList] = React.useState([]);\r\n const [loaded, setLoaded] = React.useState(false);\r\n\r\n React.useEffect(() => {\r\n setLoaded(false);\r\n getData();\r\n }, []);\r\n\r\n const getData = async () => {\r\n const token = await authService.getAccessToken();\r\n\r\n const response = await fetch('Campaign/GetCountries', {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n });\r\n const data = await response.json();\r\n setList(data);\r\n setLoaded(true);\r\n }\r\n\r\n const items = list.map((item, index) =>\r\n {item.value});\r\n\r\n return (\r\n \r\n {loaded ? null : }\r\n \r\n )\r\n }}\r\n >\r\n {items}\r\n \r\n );\r\n}","import * as React from 'react';\r\nimport { Theme } from '@mui/material/styles';\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport Grid from '@mui/material/Grid';\r\nimport Typography from '@mui/material/Typography';\r\nimport Paper from '@mui/material/Paper';\r\nimport Button from '@mui/material/Button';\r\nimport { ValidatorForm, TextValidator } from 'react-material-ui-form-validator';\r\nimport { CreateClientViewModel } from '../ViewModels/ClientViewModel';\r\nimport AdapterDateFns from '@mui/lab/AdapterDateFns';\r\nimport LocalizationProvider from '@mui/lab/LocalizationProvider';\r\nimport DatePicker from '@mui/lab/DatePicker';\r\nimport authService from '../api-authorization/AuthorizeService';\r\nimport { Redirect } from 'react-router';\r\nimport UserDropdown from '../Dropdowns/UserDropdown';\r\nimport DropdownViewModel from '../ViewModels/DropdownViewModel';\r\nimport TextField from '@mui/material/TextField';\r\nimport CountryDropdown from '../Dropdowns/CountryDropdown';\r\nimport PackageDropdown from '../Dropdowns/PackageDropdown';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n paper: {\r\n padding: theme.spacing(2),\r\n },\r\n })\r\n);\r\n\r\nexport default function CreateClient() {\r\n const classes = useStyles();\r\n\r\n const [client, setClient] = React.useState(new CreateClientViewModel());\r\n const [success, setSuccess] = React.useState(false);\r\n const [nameFree, setNameFree] = React.useState(true);\r\n const [serverError, setError] = React.useState('');\r\n const [users, setUsers] = React.useState([]);\r\n React.useEffect(() => { getData(); }, []);\r\n\r\n\r\n const getData = async () => {\r\n const token = await authService.getAccessToken();\r\n\r\n fetch('User/GetTeamLeaders', {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` },\r\n })\r\n .then(response => response.json())\r\n .then(data => {\r\n setUsers(data);\r\n })\r\n .catch(error => {\r\n console.log('Get team leaders error: ' + error);\r\n });\r\n }\r\n const handleChange = (event: React.ChangeEvent) => {\r\n setClient({\r\n ...client,\r\n [event.target.name]: event.target.value\r\n });\r\n }\r\n\r\n const onDropdownChange = (value: number | string) => {\r\n setClient({\r\n ...client,\r\n teamLeader: value as string\r\n })\r\n }\r\n\r\n const submit = async () => {\r\n const token = await authService.getAccessToken();\r\n\r\n fetch(`Client/CheckClientName?name=${client.clientName}`, {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` },\r\n })\r\n .then(response => response.json())\r\n .then(data => {\r\n setNameFree(data);\r\n if (data) {\r\n fetch('Client/CreateClient', {\r\n method: 'POST',\r\n headers: !token ? { 'Content-Type': 'application/json; charset=utf-8' } : { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json; charset=utf-8' },\r\n body: JSON.stringify(client)\r\n })\r\n .then(response => response.text())\r\n .then(data => {\r\n if (data === 'Ok') {\r\n setSuccess(true);\r\n } else {\r\n setError('A server error has occurred, please try again.');\r\n }\r\n })\r\n .catch(error => {\r\n console.log(error);\r\n setError('A server error has occurred, please try again.');\r\n });\r\n }\r\n })\r\n .catch(error => {\r\n console.log('Check name error: ' + error);\r\n });\r\n }\r\n\r\n return (\r\n \r\n {success && }\r\n \r\n \r\n \r\n \r\n Create Client\r\n \r\n \r\n {serverError}\r\n \r\n {\r\n !nameFree &&\r\n \r\n Client already exists with this name\r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n setClient({\r\n ...client,\r\n startDate: newValue as Date\r\n });\r\n }}\r\n renderInput={(params) => }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}","//import * as React from 'react';\r\n//import { Theme } from '@mui/material/styles';\r\n//import createStyles from '@mui/styles/createStyles';\r\n//import makeStyles from '@mui/styles/makeStyles';\r\nimport WoodpeckerViewModel from './ViewModels/WoodpeckerViewModel';\r\nimport { styled } from '@mui/material/styles';\r\nimport Table from '@mui/material/Table';\r\nimport TableBody from '@mui/material/TableBody';\r\nimport TableCell, { tableCellClasses } from '@mui/material/TableCell';\r\nimport TableContainer from '@mui/material/TableContainer';\r\nimport TableHead from '@mui/material/TableHead';\r\nimport TableRow from '@mui/material/TableRow';\r\nimport Paper from '@mui/material/Paper';\r\nimport blue from '@mui/material/colors/blue';\r\n\r\n//const useStyles = makeStyles((theme: Theme) =>\r\n// createStyles({\r\n// paper: {\r\n// padding: theme.spacing(2),\r\n// marginBottom: theme.spacing(2),\r\n// },\r\n// notes: {\r\n// whiteSpace: 'pre-wrap'\r\n// }\r\n// })\r\n//);\r\n\r\ninterface IEmailStatsProps {\r\n woodpeckerVM: WoodpeckerViewModel;\r\n}\r\nconst StyledTableCell = styled(TableCell)(({ theme }) => ({\r\n [`&.${tableCellClasses.head}`]: {\r\n backgroundColor: blue[900],\r\n color: theme.palette.common.white,\r\n },\r\n [`&.${tableCellClasses.body}`]: {\r\n fontSize: 14,\r\n },\r\n}));\r\n\r\nconst StyledTableRow = styled(TableRow)(({ theme }) => ({\r\n '&:nth-of-type(odd)': {\r\n backgroundColor: theme.palette.action.hover,\r\n },\r\n // hide last border\r\n '&:last-child td, &:last-child th': {\r\n border: 0,\r\n },\r\n}));\r\nexport default function EmailStats(props: IEmailStatsProps) {\r\n // const classes = useStyles();\r\n // const { user, clientNote, clientId } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n Account\r\n Step\r\n Emails Sent\r\n Number Opened\r\n Opened %\r\n Opt out\r\n Replied\r\n Leads Generated\r\n Maybe\r\n \r\n \r\n \r\n {props.woodpeckerVM.stats.emailsCurrentWeek.map((row) => (\r\n \r\n \r\n {props.woodpeckerVM.from_email}\r\n \r\n {row.step}\r\n {row.emailSend}\r\n {row.open}\r\n {row.open_}\r\n {props.woodpeckerVM.stats.optout}\r\n {row.reply}\r\n {props.woodpeckerVM.stats.interestedCurrentWeek}\r\n {props.woodpeckerVM.stats.maybe_laterCurrentWeek}\r\n \r\n ))}\r\n \r\n
    \r\n
    \r\n\r\n );\r\n}","import { styled } from '@mui/material/styles';\r\nimport Table from '@mui/material/Table';\r\nimport TableBody from '@mui/material/TableBody';\r\nimport { tableCellClasses } from '@mui/material/TableCell';\r\nimport TableContainer from '@mui/material/TableContainer';\r\nimport TableHead from '@mui/material/TableHead';\r\nimport TableRow from '@mui/material/TableRow';\r\nimport Paper from '@mui/material/Paper';\r\nimport LeadEmailViewModel from './ViewModels/LeadEmailViewModel';\r\nimport green from '@mui/material/colors/green';\r\nimport amber from '@mui/material/colors/amber';\r\nimport DenseTableCell from '../Utilities/DenseTableCell';\r\n\r\ninterface ILeadEmailTableProps {\r\n leadEmailVM: LeadEmailViewModel[];\r\n interestedTable: boolean;\r\n}\r\nvar interested = false;\r\nconst StyledTableCell = styled(DenseTableCell)(({ theme }) => ({\r\n [`&.${tableCellClasses.head}`]: {\r\n backgroundColor: interested ? green[900] : amber[900],\r\n color: theme.palette.common.white,\r\n },\r\n [`&.${tableCellClasses.body}`]: {\r\n fontSize: 14,\r\n },\r\n}));\r\n\r\nconst StyledTableRow = styled(TableRow)(({ theme }) => ({\r\n '&:nth-of-type(odd)': {\r\n backgroundColor: theme.palette.action.hover,\r\n },\r\n // hide last border\r\n '&:last-child td, &:last-child th': {\r\n border: 0,\r\n },\r\n}));\r\nexport default function LeadEmailTable(props: ILeadEmailTableProps) {\r\n interested = props.interestedTable;\r\n return (\r\n \r\n \r\n \r\n \r\n {interested ?\r\n \r\n Interested\r\n \r\n :\r\n \r\n Maybe\r\n \r\n }\r\n \r\n \r\n Date\r\n Name\r\n Email Address\r\n Response\r\n \r\n \r\n \r\n {props.leadEmailVM.map((row) => (\r\n \r\n \r\n {row.date}\r\n \r\n \r\n {row.name}\r\n \r\n {row.email}\r\n {
    }
    \r\n
    \r\n ))}\r\n
    \r\n
    \r\n
    \r\n\r\n );\r\n}","export default class WoodpeckerViewModel {\r\n id: number = -1;\r\n name: string = '';\r\n status: string = '';\r\n folder_name: string = '';\r\n from_name: string = '';\r\n gdpr_unsubscribe: boolean = false;\r\n created: string = '';\r\n per_day: number = -1;\r\n from_email: string = '';\r\n bcc: string = '';\r\n cc: string = '';\r\n folder_id: number = -1;\r\n stats: Stats = new Stats();\r\n error: string = '';\r\n timestamp: string = '';\r\n}\r\nclass Stats {\r\n public prospects: number = -1;\r\n public delivery: number = -1;\r\n public invalid: number = -1;\r\n public bounced: number = -1;\r\n public queue: number = -1;\r\n public sent: number = -1;\r\n public check: number = -1;\r\n public autoreplied: number = -1;\r\n public opened: number = -1;\r\n public optout: number = -1;\r\n public clicked: number = -1;\r\n public replied: number = -1;\r\n public interested: number = -1;\r\n public maybe_later: number = -1;\r\n public not_interested: number = -1;\r\n public emails: Email[] = [];\r\n public emailsCurrentWeek: Email[] = [];\r\n public interestedCurrentWeek: number = -1;\r\n public maybe_laterCurrentWeek: number = -1;\r\n}\r\nexport class Email {\r\n public subject: string = '';\r\n public msg: string = '';\r\n public timezone: string = '';\r\n public use_prospect_timezone: boolean = false;\r\n public sunFrom: number = -1;\r\n public sunTo: number = -1;\r\n public monFrom: number = -1;\r\n public monTo: number = -1;\r\n public tueFrom: number = -1;\r\n public tueTo: number = -1;\r\n public wedFrom: number = -1;\r\n public wedTo: number = -1;\r\n public thuFrom: number = -1;\r\n public thuTo: number = -1;\r\n public friFrom: number = -1;\r\n public friTo: number = -1;\r\n public satFrom: number = -1;\r\n public satTo: number = -1;\r\n public sunday: Sunday[] = [];\r\n public monday: Monday[] = [];\r\n public tuesday: Tuesday[] = [];\r\n public wednesday: Wednesday[] = [];\r\n public thursday: Thursday[] = [];\r\n public friday: Friday[] = [];\r\n public saturday: Saturday[] = [];\r\n public track_open: boolean = false;\r\n public track_click: boolean = false;\r\n public attach_follow: boolean = false;\r\n public follow_up: number = -1;\r\n public number: number = -1;\r\n public step: number = -1;\r\n // public object condition { get; set; }\r\n public emailSend: number = -1;\r\n public toSend: number = -1;\r\n public delivery: number = -1;\r\n public open_: string = '';\r\n public open: number = -1;\r\n public reply_: string = '';\r\n public reply: number = -1;\r\n public invalid_: string = '';\r\n public invalid: number = -1;\r\n public bounce_: string = '';\r\n public bounce: number = -1;\r\n}\r\nclass Sunday {\r\n public from: number = -1;\r\n public to: number = -1;\r\n}\r\nclass Saturday {\r\n public from: number = -1;\r\n public to: number = -1;\r\n}\r\nclass Friday {\r\n public from: number = -1;\r\n public to: number = -1;\r\n}\r\nclass Thursday {\r\n public from: number = -1;\r\n public to: number = -1;\r\n}\r\nclass Wednesday {\r\n public from: number = -1;\r\n public to: number = -1;\r\n}\r\nclass Tuesday {\r\n public from: number = -1;\r\n public to: number = -1;\r\n}\r\nclass Monday {\r\n public from: number = -1;\r\n public to: number = -1;\r\n}","import LeadEmailViewModel from \"./LeadEmailViewModel\";\r\nimport WoodpeckerViewModel from \"./WoodpeckerViewModel\";\r\nexport default class EmailStatsViewModel {\r\n woodpeckerViewModel: WoodpeckerViewModel = new WoodpeckerViewModel();\r\n interestedLeadEmailViewModel: LeadEmailViewModel[] = [];\r\n maybeLeadEmailViewModel: LeadEmailViewModel[] = [];\r\n}\r\n","import React, { useRef, useState } from \"react\";\r\nimport EmailStats from \"./EmailStats\";\r\nimport LeadEmailTable from \"./LeadEmailTable\";\r\nimport { useLocation } from 'react-router';\r\nimport authService from \"../api-authorization/AuthorizeService\";\r\nimport Grid from \"@mui/material/Grid\";\r\nimport Button from \"@mui/material/Button\";\r\nimport EmailStatsViewModel from \"./ViewModels/EmailStatsViewModel\";\r\nimport CircularProgress from \"@mui/material/CircularProgress\";\r\ninterface LocationState {\r\n woodPeckerId: number;\r\n startDate: Date;\r\n endDate: Date;\r\n}\r\n\r\ninterface IStatEmailTemplateProps {\r\n}\r\n\r\nexport default function StatEmailTemplate(props: IStatEmailTemplateProps) {\r\n const [emailStatsViewModel, setEmailStatsViewModel] = useState(new EmailStatsViewModel());\r\n const toCopy = useRef(null);\r\n const location = useLocation();\r\n const [loaded, setLoaded] = useState(false);\r\n const { woodPeckerId, startDate, endDate } = location.state || {\r\n woodPeckerId: 0,\r\n startDate: null,\r\n endDate: null\r\n };\r\n React.useEffect(() => {\r\n getWoodpeckerData();\r\n }, []);\r\n const getWoodpeckerData = async () => {\r\n setLoaded(false);\r\n const token = await authService.getAccessToken();\r\n const url = (startDate === null || endDate === null) ? `WoodPecker/GetWoodpeckerEmailTemplate?woodpeckerId=${woodPeckerId}` : `WoodPecker/GetWoodpeckerEmailTemplateHistorical?woodpeckerId=${woodPeckerId}&startDate=${startDate.toISOString()}&endDate=${endDate.toISOString()}`\r\n\r\n fetch(url, {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` },\r\n })\r\n .then(response => response.json())\r\n .then(data => {\r\n setEmailStatsViewModel(data);\r\n setLoaded(true);\r\n })\r\n .catch(error => {\r\n setLoaded(true);\r\n });\r\n }\r\n const copy = () => {\r\n if (toCopy && toCopy.current) {\r\n console.log(\"Copying Content\");\r\n //const code = toCopy.current.innerHTML;\r\n //copyFormatted(code);\r\n window.getSelection()!.removeAllRanges();\r\n var range = document.createRange();\r\n range.selectNode(toCopy.current);\r\n window.getSelection()!.addRange(range);\r\n document.execCommand('copy');\r\n window.getSelection()!.removeAllRanges();\r\n }\r\n }\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {\r\n loaded ?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n :\r\n \r\n }\r\n \r\n \r\n );\r\n}","import { Route, Switch } from 'react-router';\r\nimport Layout from './components/Layout';\r\nimport { Home } from './components/Home';\r\nimport AuthorizeRoute from './components/api-authorization/AuthorizeRoute';\r\nimport ApiAuthorizationRoutes from './components/api-authorization/ApiAuthorizationRoutes';\r\nimport { ApplicationPaths } from './components/api-authorization/ApiAuthorizationConstants';\r\nimport { createTheme, responsiveFontSizes, adaptV4Theme } from '@mui/material/styles';\r\nimport { ThemeProvider, Theme, StyledEngineProvider } from '@mui/material/styles';\r\nimport RegisterConfirmation from './components/Admin/RegisterConfirmation';\r\nimport ClientList from './components/Clients/ClientList';\r\nimport TeamList from './components/Teams/TeamList';\r\nimport Campaign from './components/Campaigns/CampaignPage/Campaign';\r\nimport UpdateUser from './components/Admin/UpdateUser';\r\nimport AdminDashboard from './components/Admin/AdminDashboard';\r\nimport PowerBI from './components/PowerBITest/PowerBI';\r\nimport Client from './components/Clients/ClientPage/Client';\r\nimport CustomerSatisfactionSurvey from './components/CustomerSatisfactionSurvey/CustomerSatisfactionSurvey';\r\nimport Profile from './components/Profile/Profile';\r\nimport SuperAdminPowerBI from './components/PowerBITest/SuperAdminPowerBI';\r\nimport EmailReportContainer from './components/Reports/Woodpecker/EmailReportContainer';\r\nimport CreateClient from './components/Clients/CreateClient';\r\nimport StatEmailTemplate from './components/EmailTemplate/StatEmailTemplate';\r\n\r\n\r\ndeclare module '@mui/styles/defaultTheme' {\r\n // eslint-disable-next-line @typescript-eslint/no-empty-interface\r\n interface DefaultTheme extends Theme {}\r\n}\r\n\r\n\r\nconst theme = createTheme(adaptV4Theme({\r\n palette: {\r\n primary: { main: /*'#0077B5'*/ '#000000' },\r\n secondary: {\r\n main: /*'#FF7052'*/'#000000',\r\n contrastText: '#ffffff'\r\n },\r\n background: {default: '#ffffff'}\r\n }\r\n}));\r\n\r\nexport default function App() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/**/}\r\n \r\n {/**/}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n"," import * as ReactDOM from 'react-dom';\r\nimport { BrowserRouter } from 'react-router-dom';\r\nimport App from './App';\r\n\r\nconst baseUrl = document.getElementsByTagName('base')[0].getAttribute('href');\r\nconst rootElement = document.getElementById('root');\r\n\r\nReactDOM.render(\r\n \r\n \r\n {() => { document.body.style.backgroundColor = \"#ffffff\"; }}\r\n ,\r\n rootElement);\r\n\r\n","\"use strict\";\r\nvar __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar React = require(\"react\");\r\nvar TableCell_1 = require(\"@mui/material/TableCell\");\r\nvar createStyles_1 = require(\"@mui/styles/createStyles\");\r\nvar makeStyles_1 = require(\"@mui/styles/makeStyles\");\r\nvar useStyles = (0, makeStyles_1.default)(function (theme) {\r\n return (0, createStyles_1.default)({\r\n root: {\r\n padding: \"6px 8px\"\r\n }\r\n });\r\n});\r\nfunction DenseTableCell(props) {\r\n var classes = useStyles();\r\n var cell = props.children ?\r\n React.createElement(TableCell_1.default, __assign({}, props, { classes: {\r\n root: classes.root\r\n } }), props.children)\r\n :\r\n React.createElement(TableCell_1.default, __assign({}, props, { classes: {\r\n root: classes.root\r\n } }));\r\n return (React.createElement(React.Fragment, null, cell));\r\n}\r\nexports.default = DenseTableCell;\r\n//# sourceMappingURL=DenseTableCell.js.map"],"sourceRoot":""}