{"version":3,"sources":["app.config.js","components/auth/NavMenu.js","context/UserProvider.js","components/LoginNav.js","components/Header.js","components/Footer.js","components/Layout.js","library/resources/SuperFrogLooping.mp4","library/images/svg/calendar-icon.svg","library/images/svg/range-icon.svg","library/images/svg/price-icon.svg","library/images/superfrogWedding.jpg","library/images/superfrog-wedding-small.jpg","library/images/looping-campus-video-poster.png","components/Video.js","components/IconButton.js","components/Home.js","components/Utilities.js","components/Button.js","components/ReviewRequest.js","components/Success.js","components/Input.js","components/InputTime.js","components/MyCalendar.js","components/CalendarPopup.js","components/Loading.js","components/CalendarTime.js","components/CheckBox.js","components/Select.js","library/images/cheerleaders-small.jpg","library/images/showgirls-small.jpg","library/images/superfrog-small.jpg","hooks/useSubmit.js","components/Features.js","library/images/svg/checked.svg","components/Pagination.js","components/ReviewTable.js","components/TextArea.js","components/LoadingIcon.js","components/SuccessMessage.js","components/ErrorMessage.js","components/EventForm.js","components/ReviewPolicies.js","components/RequestLayout.js","constants/Constants.js","hooks/events-blackouts-hook.js","hooks/events-blackouts-data-hooks.js","hooks/rates-hook.js","components/CancelRequest.js","components/Request.js","user-rules.js","components/Can.js","components/EventDetails.js","components/MyEvents.js","components/Events.js","components/ApprovedEvents.js","components/auth/NavDashboard.js","components/DashboardLayout.js","hooks/participants-hook.js","hooks/employees-hook.js","hooks/events-hook.js","hooks/events-by-current-employee-hook.js","hooks/events-approved.js","hooks/events-denied.js","hooks/events-assigned-hook.js","components/auth/DashboardPage.js","components/NoAccess.js","components/auth/EditEventForm.js","hooks/event-by-id-hook.js","hooks/useOnSuccess-hook.js","hooks/useError.js","components/auth/EventPage.js","components/auth/MyEventsPage.js","components/auth/CustomerForm.js","hooks/customer-by-id.js","components/auth/CustomerPage.js","components/SelectRole.js","components/auth/EmployeeForm.js","hooks/employee-by-id-hook.js","hooks/roles-hook.js","components/auth/EmployeePage.js","components/SelectPayroll.js","components/auth/FormParticipants.js","components/Payroll.js","components/auth/PayrollPage.js","hooks/participants-scheduled-hook.js","components/auth/BlackoutForm.js","hooks/blackout-by-id.js","components/auth/BlackoutPage.js","components/Employees.js","components/auth/AllEmployeesPage.js","components/auth/AllItemsPrice.js","components/auth/AddEmployeePage.js","hooks/blackouts-hook.js","components/Blackouts.js","components/auth/ViewBlackoutsPage.js","components/auth/AddBlackoutPage.js","components/CalendarView.js","components/TermsConditions.js","components/CurrentEventDetails.js","components/SelectEmployee.js","components/AssignmentWrapper.js","components/auth/SuperFrogAssignment.js","components/auth/CheerleadersAssignment.js","components/auth/AssignShowgirls.js","components/auth/AssignEventPage.js","components/RadioGroup.js","components/auth/ScheduleDenyEventPage.js","components/auth/PayrollByEmployeePage.js","hooks/events-by-employee-hook.js","components/auth/PayrollByEmployee.js","hooks/rate-by-id-hook.js","components/auth/ItemFormPage.js","components/NotFound.js","library/images/svg/tcu-logo-purple.svg","components/auth/LoginPage.js","App.js","registerServiceWorker.js","index.js"],"names":["hostname","window","location","config","url","client_id","issuer","redirect_uri","origin","auth_server_id","token","OKTA_CONFIG","NavMenu","useState","collapsed","setCollapsed","_element","useRef","toggleNavbar","useEffect","outsideClickEvent","e","container","current","target","contains","document","addEventListener","removeEventListener","className","light","ref","style","marginRight","onClick","id","isOpen","navbar","to","UserContext","createContext","useUser","useContext","UserProvider","children","useOktaAuth","authState","oktaAuth","initial","useMemo","authenticated","currentUser","currentEmployee","spiritMemberType","userRole","roleName","loading","error","user","setUser","isAuthenticated","prevState","getMatchingEmployee","a","fetch","headers","Authorization","idToken","then","rsp","json","data","role","err","console","log","getUserInfo","info","Provider","value","LoginNav","authNav","DropdownButton","title","fullName","Dropdown","Item","as","Header","href","rel","height","width","src","alt","Footer","type","Layout","btnClass","closeBtn","closeHtml","defaultOk","defaultCancel","wildClasses","escToClose","position","tabIndex","Video","videoSrc","marginTop","marginBottom","autoPlay","loop","muted","IconButton","altText","iconSrc","iconInnerText","innerText","linkIncluded","termsLink","linkText","showOptions","setShowOptions","animation","animations","popIn","Home","icons","PriceIcon","RangeIcon","RequestingIcon","hasTouchScreen","setState","navigator","maxTouchPoints","mQ","matchMedia","media","matches","UA","userAgent","test","msMaxTouchPoints","isTouchScreen","imgSrc","WeddingImageSmall","WeddingImage","Fragment","imageToLoad","SuperFrogPoster","SuperFrogVideo","map","icon","eventObject","eventId","eventName","eventDescription","eventOrganization","eventLocation","otherOrganizations","eventInstructions","comments","typeName","addPerformance","addCheerleaders","onCampus","addShowgirls","cheerleadersSize","showgirlsSize","specialInstructions","expensesOrBenefits","eventDate","startTime","endTime","customerId","customer","firstName","lastName","phoneNumber","email","participants","employee","employeeId","typeNameOptions","name","teamSizes","spiritMembers","denyReasons","fetchCall","callback","errCallback","options","method","Accept","body","JSON","stringify","ok","status","convertTime12to24","time","match","Error","timeToLower","toLowerCase","charAt","substr","hours","parseInt","indexOf","replace","trim","convert24timeToSeconds","undefined","split","timeSplit","hoursInt","minutesInt","isNaN","formatDate","datetime","splitDate","length","formatDateFront","date","returnDateFormat","newdate","Date","day","getDate","month","getMonth","yearMonthDay","getFullYear","monthDayYear","removeLeadingZero","formattedTime","calculateTotalHours","modifiedTo24StartTime","modifiedTo24EndTime","calHours","to24StartTime","to24EndTime","timeSpan","start","end","startDate","endDate","diff","getTime","Math","floor","minutes","getTimeSpan","splitTime","totalHours","calculateTotalCost","costOfSuperFrog","costOfCheerleaders","costOfShowgirls","mileageCost","formatTime","validTime","parse","toLocaleString","hour","minute","hour12","timeZone","handleTypeName","string","find","object","handleTeamSize","size","s","mapEvents","events","isBlackout","event","subtractHourStartTime","addHourEndTime","eventTitle","blackoutName","setHours","getHours","isScheduled","isAllDay","allDay","Button","props","disabled","action","ReviewRequest","mileageRate","milesNum","handleAlertWindow","prevStep","totalCost","scrollTo","eventTypeValue","Table","striped","bordered","hover","responsive","addSuperFrog","preventDefault","Success","Input","setValue","getErrorMessage","showRequired","getValue","placeholder","spellCheck","autoCorrect","autoComplete","autoCapitalize","isPristine","changeValue","currentTarget","inputRef","useImperativeHandle","handleFocus","focus","errorMessage","requiredMessage","htmlFor","onBlur","onChange","withFormsy","forwardRef","InputTime","saveValueToState","dayOfTheWeek","color","initialTime","timeMode","errors","invalidDateTime","invalidEndTime","meridiem","setTime","touched","setTouched","focused","selectedTime","maxTime","onTimeChange","timeString","onFocusChange","timeConfig","from","step","unit","colorPalette","timezone","theme","display","localizer","momentLocalizer","moment","MyCalendar","selectable","views","handleSelect","handleSelectEvent","handleDrillDown","timeslots","drilldownView","allDayAccessor","startAccessor","toDate","endAccessor","titleAccessor","popup","onSelectSlot","onSelectEvent","onDrillDown","CalendarPopup","handleClick","toLocaleTimeString","Loading","CalendarTime","nextStep","scheduledEvents","isGame","blackoutsLoading","scheduledEventsLoading","canSubmit","setCanSubmit","eventDetails","handleEventDetails","open","setOpen","childRef","addValidationRule","values","today","twoWeeksOut","setDate","threeMonthsOut","setMonth","getDay","isEnabled","Object","keys","some","x","onValidSubmit","onValid","onInvalid","formattedDate","innerRef","required","validations","greaterThanTwoWeeks","lessThanThreeMonths","isValidDate","selectedDate","k","validSelectedDate","scheduledDate","scheduledEndDate","validationErrors","checked","Select","selectRef","option","label","useSubmit","Features","hourlySFRate","eventSizes","disableButton","enableButton","childSelect","Card","Img","variant","SuperFrog","Body","Title","Cheerleaders","Showgirls","Pagination","total","currentClassName","completeClassName","CheckIcon","ReviewTable","cols","rows","LoadingIcon","SuccessMessage","message","Alert","ErrorMessage","EventForm","invalidLocation","reviewRequest","locationDistance","saveInParentState","invalidLocationMessage","validLocationMessage","onValidLocation","googleMapReady","onGoogleMapErr","googleMapErrMessage","googleMapLoading","jQueryLoaded","jQueryMaskLoaded","google","setGoogle","firstNameRef","$","mask","handleGoogleMapCallback","response","distanceValue","elements","distance","distanceMiles","text","milesInt","round","parseFloat","setTimeout","hideMessage","stateKey","matchRegexp","validationError","validateLocation","service","maps","DistanceMatrixService","getDistanceMatrix","origins","destinations","travelMode","unitSystem","UnitSystem","IMPERIAL","hourlySuperFrog","hourlyCheerleaders","hourlyShowgirls","ReviewPolicies","submit","miles","RequestLayout","MILAGE_RATE","PRIVATE_BUSINESS","PUBLIC_NONPROFIT","GROUP_LARGE","GROUP_SMALL","useScheduledAndBlackoutEvents","cleanEvents","userEventsLoading","currentEvents","setEvents","statusText","blackouts","updatedBlackouts","updatedEvents","useScheduledAndBlackoutEventsData","useRates","items","hourlyCost","flatFeeSuperFrog","gameFlatFeeSuperFrog","tcuSuperFrog","gameTcuSuperFrog","nonProfitSuperFrog","gameNonProfitSuperFrog","privateSuperFrog","gamePrivateSuperFrog","tcuSmallGroup","tcuLargeGroup","gameTcuSmallGroup","gameTcuLargeGroup","nonProfitSmallGroup","nonProfitLargeGroup","gameNonProfitSmallGroup","gameNonProfitLargeGroup","privateSmallGroup","privateLargeGroup","gamePrivateSmallGroup","gamePrivateLargeGroup","rates","setRates","getRates","item","descriptionId","filterRates","CancelRequest","Request","GoogleMapReady","setGoogleMap","setStep","eventsAndBlackoutsData","newRequest","setRequest","setGame","setInvalidEndTime","setInvalidDateTime","distanceInfo","setLocationDistance","setTotalHours","setEventSizes","lastConfirmation","setLastConfirmation","setData","existingScript","getElementById","script","createElement","appendChild","onload","loadGoogleMaps","validationExactTime","currentValue","key","prototype","hasOwnProperty","call","validateExactDateTime","checkIsGame","updateTeamSizeDropdown","handleSFHourlyRate","handleCheerleadersHourlyRate","handleShowgirlsHourlyRate","validateEndTime","handleLocation","calIf30MinFlatFee","handleSuperFrogCost","handleOtherSpiritMembersCost","costofShowgirls","startTime24","endTime24","startTimeSeconds","endTimeSeconds","selectedStartDateTime","selectedEndDateTime","scheduledStartDate","typename","validDate","i","blackoutDate","dayBefore","toDateString","eventType","is30FlatFee","ifAvailable","toUpperCase","totalMileageCost","sendToServer","credentials","Popup","create","content","buttons","left","alert","close","right","clearQueue","rules","student","static","captain","admin","superAdmin","Can","permissions","staticPermissions","includes","check","perform","yes","no","defaultProps","EventDetails","currentEventDetails","handleCloseEvent","showDetails","isDenied","isCanceled","Modal","onHide","show","centered","closeButton","person","index","MyEvents","headings","toggleEventDetails","counter","heading","Events","displayScheduleDenyButton","displayAssignButton","displayStatus","ApprovedEvents","participant","now","toString","NavDashboard","Nav","defaultActiveKey","ListGroup","activeStyle","DashboardLayout","useParticipants","setParticipants","useEmployees","employees","spiritType","emplSuperfrog","emplCheerleaders","emplShowgirls","setEmployees","getEmployees","useCallback","superFrogs","filter","cheerleaders","showgirls","useAllEvents","getAllEVents","useEventsByCurrentEmployee","getEventsByCurrentEmployee","useApprovedEvents","getApprovedEvents","useDeniedEvents","getDeniedEvents","useEventsAssigned","getAssignedEvents","DashboardPage","allEmployees","allEvents","myEvents","approvedEvents","assignedEvents","deniedEvents","setShow","details","setViewEventDetails","myEventsHeadings","handleShow","eventDetailsId","defaultRequestHeadings","Tab","eventKey","Content","NoAccess","EditEventForm","updateEvent","isAdminApproved","border","useEvent","assignments","assignedSuperfrog","assignedCheerleaders","assignedShowgirls","setEvent","getEventById","eventSF","eventCheerleaders","eventShowgirls","useOnSuccess","onSuccess","setOnSuccess","useError","complications","setError","EventPage","params","displayMessage","setDayOfTheWeek","handleDayOfTheWeek","thisDayOfTheWeek","MyEventsPage","eventHeadings","detailsInfo","setDetails","CustomerForm","handleCustomer","useCustomerById","setCustomer","getCustomerById","CustomerPage","getError","updateCustomer","roleId","EmployeeForm","handleEmployee","roles","newForm","areaForm","handleResetForm","reset","tcuEmployeeId","useEmployeeById","employeeById","setEmployee","getEventsByEmployeeId","useRoles","setRoles","EmployeePage","updateEmployee","fontSize","minWidth","FormParticipants","participateId","isPaid","getParticipants","setUpdateForm","Payroll","formData","handleParticipants","formattedStartTime","formattedEndTime","PayrollPage","part","useParticipantsScheduled","scheduledParticipants","payrollHeadings","BlackBlackoutFormForm","blackout","handleBlackout","blackoutFormRef","backButton","blackoutId","useBlackoutById","setBlackout","getBlackoutById","cleanDate","cleanEndDate","cleanStartTime","cleanEndTime","BlackoutPage","blackoutById","updateBlackoutForm","currentValues","isChanged","updateBlackout","BlackoutForm","Employees","handleDeleteEmployee","AllEmployeesPage","empl","deleteEmployee","employeeHeadings","AllItemsPrice","itemId","description","userRoles","displayError","formRef","addEmployee","useBlackouts","setBlackouts","getBlackouts","Blackouts","handleDeleteBlackouts","ViewBlackoutsPage","deleteBlackouts","blackoutHeadings","AddBlackoutPage","parentForm","addBlackout","CalendarView","TermsConditions","CurrentEventDetails","displaySpiritMembers","AssignmentWrapper","h3Title","SuperFrogAssignment","handleSelfAssign","isCurrentSPType","superFrogRef","onlyOneSFConflict","onRoleConflict","conflictError","roleMessage","onSuccessDelete","conflict","setConflict","handleRemoveSFAlert","handleRemoveSF","superfrogId","credential","handleSuperFrogAssignment","CheerleadersAssignment","handleRemoveSMAlert","handleSpiritMemberAssignment","conflictRoleMessage","cheerleadersRef","c","AssignShowgirls","handleRemoveSpiritMember","showgirlsRef","AssignEventPage","dataset","userspirittype","buttonfor","putParticipant","assignEmployeeId","spiritMemberId","spiritMember","checkAgainst","input","ScheduleDenyEventPage","eventDecision","reasonDeny","currentForm","setCurrentForm","success","handleChange","radioOptions","eventApproval","PayrollByEmployee","useEventsByEmployeeId","participate","p","useRateById","rate","setRate","ItemFormPage","updateItem","isNumeric","NotFound","textAlign","LoginPage","widgetRef","widget","OktaSignIn","baseUrl","logo","Logo","colors","brand","helpLinks","help","forgotPassword","unlock","brandName","authParams","scopes","renderEl","el","res","signInWithRedirect","sessionToken","session","remove","OktaAuth","clientId","redirectUri","pkce","responseType","App","history","useHistory","restoreOriginalUri","_oktaAuth","originalUri","toRelativeUrl","onAuthRequired","push","exact","path","component","render","PayrollByEmployeePage","AddEmployeePage","isLocalhost","Boolean","registerValidSW","swUrl","serviceWorker","register","registration","onupdatefound","installingWorker","installing","onstatechange","state","controller","rootElement","ReactDOM","URL","process","get","ready","unregister","reload","checkValidServiceWorker","registerServiceWorker"],"mappings":"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","file":"static/js/main.6000086c.chunk.js","sourcesContent":["const hostname = window.location.hostname;\r\n\r\nlet config = {\r\n url: 'https://tcu.oktapreview.com',\r\n client_id: '0oalhyokipNmZUdQx0h7',\r\n issuer: 'https://tcu.oktapreview.com/oauth2/auscgg070q7Wc6Xwu0h7',\r\n redirect_uri: window.location.origin + '/login/callback',\r\n auth_server_id: 'auscgg070q7Wc6Xwu0h7',\r\n token: '00RgEJDhyfMJ8ZWVPTIp2IcsH2-ZWvXJ0IULnNAaFd',\r\n};\r\n\r\nif (hostname === 'superfrog.tcu.edu') {\r\n config = {\r\n url: 'https://tcu.okta.com',\r\n client_id: '0oao4vlzlwSvxRX4o0x7',\r\n issuer: 'https://tcu.okta.com/oauth2/default',\r\n redirect_uri: window.location.origin + '/login/callback',\r\n auth_server_id: '0oao4vlzlwSvxRX4o0x7',\r\n token: '00RgEJDhyfMJ8ZWVPTIp2IcsH2-ZWvXJ0IULnNAaFd',\r\n };\r\n}\r\n\r\nconst OKTA_CONFIG = config;\r\n\r\nexport default OKTA_CONFIG;\r\n","import '../styles/NavMenu.scss';\r\nimport React, { useEffect, useState, useRef } from 'react';\r\nimport { Collapse, Container, Navbar, NavbarToggler, NavItem } from 'reactstrap';\r\nimport { NavLink } from 'react-router-dom';\r\n\r\nfunction NavMenu() {\r\n const [collapsed, setCollapsed] = useState(true);\r\n const _element = useRef(null);\r\n const toggleNavbar = () => {\r\n setCollapsed(!collapsed);\r\n };\r\n\r\n useEffect(() => {\r\n const outsideClickEvent = (e) => {\r\n const container = _element.current;\r\n if (e.target !== container && !container.contains(e.target)) {\r\n setCollapsed(true);\r\n }\r\n };\r\n document.addEventListener('mousedown', outsideClickEvent, false);\r\n\r\n return function cleanup() {\r\n document.removeEventListener('mousedown', outsideClickEvent, false);\r\n };\r\n }, []);\r\n\r\n return (\r\n \r\n
\r\n \r\n Menu\r\n \r\n \r\n
    \r\n \r\n \r\n Home\r\n \r\n \r\n \r\n \r\n Available Dates\r\n \r\n \r\n \r\n \r\n Terms & Conditions\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default NavMenu;\r\n","import React, { createContext, useState, useEffect, useContext, useMemo } from 'react';\r\nimport { useOktaAuth } from '@okta/okta-react';\r\n\r\nconst UserContext = createContext();\r\nexport const useUser = () => useContext(UserContext);\r\n\r\nexport default function UserProvider({ children }) {\r\n const { authState, oktaAuth } = useOktaAuth();\r\n let initial = useMemo(() => {\r\n const initial = {\r\n authenticated: false,\r\n currentUser: null,\r\n currentEmployee: {\r\n spiritMemberType: '',\r\n },\r\n userRole: {\r\n roleName: '',\r\n },\r\n loading: true,\r\n error: null,\r\n };\r\n return initial;\r\n }, []);\r\n\r\n const [user, setUser] = useState(initial);\r\n\r\n useEffect(() => {\r\n if (authState !== null && authState.isAuthenticated) {\r\n setUser((prevState) => ({ ...prevState, authenticated: authState.isAuthenticated }));\r\n }\r\n\r\n return function cleanup() {\r\n setUser(initial);\r\n };\r\n }, [authState, initial]);\r\n\r\n useEffect(() => {\r\n if (!user.authenticated) return;\r\n /**\r\n * Fetch the current (logged in user's) information from database\r\n *\r\n * contains user role information (the main reason we do this)\r\n */\r\n const getMatchingEmployee = async () => {\r\n fetch('api/employees/current', {\r\n headers: {\r\n Authorization: 'Bearer ' + authState.idToken.idToken,\r\n },\r\n })\r\n .then((rsp) => {\r\n return rsp.json();\r\n })\r\n .then((data) => {\r\n const { role } = data;\r\n setUser((prevState) => ({\r\n ...prevState,\r\n currentEmployee: data,\r\n userRole: role,\r\n loading: false,\r\n }));\r\n })\r\n /* eslint-disable-next-line */\r\n .catch((err) => console.log(err));\r\n };\r\n\r\n getMatchingEmployee();\r\n\r\n return function cleanup() {\r\n setUser(initial);\r\n };\r\n }, [user.authenticated, initial, authState]);\r\n\r\n useEffect(() => {\r\n if (!user.authenticated) return;\r\n\r\n /**\r\n * Returns the user information from OKTA (contains limited information)\r\n */\r\n const getCurrentUser = () => {\r\n oktaAuth.token.getUserInfo().then((info) => {\r\n setUser((prevState) => ({\r\n ...prevState,\r\n currentUser: info,\r\n loading: false,\r\n }));\r\n });\r\n };\r\n\r\n getCurrentUser();\r\n\r\n return function cleanup() {\r\n setUser(initial);\r\n };\r\n }, [user.authenticated, initial, oktaAuth]);\r\n\r\n return {children};\r\n}\r\n","import './styles/LoginNav.scss';\r\nimport React from 'react';\r\nimport DropdownButton from 'react-bootstrap/DropdownButton';\r\nimport { useUser } from '../context/UserProvider';\r\nimport { NavLink } from 'react-router-dom';\r\nimport Dropdown from 'react-bootstrap/Dropdown';\r\n\r\nfunction LoginNav() {\r\n const { currentEmployee, authenticated } = useUser();\r\n\r\n const authNav = authenticated ? (\r\n <>\r\n \r\n \r\n \r\n Dashboard\r\n \r\n \r\n \r\n \r\n ) : null;\r\n return (\r\n <>\r\n
{authNav}
\r\n \r\n );\r\n}\r\nexport default LoginNav;\r\n","import './styles/header.scss';\r\nimport React from 'react';\r\nimport NavMenu from './auth/NavMenu';\r\nimport LoginNav from './LoginNav';\r\n\r\nconst Header = () => {\r\n return (\r\n
\r\n \r\n Skip to main content\r\n \r\n
\r\n
\r\n \r\n \r\n Texas Christian University\r\n \r\n
\r\n \r\n
\r\n
\r\n
SuperFrog Scheduler
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n );\r\n};\r\nexport default Header;\r\n","import './styles/footer.scss';\r\nimport React from 'react';\r\n\r\nconst Footer = () => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default Footer;\r\n","import './styles/Popup.scss';\r\nimport React from 'react';\r\nimport Header from './Header';\r\nimport Footer from './Footer';\r\nimport Popup from 'react-popup';\r\n\r\nconst Layout = ({ children }) => {\r\n return (\r\n
\r\n \r\n
\r\n
\r\n \r\n Main Content\r\n \r\n {children}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Layout;\r\n","export default __webpack_public_path__ + \"static/media/SuperFrogLooping.25a79027.mp4\";","export default __webpack_public_path__ + \"static/media/calendar-icon.8d74b82a.svg\";","export default __webpack_public_path__ + \"static/media/range-icon.b040828e.svg\";","export default __webpack_public_path__ + \"static/media/price-icon.0ff7b0dd.svg\";","export default __webpack_public_path__ + \"static/media/superfrogWedding.14023a47.jpg\";","export default __webpack_public_path__ + \"static/media/superfrog-wedding-small.a0a6c096.jpg\";","export default __webpack_public_path__ + \"static/media/looping-campus-video-poster.58450343.png\";","import React from 'react';\r\n\r\nfunction Video({ videoSrc }) {\r\n return (\r\n \r\n
\r\n \r\n {/* */}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

{'Add TCU Spirit to your Event!'}

\r\n
\r\n {\r\n 'Request SuperFrog, TCU Cheerleaders, & Showgirls to your wedding, grad party, and more!'\r\n }\r\n
\r\n
\r\n
\r\n
\r\n \r\n );\r\n}\r\n\r\nexport default Video;\r\n","import './styles/icon_button.scss';\r\nimport React, { useState } from 'react';\r\nimport { animations } from 'react-animation';\r\nimport { Link } from 'react-router-dom';\r\n\r\nfunction IconButton({\r\n altText,\r\n iconSrc,\r\n iconInnerText,\r\n innerText,\r\n linkIncluded,\r\n termsLink,\r\n linkText,\r\n}) {\r\n const [showOptions, setShowOptions] = useState(false);\r\n const toggleOptions = () => {\r\n setShowOptions(!showOptions);\r\n };\r\n return (\r\n
\r\n \r\n {showOptions ? (\r\n
\r\n {innerText}{' '}\r\n {linkIncluded ? (\r\n \r\n {linkText}\r\n \r\n ) : null}\r\n
\r\n ) : null}\r\n
\r\n );\r\n}\r\n\r\nexport default IconButton;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { HideUntilLoaded } from 'react-animation';\r\nimport './styles/home.scss';\r\nimport SuperFrogVideo from '../library/resources/SuperFrogLooping.mp4';\r\nimport RequestingIcon from '../library/images/svg/calendar-icon.svg';\r\nimport RangeIcon from '../library/images/svg/range-icon.svg';\r\nimport PriceIcon from '../library/images/svg/price-icon.svg';\r\nimport WeddingImage from '../library/images/superfrogWedding.jpg';\r\nimport WeddingImageSmall from '../library/images/superfrog-wedding-small.jpg';\r\nimport SuperFrogPoster from '../library/images/looping-campus-video-poster.png';\r\nimport Video from './Video';\r\nimport IconButton from './IconButton';\r\n\r\nconst Home = () => {\r\n const [data, setState] = useState({\r\n icons: [\r\n {\r\n id: '1',\r\n altText: 'Pricing Information',\r\n iconSrc: PriceIcon,\r\n iconInnerText: 'Pricing',\r\n innerText:\r\n 'ALL appearances are paid. Prices are based on a 1 hour appearance; additional fees may apply if more than one hour. SuperFrog, Showgirls, and Cheerleaders are individually priced. Payment must be made after receiving an appearance request approval email, and a minimum of 24 hours prior to the event or it will be canceled.',\r\n linkIncluded: true,\r\n termsLink: '/terms-conditions',\r\n linkText: 'View Pricing',\r\n },\r\n {\r\n id: '2',\r\n altText: 'Range Information',\r\n iconSrc: RangeIcon,\r\n iconInnerText: 'Range',\r\n innerText:\r\n 'We only service requests that are within 100 mile radius from Amon G. Carter Stadium.',\r\n linkIncluded: false,\r\n termsLink: '',\r\n linkText: '',\r\n },\r\n {\r\n id: '3',\r\n altText: 'Requesting Information',\r\n iconSrc: RequestingIcon,\r\n iconInnerText: 'Request',\r\n innerText:\r\n 'Request TCU Spirit from a calendar of available dates. Requests must be submitted at least 14 days prior to event date to be considered. Submission of a request does not guarantee the event will be accepted. TCU Spirit has until 5 days prior the date of the event to accept or decline a request.',\r\n linkIncluded: true,\r\n termsLink: '/request',\r\n linkText: 'Request Now!',\r\n },\r\n ],\r\n hasTouchScreen: false,\r\n });\r\n\r\n useEffect(() => {\r\n const isTouchScreen = () => {\r\n let hasTouchScreen = false;\r\n if ('maxTouchPoints' in navigator) {\r\n hasTouchScreen = navigator.maxTouchPoints > 0;\r\n setState((prevState) => ({ ...prevState, hasTouchScreen: hasTouchScreen }));\r\n } else if ('msMaxTouchPoints' in navigator) {\r\n hasTouchScreen = navigator.msMaxTouchPoints > 0;\r\n setState((prevState) => ({ ...prevState, hasTouchScreen: hasTouchScreen }));\r\n } else {\r\n let mQ = window.matchMedia && matchMedia('(pointer:coarse)');\r\n if (mQ && mQ.media === '(pointer:coarse)') {\r\n hasTouchScreen = !!mQ.matches;\r\n setState((prevState) => ({ ...prevState, hasTouchScreen: hasTouchScreen }));\r\n return;\r\n } else if ('orientation' in window) {\r\n hasTouchScreen = true; // deprecated, but good fallback\r\n setState((prevState) => ({ ...prevState, hasTouchScreen: hasTouchScreen }));\r\n return;\r\n } else {\r\n // Only as a last resort, fall back to user agent sniffing\r\n let UA = navigator.userAgent;\r\n hasTouchScreen =\r\n /\\b(BlackBerry|webOS|iPhone|IEMobile)\\b/i.test(UA) ||\r\n /\\b(Android|Windows Phone|iPad|iPod)\\b/i.test(UA);\r\n setState((prevState) => ({ ...prevState, hasTouchScreen: hasTouchScreen }));\r\n return;\r\n }\r\n }\r\n setState((prevState) => ({ ...prevState, hasTouchScreen: hasTouchScreen }));\r\n };\r\n isTouchScreen();\r\n }, []);\r\n\r\n const imgSrc = data.hasTouchScreen ? WeddingImageSmall : WeddingImage;\r\n return (\r\n \r\n \r\n {data.hasTouchScreen ? null : \r\n \r\n );\r\n};\r\n\r\nexport default Home;\r\n","import memoizedFetch from 'memoized-fetch';\r\n// import moment from 'moment';\r\n\r\nexport const eventObject = {\r\n eventId: '',\r\n eventName: '',\r\n eventDescription: '',\r\n eventOrganization: '',\r\n eventLocation: '',\r\n otherOrganizations: '',\r\n eventInstructions: '',\r\n comments: '',\r\n typeName: 'tcu',\r\n addPerformance: false,\r\n addCheerleaders: false,\r\n onCampus: false,\r\n addShowgirls: false,\r\n cheerleadersSize: 'none',\r\n showgirlsSize: 'none',\r\n specialInstructions: '',\r\n expensesOrBenefits: '',\r\n eventDate: '2021-08-28T12:00:00',\r\n startTime: '2021-08-28T12:00:00',\r\n endTime: '2021-08-28T12:00:00',\r\n customerId: '',\r\n customer: {\r\n customerId: '',\r\n firstName: '',\r\n lastName: '',\r\n phoneNumber: '',\r\n email: '',\r\n },\r\n participants: [\r\n {\r\n employee: {\r\n email: '',\r\n employeeId: '',\r\n firstName: '',\r\n lastName: '',\r\n spiritMemberType: '',\r\n },\r\n },\r\n ],\r\n};\r\n/**\r\n * Request types\r\n *\r\n * Match the backend\r\n */\r\nexport const typeNameOptions = [\r\n {\r\n name: 'tcu',\r\n value: 'TCU',\r\n },\r\n {\r\n name: 'public_nonprofit',\r\n value: 'Public School/Non-Profit',\r\n },\r\n {\r\n name: 'private_business',\r\n value: 'Private/Residential',\r\n },\r\n];\r\n\r\n/**\r\n * Team Sizes\r\n */\r\nexport const teamSizes = [\r\n {\r\n name: 'small',\r\n value: 'Small Team (2-3 members)',\r\n },\r\n {\r\n name: 'large',\r\n value: 'Large Team (4-6 members)',\r\n },\r\n];\r\n\r\n/**\r\n * Spirit member form values\r\n */\r\nexport const spiritMembers = [\r\n {\r\n name: 'superfrog',\r\n value: 'SuperFrog',\r\n },\r\n {\r\n name: 'cheerleader',\r\n value: 'Cheerleader',\r\n },\r\n {\r\n name: 'showgirl',\r\n value: 'Showgirl',\r\n },\r\n {\r\n name: 'other',\r\n value: 'Other',\r\n },\r\n];\r\n/**\r\n * Reasons to deny a request\r\n *\r\n * Match the backend too.\r\n */\r\nexport const denyReasons = [\r\n {\r\n name: 'unavailable',\r\n value: 'No one from the student lead Spirit Teams are available at your requested time.',\r\n },\r\n {\r\n name: 'winter_break',\r\n value: 'Due to the winter holiday break, minimum students are in town to fulfill Spirit requests, and none are available for your requested date and time.',\r\n },\r\n {\r\n name: 'summer_break',\r\n value: 'Due to the summer break, minimum students are in town to fulfill Spirit requests, and none are available for your requested date and time.',\r\n },\r\n {\r\n name: 'conflict',\r\n value: 'Your requested date and time conflicts with a TCU athletic event.',\r\n },\r\n];\r\n\r\n/**\r\n * Using memoizedFetch\r\n *\r\n * @param {String} url The API url to call.\r\n */\r\nexport async function fetchAsync(url, options, cacheBusting) {\r\n let data = await memoizedFetch(url, options, cacheBusting);\r\n return data;\r\n}\r\n\r\n/**\r\n * Reusuable fetch call. Does not return any data.\r\n *\r\n * IMPORTANT: ONLY USE FOR PUT, DELETE, OR POST methods\r\n * @param {Object} data Form data to send\r\n * @param {Function} callback Success callback function\r\n * @param {Function} errCallback Error callback function\r\n * @param {Object} options Object must contain url and method keys\r\n * @param {String} token Auth token (optional)\r\n */\r\nexport function fetchCall(data, callback, errCallback, options = {}, token = null) {\r\n const { url, method } = options;\r\n const headers = {\r\n Accept: 'application/json',\r\n 'Content-Type': 'application/json',\r\n };\r\n if (token !== null) {\r\n headers.Authorization = 'Bearer ' + token;\r\n }\r\n\r\n fetch(url, {\r\n method: method,\r\n headers: headers,\r\n body: JSON.stringify(data),\r\n })\r\n .then((rsp) => {\r\n if (!rsp.ok) {\r\n if (errCallback) errCallback();\r\n }\r\n\r\n if (rsp.ok || rsp.status === 204) {\r\n if (callback) callback();\r\n }\r\n })\r\n .catch(() => {\r\n if (errCallback) errCallback();\r\n });\r\n}\r\n\r\n/**\r\n * Let's convert our user input time into 24 hour format\r\n *\r\n * @param {String} time Time in 24 hour format. Time should include am or pm.\r\n * Will be replaced with the function below\r\n */\r\nexport function convertTime12to24(time) {\r\n if (time.match(/(am|pm)/gi) === null) {\r\n throw new Error('String must contain am/pm.');\r\n }\r\n\r\n try {\r\n let timeToLower = time.toLowerCase();\r\n\r\n // if string contains a leading 0\r\n if (timeToLower.charAt(0) === 0 || timeToLower.charAt(0) === '0') {\r\n timeToLower = timeToLower.substr(1);\r\n }\r\n\r\n const hours = parseInt(timeToLower.substr(0, 2), 10);\r\n\r\n if (timeToLower.indexOf('am') !== -1 && hours === 12) {\r\n timeToLower = timeToLower.replace('12', '0');\r\n }\r\n if (timeToLower.indexOf('pm') !== -1 && hours < 12) {\r\n timeToLower = timeToLower.replace(hours, hours + 12);\r\n }\r\n return timeToLower.replace(/(am|pm)/, '').trim();\r\n } catch (err) {\r\n console.error(err);\r\n }\r\n}\r\n\r\n/**\r\n * Calculate amount of hours for each event\r\n *\r\n * @param {string} start The start time\r\n * @param {string} end The end time\r\n *\r\n * @return {string} Total hours\r\n * */\r\nexport function getTimeSpan(start, end) {\r\n if (start.split === undefined || end.split === undefined) {\r\n throw new Error('Cannot read property \"split\" of undefined TypeError');\r\n }\r\n start = start.split(':');\r\n end = end.split(':');\r\n const startDate = new Date(0, 0, 0, start[0], start[1], 0);\r\n const endDate = new Date(0, 0, 0, end[0], end[1], 0);\r\n\r\n if (isNaN(startDate) || isNaN(endDate)) {\r\n throw new Error('Date string is not in ISO 8601 Extended format');\r\n }\r\n\r\n if (start[0] > 25 || start[1] > 61 || end[0] > 25 || end[1] > 61) {\r\n throw new Error('Time strings are not in a valid format. HH:MM');\r\n }\r\n\r\n try {\r\n let diff = endDate.getTime() - startDate.getTime();\r\n let hours = Math.floor(diff / 1000 / 60 / 60);\r\n diff -= hours * 1000 * 60 * 60;\r\n let minutes = Math.floor(diff / 1000 / 60);\r\n\r\n // If using time pickers with 24 hours format, add the below line get exact hours\r\n if (hours < 0) hours = hours + 24;\r\n\r\n return (hours <= 9 ? '0' : '') + hours + ':' + (minutes <= 9 ? '0' : '') + minutes;\r\n } catch (err) {\r\n console.error(err);\r\n }\r\n}\r\n\r\n/**\r\n * Convert 24 hour format (HH:MM) to seconds\r\n *\r\n * We use this to check if endTime is greater than startTime\r\n *\r\n * https://www.calculatorsoup.com/calculators/time/time-to-decimal-calculator.php\r\n *\r\n * @param {String} time 24 hour time format\r\n *\r\n * @return {int} seconds\r\n */\r\nexport function convert24timeToSeconds(time) {\r\n if (time.split === undefined) {\r\n throw new Error('Cannot read property \"split\" of undefined TypeError');\r\n }\r\n const timeSplit = time.split(':'); // split it at the colons\r\n\r\n if (timeSplit[0] > 25 || timeSplit[1] > 61) {\r\n throw new Error('Invalid time strings');\r\n }\r\n\r\n const hoursInt = parseInt(timeSplit[0], 10);\r\n const minutesInt = parseInt(timeSplit[1], 10);\r\n\r\n if (isNaN(hoursInt) || isNaN(minutesInt)) {\r\n throw new Error(\r\n 'convert24timeToSeconds(): hoursInt or minutesInt is invalid',\r\n hoursInt,\r\n minutesInt\r\n );\r\n }\r\n\r\n // let's calculate our seconds\r\n const seconds = hoursInt * 60 * 60 + minutesInt * 60;\r\n\r\n return seconds;\r\n}\r\n\r\n/**\r\n * Let's convert our user input time into 24 hour format\r\n *\r\n * @param {String} date Date in YYYY-MM-DD format\r\n * @param {String} time Time in 12 hour format. Time should include am or pm.\r\n */\r\nexport function convert12to24(date, time) {\r\n if (time.match(/(am|pm)/gi) === null) {\r\n throw new Error('String must contain am/pm.');\r\n }\r\n\r\n // if time string contains a leading 0\r\n if (time.charAt(0) === 0 || time.charAt(0) === '0') {\r\n time = time.substr(1);\r\n }\r\n\r\n const options = {\r\n hour: 'numeric',\r\n minute: 'numeric',\r\n hour12: false,\r\n timeZone: 'America/Chicago',\r\n };\r\n\r\n let formattedDate = date.replace(/-/g, '/');\r\n let formattedTime = time.split(/(am|pm)/i);\r\n\r\n let newTime = new Date(\r\n `${formattedDate} ${formattedTime[0]} ${formattedTime[1]}`\r\n ).toLocaleString('en-US', options);\r\n\r\n if (newTime.match(/:/gi) === null) {\r\n throw new Error('Invalid time returned');\r\n }\r\n\r\n return newTime;\r\n}\r\n\r\n/**\r\n * Format Date to MM/DD/YYYY\r\n *\r\n * This is mainly used in the request form. The date format from\r\n * type=date comes back as YYYY-MM-DD. When the user reviews the\r\n * request we display it MM/DD/YYYY\r\n *\r\n * @param {String} datetime Format must be YYYY-MM-DD\r\n */\r\nexport function formatDate(datetime) {\r\n const splitDate = datetime.split('-');\r\n\r\n if (splitDate.length !== 3) {\r\n throw new Error('Invalid date. Should be YYYY-MM-DD');\r\n }\r\n\r\n return `${splitDate[1]}/${splitDate[2]}/${splitDate[0]}`;\r\n}\r\n\r\n/**\r\n * Easily format date to YYYY-MM-DD or MM/DD/YYYY\r\n *\r\n * Use this because the input type=date needs this format.\r\n * When we edit the event, the date comes backs in ISO 8601 format.\r\n * So, we need to change it so the input type=date displays it correctly.\r\n *\r\n * @param {String} date A valid date in string ISO 8601 Extended format.\r\n * @param {string} returnDateFormat Date format that you want to return. Only\r\n * two options available MM/DD/YYYY AND YYYY-MM-DD\r\n */\r\nexport function formatDateFront(date, returnDateFormat = 'MM/DD/YYYY') {\r\n let newdate = new Date(date);\r\n\r\n if (isNaN(newdate)) {\r\n throw new Error('Date string is not in ISO 8601 Extended format');\r\n }\r\n\r\n let day = (newdate.getDate() < 10 ? '0' : '') + newdate.getDate();\r\n let month = (newdate.getMonth() + 1 < 10 ? '0' : '') + (newdate.getMonth() + 1);\r\n\r\n const yearMonthDay = `${newdate.getFullYear()}-${month}-${day}`;\r\n const monthDayYear = `${month}/${day}/${newdate.getFullYear()}`;\r\n\r\n if (returnDateFormat === 'YYYY-MM-DD') {\r\n return yearMonthDay;\r\n }\r\n\r\n return monthDayYear;\r\n}\r\n\r\n/**\r\n * Remove the leading zero in time string.\r\n *\r\n * @param {String} time Time string format hh:mm\r\n */\r\nexport function removeLeadingZero(time) {\r\n let formattedTime = time;\r\n\r\n if (time.charAt(0) === '0' || time.charAt(0) === 0) {\r\n formattedTime = time.substr(1);\r\n return formattedTime;\r\n }\r\n return formattedTime;\r\n}\r\n\r\n/**\r\n * Calculate total hours for event\r\n *\r\n * @param {String} startTime the start time of the event\r\n * @param {String} endTime the end time of the event\r\n *\r\n * @return {int} totalHours\r\n * */\r\nexport const calculateTotalHours = (startTime, endTime) => {\r\n const modifiedTo24StartTime = convertTime12to24(startTime);\r\n const modifiedTo24EndTime = convertTime12to24(endTime);\r\n\r\n return calHours(modifiedTo24StartTime, modifiedTo24EndTime);\r\n};\r\n\r\nconst calHours = (to24StartTime, to24EndTime) => {\r\n const timeSpan = getTimeSpan(\r\n to24StartTime.replace(/(am|pm)/i, ''),\r\n to24EndTime.replace(/(am|pm)/i, '')\r\n );\r\n\r\n const splitTime = timeSpan.split(':');\r\n const totalHours = parseInt(splitTime[0], 10);\r\n // Downstream code expects anything less than 1 hour to show as zero\r\n if (totalHours === 0) {\r\n return 0;\r\n }\r\n const minutes = parseInt(splitTime[1], 10);\r\n const partialHours = minutes / 60.0;\r\n\r\n return totalHours + partialHours;\r\n};\r\n\r\n/**\r\n * Calculate total cost\r\n *\r\n * @param {int} costOfSuperFrog Total hourly charge for Super Frog.\r\n * @param {int} costOfCheerleaders Total hourly charge for Cheerleaders.\r\n * @param {int} costOfShowgirls Total hourly charge for Showgirls.\r\n * @param {int} mileageCost Total for mileage\r\n * @param {int} totalHours Total hours for the event.\r\n *\r\n * @return {int} totalCost\r\n */\r\nexport function calculateTotalCost(\r\n costOfSuperFrog,\r\n costOfCheerleaders,\r\n costOfShowgirls,\r\n totalHours,\r\n mileageCost = 0\r\n) {\r\n let totalCost = 0;\r\n\r\n // if total hours are 0 then it means that we have a 30 minute timeframe\r\n if (totalHours === 0) {\r\n totalCost = costOfSuperFrog + costOfCheerleaders + costOfShowgirls + mileageCost;\r\n } else {\r\n totalCost =\r\n costOfSuperFrog * totalHours +\r\n costOfCheerleaders * totalHours +\r\n costOfShowgirls * totalHours +\r\n mileageCost;\r\n }\r\n\r\n return totalCost;\r\n}\r\n\r\n/**\r\n * Format Time to 12hour\r\n *\r\n * For frontend display only and if you have a VALID datetime string.\r\n * Mostly used for the dashboard when displaying content from the DB.\r\n *\r\n * FORMAT MUST BE IN ISO 8601\r\n *\r\n * @param {String} datetime\r\n */\r\nexport function formatTime(datetime) {\r\n const options = {\r\n hour: 'numeric',\r\n minute: 'numeric',\r\n hour12: true,\r\n timeZone: 'America/Chicago',\r\n };\r\n\r\n // return if we have an invalid time\r\n let validTime = Date.parse(datetime);\r\n\r\n if (isNaN(validTime)) {\r\n throw new Error('Date string is not in ISO 8601 Extended format');\r\n }\r\n\r\n let time = new Date(validTime).toLocaleString('en-US', options);\r\n return time;\r\n}\r\n/**\r\n * Return the value string for display.\r\n *\r\n * So instead of displaying public_nonprofit\r\n * we will display Public School/Non-Profit\r\n *\r\n * @param {String} value\r\n */\r\nexport function handleTypeName(string) {\r\n const types = typeNameOptions;\r\n let value = types.find((object) => object.name === string);\r\n\r\n if (value === null || value === undefined) {\r\n throw new Error(`'${string}' does not exist in array.`);\r\n }\r\n\r\n return value;\r\n}\r\n\r\nexport function handleDenyReasons(value) {\r\n const reasons = denyReasons;\r\n\r\n let reason = reasons.find((r) => r.name === value);\r\n\r\n if (reason === null || reason === undefined) {\r\n throw new Error(`'${value}' does not exist in array.`);\r\n }\r\n\r\n return reason;\r\n}\r\n\r\nexport function handleTeamSize(value) {\r\n const sizes = teamSizes;\r\n\r\n let size = sizes.find((s) => s.name === value);\r\n\r\n if (size === null || size === undefined) {\r\n throw new Error(`${value} does not exist in array.`);\r\n }\r\n\r\n return size;\r\n}\r\n\r\n/**\r\n * Creates a new array of objects\r\n *\r\n * This is mainly used in the calendar.\r\n * @param {Array} events Events coming from the database.\r\n * @param {bool} isBlackout True if it's a blackout time\r\n *\r\n * @return {Object} newEvents\r\n */\r\nexport function mapEvents(events, isBlackout = false) {\r\n let newEvents = [];\r\n newEvents = events.map((event) => {\r\n /**\r\n * If it's a blackout event then we do not need to add/subtract\r\n * and hour to it.\r\n *\r\n * let's take advantage of this check and add \"Reserved\" or \"Pending\"\r\n * if it's not a blackout.\r\n */\r\n let subtractHourStartTime = event.startTime;\r\n let addHourEndTime = event.endTime;\r\n\r\n // if it's a blackout then we want to display the actual title\r\n let eventTitle = event.blackoutName;\r\n\r\n if (!isBlackout) {\r\n subtractHourStartTime = new Date(event.startTime);\r\n subtractHourStartTime.setHours(subtractHourStartTime.getHours() - 1);\r\n addHourEndTime = new Date(event.endTime);\r\n addHourEndTime.setHours(addHourEndTime.getHours() + 1);\r\n eventTitle = event.isScheduled ? 'Reserved' : 'Pending';\r\n }\r\n\r\n return {\r\n title: eventTitle,\r\n start: event.isAllDay ? event.date : subtractHourStartTime,\r\n end: event.isAllDay ? event.endDate : addHourEndTime,\r\n allDay: event.isAllDay || false,\r\n };\r\n });\r\n\r\n return newEvents;\r\n}\r\n\r\n/**\r\n * Add any script tag to element.\r\n *\r\n * @param {Function} callback Callback function\r\n * @param {String} scriptId The scriptID to look if script exists\r\n * @param {String} url The URL to the script\r\n */\r\nexport function loadScript(callback, scriptId, url) {\r\n const existingScript = document.getElementById(scriptId);\r\n\r\n if (!existingScript) {\r\n const script = document.createElement('script');\r\n script.src = url; // URL for the third-party library being loaded.\r\n script.id = scriptId; // e.g., googleMaps or stripe\r\n document.body.appendChild(script);\r\n\r\n script.onload = () => {\r\n if (callback) callback();\r\n };\r\n }\r\n\r\n if (existingScript && callback) callback();\r\n}\r\n\r\n/**\r\n * Add GoogleMaps JavaScript API script with key\r\n *\r\n * @param {Function} callback Callback function\r\n */\r\nexport const loadGoogleMaps = (callback) => {\r\n const existingScript = document.getElementById('googleMaps');\r\n\r\n if (!existingScript) {\r\n const script = document.createElement('script');\r\n script.src =\r\n 'https://maps.googleapis.com/maps/api/js?key=AIzaSyBOImVk_2eT0c7jolJGExJhv44TEL-xe9M';\r\n script.id = 'googleMaps';\r\n document.body.appendChild(script);\r\n\r\n script.onload = () => {\r\n if (callback) callback();\r\n };\r\n }\r\n\r\n if (existingScript && callback) callback();\r\n};\r\n\r\nexport const checkStatus = (err, initialState, callback) => {\r\n if (err.status === 404) {\r\n callback({\r\n ...initialState,\r\n error: 'Page was not found.',\r\n });\r\n } else {\r\n callback({\r\n ...initialState,\r\n error: err.message,\r\n });\r\n }\r\n};\r\n","import React from 'react';\r\n\r\nconst Button = (props) => {\r\n return (\r\n \r\n {props.title}\r\n \r\n );\r\n};\r\n\r\nexport default Button;\r\n","import React, { useEffect } from 'react';\r\nimport Button from './Button';\r\nimport { handleTypeName, removeLeadingZero, formatDate, handleTeamSize } from './Utilities';\r\nimport Table from 'react-bootstrap/Table';\r\n\r\nfunction ReviewRequest({\r\n data,\r\n mileageRate,\r\n milesNum,\r\n handleAlertWindow,\r\n prevStep,\r\n totalHours,\r\n costOfSuperFrog,\r\n costOfCheerleaders,\r\n costOfShowgirls,\r\n totalCost,\r\n}) {\r\n /**\r\n * Go back to the form.\r\n */\r\n const back = (e) => {\r\n e.preventDefault();\r\n prevStep();\r\n };\r\n\r\n /**\r\n * Final form submission.\r\n * Send to sever.\r\n */\r\n const submit = (e) => {\r\n e.preventDefault();\r\n handleAlertWindow();\r\n };\r\n\r\n useEffect(() => {\r\n window.scrollTo(0, 0);\r\n });\r\n\r\n const eventTypeValue = handleTypeName(data.typeName);\r\n const cheerleadersSize = data.addCheerleaders ? handleTeamSize(data.cheerleadersSize) : '';\r\n const showgirlsSize = data.addShowgirls ? handleTeamSize(data.showgirlsSize) : '';\r\n\r\n return (\r\n
\r\n

Review your order

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

{'Date & Time'}

\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Event Date{formatDate(data.eventDate)}
Start Time{removeLeadingZero(data.startTime)}
End Time{removeLeadingZero(data.endTime)}
\r\n
\r\n
\r\n

{'Features'}

\r\n \r\n \r\n \r\n \r\n \r\n \r\n {data.addCheerleaders === 'true' || data.addCheerleaders === true ? (\r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n \r\n )}\r\n\r\n {data.addShowgirls === 'true' || data.addShowgirls === true ? (\r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n
SuperFrog{data.addSuperFrog ? 'Yes' : 'No'}
{`Cheerleading Team Size`}{cheerleadersSize.value}
{`Cheerleading Team Size`}None
{`Showgirls Team Size`}{showgirlsSize.value}
{`Showgirls Team Size`}None
\r\n
\r\n
\r\n\r\n
\r\n

Event Information

\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Event Name{data.eventName}
Organization{data.eventOrganization}
Event Type{eventTypeValue.value}
Any expenses or benefits to the spirit team members{data.expensesOrBenefits}
Outside organizations{data.otherOrganizations}
Description of Event{data.eventDescription}
Event Location{data.eventLocation}
\r\n
\r\n\r\n
\r\n
\r\n

Customer Information

\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Name: {`${data['customer.firstName']} ${data['customer.lastName']}`}
Phone: {data['customer.phoneNumber']}
Email: {data['customer.email']}
\r\n
\r\n
\r\n

Total Cost

\r\n \r\n \r\n \r\n \r\n \r\n\r\n {data.addCheerleaders === 'true' || data.addCheerleaders === true ? (\r\n \r\n \r\n \r\n ) : null}\r\n\r\n {data.addShowgirls === 'true' || data.addShowgirls === true ? (\r\n \r\n \r\n \r\n ) : null}\r\n\r\n {milesNum > 2 ? (\r\n \r\n \r\n \r\n ) : null}\r\n \r\n \r\n \r\n \r\n
\r\n {totalHours === 0\r\n ? `Super Frog Flat Rate: $${costOfSuperFrog}`\r\n : `Super Frog ($${costOfSuperFrog}.00) x ${totalHours}/hr`}\r\n
\r\n {totalHours === 0\r\n ? `Cheerleaders Hour Rate: $${costOfCheerleaders}`\r\n : `Cheerleaders ($${costOfCheerleaders}.00) x ${totalHours}/hr `}\r\n
\r\n {totalHours === 0\r\n ? `Showgirls Hourly Rate: $${costOfShowgirls} `\r\n : `Showgirls ($${costOfShowgirls}.00) x ${totalHours}/hr `}\r\n
{`Mileage Cost: ${milesNum} X ${mileageRate}`}
{`Total Cost: $${totalCost}`}
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default ReviewRequest;\r\n","import React, { useEffect } from 'react';\r\n\r\nfunction Success() {\r\n useEffect(() => {\r\n window.scrollTo(0, 0);\r\n });\r\n return (\r\n
\r\n

Thank you for submitting a request for TCU Spirit.

\r\n

Please check your e-mail for important information.

\r\n
\r\n );\r\n}\r\n\r\nexport default Success;\r\n","import { withFormsy } from 'formsy-react';\r\nimport React, { useRef, forwardRef, useImperativeHandle } from 'react';\r\n\r\nconst Input = (\r\n {\r\n setValue,\r\n getErrorMessage,\r\n showRequired,\r\n name,\r\n title,\r\n className,\r\n type,\r\n getValue,\r\n placeholder,\r\n spellCheck,\r\n autoCorrect,\r\n autoComplete,\r\n autoCapitalize,\r\n isPristine,\r\n },\r\n ref\r\n) => {\r\n const changeValue = (event) => {\r\n // setValue() will set the value of the component, which in\r\n // turn will validate it and the rest of the form\r\n // Important: Don't skip this step. This pattern is required\r\n // for Formsy to work.\r\n setValue(event.currentTarget.value);\r\n };\r\n\r\n const inputRef = useRef(null);\r\n\r\n useImperativeHandle(ref, () => ({\r\n /**\r\n * Adds focus to that form input.\r\n */\r\n handleFocus: () => {\r\n if (inputRef) {\r\n inputRef.current.focus();\r\n }\r\n },\r\n }));\r\n\r\n // An error message is returned only if the component is invalid\r\n const errorMessage = getErrorMessage();\r\n const requiredMessage = showRequired() ? 'Required field' : '';\r\n\r\n return (\r\n \r\n \r\n \r\n\r\n {!isPristine() && errorMessage ? (\r\n
{errorMessage}
\r\n ) : null}\r\n\r\n {!isPristine() && requiredMessage ? (\r\n
{requiredMessage}
\r\n ) : null}\r\n
\r\n );\r\n};\r\n\r\nexport default withFormsy(forwardRef(Input));\r\n","import React, { useState } from 'react';\r\nimport TimePicker from 'react-times';\r\nimport { convertTime12to24 } from './Utilities';\r\nimport 'react-times/css/classic/default.css';\r\nimport './styles/InputTime.scss';\r\n\r\nfunction InputTime({\r\n name,\r\n saveValueToState,\r\n dayOfTheWeek,\r\n value,\r\n title,\r\n color,\r\n initialTime,\r\n timeMode,\r\n errors,\r\n invalidDateTime,\r\n invalidEndTime,\r\n}) {\r\n const [time, setTime] = useState({\r\n hour: '',\r\n minute: '',\r\n meridiem: '',\r\n });\r\n const [touched, setTouched] = useState(false);\r\n const [focused] = useState(false);\r\n\r\n const onTimeChange = (options) => {\r\n const { hour, minute, meridiem } = options;\r\n setTime({ hour, minute, meridiem });\r\n\r\n let timeString = { [name]: '' };\r\n\r\n if (hour !== undefined || minute !== undefined || meridiem !== undefined) {\r\n timeString = { [name]: `${hour}:${minute} ${meridiem}` };\r\n }\r\n\r\n // must have this prop to save into local state\r\n saveValueToState(timeString, true);\r\n };\r\n\r\n const onFocusChange = () => {\r\n setTouched(true);\r\n };\r\n const { meridiem } = time;\r\n /**\r\n * If the user clicks the back button, we need to make sure\r\n * the time is displayed in 12 hour format.\r\n */\r\n const selectedTime = convertTime12to24(value);\r\n /**\r\n * Fridays & Saturdays allow time until 11pm\r\n */\r\n const lateTime = 23;\r\n\r\n /**\r\n * Sunday through Thursday allow until 9pm\r\n */\r\n const earlyTime = 21;\r\n\r\n /**\r\n * Dynamically update time depending on the day of the week\r\n */\r\n const maxTime = dayOfTheWeek === 5 || dayOfTheWeek === 6 ? lateTime : earlyTime;\r\n\r\n return (\r\n \r\n \r\n \r\n {touched && errors ? (\r\n \r\n {'Required field'}\r\n \r\n ) : null}\r\n {touched && invalidEndTime ? (\r\n \r\n {'End time must be greater than start time.'}\r\n \r\n ) : null}\r\n\r\n {touched && invalidDateTime ? (\r\n \r\n {\r\n 'TCU Spirit is unavailable for this date and time. Please try a different date and/or time.'\r\n }\r\n \r\n ) : null}\r\n \r\n );\r\n}\r\n\r\nexport default InputTime;\r\n","import 'react-big-calendar/lib/css/react-big-calendar.css';\r\nimport './styles/MyCalendar.scss';\r\nimport React from 'react';\r\nimport { Calendar, momentLocalizer } from 'react-big-calendar';\r\nimport moment from 'moment';\r\n\r\n// Setup the localizer by providing the moment (or globalize) Object\r\n// to the correct localizer.\r\nconst localizer = momentLocalizer(moment); // or globalizeLocalizer\r\n\r\nconst MyCalendar = ({\r\n selectable,\r\n events,\r\n views,\r\n handleSelect,\r\n handleSelectEvent,\r\n handleDrillDown,\r\n}) => {\r\n return (\r\n
\r\n event.allDay}\r\n startAccessor={(event) => moment(event.start).toDate()}\r\n endAccessor={(event) => moment(event.end).toDate()}\r\n titleAccessor={(event) => event.title}\r\n views={views}\r\n popup={true}\r\n onSelectSlot={handleSelect}\r\n onSelectEvent={handleSelectEvent || false}\r\n onDrillDown={handleDrillDown}\r\n />\r\n
\r\n );\r\n};\r\n\r\nexport default MyCalendar;\r\n","import React from 'react';\r\nimport { animations } from 'react-animation';\r\n\r\nconst CalendarPopup = (props) => {\r\n const { title, start, end, allDay, handleClick } = props;\r\n let options = {\r\n hour: '2-digit',\r\n minute: '2-digit',\r\n };\r\n return (\r\n
\r\n \r\n X | Close\r\n \r\n

{title}

\r\n \r\n {allDay ? (\r\n 'All day event'\r\n ) : (\r\n \r\n {`${new Date(start).toLocaleTimeString('en-US', options)} - ${new Date(\r\n end\r\n ).toLocaleTimeString('en-US', options)}`}\r\n \r\n )}\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default CalendarPopup;\r\n","import './styles/Loading.scss';\r\nimport React from 'react';\r\n\r\nconst Loading = () => {\r\n return
;\r\n};\r\nexport default Loading;\r\n","import './styles/form.scss';\r\nimport React, { useState, useRef } from 'react';\r\nimport Formsy from 'formsy-react';\r\nimport { addValidationRule } from 'formsy-react';\r\nimport Input from './Input';\r\nimport InputTime from './InputTime';\r\nimport Button from './Button';\r\nimport MyCalendar from './MyCalendar';\r\nimport CalendarPopup from './CalendarPopup';\r\nimport { formatDateFront } from './Utilities';\r\nimport Loading from './Loading';\r\nimport 'date-input-polyfill';\r\nimport { Link } from 'react-router-dom';\r\n\r\nfunction CalendarTime({\r\n saveValueToState,\r\n nextStep,\r\n invalidEndTime,\r\n invalidDateTime,\r\n data,\r\n scheduledEvents,\r\n isGame,\r\n blackoutsLoading,\r\n scheduledEventsLoading,\r\n}) {\r\n const [canSubmit, setCanSubmit] = useState(false);\r\n const [eventDetails, handleEventDetails] = useState({\r\n title: '',\r\n start: '',\r\n end: '',\r\n allDay: '',\r\n });\r\n const [open, setOpen] = useState({ isOpen: false });\r\n const childRef = useRef(null);\r\n /**\r\n * Easily navigate to the next step.\r\n */\r\n const forward = (data) => {\r\n saveValueToState(data);\r\n nextStep();\r\n };\r\n\r\n /**\r\n * Disable our continue button\r\n */\r\n const disableButton = () => {\r\n if (invalidDateTime || invalidEndTime) {\r\n setCanSubmit(false);\r\n }\r\n\r\n setCanSubmit(false);\r\n };\r\n\r\n /**\r\n * Enable our continue button\r\n */\r\n const enableButton = () => {\r\n if (!invalidEndTime || !invalidDateTime) {\r\n setCanSubmit(true);\r\n }\r\n };\r\n\r\n // Handles our popup window\r\n const handleSelectEvent = (event) => {\r\n setOpen({ isOpen: true });\r\n handleEventDetails({\r\n title: event.title,\r\n start: event.start,\r\n end: event.end,\r\n allDay: event.allDay,\r\n });\r\n };\r\n\r\n const handleClick = (event) => {\r\n const { name } = event.target;\r\n setOpen({\r\n [name]: false,\r\n });\r\n };\r\n\r\n /**\r\n * Validates timefields form fields.\r\n *\r\n * @param {String} subject The selected subject.\r\n * @param {String} course The selected course.\r\n */\r\n const validateRequiredFields = (startTime, endTime, eventDate) => {\r\n return {\r\n startTime: startTime === '12:00 AM',\r\n endTime: endTime === '12:00 AM',\r\n eventDate: eventDate === '',\r\n };\r\n };\r\n\r\n /**\r\n * Handles selection when user clicks a date\r\n */\r\n const handleSelect = ({ start }) => {\r\n const date = { eventDate: formatDateFront(start, 'YYYY-MM-DD') };\r\n saveValueToState(date);\r\n handleFocus();\r\n };\r\n\r\n /**\r\n * When you click on a number instead of a time slot\r\n * in the calendar.\r\n */\r\n const handleDrillDown = (date) => {\r\n const formattedDate = { eventDate: formatDateFront(date, 'YYYY-MM-DD') };\r\n saveValueToState(formattedDate);\r\n handleFocus();\r\n };\r\n\r\n // Adds focus to the eventDate field so\r\n // the user knows what's happening when they select a date\r\n // in the calendar\r\n const handleFocus = () => {\r\n if (childRef) {\r\n childRef.current.handleFocus();\r\n }\r\n };\r\n\r\n /**\r\n * Make sure user selects a date greater than 2 weeks from today\r\n */\r\n addValidationRule('greaterThanTwoWeeks', function (values, value) {\r\n const today = new Date();\r\n const twoWeeksOut = new Date(today.setDate(today.getDate() + 14));\r\n const selectedDate = new Date(`${value}T12:00`);\r\n\r\n return selectedDate > twoWeeksOut;\r\n });\r\n\r\n /**\r\n * Make sure user selects a date that is less than 3 months\r\n */\r\n addValidationRule('lessThanThreeMonths', function (values, value) {\r\n const today = new Date();\r\n const threeMonthsOut = new Date(today.setMonth(today.getMonth() + 3));\r\n const selectedDate = new Date(`${value}T12:00`);\r\n\r\n return selectedDate < threeMonthsOut;\r\n });\r\n\r\n const day = new Date(`${data.eventDate}T12:00`);\r\n const dayOfTheWeek = data.eventDate === '' ? 1 : day.getDay();\r\n\r\n /**\r\n * Since we are using Formsy we needed another way to make sure a user can not\r\n * continue if there was an error.\r\n *\r\n * So we first check if startTime, endTime or eventDate is empty since they are\r\n * required fields.\r\n */\r\n let errors = validateRequiredFields(data.startTime, data.endTime, data.eventDate);\r\n let isEnabled = false;\r\n if (!canSubmit) {\r\n isEnabled = false;\r\n } else if (Object.keys(errors).some((x) => errors[x]) || invalidEndTime || invalidDateTime) {\r\n isEnabled = false;\r\n } else {\r\n isEnabled = true;\r\n }\r\n\r\n return (\r\n
\r\n

Calendar & Available Dates

\r\n
    \r\n
  • \r\n Requests MUST be placed no later than 2 weeks prior to the appearance date, and\r\n no earlier than 3 months for consideration.\r\n
  • \r\n
  • \r\n Only requests within 100-mile radium from Amon G. Carter Stadium will be\r\n considered.\r\n
  • \r\n
\r\n\r\n

\r\n Read Full Pricing & Policies.\r\n

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

1. Choose A Date

\r\n\r\n
\r\n {scheduledEventsLoading || blackoutsLoading ? : null}\r\n \r\n\r\n {open.isOpen ? (\r\n \r\n ) : null}\r\n
\r\n\r\n
\r\n {isGame ? (\r\n
\r\n DAY BEFORE GAME DAY – Rates are higher.\r\n
\r\n ) : null}\r\n\r\n = scheduledDate &&\r\n validSelectedDate <= scheduledEndDate\r\n ) {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n return true;\r\n },\r\n }}\r\n validationErrors={{\r\n greaterThanTwoWeeks:\r\n 'Must select a date greater than two weeks. ',\r\n lessThanThreeMonths:\r\n 'Select date can not be greater than 3 months',\r\n isValidDate:\r\n 'TCU Spirit is unavailable for this date and time. Please try a different date and/or time.',\r\n }}\r\n />\r\n\r\n {invalidDateTime ? (\r\n \r\n {\r\n 'TCU Spirit is unavailable for this date and time. Please try a different date and/or time.'\r\n }\r\n \r\n ) : null}\r\n
\r\n
\r\n
\r\n

2. Select A Time

\r\n

\r\n This is the start and end time you’re requesting TCU Spirit to be ACTIVE\r\n at your event. See prices & terms linked above.\r\n

\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default CalendarTime;\r\n","import { withFormsy } from 'formsy-react';\r\nimport React from 'react';\r\n\r\nfunction CheckBox({ setValue, getErrorMessage, showRequired, title, name, getValue, isPristine }) {\r\n const changeValue = (event) => {\r\n // setValue() will set the value of the component, which in\r\n // turn will validate it and the rest of the form\r\n // Important: Don't skip this step. This pattern is required\r\n // for Formsy to work.\r\n setValue(event.target.checked);\r\n // setValue(event.currentTarget.value);\r\n };\r\n // An error message is returned only if the component is invalid\r\n const errorMessage = getErrorMessage();\r\n const requiredMessage = showRequired() ? `The ${title} field is required.` : '';\r\n return (\r\n \r\n
\r\n \r\n \r\n\r\n {errorMessage ?
{errorMessage}
: null}\r\n\r\n {!isPristine() && requiredMessage ? (\r\n
{requiredMessage}
\r\n ) : null}\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default withFormsy(CheckBox);\r\n","import { withFormsy } from 'formsy-react';\r\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\r\n\r\nconst Select = (\r\n {\r\n setValue,\r\n getErrorMessage,\r\n showRequired,\r\n name,\r\n getValue,\r\n placeholder,\r\n options,\r\n isPristine,\r\n title,\r\n },\r\n ref\r\n) => {\r\n const changeValue = (event) => {\r\n // setValue() will set the value of the component, which in\r\n // turn will validate it and the rest of the form\r\n // Important: Don't skip this step. This pattern is required\r\n // for Formsy to work.\r\n setValue(event.currentTarget.value);\r\n };\r\n\r\n const selectRef = useRef(null);\r\n\r\n useImperativeHandle(ref, () => ({\r\n /**\r\n * Adds focus to that form input.\r\n */\r\n handleFocus: () => {\r\n if (selectRef) {\r\n selectRef.current.focus();\r\n }\r\n },\r\n }));\r\n\r\n // An error message is returned only if the component is invalid\r\n const errorMessage = getErrorMessage();\r\n const requiredMessage = showRequired() ? 'Required field' : '';\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {options.map((option) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n\r\n {errorMessage ?
{errorMessage}
: null}\r\n\r\n {!isPristine() && requiredMessage ? (\r\n
{requiredMessage}
\r\n ) : null}\r\n
\r\n );\r\n};\r\n\r\nexport default withFormsy(forwardRef(Select));\r\n","export default __webpack_public_path__ + \"static/media/cheerleaders-small.eb07d4c3.jpg\";","export default __webpack_public_path__ + \"static/media/showgirls-small.977de278.jpg\";","export default __webpack_public_path__ + \"static/media/superfrog-small.200ce2b6.jpg\";","import { useState } from 'react';\r\n\r\n/**\r\n * Disable/Enable submit button\r\n * @returns Array [canSubmit, disableButton, enableButton]\r\n */\r\nfunction useSubmit() {\r\n const [canSubmit, setCanSubmit] = useState(false);\r\n\r\n /**\r\n * Disable our continue button\r\n */\r\n const disableButton = () => {\r\n setCanSubmit(false);\r\n };\r\n\r\n /**\r\n * Enable our continue button\r\n */\r\n const enableButton = () => {\r\n setCanSubmit(true);\r\n };\r\n\r\n return [canSubmit, disableButton, enableButton];\r\n}\r\n\r\nexport default useSubmit;\r\n","import './styles/features.scss';\r\nimport './styles/form.scss';\r\nimport React, { useRef, useEffect } from 'react';\r\nimport Formsy from 'formsy-react';\r\nimport CheckBox from './CheckBox';\r\nimport Select from './Select';\r\nimport Card from 'react-bootstrap/Card';\r\nimport Button from './Button';\r\nimport Cheerleaders from '../library/images/cheerleaders-small.jpg';\r\nimport Showgirls from '../library/images/showgirls-small.jpg';\r\nimport SuperFrog from '../library/images/superfrog-small.jpg';\r\nimport { Link } from 'react-router-dom';\r\nimport useSubmit from '../hooks/useSubmit';\r\n\r\nfunction Features({\r\n prevStep,\r\n hourlySFRate,\r\n data,\r\n nextStep,\r\n saveValueToState,\r\n typeNameOptions,\r\n eventSizes,\r\n}) {\r\n const [canSubmit, disableButton, enableButton] = useSubmit(false);\r\n const childSelect = useRef(null);\r\n\r\n useEffect(() => {\r\n if (childSelect) {\r\n childSelect.current.handleFocus();\r\n }\r\n }, []);\r\n\r\n /**\r\n * Easily navigate to the next step.\r\n */\r\n const forward = () => {\r\n nextStep();\r\n };\r\n\r\n /**\r\n * Easily navigate back.\r\n */\r\n const back = () => {\r\n prevStep();\r\n };\r\n\r\n const {\r\n typeName,\r\n addSuperFrog,\r\n addCheerleaders,\r\n addShowgirls,\r\n cheerleadersSize,\r\n showgirlsSize,\r\n } = data;\r\n return (\r\n
\r\n

Features

\r\n

\r\n Read Full Pricing & Policies.\r\n

\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n SuperFrog\r\n \r\n {typeName === '' ? '' : `$${hourlySFRate}/hr`}\r\n \r\n \r\n \r\n \r\n \r\n Cheerleaders\r\n \r\n {addCheerleaders ? (\r\n \r\n ) : null}\r\n \r\n \r\n \r\n \r\n \r\n Showgirls\r\n \r\n {addShowgirls ? (\r\n \r\n ) : null}\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n );\r\n}\r\n\r\nexport default Features;\r\n","export default __webpack_public_path__ + \"static/media/checked.88653514.svg\";","import './styles/Pagination.scss';\r\nimport CheckIcon from '../library/images/svg/checked.svg';\r\nimport React from 'react';\r\n\r\nconst Pagination = (props) => {\r\n const { step } = props;\r\n let total = 1;\r\n const stepTitles = [\r\n 'Select Date & Time',\r\n 'Chosen Feature',\r\n 'Complete Form',\r\n 'Policy Agreement',\r\n 'Review & Submit',\r\n ];\r\n\r\n return (\r\n
\r\n
\r\n
    \r\n {stepTitles.map((title) => {\r\n const currentClassName = total === step ? '_progress' : '';\r\n const completeClassName = total < step ? '_complete' : '';\r\n total = total + 1;\r\n return (\r\n
  • \r\n \r\n \r\n \"Check\r\n \r\n \r\n {title}\r\n
  • \r\n );\r\n })}\r\n
\r\n
\r\n );\r\n};\r\nexport default Pagination;\r\n","import React from 'react';\r\n\r\nconst ReviewTable = (props) => {\r\n return (\r\n \r\n {props.children}\r\n
\r\n );\r\n};\r\n\r\nexport default ReviewTable;\r\n","import { withFormsy } from 'formsy-react';\r\nimport React from 'react';\r\n\r\nfunction TextArea({\r\n getErrorMessage,\r\n showRequired,\r\n name,\r\n title,\r\n cols,\r\n rows,\r\n isPristine,\r\n getValue,\r\n setValue,\r\n}) {\r\n // An error message is returned only if the component is invalid\r\n const errorMessage = getErrorMessage();\r\n const requiredMessage = showRequired() ? 'Required field' : '';\r\n const changeValue = (event) => {\r\n // setValue() will set the value of the component, which in\r\n // turn will validate it and the rest of the form\r\n // Important: Don't skip this step. This pattern is required\r\n // for Formsy to work.\r\n setValue(event.currentTarget.value);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n {errorMessage ?
{errorMessage}
: null}\r\n\r\n {!isPristine() && requiredMessage ? (\r\n
{requiredMessage}
\r\n ) : null}\r\n
\r\n );\r\n}\r\n\r\nexport default withFormsy(TextArea);\r\n","import './styles/LoadingIcon.scss';\r\nimport React from 'react';\r\n\r\nconst LoadingIcon = () => {\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default LoadingIcon;\r\n","import React from 'react';\r\nimport { animations } from 'react-animation';\r\nimport Alert from 'react-bootstrap/Alert';\r\n\r\nconst SuccessMessage = ({ message }) => {\r\n return (\r\n \r\n {message}\r\n \r\n );\r\n};\r\n\r\nexport default SuccessMessage;\r\n","import React from 'react';\r\nimport { animations } from 'react-animation';\r\nimport Alert from 'react-bootstrap/Alert';\r\n\r\nconst ErrorMessage = (props) => {\r\n return (\r\n \r\n {props.message}\r\n \r\n );\r\n};\r\n\r\nexport default ErrorMessage;\r\n","import './styles/features.scss';\r\nimport './styles/form.scss';\r\nimport React, { useEffect, useRef, useState } from 'react';\r\nimport $ from 'jquery';\r\nimport 'jquery-mask-plugin';\r\nimport Formsy from 'formsy-react';\r\nimport CheckBox from './CheckBox';\r\nimport Button from './Button';\r\nimport ReviewTable from './ReviewTable';\r\nimport Input from './Input';\r\nimport TextArea from './TextArea';\r\nimport { removeLeadingZero, formatDate, handleTeamSize } from './Utilities';\r\nimport LoadingIcon from './LoadingIcon';\r\nimport SuccessMessage from './SuccessMessage';\r\nimport ErrorMessage from './ErrorMessage';\r\n\r\nfunction EventForm({\r\n saveValueToState,\r\n prevStep,\r\n invalidLocation,\r\n data,\r\n eventLocation,\r\n reviewRequest,\r\n locationDistance,\r\n saveInParentState,\r\n}) {\r\n const [canSubmit, setCanSubmit] = useState(false);\r\n const [google, setGoogle] = useState({\r\n invalidLocationMessage: '',\r\n validLocationMessage: '',\r\n onValidLocation: false,\r\n googleMapReady: false,\r\n onGoogleMapErr: false,\r\n googleMapErrMessage: '',\r\n googleMapLoading: false,\r\n jQueryLoaded: false,\r\n jQueryMaskLoaded: false,\r\n });\r\n const firstNameRef = useRef(null);\r\n\r\n useEffect(() => {\r\n $('.phone-number').mask('(000) 000-0000', {\r\n placeholder: '(555) 000-0000',\r\n });\r\n\r\n if (firstNameRef) {\r\n firstNameRef.current.handleFocus();\r\n }\r\n\r\n enableButton();\r\n }, [invalidLocation]);\r\n\r\n /**\r\n * Easily navigate back.\r\n */\r\n const back = () => {\r\n prevStep();\r\n };\r\n\r\n /**\r\n * Disable our continue button\r\n */\r\n const disableButton = () => {\r\n setCanSubmit(false);\r\n };\r\n\r\n /**\r\n * Enable our continue button\r\n */\r\n const enableButton = () => {\r\n const { onCampus } = data;\r\n // prevent to continue if location is invalid\r\n if (onCampus || !invalidLocation) {\r\n setCanSubmit(true);\r\n } else {\r\n setCanSubmit(false);\r\n }\r\n };\r\n\r\n const validateLocation = (e) => {\r\n e.preventDefault();\r\n const service = new window.google.maps.DistanceMatrixService();\r\n // let's make sure the address is within 100 miles\r\n let origin = '2850 Stadium Drive Fort Worth TX';\r\n\r\n // Make sure our loading icon is on\r\n setGoogle((prevState) => ({\r\n ...prevState,\r\n googleMapLoading: true,\r\n }));\r\n\r\n service.getDistanceMatrix(\r\n {\r\n origins: [origin],\r\n destinations: [eventLocation],\r\n travelMode: 'DRIVING',\r\n unitSystem: window.google.maps.UnitSystem.IMPERIAL,\r\n },\r\n handleGoogleMapCallback\r\n );\r\n };\r\n\r\n const handleGoogleMapCallback = (response, status) => {\r\n const MILES_METERS = 96561; // equals 60 miles\r\n if (status !== 'OK') {\r\n setGoogle({\r\n onGoogleMapErr: true,\r\n googleMapErrMessage: `Google Map Error: ${status}`,\r\n googleMapLoading: false,\r\n });\r\n\r\n return console.log(`Error was: ${status}`);\r\n }\r\n\r\n const distanceValue = response.rows[0].elements[0].distance.value;\r\n const distanceMiles = response.rows[0].elements[0].distance.text;\r\n const milesInt = Math.round(parseFloat(distanceMiles.split(' ')[0]));\r\n\r\n // invalid location -- too far!\r\n if (distanceValue > MILES_METERS) {\r\n setGoogle({\r\n invalidLocationMessage: 'Error: your location is beyond the 60 miles we serve.',\r\n googleMapLoading: false,\r\n });\r\n saveInParentState({ invalidLocation: true, locationDistance: milesInt });\r\n return;\r\n } else {\r\n // location is valid\r\n setGoogle({\r\n validLocationMessage: 'Your address is located within our service area.',\r\n onValidLocation: true,\r\n googleMapLoading: false,\r\n });\r\n saveInParentState({ invalidLocation: false, locationDistance: milesInt });\r\n setTimeout(function () {\r\n hideMessage('onValidLocation');\r\n }, 3000);\r\n }\r\n };\r\n\r\n /**\r\n * Hide Success Message\r\n */\r\n const hideMessage = (stateKey) => {\r\n setGoogle((prevState) => ({\r\n ...prevState,\r\n [stateKey]: false,\r\n }));\r\n };\r\n // TODO: This whole page should be refactored.\r\n // WARNING: Very likely to cause errors when updating! 🤢\r\n // because we are passing our data in hidden input values here AND in ReviewPolicies.js\r\n // SO MAKE SURE YOU UPDATE THE ReviewPolicies.js and EventForm.js SO IT CONTAINS ALL YOUR VALUES\r\n const cheerleadersSize = data.addCheerleaders ? handleTeamSize(data.cheerleadersSize) : '';\r\n const showgirlsSize = data.addShowgirls ? handleTeamSize(data.showgirlsSize) : '';\r\n return (\r\n \r\n

Tell Us About Your Event

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

Selected Date & Time

\r\n \r\n \r\n Date\r\n {formatDate(data.eventDate)}\r\n \r\n \r\n Start Time\r\n {removeLeadingZero(data.startTime)}\r\n \r\n \r\n End Time\r\n {removeLeadingZero(data.endTime)}\r\n \r\n \r\n
\r\n
\r\n

Chosen Features

\r\n \r\n \r\n SuperFrog\r\n {data.addSuperFrog ? 'Yes' : 'No'}\r\n \r\n \r\n Cheerleaders\r\n {data.addCheerleaders ? 'Yes' : 'No'}\r\n \r\n {data.addCheerleaders === 'true' || data.addCheerleaders === true ? (\r\n \r\n {`Cheerleading Team Size`}\r\n {cheerleadersSize.value}\r\n \r\n ) : null}\r\n \r\n Showgirls\r\n {data.addShowgirls ? 'Yes' : 'No'}\r\n \r\n {data.addShowgirls === 'true' || data.addShowgirls === true ? (\r\n \r\n {`Showgirls Team Size`}\r\n {showgirlsSize.value}\r\n \r\n ) : null}\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n

Personal Contact Information

\r\n

\r\n * Unless otherwise specified, the contact provided and their information\r\n will serve as our Spirit Squad member’s point-of-contact on the date of\r\n the event.\r\n

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

Event Information

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

On Campus?

\r\n \r\n
\r\n
\r\n {google.googleMapLoading ? : null}\r\n this.validateLocation(e)}\r\n required\r\n />\r\n\r\n {google.onGoogleMapErr ? (\r\n \r\n ) : null}\r\n\r\n {google.invalidLocation ? (\r\n \r\n ) : null}\r\n\r\n {google.onValidLocation ? (\r\n \r\n ) : null}\r\n\r\n {!data.onCampus ? (\r\n \r\n {/* eslint-disable-next-line */}\r\n \r\n *Validate Location\r\n \r\n

\r\n Validate if location is within 60-mile radius by entering\r\n the address and then clicking the "Validate\r\n Location" button.\r\n

\r\n
\r\n ) : null}\r\n\r\n

\r\n * Appearances are only available in the DFW area. If more than 2\r\n miles from TCU, a $0.75 per mile transportation fee will be included\r\n in the appearance total.\r\n

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

\r\n Special Instructions (Parking, gate code, location for spirit members to\r\n change/ keep belongings){' '}\r\n

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

Will there be a performance required? (Sound system must be provided)

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

Describe any expenses or benefits to the spirit team members

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

\r\n List any other outside organizations involved in sponsoring the event{' '}\r\n

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

\r\n Describe event happenings, special instructions for Spirit team members,\r\n etc\r\n

\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default EventForm;\r\n","import './styles/features.scss';\r\nimport './styles/form.scss';\r\nimport React from 'react';\r\nimport Formsy from 'formsy-react';\r\nimport CheckBox from './CheckBox';\r\nimport Button from './Button';\r\nimport Input from './Input';\r\nimport useSubmit from '../hooks/useSubmit';\r\n\r\nfunction ReviewPolicies({ data, saveValueToState, prevStep, reviewRequest }) {\r\n const [submit, disableButton, enableButton] = useSubmit();\r\n\r\n /**\r\n * Easily navigate back.\r\n */\r\n const back = () => {\r\n prevStep();\r\n };\r\n\r\n // TODO: This whole page should be refactored.\r\n // WARNING: Very likely to cause errors when updating! 🤢\r\n // because we are passing our data in hidden input values here AND in EventForm.js\r\n // SO MAKE SURE YOU UPDATE THE ReviewPolicies.js and EventForm.js SO IT CONTAINS ALL YOUR VALUES\r\n return (\r\n
\r\n \r\n
\r\n
    \r\n
  • \r\n Submission of a request does not guarantee the event will be accepted.\r\n TCU athletics takes priority over all other appearances.\r\n
  • \r\n
  • \r\n TCU Spirit has until 5 days prior the date of the event to accept or\r\n decline a request.\r\n
  • \r\n
  • \r\n Once approved via email, payment must be submitted a minimum of 24 hours\r\n prior to the event or it will be canceled.\r\n
  • \r\n
  • \r\n Even after an event is confirmed, it is still subjected to immediate\r\n cancellation due to a TCU Athletic Department function, weather or an\r\n emergency. Immediate notice will be given in the event of cancellation.\r\n
  • \r\n
  • \r\n The SuperFrog suit is{' '}\r\n \r\n NOT\r\n {' '}\r\n rented out to a third party.\r\n
  • \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n );\r\n}\r\nexport default ReviewPolicies;\r\n","import React from 'react';\r\n\r\nconst RequestLayout = ({ children }) => {\r\n return (\r\n
\r\n {children}\r\n
\r\n );\r\n};\r\n\r\nexport default RequestLayout;\r\n","export const ZERO_MILES = '0 mi';\r\nexport const MILAGE_RATE = 'MileageRate';\r\nexport const PRIVATE_BUSINESS = 'private_business';\r\nexport const PUBLIC_NONPROFIT = 'public_nonprofit';\r\n\r\n// Fees - SuperFrog\r\nexport const FLAT_FEE_SUPERFROG = 'FlatFeeSuperFrog';\r\nexport const GAME_FLAT_FEE_SUPERFROG = 'GameFlatFeeSuperFrog';\r\nexport const TCU_SUPERFROG = 'TcuSuperFrog';\r\nexport const GAME_TCU_SUPERFROG = 'GameTcuSuperFrog';\r\nexport const NONPROFIT_SUPERFROG = 'NonProfitSuperFrog';\r\nexport const GAME_NONPROFIT_SUPERFROG = 'GameNonProfitSuperFrog';\r\nexport const PRIVATE_SUPERFROG = 'PrivateProfitSuperFrog';\r\nexport const GAME_PRIVATE_SUPERFROG = 'GamePrivateSuperFrog';\r\n\r\n// Fees - Other Spirit Members\r\nexport const TCU_SMALL_GROUP = 'TcuSmallGroup';\r\nexport const TCU_LARGE_GROUP = 'TcuLargeGroup';\r\nexport const GAME_TCU_SMALL_GROUP = 'GameTcuSmallGroup';\r\nexport const GAME_TCU_LARGE_GROUP = 'GameTcuLargeGroup';\r\nexport const NONPROFIT_SMALL_GROUP = 'NonProfitSmallGroup';\r\nexport const NONPROFIT_LARGE_GROUP = 'NonProfitLargeGroup';\r\nexport const GAME_NONPROFIT_SMALL_GROUP = 'GameNonProfitSmallGroup';\r\nexport const GAME_NONPROFIT_LARGE_GROUP = 'GameNonProfitLargeGroup';\r\nexport const PRIVATE_SMALL_GROUP = 'PrivateSmallGroup';\r\nexport const PRIVATE_LARGE_GROUP = 'PrivateLargeGroup';\r\nexport const GAME_PRIVATE_SMALL_GROUP = 'GamePrivateSmallGroup';\r\nexport const GAME_PRIVATE_LARGE_GROUP = 'GamePrivateLargeGroup';\r\n\r\n// Sizes\r\nexport const GROUP_LARGE = 'LARGE';\r\nexport const GROUP_SMALL = 'SMALL';\r\n","import { useState, useEffect, useMemo } from 'react';\r\nimport { mapEvents } from '../components/Utilities';\r\n\r\n/**\r\n * Fetch all blackouts (api/blackouts) AND events (api/events/requested/true)\r\n *\r\n * Combine blackouts and events (use for calendar view)\r\n * @returns Object\r\n */\r\nfunction useScheduledAndBlackoutEvents() {\r\n const initial = useMemo(() => {\r\n const initial = {\r\n cleanEvents: [],\r\n events: [],\r\n userEventsLoading: true,\r\n blackoutsLoading: true,\r\n error: '',\r\n };\r\n return initial;\r\n }, []);\r\n const [currentEvents, setEvents] = useState(initial);\r\n\r\n useEffect(() => {\r\n /**\r\n * Get all blackouts\r\n */\r\n const getBlackouts = () => {\r\n fetch('api/blackouts')\r\n .then((rsp) => {\r\n if (rsp.statusText === 'Unauthorized') {\r\n setEvents((prevState) => ({\r\n ...prevState,\r\n error: 'Error: Unathorized to view this material.',\r\n }));\r\n }\r\n\r\n return rsp.json();\r\n })\r\n .then((blackouts) => {\r\n /**\r\n * Important: we are combining them here!\r\n *\r\n * TODO: I'll combine them on the server for my next step\r\n */\r\n let updatedBlackouts = mapEvents(blackouts, true);\r\n setEvents((prevState) => ({\r\n events: [...prevState.events, ...updatedBlackouts],\r\n blackoutsLoading: false,\r\n }));\r\n })\r\n /* eslint-disable-next-line */\r\n .catch((err) => console.log(err));\r\n };\r\n\r\n /**\r\n * Get last 3 months of events\r\n *\r\n * Let's grab all events, even new requests\r\n * but exclude IsDenied and IsCancelled\r\n *\r\n * We will display a \"pending\" message for those events\r\n * that are pending on approval from admin/captain\r\n *\r\n */\r\n const getUserEvents = () => {\r\n fetch('api/events/requested/true')\r\n .then((rsp) => {\r\n return rsp.json();\r\n })\r\n .then((events) => {\r\n /**\r\n * Important: we are combining them here!\r\n *\r\n * TODO: I'll combine them on the server for my next step\r\n */\r\n let updatedEvents = mapEvents(events);\r\n setEvents((prevState) => ({\r\n cleanEvents: events,\r\n events: [...updatedEvents, ...prevState.events],\r\n userEventsLoading: false,\r\n }));\r\n })\r\n /* eslint-disable-next-line */\r\n .catch((err) => console.log(err));\r\n };\r\n getBlackouts();\r\n getUserEvents();\r\n\r\n return function cleanup() {\r\n setEvents(initial);\r\n };\r\n }, [initial]);\r\n\r\n return currentEvents;\r\n}\r\n\r\nexport default useScheduledAndBlackoutEvents;\r\n","import { useState, useEffect, useMemo } from 'react';\r\n\r\n/**\r\n * Fetch all blackouts (api/blackouts) AND events (api/events/requested/true)\r\n *\r\n * Combine blackouts and events (use for calendar view)\r\n * @returns Object\r\n */\r\nfunction useScheduledAndBlackoutEventsData() {\r\n const initial = useMemo(() => {\r\n const initial = {\r\n cleanEvents: [],\r\n events: [],\r\n userEventsLoading: true,\r\n blackoutsLoading: true,\r\n error: '',\r\n };\r\n return initial;\r\n }, []);\r\n const [currentEvents, setEvents] = useState(initial);\r\n\r\n useEffect(() => {\r\n /**\r\n * Get all blackouts\r\n */\r\n const getBlackoutsData = () => {\r\n fetch('api/blackouts')\r\n .then((rsp) => {\r\n if (rsp.statusText === 'Unauthorized') {\r\n setEvents((prevState) => ({\r\n ...prevState,\r\n error: 'Error: Unathorized to view this material.',\r\n }));\r\n }\r\n\r\n return rsp.json();\r\n })\r\n .then((blackouts) => {\r\n /**\r\n * Important: we are combining them here!\r\n *\r\n * TODO: I'll combine them on the server for my next step\r\n */\r\n // let updatedBlackouts = mapEvents(blackouts, true);\r\n setEvents((prevState) => ({\r\n events: [...prevState.events, ...blackouts],\r\n blackoutsLoading: false,\r\n }));\r\n })\r\n /* eslint-disable-next-line */\r\n .catch((err) => console.log(err));\r\n };\r\n\r\n /**\r\n * Get last 3 months of events\r\n *\r\n * Let's grab all events, even new requests\r\n * but exclude IsDenied and IsCancelled\r\n *\r\n * We will display a \"pending\" message for those events\r\n * that are pending on approval from admin/captain\r\n *\r\n */\r\n const getUserEventsData = () => {\r\n fetch('api/events/requested/true')\r\n .then((rsp) => {\r\n return rsp.json();\r\n })\r\n .then((events) => {\r\n /**\r\n * Important: we are combining them here!\r\n *\r\n * TODO: I'll combine them on the server for my next step\r\n */\r\n // let updatedEvents = mapEvents(events);\r\n setEvents((prevState) => ({\r\n cleanEvents: events,\r\n events: [...events, ...prevState.events],\r\n userEventsLoading: false,\r\n }));\r\n })\r\n /* eslint-disable-next-line */\r\n .catch((err) => console.log(err));\r\n };\r\n getBlackoutsData();\r\n getUserEventsData();\r\n\r\n return function cleanup() {\r\n setEvents(initial);\r\n };\r\n }, [initial]);\r\n\r\n return currentEvents;\r\n}\r\n\r\nexport default useScheduledAndBlackoutEventsData;\r\n","import { useState, useEffect, useMemo } from 'react';\r\nimport {\r\n MILAGE_RATE,\r\n FLAT_FEE_SUPERFROG,\r\n GAME_FLAT_FEE_SUPERFROG,\r\n TCU_SUPERFROG,\r\n NONPROFIT_SUPERFROG,\r\n GAME_NONPROFIT_SUPERFROG,\r\n PRIVATE_SUPERFROG,\r\n GAME_PRIVATE_SUPERFROG,\r\n GAME_TCU_SUPERFROG,\r\n TCU_SMALL_GROUP,\r\n TCU_LARGE_GROUP,\r\n GAME_TCU_SMALL_GROUP,\r\n GAME_TCU_LARGE_GROUP,\r\n NONPROFIT_SMALL_GROUP,\r\n NONPROFIT_LARGE_GROUP,\r\n GAME_NONPROFIT_SMALL_GROUP,\r\n GAME_NONPROFIT_LARGE_GROUP,\r\n PRIVATE_SMALL_GROUP,\r\n PRIVATE_LARGE_GROUP,\r\n GAME_PRIVATE_SMALL_GROUP,\r\n GAME_PRIVATE_LARGE_GROUP,\r\n} from '../constants/Constants';\r\n\r\n/**\r\n * Fetch all costs/rates (api/items)\r\n *\r\n * This also filters and saves prices so we can easily use through out\r\n * @returns Object\r\n */\r\nconst useRates = () => {\r\n const initial = useMemo(() => {\r\n const initial = {\r\n items: [],\r\n error: null,\r\n loading: true,\r\n hourlyCost: 0,\r\n flatFeeSuperFrog: 0,\r\n gameFlatFeeSuperFrog: 0,\r\n tcuSuperFrog: 0,\r\n gameTcuSuperFrog: 0,\r\n nonProfitSuperFrog: 0,\r\n gameNonProfitSuperFrog: 0,\r\n privateSuperFrog: 0,\r\n gamePrivateSuperFrog: 0,\r\n tcuSmallGroup: 0,\r\n tcuLargeGroup: 0,\r\n gameTcuSmallGroup: 0,\r\n gameTcuLargeGroup: 0,\r\n nonProfitSmallGroup: 0,\r\n nonProfitLargeGroup: 0,\r\n gameNonProfitSmallGroup: 0,\r\n gameNonProfitLargeGroup: 0,\r\n privateSmallGroup: 0,\r\n privateLargeGroup: 0,\r\n gamePrivateSmallGroup: 0,\r\n gamePrivateLargeGroup: 0,\r\n mileageRate: 0,\r\n };\r\n return initial;\r\n }, []);\r\n const [rates, setRates] = useState(initial);\r\n\r\n useEffect(() => {\r\n /**\r\n *\r\n * Events that are ready to be scheduled\r\n */\r\n const getRates = async () => {\r\n fetch('api/items')\r\n .then((rsp) => {\r\n return rsp.json();\r\n })\r\n .then((items) => {\r\n const mileageRate = items.find((item) => item.descriptionId === MILAGE_RATE);\r\n\r\n filterRates(items);\r\n\r\n setRates((prevState) => ({\r\n ...prevState,\r\n items,\r\n hourlyCost: mileageRate,\r\n loading: false,\r\n }));\r\n })\r\n /* eslint-disable-next-line */\r\n .catch((err) => console.log(err));\r\n };\r\n const filterRates = (rates) => {\r\n if (rates.length === 0) return;\r\n const mileageRate = rates.find((item) => item.descriptionId === MILAGE_RATE);\r\n const flatFeeSuperFrog = rates.find(\r\n (item) => item.descriptionId === FLAT_FEE_SUPERFROG\r\n );\r\n const gameFlatFeeSuperFrog = rates.find(\r\n (item) => item.descriptionId === GAME_FLAT_FEE_SUPERFROG\r\n );\r\n const tcuSuperFrog = rates.find((item) => item.descriptionId === TCU_SUPERFROG);\r\n const gameTcuSuperFrog = rates.find(\r\n (item) => item.descriptionId === GAME_TCU_SUPERFROG\r\n );\r\n const nonProfitSuperFrog = rates.find(\r\n (item) => item.descriptionId === NONPROFIT_SUPERFROG\r\n );\r\n const gameNonProfitSuperFrog = rates.find(\r\n (item) => item.descriptionId === GAME_NONPROFIT_SUPERFROG\r\n );\r\n const privateSuperFrog = rates.find((item) => item.descriptionId === PRIVATE_SUPERFROG);\r\n const gamePrivateSuperFrog = rates.find(\r\n (item) => item.descriptionId === GAME_PRIVATE_SUPERFROG\r\n );\r\n const tcuSmallGroup = rates.find((item) => item.descriptionId === TCU_SMALL_GROUP);\r\n const tcuLargeGroup = rates.find((item) => item.descriptionId === TCU_LARGE_GROUP);\r\n const gameTcuSmallGroup = rates.find(\r\n (item) => item.descriptionId === GAME_TCU_SMALL_GROUP\r\n );\r\n const gameTcuLargeGroup = rates.find(\r\n (item) => item.descriptionId === GAME_TCU_LARGE_GROUP\r\n );\r\n\r\n // NonProfit Prices\r\n const nonProfitSmallGroup = rates.find(\r\n (item) => item.descriptionId === NONPROFIT_SMALL_GROUP\r\n );\r\n const nonProfitLargeGroup = rates.find(\r\n (item) => item.descriptionId === NONPROFIT_LARGE_GROUP\r\n );\r\n const gameNonProfitSmallGroup = rates.find(\r\n (item) => item.descriptionId === GAME_NONPROFIT_SMALL_GROUP\r\n );\r\n const gameNonProfitLargeGroup = rates.find(\r\n (item) => item.descriptionId === GAME_NONPROFIT_LARGE_GROUP\r\n );\r\n\r\n // Private Prices\r\n const privateSmallGroup = rates.find(\r\n (item) => item.descriptionId === PRIVATE_SMALL_GROUP\r\n );\r\n const privateLargeGroup = rates.find(\r\n (item) => item.descriptionId === PRIVATE_LARGE_GROUP\r\n );\r\n const gamePrivateSmallGroup = rates.find(\r\n (item) => item.descriptionId === GAME_PRIVATE_SMALL_GROUP\r\n );\r\n const gamePrivateLargeGroup = rates.find(\r\n (item) => item.descriptionId === GAME_PRIVATE_LARGE_GROUP\r\n );\r\n setRates((prevState) => ({\r\n ...prevState,\r\n mileageRate: mileageRate.hourlyCost,\r\n flatFeeSuperFrog: flatFeeSuperFrog.hourlyCost,\r\n gameFlatFeeSuperFrog: gameFlatFeeSuperFrog.hourlyCost,\r\n tcuSuperFrog: tcuSuperFrog.hourlyCost,\r\n gameTcuSuperFrog: gameTcuSuperFrog.hourlyCost,\r\n nonProfitSuperFrog: nonProfitSuperFrog.hourlyCost,\r\n gameNonProfitSuperFrog: gameNonProfitSuperFrog.hourlyCost,\r\n privateSuperFrog: privateSuperFrog.hourlyCost,\r\n gamePrivateSuperFrog: gamePrivateSuperFrog.hourlyCost,\r\n tcuSmallGroup: tcuSmallGroup.hourlyCost,\r\n tcuLargeGroup: tcuLargeGroup.hourlyCost,\r\n gameTcuSmallGroup: gameTcuSmallGroup.hourlyCost,\r\n gameTcuLargeGroup: gameTcuLargeGroup.hourlyCost,\r\n nonProfitSmallGroup: nonProfitSmallGroup.hourlyCost,\r\n nonProfitLargeGroup: nonProfitLargeGroup.hourlyCost,\r\n gameNonProfitSmallGroup: gameNonProfitSmallGroup.hourlyCost,\r\n gameNonProfitLargeGroup: gameNonProfitLargeGroup.hourlyCost,\r\n privateSmallGroup: privateSmallGroup.hourlyCost,\r\n privateLargeGroup: privateLargeGroup.hourlyCost,\r\n gamePrivateSmallGroup: gamePrivateSmallGroup.hourlyCost,\r\n gamePrivateLargeGroup: gamePrivateLargeGroup.hourlyCost,\r\n }));\r\n };\r\n\r\n getRates();\r\n\r\n return function cleanup() {\r\n setRates(initial);\r\n };\r\n }, [initial]);\r\n\r\n return rates;\r\n};\r\n\r\nexport default useRates;\r\n","import React from 'react';\r\n\r\nconst CancelRequest = () => {\r\n return (\r\n
\r\n

Request Canceled

\r\n

You must Agree to terms and Conditions. Your form was NOT submitted.

\r\n
\r\n );\r\n};\r\n\r\nexport default CancelRequest;\r\n","import './styles/form.scss';\r\nimport {\r\n convertTime12to24,\r\n removeLeadingZero,\r\n convert24timeToSeconds,\r\n loadGoogleMaps,\r\n typeNameOptions,\r\n teamSizes,\r\n calculateTotalHours,\r\n calculateTotalCost,\r\n} from './Utilities';\r\nimport React, { useEffect, useState } from 'react';\r\nimport ReviewRequest from './ReviewRequest';\r\nimport Success from './Success';\r\nimport CalendarTime from './CalendarTime';\r\nimport Features from './Features';\r\nimport Pagination from './Pagination';\r\nimport EventForm from './EventForm';\r\nimport ReviewPolicies from './ReviewPolicies';\r\nimport Popup from 'react-popup';\r\nimport RequestLayout from './RequestLayout';\r\n\r\nimport {\r\n ZERO_MILES,\r\n PRIVATE_BUSINESS,\r\n PUBLIC_NONPROFIT,\r\n GROUP_LARGE,\r\n GROUP_SMALL,\r\n} from '../constants/Constants';\r\nimport useScheduledAndBlackoutEvents from '../hooks/events-blackouts-hook';\r\nimport useScheduledAndBlackoutEventsData from '../hooks/events-blackouts-data-hooks';\r\nimport useRates from '../hooks/rates-hook';\r\nimport CancelRequest from './CancelRequest';\r\n\r\nfunction Request() {\r\n const [GoogleMapReady, setGoogleMap] = useState(false);\r\n const [step, setStep] = useState(1);\r\n const eventsAndBlackouts = useScheduledAndBlackoutEvents();\r\n const { events } = eventsAndBlackouts;\r\n const eventsAndBlackoutsData = useScheduledAndBlackoutEventsData();\r\n const rates = useRates();\r\n const [touched, setTouched] = useState({\r\n eventDate: false,\r\n startTime: false,\r\n endTime: false,\r\n });\r\n const [newRequest, setRequest] = useState({\r\n eventName: '',\r\n eventDescription: '',\r\n eventOrganization: '',\r\n eventLocation: '',\r\n otherOrganizations: '',\r\n eventInstructions: '',\r\n comments: '',\r\n typeName: '',\r\n addPerformance: false,\r\n addCheerleaders: false,\r\n addSuperFrog: true,\r\n onCampus: false,\r\n addShowgirls: false,\r\n cheerleadersSize: '',\r\n showgirlsSize: '',\r\n specialInstructions: '',\r\n expensesOrBenefits: '',\r\n eventDate: '',\r\n startTime: '12:00 AM',\r\n endTime: '12:00 AM',\r\n 'customer.firstName': '',\r\n 'customer.lastName': '',\r\n 'customer.phoneNumber': '',\r\n 'customer.email': '',\r\n totalCost: '',\r\n hourlySuperFrog: 0,\r\n hourlyCheerleaders: 0,\r\n hourlyShowgirls: 0,\r\n mileageCost: 0,\r\n miles: '0 mi',\r\n });\r\n const [isGame, setGame] = useState(false);\r\n const [invalidEndTime, setInvalidEndTime] = useState(false);\r\n const [invalidDateTime, setInvalidDateTime] = useState(false);\r\n const [distanceInfo, setLocationDistance] = useState({\r\n invalidLocation: true,\r\n locationDistance: 0,\r\n });\r\n const [totalHours, setTotalHours] = useState(false);\r\n const [eventSizes, setEventSizes] = useState(teamSizes);\r\n const [lastConfirmation, setLastConfirmation] = useState(false);\r\n const [data, setData] = useState([]);\r\n\r\n useEffect(() => {\r\n loadGoogleMaps(() => {\r\n setGoogleMap(true);\r\n });\r\n }, [GoogleMapReady]);\r\n\r\n useEffect(() => {\r\n setInvalidDateTime(validationExactTime());\r\n }, [newRequest]);\r\n\r\n /**\r\n * Easily navigate to the next step.\r\n */\r\n const nextStep = () => {\r\n setStep(step + 1);\r\n };\r\n\r\n /**\r\n * Easily navigate back.\r\n */\r\n const prevStep = () => {\r\n setStep(step - 1);\r\n };\r\n\r\n /**\r\n * Save value to this state from child component\r\n * @param {Object} value Object to save into state\r\n */\r\n const saveInParentState = (value) => {\r\n if (\r\n Object.prototype.hasOwnProperty.call(value, 'invalidLocation') ||\r\n Object.prototype.hasOwnProperty.call(value, 'locationDistance')\r\n ) {\r\n setLocationDistance(value);\r\n } else {\r\n setRequest((prevState) => ({ ...prevState, ...value }));\r\n }\r\n };\r\n\r\n /**\r\n * Save values to local state\r\n *\r\n * Dynamically update dropdowns, prices\r\n * and other behavior in the form\r\n *\r\n * @param {Object} currentValue Current form values.\r\n */\r\n const saveValueToState = (currentValue) => {\r\n let key = Object.keys(currentValue)[0];\r\n\r\n setRequest((prevState) => ({ ...prevState, ...currentValue }));\r\n setTouched((prevState) => ({ ...prevState, [key]: true }));\r\n\r\n if (\r\n Object.prototype.hasOwnProperty.call(currentValue, 'eventDate') ||\r\n Object.prototype.hasOwnProperty.call(currentValue, 'endTime') ||\r\n Object.prototype.hasOwnProperty.call(currentValue, 'startTime')\r\n ) {\r\n validateExactDateTime(currentValue);\r\n }\r\n\r\n // check that we are only checking the\r\n // eventDate key\r\n if (Object.prototype.hasOwnProperty.call(currentValue, 'eventDate')) {\r\n setGame(checkIsGame(currentValue));\r\n }\r\n\r\n // let's update the dropdown menu prices of our spirit members\r\n if (Object.prototype.hasOwnProperty.call(currentValue, 'typeName')) {\r\n updateTeamSizeDropdown(currentValue);\r\n handleSFHourlyRate();\r\n }\r\n\r\n // calculate cheerleaders or showgirls rate\r\n if (Object.prototype.hasOwnProperty.call(currentValue, 'cheerleadersSize')) {\r\n handleCheerleadersHourlyRate();\r\n }\r\n // calculate cheerleaders or showgirls rate\r\n if (Object.prototype.hasOwnProperty.call(currentValue, 'showgirlsSize')) {\r\n handleShowgirlsHourlyRate();\r\n }\r\n\r\n if (Object.prototype.hasOwnProperty.call(currentValue, 'endTime')) {\r\n validateEndTime(currentValue);\r\n }\r\n\r\n if (Object.prototype.hasOwnProperty.call(currentValue, 'onCampus')) {\r\n handleLocation(currentValue);\r\n }\r\n };\r\n\r\n /**\r\n * Reset miles if user changes their mind\r\n * and wants to move the location to onCampus\r\n *\r\n * @param {Object} value The onCampus value from form\r\n */\r\n const handleLocation = (value) => {\r\n const { onCampus } = value;\r\n const { miles } = newRequest;\r\n\r\n // We do not validate\r\n // If miles > 0 then we reset back to 0\r\n // clear location string\r\n if (onCampus) {\r\n if (distanceInfo.locationDistance > 0) {\r\n setLocationDistance((prevState) => ({ ...prevState, locationDistance: 0 }));\r\n }\r\n\r\n if (miles !== ZERO_MILES) {\r\n setRequest((prevState) => ({ ...prevState, miles: 0 }));\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Set SuperFrog hourly rate\r\n */\r\n const handleSFHourlyRate = () => {\r\n const { startTime, endTime } = newRequest;\r\n const totalHours = calculateTotalHours(startTime, endTime);\r\n const calIf30MinFlatFee = totalHours === 0 ? true : false;\r\n const costOfSuperFrog = handleSuperFrogCost(newRequest.typeName, calIf30MinFlatFee);\r\n\r\n setRequest((prevState) => ({ ...prevState, hourlySuperFrog: costOfSuperFrog }));\r\n setTotalHours(totalHours);\r\n };\r\n\r\n /**\r\n * set cheerleader's hourly rate\r\n */\r\n const handleCheerleadersHourlyRate = () => {\r\n const { addCheerleaders, cheerleadersSize, typeName } = newRequest;\r\n const costOfCheerleaders = handleOtherSpiritMembersCost(\r\n addCheerleaders,\r\n cheerleadersSize,\r\n typeName\r\n );\r\n setRequest((prevState) => ({ ...prevState, hourlyCheerleaders: costOfCheerleaders }));\r\n };\r\n\r\n /**\r\n * set showgirl's hourly rate\r\n */\r\n const handleShowgirlsHourlyRate = () => {\r\n const { addShowgirls, showgirlsSize, typeName } = newRequest;\r\n const costofShowgirls = handleOtherSpiritMembersCost(addShowgirls, showgirlsSize, typeName);\r\n setRequest((prevState) => ({ ...prevState, hourlyShowgirls: costofShowgirls }));\r\n };\r\n\r\n /**\r\n * Make sure endTime is greater than startTime\r\n *\r\n *@param {Object} currentValue The current value\r\n */\r\n const validateEndTime = (currentValue) => {\r\n const { startTime } = newRequest;\r\n const { endTime } = currentValue;\r\n const startTime24 = convertTime12to24(removeLeadingZero(startTime));\r\n const endTime24 = convertTime12to24(removeLeadingZero(endTime));\r\n const startTimeSeconds = convert24timeToSeconds(startTime24);\r\n const endTimeSeconds = convert24timeToSeconds(endTime24);\r\n\r\n if (startTimeSeconds > endTimeSeconds) {\r\n setInvalidEndTime(true);\r\n } else {\r\n setInvalidEndTime(false);\r\n }\r\n };\r\n\r\n /**\r\n * We are looking at the startTime, endTime and eventDate\r\n * and validating against our scheduledEvents (which also includes blackouts)\r\n *\r\n * @param {Object} currentValue The current selected value\r\n *\r\n * @return {bool}\r\n */\r\n const validateExactDateTime = (currentValue) => {\r\n if (Object.prototype.hasOwnProperty.call(currentValue, 'endTime')) {\r\n setRequest((prevState) => ({ ...prevState, endTime: currentValue.endTime }));\r\n }\r\n\r\n if (Object.prototype.hasOwnProperty.call(currentValue, 'startTime')) {\r\n setRequest((prevState) => ({ ...prevState, startTime: currentValue.startTime }));\r\n }\r\n\r\n if (Object.prototype.hasOwnProperty.call(currentValue, 'eventDate')) {\r\n setRequest((prevState) => ({ ...prevState, eventDate: currentValue.eventDate }));\r\n }\r\n };\r\n\r\n const validationExactTime = () => {\r\n const startTime24 = convertTime12to24(newRequest.startTime);\r\n const endTime24 = convertTime12to24(newRequest.endTime);\r\n\r\n // const { scheduledEvents } = events;\r\n\r\n // let's create a valid date from all three elements\r\n const selectedStartDateTime = new Date(`${newRequest.eventDate}T${startTime24}`);\r\n const selectedEndDateTime = new Date(`${newRequest.eventDate}T${endTime24}`);\r\n\r\n // let's loop through scheduledEvents and check if it falls between\r\n // an already scheduled event\r\n for (let k in events) {\r\n if (!events[k].allDay) {\r\n let scheduledStartDate = new Date(events[k].start);\r\n let scheduledEndDate = new Date(events[k].end);\r\n if (\r\n selectedStartDateTime >= scheduledStartDate &&\r\n selectedStartDateTime <= scheduledEndDate\r\n ) {\r\n return true;\r\n }\r\n\r\n if (\r\n selectedEndDateTime >= scheduledStartDate &&\r\n selectedEndDateTime <= scheduledEndDate\r\n ) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n };\r\n\r\n /**\r\n * Update the dropdown menu that contains prices\r\n *\r\n * For display only\r\n */\r\n const updateTeamSizeDropdown = (typename) => {\r\n const { typeName } = typename;\r\n // TCU Prices\r\n const {\r\n tcuSmallGroup,\r\n tcuLargeGroup,\r\n gameTcuSmallGroup,\r\n gameTcuLargeGroup,\r\n nonProfitSmallGroup,\r\n nonProfitLargeGroup,\r\n gameNonProfitSmallGroup,\r\n gameNonProfitLargeGroup,\r\n privateSmallGroup,\r\n privateLargeGroup,\r\n gamePrivateSmallGroup,\r\n gamePrivateLargeGroup,\r\n } = rates;\r\n\r\n if (isGame) {\r\n // is it a private event?\r\n if (typeName === PRIVATE_BUSINESS) {\r\n setEventSizes([\r\n {\r\n name: 'small',\r\n value: `Small Team (2-3 members) $${gamePrivateSmallGroup}/hr`,\r\n },\r\n {\r\n name: 'large',\r\n value: `Large Team (4-6 members) $${gamePrivateLargeGroup}/hr`,\r\n },\r\n ]);\r\n } else if (typeName === PUBLIC_NONPROFIT) {\r\n setEventSizes([\r\n {\r\n name: 'small',\r\n value: `Small Team (2-3 members) $${gameNonProfitSmallGroup}/hr`,\r\n },\r\n {\r\n name: 'large',\r\n value: `Large Team (4-6 members) $${gameNonProfitLargeGroup}/hr`,\r\n },\r\n ]);\r\n } else {\r\n // should be TCU type\r\n setEventSizes([\r\n {\r\n name: 'small',\r\n value: `Small Team (2-3 members) $${gameTcuSmallGroup}/hr`,\r\n },\r\n {\r\n name: 'large',\r\n value: `Large Team (4-6 members) $${gameTcuLargeGroup}/hr`,\r\n },\r\n ]);\r\n }\r\n }\r\n\r\n if (!isGame) {\r\n // is it a private event?\r\n if (typeName === PRIVATE_BUSINESS) {\r\n setEventSizes([\r\n {\r\n name: 'small',\r\n value: `Small Team (2-3 members) $${privateSmallGroup}/hr`,\r\n },\r\n {\r\n name: 'large',\r\n value: `Large Team (4-6 members) $${privateLargeGroup}/hr`,\r\n },\r\n ]);\r\n } else if (typeName === PUBLIC_NONPROFIT) {\r\n setEventSizes([\r\n {\r\n name: 'small',\r\n value: `Small Team (2-3 members) ${nonProfitSmallGroup}/hr`,\r\n },\r\n {\r\n name: 'large',\r\n value: `Large Team (4-6 members) $${nonProfitLargeGroup}/hr`,\r\n },\r\n ]);\r\n } else {\r\n // is TCU type\r\n\r\n setEventSizes([\r\n {\r\n name: 'small',\r\n value: `Small Team (2-3 members) ${tcuSmallGroup}/hr`,\r\n },\r\n {\r\n name: 'large',\r\n value: `Large Team (4-6 members) $${tcuLargeGroup}/hr`,\r\n },\r\n ]);\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Let's check if our selected date is the day before a ball game\r\n *\r\n * @param {Object} currentValue The eventDate current value\r\n *\r\n * @return bool\r\n */\r\n const checkIsGame = (currentValue) => {\r\n const { eventDate } = currentValue;\r\n // the \"-\" character makes it an invalid date\r\n const formattedDate = eventDate.replace(/-/g, '/');\r\n const blackouts = eventsAndBlackoutsData.events;\r\n const validDate = new Date(`${formattedDate} 12:00 AM`);\r\n\r\n // loop through blackouts\r\n for (var i = 0; i < blackouts.length; i++) {\r\n // check if validDate is the day before blackout && blackout isGame\r\n let blackoutDate = new Date(blackouts[i].date);\r\n let dayBefore = new Date(blackoutDate.setDate(blackoutDate.getDate() - 1));\r\n if (validDate.toDateString() === dayBefore.toDateString() && blackouts[i].isGame) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n\r\n /**\r\n * Let's figure out the hourly rate for SuperFrog.\r\n *\r\n * @param {string} eventType The type of event selected in our form.\r\n */\r\n const handleSuperFrogCost = (eventType, is30FlatFee) => {\r\n const { addSuperFrog } = newRequest;\r\n // Hourly Rates - from DB\r\n const {\r\n flatFeeSuperFrog,\r\n gameFlatFeeSuperFrog,\r\n tcuSuperFrog,\r\n gameTcuSuperFrog,\r\n nonProfitSuperFrog,\r\n gameNonProfitSuperFrog,\r\n privateSuperFrog,\r\n gamePrivateSuperFrog,\r\n } = rates;\r\n\r\n //Did we decide to keep superFrog?\r\n if (addSuperFrog) {\r\n // 1. figure out if this event falls on a day before a game\r\n if (isGame) {\r\n // pricing for day before a game\r\n if (is30FlatFee) {\r\n return gameFlatFeeSuperFrog;\r\n }\r\n\r\n if (eventType === PRIVATE_BUSINESS) {\r\n return gamePrivateSuperFrog;\r\n }\r\n\r\n if (eventType === PUBLIC_NONPROFIT) {\r\n return gameNonProfitSuperFrog;\r\n }\r\n // means event type is TCU\r\n return gameTcuSuperFrog;\r\n }\r\n\r\n if (!isGame) {\r\n // let's figure out if it's 30 minutes\r\n // because it's only a flat fee\r\n if (is30FlatFee) {\r\n return flatFeeSuperFrog;\r\n }\r\n\r\n // Let's check if it's a private event\r\n // because it's $175 an hour for private events\r\n if (eventType === PRIVATE_BUSINESS) {\r\n return privateSuperFrog;\r\n }\r\n\r\n if (eventType === PUBLIC_NONPROFIT) {\r\n return nonProfitSuperFrog;\r\n }\r\n\r\n // means event type is TCU\r\n return tcuSuperFrog;\r\n }\r\n } else {\r\n // no charge\r\n return 0;\r\n }\r\n };\r\n\r\n /**\r\n * Let's figure out the hourly cost for our cheerleaders/showgirls\r\n *\r\n * @param {bool} ifAvailable Use to check if cheerleaders or showgirls are selected.\r\n * @param {string} key Use to check the team size.\r\n * @param {string} eventType The event type which determines the price of the team\r\n *\r\n * @return {int} cost\r\n */\r\n const handleOtherSpiritMembersCost = (ifAvailable, key, eventType = PUBLIC_NONPROFIT) => {\r\n // TCU Prices\r\n const {\r\n tcuSmallGroup,\r\n tcuLargeGroup,\r\n gameTcuSmallGroup,\r\n gameTcuLargeGroup,\r\n nonProfitSmallGroup,\r\n nonProfitLargeGroup,\r\n gameNonProfitSmallGroup,\r\n gameNonProfitLargeGroup,\r\n privateSmallGroup,\r\n privateLargeGroup,\r\n gamePrivateSmallGroup,\r\n gamePrivateLargeGroup,\r\n } = rates;\r\n\r\n if (ifAvailable) {\r\n if (isGame) {\r\n // is it a private event?\r\n if (eventType === PRIVATE_BUSINESS) {\r\n // we want cheerleaders or showgirls!! woot woot!\r\n // but, do we want a small or large team?\r\n if (key.toUpperCase() === GROUP_LARGE) {\r\n return gamePrivateLargeGroup;\r\n } else if (key.toUpperCase() === GROUP_SMALL) {\r\n return gamePrivateSmallGroup;\r\n }\r\n } else if (eventType === PUBLIC_NONPROFIT) {\r\n // we want cheerleaders or showgirls!! woot woot!\r\n // but, do we want a small or large team?\r\n if (key.toUpperCase() === GROUP_LARGE) {\r\n return gameNonProfitLargeGroup;\r\n } else if (key.toUpperCase() === GROUP_SMALL) {\r\n return gameNonProfitSmallGroup;\r\n }\r\n } else {\r\n // else is TCU Type\r\n if (key.toUpperCase() === GROUP_LARGE) {\r\n return gameTcuLargeGroup;\r\n } else if (key.toUpperCase() === GROUP_SMALL) {\r\n return gameTcuSmallGroup;\r\n }\r\n }\r\n }\r\n\r\n if (!isGame) {\r\n // is it a private event?\r\n if (eventType === PRIVATE_BUSINESS) {\r\n // we want cheerleaders or showgirls!! woot woot!\r\n // but, do we want a small or large team?\r\n if (key.toUpperCase() === GROUP_LARGE) {\r\n return privateLargeGroup;\r\n } else if (key.toUpperCase() === GROUP_SMALL) {\r\n return privateSmallGroup;\r\n }\r\n } else if (eventType === PUBLIC_NONPROFIT) {\r\n // we want cheerleaders or showgirls!! woot woot!\r\n // but, do we want a small or large team?\r\n if (key.toUpperCase() === GROUP_LARGE) {\r\n return nonProfitLargeGroup;\r\n } else if (key.toUpperCase() === GROUP_SMALL) {\r\n return nonProfitSmallGroup;\r\n }\r\n } else {\r\n // else is TCU Type\r\n if (key.toUpperCase() === GROUP_LARGE) {\r\n return tcuLargeGroup;\r\n } else if (key.toUpperCase() === GROUP_SMALL) {\r\n return tcuSmallGroup;\r\n }\r\n }\r\n }\r\n } else {\r\n // no charge\r\n return 0;\r\n }\r\n };\r\n\r\n /**\r\n * Before we submit our form\r\n * let's make sure the user can review it.\r\n *\r\n *\r\n * @param {Object} data Our form input.\r\n */\r\n const reviewRequest = (data) => {\r\n const { hourlySuperFrog, hourlyCheerleaders, hourlyShowgirls, miles } = newRequest;\r\n const { hourlyCost } = rates.hourlyCost;\r\n // if more than 2 miles from TCU, a $0.75 per mile transportation fee will be included in the appearance total\r\n const milesNum = miles <= 2 ? 0 : miles;\r\n const totalMileageCost = milesNum * hourlyCost;\r\n\r\n // Calculate tota cost\r\n const totalCost = calculateTotalCost(\r\n hourlySuperFrog,\r\n hourlyCheerleaders,\r\n hourlyShowgirls,\r\n totalHours,\r\n totalMileageCost\r\n );\r\n\r\n setStep(step + 1);\r\n setRequest((prevState) => ({ ...prevState, totalCost, mileageCost: totalMileageCost }));\r\n\r\n // copy newRequest because some keys are strings\r\n // we needed to clean that\r\n setData(data);\r\n };\r\n\r\n const handleCancelForm = () => {\r\n setStep(step + 1);\r\n setLastConfirmation(false);\r\n };\r\n\r\n /**\r\n * handle the display of alert window\r\n */\r\n const handleAlertWindow = () => {\r\n // Let's create another alert with a summary of the policies\r\n const policyMessage =\r\n '1.) Submission of a request does not guarantee the event will be accepted. TCU athletics takes priority over all other appearances.\\n 2.) TCU Spirit has until 5 days prior the date of the event to accept or decline a request.\\n 3.) Once approved via email, payment must be submitted a minimum of 24 hours prior to the event or it will be canceled.\\n 4.) Even after an event is confirmed, it is still subjected to immediate cancellation due to a TCU Athletic Department function, weather or an emergency. Immediate notice will be given in the event of cancellation.\\n 5.) The SuperFrog suit is NOT rented out to a third party.';\r\n\r\n Popup.create({\r\n title: 'Agree to Terms & Conditions',\r\n content: policyMessage,\r\n buttons: {\r\n left: [\r\n {\r\n text: 'Cancel',\r\n className: 'danger',\r\n action: function () {\r\n Popup.alert(\r\n 'You pressed the Cancel button and will return back to the form.'\r\n );\r\n\r\n /** Close this popup. Close will always close the current visible one, if one is visible */\r\n Popup.close();\r\n },\r\n },\r\n ],\r\n right: [\r\n {\r\n text: 'I do not agree',\r\n key: 'ctrl+enter',\r\n action: function () {\r\n // Passing true as the second argument to the create method\r\n // displays it directly, without interupting the queue.\r\n Popup.create(\r\n {\r\n title: 'I do not agree',\r\n content:\r\n 'Are you sure you do not agree with our terms and conditions? This action will cancel your form and delete all your data.',\r\n buttons: {\r\n left: ['cancel'],\r\n right: [\r\n {\r\n text: 'Continue',\r\n className: 'danger',\r\n action: function () {\r\n handleCancelForm();\r\n // clear queue\r\n Popup.clearQueue();\r\n\r\n /** Close this popup. Close will always close the current visible one, if one is visible */\r\n Popup.close();\r\n },\r\n },\r\n ],\r\n },\r\n },\r\n true\r\n );\r\n },\r\n },\r\n {\r\n text: 'I Agree',\r\n className: 'success',\r\n action: function () {\r\n sendToServer();\r\n\r\n /** Close this popup. Close will always close the current visible one, if one is visible */\r\n Popup.close();\r\n },\r\n },\r\n ],\r\n },\r\n });\r\n };\r\n\r\n /**\r\n * Make a POST request.\r\n * Send to server!\r\n *\r\n * Includes our data object with the user input.\r\n *\r\n * */\r\n const sendToServer = () => {\r\n setStep(step + 1);\r\n const { startTime, endTime, eventDate } = data;\r\n\r\n // convert startTime and endTime\r\n // since database requires 24 hour format\r\n const modifiedTo24StartTime = convertTime12to24(removeLeadingZero(startTime));\r\n const modifiedTo24EndTime = convertTime12to24(removeLeadingZero(endTime));\r\n\r\n // send to server\r\n const value = {\r\n ...data,\r\n eventDate: `${eventDate} 12:00 AM`,\r\n startTime: `${eventDate} ${modifiedTo24StartTime}`,\r\n endTime: `${eventDate} ${modifiedTo24EndTime}`,\r\n };\r\n\r\n // Post event to database\r\n fetch('api/events', {\r\n method: 'POST',\r\n credentials: 'same-origin',\r\n headers: {\r\n Accept: 'application/json',\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(value),\r\n })\r\n .then((response) => {\r\n if (response.ok) {\r\n setLastConfirmation(true);\r\n }\r\n })\r\n /* eslint-disable-next-line */\r\n .catch((error) => console.log(error));\r\n };\r\n\r\n switch (step) {\r\n case 1:\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n case 2:\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n case 3:\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n case 4:\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n case 5:\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n case 6:\r\n return (\r\n \r\n {lastConfirmation ? : }\r\n \r\n );\r\n default:\r\n // nothing\r\n break;\r\n }\r\n}\r\n\r\nexport default Request;\r\n","/**\r\n * Define user role rules for our users\r\n *\r\n * Format: resource:action\r\n * - create\r\n * - read\r\n * - update\r\n * - delete\r\n */\r\nconst rules = {\r\n student: {\r\n static: ['my-events:read', 'pending-events:read', 'pending-events:update', 'items:read'],\r\n },\r\n // client wants captain to have the same access as admin\r\n captain: {\r\n static: [\r\n 'new-events:read',\r\n 'assigned-events:read',\r\n 'scheduled-events:read',\r\n 'pending-events:update',\r\n 'pending-events:read',\r\n 'denied-events:read',\r\n 'cancelled-events:read',\r\n 'events:update',\r\n 'customers:update',\r\n 'payroll:update',\r\n 'blackouts:update',\r\n 'blackouts:delete',\r\n 'blackouts:create',\r\n 'employees:update',\r\n 'employees:delete',\r\n 'employees:create',\r\n 'participants:update',\r\n 'items:update',\r\n 'items:create',\r\n 'items:delete',\r\n 'items:read',\r\n ],\r\n },\r\n admin: {\r\n static: [\r\n 'new-events:read',\r\n 'assigned-events:read',\r\n 'scheduled-events:read',\r\n 'pending-events:update',\r\n 'pending-events:read',\r\n 'denied-events:read',\r\n 'cancelled-events:read',\r\n 'events:update',\r\n 'customers:update',\r\n 'payroll:update',\r\n 'blackouts:update',\r\n 'blackouts:delete',\r\n 'blackouts:create',\r\n 'employees:update',\r\n 'employees:delete',\r\n 'employees:create',\r\n 'participants:update',\r\n 'items:update',\r\n 'items:create',\r\n 'items:delete',\r\n 'items:read',\r\n ],\r\n },\r\n superAdmin: {\r\n static: [\r\n 'new-events:read',\r\n 'assigned-events:read',\r\n 'scheduled-events:read',\r\n 'pending-events:update',\r\n 'pending-events:read',\r\n 'denied-events:read',\r\n 'cancelled-events:read',\r\n 'events:update',\r\n 'customers:update',\r\n 'payroll:update',\r\n 'blackouts:update',\r\n 'blackouts:delete',\r\n 'blackouts:create',\r\n 'employees:update',\r\n 'employees:delete',\r\n 'employees:create',\r\n 'participants:update',\r\n 'items:update',\r\n 'items:create',\r\n 'items:delete',\r\n 'items:read',\r\n ],\r\n },\r\n};\r\n\r\nexport default rules;\r\n","import rules from '../user-rules';\r\n\r\nconst check = (rules, role, action) => {\r\n const permissions = rules[role];\r\n if (!permissions) {\r\n // role is not present in the rules\r\n return false;\r\n }\r\n\r\n const staticPermissions = permissions.static;\r\n\r\n if (staticPermissions && staticPermissions.includes(action)) {\r\n // static rule not provided for action\r\n return true;\r\n }\r\n\r\n return false;\r\n};\r\n\r\nconst Can = (props) =>\r\n check(rules, props.role, props.perform, props.data) ? props.yes() : props.no();\r\n\r\nCan.defaultProps = {\r\n yes: () => null,\r\n no: () => null,\r\n};\r\n\r\nexport default Can;\r\n","import './styles/EventDetailsPage.scss';\r\nimport React from 'react';\r\nimport { formatTime, handleTypeName, handleTeamSize, formatDateFront } from './Utilities';\r\n// import { animations } from 'react-animation';\r\nimport Can from './Can';\r\nimport Table from 'react-bootstrap/Table';\r\nimport Modal from 'react-bootstrap/Modal';\r\nimport { Link } from 'react-router-dom';\r\n\r\nconst EventDetails = ({ currentEventDetails, handleCloseEvent, userRole, showDetails }) => {\r\n const date = formatDateFront(currentEventDetails.eventDate);\r\n const cheerleadersSize = currentEventDetails.addCheerleaders\r\n ? handleTeamSize(currentEventDetails.cheerleadersSize)\r\n : '';\r\n const showgirlsSize = currentEventDetails.addShowgirls\r\n ? handleTeamSize(currentEventDetails.showgirlsSize)\r\n : '';\r\n let eventType = handleTypeName(currentEventDetails.typeName);\r\n let status = currentEventDetails.isScheduled\r\n ? 'Approved'\r\n : currentEventDetails.isDenied\r\n ? 'Not Approved'\r\n : currentEventDetails.isCanceled\r\n ? 'Canceled'\r\n : '';\r\n return (\r\n <>\r\n \r\n \r\n {currentEventDetails.eventName}\r\n \r\n \r\n
\r\n
\r\n

Event Information

\r\n (\r\n \r\n Edit\r\n \r\n )}\r\n />\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {currentEventDetails.addCheerleaders ? (\r\n \r\n \r\n \r\n \r\n ) : null}\r\n\r\n {currentEventDetails.addShowgirls ? (\r\n \r\n \r\n \r\n \r\n ) : null}\r\n (\r\n \r\n \r\n \r\n \r\n )}\r\n />\r\n \r\n
Event Name{currentEventDetails.eventName}
Organization{currentEventDetails.eventOrganization}
Event Type{eventType.value}
Event Date{date}
Start Time{formatTime(currentEventDetails.startTime)}
End Time{formatTime(currentEventDetails.endTime)}
Expenses or benefits{currentEventDetails.expensesOrBenefits}
Outside organizations{currentEventDetails.otherOrganizations}
Description of Event{currentEventDetails.eventDescription}
Special Instructions{currentEventDetails.specialInstructions}
Event Location{currentEventDetails.eventLocation}
Add SuperFrog{currentEventDetails.addSuperFrog ? 'Yes' : 'No'}
{`Cheerleader's Team Size`}{cheerleadersSize.value}
{`Showgirl's Team Size`}{showgirlsSize.value}
Total Cost{`$${currentEventDetails.totalCost}`}
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Event Status
{status}
\r\n
\r\n
\r\n\r\n {currentEventDetails.participants.length > 0 ? (\r\n
\r\n
\r\n

Spirit Members

\r\n (\r\n \r\n Edit\r\n \r\n )}\r\n />\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n {currentEventDetails.participants.map((person, index) => (\r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n
NameSpirit Member Type
{person.employee.fullName}\r\n {person.employee.spiritMemberType}\r\n
\r\n
\r\n
\r\n ) : null}\r\n\r\n
\r\n
\r\n

Customer Information

\r\n (\r\n \r\n Edit\r\n \r\n )}\r\n />\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Name{`${currentEventDetails.customer.fullName}`}
Phone{`${currentEventDetails.customer.phoneNumber}`}
Email{`${currentEventDetails.customer.email}`}
\r\n
\r\n
\r\n
\r\n
\r\n \r\n );\r\n};\r\nexport default EventDetails;\r\n","import React from 'react';\r\nimport { formatDateFront } from './Utilities';\r\nimport Table from 'react-bootstrap/Table';\r\n\r\n// For \"Student\" user role: read only\r\n\r\nconst MyEvents = ({ headings, data, toggleEventDetails, eventType }) => {\r\n let counter = 0;\r\n return (\r\n \r\n \r\n \r\n {headings.map((heading) => {\r\n counter = counter + 1;\r\n return ;\r\n })}\r\n \r\n {data.map((item) => {\r\n let formattedDate = formatDateFront(item.eventDate);\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n
{heading}
\r\n {item.eventName}\r\n \r\n {formattedDate}\r\n \r\n {`${item.customer.firstName} ${item.customer.lastName}`}\r\n \r\n {`${item.participants[0].employee.firstName} ${item.participants[0].employee.lastName}`}\r\n \r\n {item.isScheduled ? (\r\n Scheduled\r\n ) : item.isDenied ? (\r\n Denied\r\n ) : (\r\n Pending\r\n )}\r\n \r\n \r\n View Details\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default MyEvents;\r\n","import React from 'react';\r\nimport { formatDateFront } from './Utilities';\r\nimport Can from './Can';\r\nimport { Link } from 'react-router-dom';\r\nimport Table from 'react-bootstrap/Table';\r\nimport Alert from 'react-bootstrap/Alert';\r\n\r\nconst Events = ({\r\n data,\r\n headings,\r\n userRole,\r\n toggleEventDetails,\r\n eventType,\r\n displayScheduleDenyButton,\r\n displayAssignButton,\r\n displayStatus,\r\n}) => {\r\n let counter = 0;\r\n\r\n return (\r\n \r\n {data.length === 0 ?

No events on this list

: null}\r\n \r\n \r\n \r\n {headings.map((heading) => {\r\n counter = counter + 1;\r\n return ;\r\n })}\r\n \r\n {data.map((item) => {\r\n let formattedDate = formatDateFront(item.eventDate);\r\n const status = item.isScheduled\r\n ? 'Approved'\r\n : item.isDenied\r\n ? 'Not Approved'\r\n : item.isCanceled\r\n ? 'Canceled'\r\n : '';\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {displayStatus ? (\r\n \r\n ) : null}\r\n\r\n \r\n \r\n );\r\n })}\r\n \r\n
{heading}
\r\n (\r\n \r\n {item.eventName}\r\n \r\n )}\r\n no={() => item.eventName}\r\n />\r\n \r\n {formattedDate}\r\n \r\n (\r\n \r\n {`${item.customer.firstName} ${item.customer.lastName}`}\r\n \r\n )}\r\n no={() =>\r\n `${item.customer.firstName} ${item.customer.lastName}`\r\n }\r\n />\r\n \r\n
    \r\n {item.addSuperFrog ?
  • SuperFrog
  • : null}\r\n {item.addCheerleaders ?
  • Cheerleaders
  • : null}\r\n {item.addShowgirls ?
  • Showgirls
  • : null}\r\n
\r\n
\r\n \r\n {status}\r\n \r\n \r\n
    \r\n
  • \r\n \r\n View Details\r\n \r\n
  • \r\n\r\n {displayScheduleDenyButton ? (\r\n (\r\n
  • \r\n \r\n Approve/Deny\r\n \r\n
  • \r\n )}\r\n />\r\n ) : null}\r\n\r\n {displayAssignButton ? (\r\n
  • \r\n (\r\n \r\n Assign\r\n \r\n )}\r\n no={() => (\r\n \r\n Sign Up\r\n \r\n )}\r\n />\r\n
  • \r\n ) : null}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Events;\r\n","import React from 'react';\r\nimport { formatDateFront } from './Utilities';\r\nimport Can from './Can';\r\nimport { Link } from 'react-router-dom';\r\nimport Table from 'react-bootstrap/Table';\r\n\r\nconst ApprovedEvents = (props) => {\r\n let counter = 0;\r\n return (\r\n \r\n \r\n \r\n {props.headings.map((heading) => {\r\n counter = counter + 1;\r\n return ;\r\n })}\r\n \r\n {props.data.map((item) => {\r\n let formattedDate = formatDateFront(item.eventDate);\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n
{heading}
\r\n (\r\n \r\n {`${item.customer.firstName} ${item.customer.lastName}`}\r\n \r\n )}\r\n no={() =>\r\n `${item.customer.firstName} ${item.customer.lastName}`\r\n }\r\n />\r\n \r\n {formattedDate}\r\n \r\n (\r\n {item.eventName}\r\n )}\r\n no={() => item.eventName}\r\n />\r\n \r\n Approved\r\n \r\n
    \r\n {item.participants.map((participant) => {\r\n return (\r\n {`${participant.employee.firstName} ${participant.employee.lastName}`}\r\n );\r\n })}\r\n
\r\n
\r\n
    \r\n
  • \r\n \r\n View Details\r\n \r\n
  • \r\n (\r\n
  • \r\n \r\n Cancel\r\n \r\n
  • \r\n )}\r\n />\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default ApprovedEvents;\r\n","import React from 'react';\r\nimport ListGroup from 'react-bootstrap/ListGroup';\r\nimport Can from '../Can';\r\nimport { useUser } from '../../context/UserProvider';\r\nimport { NavLink } from 'react-router-dom';\r\nimport Nav from 'react-bootstrap/Nav';\r\n\r\nfunction NavDashboard() {\r\n const { userRole } = useUser();\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n}\r\n\r\nexport default NavDashboard;\r\n","import React from 'react';\r\nimport NavDashboard from './auth/NavDashboard';\r\n\r\nexport default function DashboardLayout({ title, children }) {\r\n return (\r\n
\r\n

{title}

\r\n
\r\n \r\n
{children}
\r\n
\r\n
\r\n );\r\n}\r\n","import { useOktaAuth } from '@okta/okta-react';\r\nimport { useEffect, useState, useMemo } from 'react';\r\n\r\n/**\r\n * Fetch participants (api/participates)\r\n *\r\n * Students/employees that have been assigned to an event\r\n *\r\n * @returns Object\r\n */\r\nexport default function useParticipants() {\r\n const { authState } = useOktaAuth();\r\n const initial = useMemo(() => {\r\n const initial = {\r\n data: [],\r\n error: null,\r\n loading: true,\r\n };\r\n return initial;\r\n }, []);\r\n const [participants, setParticipants] = useState(initial);\r\n\r\n useEffect(() => {\r\n /**\r\n * Get all participants\r\n */\r\n const getParticipants = () => {\r\n fetch('api/participates', {\r\n headers: {\r\n Authorization: 'Bearer ' + authState.idToken.idToken,\r\n },\r\n })\r\n .then((rsp) => {\r\n return rsp.json();\r\n })\r\n .then((participants) => {\r\n setParticipants((prevState) => ({ ...prevState, data: participants }));\r\n })\r\n /* eslint-disable-next-line */\r\n .catch((err) => console.log(err));\r\n };\r\n getParticipants();\r\n\r\n return function cleanup() {\r\n setParticipants(initial);\r\n };\r\n }, [authState, initial]);\r\n\r\n return participants;\r\n}\r\n","import { useOktaAuth } from '@okta/okta-react';\r\nimport { useEffect, useState, useMemo, useCallback } from 'react';\r\n\r\n/**\r\n * Fetch all employees (api/employees)\r\n * @returns Array [employees, getEmployees]\r\n */\r\nfunction useEmployees() {\r\n const { authState } = useOktaAuth();\r\n const initial = useMemo(() => {\r\n const initial = {\r\n employees: [],\r\n spiritType: {\r\n emplSuperfrog: [],\r\n emplCheerleaders: [],\r\n emplShowgirls: [],\r\n },\r\n loading: true,\r\n error: null,\r\n };\r\n return initial;\r\n }, []);\r\n const [employees, setEmployees] = useState(initial);\r\n /**\r\n * Get list of employees\r\n *\r\n */\r\n const getEmployees = useCallback(() => {\r\n fetch('api/employees/', {\r\n headers: {\r\n Authorization: 'Bearer ' + authState.idToken.idToken,\r\n },\r\n })\r\n .then((rsp) => {\r\n return rsp.json();\r\n })\r\n .then((data) => {\r\n // let's filter by spirit member type so we can easily use this information\r\n const superFrogs = data.filter(\r\n (e) => e.spiritMemberType.toLowerCase() === 'superfrog'\r\n );\r\n const cheerleaders = data.filter(\r\n (e) => e.spiritMemberType.toLowerCase() === 'cheerleader'\r\n );\r\n const showgirls = data.filter(\r\n (e) => e.spiritMemberType.toLowerCase() === 'showgirl'\r\n );\r\n setEmployees((prevState) => ({\r\n ...prevState,\r\n loading: false,\r\n employees: data,\r\n spiritType: {\r\n emplSuperfrog: superFrogs,\r\n emplCheerleaders: cheerleaders,\r\n emplShowgirls: showgirls,\r\n },\r\n }));\r\n })\r\n /* eslint-disable-next-line */\r\n .catch((err) => console.log(err));\r\n }, [authState]);\r\n\r\n useEffect(() => {\r\n getEmployees();\r\n\r\n return function cleanup() {\r\n setEmployees(initial);\r\n };\r\n }, [getEmployees, initial]);\r\n\r\n return [employees, getEmployees];\r\n}\r\n\r\nexport default useEmployees;\r\n","import { useState, useEffect, useMemo } from 'react';\r\nimport { useOktaAuth } from '@okta/okta-react';\r\n\r\n/**\r\n * Fetch all events (api/events)\r\n *\r\n * @returns Object\r\n */\r\nconst useAllEvents = () => {\r\n const initial = useMemo(() => {\r\n const initial = {\r\n events: [],\r\n error: null,\r\n loading: true,\r\n };\r\n return initial;\r\n }, []);\r\n const { authState } = useOktaAuth();\r\n const [events, setEvents] = useState(initial);\r\n\r\n useEffect(() => {\r\n /**\r\n * Get last 3 months of events\r\n *\r\n *\r\n * ***** NEW EVENTS *****\r\n */\r\n const getAllEVents = async () => {\r\n fetch('api/events', {\r\n headers: {\r\n Authorization: 'Bearer ' + authState.idToken.idToken,\r\n },\r\n })\r\n .then((rsp) => {\r\n if (rsp.statusText === 'Unauthorized') {\r\n setEvents((prevState) => ({\r\n ...prevState,\r\n error: 'Error: Unathorized to view this material.',\r\n }));\r\n }\r\n\r\n if (rsp.status === '404') {\r\n setEvents({\r\n error: 'You do not have any assigned events.',\r\n });\r\n }\r\n\r\n return rsp.json();\r\n })\r\n .then((events) => {\r\n setEvents((prevState) => ({\r\n ...prevState,\r\n events,\r\n }));\r\n })\r\n /* eslint-disable-next-line */\r\n .catch((err) => console.log(err));\r\n };\r\n\r\n getAllEVents();\r\n\r\n return function cleanup() {\r\n setEvents(initial);\r\n };\r\n }, [authState, initial]);\r\n\r\n return events;\r\n};\r\n\r\nexport default useAllEvents;\r\n","import { useState, useEffect, useMemo } from 'react';\r\nimport { useOktaAuth } from '@okta/okta-react';\r\n\r\n/**\r\n * Fetch events by employees. Events that are assigned to student.\r\n *\r\n * Logged in person - view assigned events (My Events)\r\n * @returns Object\r\n */\r\nconst useEventsByCurrentEmployee = () => {\r\n const initial = useMemo(() => {\r\n const initial = {\r\n events: [],\r\n error: null,\r\n loading: true,\r\n };\r\n return initial;\r\n }, []);\r\n const { authState } = useOktaAuth();\r\n const [events, setEvents] = useState(initial);\r\n\r\n useEffect(() => {\r\n /**\r\n * Events by Employee\r\n *\r\n * Logged in person - view assigned events (My Events)\r\n */\r\n const getEventsByCurrentEmployee = async () => {\r\n fetch('api/events/employee', {\r\n headers: {\r\n Authorization: 'Bearer ' + authState.idToken.idToken,\r\n },\r\n })\r\n .then((rsp) => {\r\n if (rsp.statusText === 'Unauthorized') {\r\n setEvents((prevState) => ({\r\n ...prevState,\r\n error: 'Error: Unathorized to view this material.',\r\n }));\r\n }\r\n\r\n if (rsp.status === '404') {\r\n setEvents({\r\n error: 'You do not have any assigned events.',\r\n });\r\n }\r\n\r\n return rsp.json();\r\n })\r\n .then((events) => {\r\n setEvents((prevState) => ({\r\n ...prevState,\r\n events,\r\n }));\r\n })\r\n /* eslint-disable-next-line */\r\n .catch((err) => console.log(err));\r\n };\r\n\r\n getEventsByCurrentEmployee();\r\n\r\n return function cleanup() {\r\n setEvents(initial);\r\n };\r\n }, [authState, initial]);\r\n\r\n return events;\r\n};\r\n\r\nexport default useEventsByCurrentEmployee;\r\n","import { useState, useEffect, useMemo } from 'react';\r\nimport { useOktaAuth } from '@okta/okta-react';\r\n\r\n/**\r\n * Fetch approved/scheduled events (api/events/approved/true)\r\n * @returns Object\r\n */\r\nconst useApprovedEvents = () => {\r\n const initial = useMemo(() => {\r\n const initial = {\r\n events: [],\r\n error: null,\r\n loading: true,\r\n };\r\n return initial;\r\n }, []);\r\n const { authState } = useOktaAuth();\r\n const [events, setEvents] = useState(initial);\r\n\r\n useEffect(() => {\r\n /**\r\n *\r\n * Events that are ready to be scheduled\r\n */\r\n const getApprovedEvents = async () => {\r\n fetch('api/events/approved/true', {\r\n headers: {\r\n Authorization: 'Bearer ' + authState.idToken.idToken,\r\n },\r\n })\r\n .then((rsp) => {\r\n if (rsp.statusText === 'Unauthorized') {\r\n setEvents((prevState) => ({\r\n ...prevState,\r\n error: 'Error: Unathorized to view this material.',\r\n }));\r\n }\r\n\r\n if (rsp.status === '404') {\r\n setEvents({\r\n error: 'You do not have any assigned events.',\r\n });\r\n }\r\n\r\n return rsp.json();\r\n })\r\n .then((events) => {\r\n setEvents((prevState) => ({\r\n ...prevState,\r\n events,\r\n }));\r\n })\r\n /* eslint-disable-next-line */\r\n .catch((err) => console.log(err));\r\n };\r\n\r\n getApprovedEvents();\r\n\r\n return function cleanup() {\r\n setEvents(initial);\r\n };\r\n }, [authState, initial]);\r\n\r\n return events;\r\n};\r\n\r\nexport default useApprovedEvents;\r\n","import { useState, useEffect, useMemo } from 'react';\r\nimport { useOktaAuth } from '@okta/okta-react';\r\n\r\n/**\r\n * Fetch denied events (api/events/denied/true)\r\n *\r\n * @returns Object\r\n */\r\nconst useDeniedEvents = () => {\r\n const initial = useMemo(() => {\r\n const initial = {\r\n events: [],\r\n error: null,\r\n loading: true,\r\n };\r\n return initial;\r\n }, []);\r\n const { authState } = useOktaAuth();\r\n const [events, setEvents] = useState(initial);\r\n\r\n useEffect(() => {\r\n /**\r\n *\r\n * Events that are ready to be scheduled\r\n */\r\n const getDeniedEvents = async () => {\r\n fetch('api/events/denied/true', {\r\n headers: {\r\n Authorization: 'Bearer ' + authState.idToken.idToken,\r\n },\r\n })\r\n .then((rsp) => {\r\n if (rsp.statusText === 'Unauthorized') {\r\n setEvents((prevState) => ({\r\n ...prevState,\r\n error: 'Error: Unathorized to view this material.',\r\n }));\r\n }\r\n\r\n if (rsp.status === '404') {\r\n setEvents({\r\n error: 'You do not have any assigned events.',\r\n });\r\n }\r\n\r\n return rsp.json();\r\n })\r\n .then((events) => {\r\n setEvents((prevState) => ({\r\n ...prevState,\r\n events,\r\n }));\r\n })\r\n /* eslint-disable-next-line */\r\n .catch((err) => console.log(err));\r\n };\r\n\r\n getDeniedEvents();\r\n\r\n return function cleanup() {\r\n setEvents(initial);\r\n };\r\n }, [authState, initial]);\r\n\r\n return events;\r\n};\r\n\r\nexport default useDeniedEvents;\r\n","import { useMemo, useState, useEffect } from 'react';\r\nimport { useOktaAuth } from '@okta/okta-react';\r\n\r\n/**\r\n * Fetch assigned events (api/events/assigned)\r\n * @returns Object\r\n */\r\nconst useEventsAssigned = () => {\r\n const initial = useMemo(() => {\r\n const initial = {\r\n events: [],\r\n error: null,\r\n loading: true,\r\n };\r\n return initial;\r\n }, []);\r\n const { authState } = useOktaAuth();\r\n const [events, setEvents] = useState(initial);\r\n\r\n useEffect(() => {\r\n /**\r\n *\r\n * Events that are ready to be scheduled\r\n */\r\n const getAssignedEvents = async () => {\r\n fetch('api/events/assigned', {\r\n headers: {\r\n Authorization: 'Bearer ' + authState.idToken.idToken,\r\n },\r\n })\r\n .then((rsp) => {\r\n if (rsp.statusText === 'Unauthorized') {\r\n setEvents((prevState) => ({\r\n ...prevState,\r\n error: 'Error: Unathorized to view this material.',\r\n }));\r\n }\r\n\r\n if (rsp.status === '404') {\r\n setEvents({\r\n error: 'You do not have any assigned events.',\r\n });\r\n }\r\n\r\n return rsp.json();\r\n })\r\n .then((events) => {\r\n setEvents((prevState) => ({\r\n ...prevState,\r\n events,\r\n }));\r\n })\r\n /* eslint-disable-next-line */\r\n .catch((err) => console.log(err));\r\n };\r\n\r\n getAssignedEvents();\r\n\r\n return function cleanup() {\r\n setEvents(initial);\r\n };\r\n }, [authState, initial]);\r\n\r\n return events;\r\n};\r\n\r\nexport default useEventsAssigned;\r\n","import '../styles/DashboardPage.scss';\r\nimport '../styles/Tabs.scss';\r\nimport React, { useState } from 'react';\r\nimport EventDetails from '../EventDetails';\r\nimport Can from '../Can';\r\nimport MyEvents from '../MyEvents';\r\nimport Events from '../Events';\r\nimport ApprovedEvents from '../ApprovedEvents';\r\nimport DashboardLayout from '../DashboardLayout';\r\nimport useParticipants from '../../hooks/participants-hook';\r\nimport useEmployees from '../../hooks/employees-hook';\r\nimport useAllEvents from '../../hooks/events-hook';\r\nimport useEventsByCurrentEmployee from '../../hooks/events-by-current-employee-hook';\r\nimport useApprovedEvents from '../../hooks/events-approved';\r\nimport useDeniedEvents from '../../hooks/events-denied';\r\nimport useEventsAssigned from '../../hooks/events-assigned-hook';\r\nimport { useUser } from '../../context/UserProvider';\r\nimport { eventObject } from '../Utilities';\r\nimport Tabs from 'react-bootstrap/Tabs';\r\nimport Tab from 'react-bootstrap/Tab';\r\nimport Alert from 'react-bootstrap/Alert';\r\n\r\nfunction DashboardPage() {\r\n const { currentEmployee, userRole } = useUser();\r\n const participants = useParticipants();\r\n const allEmployees = useEmployees();\r\n const allEvents = useAllEvents();\r\n const myEvents = useEventsByCurrentEmployee();\r\n const approvedEvents = useApprovedEvents();\r\n const assignedEvents = useEventsAssigned();\r\n const deniedEvents = useDeniedEvents();\r\n const [show, setShow] = useState(false);\r\n const [details, setViewEventDetails] = useState({\r\n eventDetails: '',\r\n currentEventDetails: eventObject,\r\n });\r\n\r\n const myEventsHeadings = ['Event Name', 'Date', 'Customer', 'Assigned', 'Status', 'Actions'];\r\n\r\n const handleClose = () => setShow(false);\r\n const handleShow = (e) => {\r\n const { name } = e.target;\r\n const combinedEvents = [\r\n ...allEvents.events,\r\n ...myEvents.events,\r\n ...assignedEvents.events,\r\n ...approvedEvents.events,\r\n ...deniedEvents.events,\r\n ];\r\n // let's find our event by ID\r\n // to make sure we are looking in the correct array if objects\r\n const eventDetailsId = combinedEvents.find((event) => event.eventId === parseInt(name));\r\n\r\n setViewEventDetails({\r\n eventDetails: [name],\r\n currentEventDetails: eventDetailsId,\r\n });\r\n setShow(true);\r\n };\r\n\r\n // Table headings\r\n const approvedEventsHeadings = [\r\n 'Client',\r\n 'Date',\r\n 'Event Name',\r\n 'Status',\r\n 'Assigned To',\r\n 'Actions',\r\n ];\r\n\r\n // Table headings\r\n const defaultRequestHeadings = [\r\n 'Event Name',\r\n 'Date',\r\n 'Customer',\r\n 'Spirit Members Needed ',\r\n 'Actions',\r\n ];\r\n const deniedCanceledHeadings = [\r\n 'Event Name',\r\n 'Date',\r\n 'Customer',\r\n 'Spirit Members Needed ',\r\n 'Status',\r\n 'Actions',\r\n ];\r\n return (\r\n \r\n {/* MY EVENTS VIEW */}\r\n (\r\n
\r\n

My Events

\r\n {myEvents.events.length === 0 ? (\r\n

You don't have any events assigned to you.

\r\n ) : null}\r\n \r\n
\r\n )}\r\n />\r\n \r\n {/* END OF MY EVENTS VIEW */}\r\n\r\n {/* START OF TABS - NEW REQUESTS, READY TO SCHEDULE, SCHEDULED EVENTS */}\r\n \r\n \r\n \r\n \r\n These events are ready for sign up!\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n These events are ready to schedule with the customer. These events\r\n should have at least one student assignment. Click on\r\n the "View Details" button to make sure all spirit members have\r\n been assigned to the event.\r\n \r\n\r\n

\r\n Click on the "Assign" button to edit or assign missing\r\n students.\r\n

\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n These events have been scheduled and a SuperFrog, Showgirl, or\r\n Cheerldear has been assigned. The customer has received an email to\r\n notify them that their event has been approved.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n These events have been denied or canceled.\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default DashboardPage;\r\n","import React from 'react';\r\nimport Alert from 'react-bootstrap/Alert';\r\n\r\nconst NoAccess = () => {\r\n return (\r\n
\r\n You do not have access to this page.\r\n
\r\n );\r\n};\r\nexport default NoAccess;\r\n","import React from 'react';\r\nimport Formsy from 'formsy-react';\r\nimport Input from '../Input';\r\nimport Select from '../Select';\r\nimport CheckBox from '../CheckBox';\r\nimport TextArea from '../TextArea';\r\nimport Button from '../Button';\r\nimport InputTime from '../InputTime';\r\nimport 'date-input-polyfill';\r\nimport useRates from '../../hooks/rates-hook';\r\nimport useScheduledAndBlackoutEvents from '../../hooks/events-blackouts-hook';\r\nimport { calculateTotalHours, calculateTotalCost } from '../Utilities';\r\nimport {\r\n PRIVATE_BUSINESS,\r\n PUBLIC_NONPROFIT,\r\n GROUP_LARGE,\r\n GROUP_SMALL,\r\n} from '../../constants/Constants';\r\n\r\nfunction EditEventForm({\r\n updateEvent,\r\n enableButton,\r\n disableButton,\r\n customer,\r\n saveValueToState,\r\n canSubmit,\r\n event,\r\n typeNameOptions,\r\n invalidEndTime,\r\n dayOfTheWeek,\r\n eventSizes,\r\n}) {\r\n const isGame = checkIsGame();\r\n const eventsAndBlackouts = useScheduledAndBlackoutEvents();\r\n const { events } = eventsAndBlackouts;\r\n const rates = useRates();\r\n const totalHours = calculateTotalHours(event.startTime, event.endTime);\r\n function checkIsGame() {\r\n // the \"-\" character makes it an invalid date\r\n const formattedDate = event.eventDate.replace(/-/g, '/');\r\n const blackouts = events;\r\n const validDate = new Date(`${formattedDate} 12:00 AM`);\r\n\r\n // loop through blackouts\r\n for (let k in blackouts) {\r\n // check if validDate is the day before blackout && blackout isGame\r\n let blackoutDate = new Date(blackouts[k].date);\r\n let dayBefore = new Date(blackoutDate.setDate(blackoutDate.getDate() - 1));\r\n\r\n if (validDate.toDateString() === dayBefore.toDateString() && blackouts[k].isGame) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n const handleSFHourlyRate = (startTime, endTime, eventType, addSuperFrog) => {\r\n const totalHours = calculateTotalHours(startTime, endTime);\r\n if (event.eventDate != '') checkIsGame();\r\n const calIf30MinFlatFee = totalHours === 0 ? true : false;\r\n return handleSuperFrogCost(eventType, calIf30MinFlatFee, isGame, addSuperFrog);\r\n };\r\n\r\n const handleCheerleadersHourlyRate = (addCheerleaders, cheerleadersSize, typeName) => {\r\n if (addCheerleaders == false) {\r\n event.cheerleadersSize = 'none';\r\n return 0;\r\n }\r\n return handleOtherSpiritMembersCost(cheerleadersSize, typeName);\r\n };\r\n\r\n const handleShowgirlsHourlyRate = (addShowgirls, showgirlsSize, typeName) => {\r\n if (addShowgirls == false) {\r\n event.showgirlsSize = 'none';\r\n return 0;\r\n }\r\n return handleOtherSpiritMembersCost(showgirlsSize, typeName);\r\n };\r\n\r\n const handleSuperFrogCost = (eventType, is30FlatFee, isGame, addSuperFrog) => {\r\n // Hourly Rates - from DB\r\n const {\r\n flatFeeSuperFrog,\r\n gameFlatFeeSuperFrog,\r\n tcuSuperFrog,\r\n gameTcuSuperFrog,\r\n nonProfitSuperFrog,\r\n gameNonProfitSuperFrog,\r\n privateSuperFrog,\r\n gamePrivateSuperFrog,\r\n } = rates;\r\n //Did we decide to keep superFrog?\r\n if (addSuperFrog) {\r\n // 1. figure out if this event falls on a day before a game\r\n if (isGame) {\r\n // pricing for day before a game\r\n if (is30FlatFee) {\r\n return gameFlatFeeSuperFrog;\r\n }\r\n\r\n if (eventType === PRIVATE_BUSINESS) {\r\n return gamePrivateSuperFrog;\r\n }\r\n\r\n if (eventType === PUBLIC_NONPROFIT) {\r\n return gameNonProfitSuperFrog;\r\n }\r\n // means event type is TCU\r\n return gameTcuSuperFrog;\r\n }\r\n\r\n if (!isGame) {\r\n // let's figure out if it's 30 minutes\r\n // because it's only a flat fee\r\n if (is30FlatFee) {\r\n return flatFeeSuperFrog;\r\n }\r\n\r\n // Let's check if it's a private event\r\n // because it's $175 an hour for private events\r\n if (eventType === PRIVATE_BUSINESS) {\r\n return privateSuperFrog;\r\n }\r\n\r\n if (eventType === PUBLIC_NONPROFIT) {\r\n return nonProfitSuperFrog;\r\n }\r\n\r\n // means event type is TCU\r\n return tcuSuperFrog;\r\n }\r\n } else {\r\n // no charge\r\n return 0;\r\n }\r\n };\r\n\r\n const handleOtherSpiritMembersCost = (key, eventType) => {\r\n // TCU Prices\r\n const {\r\n tcuSmallGroup,\r\n tcuLargeGroup,\r\n gameTcuSmallGroup,\r\n gameTcuLargeGroup,\r\n nonProfitSmallGroup,\r\n nonProfitLargeGroup,\r\n gameNonProfitSmallGroup,\r\n gameNonProfitLargeGroup,\r\n privateSmallGroup,\r\n privateLargeGroup,\r\n gamePrivateSmallGroup,\r\n gamePrivateLargeGroup,\r\n } = rates;\r\n if (key != '') {\r\n if (isGame) {\r\n // is it a private event?\r\n if (eventType === PRIVATE_BUSINESS) {\r\n // we want cheerleaders or showgirls!! woot woot!\r\n // but, do we want a small or large team?\r\n if (key.toUpperCase() === GROUP_LARGE) {\r\n return gamePrivateLargeGroup;\r\n } else if (key.toUpperCase() === GROUP_SMALL) {\r\n return gamePrivateSmallGroup;\r\n }\r\n } else if (eventType === PUBLIC_NONPROFIT) {\r\n // we want cheerleaders or showgirls!! woot woot!\r\n // but, do we want a small or large team?\r\n if (key.toUpperCase() === GROUP_LARGE) {\r\n return gameNonProfitLargeGroup;\r\n } else if (key.toUpperCase() === GROUP_SMALL) {\r\n return gameNonProfitSmallGroup;\r\n }\r\n } else {\r\n // else is TCU Type\r\n if (key.toUpperCase() === GROUP_LARGE) {\r\n return gameTcuLargeGroup;\r\n } else if (key.toUpperCase() === GROUP_SMALL) {\r\n return gameTcuSmallGroup;\r\n }\r\n }\r\n }\r\n\r\n if (!isGame) {\r\n // is it a private event?\r\n if (eventType === PRIVATE_BUSINESS) {\r\n // we want cheerleaders or showgirls!! woot woot!\r\n // but, do we want a small or large team?\r\n if (key.toUpperCase() === GROUP_LARGE) {\r\n return privateLargeGroup;\r\n } else if (key.toUpperCase() === GROUP_SMALL) {\r\n return privateSmallGroup;\r\n }\r\n } else if (eventType === PUBLIC_NONPROFIT) {\r\n // we want cheerleaders or showgirls!! woot woot!\r\n // but, do we want a small or large team?\r\n if (key.toUpperCase() === GROUP_LARGE) {\r\n return nonProfitLargeGroup;\r\n } else if (key.toUpperCase() === GROUP_SMALL) {\r\n return nonProfitSmallGroup;\r\n }\r\n } else {\r\n // else is TCU Type\r\n if (key.toUpperCase() === GROUP_LARGE) {\r\n return tcuLargeGroup;\r\n } else if (key.toUpperCase() === GROUP_SMALL) {\r\n return tcuSmallGroup;\r\n }\r\n }\r\n }\r\n } else {\r\n // no charge\r\n return 0;\r\n }\r\n };\r\n\r\n event.hourlySuperFrog = handleSFHourlyRate(\r\n event.startTime,\r\n event.endTime,\r\n event.typeName,\r\n event.addSuperFrog\r\n );\r\n event.hourlyCheerleaders = handleCheerleadersHourlyRate(\r\n event.addCheerleaders,\r\n event.cheerleadersSize,\r\n event.typeName\r\n );\r\n event.hourlyShowgirls = handleShowgirlsHourlyRate(\r\n event.addShowgirls,\r\n event.showgirlsSize,\r\n event.typeName\r\n );\r\n event.totalCost = calculateTotalCost(\r\n event.hourlySuperFrog,\r\n event.hourlyCheerleaders,\r\n event.hourlyShowgirls,\r\n totalHours,\r\n event.mileageCost\r\n );\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n\r\n

Event Information

\r\n

* Required Fields

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

SuperFrog

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

Cheerleaders

\r\n \r\n {event.addCheerleaders ? (\r\n

Cheerleaders Team Size

\r\n ) : null}\r\n {event.addCheerleaders ? (\r\n \r\n ) : null}\r\n
\r\n
\r\n

Showgirls

\r\n \r\n {event.addShowgirls ? (\r\n

Showgirls Team Size

\r\n ) : null}\r\n {event.addShowgirls ? (\r\n \r\n ) : null}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n

Will there be a performance required? (Sound system must be provided)

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

\r\n Special Instructions (Parking, gate code, location for spirit members to\r\n change/ keep belongings)\r\n

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

Describe any expenses or benefits to the spirit team members

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

List any other outside organizations involved in sponsoring the event.

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

List any other outside organizations involved in sponsoring the event.

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

\r\n Describe event happenings, special instructions for Spirit team members, etc\r\n

\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n );\r\n}\r\n\r\nexport default EditEventForm;\r\n","import { useState, useEffect, useMemo, useCallback } from 'react';\r\nimport { formatDateFront, formatTime } from '../components/Utilities';\r\nimport { useOktaAuth } from '@okta/okta-react';\r\n\r\n/**\r\n * Fetch event by ID (api/events/{id})\r\n *\r\n * @param {String} id Event id\r\n * @returns Array [event, getEventById, setEvent]\r\n */\r\nconst useEvent = (id) => {\r\n const { authState } = useOktaAuth();\r\n const initial = useMemo(() => {\r\n const initial = {\r\n event: {\r\n eventId: '',\r\n eventName: '',\r\n eventDescription: '',\r\n eventOrganization: '',\r\n eventLocation: '',\r\n otherOrganizations: '',\r\n eventInstructions: '',\r\n comments: '',\r\n typeName: '',\r\n addPerformance: false,\r\n addCheerleaders: false,\r\n onCampus: false,\r\n addShowgirls: false,\r\n cheerleadersSize: 'none',\r\n showgirlsSize: 'none',\r\n specialInstructions: '',\r\n expensesOrBenefits: '',\r\n eventDate: '',\r\n startTime: '12:00 AM',\r\n endTime: '12:00 AM',\r\n customerId: '',\r\n customer: {\r\n customerId: '',\r\n firstName: '',\r\n lastName: '',\r\n phoneNumber: '',\r\n email: '',\r\n },\r\n participants: [\r\n {\r\n employee: {\r\n email: '',\r\n employeeId: '',\r\n firstName: '',\r\n lastName: '',\r\n spiritMemberType: '',\r\n },\r\n },\r\n ],\r\n },\r\n assignments: {\r\n assignedSuperfrog: {\r\n employee: {\r\n employeeId: '',\r\n fullName: '',\r\n },\r\n },\r\n assignedCheerleaders: [],\r\n assignedShowgirls: [],\r\n },\r\n loading: true,\r\n error: null,\r\n };\r\n return initial;\r\n }, []);\r\n\r\n const [event, setEvent] = useState(initial);\r\n const getEventById = useCallback(\r\n (id) => {\r\n fetch(`api/events/${id}`, {\r\n headers: {\r\n Authorization: 'Bearer ' + authState.idToken.idToken,\r\n },\r\n })\r\n .then((rsp) => {\r\n return rsp.json();\r\n })\r\n .then((data) => {\r\n const { startTime, endTime, eventDate } = data;\r\n\r\n // let's filter participants by spirit member so we can easily use them\r\n const eventSF = data.participants.find(\r\n (e) => e.employee.spiritMemberType.toLowerCase() === 'superfrog'\r\n );\r\n const eventCheerleaders =\r\n data.participants.filter(\r\n (e) => e.employee.spiritMemberType.toLowerCase() === 'cheerleader'\r\n ) || [];\r\n const eventShowgirls =\r\n data.participants.filter(\r\n (e) => e.employee.spiritMemberType.toLowerCase() === 'showgirl'\r\n ) || [];\r\n\r\n setEvent((prevState) => ({\r\n ...prevState,\r\n event: {\r\n ...data,\r\n eventDate: formatDateFront(eventDate, 'YYYY-MM-DD'),\r\n startTime: formatTime(startTime),\r\n endTime: formatTime(endTime),\r\n },\r\n assignments: {\r\n assignedSuperfrog: eventSF,\r\n assignedCheerleaders: eventCheerleaders,\r\n assignedShowgirls: eventShowgirls,\r\n },\r\n }));\r\n })\r\n /* eslint-disable-next-line */\r\n .catch((err) => console.log(err));\r\n },\r\n [authState.idToken]\r\n );\r\n\r\n useEffect(() => {\r\n getEventById(id);\r\n\r\n return function cleanup() {\r\n setEvent(initial);\r\n };\r\n }, [initial, id, getEventById]);\r\n\r\n return [event, getEventById, setEvent];\r\n};\r\n\r\nexport default useEvent;\r\n","import { useState } from 'react';\r\n\r\n/**\r\n * Display/Hide success component\r\n * @returns Array [onSuccess, hideMessage, displayMessage]\r\n */\r\nfunction useOnSuccess() {\r\n const [onSuccess, setOnSuccess] = useState(false);\r\n /**\r\n * Hide Success Message\r\n */\r\n const hideMessage = () => {\r\n setOnSuccess(false);\r\n };\r\n\r\n /**\r\n * display message\r\n */\r\n const displayMessage = () => {\r\n setOnSuccess(true);\r\n };\r\n\r\n return [onSuccess, hideMessage, displayMessage];\r\n}\r\n\r\nexport default useOnSuccess;\r\n","import { useState } from 'react';\r\n\r\n/**\r\n * Display if a httprequest error occured\r\n * @returns Array [complications, displayError]\r\n */\r\nfunction useError() {\r\n const [complications, setError] = useState({ error: false, message: '' });\r\n\r\n const displayError = () => {\r\n setError({\r\n error: true,\r\n message: ' Oh no, something went wrong. Please contact the IT department',\r\n });\r\n setTimeout(function () {\r\n setError({ error: false, message: '' });\r\n }, 8000);\r\n };\r\n\r\n return [complications, displayError];\r\n}\r\n\r\nexport default useError;\r\n","import '../styles/DashboardPage.scss';\r\nimport React, { useState } from 'react';\r\nimport {\r\n convertTime12to24,\r\n removeLeadingZero,\r\n convert24timeToSeconds,\r\n typeNameOptions,\r\n teamSizes,\r\n} from '../Utilities';\r\nimport Can from '../Can';\r\nimport NoAccess from '../NoAccess';\r\nimport EditEventForm from './EditEventForm';\r\nimport DashboardLayout from '../DashboardLayout';\r\nimport useEvent from '../../hooks/event-by-id-hook';\r\nimport useSubmit from '../../hooks/useSubmit';\r\nimport useOnSuccess from '../../hooks/useOnSuccess-hook';\r\nimport { useOktaAuth } from '@okta/okta-react';\r\nimport { useUser } from '../../context/UserProvider';\r\nimport { fetchCall } from '../Utilities';\r\nimport ErrorMessage from '../ErrorMessage';\r\nimport useError from '../../hooks/useError';\r\n\r\nfunction EventPage({ match }) {\r\n const {\r\n params: { eventId },\r\n } = match;\r\n const { authState } = useOktaAuth();\r\n const [canSubmit, disableButton, enableButton] = useSubmit();\r\n const [onSuccess, hideMessage, displayMessage] = useOnSuccess();\r\n const { userRole } = useUser();\r\n const [data, getEventById, setEvent] = useEvent(eventId);\r\n const { customer } = data.event;\r\n const [invalidEndTime, setInvalidEndTime] = useState(false);\r\n const [dayOfTheWeek, setDayOfTheWeek] = useState(1);\r\n const [complications, error] = useError();\r\n\r\n /**\r\n * Make sure endTime is greater than startTime\r\n *\r\n *@param {Object} currentValue The current value\r\n */\r\n const validateEndTime = (currentValue) => {\r\n const { startTime } = data.event;\r\n const { endTime } = currentValue;\r\n const startTime24 = convertTime12to24(removeLeadingZero(startTime));\r\n const endTime24 = convertTime12to24(removeLeadingZero(endTime));\r\n const startTimeSeconds = convert24timeToSeconds(startTime24);\r\n const endTimeSeconds = convert24timeToSeconds(endTime24);\r\n\r\n if (startTimeSeconds > endTimeSeconds) {\r\n setInvalidEndTime(true);\r\n } else {\r\n setInvalidEndTime(false);\r\n }\r\n };\r\n\r\n /**\r\n * Save values to local state\r\n *\r\n * @param {Object} currentValue Current form values.\r\n */\r\n const saveValueToState = (currentValue) => {\r\n setEvent((prevState) => ({\r\n ...prevState,\r\n event: {\r\n ...prevState.event,\r\n ...currentValue,\r\n },\r\n }));\r\n\r\n if (Object.prototype.hasOwnProperty.call(currentValue, 'endTime')) {\r\n validateEndTime(currentValue);\r\n }\r\n\r\n if (Object.prototype.hasOwnProperty.call(currentValue, 'eventDate')) {\r\n handleDayOfTheWeek();\r\n }\r\n };\r\n\r\n const handleDayOfTheWeek = () => {\r\n const day = new Date(`${data.event.eventDate}T12:00`);\r\n const thisDayOfTheWeek = day.getDay();\r\n\r\n setDayOfTheWeek(thisDayOfTheWeek);\r\n };\r\n\r\n const updateEvent = async (currentValue) => {\r\n // since we are using InputTime it will not save our data\r\n const { startTime, endTime, eventDate } = data.event;\r\n\r\n // convert startTime and endTime\r\n // since database requires 24 hour format\r\n const modifiedTo24StartTime = convertTime12to24(removeLeadingZero(startTime));\r\n const modifiedTo24EndTime = convertTime12to24(removeLeadingZero(endTime));\r\n\r\n // we will send this off to the server\r\n const value = {\r\n ...currentValue,\r\n eventDate: `${eventDate} 12:00 AM`,\r\n startTime: `${eventDate} ${modifiedTo24StartTime}`,\r\n endTime: `${eventDate} ${modifiedTo24EndTime}`,\r\n };\r\n const success = () => {\r\n displayMessage();\r\n\r\n getEventById(eventId);\r\n\r\n setTimeout(function () {\r\n hideMessage();\r\n }, 3000);\r\n };\r\n\r\n fetchCall(\r\n value,\r\n success,\r\n error,\r\n { url: `api/events/${eventId}`, method: 'PUT' },\r\n authState.idToken.idToken\r\n );\r\n };\r\n\r\n return (\r\n \r\n {onSuccess ?
Form has been updated!
: null}\r\n {complications.error ? : null}\r\n\r\n
\r\n (\r\n \r\n )}\r\n no={() => }\r\n />\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default EventPage;\r\n","import '../styles/DashboardPage.scss';\r\nimport React, { useState } from 'react';\r\nimport MyEvents from '../MyEvents';\r\nimport EventDetails from '../EventDetails';\r\nimport Can from '../Can';\r\nimport NoAccess from '../NoAccess';\r\nimport useEventsByCurrentEmployee from '../../hooks/events-by-current-employee-hook';\r\nimport useParticipants from '../../hooks/participants-hook';\r\nimport useEmployees from '../../hooks/employees-hook';\r\nimport DashboardLayout from '../DashboardLayout';\r\nimport { useUser } from '../../context/UserProvider';\r\nimport { eventObject } from '../Utilities';\r\n\r\nfunction MyEventsPage() {\r\n const allEvents = useEventsByCurrentEmployee();\r\n const { userRole } = useUser();\r\n const participants = useParticipants();\r\n const [data] = useEmployees();\r\n const { employees } = data;\r\n const eventHeadings = ['Client', 'Date', 'Event Name', 'Assigned', 'Status'];\r\n const [show, setShow] = useState(false);\r\n const [detailsInfo, setDetails] = useState({\r\n eventDetails: '',\r\n currentEventDetails: eventObject,\r\n });\r\n\r\n const handleClose = () => setShow(false);\r\n const handleShow = (e) => {\r\n const { name } = e.target;\r\n const eventDetailsId = allEvents.events.find((event) => event.eventId === parseInt(name));\r\n setDetails({\r\n eventDetails: [name],\r\n currentEventDetails: eventDetailsId,\r\n });\r\n setShow(true);\r\n };\r\n\r\n return (\r\n \r\n (\r\n \r\n )}\r\n no={() => }\r\n />\r\n\r\n \r\n \r\n );\r\n}\r\nexport default MyEventsPage;\r\n","import React, { useEffect } from 'react';\r\nimport $ from 'jquery';\r\nimport 'jquery-mask-plugin';\r\nimport Formsy from 'formsy-react';\r\nimport Input from '../Input';\r\nimport Button from '../Button';\r\n\r\nfunction CustomerForm({ handleCustomer, customer, enableButton, disableButton, canSubmit }) {\r\n useEffect(() => {\r\n $('.phone-number').mask('(000) 000-0000', {\r\n placeholder: '(555) 000-0000',\r\n });\r\n }, []);\r\n return (\r\n \r\n \r\n
\r\n

Customer Information

\r\n

* Required Fields

\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n \r\n );\r\n}\r\n\r\nexport default CustomerForm;\r\n","import { useState, useEffect, useMemo, useCallback } from 'react';\r\nimport { useOktaAuth } from '@okta/okta-react';\r\n\r\n/**\r\n * Fetch customer by id (api/customers/{id})\r\n *\r\n * @param {String} id Customer ID\r\n * @returns Array [customer, getCustomerById]\r\n */\r\nconst useCustomerById = (id) => {\r\n const { authState } = useOktaAuth();\r\n const initial = useMemo(() => {\r\n const initial = {\r\n customer: {\r\n customerId: '',\r\n firstName: '',\r\n lastName: '',\r\n phoneNumber: '',\r\n email: '',\r\n },\r\n loading: true,\r\n error: null,\r\n };\r\n return initial;\r\n }, []);\r\n const [customer, setCustomer] = useState(initial);\r\n const getCustomerById = useCallback(\r\n (id) => {\r\n fetch(`api/customers/${id}`, {\r\n headers: {\r\n Authorization: 'Bearer ' + authState.idToken.idToken,\r\n },\r\n })\r\n .then((rsp) => {\r\n if (rsp.statusText === 'Unauthorized') {\r\n setCustomer((prevState) => ({\r\n ...prevState,\r\n loading: false,\r\n error: 'Error: Unathorized to view this material.',\r\n }));\r\n }\r\n return rsp.json();\r\n })\r\n .then((customer) => {\r\n setCustomer((prevState) => ({\r\n ...prevState,\r\n loading: false,\r\n customer,\r\n }));\r\n })\r\n /* eslint-disable-next-line */\r\n .catch((err) => console.log(err));\r\n },\r\n [authState]\r\n );\r\n\r\n useEffect(() => {\r\n getCustomerById(id);\r\n\r\n return function cleanup() {\r\n setCustomer(initial);\r\n };\r\n }, [id, getCustomerById, initial]);\r\n\r\n return [customer, getCustomerById];\r\n};\r\n\r\nexport default useCustomerById;\r\n","import '../styles/EventPage.scss';\r\nimport React from 'react';\r\nimport NavDashboard from './NavDashboard';\r\nimport SuccessMessage from '../SuccessMessage';\r\nimport Can from '../Can';\r\nimport NoAccess from '../NoAccess';\r\nimport CustomerForm from './CustomerForm';\r\nimport { useOktaAuth } from '@okta/okta-react';\r\nimport useCustomerById from '../../hooks/customer-by-id';\r\nimport useSubmit from '../../hooks/useSubmit';\r\nimport useOnSuccess from '../../hooks/useOnSuccess-hook';\r\nimport { useUser } from '../../context/UserProvider';\r\nimport { fetchCall } from '../Utilities';\r\nimport ErrorMessage from '../ErrorMessage';\r\nimport useError from '../../hooks/useError';\r\n\r\nfunction CustomerPage({ match }) {\r\n const {\r\n params: { customerId },\r\n } = match;\r\n const [canSubmit, disableButton, enableButton] = useSubmit();\r\n const [onSuccess, hideMessage, displayMessage] = useOnSuccess();\r\n const { authState } = useOktaAuth();\r\n const { userRole } = useUser();\r\n const [data, getCustomerById] = useCustomerById(customerId);\r\n const { customer } = data;\r\n const [complications, getError] = useError();\r\n\r\n const updateCustomer = (data) => {\r\n const success = () => {\r\n displayMessage();\r\n\r\n getCustomerById(customerId);\r\n\r\n setTimeout(function () {\r\n hideMessage();\r\n }, 3000);\r\n };\r\n fetchCall(\r\n data,\r\n success,\r\n getError,\r\n { url: `api/customers/${customerId}`, method: 'PUT' },\r\n authState.idToken.idToken\r\n );\r\n };\r\n\r\n return (\r\n
\r\n

Dashboard

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

Edit Event

\r\n\r\n {onSuccess ? : null}\r\n\r\n {complications.error ? (\r\n \r\n ) : null}\r\n\r\n
\r\n (\r\n \r\n )}\r\n no={() => }\r\n />\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\nexport default CustomerPage;\r\n","import { withFormsy } from 'formsy-react';\r\nimport React from 'react';\r\n\r\nfunction SelectRole({\r\n setValue,\r\n getErrorMessage,\r\n showRequired,\r\n name,\r\n title,\r\n getValue,\r\n placeholder,\r\n options,\r\n isPristine,\r\n}) {\r\n const changeValue = (event) => {\r\n // setValue() will set the value of the component, which in\r\n // turn will validate it and the rest of the form\r\n // Important: Don't skip this step. This pattern is required\r\n // for Formsy to work.\r\n setValue(event.currentTarget.value);\r\n };\r\n // An error message is returned only if the component is invalid\r\n const errorMessage = getErrorMessage();\r\n const requiredMessage = showRequired() ? 'Required field' : '';\r\n return (\r\n \r\n \r\n \r\n \r\n {options.map((option) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n\r\n {errorMessage ?
{errorMessage}
: null}\r\n\r\n {!isPristine() && requiredMessage ? (\r\n
{requiredMessage}
\r\n ) : null}\r\n
\r\n );\r\n}\r\n\r\nexport default withFormsy(SelectRole);\r\n","import React, { useRef, useEffect, useImperativeHandle, forwardRef } from 'react';\r\nimport $ from 'jquery';\r\nimport 'jquery-mask-plugin';\r\nimport Formsy from 'formsy-react';\r\nimport Input from '../Input';\r\nimport Button from '../Button';\r\nimport SelectRole from '../SelectRole';\r\nimport Select from '../Select';\r\nimport Alert from 'react-bootstrap/Alert';\r\n\r\nconst EmployeeForm = (\r\n {\r\n handleEmployee,\r\n employee,\r\n enableButton,\r\n disableButton,\r\n canSubmit,\r\n roles,\r\n newForm,\r\n spiritMembers,\r\n },\r\n ref\r\n) => {\r\n const areaForm = useRef(null);\r\n\r\n useImperativeHandle(ref, () => ({\r\n handleResetForm: () => {\r\n if (areaForm) {\r\n areaForm.current.reset();\r\n }\r\n },\r\n }));\r\n\r\n useEffect(() => {\r\n $('.phone-number').mask('(000) 000-0000', {\r\n placeholder: '(555) 000-0000',\r\n });\r\n }, []);\r\n\r\n return (\r\n \r\n
\r\n

Employee Information

\r\n

* Required Fields

\r\n {newForm ? (\r\n \r\n Contact the IT EAS office to give the user access through Okta. You must\r\n complete this step in order for the student to access this website.\r\n \r\n ) : null}\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n {!newForm ? (\r\n \r\n ) : null}\r\n\r\n
\r\n \r\n
\r\n \r\n );\r\n};\r\n\r\nexport default forwardRef(EmployeeForm);\r\n","import { useState, useEffect } from 'react';\r\nimport { useOktaAuth } from '@okta/okta-react';\r\n\r\n/**\r\n * Fetch Employee by ID (api/employees/{id})\r\n *\r\n * @param {String} id The employee ID\r\n * @returns Object\r\n */\r\nconst useEmployeeById = (id) => {\r\n const { authState } = useOktaAuth();\r\n const initial = {\r\n employee: {\r\n employeeId: '',\r\n },\r\n loading: true,\r\n error: null,\r\n };\r\n const [employeeById, setEmployee] = useState(initial);\r\n\r\n useEffect(() => {\r\n /**\r\n * Fetch employee by ID\r\n *\r\n */\r\n const getEventsByEmployeeId = async () => {\r\n fetch(`api/employees/${id}`, {\r\n headers: {\r\n Authorization: 'Bearer ' + authState.idToken.idToken,\r\n },\r\n })\r\n .then((rsp) => {\r\n if (rsp.statusText === 'Unauthorized') {\r\n setEmployee((prevState) => ({\r\n ...prevState,\r\n error: 'Error: Unathorized to view this material.',\r\n }));\r\n }\r\n return rsp.json();\r\n })\r\n .then((employee) => {\r\n setEmployee((prevState) => ({\r\n ...prevState,\r\n loading: false,\r\n employee,\r\n }));\r\n })\r\n /* eslint-disable-next-line */\r\n .catch((err) => console.log(err));\r\n };\r\n\r\n getEventsByEmployeeId();\r\n }, [authState, id]);\r\n\r\n return employeeById;\r\n};\r\n\r\nexport default useEmployeeById;\r\n","import { useState, useEffect, useMemo } from 'react';\r\nimport { useOktaAuth } from '@okta/okta-react';\r\n\r\n/**\r\n * Fetch all roles (api/roles)\r\n *\r\n * @returns Object\r\n */\r\nconst useRoles = () => {\r\n const { authState } = useOktaAuth();\r\n const initial = useMemo(() => {\r\n const initial = {\r\n roles: [],\r\n loading: true,\r\n error: null,\r\n };\r\n return initial;\r\n }, []);\r\n const [roles, setRoles] = useState(initial);\r\n\r\n useEffect(() => {\r\n const getRoles = () => {\r\n fetch(`api/roles/`, {\r\n method: 'GET',\r\n headers: {\r\n Accept: 'application/json',\r\n 'Content-Type': 'application/json',\r\n Authorization: 'Bearer ' + authState.idToken.idToken,\r\n },\r\n })\r\n .then((rsp) => {\r\n return rsp.json();\r\n })\r\n .then((roles) => {\r\n setRoles({ roles, loading: false });\r\n });\r\n };\r\n getRoles();\r\n\r\n return function cleanup() {\r\n setRoles(initial);\r\n };\r\n }, [authState, initial]);\r\n\r\n return roles;\r\n};\r\n\r\nexport default useRoles;\r\n","import React from 'react';\r\nimport SuccessMessage from '../SuccessMessage';\r\nimport Can from '../Can';\r\nimport NoAccess from '../NoAccess';\r\nimport EmployeeForm from './EmployeeForm';\r\nimport { fetchCall, spiritMembers } from '../Utilities';\r\nimport DashboardLayout from '../DashboardLayout';\r\nimport useEmployeeById from '../../hooks/employee-by-id-hook';\r\nimport useRoles from '../../hooks/roles-hook';\r\nimport useOnSuccess from '../../hooks/useOnSuccess-hook';\r\nimport useSubmit from '../../hooks/useSubmit';\r\nimport { useOktaAuth } from '@okta/okta-react';\r\nimport { useUser } from '../../context/UserProvider';\r\nimport ErrorMessage from '../ErrorMessage';\r\nimport useError from '../../hooks/useError';\r\n\r\nfunction EmployeePage({ match }) {\r\n const {\r\n params: { employeeId },\r\n } = match;\r\n const { authState } = useOktaAuth();\r\n const employeebyId = useEmployeeById(employeeId);\r\n const { employee } = employeebyId;\r\n const { userRole } = useUser();\r\n const { roles } = useRoles();\r\n const [onSuccess, hideMessage, displayMessage] = useOnSuccess();\r\n const [canSubmit, disableButton, enableButton] = useSubmit();\r\n const [complications, error] = useError();\r\n\r\n const updateEmployee = (data) => {\r\n const success = () => {\r\n displayMessage();\r\n\r\n setTimeout(function () {\r\n hideMessage();\r\n }, 3000);\r\n };\r\n\r\n fetchCall(\r\n data,\r\n success,\r\n error,\r\n { url: `api/employees/${employeeId}`, method: 'PUT' },\r\n authState.idToken.idToken\r\n );\r\n };\r\n return (\r\n \r\n

Edit Employee

\r\n\r\n {onSuccess ? : null}\r\n\r\n {complications.error ? : null}\r\n\r\n
\r\n (\r\n \r\n )}\r\n no={() => }\r\n />\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default EmployeePage;\r\n","import { withFormsy } from 'formsy-react';\r\nimport React from 'react';\r\n\r\nfunction SelectPayroll({\r\n setValue,\r\n getErrorMessage,\r\n showRequired,\r\n name,\r\n getValue,\r\n placeholder,\r\n options,\r\n isPristine,\r\n}) {\r\n const changeValue = (event) => {\r\n // setValue() will set the value of the component, which in\r\n // turn will validate it and the rest of the form\r\n // Important: Don't skip this step. This pattern is required\r\n // for Formsy to work.\r\n setValue(event.currentTarget.value);\r\n };\r\n\r\n // An error message is returned only if the component is invalid\r\n const errorMessage = getErrorMessage();\r\n const requiredMessage = showRequired() ? 'Required field' : '';\r\n return (\r\n \r\n \r\n \r\n {options.map((option) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n\r\n {errorMessage ? (\r\n \r\n {errorMessage}\r\n \r\n ) : null}\r\n\r\n {!isPristine() && requiredMessage ? (\r\n \r\n {requiredMessage}\r\n \r\n ) : null}\r\n \r\n );\r\n}\r\n\r\nexport default withFormsy(SelectPayroll);\r\n","import '../styles/FormSelectEmployee.scss';\r\nimport React, { useState } from 'react';\r\nimport Formsy from 'formsy-react';\r\nimport Input from '../Input';\r\nimport Button from '../Button';\r\nimport SelectPayroll from '../SelectPayroll';\r\nimport SuccessMessage from '../SuccessMessage';\r\nimport { useOktaAuth } from '@okta/okta-react';\r\nimport useOnSuccess from '../../hooks/useOnSuccess-hook';\r\nimport { fetchCall } from '../Utilities';\r\nimport ErrorMessage from '../ErrorMessage';\r\nimport useError from '../../hooks/useError';\r\n\r\nfunction FormParticipants({ participateId, eventId, employeeId, isPaid, getParticipants }) {\r\n const { authState } = useOktaAuth();\r\n const [onSuccess, hideMessage, displayMessage] = useOnSuccess();\r\n const [, setUpdateForm] = useState({});\r\n const [complications, error] = useError();\r\n const options = [\r\n {\r\n id: 1,\r\n value: 'Paid',\r\n name: true,\r\n },\r\n { id: 2, value: 'Unpaid', name: false },\r\n ];\r\n\r\n const saveValueToState = (currentValue) => {\r\n setUpdateForm((prevState) => ({\r\n ...prevState,\r\n ...currentValue,\r\n }));\r\n };\r\n\r\n const sendToServer = async (data) => {\r\n const success = () => {\r\n displayMessage();\r\n\r\n getParticipants(employeeId);\r\n\r\n setTimeout(function () {\r\n hideMessage();\r\n }, 3000);\r\n };\r\n\r\n fetchCall(\r\n data,\r\n success,\r\n error,\r\n { url: `api/participates/${participateId}`, method: 'PUT' },\r\n authState.idToken.idToken\r\n );\r\n };\r\n return (\r\n \r\n {onSuccess ? : null}\r\n\r\n {complications.error ? : null}\r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n

Currently, no one has signed up.

\r\n )}\r\n
\r\n {/*Let's add user permissions to the form */}\r\n (\r\n \r\n {/* IF WE HAVE A SF ASSIGNED THEN LET'S REMOVE THE FORM */}\r\n {assignedSuperfrog ? null : (\r\n \r\n \r\n \r\n \r\n \r\n
\r\n ) : null}\r\n \r\n )}\r\n />\r\n \r\n ) : null;\r\n\r\n return comp;\r\n};\r\nexport default SuperFrogAssignment;\r\n","import React, { useRef } from 'react';\r\nimport Can from '../Can';\r\nimport Formsy from 'formsy-react';\r\nimport SelectEmployee from '../SelectEmployee';\r\nimport Input from '../Input';\r\nimport Button from '../Button';\r\nimport AssignmentWrapper from '../AssignmentWrapper';\r\nimport SuccessMessage from '../SuccessMessage';\r\nimport ErrorMessage from '../ErrorMessage';\r\nimport Alert from 'react-bootstrap/Alert';\r\n\r\nconst CheerleadersAssignment = ({\r\n event,\r\n assignedCheerleaders,\r\n handleRemoveSMAlert,\r\n handleSelfAssign,\r\n userRole,\r\n handleSpiritMemberAssignment,\r\n enableButton,\r\n disableButton,\r\n emplCheerleaders,\r\n canSubmit,\r\n currentEmployee,\r\n isCurrentSPType,\r\n conflictError,\r\n onSuccessDelete,\r\n onSuccess,\r\n onRoleConflict,\r\n conflictRoleMessage,\r\n}) => {\r\n const cheerleadersRef = useRef(null);\r\n const comp = event.addCheerleaders ? (\r\n \r\n
\r\n {onSuccess ? : null}\r\n\r\n {conflictError ? (\r\n \r\n ) : null}\r\n\r\n {onSuccessDelete ? : null}\r\n\r\n {onRoleConflict ? : null}\r\n\r\n {assignedCheerleaders.length !== 0 ? (\r\n <>\r\n

Cheerleaders assigned to this event:

\r\n
    \r\n {assignedCheerleaders.map((c) => (\r\n
  • \r\n {c.employee.fullName}\r\n \r\n \r\n Remove\r\n \r\n \r\n
  • \r\n ))}\r\n
\r\n \r\n ) : (\r\n

Currently, no one has signed up.

\r\n )}\r\n
\r\n {/* Adding User permissions to the form */}\r\n (\r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : null}\r\n \r\n )}\r\n />\r\n
\r\n ) : null;\r\n\r\n return comp;\r\n};\r\n\r\nexport default CheerleadersAssignment;\r\n","import React, { useRef } from 'react';\r\nimport Can from '../Can';\r\nimport Formsy from 'formsy-react';\r\nimport SelectEmployee from '../SelectEmployee';\r\nimport Input from '../Input';\r\nimport Button from '../Button';\r\nimport AssignmentWrapper from '../AssignmentWrapper';\r\nimport SuccessMessage from '../SuccessMessage';\r\nimport ErrorMessage from '../ErrorMessage';\r\nimport Alert from 'react-bootstrap/Alert';\r\n\r\nconst AssignShowgirls = ({\r\n event,\r\n assignedShowgirls,\r\n handleSelfAssign,\r\n userRole,\r\n handleSpiritMemberAssignment,\r\n enableButton,\r\n disableButton,\r\n emplShowgirls,\r\n canSubmit,\r\n isCurrentSPType,\r\n currentEmployee,\r\n handleRemoveSpiritMember,\r\n conflictError,\r\n onSuccessDelete,\r\n onSuccess,\r\n onRoleConflict,\r\n conflictRoleMessage,\r\n}) => {\r\n const showgirlsRef = useRef(null);\r\n const comp = event.addShowgirls ? (\r\n \r\n
\r\n {onSuccess ? : null}\r\n\r\n {conflictError ? (\r\n \r\n ) : null}\r\n\r\n {onSuccessDelete ? : null}\r\n\r\n {onRoleConflict ? : null}\r\n {assignedShowgirls.length !== 0 ? (\r\n <>\r\n

Showgirls assigned to this event:

\r\n
    \r\n {assignedShowgirls.map((s) => (\r\n
  • \r\n {s.employee.fullName}\r\n \r\n \r\n Remove\r\n \r\n \r\n
  • \r\n ))}\r\n
\r\n \r\n ) : (\r\n

Currently, no one has signed up.

\r\n )}\r\n
\r\n {/* Let's add user persmissions */}\r\n (\r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : null}\r\n \r\n )}\r\n />\r\n
\r\n ) : null;\r\n return comp;\r\n};\r\nexport default AssignShowgirls;\r\n","import '../styles/DashboardPage.scss';\r\nimport React, { useState } from 'react';\r\nimport Popup from 'react-popup';\r\nimport useEmployees from '../../hooks/employees-hook';\r\nimport useSubmit from '../../hooks/useSubmit';\r\nimport useOnSuccess from '../../hooks/useOnSuccess-hook';\r\nimport { useOktaAuth } from '@okta/okta-react';\r\nimport DashboardLayout from '../DashboardLayout';\r\nimport useEvent from '../../hooks/event-by-id-hook';\r\nimport CurrentEventDetails from '../CurrentEventDetails';\r\nimport { useUser } from '../../context/UserProvider';\r\nimport SuperFrogAssignment from './SuperFrogAssignment';\r\nimport CheerleadersAssignment from './CheerleadersAssignment';\r\nimport AssignShowgirls from './AssignShowgirls';\r\n\r\nfunction AssignEventPage({ match }) {\r\n const {\r\n params: { eventId },\r\n } = match;\r\n const { currentEmployee, userRole } = useUser();\r\n const [data, getEventById] = useEvent(eventId);\r\n const { event, assignments } = data;\r\n const { assignedCheerleaders, assignedShowgirls } = assignments;\r\n const [employeesData] = useEmployees();\r\n const { spiritType } = employeesData;\r\n const { emplSuperfrog, emplCheerleaders, emplShowgirls } = spiritType;\r\n const [canSubmit, disableButton, enableButton] = useSubmit();\r\n const [onSuccess, hideMessage, displayMessage] = useOnSuccess();\r\n const { authState } = useOktaAuth();\r\n const [conflict, setConflict] = useState({\r\n onRoleConflict: false,\r\n conflictError: false,\r\n roleMessage: '',\r\n onSuccessDelete: false,\r\n });\r\n\r\n /**\r\n * Handle spirit member assignment\r\n *\r\n * Since we are using this function for cheerlearders and showgirls,\r\n * I decided to add it to the parent (this component)\r\n * @param {Object} currentValue Form values\r\n */\r\n const handleSpiritMemberAssignment = (currentValue) => {\r\n // PUT: api/participants\r\n // add it to the Participants table\r\n fetch('api/participates', {\r\n method: 'POST',\r\n credential: 'same-origin',\r\n headers: {\r\n Accept: 'application/json',\r\n 'Content-Type': 'application/json',\r\n Authorization: 'Bearer ' + authState.idToken.idToken,\r\n },\r\n body: JSON.stringify(currentValue),\r\n })\r\n .then((response) => {\r\n // make sure we don't have duplicates\r\n if (response.status === 409) {\r\n setConflict((prevState) => ({\r\n ...prevState,\r\n conflictError: true,\r\n }));\r\n\r\n setTimeout(function () {\r\n setConflict({ ...conflict, conflictError: false });\r\n }, 3000);\r\n } else {\r\n displayMessage();\r\n\r\n setTimeout(function () {\r\n hideMessage('onSuccess');\r\n }, 3000);\r\n\r\n // let's refresh our data so we can display it.\r\n getEventById(eventId);\r\n }\r\n })\r\n /* eslint-disable-next-line */\r\n .catch((error) => console.log(error));\r\n };\r\n\r\n /**\r\n * Handle assignment for self\r\n *\r\n * Since we are using this function for cheerlearders and showgirls,\r\n * I decided to add it to the parent (this component)\r\n * @param {Object} e click event\r\n */\r\n const handleSelfAssign = (e) => {\r\n const { name } = e.target;\r\n const data = {\r\n employeeId: name,\r\n eventId: event.eventId,\r\n };\r\n const { userspirittype, buttonfor } = e.target.dataset;\r\n\r\n // Let's check if the user is assigned that role\r\n // so we make sure they match\r\n if (userspirittype !== buttonfor) {\r\n setConflict((prevState) => ({\r\n ...prevState,\r\n onRoleConflict: true,\r\n roleMessage: `Sorry, but you are not allowed to sign up as ${buttonfor.toUpperCase()}`,\r\n }));\r\n setTimeout(function () {\r\n hideMessage('onRoleConflict');\r\n }, 3000);\r\n }\r\n\r\n // if we clicked the SuperFrog button\r\n if (buttonfor === 'superfrog') {\r\n // Also we need to add it to the event table\r\n // assigns EmployeeId\r\n // PUT: api/events/employee/{employeeid}\r\n putParticipant(data);\r\n assignEmployeeId(data.event.eventId, name, data);\r\n }\r\n\r\n // if we clicked the cheerleader button\r\n if (buttonfor === 'cheerleader') {\r\n putParticipant(data);\r\n }\r\n\r\n // if we clicked the cheerleader button\r\n if (buttonfor === 'showgirl') {\r\n putParticipant(data);\r\n }\r\n };\r\n\r\n /**\r\n * Handle adding participants to this event\r\n *\r\n * Since we are using this function for cheerlearders and showgirls,\r\n * I decided to add it to the parent (this component)\r\n * @param {Object} currentValue form values\r\n * @returns\r\n */\r\n const putParticipant = async (currentValue) => {\r\n // PUT: api/participants\r\n // add it to the Participants table\r\n try {\r\n const response = await fetch('api/participates', {\r\n method: 'POST',\r\n credential: 'same-origin',\r\n headers: {\r\n Accept: 'application/json',\r\n 'Content-Type': 'application/json',\r\n Authorization: 'Bearer ' + authState.idToken.idToken,\r\n },\r\n body: JSON.stringify(currentValue),\r\n });\r\n // make sure we don't have duplicates\r\n if (response.status === 409) {\r\n setConflict((prevState) => ({\r\n ...prevState,\r\n conflictError: true,\r\n }));\r\n setTimeout(function () {\r\n hideMessage('conflictError');\r\n }, 3000);\r\n } else {\r\n displayMessage();\r\n\r\n getEventById(eventId);\r\n\r\n setTimeout(function () {\r\n hideMessage('onSuccess');\r\n }, 3000);\r\n }\r\n } catch (error) {\r\n return console.log(error);\r\n }\r\n };\r\n\r\n /**\r\n * Handle assignment for SuperFrog (it's is used in the final approval by admins)\r\n *\r\n * Since we are using this function for cheerlearders and showgirls,\r\n * I decided to add it to the parent (this component)\r\n * @param {Number} eventId\r\n * @param {Number} employeeId\r\n * @param {Object} currentValue\r\n * @returns\r\n */\r\n const assignEmployeeId = async (eventId, employeeId, currentValue) => {\r\n try {\r\n const response = await fetch(`api/events/${eventId}/employee/${employeeId}`, {\r\n method: 'PUT',\r\n credential: 'same-origin',\r\n headers: {\r\n Accept: 'application/json',\r\n 'Content-Type': 'application/json',\r\n Authorization: 'Bearer ' + authState.idToken.idToken,\r\n },\r\n body: JSON.stringify(currentValue),\r\n });\r\n if (response.ok) {\r\n displayMessage();\r\n setTimeout(function () {\r\n hideMessage('onSuccess');\r\n }, 3000);\r\n\r\n // let's refresh our data so we can display it.\r\n getEventById(eventId);\r\n }\r\n } catch (error) {\r\n return console.log(error);\r\n }\r\n };\r\n\r\n /**\r\n * Handle remove of spirit member to event\r\n *\r\n * Since we are using this function for cheerlearders and showgirls,\r\n * I decided to add it to the parent (this component)\r\n * @param {Number} spiritMemberId\r\n */\r\n const handleRemoveSpiritMember = (spiritMemberId) => {\r\n /**\r\n * We are passing in the Participants ID\r\n * So we can easily delete it.\r\n */\r\n fetch(`api/participates/${spiritMemberId}`, {\r\n method: 'DELETE',\r\n credentials: 'same-origin',\r\n headers: {\r\n Accept: 'application/json',\r\n 'Content-Type': 'application/json',\r\n Authorization: 'Bearer ' + authState.idToken.idToken,\r\n },\r\n })\r\n .then((response) => {\r\n if (response.ok) {\r\n setConflict((prevState) => ({ ...prevState, onSuccessDelete: true }));\r\n // let's refresh our data so we can display it.\r\n getEventById(eventId);\r\n setTimeout(function () {\r\n hideMessage('onSuccessDelete');\r\n }, 3000);\r\n }\r\n })\r\n .catch((err) => console.log(err));\r\n };\r\n\r\n /**\r\n * Display alert message before deleting other Spirit Member\r\n * @param {Object} e click event\r\n */\r\n const handleRemoveSMAlert = (e) => {\r\n const { name } = e.target;\r\n\r\n Popup.create({\r\n content: 'Are you sure you want to delete this employee from this event?',\r\n buttons: {\r\n left: [\r\n {\r\n text: 'Cancel',\r\n className: 'danger',\r\n action: function () {\r\n Popup.alert(\r\n 'You pressed the Cancel button and will return back to the form.'\r\n );\r\n\r\n /** Close this popup. Close will always close the current visible one, if one is visible */\r\n Popup.close();\r\n },\r\n },\r\n ],\r\n right: [\r\n {\r\n text: 'Delete Assignment',\r\n className: 'success',\r\n action: function () {\r\n handleRemoveSpiritMember(name);\r\n\r\n /** Close this popup. Close will always close the current visible one, if one is visible */\r\n Popup.close();\r\n },\r\n },\r\n ],\r\n },\r\n });\r\n };\r\n\r\n /**\r\n * Check if current employee is the spirit member\r\n * the event needs.\r\n *\r\n * @param {String} spiritMember The employee spirit member assignment\r\n * @param {String} checkAgainst The spirit member the form needs.\r\n */\r\n const isCurrentSPType = (spiritMember, checkAgainst) => {\r\n if (spiritMember.toUpperCase() === checkAgainst.toUpperCase()) {\r\n return true;\r\n }\r\n\r\n return false;\r\n };\r\n return (\r\n \r\n

Customer Information

\r\n\r\n \r\n\r\n
\r\n \r\n\r\n \r\n\r\n \r\n
\r\n
\r\n );\r\n}\r\nexport default AssignEventPage;\r\n","import { withFormsy } from 'formsy-react';\r\nimport React from 'react';\r\n\r\nfunction RadioGroup({\r\n setValue,\r\n getErrorMessage,\r\n showRequired,\r\n getValue,\r\n options,\r\n isPristine,\r\n name,\r\n title,\r\n}) {\r\n const changeValue = (event) => {\r\n // onSetValue(value);\r\n // changeCallback(name, value);\r\n // setValue() will set the value of the component, which in\r\n // turn will validate it and the rest of the form\r\n // Important: Don't skip this step. This pattern is required\r\n // for Formsy to work.\r\n setValue(event.currentTarget.value);\r\n };\r\n // An error message is returned only if the component is invalid\r\n const errorMessage = getErrorMessage();\r\n const requiredMessage = showRequired() ? `The ${title} field is required.` : '';\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nexport default withFormsy(RadioGroup);\r\n","import '../styles/DashboardPage.scss';\r\nimport React, { useState } from 'react';\r\nimport Formsy from 'formsy-react';\r\nimport Select from '../Select';\r\nimport TextArea from '../TextArea';\r\nimport Button from '../Button';\r\nimport { denyReasons } from '../Utilities';\r\nimport Can from '../Can';\r\nimport SuccessMessage from '../SuccessMessage';\r\nimport SelectEmployee from '../SelectEmployee';\r\nimport RadioGroup from '../RadioGroup';\r\nimport useEmployees from '../../hooks/employees-hook';\r\nimport { useOktaAuth } from '@okta/okta-react';\r\nimport useEvent from '../../hooks/event-by-id-hook';\r\nimport DashboardLayout from '../DashboardLayout';\r\nimport useSubmit from '../../hooks/useSubmit';\r\nimport useOnSuccess from '../../hooks/useOnSuccess-hook';\r\nimport { useUser } from '../../context/UserProvider';\r\nimport { fetchCall } from '../../components/Utilities';\r\nimport ErrorMessage from '../ErrorMessage';\r\n\r\nfunction ScheduleDenyEventPage({ match }) {\r\n const {\r\n params: { eventId },\r\n } = match;\r\n const { authState } = useOktaAuth();\r\n const [employeesData] = useEmployees();\r\n const { employees } = employeesData;\r\n const { userRole } = useUser();\r\n const [currentForm, setCurrentForm] = useState({\r\n eventDecision: '',\r\n comments: '',\r\n employeeId: '',\r\n reasonDeny: '',\r\n isCanceled: '',\r\n });\r\n const [data, getEventById] = useEvent(eventId);\r\n const [canSubmit, disableButton, enableButton] = useSubmit();\r\n const [onSuccess, hideMessage, displayMessage] = useOnSuccess();\r\n const [complications, setError] = useState({ error: false, message: '' });\r\n\r\n const sendToServer = (data) => {\r\n const { eventDecision } = data;\r\n const success = () => {\r\n displayMessage();\r\n getEventById(eventId);\r\n setTimeout(function () {\r\n hideMessage();\r\n }, 8000);\r\n };\r\n const error = () => {\r\n setError({\r\n error: true,\r\n message: 'Oh no, something went wrong. Please contact the IT department.',\r\n });\r\n setTimeout(function () {\r\n setError({ error: false, message: '' });\r\n }, 8000);\r\n };\r\n let options = {\r\n url: '',\r\n method: 'PUT',\r\n };\r\n\r\n if (eventDecision === 'isScheduled') {\r\n options.url = `api/events/${eventId}/isScheduled/true`;\r\n fetchCall(data, success, error, options, authState.idToken.idToken);\r\n }\r\n\r\n if (eventDecision === 'isDenied') {\r\n options.url = `api/events/${eventId}/isDenied/true`;\r\n fetchCall(data, success, error, options, authState.idToken.idToken);\r\n }\r\n\r\n if (eventDecision === 'isCanceled') {\r\n options.url = `api/events/${eventId}/cancel/true`;\r\n fetchCall(data, success, error, options, authState.idToken.idToken);\r\n }\r\n\r\n // to stop user's from continuously hitting submit\r\n disableButton();\r\n };\r\n\r\n const handleChange = (data) => {\r\n setCurrentForm((prevState) => ({\r\n ...prevState,\r\n ...data,\r\n }));\r\n };\r\n const { event } = data;\r\n const { isScheduled, isDenied, addSuperFrog, reasonDeny, isCanceled } = event;\r\n const { eventDecision } = currentForm;\r\n const radioOptions = [\r\n { value: 'isScheduled', title: 'Approve' },\r\n { value: 'isDenied', title: 'Deny' },\r\n { value: 'isCanceled', title: 'Cancel' },\r\n ];\r\n const eventApproval = isScheduled\r\n ? 'isScheduled'\r\n : isDenied\r\n ? 'isDenied'\r\n : isCanceled\r\n ? 'isCanceled'\r\n : '';\r\n\r\n return (\r\n \r\n
\r\n
\r\n

* Required Fields

\r\n (\r\n \r\n
\r\n
\r\n

{event.eventName}

\r\n
    \r\n
  • \r\n Date: {event.eventDate}\r\n
  • \r\n
  • \r\n Name:{' '}\r\n {`${event.customer.firstName} ${event.customer.lastName} `}\r\n
  • \r\n
  • \r\n Email: {event.customer.email}\r\n
  • \r\n
  • \r\n Phone Number:{' '}\r\n {event.customer.phoneNumber}\r\n
  • \r\n
\r\n
\r\n\r\n
\r\n
\r\n

\r\n *Choose and option\r\n

\r\n \r\n
\r\n {onSuccess ? (\r\n \r\n ) : null}\r\n\r\n {complications.error ? (\r\n \r\n ) : null}\r\n
\r\n\r\n
\r\n

Add any additional information to customer email.

\r\n \r\n
\r\n {(eventDecision === 'isScheduled' && addSuperFrog) ||\r\n isScheduled ? (\r\n
\r\n

SuperFrog Contact

\r\n

\r\n Select the employee contact from the dropdown below.\r\n This information will be emailed to the customer.\r\n

\r\n \r\n
\r\n ) : null}\r\n\r\n {eventDecision === 'isDenied' || isDenied ? (\r\n
\r\n

\r\n Reason for denying a request.\r\n

\r\n

\r\n Select a reason from the dropdown below. If you are\r\n accepting a request then leave this blank.\r\n

\r\n \r\n
\r\n ) : null}\r\n
\r\n\r\n \r\n \r\n
\r\n \r\n )}\r\n />\r\n
\r\n \r\n
\r\n );\r\n}\r\n\r\nexport default ScheduleDenyEventPage;\r\n","import '../styles/DashboardPage.scss';\r\nimport React from 'react';\r\nimport Can from '../Can';\r\nimport NoAccess from '../NoAccess';\r\nimport DashboardLayout from '../DashboardLayout';\r\nimport useEmployees from '../../hooks/employees-hook';\r\nimport { useUser } from '../../context/UserProvider';\r\nimport { Link } from 'react-router-dom';\r\nimport ListGroup from 'react-bootstrap/ListGroup';\r\n\r\nfunction PayrollByEmployee() {\r\n const { userRole } = useUser();\r\n const [data] = useEmployees();\r\n\r\n return (\r\n \r\n

Select an employee to view their events.

\r\n (\r\n \r\n {data.employees.map((employee) => (\r\n \r\n \r\n {employee.fullName}\r\n \r\n \r\n ))}\r\n \r\n )}\r\n no={() => }\r\n />\r\n
\r\n );\r\n}\r\nexport default PayrollByEmployee;\r\n","import { useState, useEffect, useMemo, useCallback } from 'react';\r\nimport { useOktaAuth } from '@okta/okta-react';\r\n\r\n/**\r\n * Fetch events by employee/student (api/events/employee/{id})\r\n *\r\n * @param {String} id Employee Id\r\n * @returns Array [events, getEventsByEmployeeId]\r\n */\r\nconst useEventsByEmployeeId = (id) => {\r\n const { authState } = useOktaAuth();\r\n const initial = useMemo(() => {\r\n const initial = {\r\n data: [\r\n {\r\n eventId: '',\r\n eventName: '',\r\n eventDate: '2021-08-06T12:00',\r\n startTime: '2021-08-06 12:00',\r\n endTime: '2021-08-06 12:00',\r\n employeeId: '',\r\n participants: [\r\n {\r\n participateId: '',\r\n employeeId: '',\r\n isPaid: false,\r\n },\r\n ],\r\n },\r\n ],\r\n error: null,\r\n loading: true,\r\n };\r\n return initial;\r\n }, []);\r\n const [events, setEvents] = useState(initial);\r\n const getEventsByEmployeeId = useCallback(\r\n (id) => {\r\n /**\r\n * Fetch events by ID\r\n *\r\n * Returns a list of events the employee is assigned to\r\n */\r\n\r\n fetch(`api/events/employee/${id}`, {\r\n headers: {\r\n Authorization: 'Bearer ' + authState.idToken.idToken,\r\n },\r\n })\r\n .then((rsp) => {\r\n return rsp.json();\r\n })\r\n .then((events) => {\r\n setEvents((prevState) => ({ ...prevState, data: events, loading: false }));\r\n })\r\n /* eslint-disable-next-line */\r\n .catch((err) => console.log(err));\r\n },\r\n [authState.idToken]\r\n );\r\n\r\n useEffect(() => {\r\n getEventsByEmployeeId(id);\r\n\r\n return function cleanup() {\r\n setEvents(initial);\r\n };\r\n }, [initial, getEventsByEmployeeId, id]);\r\n\r\n return [events, getEventsByEmployeeId];\r\n};\r\n\r\nexport default useEventsByEmployeeId;\r\n","import React from 'react';\r\nimport { formatDateFront, formatTime, calculateTotalHours } from '../Utilities';\r\nimport FormParticipants from './FormParticipants';\r\nimport useEventsByEmployeeId from '../../hooks/events-by-employee-hook';\r\nimport NoAccess from '../NoAccess';\r\nimport Can from '../Can';\r\nimport DashboardLayout from '../DashboardLayout';\r\nimport { useUser } from '../../context/UserProvider';\r\nimport useEmployeeById from '../../hooks/employee-by-id-hook';\r\nimport Table from 'react-bootstrap/Table';\r\n\r\nfunction PayrollByEmployee({ match }) {\r\n const { userRole } = useUser();\r\n const {\r\n params: { employeeId },\r\n } = match;\r\n const { employee } = useEmployeeById(employeeId);\r\n const [events, getEventsByEmployeeId] = useEventsByEmployeeId(employeeId);\r\n\r\n let counter = 0;\r\n const payrollHeadings = [\r\n 'Event Date',\r\n 'Event Time',\r\n 'Total Time',\r\n 'Event Name',\r\n 'Pay Status',\r\n 'Payment Form',\r\n ];\r\n\r\n return (\r\n \r\n

{employee.fullName}

\r\n (\r\n \r\n {events.data.length === 0 ?

{'No assigned events.'}

: null}\r\n \r\n \r\n {payrollHeadings.map((heading) => {\r\n counter = counter + 1;\r\n return ;\r\n })}\r\n \r\n\r\n {events.data.map((item) => {\r\n let formattedDate = formatDateFront(item.eventDate);\r\n let formattedStartTime = formatTime(item.startTime);\r\n let formattedEndTime = formatTime(item.endTime);\r\n let participate =\r\n item.participants.find(\r\n (p) => p.employeeId === employee.employeeId\r\n ) || [];\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n
{heading}
\r\n {formattedDate}\r\n \r\n {`${formattedStartTime} - ${formattedEndTime}`}\r\n \r\n {calculateTotalHours(\r\n formattedStartTime,\r\n formattedEndTime\r\n ) === 0\r\n ? '30min'\r\n : `${calculateTotalHours(\r\n formattedStartTime,\r\n formattedEndTime\r\n )}hr`}\r\n \r\n {item.eventName}\r\n \r\n {participate.isPaid ? (\r\n Done\r\n ) : (\r\n Pending\r\n )}\r\n \r\n \r\n
\r\n )}\r\n no={() => }\r\n />\r\n
\r\n );\r\n}\r\n\r\nexport default PayrollByEmployee;\r\n","import { useState, useEffect, useMemo } from 'react';\r\nimport { useOktaAuth } from '@okta/okta-react';\r\n\r\n/**\r\n * Fetch rates/items by ID\r\n *\r\n * Prices are in a DB table. Client can easily update without the need to touch any code.\r\n *\r\n * @param {String} id Item/Rate Id\r\n * @returns Object\r\n */\r\nconst useRateById = (id) => {\r\n const initial = useMemo(() => {\r\n const initial = {\r\n item: [],\r\n error: null,\r\n loading: true,\r\n };\r\n return initial;\r\n }, []);\r\n const { authState } = useOktaAuth();\r\n const [rate, setRate] = useState(initial);\r\n\r\n useEffect(() => {\r\n /**\r\n * Get event by id\r\n */\r\n const getEventsByCurrentEmployee = () => {\r\n fetch(`api/items/${id}`, {\r\n headers: {\r\n Authorization: 'Bearer ' + authState.idToken.idToken,\r\n },\r\n })\r\n .then((rsp) => {\r\n if (rsp.statusText === 'Unauthorized') {\r\n setRate((prevState) => ({\r\n ...prevState,\r\n error: 'Error: Unathorized to view this material.',\r\n }));\r\n }\r\n return rsp.json();\r\n })\r\n .then((item) => {\r\n setRate({\r\n loading: false,\r\n item,\r\n });\r\n })\r\n /* eslint-disable-next-line */\r\n .catch((err) => console.log(err));\r\n };\r\n\r\n getEventsByCurrentEmployee();\r\n\r\n return function cleanup() {\r\n setRate(initial);\r\n };\r\n }, [authState, initial, id]);\r\n\r\n return rate;\r\n};\r\n\r\nexport default useRateById;\r\n","import React from 'react';\r\nimport Formsy from 'formsy-react';\r\nimport Input from '../Input';\r\nimport Button from '../Button';\r\nimport SuccessMessage from '../SuccessMessage';\r\nimport NoAccess from '../NoAccess';\r\nimport Can from '../Can';\r\nimport DashboardLayout from '../DashboardLayout';\r\nimport useRateById from '../../hooks/rate-by-id-hook';\r\nimport { useOktaAuth } from '@okta/okta-react';\r\nimport useSubmit from '../../hooks/useSubmit';\r\nimport useOnSuccess from '../../hooks/useOnSuccess-hook';\r\nimport { useUser } from '../../context/UserProvider';\r\nimport { fetchCall } from '../Utilities';\r\nimport ErrorMessage from '../ErrorMessage';\r\nimport useError from '../../hooks/useError';\r\n\r\nfunction ItemFormPage({ match }) {\r\n const {\r\n params: { itemId },\r\n } = match;\r\n const rate = useRateById(itemId);\r\n const { item } = rate;\r\n const { userRole } = useUser();\r\n const { authState } = useOktaAuth();\r\n const [canSubmit, disableButton, enableButton] = useSubmit();\r\n const [onSuccess, hideMessage, displayMessage] = useOnSuccess();\r\n const [complications, error] = useError();\r\n\r\n const updateItem = async (data) => {\r\n const success = () => {\r\n displayMessage();\r\n\r\n setTimeout(function () {\r\n hideMessage();\r\n }, 3000);\r\n };\r\n\r\n fetchCall(\r\n data,\r\n success,\r\n error,\r\n { url: `api/items/${itemId}`, method: 'PUT' },\r\n authState.idToken.idToken\r\n );\r\n };\r\n\r\n return (\r\n \r\n
\r\n

Edit Rates

\r\n\r\n
\r\n (\r\n \r\n
\r\n

Rates

\r\n

* Required Fields

\r\n {onSuccess ? (\r\n \r\n ) : null}\r\n\r\n {complications.error ? (\r\n \r\n ) : null}\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n )}\r\n no={() => }\r\n />\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default ItemFormPage;\r\n","import React from 'react';\r\nimport { Link } from 'react-router-dom';\r\n\r\nconst NotFound = () => {\r\n return (\r\n
\r\n

Looks like we lost you...

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

\r\n SuperFrog is very happy that you came to visit, however, he knows you were not\r\n looking for him, you were looking for another page. Are you lost? The page you are\r\n trying to visit might be an old link or maybe it moved.\r\n

\r\n

\r\n Go to Homepage \r\n

\r\n
\r\n );\r\n};\r\nexport default NotFound;\r\n","export default __webpack_public_path__ + \"static/media/tcu-logo-purple.a8424d37.svg\";","import React, { useEffect, useRef } from 'react';\r\nimport OKTA_CONFIG from '../../app.config';\r\nimport Logo from '../../library/images/svg/tcu-logo-purple.svg';\r\nimport { useOktaAuth } from '@okta/okta-react';\r\nimport * as OktaSignIn from '@okta/okta-signin-widget';\r\nimport '@okta/okta-signin-widget/dist/css/okta-sign-in.min.css';\r\n\r\nfunction LoginPage() {\r\n const { oktaAuth } = useOktaAuth();\r\n const widgetRef = useRef();\r\n\r\n useEffect(() => {\r\n if (!widgetRef.current) {\r\n return false;\r\n }\r\n\r\n const widget = new OktaSignIn({\r\n baseUrl: OKTA_CONFIG.url,\r\n logo: Logo,\r\n colors: {\r\n brand: '#4d1979',\r\n },\r\n helpLinks: {\r\n help: 'https://password.tcu.edu',\r\n forgotPassword: 'https://password.tcu.edu',\r\n unlock: 'https://password.tcu.edu',\r\n },\r\n brandName: 'TCU',\r\n authParams: {\r\n issuer: OKTA_CONFIG.issuer,\r\n scopes: ['openid', 'email', 'profile', 'address', 'phone'],\r\n },\r\n });\r\n\r\n widget.renderEl(\r\n { el: widgetRef.current },\r\n (res) => {\r\n if (res.status === 'SUCCESS') {\r\n oktaAuth.signInWithRedirect({ sessionToken: res.session.token });\r\n }\r\n },\r\n (err) => {\r\n throw err;\r\n }\r\n );\r\n\r\n return () => widget.remove();\r\n }, [oktaAuth]);\r\n\r\n return (\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default LoginPage;\r\n","import React from 'react';\r\nimport { Security, SecureRoute, LoginCallback } from '@okta/okta-react';\r\nimport { OktaAuth, toRelativeUrl } from '@okta/okta-auth-js';\r\nimport OKTA_CONFIG from './app.config';\r\nimport { Route, Switch, useHistory } from 'react-router-dom';\r\nimport Layout from './components/Layout';\r\nimport Home from './components/Home';\r\nimport Request from './components/Request';\r\nimport DashboardPage from './components/auth/DashboardPage';\r\nimport EventPage from './components/auth/EventPage';\r\nimport MyEventsPage from './components/auth/MyEventsPage';\r\nimport CustomerPage from './components/auth/CustomerPage';\r\nimport EmployeePage from './components/auth/EmployeePage';\r\nimport PayrollPage from './components/auth/PayrollPage';\r\nimport BlackoutPage from './components/auth/BlackoutPage';\r\nimport AllEmployeesPage from './components/auth/AllEmployeesPage';\r\nimport AllItemsPrice from './components/auth/AllItemsPrice';\r\nimport AddEmployeePage from './components/auth/AddEmployeePage';\r\nimport ViewBlackoutsPage from './components/auth/ViewBlackoutsPage';\r\nimport AddBlackoutPage from './components/auth/AddBlackoutPage';\r\nimport CalendarView from './components/CalendarView';\r\nimport TermsConditions from './components/TermsConditions';\r\nimport AssignEventPage from './components/auth/AssignEventPage';\r\nimport ScheduleDenyEventPage from './components/auth/ScheduleDenyEventPage';\r\nimport PayrollByEmployeePage from './components/auth/PayrollByEmployeePage';\r\nimport PayrollByEmployee from './components/auth/PayrollByEmployee';\r\nimport ItemFormPage from './components/auth/ItemFormPage';\r\nimport NotFound from './components/NotFound';\r\nimport UserProvider from './context/UserProvider';\r\nimport LoginPage from './components/auth/LoginPage';\r\n\r\nconst oktaAuth = new OktaAuth({\r\n issuer: OKTA_CONFIG.issuer,\r\n clientId: OKTA_CONFIG.client_id,\r\n redirectUri: OKTA_CONFIG.redirect_uri,\r\n pkce: false,\r\n responseType: ['id_token', 'code', 'token'],\r\n scopes: ['openid', 'email', 'profile'],\r\n});\r\n\r\nfunction App() {\r\n const history = useHistory();\r\n const restoreOriginalUri = async (_oktaAuth, originalUri) => {\r\n history.replace(\r\n toRelativeUrl(originalUri || '/dashboard', window.location.origin + '/dashboard')\r\n );\r\n };\r\n\r\n const customAuthHandler = () => {\r\n // Redirect to the /login page that has a CustomLoginComponent\r\n history.push('/login');\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n }\r\n />\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default App;\r\n","// In production, we register a service worker to serve assets from local cache.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\r\n// cached resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\r\n// This link also includes instructions on opting out of this behavior.\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/)\r\n);\r\n\r\nexport default function register() {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Lets check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl);\r\n } else {\r\n // Is not local host. Just register service worker\r\n registerValidSW(swUrl);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then((registration) => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the old content will have been purged and\r\n // the fresh content will have been added to the cache.\r\n // It's the perfect time to display a \"New content is\r\n // available; please refresh.\" message in your web app.\r\n console.log('New content is available; please refresh.');\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch((error) => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then((response) => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n if (\r\n response.status === 404 ||\r\n response.headers.get('content-type').indexOf('javascript') === -1\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then((registration) => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl);\r\n }\r\n })\r\n .catch(() => {\r\n console.log('No internet connection found. App is running in offline mode.');\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then((registration) => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","// These must be the first lines in src/index.js\r\nimport 'react-app-polyfill/ie11';\r\nimport 'react-app-polyfill/stable';\r\nimport 'bootstrap/dist/css/bootstrap.css';\r\nimport './library/css/style.min.css';\r\nimport './components/styles/scss/App.scss';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { BrowserRouter } from 'react-router-dom';\r\nimport App from './App';\r\nimport registerServiceWorker from './registerServiceWorker';\r\n\r\n//const baseUrl = document.getElementsByTagName('base')[0].getAttribute('href');\r\nconst rootElement = document.getElementById('root');\r\n\r\nReactDOM.render(\r\n \r\n \r\n ,\r\n rootElement\r\n);\r\n\r\nregisterServiceWorker();\r\n"],"sourceRoot":""}