{"version":3,"sources":["assets/img/Login/login-koobits-logo.svg","assets/img/Login/login-background.svg","assets/img/avatar.png","assets/img/sidebar-school.svg","assets/img/sidebar-school-active.svg","assets/img/sidebar-create-school.svg","assets/img/sidebar-create-school-active.svg","assets/img/modal-success.svg","assets/img/sidebar-account-manager.svg","assets/img/sidebar-account-manager-active.svg","assets/img/sidebar-create-account.svg","assets/img/sidebar-create-account-active.svg","services/login.js","components/Login/LoginSection/LoginForm/LoginForm.styles.js","components/Login/LoginSection/LoginForm/LoginForm.js","components/Login/LoginSection/LoginSection.styles.js","components/Login/LoginSection/LoginSection.js","components/Login/PartnerNetworkSection/PartnerNetwork.styles.js","components/Login/PartnerNetworkSection/PartnerNetwork.js","pages/Login/Login.styles.js","pages/Login/Login.js","assets/img/logo.svg","components/Topbar/Topbar.styles.js","components/Topbar/NavItem.styles.js","components/Topbar/NavItem.js","components/Topbar/NavbarCollapse.styles.js","components/Topbar/NavbarCollapse.js","components/Topbar/NavProfile.styles.js","components/Topbar/NavProfile.js","components/Topbar/Topbar.js","components/Sidebar/Sidebar.styles.js","components/Sidebar/Sidebar.js","components/Sidebar/SidebarNavLink.styles.js","components/Sidebar/SidebarNavLink.js","components/Sidebar/SidebarSchool.js","components/Shared/DropdownMenu.styles.js","components/Shared/DropdownMenu.js","components/Shared/Button.styles.js","components/Shared/Button.js","components/Shared/PopoverMenuIcon.js","components/Shared/ActionButtons.styles.js","components/Shared/ActionButtons.js","components/School/SchoolListTable.styles.js","components/School/SchoolListTable.js","components/Shared/PopupModal.styles.js","components/Shared/PopupModal.js","components/School/DeleteModal.styles.js","components/School/DeleteModal.js","components/Shared/MatchedResult.styles.js","components/Shared/MatchedResult.js","components/Shared/Spinner.styles.js","components/Shared/Spinner.js","services/schools.js","constants/index.js","components/School/SearchResult.styles.js","components/School/SearchResult.js","components/Shared/Pagination.styles.js","components/Shared/Pagination.js","services/refreshToken.js","pages/School/SchoolList.styles.js","pages/School/SchoolList.js","helpers/parseSchoolList.js","components/School/SchoolDetails/ContractTable.styles.js","components/School/SchoolDetails/ContractTable.js","services/contracts.js","components/Shared/InfoModal.styles.js","components/Shared/InfoModal.js","pages/School/SchoolDetails.styles.js","pages/School/SchoolDetails.js","components/Shared/FormPageTopbar.styles.js","components/Shared/FormPageTopbar.js","components/Shared/FormInput.styles.js","components/Shared/FormInput.js","helpers/checkAccountManager.js","components/School/SchoolForm.styles.js","components/School/SchoolForm.js","components/Shared/SuccessModalBody.styles.js","components/Shared/SuccesModalBody.js","services/account-manager.js","pages/School/CreateSchool.js","pages/School/UpdateSchool.js","pages/School/CreateExistingSchool.js","helpers/parseContractJson.js","components/School/ContractForm.styles.js","components/School/ContractForm.js","helpers/sortArrayOfObjects.js","pages/School/CreateContract.styles.js","pages/School/CreateContract.js","pages/School/UpdateContract.js","pages/School/School.styles.js","pages/School/School.js","components/Sidebar/SidebarAccountManager.js","components/AccountManager/AMListTable.styles.js","components/AccountManager/AMListTable.js","helpers/getDateFormat.js","pages/AccountManager/AMList.styles.js","pages/AccountManager/AMList.js","components/AccountManager/AMForm.styles.js","components/AccountManager/AMForm.js","pages/AccountManager/CreateAM.js","pages/AccountManager/UpdateAM.styles.js","pages/AccountManager/UpdateAM.js","components/AccountManager/AuthorisedListTable.styles.js","components/AccountManager/AuthorisedListTable.js","pages/AccountManager/AuthorisedSchoolList.js","pages/AccountManager/AM.styles.js","pages/AccountManager/AM.js","components/Shared/AuthenticatedRoute.js","Routes.js","assets/styles/GlobalStyles.styles.js","App.js","serviceWorker.js","index.js","assets/img/empty-search-results.svg"],"names":["module","exports","login","username","password","urlencoded","URLSearchParams","append","process","fetch","method","headers","body","then","response","json","result","isNil","error","Error","error_description","catch","err","message","logout","localStorage","removeItem","history","push","InputContainer","styled","div","LoginFormContainer","Password","handleChange","useState","type","setType","name","id","placeholder","onChange","value","required","className","onClick","e","LoginErrors","errorTypes","url","link","text","style","color","paddingLeft","marginBottom","textAlign","hasOwnProperty","href","LoginForm","setUsername","setPassword","isLoading","setIsLoading","setError","target","handleSubmit","a","preventDefault","setItem","access_token","refresh_token","onSubmit","LoginSectionContainer","LoginSection","src","KoobitsLogo","alt","PartnerNetworkContainer","PartnerNetwork","Background","role","LoginContainer","Login","_extends","Object","assign","i","arguments","length","source","key","prototype","call","apply","this","_objectWithoutProperties","excluded","sourceKeys","keys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","createElement","transform","d","fill","stroke","strokeWidth","_ref","svgRef","title","props","width","height","viewBox","ref","ForwardRef","forwardRef","TopbarContainer","nav","NavItemContainer","NavItem","isActive","to","children","classname","join","withRouter","location","match","pathname","slice","NavbarCollapseContainer","NavbarCollapse","navs","map","index","String","ProfileContainer","NavProfileContainer","ProfileAvatar","avatar","NavProfile","Dropdown","Toggle","as","Menu","Item","eventKey","Topbar","SidebarContainer","Sidebar","NavLinkContainer","SidebarNavLink","path","activeIcon","icon","useLocation","SidebarSchool","SchoolIcon","SchoolActiveIcon","CreateSchoolIcon","CreateSchoolActiveIcon","StyledDropdown","DropdownMenu","selectedValue","valueKey","values","setValue","valueTemplate","variant","ID","event","undefined","ButtonStyle","Button","rest","PopoverMenuIcon","xmlns","ContractMenuContainer","PopoverMenuContainer","ContractMenu","customerID","data","useHistory","dispatch","useContext","SelectedSchoolDispatch","ContractModels","PopoverMenuItem","setIsActive","onMouseEnter","onMouseLeave","PopoverMenu","openModal","deleteId","marginLeft","SchoolListTableContainer","SchoolListTable","filterCountry","page","filteredData","filter","item","CountryName","schoolData","SchoolName","Contactperson","Designation","Contactnumber","CustomerId","EmptyResult","scope","StyledModal","Modal","PopupModal","show","hide","keyboard","onHide","Body","DeleteModalContainer","DeleteModal","MatchedResultSpan","span","MatchedResult","searchTerm","lowercaseResult","toLowerCase","lowercaseSearchTerm","stringArray","split","output","originalStringIndex","SpinnerContainer","position","gridColumn","top","Spinner","getSchools","authorization","getItem","res","IsSuccessful","Message","getSchoolById","getExistingSchool","params","console","log","createSchool","rawBody","JSON","stringify","updateSchool","deleteSchool","AccessibilityList","AccessibilityType","1","2","3","4","5","StatusList","PaymentStatus","Currency","0","CurrencyList","countryList","CountryID","192","100","169","232","129","146","13","customerTypeList","AccountType","6","7","SearchResultContainer","SearchResult","setData","useDebounce","debouncedSearchTerm","useEffect","Result","Name","PaginationContainer","PaginationShared","maxPage","numVisiblePages","onPageChange","onSearchPageChange","searchPage","pages","pageNumbers","range","firstIndex","numPagesOnLeft","Math","floor","numPagesOnRight","lastIndex","getPaginationNumbers","aria-label","disabled","pageNumber","max","evt","defaultProps","refreshToken","refreshFetchWrapper","request","refreshTokenResult","SchoolListContainer","SchoolList","List","maxDataPages","ceil","offset","setOffset","currentPage","setCurrentPage","dataSlice","number","newOffset","deletedId","setDeletedId","showDeleteModal","setShowDeleteModal","hideDeleteModal","setSearchTerm","setFilterCountry","sortCountryData","schoolList","sortedCountry","schoolObject","hasCountry","findIndex","country","school","sortCountry","sort","order","b","varA","toUpperCase","varB","comparison","compareValues","countryData","tempData","splice","Pagination","ContractTableContainer","ContractTable","AcademicYear","AccountManagerName","TotalValue","ContractDetails","reduce","accumulator","currentValue","AccountsPurchased","moment","StartDate","format","EndDate","ContractId","getPlans","schoolID","addContract","renewContract","updateContract","deleteContract","contractID","InfoModalStyle","InfoModal","msg","SchoolDetailsContainer","DetailItemContainer","DetailItem","DetailTitle","detail","SchoolDetails","parseInt","selectedContractID","setSelectedContractID","showDeleteContractModal","setShowDeleteContractModal","hideDeleteContractModal","showInfoModal","setShowInfoModal","infoModalMessage","setInfoModalMessage","SchoolId","Address","Website","StudentPopulation","Accessibility","Email","FormPageTopbar","goBack","CheckboxStyle","FormInput","label","defaultValue","register","step","OptionInput","options","bind","optionKey","hasCustomOnChange","Checkbox","checked","isAccountManagerInList","currentAccountManagerID","accountManagers","am","SchoolFormContainer","SchoolForm","ExistingSchool","address","postalCode","contactperson","designation","contactnumber","email","website","accessibility","status","countryId","schoolid","schoolName","studentPopulation","managerId","School_Id","input","setInput","bindData","val","tempState","PostalCode","Type","Status","CountryId","ManagerId","changeState","inputType","firstAccountManagerId","createSchoolForm","formData","submitForm","api","SuccessModalContainer","SuccessModal","SuccessIcon","getAccountManagers","getAccountManagerById","delAccountManager","userId","createAccountManager","updateAccountManager","CreateSchool","AMData","setAMData","modalOpen","setModalOpen","closeModal","UpdateSchool","selectedSchool","defaultAccountManager","CreateExistingSchool","parseCreateContractJSON","fieldsToConvertToInteger","fieldsToConvertToFloat","prop","includes","parseFloat","contractFields","startsWith","accountQuota","delimiterIndex","accountType","AccountsConsumed","ItemType","parseUpdateContractJSON","currentContract","AcademicYearStartDate","AcademicYearEndDate","contractLineItemIndex","lineItem","Contract_Item_Id","AccountsRemaining","ContractFormContainer","DatePickerInput","button","attrs","parseDateString","date","paddedMonth","month","day","year","findLatestContract","contracts","contract","contractEndDate","unix","getYearMonthFromDateString","datestring","getCurrentAccountQuota","contractDetails","lineItemIndex","ContractForm","currentYear","initialRangeValue","initialContractRange","plans","currentAccountManager","useForm","selectedContractIndex","contractRange","from","rangeValue","ContractNumber","DigitalCopy","RefContractId","setAPILoading","selectedPlan","setSelectedPlan","monthpicker","contractMonthPicker","pickerLang","months","setRangeValue","setContractRange","InfoModalMessage","isAPILoading","PlanId","newID","newPlanIndex","min","TransitionPeriod","years","lang","theme","listIndex","AccountTypes","Remarks","animation","size","CreateContract","setPlans","setAccountManagers","plan","AccountManagerId","SchoolContainer","selectedSchoolReducer","state","action","createContext","School","useReducer","dispatchSelectedSchools","Provider","exact","component","UpdateContract","AccManagerIcon","AccManagerActiveIcon","CreateAccIcon","CreateAccActiveIcon","AccountManagerListContainer","AccountManagerListTable","companyname","countryName","Customers","joindate","manegerName","ListContainer","statusData","AccountManagerList","activeData","setActiveData","alert","setAlert","setCountry","setStatus","elem","activeStatus","activeCountry","AccountManagerFormContainer","AccountManagerForm","disable","countryid","resellerid","nric","phonecountrycode","mobilenumber","bankdetails","nativelanguage","secondlanguage","latestmouyear","latestmou","salesterritory","remarks","inpState","setInpState","focused","setFocused","NRIC","selectedVal","bindValues","inpType","createReqObj","obj","onDateChange","onFocusChange","displayFormat","CreateAccountManager","UpdateAccountManagerContainer","UpdateAccountManager","showModal","setDisable","AuthorisedListTableContainer","AuthorisedListTable","schoolId","AuthorisedSchoolList","useParams","setSchoolData","setAccessibility","fontSize","marginTop","AccountManagerContainer","AccountManager","SidebarAccountManager","AuthenticatedRoute","Component","render","createBrowserHistory","basename","Routes","GlobalStyle","createGlobalStyle","App","Boolean","window","hostname","ReactDOM","StrictMode","document","getElementById","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.77cbe090.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/login-koobits-logo.97c7527b.svg\";","module.exports = __webpack_public_path__ + \"static/media/login-background.879c73a8.svg\";","module.exports = __webpack_public_path__ + \"static/media/avatar.1acf810c.png\";","module.exports = __webpack_public_path__ + \"static/media/sidebar-school.c6ada48f.svg\";","module.exports = __webpack_public_path__ + \"static/media/sidebar-school-active.bae8d13b.svg\";","module.exports = __webpack_public_path__ + \"static/media/sidebar-create-school.f8b2f71b.svg\";","module.exports = __webpack_public_path__ + \"static/media/sidebar-create-school-active.1f92d54a.svg\";","module.exports = __webpack_public_path__ + \"static/media/modal-success.1f6bea9e.svg\";","module.exports = __webpack_public_path__ + \"static/media/sidebar-account-manager.c4ba089f.svg\";","module.exports = __webpack_public_path__ + \"static/media/sidebar-account-manager-active.53178b5b.svg\";","module.exports = __webpack_public_path__ + \"static/media/sidebar-create-account.2f65834f.svg\";","module.exports = __webpack_public_path__ + \"static/media/sidebar-create-account-active.d09ba918.svg\";","import { isNil } from 'ramda';\nimport { history } from '../Routes';\n\nexport const login = (username, password) => {\n const urlencoded = new URLSearchParams();\n urlencoded.append('grant_type', 'password');\n urlencoded.append('username', username);\n urlencoded.append('password', password);\n urlencoded.append('client_id', process.env.REACT_APP_CLIENT_ID);\n urlencoded.append('client_secret', process.env.REACT_APP_CLIENT_SECRET);\n return fetch(`${process.env.REACT_APP_API_DOMAIN}/token`, {\n method: 'POST',\n headers: {\n 'content-type': 'application/x-www-form-urlencoded',\n },\n body: urlencoded,\n })\n .then((response) => {\n return response.json();\n })\n .then((result) => {\n if (!isNil(result.error)) {\n throw new Error(result.error_description);\n } else {\n return result;\n }\n })\n .catch((err) => {\n throw new Error(err?.message ?? 'Login failed'); // eslint-disable-line\n });\n};\n\nexport const logout = () => {\n localStorage.removeItem('access_token');\n localStorage.removeItem('refresh_token');\n history.push('/login');\n};\n","import styled from 'styled-components';\n\nexport const InputContainer = styled.div`\n display: flex;\n #login-id {\n background: #fff;\n padding: 8px 5px;\n border: none;\n border-bottom: 1px solid #828282;\n font-size: 18px;\n color: #393939;\n width: 100%;\n margin-bottom: 15px;\n outline: none;\n }\n #password {\n background: #fff;\n padding: 8px 5px;\n border: none;\n border-bottom: 1px solid #828282;\n font-size: 18px;\n color: #393939;\n width: calc(100% - 4rem);\n margin-bottom: 15px;\n outline: none;\n }\n .show-password {\n margin-top: 6px;\n input[type='checkbox'] {\n width: 12px;\n height: 12px;\n position: absolute;\n z-index: 1;\n margin-left: 15px;\n margin-top: 8px;\n cursor: pointer;\n /* Increase size of checkbox */\n -ms-transform: scale(2); /* IE */\n -moz-transform: scale(2); /* FF */\n -webkit-transform: scale(2); /* Safari and Chrome */\n -o-transform: scale(2); /* Opera */\n transform: scale(2);\n }\n span {\n margin-left: 40px;\n font-size: 15px;\n opacity: 1;\n }\n }\n`;\nexport const LoginFormContainer = styled.div`\n display: flex;\n flex-direction: column;\n background: #ffff;\n align-items: center;\n width: 90%;\n margin-top: 20px;\n .login-form {\n width: 100%;\n display: flex;\n flex-direction: column;\n justify-content: center;\n padding: 15px 20px;\n }\n .login-button {\n margin: auto;\n width: 100%;\n background-color: #ff5b00;\n border: none;\n outline: none;\n font-size: 24px;\n color: #ffff;\n padding: 5px;\n border-radius: 5px;\n &:hover {\n background-color: #f25008;\n }\n }\n`;\n","import React, { useState } from 'react';\nimport { login } from 'services/login';\nimport { LoginFormContainer, InputContainer } from './LoginForm.styles';\nimport { history } from '../../../../Routes';\n\nconst Password = ({ password, handleChange }) => {\n const [type, setType] = useState('password');\n const togglePasswordHandler = (e) => {\n if (type === 'password') {\n setType('text');\n } else {\n setType('password');\n }\n };\n\n return (\n \n \n
\n \n Show\n
\n
\n );\n};\n\nconst LoginErrors = ({ error, username }) => {\n const errorTypes = {\n 'Invalid Password.': {\n message:\n 'Your Password is wrong. Forgot password? Please contact Koobits Admin',\n },\n 'Invalid Username.': {\n message: 'Your Username is invalid.',\n url: {\n link:\n 'https://support.koobits.com/hc/en-gb/articles/212117966-Forgot-Login-ID-',\n text: 'Check Login ID Format',\n },\n },\n 'connection-issue': {\n message: \"Sorry, we can't connect to internet or our server.\",\n },\n \"You don't have permission to access\": {\n message: 'Sorry, your account does not have permission to access.',\n },\n };\n return (\n \n {errorTypes.hasOwnProperty(error)\n ? `${errorTypes[error].message} `\n : error}\n {errorTypes.hasOwnProperty(error) &&\n errorTypes[error].hasOwnProperty('url') && (\n \n {errorTypes[error].url.text}\n \n )}\n \n );\n};\n\nconst LoginForm = () => {\n const [username, setUsername] = useState('');\n const [password, setPassword] = useState('');\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState(null);\n\n const handleChange = (e) => {\n const { value, name } = e.target;\n if (name === 'login-id') {\n setUsername(value);\n } else {\n setPassword(value);\n }\n };\n\n const handleSubmit = async (e) => {\n e.preventDefault();\n setError(null);\n try {\n setIsLoading(true);\n const result = await login(username, password);\n localStorage.setItem('access_token', result.access_token);\n localStorage.setItem('refresh_token', result.refresh_token);\n setIsLoading(false);\n history.push('/school');\n } catch (err) {\n setIsLoading(false);\n setError(err.message);\n }\n };\n return (\n \n
\n \n \n \n \n {error !== null && }\n \n \n
\n );\n};\n\nexport default LoginForm;\n","import styled from 'styled-components';\n\nexport const LoginSectionContainer = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n padding: 100px;\n background: #ffff;\n width: 70%;\n font-family: Linotte Regular;\n .logo {\n display: flex;\n align-items: center;\n color: #f25008;\n font-size: 18px;\n font-family: Muli;\n font-weight: bold;\n p {\n margin: 9px 7px 0px 12px;\n white-space: nowrap;\n }\n }\n .signup-container {\n display: flex;\n margin-top: 10px;\n p {\n width: 320px;\n font-size: 16px;\n font-family: Linotte Light;\n margin: 0px;\n }\n a {\n margin-top: 5px;\n text-align: center;\n border: 1px solid #ff5b00;\n border-radius: 5px;\n color: #ff5b00;\n height: 30px;\n width: 80px;\n }\n }\n footer {\n color: #9a9a9f;\n font-size: 16px;\n font-family: Linotte Light;\n position: fixed;\n bottom: 50px;\n }\n`;\n","import React from 'react';\nimport KoobitsLogo from 'assets/img/Login/login-koobits-logo.svg';\nimport LoginForm from './LoginForm/LoginForm';\nimport { LoginSectionContainer } from './LoginSection.styles';\n\nconst LoginSection = () => {\n return (\n \n
\n \"logo\"\n

Sales Admin

\n
\n \n\n
KooBits Learning Pte Ltd
\n
\n );\n};\n\nexport default LoginSection;\n","import styled from 'styled-components';\n\nexport const PartnerNetworkContainer = styled.div`\n display: flex;\n flex-direction: column;\n width: 110vw;\n .background {\n position: absolute;\n height: 100%;\n left: 0px;\n z-index: -1;\n }\n .decoration {\n position: absolute;\n left: 0px;\n bottom: 0px;\n z-index: -1;\n }\n .title {\n padding: 50px 50px 0px;\n font-family: Linotte Regular;\n h5 {\n font-size: 32px;\n color: white;\n }\n p {\n font-size: 23px;\n color: #ffc551;\n }\n }\n .learn-more {\n background-color: #ffc551;\n color: white;\n max-width: 130px;\n margin-left: 50px;\n &:hover {\n background-color: #feb117;\n }\n }\n`;\n","import React from 'react';\nimport Background from 'assets/img/Login/login-background.svg';\nimport { PartnerNetworkContainer } from './PartnerNetwork.styles';\n\nconst PartnerNetwork = () => {\n return (\n \n \"background\"\n
\n
KooBits Learning
\n

Bring the best of education to your region

\n
\n \n Learn More\n \n
\n );\n};\n\nexport default PartnerNetwork;\n","import styled from 'styled-components';\n\nexport const LoginContainer = styled.div`\n display: flex;\n justify-content: center;\n height: 100vh;\n`;\n","import React from 'react';\nimport LoginSection from 'components/Login/LoginSection/LoginSection';\nimport PartnerNetwork from 'components/Login/PartnerNetworkSection/PartnerNetwork';\nimport { LoginContainer } from './Login.styles';\n\nconst Login = () => {\n return (\n \n \n \n \n );\n};\n\nexport default Login;\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"g\", {\n id: \"logo\",\n transform: \"translate(-12.975 -10.4)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_455\",\n \"data-name\": \"Path 455\",\n d: \"M196.614,95.086a5.825,5.825,0,0,0-2.14-2.369,6.165,6.165,0,0,0-3.235-.917,5.977,5.977,0,0,0-3.159.841,5.814,5.814,0,0,0-2.191,2.318,7.286,7.286,0,0,0-.051,6.5A5.712,5.712,0,0,0,188,103.823a6.076,6.076,0,0,0,3.261.892,6.293,6.293,0,0,0,3.261-.866,5.825,5.825,0,0,0,2.14-2.369,7.161,7.161,0,0,0,.739-3.21A7.829,7.829,0,0,0,196.614,95.086Zm-2.649,5.2a2.975,2.975,0,0,1-1.044,1.376,2.906,2.906,0,0,1-1.732.509,2.558,2.558,0,0,1-2.318-1.146,4.953,4.953,0,0,1-.79-2.751,5.319,5.319,0,0,1,.382-2.063,3.062,3.062,0,0,1,1.07-1.376,3.094,3.094,0,0,1,3.362.025,3.283,3.283,0,0,1,1.07,1.4,5.151,5.151,0,0,1,.382,2.012A6.417,6.417,0,0,1,193.965,100.283Z\",\n transform: \"translate(-128.279 -60.665)\",\n fill: \"#ffffff\",\n stroke: \"#ffffff\",\n strokeWidth: 0.2\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_456\",\n \"data-name\": \"Path 456\",\n d: \"M252.514,95.086a5.825,5.825,0,0,0-2.14-2.369,6.165,6.165,0,0,0-3.235-.917,5.977,5.977,0,0,0-3.159.841,5.814,5.814,0,0,0-2.191,2.318,7.286,7.286,0,0,0-.051,6.5,5.712,5.712,0,0,0,2.165,2.369,6.076,6.076,0,0,0,3.261.892,6.293,6.293,0,0,0,3.261-.866,5.825,5.825,0,0,0,2.14-2.369,7.162,7.162,0,0,0,.739-3.21A7.828,7.828,0,0,0,252.514,95.086Zm-2.267,3.159a6.439,6.439,0,0,1-.382,2.038,2.975,2.975,0,0,1-1.044,1.376,2.906,2.906,0,0,1-1.732.509,2.558,2.558,0,0,1-2.318-1.146,4.952,4.952,0,0,1-.79-2.751,5.319,5.319,0,0,1,.382-2.063,3.062,3.062,0,0,1,1.07-1.376,3.094,3.094,0,0,1,3.362.025,3.283,3.283,0,0,1,1.07,1.4A5.024,5.024,0,0,1,250.247,98.245Z\",\n transform: \"translate(-169.94 -60.665)\",\n fill: \"#ffffff\",\n stroke: \"#ffffff\",\n strokeWidth: 0.2\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_457\",\n \"data-name\": \"Path 457\",\n d: \"M310.663,86.544a4.241,4.241,0,0,0-1.248-1.758,4.412,4.412,0,0,0-1.452-.815,3.5,3.5,0,0,0,.56-.509,4.178,4.178,0,0,0,.866-1.477,4.92,4.92,0,0,0,.255-1.6,4.138,4.138,0,0,0-.713-2.165,4.5,4.5,0,0,0-1.809-1.554,5.444,5.444,0,0,0-2.5-.56h-3.9a1.529,1.529,0,0,0-1.07.382,1.478,1.478,0,0,0-.459,1.146V91.944a1.429,1.429,0,0,0,1.6,1.528h4.28a6.472,6.472,0,0,0,3.133-.739,5.233,5.233,0,0,0,2.063-1.936,4.97,4.97,0,0,0,.713-2.522A6.114,6.114,0,0,0,310.663,86.544Zm-4.331-4.636a1.882,1.882,0,0,1-.815.79,2.68,2.68,0,0,1-1.325.306h-2.038v-4.33h2.293a2.035,2.035,0,0,1,1.579.611,2.248,2.248,0,0,1,.586,1.528A2.009,2.009,0,0,1,306.333,81.908Zm1.63,6.292a2.961,2.961,0,0,1-.382,1.325,2.338,2.338,0,0,1-1.1.917,4.649,4.649,0,0,1-1.91.357h-2.445V85.551h2.649a3.768,3.768,0,0,1,1.783.382,2.57,2.57,0,0,1,1.044.968A2.383,2.383,0,0,1,307.963,88.2Z\",\n transform: \"translate(-213.314 -48.964)\",\n fill: \"#ffffff\",\n stroke: \"#ffffff\",\n strokeWidth: 0.2\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_458\",\n \"data-name\": \"Path 458\",\n d: \"M355.858,78.813a1.715,1.715,0,0,0,1.223-.509,1.588,1.588,0,0,0,.535-1.2,1.658,1.658,0,0,0-.509-1.2,1.753,1.753,0,0,0-2.471,0,1.607,1.607,0,0,0,0,2.394A1.716,1.716,0,0,0,355.858,78.813Z\",\n transform: \"translate(-254.229 -48.442)\",\n fill: \"#ffffff\",\n stroke: \"#ffffff\",\n strokeWidth: 0.2\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_459\",\n \"data-name\": \"Path 459\",\n d: \"M357.647,93.882A1.509,1.509,0,0,0,356.6,93.5a1.555,1.555,0,0,0-1.044.382,1.4,1.4,0,0,0-.458,1.1V105.09a1.387,1.387,0,0,0,.458,1.07,1.49,1.49,0,0,0,1.019.382,1.555,1.555,0,0,0,1.044-.382,1.351,1.351,0,0,0,.459-1.07V94.952A1.257,1.257,0,0,0,357.647,93.882Z\",\n transform: \"translate(-254.974 -61.932)\",\n fill: \"#ffffff\",\n stroke: \"#ffffff\",\n strokeWidth: 0.2\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_460\",\n \"data-name\": \"Path 460\",\n d: \"M380.747,81.8a1.425,1.425,0,0,0-1.044-.382h-.51V79.152a1.312,1.312,0,0,0-.484-1.1,1.62,1.62,0,0,0-1.044-.357,1.6,1.6,0,0,0-1.019.357,1.3,1.3,0,0,0-.458,1.044v2.318h-.509a1.35,1.35,0,0,0-1.477,1.3v.1a1.38,1.38,0,0,0,.459.866,1.5,1.5,0,0,0,1.019.357h.509V93.29a1.4,1.4,0,0,0,1.426,1.477,1.691,1.691,0,0,0,1.07-.357,1.317,1.317,0,0,0,.509-1.07v-9.3h.611a1.325,1.325,0,0,0,.968-.382,1.236,1.236,0,0,0,.382-.892A1.36,1.36,0,0,0,380.747,81.8Z\",\n transform: \"translate(-269.209 -50.156)\",\n fill: \"#ffffff\",\n stroke: \"#ffffff\",\n strokeWidth: 0.2\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_461\",\n \"data-name\": \"Path 461\",\n d: \"M413.456,99.211a5.491,5.491,0,0,0-2.242-1.426c-.229-.1-.637-.255-1.2-.433s-1.019-.357-1.4-.509a3.92,3.92,0,0,1-.943-.586,1.16,1.16,0,0,1-.408-.662,1.075,1.075,0,0,1,.459-.739,2.485,2.485,0,0,1,1.452-.357,1.7,1.7,0,0,1,.764.153c.229.1.611.306,1.121.586a5.929,5.929,0,0,0,1.3.56l.076.025h.076a1.588,1.588,0,0,0,.943-.408,1.222,1.222,0,0,0,.408-.917,1.842,1.842,0,0,0-.662-1.274,5.04,5.04,0,0,0-1.783-.917,7.289,7.289,0,0,0-2.471-.408h0a5.792,5.792,0,0,0-2.369.56,4.049,4.049,0,0,0-1.656,1.376,3.3,3.3,0,0,0-.611,1.936A2.859,2.859,0,0,0,405,97.708a4.131,4.131,0,0,0,1.452,1.121c.509.255,1.223.535,2.114.892a9.948,9.948,0,0,1,1.809.815c.764.408.764.866.764.993a.913.913,0,0,1-.56.892,3.739,3.739,0,0,1-1.63.357,4.135,4.135,0,0,1-1.63-.408l-.051-.025a5.356,5.356,0,0,1-.586-.357,6.665,6.665,0,0,0-.815-.509,1.514,1.514,0,0,0-1.783.178,1.308,1.308,0,0,0-.382.942v.051a1.722,1.722,0,0,0,.739,1.274,6.989,6.989,0,0,0,4.509,1.452h0a6.6,6.6,0,0,0,2.8-.586,4.322,4.322,0,0,0,1.783-1.477,3.747,3.747,0,0,0,.637-1.987A3.126,3.126,0,0,0,413.456,99.211Z\",\n transform: \"translate(-291.194 -60.739)\",\n fill: \"#ffffff\",\n stroke: \"#ffffff\",\n strokeWidth: 0.2\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Subtraction_5_4_\",\n d: \"M33.233,51.387c-3.745,0-7.413-.025-10.928-.051a9.4,9.4,0,0,1-9.272-9.17c-.076-7.285-.076-14.9,0-22.595a9.316,9.316,0,0,1,9.043-9.119c3.439-.051,6.954-.051,10.775-.051,3.668,0,7.591.025,11.947.051a9.092,9.092,0,0,1,5.579,2.038,9.679,9.679,0,0,1,3.261,5.018,2.009,2.009,0,0,1-.56,2.216c-1.554,1.554-3.082,3.159-4.585,4.713-1.019,1.07-2.063,2.165-3.108,3.235a5.753,5.753,0,0,0-1.427,2.114,37.146,37.146,0,0,0-1.019,4.662l-4.229-5.731L43.8,23.009a2.648,2.648,0,0,0-.2-3.719l-.459-.408a2.648,2.648,0,0,0-3.719.2L29.284,30.473V20.844a2.642,2.642,0,0,0-2.624-2.649H24.674a2.62,2.62,0,0,0-2.624,2.624V41.681A2.62,2.62,0,0,0,24.674,44.3h1.987a2.62,2.62,0,0,0,2.624-2.624v-2.6a2.191,2.191,0,0,0,.662-.535L34.736,33.2l6.47,8.737a2.666,2.666,0,0,0,2.114,1.07,2.582,2.582,0,0,0,1.554-.509l.509-.357a2.644,2.644,0,0,0,.56-3.694l-.688-.917a.433.433,0,0,0,.178.025.905.905,0,0,0,.255-.051c.509-.153,1.044-.306,1.554-.433a32.751,32.751,0,0,0,3.49-1.121,7.615,7.615,0,0,0,2.649-2.114c.153-.153.28-.306.459-.484,0,1.146.051,2.293.1,3.388a31.5,31.5,0,0,1-.2,6.929A9.308,9.308,0,0,1,44.67,51.31C40.722,51.387,36.875,51.387,33.233,51.387Z\",\n transform: \"translate(0 0)\",\n fill: \"#ffffff\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1586_4_\",\n d: \"M192.28,23.8a5.632,5.632,0,0,1,4.993,4.229,2.45,2.45,0,0,1-.611,1.63c-.535.815-1.554,1.223-1.783,2.318-.076.382-.408.178-.611-.051a47.885,47.885,0,0,0-5.273-5.146c-.229-.2-.433-.535-.1-.662,1.172-.433,1.783-1.554,2.828-2.089A2.162,2.162,0,0,1,192.28,23.8Z\",\n transform: \"translate(-130.975 -9.984)\",\n fill: \"#ffffff\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1587_4_\",\n d: \"M76.876,54.332c-.178,3.057-.025,6.088-.076,9.145,0,1.172-.025,2.344,0,3.515.025.866-.306,1.274-1.2,1.121a12.549,12.549,0,0,0,.127-1.376V46.18A4.79,4.79,0,0,0,75.5,44.5c1.172-.229,1.274-.153,1.274,1.044C76.85,48.473,76.7,51.4,76.876,54.332Z\",\n transform: \"translate(-46.598 -25.336)\",\n fill: \"#ffffff\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1588_4_\",\n d: \"M90.487,57.779c-2.165,2.165-4.05,4.56-6.114,6.8-.764.866-1.554,1.732-2.318,2.624-.56.662-1.07.739-1.656.051.331-.306.688-.611.993-.942C85.928,61.167,90.462,56.047,95,50.9a5.209,5.209,0,0,0,.943-1.4c1.044.611,1.044.713.28,1.63C94.334,53.372,92.271,55.461,90.487,57.779Z\",\n transform: \"translate(-50.25 -29.14)\",\n fill: \"#ffffff\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1590_4_\",\n d: \"M128.425,108.3a4.679,4.679,0,0,1,2.5,2.344s-2.038,1.07-2.445.79A2.757,2.757,0,0,1,128.425,108.3Z\",\n transform: \"translate(-85.69 -72.962)\",\n fill: \"#ffffff\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1591_4_\",\n d: \"M125.762,82.958,125,90.269s-.127,3.006,2.8,2.293,6.19-1.86,6.19-1.86,1.223-1.707.56-1.452-7.183,2.191-7.183,2.191l-1.07-1.783,1.3-7.489A2.048,2.048,0,0,0,125.762,82.958Z\",\n transform: \"translate(-83.486 -53.478)\",\n fill: \"#ffffff\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_462\",\n \"data-name\": \"Path 462\",\n d: \"M147.981,55.07l-4.738-4.509a.516.516,0,0,1-.025-.713l10.52-11a.516.516,0,0,1,.713-.025l4.738,4.509a.516.516,0,0,1,.025.713l-10.52,11.03A.492.492,0,0,1,147.981,55.07Z\",\n transform: \"translate(-96.968 -21.081)\",\n fill: \"#ffffff\"\n}));\n\nvar SvgLogo = function SvgLogo(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 110.1,\n height: 40.987,\n viewBox: \"0 0 110.1 40.987\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgLogo, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/logo.9e756b7e.svg\";\nexport { ForwardRef as ReactComponent };","import styled from 'styled-components';\n\nexport const TopbarContainer = styled.nav`\n position: fixed;\n top: 0;\n width: 100vw;\n display: flex;\n padding: 0px 30px;\n background-color: #4a4947;\n box-shadow: 0px 1px 4px rgba(#000, 0.16);\n z-index: 100;\n align-items: center;\n .navbar-brand {\n display: flex;\n align-items: flex-end;\n text-decoration: none;\n margin: 0 100px 0 0;\n .admin {\n color: #ffc400;\n font-size: 16px;\n margin-left: 5px;\n margin-bottom: 3px;\n }\n }\n`;\n","import styled from 'styled-components';\n\nexport const NavItemContainer = styled.div`\n .nav-item {\n padding: 10px;\n margin-right: 10px;\n @media (max-width: 1024px) {\n margin-right: 30px;\n }\n @media (max-width: 650px) {\n margin-right: 10px;\n }\n .nav-link {\n font-size: 16px;\n color: white;\n position: relative;\n margin: 0px 25px;\n line-height: 1;\n text-align: center;\n text-decoration: none;\n @media (max-width: 1280px) {\n margin: 0px 0px;\n }\n @media (max-width: 1024px) {\n span {\n font-size: 13px;\n }\n }\n @media (max-width: 1000px) {\n span {\n font-size: 10px;\n }\n }\n img {\n margin-right: 10px;\n }\n .icon {\n background-repeat: no-repeat;\n background-size: contain;\n display: inline-block;\n vertical-align: middle;\n line-height: 1;\n width: 20px;\n height: 20px;\n }\n }\n &:hover {\n span {\n color: #ffc400;\n }\n background-color: #343434;\n }\n }\n .active {\n span {\n color: #ffc400;\n }\n background-color: #343434;\n }\n`;\n","import React from 'react';\nimport { Link, withRouter } from 'react-router-dom';\nimport { NavItemContainer } from './NavItem.styles';\n\nconst NavItem = ({ isActive, to, children }) => {\n const classname = ['nav-item', 'text-icon'];\n if (isActive) classname.push('active');\n if (isActive && to === '/dashboard') classname.push('dashboard');\n return (\n \n
  • \n \n {children}\n \n
  • \n
    \n );\n};\n\nexport default withRouter(({ location, match, ...props }) => {\n let isActive = location.pathname.slice(0, props.to.length) === props.to;\n return ;\n});\n","import styled from 'styled-components';\n\nexport const NavbarCollapseContainer = styled.div`\n flex-basis: 80%;\n display: flex;\n .navbar-nav {\n display: flex;\n flex-direction: row;\n padding: 0px 60px;\n list-style-type: none;\n margin: 0;\n @media (max-width: 747px) {\n padding: 0px 10px;\n }\n }\n`;\n","import React from 'react';\nimport NavItem from './NavItem';\nimport navs from './navs.json';\nimport { NavbarCollapseContainer } from './NavbarCollapse.styles';\n\nconst NavbarCollapse = () => {\n return (\n \n
      \n {navs.map((nav, index) => {\n return (\n \n {nav.name}\n \n );\n })}\n
    \n
    \n );\n};\n\nexport default NavbarCollapse;\n","import styled from 'styled-components';\n\nexport const ProfileContainer = styled.div`\n img {\n width: 40px;\n height: 40px;\n border-radius: 50%;\n }\n`;\n\nexport const NavProfileContainer = styled.div`\n flex-basis: 5%;\n display: flex;\n justify-content: flex-end;\n .drop-down {\n padding: 5px;\n }\n .dropdown-menu {\n background-color: #4a4947;\n top: 17px !important;\n }\n .dropdown-item {\n background-color: #4a4947;\n color: white;\n &:hover {\n color: #ffaf0e;\n }\n }\n`;\n","import React, { forwardRef } from 'react';\nimport { Link } from 'react-router-dom';\nimport { Dropdown } from 'react-bootstrap';\nimport avatar from 'assets/img/avatar.png';\nimport { logout } from 'services/login';\nimport { ProfileContainer, NavProfileContainer } from './NavProfile.styles';\n\nconst ProfileAvatar = ({ onClick }, ref) => (\n \n {\n e.preventDefault();\n onClick(e);\n }}\n >\n \"profile\"\n \n \n);\n\nconst NavProfile = () => {\n const handleLogout = () => {\n logout();\n };\n\n return (\n \n \n \n \n \n \n Log out\n \n \n \n \n );\n};\n\nexport default NavProfile;\n","import React from 'react';\nimport { Link } from 'react-router-dom';\nimport { ReactComponent as Logo } from 'assets/img/logo.svg';\nimport { TopbarContainer } from './Topbar.styles';\nimport NavbarCollapse from './NavbarCollapse';\nimport NavProfile from './NavProfile';\n\nconst Topbar = () => {\n return (\n \n \n \n Admin Panel\n \n \n \n \n );\n};\n\nexport default Topbar;\n","import styled from 'styled-components';\n\nconst SidebarContainer = styled.div`\n position: fixed;\n top: 51px;\n left: 0;\n bottom: 0;\n width: 195px;\n z-index: 40;\n background: #595b5d;\n @media (max-width: 971px) {\n width: 60px;\n }\n @media (max-width: 931px) {\n top: 58px;\n }\n`;\n\nexport default SidebarContainer;\n","import React from 'react';\nimport SidebarContainer from './Sidebar.styles';\n\nconst Sidebar = (props) => {\n const { children } = props;\n return {children};\n};\n\nexport default Sidebar;\n","import styled from 'styled-components';\n\nconst NavLinkContainer = styled.div`\n .nav-link {\n color: white;\n padding: 10px 15px;\n display: block;\n text-decoration: none;\n :hover {\n background-color: #ff6e00;\n }\n }\n img {\n margin-right: 8px;\n }\n span {\n margin-left: 3px;\n @media (max-width: 971px) {\n display: none;\n }\n }\n .active {\n background-color: #ff6e00;\n }\n`;\n\nexport default NavLinkContainer;\n","import React from 'react';\nimport { useLocation, Link } from 'react-router-dom';\nimport NavLinkContainer from './SidebarNavLink.styles';\n\nconst SidebarNavLink = (props) => {\n const { nav, path: url, activeIcon, icon } = props;\n const { pathname } = useLocation();\n const isActive = (path) => pathname.match(path);\n\n return (\n \n \n {isActive(url) ? (\n \"active-icon\"\n ) : (\n \"icon\"\n )}\n {nav}\n \n \n );\n};\n\nexport default SidebarNavLink;\n","import React from 'react';\nimport SidebarNavLink from './SidebarNavLink';\nimport SchoolIcon from 'assets/img/sidebar-school.svg';\nimport SchoolActiveIcon from 'assets/img/sidebar-school-active.svg';\nimport CreateSchoolIcon from 'assets/img/sidebar-create-school.svg';\nimport CreateSchoolActiveIcon from 'assets/img/sidebar-create-school-active.svg';\n\nconst SidebarSchool = () => {\n return (\n <>\n \n \n \n );\n};\n\nexport default SidebarSchool;\n","import styled from 'styled-components';\nimport { Dropdown } from 'react-bootstrap';\n\nexport const StyledDropdown = styled(Dropdown)`\n #dropdown-custom {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n border: 1px solid #aaaaaa;\n border-radius: 0px;\n background-color: #ffffff;\n outline: none;\n &:focus {\n box-shadow: none;\n }\n }\n .dropdown-toggle::after {\n margin-left: 30px;\n }\n .dropdown-item-custom {\n width: ${(props) => (props.width ? props.width : '230px')};\n }\n`;\n","import React from 'react';\nimport { Dropdown } from 'react-bootstrap';\nimport { StyledDropdown } from './DropdownMenu.styles';\n\nconst DropdownMenu = ({\n selectedValue,\n valueKey,\n values,\n setValue,\n width,\n valueTemplate,\n children,\n}) => {\n return (\n \n \n {selectedValue}\n \n \n {children}\n {values &&\n values.map((value) => (\n {\n event.preventDefault();\n setValue(value);\n }}\n className=\"dropdown-item-custom\"\n >\n {valueTemplate !== undefined\n ? valueKey !== null\n ? valueTemplate(value[valueKey])\n : valueTemplate(value)\n : valueKey !== null\n ? value[valueKey]\n : value}\n \n ))}\n \n \n );\n};\n\nexport default DropdownMenu;\n","import styled from 'styled-components';\n\nexport const ButtonStyle = styled.div`\n button {\n outline: none;\n cursor: pointer;\n border-radius: 2px;\n padding: 5px 15px;\n }\n .primary-btn {\n border: 1px solid #ff5b00;\n background-color: #ff5b00;\n color: white;\n &:hover {\n background-color: #f25008;\n }\n }\n .secondary-btn {\n color: #f25008;\n border: 1px solid #f25008;\n background-color: white;\n &:hover {\n background-color: #fff7f3;\n }\n }\n .light-btn {\n color: #727272;\n border: 1px solid #c7c7c7;\n background-color: white;\n &:hover {\n color: #ff5b00;\n }\n }\n`;\n","import React from 'react';\nimport { ButtonStyle } from './Button.styles';\n\nconst Button = (props) => {\n const { variant, children, ...rest } = props;\n return (\n \n \n \n );\n};\n\nexport default Button;\n","import React from 'react';\n\nexport default function PopoverMenuIcon({ icon, fill }) {\n switch (icon) {\n case 'edit':\n return (\n \n \n \n );\n case 'delete':\n return (\n \n \n \n \n \n \n \n \n );\n default:\n return null;\n }\n}\n","import styled from 'styled-components';\n\nexport const ContractMenuContainer = styled.div`\n justify-content: space-evenly;\n display: flex;\n`;\n\nexport const PopoverMenuContainer = styled.div`\n position: relative;\n display: inline-block;\n &:hover .menu-item {\n display: block;\n }\n .popover-menu {\n font-size: 30px;\n position: relative;\n bottom: 0.5rem;\n border: none;\n background: transparent;\n color: #393939;\n outline: none;\n &:hover {\n color: #ff5b00;\n }\n }\n .menu-item {\n display: none;\n position: absolute;\n left: -2.5rem;\n background: #fff;\n min-width: 104.4px;\n padding: 0.5rem 1rem 1rem 1rem;\n margin-right: 1rem;\n box-shadow: 0 3px 6px rgba(45, 45, 45, 0.37);\n z-index: 100;\n .actions-item {\n display: flex;\n flex-direction: row;\n align-items: center;\n font-size: 0.875rem;\n font-weight: 600;\n color: #727272;\n cursor: pointer;\n margin-top: 16px;\n &:hover {\n color: #ff5b00;\n }\n }\n }\n`;\n","import React, { useState, useContext } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport Button from 'components/Shared/Button';\nimport { SelectedSchoolDispatch } from 'pages/School/School';\nimport PopoverMenuIcon from './PopoverMenuIcon';\nimport {\n ContractMenuContainer,\n PopoverMenuContainer,\n} from './ActionButtons.styles';\n\nexport const ContractMenu = ({ type, onClick, customerID, data }) => {\n const history = useHistory();\n const dispatch = useContext(SelectedSchoolDispatch);\n return (\n \n \n {type !== 'account-manager' && (\n {\n dispatch({\n type: 'SET_SELECTED_SCHOOL',\n data,\n });\n if (data.ContractModels === null) {\n history.push(`/school/school-list/create-contract/${customerID}`);\n } else if (data.ContractModels.length > 0) {\n history.push(`/school/school-list/renew-contract/${customerID}`);\n }\n }}\n >\n Add\n \n )}\n \n );\n};\n\nexport const PopoverMenuItem = ({ icon, children }) => {\n const [isActive, setIsActive] = useState(false);\n return (\n {\n setIsActive(true);\n }}\n onMouseLeave={() => {\n setIsActive(false);\n }}\n >\n \n {children}\n \n );\n};\n\nexport const PopoverMenu = ({ openModal, onClick, deleteId }) => {\n return (\n \n \n
    \n \n \n Edit\n \n \n \n openModal(deleteId)}\n style={{ marginLeft: '1rem' }}\n >\n Delete\n \n \n
    \n
    \n );\n};\n","import styled from 'styled-components';\n\nexport const SchoolListTableContainer = styled.div`\n padding: 0 50px;\n .table td,\n .table th {\n padding: 5px;\n vertical-align: middle;\n border: 1px solid #ffd98d;\n }\n thead {\n tr {\n background: #ffcc68;\n text-align: center;\n }\n }\n tbody {\n tr {\n text-align: center;\n }\n tr:nth-child(odd) {\n background-color: #ffffff;\n }\n tr:nth-child(even) {\n background-color: #fffcf6;\n }\n }\n .empty-result {\n display: flex;\n justify-content: center;\n margin-top: 50px;\n }\n`;\n","import React, { useContext } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport EmptyResult from 'assets/img/empty-search-results.svg';\nimport { SelectedSchoolDispatch } from 'pages/School/School';\nimport { ContractMenu, PopoverMenu } from '../Shared/ActionButtons';\nimport { SchoolListTableContainer } from './SchoolListTable.styles';\n\nconst SchoolListTable = ({ data, openModal, filterCountry, page }) => {\n const history = useHistory();\n const dispatch = useContext(SelectedSchoolDispatch);\n const filteredData = filterCountry\n ? data.filter((item) => item.CountryName === filterCountry)\n : data;\n\n const schoolData =\n filteredData &&\n filteredData.map((item, index) => (\n \n {page > 1 ? page * 10 + (index + 1) : index + 1}\n {item.CountryName === null ? '-' : item.CountryName}\n {item.SchoolName === null ? '-' : item.SchoolName}\n {item.Contactperson === null ? '-' : item.Contactperson}\n {item.Designation === null ? '-' : item.Designation}\n {item.Contactnumber === null ? '-' : item.Contactnumber}\n \n \n history.push(`/school/school-list/details/${item.CustomerId}`)\n }\n />\n \n \n {\n dispatch({\n type: 'SET_SELECTED_SCHOOL',\n data: item,\n });\n history.push(\n `/school/school-list/details/edit/${item.CustomerId}`\n );\n }}\n />\n \n \n ));\n\n return (\n \n {schoolData && schoolData.length === 0 ? (\n
    \n \"No\n
    \n ) : (\n \n \n \n \n \n \n \n \n \n \n \n \n {schoolData}\n
    \n No\n \n Country\n \n School Name\n \n Contact Person\n \n Designation\n \n Contact Number\n \n Contracts\n \n
    \n )}\n
    \n );\n};\n\nexport default SchoolListTable;\n","import styled from 'styled-components';\nimport { Modal } from 'react-bootstrap';\n\nexport const StyledModal = styled(Modal)`\n .modal-content {\n position: relative;\n display: flex;\n flex-direction: column;\n width: 100%;\n pointer-events: auto;\n background-color: #fff;\n background-clip: padding-box;\n border: none;\n }\n .modal-custom {\n min-width: 30%;\n }\n .modal-dialog {\n min-height: calc(100vh - 60px);\n display: flex;\n flex-direction: column;\n justify-content: center;\n }\n .modal-custom-large {\n min-width: 60%;\n }\n`;\n","import React from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { StyledModal } from './PopupModal.styles';\n\nexport default function PopupModal({ children, show, hide }) {\n return (\n {\n hide();\n }}\n >\n {children}\n \n );\n}\n","import styled from 'styled-components';\n\nconst DeleteModalContainer = styled.div`\n background-color: white;\n display: flex;\n flex-direction: column;\n align-items: center;\n .title {\n margin: 20px 0px;\n font-weight: 700;\n color: #ff5b00;\n font-size: 18px;\n }\n .subtitle {\n margin: 0px 10px;\n text-align: left;\n }\n .buttons {\n display: flex;\n justify-content: space-around;\n width: 100%;\n margin: 20px 0px;\n .no-btn,\n .yes-btn {\n width: 209px;\n }\n }\n`;\n\nexport default DeleteModalContainer;\n","import React from 'react';\nimport Button from 'components/Shared/Button';\nimport DeleteModalContainer from './DeleteModal.styles';\n\nconst DeleteModal = ({ hide, onClick, type }) => {\n return (\n \n
    \n
    \n Delete {type === 'contract' && 'Contract'}\n {type === 'account-manager' && 'Account Manager'}\n {type === 'school' && 'School'}\n
    \n
    \n
    \n Do you want to delete {type === 'contract' && 'contract'}{' '}\n {type === 'account-manager' && 'account manager'}\n {type === 'school' && 'school'} you selected?\n
    \n
    \n \n \n
    \n
    \n );\n};\n\nexport default DeleteModal;\n","import styled from 'styled-components';\n\nexport const MatchedResultSpan = styled.span`\n .result-highlighted-match {\n color: #ff5b00;\n background: #fff;\n }\n`;\n","import React from 'react';\nimport { MatchedResultSpan } from './MatchedResult.styles';\n\nexport default function MatchedResult({ result, searchTerm }) {\n const lowercaseResult = result.toLowerCase();\n const lowercaseSearchTerm = searchTerm.toLowerCase();\n const stringArray = lowercaseResult.split(lowercaseSearchTerm);\n const output = [];\n let originalStringIndex = 0;\n for (let i = 0; i < stringArray.length; i++) {\n if (i > 0) {\n output.push(\n result.slice(\n originalStringIndex,\n originalStringIndex + searchTerm.length\n )\n );\n originalStringIndex += searchTerm.length;\n }\n output.push(\n result.slice(\n originalStringIndex,\n originalStringIndex + stringArray[i].length\n )\n );\n originalStringIndex += stringArray[i].length;\n }\n return (\n \n {output.map((text, index) => {\n if (text.toLowerCase() === searchTerm.toLowerCase()) {\n return (\n \n {`${text}`}\n \n );\n }\n return <>{`${text}`};\n })}\n \n );\n}\n","import styled from 'styled-components';\n\nexport const SpinnerContainer = styled.div`\n &,\n &:before,\n &:after {\n border-radius: 50%;\n width: 2.5em;\n height: 2.5em;\n -webkit-animation-fill-mode: both;\n animation-fill-mode: both;\n -webkit-animation: load7 1.8s infinite ease-in-out;\n animation: load7 1.8s infinite ease-in-out;\n }\n\n color: #ff5b00;\n font-size: 10px;\n margin: 80px auto;\n position: ${(props) => (props.position ? props.position : 'relative')};\n grid-column: ${(props) => (props.gridColumn ? props.gridColumn : null)};\n top: ${(props) => (props.top ? props.top : '0')};\n text-indent: -9999em;\n -webkit-transform: translateZ(0);\n -ms-transform: translateZ(0);\n transform: translateZ(0);\n -webkit-animation-delay: -0.16s;\n animation-delay: -0.16s;\n\n &:before,\n &:after {\n content: '';\n position: absolute;\n top: 0;\n }\n\n &:before {\n left: -3.5em;\n -webkit-animation-delay: -0.32s;\n animation-delay: -0.32s;\n }\n &:after {\n left: 3.5em;\n }\n @-webkit-keyframes load7 {\n 0%,\n 80%,\n 100% {\n box-shadow: 0 2.5em 0 -1.3em;\n }\n 40% {\n box-shadow: 0 2.5em 0 0;\n }\n }\n @keyframes load7 {\n 0%,\n 80%,\n 100% {\n box-shadow: 0 2.5em 0 -1.3em;\n }\n 40% {\n box-shadow: 0 2.5em 0 0;\n }\n }\n`;\n","import React from 'react';\nimport { SpinnerContainer } from './Spinner.styles';\n\nconst Spinner = ({ top, position, gridColumn }) => (\n \n Loading...\n \n);\n\nexport default Spinner;\n","export const getSchools = async () => {\n return await fetch(\n `${process.env.REACT_APP_API_DOMAIN}/ManageCustomers/GetCustomers`,\n {\n method: 'GET',\n headers: {\n authorization: `Bearer ${localStorage.getItem('access_token')}`,\n },\n }\n )\n .then((res) => {\n return res.json();\n })\n .then((result) => {\n if (!result.IsSuccessful) {\n throw new Error(result.Message.Message);\n } else {\n return result;\n }\n })\n .catch((err) => {\n throw new Error(err?.message ?? 'Get schools failed');\n });\n};\n\nexport const getSchoolById = async (id) => {\n return await fetch(\n `${process.env.REACT_APP_API_DOMAIN}/ManageCustomers/GetCustomerById/${id}`,\n {\n method: 'GET',\n headers: {\n authorization: `Bearer ${localStorage.getItem('access_token')}`,\n },\n }\n )\n .then((res) => {\n return res.json();\n })\n .then((result) => {\n if (!result.IsSuccessful) {\n throw new Error(result.Message.Message);\n } else {\n return result;\n }\n })\n .catch((err) => {\n throw new Error(err?.message ?? 'Get school by ID failed');\n });\n};\n\nexport const getExistingSchool = async (params) => {\n return await fetch(\n `${process.env.REACT_APP_API_DOMAIN}/ManageCustomers/GetSchoolsByName/${params}`,\n {\n method: 'GET',\n headers: {\n authorization: `Bearer ${localStorage.getItem('access_token')}`,\n },\n }\n )\n .then((res) => {\n return res.json();\n })\n .then((result) => {\n if (!result.IsSuccessful) {\n throw new Error(result.Message.Message);\n } else {\n return result;\n }\n })\n .catch((err) => {\n console.log(err);\n });\n};\n\nexport const createSchool = async (rawBody) => {\n try {\n const res = await fetch(\n `${process.env.REACT_APP_API_DOMAIN}/ManageCustomers/CreateCustomer`,\n {\n method: 'POST',\n headers: {\n 'content-type': 'application/json',\n authorization: `Bearer ${localStorage.getItem('access_token')}`,\n },\n body: JSON.stringify(rawBody),\n }\n );\n const data = await res.json();\n return data;\n } catch (error) {\n console.log(error);\n }\n};\n\nexport const updateSchool = async (rawBody, id) => {\n try {\n const res = await fetch(\n `${process.env.REACT_APP_API_DOMAIN}/ManageCustomers/UpdateCustomerSchool/${id}`,\n {\n method: 'PUT',\n headers: {\n 'content-type': 'application/json',\n authorization: `Bearer ${localStorage.getItem('access_token')}`,\n },\n body: JSON.stringify(rawBody),\n }\n );\n const data = await res.json();\n return data;\n } catch (error) {\n console.log(error);\n }\n};\n\nexport const deleteSchool = async (id) => {\n return await fetch(\n `${process.env.REACT_APP_API_DOMAIN}/ManageCustomers/DeleteCustomerSchool/${id}`,\n {\n method: 'DELETE',\n headers: {\n 'content-type': 'application/json',\n authorization: `Bearer ${localStorage.getItem('access_token')}`,\n },\n }\n )\n .then((res) => {\n return res.json();\n })\n .then((result) => {\n if (!result.IsSuccessful) {\n throw new Error(result.Message.Message);\n } else {\n return result;\n }\n })\n .catch((err) => {\n console.log(err);\n });\n};\n","export const AccessibilityList = [\n {\n id: 1,\n name: 'Inaccessible',\n },\n {\n id: 2,\n name: 'Not Accessible',\n },\n {\n id: 3,\n name: 'Somewhat Accessible',\n },\n {\n id: 4,\n name: 'Easily Accessible',\n },\n {\n id: 5,\n name: 'Most Accessible',\n },\n];\n\nexport const AccessibilityType = {\n 1: 'Inaccessible',\n 2: 'Not Accessible',\n 3: 'Somewhat Accessible',\n 4: 'Easily Accessible',\n 5: 'Most Accessible',\n};\n\nexport const StatusList = [\n {\n id: 0,\n name: 'Not Active',\n },\n {\n id: 1,\n name: 'Active',\n },\n];\n\nexport const Status = {\n 'Not Active': 0,\n Active: 1,\n};\n\nexport const PaymentStatus = {\n 1: 'Paid',\n 2: 'Not Paid',\n};\n\nexport const Currency = {\n 0: 'SGD',\n 1: 'SGD',\n 2: 'USD',\n 3: 'PHP',\n 4: 'IDR',\n 5: 'MMK',\n};\n\nexport const CurrencyList = [\n {\n id: 1,\n name: 'SGD',\n },\n {\n id: 2,\n name: 'USD',\n },\n {\n id: 3,\n name: 'PHP',\n },\n {\n id: 4,\n name: 'IDR',\n },\n {\n id: 5,\n name: 'MMK',\n },\n];\n\nexport const countryList = [\n {\n id: 192,\n name: 'Singapore',\n },\n {\n id: 100,\n name: 'Indonesia',\n },\n {\n id: 169,\n name: 'Philippines',\n },\n {\n id: 232,\n name: 'Vietnam',\n },\n {\n id: 129,\n name: 'Malaysia',\n },\n {\n id: 146,\n name: 'Myanmar',\n },\n {\n id: 13,\n name: 'Australia',\n },\n];\n\nexport const CountryID = {\n 192: 'Singapore',\n 100: 'Indonesia',\n 169: 'Philippines',\n 232: 'Vietnam',\n 129: 'Malaysia',\n 146: 'Myanmar',\n 13: 'Australia',\n};\n\nexport const customerTypeList = [\n {\n id: 1,\n name: 'School',\n },\n {\n id: 2,\n name: 'Tuition Centre',\n },\n {\n id: 3,\n name: 'Individual',\n },\n];\n\nexport const CustomerTypes = {\n School: 1,\n 'Tuition Centre': 2,\n Individual: 3,\n};\n\nexport const AccountType = {\n 1: 'Student',\n 2: 'Student Trial',\n 3: 'Teacher',\n 4: 'Teacher Trial',\n 5: 'Parent',\n 6: 'School Admin',\n 7: 'Teacher Admin',\n};\n","import styled from 'styled-components';\n\nexport const SearchResultContainer = styled.div`\n padding: 0px 50px;\n .title {\n font-weight: bold;\n font-size: 18px;\n margin: 10px 0px;\n }\n .table td {\n padding: 5px;\n vertical-align: middle;\n border: 1px solid #ffd98d;\n }\n tbody {\n tr {\n text-align: center;\n background-color: #ffffff;\n }\n }\n .id {\n width: 80px;\n }\n .country {\n width: 200px;\n }\n .action {\n width: 170px;\n }\n .empty-result {\n display: flex;\n justify-content: center;\n margin-top: 100px;\n }\n`;\n","import React, { useEffect, useState } from 'react';\nimport { useDebounce } from 'use-debounce';\nimport { useHistory } from 'react-router-dom';\nimport Button from 'components/Shared/Button';\nimport MatchedResult from 'components/Shared/MatchedResult';\nimport EmptyResult from 'assets/img/empty-search-results.svg';\nimport Spinner from 'components/Shared/Spinner';\nimport { getExistingSchool } from 'services/schools';\nimport { CountryID } from 'constants/index';\nimport { SearchResultContainer } from './SearchResult.styles';\n\nconst SearchResult = ({ searchTerm }) => {\n const history = useHistory();\n const [data, setData] = useState(null);\n const [isLoading, setIsLoading] = useState(false);\n const [debouncedSearchTerm] = useDebounce(searchTerm, 2000);\n\n useEffect(() => {\n setIsLoading(true);\n getExistingSchool(debouncedSearchTerm).then((res) => {\n setIsLoading(false);\n setData(res.Result);\n });\n }, [debouncedSearchTerm]);\n\n return (\n \n {isLoading && }\n {!isLoading && (\n
    \n {data !== null && data.length > 0 ? (\n <>\n
    Search result
    \n {data &&\n data.map((item, index) => (\n \n \n \n \n \n \n \n \n \n
    {item.ID}{CountryID[item.CountryID]}\n \n \n {\n history.push(`/school/add-school/${item.Name}`);\n }}\n >\n Add School\n \n
    \n ))}\n \n ) : (\n
    \n \"No\n
    \n )}\n
    \n )}\n
    \n );\n};\n\nexport default SearchResult;\n","import styled from 'styled-components';\n\nexport const PaginationContainer = styled.div`\n .page-nav {\n width: calc(100% - 50px);\n .pagination {\n justify-content: flex-end;\n }\n\n .page-item {\n margin: 0 0.5em;\n\n &.active .page-link,\n &.active .page-link:focus,\n &.active .page-link:hover {\n background-color: #ff6243;\n color: #fff;\n }\n\n .page-link {\n color: #343434;\n border-color: #d5d5d5;\n\n &:focus,\n &:hover {\n box-shadow: none;\n background-color: #fff7f3;\n }\n\n &:disabled {\n background-color: #fff;\n color: #d8d8d8;\n }\n }\n }\n\n &__search {\n align-self: center;\n margin-left: 1.5em;\n color: #343434;\n\n input {\n width: 2em;\n margin: 0 0.25em;\n text-align: center;\n }\n }\n }\n`;\n","import React from 'react';\nimport { range } from 'ramda';\nimport { PaginationContainer } from './Pagination.styles';\n\nfunction getPaginationNumbers(maxPage, numVisiblePages, page) {\n // Generate page numbers, e.g. if maxPage === 3, show pages number 1 to 3\n const pageNumbers = range(1, maxPage + 1);\n\n // If we have less total pages than number of visible pages, show all page numbers generated\n if (maxPage <= numVisiblePages) {\n return pageNumbers;\n }\n\n // If current page is at beginning portion of possible page numbers, show the beginning portion\n if (page < numVisiblePages) {\n return pageNumbers.slice(0, numVisiblePages);\n }\n\n // If current page is at the end portion of possible page numbers, show the end portion\n // Note: not limiting current page to max page number\n if (page > maxPage - (numVisiblePages - 1)) {\n const firstIndex = pageNumbers.indexOf(maxPage - numVisiblePages) + 1;\n return pageNumbers.slice(firstIndex);\n }\n\n // If below code runs, current page must be in the middle portion of possible page numbers\n // show the page numbers adjacent to the current page\n const numPagesOnLeft = Math.floor(numVisiblePages / 2);\n const numPagesOnRight = numVisiblePages - numPagesOnLeft;\n const firstIndex = pageNumbers.indexOf(page) - numPagesOnLeft;\n const lastIndex = pageNumbers.indexOf(page) + numPagesOnRight;\n return pageNumbers.slice(firstIndex, lastIndex);\n}\n\nfunction PaginationShared(props) {\n const {\n maxPage,\n numVisiblePages,\n onPageChange,\n onSearchPageChange,\n page,\n searchPage,\n } = props;\n\n const pages = getPaginationNumbers(maxPage, numVisiblePages, page);\n\n return (\n \n \n \n );\n}\n\nPaginationShared.defaultProps = {\n numVisiblePages: 3,\n};\n\nexport default PaginationShared;\n","import { logout } from 'services/login';\nimport { isNil } from 'ramda';\n\nconst refreshToken = () => {\n const refreshToken = localStorage.getItem('refresh_token');\n // console.log('old refresh token', refreshToken);\n if (isNil(refreshToken)) {\n logout();\n }\n const urlencoded = new URLSearchParams();\n urlencoded.append('grant_type', 'refresh_token');\n urlencoded.append('client_id', process.env.REACT_APP_CLIENT_ID);\n urlencoded.append('client_secret', process.env.REACT_APP_CLIENT_SECRET);\n urlencoded.append('refresh_token', refreshToken);\n return fetch(`${process.env.REACT_APP_API_DOMAIN}/token`, {\n method: 'POST',\n headers: {\n 'content-type': 'application/x-www-form-urlencoded',\n },\n body: urlencoded,\n })\n .then((response) => {\n return response.json();\n })\n .then((result) => {\n if (!isNil(result.error)) {\n logout();\n } else {\n return result;\n }\n })\n .catch((err) => {\n logout();\n throw new Error(err?.message ?? 'Refresh token failed'); // eslint-disable-line\n });\n};\n\nconst refreshFetchWrapper = async (request, params) => {\n try {\n const refreshTokenResult = await refreshToken();\n localStorage.setItem('access_token', refreshTokenResult.access_token);\n localStorage.setItem('refresh_token', refreshTokenResult.refresh_token);\n // console.log('new refresh token', refreshTokenResult);\n return request(params);\n } catch (err) {\n throw new Error(err?.message ?? 'Refresh token failed'); // eslint-disable-line\n }\n};\n\nexport default refreshFetchWrapper;\n","import styled from 'styled-components';\n\nconst SchoolListContainer = styled.div`\n .top-section {\n display: flex;\n justify-content: space-between;\n padding: 10px 50px;\n background: white;\n .search-bar {\n border: 1px solid #aaaaaa;\n border-radius: 3px;\n padding: 5px 10px;\n outline: none;\n }\n }\n .filter-section {\n display: flex;\n padding: 20px 50px;\n p {\n font-weight: bold;\n margin-right: 20px;\n margin-bottom: 0px;\n margin-top: 5px;\n font-size: 16px;\n }\n }\n`;\n\nexport default SchoolListContainer;\n","import React, { useState, useEffect } from 'react';\nimport { Dropdown } from 'react-bootstrap';\nimport DropdownMenu from 'components/Shared/DropdownMenu';\nimport SchoolListTable from 'components/School/SchoolListTable';\nimport PopupModal from 'components/Shared/PopupModal';\nimport DeleteModal from 'components/School/DeleteModal';\nimport SearchResult from 'components/School/SearchResult';\nimport Pagination from 'components/Shared/Pagination';\nimport { getSchools, deleteSchool } from 'services/schools';\nimport Spinner from 'components/Shared/Spinner';\nimport { sortCountry, compareValues } from 'helpers/parseSchoolList';\nimport refreshFetchWrapper from 'services/refreshToken';\nimport SchoolListContainer from './SchoolList.styles';\n\nconst SchoolList = () => {\n const [data, setData] = useState(null);\n const [isLoading, setIsLoading] = useState(false);\n\n useEffect(() => {\n setIsLoading(true);\n refreshFetchWrapper(getSchools).then((res) => {\n setIsLoading(false);\n setData(res.Result.List);\n });\n }, []);\n\n // pagination\n const maxDataPages = Math.ceil(data && data.length / 20);\n\n // display max number of data\n const perPage = 20;\n const [offset, setOffset] = useState(0);\n const [currentPage, setCurrentPage] = useState(1);\n const dataSlice = data && data.slice(offset, offset + perPage);\n\n // Callback for page change\n const onPageChange = (number) => {\n const newOffset = (number - 1) * perPage;\n setCurrentPage(number);\n setOffset(newOffset);\n };\n\n // delete function + modal state & handlers\n const [deletedId, setDeletedId] = useState(null);\n\n const [showDeleteModal, setShowDeleteModal] = useState(false);\n const openDeleteModal = (id) => {\n setDeletedId(id);\n setShowDeleteModal(true);\n };\n const hideDeleteModal = () => {\n setShowDeleteModal(false);\n };\n\n const deleteSchoolData = () => {\n deleteSchool(deletedId).then((res) => {\n const index = data.findIndex((item) => item.CustomerId === deletedId);\n const tempData = [...data];\n tempData.splice(index, 1);\n setData(tempData);\n hideDeleteModal();\n });\n };\n // search state\n const [searchTerm, setSearchTerm] = useState('');\n\n // filter state\n const [filterCountry, setFilterCountry] = useState('');\n const sortCountryData = data\n ? sortCountry(data).sort(compareValues('country', 'asc'))\n : [];\n const countryData =\n sortCountryData && sortCountryData.map((country) => country.country);\n\n return (\n \n \n \n \n
    \n
    School List
    \n
    \n {\n setSearchTerm(e.target.value);\n }}\n />\n
    \n
    \n {searchTerm.length >= 3 ? (\n \n ) : (\n <>\n
    \n

    Filter by Country :

    \n \n {\n event.preventDefault();\n setFilterCountry('');\n }}\n >\n All\n \n \n
    \n {isLoading && }\n {!isLoading && (\n <>\n \n \n \n )}\n \n )}\n
    \n );\n};\n\nexport default SchoolList;\n","export const compareValues = (key, order = 'asc') => {\n return function innerSort(a, b) {\n if (!a.hasOwnProperty(key) || !b.hasOwnProperty(key)) {\n // property doesn't exist on either object\n return 0;\n }\n\n const varA = typeof a[key] === 'string' ? a[key].toUpperCase() : a[key];\n const varB = typeof b[key] === 'string' ? b[key].toUpperCase() : b[key];\n\n let comparison = 0;\n if (varA > varB) {\n comparison = 1;\n } else if (varA < varB) {\n comparison = -1;\n }\n return order === 'desc' ? comparison * -1 : comparison;\n };\n};\n\nexport const sortCountry = (schoolList) => {\n const sortedCountry = [];\n for (const schoolObject of schoolList) {\n const hasCountry = sortedCountry.findIndex(\n (item) => item.country === schoolObject.CountryName\n );\n if (hasCountry === -1) {\n sortedCountry.push({\n country: schoolObject.CountryName,\n school: [schoolObject],\n });\n } else {\n sortedCountry[hasCountry].school.push(schoolObject);\n }\n }\n return sortedCountry;\n};\n","import styled from 'styled-components';\n\nexport const ContractTableContainer = styled.div`\n margin-top: 25px;\n .table td,\n .table th {\n padding: 5px;\n vertical-align: middle;\n border: 1px solid #ffd98d;\n }\n thead {\n tr {\n background: #ffcc68;\n text-align: center;\n }\n }\n tbody {\n tr {\n text-align: center;\n }\n tr:nth-child(odd) {\n background-color: #ffffff;\n }\n tr:nth-child(even) {\n background-color: #fffcf6;\n }\n }\n .no-contract {\n text-align: center;\n font-size: 32px;\n color: #a4a4a4;\n }\n`;\n","import React, { useContext } from 'react';\nimport { PopoverMenu } from 'components/Shared/ActionButtons';\nimport { useHistory } from 'react-router-dom';\nimport moment from 'moment';\nimport { PaymentStatus, Currency } from 'constants/index';\nimport { SelectedSchoolDispatch } from 'pages/School/School';\nimport { ContractTableContainer } from './ContractTable.styles';\n\nconst ContractTable = ({ data, openModal, schoolData }) => {\n const dispatch = useContext(SelectedSchoolDispatch);\n const history = useHistory();\n return (\n \n {data === null ? (\n

    No Contract

    \n ) : (\n \n \n \n \n \n \n \n \n \n \n \n \n \n {data &&\n data.map((item, index) => (\n \n \n \n \n \n \n \n \n \n \n ))}\n \n
    NoYearAccount ManagerValueNo of AcctsStart DateEnd Date\n
    {index + 1}{item.AcademicYear}{item.AccountManagerName}\n {Currency[item.Currency]} {item.TotalValue}\n \n {PaymentStatus[item.PaymentStatus] === 'Paid' &&\n item.ContractDetails.length > 0\n ? item.ContractDetails.reduce(\n (accumulator, currentValue) => {\n return accumulator + currentValue.AccountsPurchased;\n },\n 0\n )\n : '-'}\n {moment(item.StartDate).format('MMM YYYY')}{moment(item.EndDate).format('MMM YYYY')}\n {\n dispatch({\n type: 'SET_SELECTED_SCHOOL',\n data: schoolData,\n });\n history.push(\n `/school/school-list/update-contract/${item.ContractId}`\n );\n }}\n deleteId={item.ContractId}\n />\n
    \n )}\n
    \n );\n};\n\nexport default ContractTable;\n","export const getPlans = async (schoolID) => {\n try {\n const res = await fetch(\n `${process.env.REACT_APP_API_DOMAIN}/ManageCustomers/GetCustomerPlans/${schoolID}`,\n {\n method: 'GET',\n headers: {\n authorization: `Bearer ${localStorage.getItem('access_token')}`,\n },\n }\n );\n const result = await res.json();\n if (result.IsSuccessful) {\n return result.Result;\n }\n throw new Error(result.Message.Message);\n } catch (err) {\n throw new Error(err?.message ?? 'Get plans by school ID failed');\n }\n};\n\nexport const addContract = async (rawBody) => {\n try {\n const res = await fetch(\n `${process.env.REACT_APP_API_DOMAIN}/Contract/AddContract/`,\n {\n method: 'POST',\n headers: {\n authorization: `Bearer ${localStorage.getItem('access_token')}`,\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(rawBody),\n }\n );\n const result = await res.json();\n if (result.IsSuccessful) {\n return result.Result;\n }\n throw new Error(result.Message.Message);\n } catch (err) {\n throw new Error(err?.message ?? 'Add new contract failed');\n }\n};\n\nexport const renewContract = async (rawBody) => {\n try {\n const res = await fetch(\n `${process.env.REACT_APP_API_DOMAIN}/Contract/RenewContract/`,\n {\n method: 'POST',\n headers: {\n authorization: `Bearer ${localStorage.getItem('access_token')}`,\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(rawBody),\n }\n );\n const result = await res.json();\n if (result.IsSuccessful) {\n return result.Result;\n }\n throw new Error(result.Message.Message);\n } catch (err) {\n throw new Error(err?.message ?? 'Renew contract failed');\n }\n};\n\nexport const updateContract = async (rawBody) => {\n try {\n const res = await fetch(\n `${process.env.REACT_APP_API_DOMAIN}/Contract/UpdateContract/`,\n {\n method: 'PUT',\n headers: {\n authorization: `Bearer ${localStorage.getItem('access_token')}`,\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(rawBody),\n }\n );\n const result = await res.json();\n if (result.IsSuccessful) {\n return result.Result;\n }\n throw new Error(result.Message.Message);\n } catch (err) {\n throw new Error(err?.message ?? 'Update contract failed');\n }\n};\n\nexport const deleteContract = async (contractID) => {\n try {\n const res = await fetch(\n `${process.env.REACT_APP_API_DOMAIN}/Contract/DeleteContract/${contractID}`,\n {\n method: 'PUT',\n headers: {\n authorization: `Bearer ${localStorage.getItem('access_token')}`,\n },\n }\n );\n const result = await res.json();\n if (result.IsSuccessful) {\n return true;\n }\n throw new Error(result.Message.Message);\n } catch (err) {\n throw new Error(err?.message ?? 'Delete contract failed');\n }\n};\n","import styled from 'styled-components';\n\nconst InfoModalStyle = styled.div`\n text-align: center;\n p {\n font-size: 20px;\n font-weight: 600;\n }\n .danger {\n color: #ff5b00;\n }\n .info {\n color: #007bff;\n }\n .warning {\n color: #ffc107;\n }\n .success {\n color: #28a745;\n }\n`;\n\nexport default InfoModalStyle;\n","import React from 'react';\nimport { Modal } from 'react-bootstrap';\nimport PopupModal from 'components/Shared/PopupModal';\nimport Button from 'components/Shared/Button';\nimport InfoModalStyle from './InfoModal.styles';\n\nexport default function InfoModal({ msg, variant, show, hide }) {\n return (\n \n \n \n

    {msg}

    \n \n
    \n
    \n
    \n );\n}\n","import styled from 'styled-components';\n\nexport const SchoolDetailsContainer = styled.div`\n .error {\n margin-top: 5rem;\n display: flex;\n justify-content: center;\n }\n .top-bar {\n display: flex;\n justify-content: center;\n padding: 10px 50px;\n background: white;\n font-weight: bold;\n font-size: 18px;\n }\n .details {\n padding: 30px 50px 0;\n display: flex;\n justify-content: space-between;\n .action-buttons {\n display: flex;\n flex-direction: row;\n align-items: end;\n button {\n margin-right: 25px;\n padding: 0px 25px;\n height: 40px;\n font-size: 0.875rem;\n font-weight: 600;\n color: #727272;\n &:hover {\n color: #ff5b00;\n }\n }\n }\n }\n .title {\n background-color: #ffcc68;\n border-radius: 4px;\n padding: 5px 10px;\n font-weight: 600;\n margin-bottom: 20px;\n }\n .contracts {\n padding: 40px 50px 0;\n .contract-title {\n display: flex;\n p {\n margin-bottom: 0px;\n margin-right: 10px;\n font-weight: bold;\n font-size: 18px;\n }\n }\n }\n`;\n\nexport const DetailItemContainer = styled.div`\n p {\n margin-bottom: 4px;\n font-size: 14px;\n }\n h5 {\n font-weight: bold;\n font-size: 18px;\n }\n`;\n","import React, { useState, useEffect, useContext } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport Button from 'components/Shared/Button';\nimport { PopoverMenuItem } from 'components/Shared/ActionButtons';\nimport PopupModal from 'components/Shared/PopupModal';\nimport DeleteModal from 'components/School/DeleteModal';\nimport ContractTable from 'components/School/SchoolDetails/ContractTable';\nimport { getSchoolById, deleteSchool } from 'services/schools';\nimport { deleteContract } from 'services/contracts';\nimport Spinner from 'components/Shared/Spinner';\nimport { AccessibilityType } from 'constants/index';\nimport refreshFetchWrapper from 'services/refreshToken';\nimport InfoModal from 'components/Shared/InfoModal';\nimport {\n SchoolDetailsContainer,\n DetailItemContainer,\n} from './SchoolDetails.styles';\nimport { SelectedSchoolDispatch } from './School';\n\nconst DetailItem = ({ title, data }) => {\n return (\n \n

    {title}

    \n
    {data}
    \n
    \n );\n};\n\nconst DetailTitle = ({ detail }) => {\n return
    {detail}
    ;\n};\n\nconst SchoolDetails = ({ match }) => {\n const dispatch = useContext(SelectedSchoolDispatch);\n const schoolID = parseInt(match.params.id, 10);\n const history = useHistory();\n const [data, setData] = useState(null);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState(null);\n\n useEffect(() => {\n setIsLoading(true);\n setError(null);\n refreshFetchWrapper(getSchoolById, schoolID)\n .then((res) => {\n setIsLoading(false);\n setData(res.Result);\n })\n .catch((err) => {\n setIsLoading(false);\n setError(err.message);\n });\n }, [match.params.id, schoolID]);\n\n // modal state & handlers\n const [showDeleteModal, setShowDeleteModal] = useState(false);\n const [selectedContractID, setSelectedContractID] = useState(null);\n const openDeleteModal = () => {\n setShowDeleteModal(true);\n };\n const hideDeleteModal = () => {\n setShowDeleteModal(false);\n };\n const [showDeleteContractModal, setShowDeleteContractModal] = useState(false);\n const openDeleteContractModal = (contractID) => {\n setSelectedContractID(contractID);\n setShowDeleteContractModal(true);\n };\n const hideDeleteContractModal = () => {\n setShowDeleteContractModal(false);\n };\n const [showInfoModal, setShowInfoModal] = useState(false);\n const [infoModalMessage, setInfoModalMessage] = useState(null);\n\n return (\n \n {\n setShowInfoModal(false);\n }}\n />\n \n {\n deleteSchool(data && data.CustomerId);\n hideDeleteModal();\n history.push('/school/school-list');\n }}\n />\n \n \n {\n try {\n const result = await deleteContract(selectedContractID);\n if (result === true) {\n hideDeleteContractModal();\n setIsLoading(true);\n getSchoolById(schoolID).then((res) => {\n setIsLoading(false);\n setData(res.Result);\n });\n }\n } catch (err) {\n hideDeleteContractModal();\n setInfoModalMessage(err.message);\n setShowInfoModal(true);\n }\n }}\n />\n \n {isLoading && }\n {!isLoading && error === null && (\n <>\n
    {data && data.SchoolName}
    \n
    \n
    \n \n \n \n \n \n \n \n \n
    \n
    \n \n \n \n \n \n
    \n
    \n {\n dispatch({\n type: 'SET_SELECTED_SCHOOL',\n data,\n });\n history.push(\n `/school/school-list/details/edit/${\n data && data.CustomerId\n }`\n );\n }}\n >\n \n Edit\n \n \n \n
    \n
    \n
    \n
    \n

    Contract

    \n {\n dispatch({\n type: 'SET_SELECTED_SCHOOL',\n data,\n });\n if (data.ContractModels === null) {\n history.push(\n `/school/school-list/create-contract/${data.CustomerId}`\n );\n } else if (data.ContractModels.length > 0) {\n history.push(\n `/school/school-list/renew-contract/${data.CustomerId}`\n );\n }\n }}\n >\n {data !== null &&\n (data.ContractModels !== null &&\n data.ContractModels.length > 0\n ? 'Renew'\n : 'Add')}\n \n
    \n \n
    \n \n )}\n {!isLoading && error !== null && (\n
    \n

    {error}

    \n
    \n )}\n
    \n );\n};\n\nexport default SchoolDetails;\n","import styled from 'styled-components';\n\nexport const TopbarContainer = styled.div`\n .top-bar {\n display: flex;\n justify-content: center;\n background-color: white;\n padding: 20px 0px;\n }\n .back-nav {\n position: absolute;\n left: 230px;\n top: 77px;\n cursor: pointer;\n &:hover {\n color: #f25008;\n }\n }\n .title {\n font-weight: bold;\n font-size: 24px;\n text-transform: uppercase;\n }\n .primary-btn {\n position: absolute;\n right: 50px;\n top: 73px;\n }\n`;\n","import React from 'react';\nimport Button from 'components/Shared/Button';\nimport { useHistory } from 'react-router-dom';\nimport { TopbarContainer } from './FormPageTopbar.styles';\n\nconst FormPageTopbar = ({ nav, title, type, onClick }) => {\n const history = useHistory();\n return (\n \n
    \n history.goBack()}\n >{`< Back`}
    \n
    {title}
    \n {type === 'account-manager' && (\n \n )}\n \n
    \n );\n};\n\nexport default FormPageTopbar;\n","import styled from 'styled-components';\n\nexport const InputContainer = styled.div`\n margin-bottom: 10px;\n label {\n font-size: 14px;\n margin-bottom: 0px;\n padding-left: 5px;\n }\n .form-control:focus {\n color: #495057;\n background-color: #fff;\n border-color: #ff8b33;\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(255, 139, 51, 0.25);\n }\n`;\n\nexport const CheckboxStyle = styled.div`\n align-self: flex-end;\n label {\n margin-left: 5px;\n }\n`;\n","import React from 'react';\nimport { InputContainer, CheckboxStyle } from './FormInput.styles';\n\nexport const FormInput = ({\n label,\n type,\n position,\n name,\n value,\n defaultValue,\n onChange,\n disabled,\n required,\n register,\n step,\n}) => {\n return (\n \n \n {\n if (onChange !== undefined) {\n onChange(e.target.value, name);\n }\n }}\n disabled={disabled}\n required={required}\n ref={register}\n step={step}\n />\n \n );\n};\n\nexport const OptionInput = ({\n label,\n options,\n name,\n bind,\n position,\n onChange,\n disabled,\n optionKey,\n valueKey,\n register,\n defaultValue,\n value,\n hasCustomOnChange,\n children,\n required,\n}) => {\n return (\n \n \n {\n if (hasCustomOnChange === true) {\n onChange(e);\n } else if (onChange !== undefined) {\n onChange(e.target.value, name);\n }\n }}\n ref={register}\n defaultValue={defaultValue}\n value={value}\n required={required}\n >\n {children}\n {options &&\n options.map((item, index) => (\n \n ))}\n \n \n );\n};\n\nexport const Checkbox = ({\n onChange,\n label,\n position,\n checked,\n disabled,\n name,\n register,\n}) => {\n return (\n \n \n \n \n );\n};\n","// Checks if current account manager of contract is in list from api\nconst isAccountManagerInList = (currentAccountManagerID, accountManagers) => {\n const currentAccountManagerIndex = accountManagers.findIndex(\n (am) => am.id === currentAccountManagerID\n );\n if (currentAccountManagerIndex !== -1) {\n return true;\n }\n return false;\n};\n\nexport default isAccountManagerInList;\n","import styled from 'styled-components';\n\nexport const SchoolFormContainer = styled.div`\n padding: 0 50px;\n margin: 30px 0px;\n .btn {\n display: flex;\n justify-content: flex-end;\n }\n`;\n","import React, { useState, useEffect } from 'react';\nimport Button from 'components/Shared/Button';\nimport { FormInput, OptionInput } from 'components/Shared/FormInput';\nimport InfoModal from 'components/Shared/InfoModal';\nimport {\n createSchool,\n updateSchool,\n getSchoolById,\n getExistingSchool,\n} from 'services/schools';\nimport {\n countryList,\n AccessibilityList,\n customerTypeList,\n StatusList,\n} from 'constants/index';\nimport isAccountManagerInList from 'helpers/checkAccountManager';\nimport { SchoolFormContainer } from './SchoolForm.styles';\n\nconst SchoolForm = ({\n type,\n CustomerId,\n ExistingSchool,\n accountManagers,\n openModal,\n}) => {\n // form states & handlers\n const [showInfoModal, setShowInfoModal] = useState(false);\n const [input, setInput] = useState({\n address: '',\n postalCode: '',\n contactperson: '',\n designation: '',\n contactnumber: '',\n email: '',\n website: '',\n accessibility: AccessibilityList[0].id,\n type: customerTypeList[0].id,\n status: StatusList[0].id,\n countryId: countryList[0].id,\n schoolid: '',\n schoolName: '',\n studentPopulation: '',\n managerId: '',\n School_Id: '',\n CustomerId: '',\n });\n\n // bind data for edit school\n const bindData = (val) => {\n const tempState = { ...input };\n if (val.CustomerId) tempState.CustomerId = val.CustomerId;\n if (val.Address) tempState.address = val.Address;\n if (val.PostalCode) tempState.postalCode = val.PostalCode;\n if (val.Contactperson) tempState.contactperson = val.Contactperson;\n if (val.Designation) tempState.designation = val.Designation;\n if (val.Contactnumber) tempState.contactnumber = val.Contactnumber;\n if (val.Email) tempState.email = val.Email;\n if (val.Website) tempState.website = val.Website;\n if (val.Accessibility) tempState.accessibility = val.Accessibility;\n if (val.Type) tempState.type = val.Type;\n if (val.Status) tempState.status = val.Status;\n if (type === 'existing-school' ? val[0].CountryID : val.CountryId)\n tempState.countryId =\n type === 'existing-school' ? val[0].CountryID : val.CountryId;\n if (val.SchoolId) tempState.schoolid = val.SchoolId;\n if (type === 'existing-school' ? val[0].Name : val.SchoolName)\n tempState.schoolName =\n type === 'existing-school' ? val[0].Name : val.SchoolName;\n if (val.StudentPopulation)\n tempState.studentPopulation = val.StudentPopulation;\n if (val.ManagerId) tempState.managerId = val.ManagerId;\n if (type === 'existing-school' ? val[0].ID : val.School_Id)\n tempState.School_Id =\n type === 'existing-school' ? val[0].ID : val.School_Id;\n setInput(tempState);\n };\n\n useEffect(() => {\n if (type === 'update') {\n getSchoolById(CustomerId).then((res) => {\n bindData(res.Result);\n });\n }\n if (type === 'existing-school') {\n getExistingSchool(ExistingSchool).then((res) => {\n bindData(res.Result);\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [type, CustomerId, ExistingSchool]);\n\n const changeState = (val, inputType) => {\n const tempState = { ...input };\n tempState[inputType] = val;\n setInput(tempState);\n };\n\n // create school\n const firstAccountManagerId = accountManagers && accountManagers[0].id;\n const createSchoolForm = () => {\n const formData = {\n address: input.address,\n postalCode: input.postalCode,\n contactperson: input.contactperson,\n contactnumber: input.contactnumber,\n email: input.email,\n accessibility: parseInt(input.accessibility, 10),\n type: parseInt(input.type, 10),\n status: parseInt(input.status, 10),\n countryId: parseInt(input.countryId, 10),\n schoolid: input.schoolid,\n schoolName: input.schoolName,\n studentPopulation: input.studentPopulation,\n managerId:\n input.managerId === ''\n ? firstAccountManagerId\n : parseInt(input.managerId, 10),\n };\n if (input.School_Id) formData.School_Id = input.School_Id;\n if (input.designation) formData.designation = input.designation;\n if (input.website) formData.website = input.website;\n return formData;\n };\n\n // submit function\n const submitForm = async (e) => {\n e.preventDefault();\n const id = CustomerId;\n const rawBody = createSchoolForm();\n const api = type === 'update' ? updateSchool : createSchool;\n await api(rawBody, id).then((res) => {\n if (res.IsSuccessful) {\n openModal();\n } else {\n setShowInfoModal(true);\n }\n });\n };\n return (\n \n {\n setShowInfoModal(false);\n }}\n />\n
    \n
    \n \n
    \n
    \n \n \n
    \n
    \n \n \n \n
    \n \n
    \n \n \n \n
    \n \n
    \n \n \n \n
    \n \n {input.managerId !== '' &&\n accountManagers &&\n isAccountManagerInList(input.managerId, accountManagers) ===\n false && }\n \n
    \n \n
    \n \n
    \n );\n};\n\nexport default SchoolForm;\n","import styled from 'styled-components';\n\nconst SuccessModalContainer = styled.div`\n background-color: white;\n display: flex;\n flex-direction: column;\n align-items: center;\n .title {\n margin: 20px 0px;\n }\n .subtitle {\n margin: 0px 10px;\n text-align: left;\n }\n .buttons {\n display: flex;\n justify-content: space-around;\n width: 100%;\n margin: 20px 0px;\n .yes-btn {\n width: 209px;\n background-color: #5ed46a;\n border-color: #29c16a;\n }\n }\n`;\n\nexport default SuccessModalContainer;\n","import React from 'react';\nimport Button from 'components/Shared/Button';\nimport SuccessIcon from 'assets/img/modal-success.svg';\nimport SuccessModalContainer from './SuccessModalBody.styles';\n\nconst SuccessModal = ({ onClick, type }) => {\n return (\n \n
    \n \"icon\"\n
    \n
    \n {type === 'create-school' || type === 'update-school'\n ? 'School'\n : 'Account Manager'}{' '}\n succesfully{' '}\n {type === 'create-school' || type === 'create-account-manager'\n ? 'created'\n : 'updated'}\n !\n
    \n
    \n \n
    \n
    \n );\n};\n\nexport default SuccessModal;\n","export const getAccountManagers = async () => {\n return await fetch(\n `${process.env.REACT_APP_API_DOMAIN}/AccountManager/GetAccountManagers`,\n {\n method: 'GET',\n headers: {\n authorization: `Bearer ${localStorage.getItem('access_token')}`,\n },\n }\n )\n .then((res) => {\n return res.json();\n })\n .then((result) => {\n if (!result.IsSuccessful) {\n throw new Error(result.Message.Message);\n } else {\n return result;\n }\n })\n .catch((err) => {\n throw new Error(err?.message ?? 'Get account managers failed'); // eslint-disable-line\n });\n};\n\nexport const getAccountManagerById = async (id) => {\n return await fetch(\n `${process.env.REACT_APP_API_DOMAIN}/AccountManager/GetAccountManagerById/${id}`,\n {\n method: 'GET',\n headers: {\n authorization: `Bearer ${localStorage.getItem('access_token')}`,\n },\n }\n )\n .then((res) => {\n return res.json();\n })\n .then((result) => {\n if (!result.IsSuccessful) {\n throw new Error(result.Message.Message);\n } else {\n return result;\n }\n })\n .catch((err) => {\n throw new Error(err?.message ?? 'Get account manager by ID failed'); // eslint-disable-line\n });\n};\n\nexport const getAccountManagerByLoginId = async (loginId) => {\n return await fetch(\n `${process.env.REACT_APP_API_DOMAIN}/AccountManager/FindAccountManager/${loginId}`,\n {\n method: 'GET',\n headers: {\n authorization: `Bearer ${localStorage.getItem('access_token')}`,\n },\n }\n )\n .then((res) => {\n return res.json();\n })\n .then((result) => {\n if (!result.IsSuccessful) {\n throw new Error(result.Message.Message);\n } else {\n return result;\n }\n })\n .catch((err) => {\n throw new Error(err?.message ?? 'Get account manager by login ID failed'); // eslint-disable-line\n });\n};\n\nexport const delAccountManager = async (userId) => {\n return fetch(\n `${process.env.REACT_APP_API_DOMAIN}/AccountManager/DeleteAccountManager/${userId}`,\n {\n method: 'DELETE',\n headers: {\n authorization: `Bearer ${localStorage.getItem('access_token')}`,\n },\n }\n )\n .then((res) => {\n return res.json();\n })\n .then((result) => {\n if (!result.IsSuccessful) {\n if (result.IsSuccessful !== undefined) {\n throw new Error(result.Message.Message);\n } else {\n throw new Error(result.message);\n }\n } else {\n return result;\n }\n })\n .catch((err) => {\n throw new Error(err?.message ?? 'Delete account manager failed'); // eslint-disable-line\n });\n};\n\nexport const createAccountManager = async (rawBody) => {\n return fetch(\n `${process.env.REACT_APP_API_DOMAIN}/AccountManager/CreateAccountManager`,\n {\n method: 'POST',\n headers: {\n 'content-type': 'application/json',\n authorization: `Bearer ${localStorage.getItem('access_token')}`,\n },\n body: JSON.stringify(rawBody),\n }\n )\n .then((res) => {\n return res.json();\n })\n .then((result) => {\n if (!result.IsSuccessful) {\n throw new Error(result.Message.Message);\n } else {\n return result;\n }\n })\n .catch((err) => {\n throw new Error(\n err && err.message ? 'Creating account manager failed' : 'null'\n ); // eslint-disable-line\n });\n};\n\nexport const updateAccountManager = async (rawBody, id) => {\n return fetch(\n `${process.env.REACT_APP_API_DOMAIN}/AccountManager/UpdateAccountManager/${id}`,\n {\n method: 'PUT',\n headers: {\n 'content-type': 'application/json',\n authorization: `Bearer ${localStorage.getItem('access_token')}`,\n },\n body: JSON.stringify(rawBody),\n }\n )\n .then((res) => {\n return res.json();\n })\n .then((result) => {\n if (!result.IsSuccessful) {\n throw new Error(result.Message.Message);\n } else {\n return result;\n }\n })\n .catch((err) => {\n throw new Error(\n err && err.message ? 'Updating account manager failed' : 'null'\n ); // eslint-disable-line\n });\n};\n","import React, { useState, useEffect } from 'react';\nimport FormPageTopbar from 'components/Shared/FormPageTopbar';\nimport SchoolForm from 'components/School/SchoolForm';\nimport PopupModal from 'components/Shared/PopupModal';\nimport SuccessModalBody from 'components/Shared/SuccesModalBody';\nimport { getAccountManagers } from 'services/account-manager';\nimport { useHistory } from 'react-router-dom';\n\nconst CreateSchool = () => {\n const [AMData, setAMData] = useState(null);\n const [modalOpen, setModalOpen] = useState(false);\n const history = useHistory();\n\n const showModal = () => {\n setModalOpen(true);\n };\n const closeModal = () => {\n setModalOpen(false);\n };\n\n useEffect(() => {\n getAccountManagers().then((res) => {\n setAMData(res.Result.List);\n });\n }, []);\n return (\n <>\n \n {\n closeModal();\n history.push('/school/school-list');\n }}\n hide={closeModal}\n type=\"create-school\"\n >\n \n \n \n \n );\n};\n\nexport default CreateSchool;\n","import React, { useState, useEffect } from 'react';\nimport FormPageTopbar from 'components/Shared/FormPageTopbar';\nimport SchoolForm from 'components/School/SchoolForm';\nimport PopupModal from 'components/Shared/PopupModal';\nimport SuccessModalBody from 'components/Shared/SuccesModalBody';\nimport { getAccountManagers } from 'services/account-manager';\nimport { useHistory } from 'react-router-dom';\n\nconst UpdateSchool = ({ match, selectedSchool }) => {\n const customerID = parseInt(match.params.id, 10);\n const { ManagerId } = selectedSchool;\n const [AMData, setAMData] = useState(null);\n const [modalOpen, setModalOpen] = useState(false);\n const history = useHistory();\n\n const showModal = () => {\n setModalOpen(true);\n };\n const closeModal = () => {\n setModalOpen(false);\n };\n\n useEffect(() => {\n getAccountManagers().then((res) => {\n setAMData(res.Result.List);\n });\n }, []);\n\n return (\n <>\n \n {\n closeModal();\n history.push(`/school/school-list/details/${customerID}`);\n }}\n hide={closeModal}\n type=\"update-school\"\n >\n \n \n \n \n );\n};\n\nexport default UpdateSchool;\n","import React, { useState, useEffect } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport FormPageTopbar from 'components/Shared/FormPageTopbar';\nimport SchoolForm from 'components/School/SchoolForm';\nimport PopupModal from 'components/Shared/PopupModal';\nimport SuccessModalBody from 'components/Shared/SuccesModalBody';\nimport { getAccountManagers } from 'services/account-manager';\n\nconst CreateExistingSchool = ({ match }) => {\n const schoolName = match.params.name;\n const [AMData, setAMData] = useState(null);\n const [modalOpen, setModalOpen] = useState(false);\n const history = useHistory();\n\n const showModal = () => {\n setModalOpen(true);\n };\n const closeModal = () => {\n setModalOpen(false);\n };\n\n useEffect(() => {\n getAccountManagers().then((res) => {\n setAMData(res.Result.List);\n });\n }, []);\n return (\n <>\n \n {\n closeModal();\n history.push('/school/school-list');\n }}\n hide={closeModal}\n type=\"create-school\"\n >\n \n \n \n \n );\n};\n\nexport default CreateExistingSchool;\n","// Helpers for parsing form input values into JSON format for API endpoints\nexport const parseCreateContractJSON = (data) => {\n const formData = { ...data };\n // Convert strings to correct value types\n const fieldsToConvertToInteger = [\n 'AcademicYear',\n 'AccountManagerId',\n 'Currency',\n 'PlanId',\n 'TransitionPeriod',\n ];\n const fieldsToConvertToFloat = ['TotalValue'];\n for (const prop in formData) {\n if (fieldsToConvertToInteger.includes(prop)) {\n formData[prop] = parseInt(formData[prop]);\n } else if (fieldsToConvertToFloat.includes(prop)) {\n formData[prop] = parseFloat(formData[prop]);\n }\n }\n // Construct contract line items from properties starting with acctQuota-\n const contractFields = Object.keys(formData).filter((prop) =>\n prop.startsWith('acctQuota-')\n );\n formData.ContractDetails = [];\n for (const prop of contractFields) {\n const accountQuota = parseInt(formData[prop]);\n if (accountQuota > 0) {\n const delimiterIndex = prop.indexOf('-');\n const accountType = parseInt(prop.slice(delimiterIndex + 1));\n formData.ContractDetails.push({\n AccountType: accountType,\n AccountsPurchased: accountQuota,\n AccountsConsumed: 0,\n ItemType: 'Account',\n });\n }\n // Delete key\n delete formData[prop];\n }\n // Check if contract details is empty\n if (formData.ContractDetails.length === 0) {\n console.log('Error: no contract details');\n }\n // Update PaymentStatus value\n if (formData.PaymentStatus === true) {\n formData.PaymentStatus = 1;\n } else {\n formData.PaymentStatus = 2;\n }\n return formData;\n};\n\nexport const parseUpdateContractJSON = (data, currentContract) => {\n // TODO: Add contractID\n const formData = {\n ContractId: data.ContractId,\n StartDate: data.StartDate,\n EndDate: data.EndDate,\n AcademicYearStartDate: data.AcademicYearStartDate,\n AcademicYearEndDate: data.AcademicYearEndDate,\n ContractDetails: [],\n };\n // Add in existing line items in existing contract\n const contractFields = Object.keys(data).filter((prop) =>\n prop.startsWith('acctQuota-')\n );\n for (const prop of contractFields) {\n const accountQuota = parseInt(data[prop]);\n if (accountQuota > 0) {\n const delimiterIndex = prop.indexOf('-');\n const accountType = parseInt(prop.slice(delimiterIndex + 1));\n // Check if accountType exists in current contract\n const contractLineItemIndex = currentContract.ContractDetails.findIndex(\n (lineItem) =>\n lineItem.AccountType === accountType &&\n lineItem.ItemType === 'Account'\n );\n if (contractLineItemIndex !== -1) {\n formData.ContractDetails.push({\n Contract_Item_Id:\n currentContract.ContractDetails[contractLineItemIndex]\n .Contract_Item_Id,\n AccountType: accountType,\n AccountsPurchased: accountQuota,\n AccountsConsumed:\n currentContract.ContractDetails[contractLineItemIndex]\n .AccountsConsumed,\n AccountsRemaining:\n currentContract.ContractDetails[contractLineItemIndex]\n .AccountsRemaining,\n ItemType: 'Account',\n });\n } else {\n formData.ContractDetails.push({\n AccountType: accountType,\n AccountsPurchased: accountQuota,\n AccountsConsumed: 0,\n ItemType: 'Account',\n });\n }\n }\n }\n return formData;\n};\n","import styled from 'styled-components';\n\nexport const ContractFormContainer = styled.div`\n padding: 0 50px;\n margin: 30px 0px;\n .date {\n margin-bottom: 10px;\n label {\n font-size: 14px;\n margin-bottom: 0px;\n padding-left: 5px;\n }\n }\n .btn {\n display: flex;\n justify-content: flex-end;\n }\n`;\n\nexport const DatePickerInput = styled.button.attrs((props) => ({\n type: 'button',\n}))`\n background: white;\n padding: 0.25rem 0.5rem;\n border-radius: 0.2rem;\n border: 1px solid #ced4da;\n`;\n","import React, { useState } from 'react';\nimport { useForm } from 'react-hook-form';\nimport Button from 'components/Shared/Button';\nimport { Spinner } from 'react-bootstrap';\nimport { FormInput, OptionInput, Checkbox } from 'components/Shared/FormInput';\nimport { addContract, renewContract, updateContract } from 'services/contracts';\nimport {\n parseCreateContractJSON,\n parseUpdateContractJSON,\n} from 'helpers/parseContractJson';\nimport { AccountType, CurrencyList, PaymentStatus } from 'constants/index';\nimport Picker from 'react-month-picker';\nimport moment from 'moment';\nimport compareValues from 'helpers/sortArrayOfObjects';\nimport { ContractFormContainer, DatePickerInput } from './ContractForm.styles';\nimport 'react-month-picker/css/month-picker.css';\nimport { history } from '../../Routes';\nimport InfoModal from 'components/Shared/InfoModal';\nimport isAccountManagerInList from 'helpers/checkAccountManager';\n\n// Helpers\nconst parseDateString = (date, type) => {\n const paddedMonth = date.month <= 9 ? `0${date.month}` : `${date.month}`;\n const day = type === 'start' ? '01' : '31';\n return `${date.year}-${paddedMonth}-${day}T00:00:00`;\n};\n\nconst findLatestContract = (contracts) => {\n const sortedContracts = contracts\n .map((contract) => {\n return {\n id: contract.ContractId,\n contractEndDate: moment(contract.EndDate).unix(),\n };\n })\n .sort(compareValues('contractEndDate', 'desc'));\n return sortedContracts[0];\n};\n\nconst getYearMonthFromDateString = (datestring) => {\n return {\n year: moment(datestring).year(),\n // month numbers from momentjs are zero-indexed\n month: moment(datestring).month() + 1,\n };\n};\n\nconst getCurrentAccountQuota = (contractDetails, accountType) => {\n const lineItemIndex = contractDetails.findIndex(\n (lineItem) =>\n lineItem.AccountType === accountType && lineItem.ItemType === 'Account'\n );\n if (lineItemIndex !== -1) {\n return contractDetails[lineItemIndex].AccountsPurchased;\n }\n return 0;\n};\n\nconst ContractForm = ({\n plans,\n accountManagers,\n defaultAccountManager,\n customerID,\n type,\n contracts,\n contractID,\n currentAccountManager,\n}) => {\n const { register, handleSubmit } = useForm();\n const selectedContractIndex =\n type === 'update'\n ? contracts.findIndex((contract) => contract.ContractId === contractID)\n : null;\n const onSubmit = async (data) => {\n // Append additional fields such as dates\n const formData = {\n ...data,\n StartDate: parseDateString(contractRange.from, 'start'),\n EndDate: parseDateString(contractRange.to, 'end'),\n AcademicYearStartDate: parseDateString(rangeValue.from, 'start'),\n AcademicYearEndDate: parseDateString(rangeValue.to, 'end'),\n ContractNumber: '',\n DigitalCopy: '',\n CustomerId: customerID,\n };\n // If type is renew, add RefContractId\n if (type === 'renew') {\n formData.RefContractId = findLatestContract(contracts).id;\n }\n // Parse form data in api format\n let rawBody;\n if (type === 'new' || type === 'renew') {\n rawBody = parseCreateContractJSON(formData);\n } else if (type === 'update') {\n formData.ContractId = contractID;\n if (selectedContractIndex !== -1) {\n rawBody = parseUpdateContractJSON(\n formData,\n contracts[selectedContractIndex]\n );\n } else {\n console.log('Contract ID not found');\n }\n }\n if (rawBody !== null) {\n try {\n setAPILoading(true);\n let result;\n if (type === 'new') {\n result = await addContract(rawBody);\n } else if (type === 'renew') {\n result = await renewContract(rawBody);\n } else if (type === 'update') {\n result = await updateContract(rawBody);\n }\n setAPILoading(false);\n if (result) {\n history.push(`/school/school-list/details/${customerID}`);\n }\n } catch (error) {\n setAPILoading(false);\n setInfoModalMessage(error.message);\n setShowInfoModal(true);\n }\n }\n };\n\n const [selectedPlan, setSelectedPlan] = useState(plans[0]);\n // Date Picker\n let currentYear;\n let initialRangeValue;\n let initialContractRange;\n if (type !== 'update') {\n currentYear = moment().year();\n initialRangeValue = {\n from: { year: currentYear, month: 1 },\n to: { year: currentYear, month: 12 },\n };\n initialContractRange = {\n from: { year: currentYear, month: 1 },\n to: { year: currentYear, month: 12 },\n };\n } else {\n currentYear = contracts[selectedContractIndex].AcademicYear;\n initialRangeValue = {\n from: getYearMonthFromDateString(\n contracts[selectedContractIndex].AcademicYearStartDate\n ),\n to: getYearMonthFromDateString(\n contracts[selectedContractIndex].AcademicYearEndDate\n ),\n };\n initialContractRange = {\n from: getYearMonthFromDateString(\n contracts[selectedContractIndex].StartDate\n ),\n to: getYearMonthFromDateString(contracts[selectedContractIndex].EndDate),\n };\n }\n\n let monthpicker = null;\n let contractMonthPicker = null;\n const pickerLang = {\n months: [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'Jun',\n 'Jul',\n 'Aug',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dec',\n ],\n from: 'From',\n to: 'To',\n };\n // Stores selected academic date range\n const [rangeValue, setRangeValue] = useState(initialRangeValue);\n // Stores selected contract date range\n const [contractRange, setContractRange] = useState(initialContractRange);\n const handleRangeChange = (value, text, listIndex) => {\n if (listIndex === 0) {\n setRangeValue({\n ...rangeValue,\n from: {\n year: value,\n month: text,\n },\n });\n } else if (listIndex === 1) {\n setRangeValue({\n ...rangeValue,\n to: {\n year: value,\n month: text,\n },\n });\n }\n };\n const handleContractRangeChange = (value, text, listIndex) => {\n if (listIndex === 0) {\n setContractRange({\n ...rangeValue,\n from: {\n year: value,\n month: text,\n },\n });\n } else if (listIndex === 1) {\n setContractRange({\n ...rangeValue,\n to: {\n year: value,\n month: text,\n },\n });\n }\n };\n const [showInfoModal, setShowInfoModal] = useState(false);\n const [InfoModalMessage, setInfoModalMessage] = useState(null);\n // Loading state for API on click of submit button\n const [isAPILoading, setAPILoading] = useState(false);\n return (\n \n {\n setShowInfoModal(false);\n }}\n />\n
    \n
    \n {plans && (\n {\n const newID = parseInt(e.target.value, 10);\n const newPlanIndex = plans.findIndex(\n (item) => item.ID === newID\n );\n if (newPlanIndex !== -1) {\n setSelectedPlan(plans[newPlanIndex]);\n }\n }}\n />\n )}\n \n
    \n \n {isAccountManagerInList(defaultAccountManager, accountManagers) ===\n false && (\n \n )}\n \n
    \n \n \n \n \n
    \n
    \n \n {\n monthpicker = ref;\n }}\n years={{\n min: {\n year: 2000,\n month: 1,\n },\n max: {\n year: 2100,\n month: 12,\n },\n }}\n lang={pickerLang.months}\n theme=\"light\"\n onChange={handleRangeChange}\n >\n monthpicker && monthpicker.show()}>\n {`${rangeValue.from.month}/${rangeValue.from.year} - ${rangeValue.to.month}/${rangeValue.to.year}`}\n \n \n
    \n {selectedPlan.AccountTypes.length > 0 &&\n selectedPlan.AccountTypes.map((accountType) => (\n \n ))}\n
    \n \n {\n contractMonthPicker = ref;\n }}\n years={{\n min: {\n year: 2000,\n month: 1,\n },\n max: {\n year: 2100,\n month: 12,\n },\n }}\n lang={pickerLang.months}\n theme=\"light\"\n onChange={handleContractRangeChange}\n >\n contractMonthPicker && contractMonthPicker.show()}\n >\n {`${contractRange.from.month}/${contractRange.from.year} - ${contractRange.to.month}/${contractRange.to.year}`}\n \n \n
    \n \n
    \n \n
    \n \n
    \n );\n};\n\nexport default ContractForm;\n","export default function compareValues(key, order = 'asc') {\n return function innerSort(a, b) {\n if (!a.hasOwnProperty(key) || !b.hasOwnProperty(key)) {\n // property doesn't exist on either object\n return 0;\n }\n\n const varA = typeof a[key] === 'string' ? a[key].toUpperCase() : a[key];\n const varB = typeof b[key] === 'string' ? b[key].toUpperCase() : b[key];\n\n let comparison = 0;\n if (varA > varB) {\n comparison = 1;\n } else if (varA < varB) {\n comparison = -1;\n }\n return order === 'desc' ? comparison * -1 : comparison;\n };\n}\n","import styled from 'styled-components';\n\nexport const Error = styled.div`\n margin-top: 5rem;\n display: flex;\n justify-content: center;\n`;\n","import React, { useState, useEffect } from 'react';\nimport FormPageTopbar from 'components/Shared/FormPageTopbar';\nimport ContractForm from 'components/School/ContractForm';\nimport { getPlans } from 'services/contracts';\nimport { getAccountManagers } from 'services/account-manager';\nimport Spinner from 'components/Shared/Spinner';\nimport { Error } from './CreateContract.styles';\n\nconst CreateContract = ({ match, selectedSchool, type }) => {\n const customerID = parseInt(match.params.id, 10);\n const { ManagerId, School_Id, ContractModels } = selectedSchool;\n\n const [isLoading, setIsLoading] = useState(false);\n // States storing data from API\n const [plans, setPlans] = useState(null);\n const [accountManagers, setAccountManagers] = useState(null);\n const [error, setError] = useState(null);\n\n useEffect(() => {\n setIsLoading(true);\n setError(null);\n getPlans(School_Id)\n .then((res) => {\n setPlans(res);\n setIsLoading(false);\n })\n .catch((err) => {\n setIsLoading(false);\n setError({\n plan: err.message,\n });\n });\n }, [School_Id]);\n useEffect(() => {\n setIsLoading(true);\n setError(null);\n getAccountManagers()\n .then((res) => {\n setAccountManagers(res.Result.List);\n setIsLoading(false);\n })\n .catch((err) => {\n setIsLoading(false);\n setError({\n am: err.message,\n });\n });\n }, []);\n return (\n <>\n \n {isLoading && }\n {!isLoading && error !== null && (\n \n {error.plan &&

    {error.plan}

    }\n {error.am &&

    {error.am}

    }\n
    \n )}\n {!isLoading && error === null && plans && accountManagers && (\n \n )}\n \n );\n};\n\nexport default CreateContract;\n","import React, { useState, useEffect } from 'react';\nimport FormPageTopbar from 'components/Shared/FormPageTopbar';\nimport ContractForm from 'components/School/ContractForm';\nimport { getPlans } from 'services/contracts';\nimport { getAccountManagers } from 'services/account-manager';\n\nconst UpdateSchool = ({ match, selectedSchool }) => {\n const contractID = parseInt(match.params.contractID, 10);\n const { School_Id, ContractModels } = selectedSchool;\n\n const selectedContractIndex = ContractModels.findIndex(\n (contract) => contract.ContractId === contractID\n );\n const currentAccountManager =\n selectedContractIndex !== -1\n ? ContractModels[selectedContractIndex].AccountManagerId\n : null;\n\n // States storing data from API\n const [plans, setPlans] = useState(null);\n const [accountManagers, setAccountManagers] = useState(null);\n\n useEffect(() => {\n getPlans(School_Id).then((res) => {\n setPlans(res);\n });\n }, [School_Id]);\n useEffect(() => {\n getAccountManagers().then((res) => {\n setAccountManagers(res.Result.List);\n });\n }, []);\n return (\n <>\n \n {plans && accountManagers && (\n \n )}\n \n );\n};\n\nexport default UpdateSchool;\n","import styled from 'styled-components';\n\nexport const SchoolContainer = styled.div`\n padding-left: 195px;\n padding-top: 51px;\n @media (max-width: 971px) {\n padding-left: 65px;\n }\n`;\n","import React, { useReducer, createContext } from 'react';\nimport { Route, Switch } from 'react-router-dom';\nimport Topbar from 'components/Topbar/Topbar';\nimport Sidebar from 'components/Sidebar/Sidebar';\nimport SidebarSchool from 'components/Sidebar/SidebarSchool';\nimport SchoolList from 'pages/School/SchoolList';\nimport SchoolDetails from 'pages/School/SchoolDetails';\nimport CreateSchool from 'pages/School/CreateSchool';\nimport UpdateSchool from 'pages/School/UpdateSchool';\nimport CreateExistingSchool from 'pages/School/CreateExistingSchool';\nimport CreateContract from 'pages/School/CreateContract';\nimport UpdateContract from 'pages/School/UpdateContract';\nimport { SchoolContainer } from './School.styles';\n\n// Reducers\nconst selectedSchoolReducer = (state, action) => {\n switch (action.type) {\n case 'SET_SELECTED_SCHOOL':\n return action.data;\n default:\n return state;\n }\n};\n\nexport const SelectedSchoolDispatch = createContext(null);\n\nconst School = () => {\n const [selectedSchool, dispatchSelectedSchools] = useReducer(\n selectedSchoolReducer,\n null\n );\n\n return (\n <>\n \n \n \n \n \n \n \n \n \n }\n />\n (\n \n )}\n />\n \n (\n \n )}\n />\n (\n \n )}\n />\n (\n \n )}\n />\n (\n \n )}\n />\n \n \n \n \n );\n};\n\nexport default School;\n","import React from 'react';\nimport AccManagerIcon from 'assets/img/sidebar-account-manager.svg';\nimport AccManagerActiveIcon from 'assets/img/sidebar-account-manager-active.svg';\nimport CreateAccIcon from 'assets/img/sidebar-create-account.svg';\nimport CreateAccActiveIcon from 'assets/img/sidebar-create-account-active.svg';\nimport SidebarNavLink from './SidebarNavLink';\n\nconst SidebarSchool = () => {\n return (\n <>\n \n \n \n );\n};\n\nexport default SidebarSchool;\n","import styled from 'styled-components';\n\nexport const AccountManagerListContainer = styled.div`\n padding: 0 50px;\n .table td,\n .table th {\n padding: 5px;\n vertical-align: middle;\n border: 1px solid #ffd98d;\n }\n thead {\n tr {\n background: #ffcc68;\n text-align: center;\n }\n }\n tbody {\n tr {\n text-align: center;\n }\n tr:nth-child(odd) {\n background-color: #ffffff;\n }\n tr:nth-child(even) {\n background-color: #fffcf6;\n }\n }\n .actions {\n display: flex;\n justify-content: space-around;\n }\n .popover-menu {\n bottom: 0.8rem;\n }\n`;\n","import React from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { convertISODate } from 'helpers/getDateFormat';\nimport { ContractMenu, PopoverMenu } from '../Shared/ActionButtons';\nimport { AccountManagerListContainer } from './AMListTable.styles';\n\nconst AccountManagerListTable = ({ data, openModal }) => {\n const history = useHistory();\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {data &&\n data.map((item, index) => (\n \n \n \n \n \n \n \n \n \n \n \n ))}\n \n
    \n No\n \n ID\n \n Name\n \n Company Name\n \n Country\n \n ASL\n \n Status\n \n Join Date\n \n
    {index + 1}{item.id}{item.name}{item.companyname ? item.companyname : '-'}{item.countryName}{item.Customers.length}{item.status ? 'Active' : 'Inactive'}{item.joindate ? convertISODate(item.joindate) : '-'}\n
    \n \n history.push({\n pathname: '/account-manager/account-manager/edit',\n state: {\n managerId: item.id,\n manegerName: item.name,\n },\n })\n }\n />\n \n history.push({\n pathname: '/account-manager/account-manager/edit',\n state: {\n managerId: item.id,\n manegerName: item.name,\n },\n })\n }\n />\n
    \n
    \n
    \n );\n};\n\nexport default AccountManagerListTable;\n","import moment from 'moment';\n\nexport const convertISODate = (date) => {\n const stringDate = moment(date).format('DD/MM/YYYY');\n return stringDate;\n};\n","import styled from 'styled-components';\n\nexport const ListContainer = styled.div`\n .top-section {\n display: flex;\n justify-content: space-between;\n padding: 10px 50px;\n background: white;\n .search-bar {\n border: 1px solid #aaaaaa;\n border-radius: 3px;\n padding: 5px 10px;\n outline: none;\n }\n }\n .filter-section {\n display: flex;\n padding: 20px 50px;\n p {\n font-weight: bold;\n margin-right: 20px;\n margin-bottom: 0px;\n margin-top: 5px;\n font-size: 16px;\n }\n .status,\n .country {\n display: flex;\n }\n .country {\n margin-left: 30px;\n }\n }\n`;\n","import React, { useState, useEffect } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport DropdownMenu from 'components/Shared/DropdownMenu';\nimport PopupModal from 'components/Shared/PopupModal';\nimport DeleteModal from 'components/School/DeleteModal';\nimport AccountManagerListTable from 'components/AccountManager/AMListTable';\nimport Button from 'components/Shared/Button';\nimport InfoModal from 'components/Shared/InfoModal';\nimport Pagination from 'components/Shared/Pagination';\nimport {\n getAccountManagers,\n delAccountManager,\n} from 'services/account-manager';\nimport Spinner from 'components/Shared/Spinner';\nimport refreshFetchWrapper from 'services/refreshToken';\nimport { ListContainer } from './AMList.styles';\n\nconst countryData = [\n 'ALL',\n 'SINGAPORE',\n 'INDONESIA',\n 'PHILIPPINES',\n 'VIETNAM',\n 'MALAYSIA',\n 'MYANMAR',\n 'AUSTRALIA',\n];\nconst statusData = ['Active', 'Non-active'];\nlet deletedId = null;\n\nconst AccountManagerList = () => {\n const [data, setData] = useState(null);\n const [activeData, setActiveData] = useState(null);\n const [isLoading, setIsLoading] = useState(false);\n const [alert, setAlert] = useState({\n show: false,\n msg: '',\n variant: '',\n });\n const history = useHistory();\n\n useEffect(() => {\n setIsLoading(true);\n refreshFetchWrapper(getAccountManagers)\n .then((res) => {\n setIsLoading(false);\n setData(res.Result.List);\n setActiveData(res.Result.List);\n })\n .catch((err) => console.log('err is', err));\n }, []);\n\n // modal state & handlers\n const [showDeleteModal, setShowDeleteModal] = useState(false);\n const openDeleteModal = (id) => {\n deletedId = id;\n setShowDeleteModal(true);\n };\n const hideDeleteModal = () => {\n setShowDeleteModal(false);\n };\n\n // pagination\n const maxDataPages = Math.ceil(activeData && activeData.length / 20);\n\n // display max number of data\n const perPage = 20;\n const [offset, setOffset] = useState(0);\n const [currentPage, setCurrentPage] = useState(1);\n const dataSlice = activeData && activeData.slice(offset, offset + perPage);\n\n // Callback for page change\n const onPageChange = (number) => {\n const newOffset = (number - 1) * perPage;\n setCurrentPage(number);\n setOffset(newOffset);\n };\n\n // dropdown state & handlres\n const [country, setCountry] = useState(null);\n const handleSelectCountry = (activeCountry) => {\n let res = [];\n if (activeCountry === 'ALL') res = data;\n else {\n res = data.filter((elem) => {\n if (elem.countryName === activeCountry) {\n return elem;\n }\n return null;\n });\n }\n setActiveData(res);\n setCountry(activeCountry);\n };\n\n const [status, setStatus] = useState(null);\n const handleSelectStatus = (activeStatus) => {\n const res = data.filter((elem) => {\n if (activeStatus === 'Active') return elem.status === 1;\n return elem.status === 0;\n });\n setActiveData(res);\n setStatus(activeStatus);\n };\n\n const deleteData = () => {\n setIsLoading(true);\n delAccountManager(deletedId)\n .then((res) => {\n const index = data.findIndex((elem) => elem.id === deletedId);\n const tempData = [...activeData];\n tempData.splice(index, 1);\n setActiveData(tempData);\n setIsLoading(false);\n hideDeleteModal();\n })\n .catch((err) => {\n setIsLoading(false);\n hideDeleteModal();\n setAlert({ ...alert, show: true, msg: err.message, variant: 'danger' });\n });\n };\n\n return (\n \n \n \n \n
    \n
    Account Manager List
    \n \n history.push('/account-manager/create-account-manager')\n }\n className=\"primary-btn\"\n >\n Add\n \n
    \n
    \n
    \n

    Filter by Status :

    \n \n
    \n
    \n

    Filter by Country :

    \n \n
    \n
    \n {isLoading && }\n {!isLoading && (\n <>\n \n \n \n )}\n {alert.show && (\n setAlert({ ...alert, show: false })}\n />\n )}\n
    \n );\n};\n\nexport default AccountManagerList;\n","import styled from 'styled-components';\n\nexport const AccountManagerFormContainer = styled.div`\n padding: 0 50px;\n margin: 30px 0px;\n .date {\n margin-bottom: 10px;\n label {\n font-size: 14px;\n margin-bottom: 0px;\n padding-left: 5px;\n }\n .DateInput_input {\n font-size: 14px;\n padding: 2px 11px;\n }\n }\n`;\n","import React, { useState, useEffect } from 'react';\nimport Button from 'components/Shared/Button';\nimport { SingleDatePicker } from 'react-dates';\nimport moment from 'moment';\n\nimport { FormInput, OptionInput } from 'components/Shared/FormInput';\nimport Spinner from 'components/Shared/Spinner';\nimport { useLocation } from 'react-router-dom';\nimport {\n createAccountManager,\n updateAccountManager,\n getAccountManagerById,\n} from 'services/account-manager';\nimport { countryList } from 'constants/index';\nimport { AccountManagerFormContainer } from './AMForm.styles';\nimport 'react-dates/initialize';\nimport 'react-dates/lib/css/_datepicker.css';\n\nconst accountType = ['Reseller', 'Sales Person'];\n\nconst AccountManagerForm = ({ type, disable, openModal }) => {\n const location = useLocation();\n const managerId =\n location.state && location.state.managerId ? location.state.managerId : '';\n const [inpState, setInpState] = useState({\n countryid: countryList[0].id,\n resellerid: '',\n name: '',\n companyname: '',\n nric: '',\n phonecountrycode: '',\n mobilenumber: '',\n email: '',\n address: '',\n bankdetails: '',\n nativelanguage: '',\n secondlanguage: '',\n latestmouyear: '',\n latestmou: '',\n salesterritory: '',\n type: accountType[0],\n joindate: '',\n remarks: '',\n });\n const [isLoading, setIsLoading] = useState(false);\n const [focused, setFocused] = useState(false);\n\n const bindValues = (val) => {\n const tempState = { ...inpState };\n tempState.countryid = val.countryid;\n tempState.resellerid = val.resellerid;\n tempState.name = val.name;\n tempState.phonecountrycode = val.phonecountrycode;\n tempState.mobilenumber = val.mobilenumber;\n tempState.email = val.email;\n tempState.latestmouyear = val.latestmouyear;\n tempState.latestmou = val.latestmou;\n\n if (val.NRIC) tempState.nric = val.NRIC;\n if (val.companyname) tempState.companyname = val.companyname;\n if (val.address) tempState.address = val.address;\n if (val.bankdetails) tempState.bankdetails = val.bankdetails;\n if (val.nativelanguage) tempState.nativelanguage = val.nativelanguage;\n if (val.secondlanguage) tempState.secondlanguage = val.secondlanguage;\n if (val.salesterritory) tempState.salesterritory = val.salesterritory;\n if (val.type) {\n const selectedVal = type === '1' ? 'Reseller' : 'Sales Person';\n tempState.type = selectedVal;\n }\n if (val.joindate) tempState.joindate = moment(val.joindate);\n if (val.remarks) tempState.remarks = val.remarks;\n setInpState(tempState);\n };\n\n useEffect(() => {\n if (managerId) {\n getAccountManagerById(managerId)\n .then((res) => {\n if (res.IsSuccessful) {\n bindValues(res.Result);\n }\n })\n .catch((err) => {\n console.log('err is', err);\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const changeState = (val, inpType) => {\n const tempState = { ...inpState };\n tempState[inpType] = val;\n setInpState(tempState);\n };\n\n const createReqObj = () => {\n const obj = {\n countryid: inpState.countryid,\n resellerid: inpState.resellerid,\n name: inpState.name,\n phonecountrycode: inpState.phonecountrycode,\n mobilenumber: inpState.mobilenumber,\n email: inpState.email,\n latestmouyear: inpState.latestmouyear,\n latestmou: inpState.latestmou,\n };\n if (inpState.nric) obj.nric = inpState.nric;\n if (inpState.companyname) obj.companyname = inpState.companyname;\n if (inpState.address) obj.address = inpState.address;\n if (inpState.bankdetails) obj.bankdetails = inpState.bankdetails;\n if (inpState.nativelanguage) obj.nativelanguage = inpState.nativelanguage;\n if (inpState.secondlanguage) obj.secondlanguage = inpState.secondlanguage;\n if (inpState.salesterritory) obj.salesterritory = inpState.salesterritory;\n if (inpState.type) {\n const selectedVal = type === 'Reseller' ? 1 : 2;\n obj.type = selectedVal;\n }\n if (inpState.joindate) obj.joindate = inpState.joindate;\n if (inpState.remarks) obj.remarks = inpState.remarks;\n return obj;\n };\n\n const handleSubmit = async (e) => {\n e.preventDefault();\n const rawBody = createReqObj();\n\n setIsLoading(true);\n const callApi = managerId ? updateAccountManager : createAccountManager;\n callApi(rawBody, managerId)\n .then((res) => {\n if (res.IsSuccessful) {\n openModal();\n }\n })\n .catch((err) => console.log('err is', err));\n setIsLoading(false);\n };\n return (\n \n {isLoading && }\n
    \n
    \n \n \n \n
    \n
    \n \n \n \n
    \n
    \n \n \n \n
    \n \n
    \n \n \n \n
    \n
    \n \n \n
    \n
    \n \n
    \n
    \n \n
    \n changeState(e, 'joindate')}\n focused={focused}\n onFocusChange={() => setFocused(!focused)}\n disabled={disable}\n displayFormat=\"DD/MM/YYYY\"\n />\n
    \n
    \n \n
    \n {type === 'create' && (\n \n )}\n {type === 'edit' && disable === false && (\n \n )}\n
    \n \n
    \n );\n};\n\nexport default AccountManagerForm;\n","import React, { useState } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport FormPageTopbar from 'components/Shared/FormPageTopbar';\nimport PopupModal from 'components/Shared/PopupModal';\nimport SuccessModalBody from 'components/Shared/SuccesModalBody';\nimport AccountManagerForm from 'components/AccountManager/AMForm';\n\nconst CreateAccountManager = () => {\n const [modalOpen, setModalOpen] = useState(false);\n const history = useHistory();\n\n const showModal = () => {\n setModalOpen(true);\n };\n const closeModal = () => {\n setModalOpen(false);\n };\n return (\n <>\n \n {\n closeModal();\n history.push('/account-manager/list');\n }}\n hide={closeModal}\n type=\"create-account-manager\"\n >\n \n \n \n \n );\n};\n\nexport default CreateAccountManager;\n","import styled from 'styled-components';\n\nexport const UpdateAccountManagerContainer = styled.div`\n .top-section {\n display: flex;\n justify-content: space-between;\n margin-top: 20px;\n padding: 0px 50px;\n .action-buttons {\n display: flex;\n flex-direction: row;\n button {\n margin-right: 25px;\n padding: 0px 25px;\n height: 40px;\n font-size: 0.875rem;\n font-weight: 600;\n color: #727272;\n &:hover {\n color: #ff5b00;\n }\n }\n }\n }\n`;\n","import React, { useState } from 'react';\nimport Button from 'components/Shared/Button';\nimport { PopoverMenuItem } from 'components/Shared/ActionButtons';\nimport FormPageTopbar from 'components/Shared/FormPageTopbar';\nimport PopupModal from 'components/Shared/PopupModal';\nimport DeleteModal from 'components/School/DeleteModal';\nimport AccountManagerForm from 'components/AccountManager/AMForm';\nimport { useHistory, useLocation } from 'react-router-dom';\nimport { delAccountManager } from 'services/account-manager';\nimport SuccessModalBody from 'components/Shared/SuccesModalBody';\nimport { UpdateAccountManagerContainer } from './UpdateAM.styles';\n\nconst UpdateAccountManager = () => {\n const history = useHistory();\n const location = useLocation();\n\n //succes modal\n const [modalOpen, setModalOpen] = useState(false);\n const showModal = () => {\n setModalOpen(true);\n };\n const closeModal = () => {\n setModalOpen(false);\n };\n // delete modal\n const [showDeleteModal, setShowDeleteModal] = useState(false);\n const [disable, setDisable] = useState(true);\n\n const openDeleteModal = () => {\n setShowDeleteModal(true);\n };\n const hideDeleteModal = () => {\n setShowDeleteModal(false);\n };\n\n const deleteManager = () => {\n delAccountManager(location.state.managerId).then((res) => {\n if (res.IsSuccessful) history.push('/account-manager/list');\n });\n };\n\n return (\n \n \n \n \n \n {\n closeModal();\n history.push('/account-manager/list');\n }}\n hide={closeModal}\n type=\"update-account-manager\"\n >\n \n \n history.push(\n `/account-manager/account-manager/authorised-school-list/${location.state.managerId}`\n )\n }\n />\n
    \n
    User Details
    \n
    \n history.push('/school/update-school')}\n >\n \n setDisable(false)}\n style={{ marginLeft: '0.5rem' }}\n >\n Edit\n \n \n \n \n
    \n
    \n \n
    \n );\n};\n\nexport default UpdateAccountManager;\n","import styled from 'styled-components';\n\nexport const AuthorisedListTableContainer = styled.div`\n padding: 50px;\n .table td,\n .table th {\n padding: 5px;\n vertical-align: middle;\n border: 1px solid #ffd98d;\n }\n thead {\n tr {\n background: #ffcc68;\n text-align: center;\n }\n }\n tbody {\n tr {\n text-align: center;\n }\n tr:nth-child(odd) {\n background-color: #ffffff;\n }\n tr:nth-child(even) {\n background-color: #fffcf6;\n }\n }\n`;\n","import React from 'react';\nimport { AuthorisedListTableContainer } from './AuthorisedListTable.styles';\n\nconst AuthorisedListTable = ({ data }) => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {data &&\n data.map((item, index) => (\n \n \n \n \n \n \n \n \n \n ))}\n \n
    \n No\n \n Country\n \n School ID\n \n School Name\n \n Student Population\n \n Accessibility\n \n Customer Status\n
    {index + 1}{item.countryName === null ? '-' : item.countryName}{item.schoolId === null ? '-' : item.schoolId}{item.schoolName === null ? '-' : item.schoolName}\n {item.studentPopulation === null\n ? '-'\n : item.studentPopulation}\n \n {item.accessibility === null ? '-' : item.accessibility}\n {item.status === null ? '-' : item.status}
    \n
    \n );\n};\n\nexport default AuthorisedListTable;\n","import React, { useState, useEffect } from 'react';\nimport FormPageTopbar from 'components/Shared/FormPageTopbar';\nimport AuthorisedListTable from 'components/AccountManager/AuthorisedListTable';\nimport { getAccountManagerById } from 'services/account-manager';\nimport { useParams } from 'react-router-dom';\nimport Spinner from 'components/Shared/Spinner';\n\nconst AuthorisedSchoolList = () => {\n const params = useParams();\n const [isLoading, setIsLoading] = useState(false);\n const [schoolData, setSchoolData] = useState([]);\n\n const setAccessibility = (val) => {\n if (val === 1) return 'Inaccessible';\n if (val === 2) return 'Not accessible';\n if (val === 3) return 'Somewhat accessible';\n if (val === 4) return 'Easily accessible';\n if (val === 5) return 'Most accessible';\n return null;\n };\n\n const bindData = (val) => {\n const tempData = val.map((elem) => {\n const obj = {\n countryName: elem.CountryName,\n schoolId: elem.School_Id,\n schoolName: elem.SchoolName,\n studentPopulation: elem.StudentPopulation,\n accessibility: setAccessibility(elem.Accessibility),\n status: elem.ContractModels != null ? 'Customer' : 'Prospect',\n };\n return obj;\n });\n setSchoolData([...schoolData, ...tempData]);\n };\n\n useEffect(() => {\n setIsLoading(true);\n if (params.id) {\n getAccountManagerById(params.id)\n .then((res) => {\n if (res.IsSuccessful) {\n bindData(res.Result.Customers);\n }\n setIsLoading(false);\n })\n .catch((err) => {\n console.log('err is', err);\n setIsLoading(false);\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n console.log('schoolData is===>', schoolData);\n return (\n <>\n \n {schoolData.length === 0 ? (\n \n No Authorised School\n

    \n ) : (\n <>\n {isLoading ? : }\n \n )}\n \n );\n};\n\nexport default AuthorisedSchoolList;\n","import styled from 'styled-components';\n\nexport const AccountManagerContainer = styled.div`\n padding-left: 195px;\n padding-top: 51px;\n .right-btn {\n text-align: right;\n }\n @media (max-width: 971px) {\n padding-left: 65px;\n }\n`;\n","import React from 'react';\nimport { Route, Switch, useLocation } from 'react-router-dom';\nimport Topbar from 'components/Topbar/Topbar';\nimport Sidebar from 'components/Sidebar/Sidebar';\nimport SidebarAccountManager from 'components/Sidebar/SidebarAccountManager';\nimport AccountManagerList from 'pages/AccountManager/AMList';\nimport CreateAccountManager from 'pages/AccountManager/CreateAM';\nimport UpdateAccountManager from 'pages/AccountManager/UpdateAM';\nimport AuthorisedSchoolList from 'pages/AccountManager/AuthorisedSchoolList';\nimport { AccountManagerContainer } from './AM.styles';\n\nconst AccountManager = () => {\n const { pathname } = useLocation();\n\n return (\n <>\n \n \n \n \n \n {pathname === '/account-manager' && }\n \n \n \n \n \n \n \n \n );\n};\n\nexport default AccountManager;\n","import React from 'react';\nimport { Redirect, Route } from 'react-router-dom';\n\nconst AuthenticatedRoute = ({ component: Component, path, ...rest }) => {\n if (path === '/') {\n return (\n \n );\n }\n return (\n \n localStorage.getItem('access_token') ? (\n \n ) : (\n \n )\n }\n />\n );\n};\n\nexport default AuthenticatedRoute;\n","import React from 'react';\nimport { Router, Switch, Route } from 'react-router-dom';\nimport { createBrowserHistory } from 'history';\nimport Login from 'pages/Login/Login';\nimport School from 'pages/School/School';\nimport AccountManager from 'pages/AccountManager/AM';\nimport AuthenticatedRoute from 'components/Shared/AuthenticatedRoute';\n\nexport const history = createBrowserHistory({\n basename: process.env.REACT_APP_SUBDOMAIN,\n});\n\nconst Routes = () => {\n return (\n \n \n \n \n \n \n \n \n );\n};\n\nexport default Routes;\n","import { createGlobalStyle } from 'styled-components';\n\nexport const GlobalStyle = createGlobalStyle`\nbody {\n font-family: Muli;\n background-color: #f1f1f1;\n color: #393939;\n}`;\n","import React from 'react';\nimport Routes from './Routes';\nimport 'assets/fonts/fonts.css';\nimport { GlobalStyle } from 'assets/styles/GlobalStyles.styles';\n\nfunction App() {\n return (\n <>\n \n \n \n );\n}\n\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n","module.exports = __webpack_public_path__ + \"static/media/empty-search-results.7a1b613f.svg\";"],"sourceRoot":""}