{"version":3,"sources":["components/images/fakeInvoice.pdf","utils/api.js","utils/calc.js","utils/constants.js","utils/dateHelpers.js","utils/filterHelpers.js","components/CollapsibleCardSection.js","components/DateFilter.js","components/DateQuickSelect.js","components/EstimatedTimeOfDay.js","components/FilterableScreen.js","components/FilterSet.js","components/FilterText.js","components/FilterSwitch.js","components/FilterSelect.js","components/FilterMultiSelect.js","components/JobSummaryModal.js","components/Pager.js","components/LinkPanel.js","components/StatCard.js","components/StripeCheckout.js","components/TermsAndConditions.js","components/TextNotificationModal.js","components/Upload.js","components/SortHeader.js","components/EditUnitType.js","components/DocumentUpload.js","components/OrgAccessModule.js","components/RatingModule.js","components/ScheduleModal.js","components/OrgTypeahead.js","components/SHBSpinner.js","components/ChecklistImageUpload.js","components/ProfileImageRender.js","components/AddressAutocomplete.js","components/MemberMouseLookupModal.js","components/JobDocumentUpload.js","utils/helpers.js","utils/userContext.js","utils/storageFactory.js","layouts/DesktopContainer.js","layouts/Footer.js","hooks/useInterval.js","layouts/SidebarMenu.js","pages/Admin.js","pages/DashboardAdmin.js","pages/DashboardCompany.js","pages/Home.js","pages/Job.js","pages/Jobs.js","pages/Organizations.js","pages/PrivateJob.js","pages/PrivateJobs.js","pages/Profile.js","pages/PublicProfile.js","pages/ReferenceDataList.js","pages/Register.js","pages/Reports.js","pages/Shed.js","pages/Sheds.js","components/images/shb_logo.jpeg","pages/SignIn.js","hooks/useAlert.js","pages/User.js","pages/Users.js","pages/ForgotPassword.js","pages/ResetPassword.js","pages/UpdatePassword.js","pages/HaulerRegistration.js","pages/CompanyRegistration.js","pages/HaulerFirmProfile.js","pages/CompanyProfile.js","pages/PublicProfileCompany.js","pages/Subscriptions.js","pages/RatingsContainer.js","pages/CompanyRatings.js","pages/HaulerRatings.js","pages/Chats.js","pages/Invoices.js","pages/UnInvoicedLineItems.js","pages/Privacy.js","pages/ScheduleViewer.js","App.js","registerServiceWorker.js","index.js"],"names":["API","userToken","user","localStorage","getItem","JSON","parse","token","commonHeaders","Accept","Authorization","DIRECTIONS_KEY","headers","Object","assign","multipart_headers","queryString","params","query","keys","map","k","encodeURIComponent","join","length","apiFetch","url","axios","get","api","downloadPDF","link","document","createElement","setAttribute","pdf1","style","visibility","body","appendChild","click","removeChild","Alert","error","fetch_raw","fetch","upload","verb","data","toLowerCase","post","put","patch","method","timeout","postWithExcelReturn","responseType","fetchWithPdfReturn","get_directions","delete","post_form_data","formData","put_form_data","post_form_data_get_blob","getOrgDrivers","orgId","then","response","drivers","_","d","label","name","value","id","catch","helpers","catchHandler","getCompanies","r","companies","x","getTimezones","timezones","getHaulerFirms","haulerFirms","getJobTypes","jobTypes","getStates","states","getUnitTypes","unitTypes","getUnitStyles","unitStyles","getUnitMaterials","unitMaterials","getUnitColors","unitColors","getAvailableRoles","roleObject","success","availableRoles","availableHaulerRoles","e","console","ROLE_NAMES","REPORTING","COMPANY_ADMIN","DRIVER","DISPATCHER","COMPANY_USER","COMPANY_CLERK","SYSADMIN","ROLE_IDS","ROLE_DICTIONARY","7","6","5","2","4","3","1","HAULER_ROLES","groupName","COMPANY_ROLES","ALL_ROLES","ADMIN_TASK_ROLE_IDS","ORG_TYPE_NAMES","RTO","MANUFACTURER","HAULER_FIRM","ORG_TYPE_IDS","ORG_TYPE_LIST","EMPTY_ORG_SUBSCRIPTION","org","subscriptionType","startDate","endDate","numberOfMemberList","slice","role","amount","editing","constants","CALENDAR_VIEW_TYPES","MONTH","WEEK","DAY","THEME","darkTheme","lightTheme","TEN_SECONDS_MS","ONE_MINUTES_MS","FIVE_MINUTES_MS","TEN_MINUTES_MS","TWENTY_MINUTES_MS","TWENTY_THREE_HOURS_MS","DEFAULT_TIMEZONE","REPORT_PARAMETER_TYPES","Text","DateRange","Date","ApiList","Integer","Boolean","STATES","s","SORT_DIRECTION","ASC","DESC","BREAKPOINTS","mobile","mobileLandscape","smallDesktop","tablet","tabletLandscape","desktop","desktopLarge","desktopWide","RIG_TYPES","PRODUCT_TYPES","JOB_STATUSES","JOB_STATUS_IDS","OPEN","RESERVED","SCHEDULED","IN_PROGRESS","COMPLETE","CANCELLED","JOB_STATUS_NAMES","PRODUCT_STATUS","SHED_STYLES","COLORS","COLOR_IDS","BLUE","RED","GREEN","WHITE","BLACK","OTHER","ROOF_MATERIALS","MATERIALS","JOB_TYPES","JOB_TYPE_IDS","RETURN","RETRIEVAL","OFF_LOT","MOVE","MFG","RTO_DELIVERY","JOB_FEES","defaultPrice","REFERENCE_DATA_URL_LIST","maxNameLength","elementName","pageTitle","iconKey","toggleURL","saveURL","listURL","reactPath","REPORT_URL_LIST","plural","showCSVButton","RENDER_TYPES","CSV","PDF","Excel","ADMIN_TABS","REFERENCES","REPORTS","EMPTY_ORGANIZATION","aboutUs","email","addressLine1","addressLine2","city","state","zip","phoneNumber","companyType","rigTypes","password","passwordAgain","einNumber","alternateEIN","cardToken","userList","locations","primaryContactFirstName","primaryContactMiddleName","primaryContactLastName","primaryContactPhoneNumber","primaryContactEmail","primaryContactUsername","hasInternalDispatcher","dispatcherFirstName","dispatcherLastName","dispatcherTitle","dispatcherPhoneNumber","dispatcherFaxNumber","dispatcherEmail","sameAccountingAddress","sameAccountingContact","accountingName","accountingAddressLine1","accountingAddressLine2","accountingCity","accountingState","accountingZip","accountingContactFirstName","accountingContactLastName","accountingContactTitle","accountingContactPhoneNumber","accountingContactFaxNumber","accountingContactEmail","status","EMPTY_USER","firstName","middleName","lastName","username","cdlNumber","roles","cdlState","EMPTY_LOCATION","locationType","EMPTY_DEFAULT_FEE","feeType","jobType","EMPTY_CHECK_LIST_ITEM","itemType","documentType","isRequired","seq","prompt","defaultBooleanValue","regExValidation","LOCATION_TYPES","Primary","BillTo","PayTo","Inventory","PHRASES","SUBSCRIPTION_STATUSES","DOCUMENT_TYPE_IDS","USER_PROFILE_IMAGE","COMPANY_PROFILE_IMAGE","SIGNATURE","DOCUMENT_TYPE_LIST","CHECKLIST_ITEM_TYPE_IDS","ATTACHMENT","BOOLEAN","TEXT","PAYMENT","GPS_COORDINATES","MIME_XLSX","MIME_PDF","INVOICE_STATUSES","INVOICE_STATUS_IDS","pending","paid","declined","cancelled","delivered","YMD","MDY","MDY4","YMDHMS","momentFromString","date","fmt","moment","VALID_DATE_FORMAT_LIST","verifyDate","test","isValid","dateHelpers","isDateValid","dateString","getSelectedDate","format","toShortDateString","toMDYDateString","toDateString","toTimeString","getStringFromMoment","m","formatDateToShortDate","isMoment","getTimeStringFromMoment","getMomentFromString","parseDatePickerDate","validated","getTimeRange","start","startOf","i","add","formatDateForServer","formatDateTimeForServer","dateTime","dateFormatForClient","datetime","toDate","dateTimeFormat","utc","local","monthDayAndYear","find_filter","filterName","filters","find","filterHelpers","getFilters","priorFilters","newFilter","filterIndex","findIndex","newFilters","push","reject","filter","values","currentFilterValue","filterElement","f","transformFilters","reduce","acc","item","itemValueToAdd","undefined","transformFiltersMultiToCSV","saveSearch","area","sort_dir","sort_field","serialized_search","setSavedFilters","callBack","search","getValue","getValues","getStartDate","getEndDate","CollapsibleCardSection","startOpen","titleClass","cardName","cardClass","alwaysOpen","cardBody","cardFooter","initialOpen","isBoolean","stayOpen","useState","collapseOpen","setCollapseOpen","useEffect","newOpen","Card","className","CardHeader","onClick","disabled","Collapse","isOpen","CardBody","CardFooter","DateFilter","props","customFilterClassName","displayName","selected","onChange","dateDisplay","onChangeCallback","filteredDisplay","DateQuickSelect","Input","quickSelectType","setStartDate","subtract","setEndDate","endOf","changeQuickSelect","target","type","width","float","EstimatedTimeOfDay","FilterableScreen","breakpoints","currentBreakpoint","children","pager","FilterSet","filterDisplayText","collapse","open","clearFilters","toggleFilter","bind","getFilterDisplay","this","setState","prevProps","isEqual","prevState","toggleFilters","filterDisplay","chain","Row","Col","title","icon","Button","size","marginTop","marginBottom","childrenClassName","xs","Component","FilterText","setValue","minLength","debounceTimeout","event","resolvedValue","forceInt","parseInt","isNaN","useEqualsDisplayName","descriptionPrefix","FilterSwitch","display","checked","FilterSelect","options","setOptions","selectedValue","closeMenuOnSelect","isMulti","components","makeAnimated","selection","onBlurResetsInput","onSelectResetsInput","onCloseResetsInput","classNamePrefix","FilterMultiSelect","setValues","selections","labels","valuesDisplay","selectedValues","o","includes","JobSummaryModal","Modal","ModalHeader","ModalBody","u","ModalFooter","ButtonGroup","onClose","PagerLink","PaginationItem","PaginationLink","linkText","Pager","warn","showPager","totalPages","previous","pageNumber","next","Pagination","refPage","LinkPanel","sm","colSize","to","routePath","count","StatCard","tag","Link","pathname","tabName","loadStripe","TermsAndConditions","TextNotificationModal","openValue","setOpen","message","setMessage","closeModal","element","ceil","newDocument","file","document_type","document_type_id","SortHeader","sortDirection","direction","setDirection","callBackDir","onCallback","fieldName","paddingRight","sorted","EditUnitType","companyUnitTypes","organizationUnitTypes","setOrganizationUnitTypes","unitTypeList","setUnitTypeList","organization","registrationMode","setOrganization","saveUnit","payload","Organization","Id","Name","Email","PhoneNumber","AboutUs","EIN","AlternateEIN","alternateEINNumber","TypeOfCompany","typeOfCompany","CompanyUnitTypes","Table","list","l","addUnitType","placeholder","index","newList","window","confirm","splice","deleteUnitType","DocumentUpload","userCtx","useContext","UserContext","documentTypeList","setDocumentTypeList","selectedDocumentType","setSelectedDocumentType","uploadProcessing","setUploadProcessing","documentList","setDocumentList","showUploadModule","setShowUploadModule","excludeDocTypeIdList","isMounted","contains","classnames","projectSuccess","spin","accept","mimeTypes","onDrop","acceptedFiles","FormData","append","jobId","currentUser","uploadUrl","refresh","warning","getRootProps","getInputProps","backgroundColor","border","padding","borderRadius","textAlign","fileName","truncateStringOverLength","mimeType","documentTypeName","signedURL","signedUrl","deleteUrl","showError","deleteDocument","emptyVeto","partnerOrg","OrgAccessModule","orgList","setOrgList","showAddRow","setShowAddRow","partnerOrgList","setPartnerOrgList","isAllowAccess","onRemoveOrg","idx","OrgId","PartnerOrgId","partnerOrgId","IsAllowAccess","refreshOrg","getListURL","showCompanies","exceptOrgTypeId","unshift","addRow","colSpan","onVetoChange","onSubmit","partnerOrgName","createdAt","emptyRate","job","score","comment","hide","RatingModule","setJob","rating","setRating","showRating","showRatingOnly","readonly","initialRating","emptySymbol","fullSymbol","showModal","toggle","forCompany","orgName","assignedToOrgName","jobTypeName","fromStreetAddress1","fromStreetAddress2","fromCity","fromStateName","fromZip","toAddress1","toAddress2","toCity","toStateName","toZipCode","stop","fractions","JobId","assignedToOrgId","Score","UserId","driverId","Comment","Hide","onSuccess","onSave","emptySchedule","driver","estimatedPickupAt","estimatedDropoffAt","estimatedDropofTimeOfDay","estimatedPickupTimeOfDay","ScheduleModal","driversList","setDriversList","scheduleJob","setScheduleJob","isPrivate","isPrivateJob","currentOrgId","assignedDriver","fullName","scheduledForDate","formatScheduleJob","backdrop","requiredStar","placeholderText","estimatedDropoffTimeOfDay","isBefore","DriverId","AssignedToOrgId","ScheduledForDate","EstimatedPickupTimeOfDay","EstimatedPickupAt","EstimatedDropoffAt","EstimatedDropoffTimeOfDay","endpoint","OrgTypeahead","inputValue","setInputValue","loadOptions","callback","OrgTypeId","orgTypeId","CurrentOrgId","ActiveOnly","activeOnly","onInputChange","isDisabled","isClearable","SHBSpinner","on","phrases","color","height","fontStyle","fontWeight","sample","ChecklistImageUpload","files","preview","URL","createObjectURL","documentTypeId","ProfileImageRender","profileImage","src","alt","isCompany","AddressAutocomplete","getAddressInfo","autoCompleteValue","setAutoCompleteValue","apiKey","onPlaceSelected","details","addressInfo","address_components","Error","each","c","types","long_name","stateAbbr","short_name","streetNumber","route","geometry","location","lat","lng","componentRestrictions","country","autoComplete","MemberMouseLookupModal","setEmail","maxLength","onClickCallback","JobDocumentUpload","existingDocuments","setExistingDocuments","newDocumentsToUploadTemp","newDocumentsToUpload","setNewDocumentsToUpload","newDocumentsTemp","deleteNewDocument","upperCase","str","toUpperCase","changeDateFormat","changeDateFunction","itemToEditId","formattedDate","toggleListItemChecked","onDatePickerKeyDown","which","eventAction","booleanListEntry","b","resolveValue","obj","resolveValues","objs","formattedObjects","forEach","yesNoOptions","addAnyOption","formatAddress","address","addressArray","ln1","ln2","ln3","ln4","compactList","compact","formatPhoneNumber","phoneNumberString","replace","browserExportCSVFile","csv","fileTitle","fname","blob","Blob","navigator","msSaveBlob","download","downloadExport","mime","msSaveOrOpenBlob","anchor","href","webkitURL","dataset","downloadurl","log","parseRequestTypeName","request_type_name","lowerCase","properCase","mustChangePassword","isFormInvalid","object","arrayOfKeysToCheck","warnings","key","addIsEditingField","propName","isEditingList","isEditing","nullableString","emailIsValid","convertToPennies","currency","formatCurrency","Number","toLocaleString","minimumFractionDigits","isMobile","defaultView","innerWidth","screen","cardHeaderName","iconName","getJobTypeBadgeColor","getJobStatusBadgeColor","jobStatusName","resolveUserRole","forRoleName","currentRoleId","canEditCompanyProfile","orgIdToEdit","isSysAdmin","showStarRating","ratingScore","stringVal","truncateOverLength","addEllipsis","substring","ensureMembershipLevelSize","React","createContext","theme","setTheme","signIn","_user","signOut","impersonate","clearImpersonation","company","haulerFirm","inMemoryStorage","isSupported","testKey","setItem","removeItem","storageFactory","hasOwnProperty","v","String","clear","DesktopContainer","Container","fluid","screenName","Footer","useInterval","delay","savedCallback","useRef","current","setInterval","clearInterval","homeIcon","shedIcon","version","xmlns","y","viewBox","fill","userIcon","adminIcon","companyIcon","scheduleIcon","jobIcon","privateJobIcon","haulerFirmIcon","reportIcon","subscriptionIcon","ratingIcon","chatIcon","invoiceIcon","HaulerMenuLinks","HaulerFirmMenuLinks","CompanyAdminMenuLinks","CompanyMenuLinks","AdminMenuLinks","SidebarMenu","homeLink","setHomeLink","links","setLinks","sidebarOpen","setSidebarOpen","openDropdown","setOpenDropdown","useLocation","newChatCount","setNewChatCount","toggleSidebar","openOrClose","userLinks","includeHaulerModule","concat","includeCompanyModule","includeCompanyAdminModule","includeHaulerFirmModule","includeAdminModule","linkItem","NavItem","NavLink","active","menuStyling","stickyLeftMenuOpen","stickyLeftMenuCollapsed","menu","Nav","vertical","roleTypeIdList","shouldShowSwitchButton","setCurrentUserContext","roleName","sidebar","styles","background","zIndex","minWidth","pullRight","onSetOpen","Admin","dt","DashboardAdmin","rtoCount","setRtoCount","manufacturerCount","setManufacturerList","haulerCount","setHaulerCount","openJobs","setOpenJobs","activeUserCount","setActiveUserCount","scheduledJobs","setScheduledJobs","completedJobs","setCompletedJobs","loading","setLoading","haulerFirmCount","userCount","finally","md","DashboardCompany","isOrgAdmin","isCompanyAdminUser","isHaulerAdminUser","openJobCount","setOpenJobCount","completedJobCount","setCompletedJobCount","reservedJobCount","setReservedJobCount","scheduledJobCount","setScheduledJobCount","inProgressJobCount","setInProgressJobCount","activeUsers","setActiveUsers","privateJobCount","setPrivateJobCount","isHaulerUser","Home","pathParamsModule","computedMatch","module","history","useHistory","emptyJob","jobStatus","requestedByDate","scheduledAt","scheduledBy","actualPickupAt","actualDropoffAt","reservedByOrg","reservedAt","cancelledAt","cancelledBy","cancellationReason","parentJobId","referenceNumber","createdByOrgPrimaryContactFirstName","createdByOrgPrimaryContactLastName","createdByOrgPrimaryContactNumber","createdByOrgEmail","compensationAmount","customerFeeCollectedAt","unit","manufacturer","serialNumber","heightInFeet","widthInFeet","lengthInFeet","unitType","unitStyle","unitMaterial","wallColor","trimColor","roofColor","otherRoofColor","otherWallColor","otherTrimColor","unitComment","useExistingUnit","ownerFirstName","ownerLastName","ownerEmail","ownerPhoneNumber","cinders","emptyJobFee","description","emptyComment","Job","userOrgId","isCompanyUser","isHaulerFirm","isDispatcherUser","jobFees","setJobFees","totalFees","setTotalFees","newFee","setNewFee","comments","setComments","newComment","setNewComment","draftMode","setDraftMode","jobOpen","setJobOpen","jobReserved","setJobReserved","jobScheduled","setJobScheduled","jobInProgress","setJobInProgress","jobComplete","setJobComplete","jobCancelled","setJobCancelled","showTextModal","setShowTextModal","driverOptions","setDriverOptions","orgRigs","setOrgRigs","jobTypeList","setJobTypeList","stateList","setStateList","unitStyleList","setUnitStyleList","unitMaterialList","setUnitMaterialList","unitColorList","setUnitColorList","setUnitList","setOrgLocations","orgPrimaryUser","setOrgPrimaryUser","redirect","setRedirect","isJobOwner","setIsJobOwner","jobRigs","setJobRigs","orgDefaultChecklistItems","setOrgDefaultChecklistItems","jobChecklistItems","setJobChecklistItems","sendHaulerInvite","setSendHaulerInvite","jobChecklistResponses","setJobChecklistResponses","checklistAnswers","setChecklistAnswers","jobMileageAndFuelCostSummary","setJobMileageAndFuelCostSummary","showMileageModal","setShowMileageModal","showFuelCostsModal","setShowFuelCostsModal","mileages","setMileages","fuelCosts","setFuelCosts","typeaheadFromAddress","setTypeaheadFromAddress","typeaheadToAddress","setTypeaheadToAddress","fromAddress1","fromAddress2","fromState","fromZipCode","pickupLat","pickupLong","fromAddress","setFromAddress","toState","dropoffLat","dropoffLong","toAddress","setToAddress","getJobDocuments","jobEdit","documents","getOrgDefaultJobFees","jobTypeId","orgIds","sortField","orgDefaultJobFees","amountDecimal","feeTypeId","feeTypeName","local_id","getOrgDefaultChecklistItems","JobTypeId","checkListItemTypeName","changeJobField","changeJobSelect","convertDocToFormData","doc","apiCalls","jobIds","getJobFees","jobComments","privateToOrgId","getJobComments","jr","rigTypeName","summary","units","getUnits","orgLocations","uniqBy","streetAddress1","streetAddress2","stateName","zipCode","stateId","locationTypeId","locationTypeName","getOrgLocations","Promise","all","arrayResults","aggResults","tempJob","formattedJob","driverFullName","estimatedDropOffAt","estimatedDropOffTimeOfDay","actualPickupAtTime","actualDropoffAtTime","unitId","unitSerialNumber","toFixed","jobStatusId","unitTypeId","unitTypeName","unitStyleId","unitStyleName","unitMaterialId","unitMaterialName","wallColorId","wallColorName","trimColorId","trimColorName","roofColorId","roofColorName","reservedByOrgId","reservedByOrgName","assignedToOrg","reservedByOrgPrimaryContactName","assignedToOrgPrimaryContactName","reservedByOrgPrimaryContactNumber","assignedToOrgPrimaryContactNumber","isExtreme","fromStateId","toStateId","defaultJobChecklistItems","checkListItem","initialJobFees","fees","flavor","text","isAdmin","onDateChange","field","editJob","onTimeChange","onSaveJob","scroll","trim","typeOfJobStatus","includeFee","CheckListItemId","Required","resolve","a","allUploaded","uploadAllDocuments","setTimeout","changeNewJobFeeField","newJobFeeRow","Fragment","dsc","jobFeeToSave","addToJobFees","onSaveNewJobFee","changeJobFee","localJobFeeId","indexToEdit","onDeleteJobFee","deleteFromJobFees","jobFeeRow","onEditJobFeeTypeSelect","pristine","onSaveEditedJobFee","tempList","cloneDeep","onCancelEditJobFee","newCommentRow","changeNewCommentField","commentEdit","onNewCommentIsPrivateChange","commentToSave","onSaveNewComment","jobCommentRow","localCommentId","changeCommentField","onCommentIsPrivateChange","onSaveEditedComment","onCancelEditComment","defaultFees","sumBy","onChangeJobType","changeJobBoolean","tempState","striped","hover","responsive","jf","snapshotItem","onEditJobFee","borderTop","itemToSave","onAddJobChecklistItem","localItemId","onRemoveJobChecklistItem","onEditComment","onDeleteComment","readOnly","jobCopy","onScheduleJob","min","max","required","tempJobRigs","pop","onJobRigChange","miles","mileageDisplay","fuelCostDisplay","CheckListResponse","clResponse","responseItems","ri","jobChecklistItemId","CheckListItem","clItem","tempRequiredItems","requiredChecklistItems","itemsAnswered","every","jobRigsPayload","RigTypeId","newResponse","JobChecklistItemId","ChecklistItemTypeId","checklistItemTypeId","DocumentTypeId","Sequence","sequence","Prompt","BoolResponse","AttachmentResponse","TextResponse","PaymentResponse","checkListItemTypeId","CheckListItemResponses","onCompleteJob","invoiced","setAnswer","newValue","addingImage","setAddingImage","ItemWrapper","truncate","ResponseWrapper","attachmentResponseSignedUrl","boolResponse","gpsResponseLat","gpsResponseLong","textResponse","Jobs","isDispatcher","isDriver","isCompanyAdmin","isCompanyClerk","showScheduleModal","setShowScheduleModal","redirectToJob","setRedirectToJob","initialJobStatus","selectedFilter","getInitialJobStatus","canAddEditJobs","isOpenJobSearch","paginatedList","setPaginatedList","setFilters","setPageNumber","showRatingModal","setShowRatingModal","jobToRate","setJobToRate","jobToSchedule","setJobToSchedule","refreshData","SortField","SortDirection","PageNumber","IsOpenJobSearch","underReservationGracePeriod","onFilterChange","changedFilter","filterChanges","toggleCanceljob","reviving","onRatingSuccess","newPageNumber","j","cursor","Badge","marginLeft","isPrivateHaulerJob","completedByUserId","ratedByHauler","ratedByCompany","stopPropagation","onRating","split","UncontrolledTooltip","placement","onSchedule","ReservedByOrgId","onReserve","completingjob","Organizations","moduleAccess","orgType","ExceptOrgTypeId","saveOrgAccess","allowAccess","editList","deleteOrgAccess","toString","companyName","haulerRatingScore","companyRatingScore","orgTypeName","primaryUserFullName","primaryUserEmail","companyEmail","primaryUserPhoneNumber","companyPhoneNumber","deactivatedAt","allowedAccessAt","deniedAccessAt","disable","allowAccessAt","compensationAmountInDollars","pickupContactFirstName","pickupContactLastName","pickupContactPhoneNumber","pickupContactEmail","dropoffContactFirstName","dropoffContactLastName","dropoffContactPhoneNumber","dropoffContactEmail","note","PrivateJob","privateJobId","showScheduleInfo","setShowScheduleInfo","getPrivateJobDocuments","assignedDriverId","jt","completedAt","fromStateAbbr","toStateAbbr","objectToFormData","rootName","ignoreList","appendFormData","root","Array","isArray","some","ignore","File","endsWith","formPayload","PrivateJobs","togglePrivateJobActive","pj","Profile","inviteToken","setUser","timezoneList","setTimezoneList","redirectPath","setRedirectPath","setProfileImage","p","fieldValue","newUser","isImpersonating","first_name","last_name","timezone","option","proximityAlertsOn","proximityAlertsRadiusInMiles","maxWidth","typeOfUserRole","oldPassword","newPassword","newPasswordAgain","onUpdatePassword","chance","require","Chance","PublicProfile","userId","profileName","driverPhoneNumber","tagLine","CardImg","top","maxHeight","animal","emptyItem","ReferenceDataList","metaData","editItem","setEditItem","setSortField","setSortDirection","editingNew","cancelNew","temporaryArray","shift","onEditKeyPress","onEditKeyDown","keyCode","onCancelEdit","onToggleActive","CardTitle","tempArray","sf","sd","autoFocus","onKeyPress","onKeyDown","onEdit","Register","HaulerRegistration","CompanyRegistration","Reports","flatReports","setFlatReports","setParameters","parameterValues","setParameterValues","selectedReport","setSelectedReport","defaultParameters","parseParameters","report","rawParameters","parameters","rp","hidden","parameterType","names","date_range","multi","apiValueAttribute","apiKeyAttribute","generateReport","prompts","isAfter","alert","isFormValid","reportName","typeOfRender","setParameterValue","parameterName","parameterIndex","paramToChangeIndex","paramToChange","constructor","onDropdownSelection","reportGroups","rg","reports","enabled","rpt","paddingTop","offset","Label","fetches","typeahead","apiRoute","aggregateResults","newParameterValues","onReportSelect","paramList","segments","segmentKey","for","valueOf","debounce","valueAttribute","labelAttribute","loadApiListOptions","renderParameters","Shed","shedSightingId","shedSighting","setShedSighting","oLat","oLng","originLatLng","openNavigationLink","latitude","longitude","images","rel","Sheds","setList","setTotalPages","setUnitTypes","setUnitMaterials","setUnitColors","SignIn","setUserName","setPassword","msg","useAlert","setAlert","Form","preventDefault","Username","Password","outline","block","SHBLogo","roleGroupStyles","alignItems","fontSize","textDecoration","margin","formatRoleGroupLabel","resolveOrgList","groupRoleOptions","roleList","groupedRoles","groupBy","toPairs","kv","filteredGroupedRoles","g","r2","DEFAULT_DRIVER_COLOR","defaultNewUser","isPrimaryContact","driverHexColor","User","routeUserId","setCompanies","sethaulerFirms","haulerRoleLimits","setHaulerRoleLimits","roleSelectionState","setRoleSelectionState","redirectTo","setRedirectTo","setFiles","isNewUser","roleId","typeOfOrg","sortBy","resolveAvailableRoles","canMaintainCompanies","canMaintainhaulerFirms","canMaintainRoles","isAdminUser","atLeast1CompanyRole","atLeast1haulerFirmRole","onAddRole","newRole","typeSelection","availableAdmins","availableDispatchers","availableDrivers","RoleIsAvailable","newCompanyId","newHaulerFirmId","ur","newUserRoles","onRoleSelectChange","newRoleState","canSelectCompany","canSelecthaulerFirm","validate","Roles","RoleId","IsDefaultContext","isDefaultContext","p2","onFileDrop","rejectedFiles","newFiles","existingUser","companyid","haulerFirmId","memberMouseId","isDriverUser","newSelectedRole","newSelectedRoleContextDescription","haulerFirmOptions","hf","onChangeComplete","hex","documentId","formatGroupLabel","selectedRole","companyId","onRemoveRole","Users","haulingFirms","setHaulingFirms","rolesList","clearValue","secondary","isLockedOut","lastLoggedOn","onImpersonate","ForgotPassword","authData","setAuthData","newData","ResetPassword","resetToken","UpdatePassword","emptyRigType","qty","rigTypeList","setRigTypeList","redirectToHome","setRedirectToHome","setCompanyType","saving","setSaving","showMMModal","setShowMMModal","registerButton","GetMMButton","FirstName","MiddleName","LastName","IsPrimaryContact","Company","Locations","formatLocations","RigTypes","t","Qty","submitRegistration","primaryLocation","StreetAddress1","StreetAddress2","City","StateId","ZipCode","LocationTypeId","billToLocation","orgCopy","GetMMInfo","mmUser","phone","FormGroup","check","inline","newOrg","minLen","startsWith","addToRigTypes","onRigTypeSelect","editRigType","saveRigType","deleteFromRigTypes","companyTypeList","setCompanyTypeList","payToLocation","UnitTypes","CompanyProfile","currentCompanyType","setCurrentOrgType","organizationUsers","setOrganizationUsers","companyLocations","setCompanyLocations","prestineLocation","setPrestineLocation","locationTypeList","setLocationTypeList","allowOrgAccessList","setAllowOrgAccessList","denyOrgAccessList","setDenyOrgAccessList","orgDocumentList","setOrgDocumentList","addNewRigType","setAddNewRigType","newRigTypeName","setNewRigTypeName","orgTypeList","haulerRigTypes","setHaulerRigTypes","prestineRigType","setPrestineRigType","routeOrgId","getRigTypes","refreshAccessLists","denyAccessList","allowAccessList","refreshCompanyDetails","subscriptionTypeName","subscriptionTypeId","primaryContact","primaryUserId","orgRigTypes","rigTypeId","submitButton","ein","Tagline","tagline","SubscriptionTypeId","PrimaryUserId","PaymenyGatewayApiLoginId","apiLoginId","PaymenyGatewayTransactionKey","apiTransactionKey","PaymentProcessorId","paymentProcessor","saveCompanyProfile","rig","onLocationInputChange","addLocation","prestine","cancelEditLocation","TypeOfLocation","saveLocation","editLocation","deleteLocation","onRigTypeInputChange","DocumentItemTypeName","feeTypeList","setFeeTypeList","checkListItemTypeList","setCheckListItemTypeList","setCompanyUnitTypes","defaultFeeList","setDefaultFeeList","prestineFee","setPrestineFee","checkListItems","setCheckListItems","prestineItem","setPrestineItem","selectedJobType","setSelectedJobType","isReordering","setIsReordering","paymentInfo","setPaymentInfo","refreshChecklistItems","primaryContactName","typeOfLocation","orgUnitTypes","typeOfJob","typeOfJobName","onFeeInputChange","onCkItemInputChange","onCkItemBoolChange","reorderChecklistItem","oldIndex","newIndex","newArray","UnitTypeId","addFee","cancelFeeEdit","fee","Amount","FeeTypeId","saveFee","amountDisplay","editFee","deleteFee","ids","stringify","saveNewOrder","addCheckListItem","cancelCKItemEdit","CheckListItemTypeId","IsRequired","DefaultBooleanValue","RegExValidation","Seq","saveCkItem","marginRight","editCkItem","deleteCkItem","allowPayments","stripeCustomerId","stripePublicKey","stripeSecretKey","OrganizationId","AllowPayments","StripeCustomerId","StripeSecretKey","StripePublicKey","savePaymentSettings","PublicProfileCompany","primaryLocationId","companyTagline","Subscriptions","statusList","subscriptionTypeList","setSubscriptionTypeList","prestineSubscription","setPrestineSubscription","getOrgList","HasSubscription","plist","n","pList","numOfMember","StartDate","EndDate","NumberOfMemberList","OrgSubscriptionId","orgSubscriptionId","refreshOrgSelectList","addNew","subIndex","roleIdx","memberList","onMemberInputChange","indx","onCancel","isSubscriptionActive","projectDanger","onRevive","onDelete","RatingsContainer","activeTab","setActiveTab","tabToggle","tab","tabs","TabContent","TabPane","tabId","HaulerRatings","CompanyRatings","haulerList","setHaulerList","manufacturerRTOList","setManufacturerRTOList","performedForOrg","organizationName","performedByHauler","jobDriverOrgName","jobDriverOrgId","performedByUser","createdByUserFullName","createdByUserId","viewing","onToggleCommentView","performedForHauler","performedByCompany","jobOrgName","jobOrgId","noShow","ChatBubble","myId","sentByMe","sentById","sentByFullName","Chats","chats","setChats","selectedUser","setSelectedUser","selectedChat","setSelectedChat","chatMessages","setChatMessages","userAutoComplete","setUserAutoComplete","userContext","messagePagingAvailable","setMessagePagingAvailable","loadChats","_error","sendMessage","isNew","Message","ChatId","orderBy","getChatName","chat","user1Id","user2FullName","user1FullName","chatId","messages","differenceBy","loadUsers","user1Read","user2Read","lastMessageAt","minId","minBy","loadMoreMessages","Invoices","PageSize","MaxResults","changeStatus","invoiceId","invoiceStatusId","deliverEmail","InvoiceId","InvoiceStatusId","DeliverEmail","invoiceStatusName","totalDisplay","UnInvoicedLineItems","groupedData","setGroupedData","selectedOrgId","setSelectedOrgId","setComment","getUninvoicedLineItemsForOrg","invoiceLines","tempAmount","createInvoice","sendEmail","includeInInvoice","z","allLineItems","flatten","validatedLineItems","parseFloat","InvoiceLines","changeValue","jobIndex","itemIndex","newGroupedData","lineIndex","jobHeaderDescription","paddingLeft","Privacy","dangerouslySetInnerHTML","__html","EMPTY_SCHEDULE_CRITERIA","startsAfter","startsBefore","ScheduleViewer","today","currentJobs","setCurrentJobs","selectedDate","setSelectedDate","Views","calendarView","setCalendarView","selectedJob","initialScheduleCriteria","scheduleCriteria","setScheduleCriteria","locales","enUS","localizer","dateFnsLocalizer","startOfWeek","getDay","DateRangeFrom","DateRangeTo","jobObject","jobs","getJobs","privateJobObject","privateJobs","getPrivateJobs","jobList","privateJobList","jl","pjl","allDay","end","pJob","joinedList","jobClicked","joblink","onNavigate","newDate","showMultiDayTimes","onView","onRangeChange","dateRange","scheduleCriteriaEdit","calendarRangesChanged","selectable","events","defaultDate","view","onSelectEvent","startAccessor","endAccessor","popup","views","month","week","day","eventPropGetter","isSelected","nowTime","getTime","lastActivityCheckedAt","App","parsedUser","storage","setCurrentUser","impersonating","setImpersonation","alertMessage","setAlertMessage","clearIntervalIfExists","lastActivityIntervalId","compareTimerToLastActivity","lastActivity","sessionStartedAt","verifyAuthentication","isAuthenticated","resolveInitialUserContext","dispatcherRole","enhanceUser","includeOrgAdminModule","adminUser","setLastActivity","addEventListener","removeEventListener","AuthRoute","component","extraProps","render","combinedProps","LoginRoute","path","referencePathList","showSidebar","userRole","_impersonateToken","effect","position","stack","limit","html","z-index","preserveContext","Provider","exact","HaulerFirmProfile","isLocalhost","hostname","match","registerValidSW","swUrl","serviceWorker","register","registration","onupdatefound","installingWorker","installing","onstatechange","controller","rootElement","getElementById","library","faEye","faAngleUp","faAngleDown","faFilter","faExclamationTriangle","faSearch","faClipboardCheck","faCheckCircle","faDownload","faHourglass","faHourglassHalf","faBan","faArrowCircleRight","faPlusCircle","faAngleDoubleDown","faFileCsv","faEdit","faTimesCircle","faTrash","faRecycle","faInfoCircle","faMapMarkedAlt","faPalette","faUnlockAlt","faUser","faFileUpload","faPrint","faComments","faImages","faSave","faHome","faCheck","faPlus","faBackspace","faMinus","faGripLines","faTimes","faTruck","faPaintBrush","faTrashAlt","faReply","faMask","faAward","faCog","faCogs","faUpload","faBars","faUserCircle","faMoneyCheckAlt","faDollarSign","faFileInvoiceDollar","faBuilding","faEnvelope","faMapMarked","faKey","faStar","faStarHalf","faWarehouse","faUsers","faAddressCard","faTruckLoading","faUserTimes","faUserPlus","faUserSlash","faUserTag","faHandHoldingUsd","faTasks","faExternalLinkAlt","faCheckDouble","faStarHalfAlt","faEyeSlash","faCalendarAlt","faCalendarTimes","faUndo","faFlagCheckered","faDirections","faSync","faSearchLocation","goBack","back","ReactDOM","FallbackComponent","componentStack","process","origin","indexOf","ready","unregister","reload","checkValidServiceWorker","registerServiceWorker"],"mappings":"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","file":"static/js/main.9e0bb464.chunk.js","sourcesContent":["export default __webpack_public_path__ + \"static/media/fakeInvoice.508c3b18.pdf\";","import axios from \"axios\";\nimport Alert from \"react-s-alert\";\nimport _ from \"lodash\";\nimport pdf1 from \"../components/images/fakeInvoice.pdf\";\nimport { helpers } from \"./\";\n\nconst API = \"/api\";\n\nfunction userToken() {\n const user = localStorage.getItem(\"currentUser\");\n if (user && user !== \"null\") {\n return JSON.parse(user).token;\n }\n}\n\nfunction commonHeaders() {\n const token = userToken();\n return {\n Accept: \"application/json\",\n Authorization: `Bearer ${token}`,\n };\n}\n\nconst DIRECTIONS_KEY =\n \"5b3ce3597851110001cf62484d50e88fad024ac893c2a850e9454361\";\n\nconst expectXlsxHeaders = () =>\n Object.assign(commonHeaders(), {\n \"Content-Type\": \"application/json\",\n Accept: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n });\n\nconst expectPdfHeaders = () =>\n Object.assign(commonHeaders(), {\n \"Content-Type\": \"application/json\",\n Accept: \"application/pdf\",\n });\n\nconst headers = () =>\n Object.assign(commonHeaders(), { \"Content-Type\": \"application/json\" });\nconst multipart_headers = () =>\n Object.assign(commonHeaders(), { \"Content-Type\": \"multipart/form-data\" });\nconst directions_headers = () => {\n return {\n \"Content-Type\": \"application/json; charset=utf-8\",\n Accept:\n \"application/json, application/geo+json, application/gpx+xml, img/png; charset=utf-8\",\n Authorization: DIRECTIONS_KEY,\n };\n};\nObject.assign(commonHeaders(), { \"Content-Type\": \"multipart/form-data\" });\n\nfunction queryString(params) {\n const query = Object.keys(params)\n .map((k) => `${encodeURIComponent(k)}=${encodeURIComponent(params[k])}`)\n .join(\"&\");\n return `${query.length ? \"?\" : \"\"}${query}`;\n}\n\nconst post = (url, data) => {\n return axios({\n method: \"post\",\n url: `${API}/${url}`,\n data: data,\n timeout: 600000,\n headers: headers(),\n });\n};\n\nconst postWithExcelReturn = (url, data) => {\n return axios({\n method: \"post\",\n url: `${API}/${url}`,\n data: data,\n timeout: 600000,\n headers: expectXlsxHeaders(),\n responseType: \"arraybuffer\",\n });\n};\n\nconst fetchWithPdfReturn = (url) => {\n return axios({\n method: \"get\",\n url: `${API}/${url}`,\n timeout: 600000,\n headers: expectPdfHeaders(),\n responseType: \"arraybuffer\",\n });\n};\n\nconst apiFetch = (url, params = {}) => {\n return axios.get(`${API}/${url}${queryString(params)}`, {\n headers: headers(),\n });\n};\n\nconst getOrgDrivers = (orgId) => api\n.post(`Org/GetOrgDrivers/${orgId}`)\n.then((response) => {\n if (response && response.data) {\n return {drivers:\n _.map(response.data, (d) => {\n d.label = d.name;\n d.value = d.id;\n return d;\n })\n }\n }\n})\n.catch(helpers.catchHandler);\n\nconst getTimezones = () =>\n apiFetch(\"Reference/TimezoneList\").then((r) => ({\n timezones: _.map(r.data, (x) => ({ value: x, label: x })),\n }));\n\nconst getCompanies = () =>\n apiFetch(\"Reference/CompanyList\").then((r) => ({\n companies: _.map(r.data, (x) => ({ ...x, value: x.id, label: x.name })),\n }));\n\nconst getHaulerFirms = () =>\n apiFetch(\"Reference/HaulingFirmList\").then((r) => ({\n haulerFirms: _.map(r.data, (x) => ({ ...x, value: x.id, label: x.name })),\n }));\n\nconst getJobTypes = () =>\n apiFetch(\"Public/JobTypeList\").then((r) => ({\n jobTypes: _.map(r.data, (x) => ({ ...x, value: x.id, label: x.name })),\n }));\n\nconst getStates = () =>\n apiFetch(\"Public/StateList\").then((r) => ({\n states: _.map(r.data, (x) => ({ ...x, value: x.id, label: x.name })),\n }));\n\nconst getUnitTypes = () =>\n apiFetch(\"Public/UnitTypeList\").then((r) => ({\n unitTypes: _.map(r.data, (x) => ({ ...x, value: x.id, label: x.name })),\n }));\n\nconst getUnitStyles = () =>\n apiFetch(\"Public/UnitStyleList\").then((r) => ({\n unitStyles: _.map(r.data, (x) => ({ ...x, value: x.id, label: x.name })),\n }));\n\nconst getUnitMaterials = () =>\n apiFetch(\"Public/UnitMaterialList\").then((r) => ({\n unitMaterials: _.map(r.data, (x) => ({ ...x, value: x.id, label: x.name })),\n }));\n\nconst getUnitColors = () =>\n apiFetch(\"Public/UnitColorList\").then((r) => ({\n unitColors: _.map(r.data, (x) => ({ ...x, value: x.id, label: x.name })),\n }));\n\nconst getAvailableRoles = (orgId) =>\n apiFetch(`Org/GetAvailableRoles/${orgId}`)\n .then((r) => {\n let roleObject = {};\n if(r.data && r.data.success) {\n if(r.data.availableRoles) {\n roleObject = {\n availableHaulerRoles: {...r.data.availableRoles}\n };\n }\n }\n return roleObject;\n });\n\nconst api = {\n downloadPDF(url) {\n try {\n var link = document.createElement(\"a\");\n link.setAttribute(\"href\", pdf1);\n link.setAttribute(\"download\", pdf1);\n link.style.visibility = \"hidden\";\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n } catch {\n Alert.error(\"There was an error downloading the document\");\n }\n },\n fetch_raw(url, params = {}) {\n return axios.get(`${url}${queryString(params)}`, { headers: headers() });\n },\n\n fetch: apiFetch,\n\n upload(verb, url, data) {\n switch (verb.toLowerCase()) {\n case \"post\":\n return axios.post(`${API}/${url}`, data, { headers: headers() });\n case \"put\":\n return axios.put(`${API}/${url}`, data, { headers: headers() });\n case \"patch\":\n return axios.patch(`${API}/${url}`, data, { headers: headers() });\n default:\n }\n },\n\n post: post,\n postWithExcelReturn: postWithExcelReturn,\n fetchWithPdfReturn: fetchWithPdfReturn,\n\n get_directions(data) {\n return axios({\n method: \"post\",\n url: `https://api.openrouteservice.org/v2/directions/driving-car/json`,\n data: data,\n timeout: 600000,\n headers: directions_headers(),\n });\n },\n\n put(url, data) {\n return axios.put(`${API}/${url}`, data, { headers: headers() });\n },\n\n patch(url, data) {\n return axios.patch(`${API}/${url}`, data, { headers: headers() });\n },\n\n delete(url) {\n return axios.delete(`${API}/${url}`, { headers: headers() });\n },\n\n post_form_data(url, formData) {\n return axios.post(`${API}/${url}`, formData, {\n headers: multipart_headers(),\n });\n },\n\n put_form_data(url, formData) {\n return axios.put(`${API}/${url}`, formData, {\n headers: multipart_headers(),\n });\n },\n\n post_form_data_get_blob(url, formData) {\n return axios.post(`${API}/${url}`, formData, {\n headers: multipart_headers(),\n responseType: \"blob\",\n });\n },\n\n getOrgDrivers: getOrgDrivers,\n\n getCompanies: getCompanies,\n\n getTimezones: getTimezones,\n\n getHaulerFirms: getHaulerFirms,\n\n getJobTypes: getJobTypes,\n\n getStates: getStates,\n\n getUnitTypes: getUnitTypes,\n\n getUnitStyles: getUnitStyles,\n\n getUnitMaterials: getUnitMaterials,\n\n getUnitColors: getUnitColors,\n\n getAvailableRoles: getAvailableRoles,\n\n userToken() {\n return userToken();\n },\n catchHandler: (e) => {\n console.error(e);\n },\n DIRECTIONS_KEY: DIRECTIONS_KEY,\n};\n\nexport default api;\n","import _ from \"lodash\";\n\nconst cubicFootInInches = 1728;\n\nfunction calcCubicForProducts(products) {\n if (products && products.length > 0) {\n const total = _.reduce(\n products,\n function (sum, n) {\n return sum + calcCubic(n.length, n.width, n.height);\n },\n 0\n );\n return _.round(total, 2);\n }\n return 0;\n}\n\nfunction calcCubic(length, width, height) {\n return (length * width * height) / cubicFootInInches;\n}\n\nfunction calcPCF(weight, length, width, height) {\n if (weight > 0 && length > 0 && width > 0 && height > 0) {\n const cubic = calcCubic(length, width, height);\n return _.round(weight / cubic, 2);\n }\n return 0;\n}\n\nconst calc = {\n calcPCF: calcPCF,\n calcCubic: calcCubic,\n calcCubicForProducts: calcCubicForProducts,\n};\n\nexport default calc;\n","import _ from \"lodash\";\n\nconst ADMIN_TABS = {\n REFERENCES: \"References\",\n REPORTS: \"Reports\",\n};\n\nconst THEME = {\n darkTheme: \"darkTheme\",\n lightTheme: \"lightTheme\",\n};\nconst BREAKPOINTS = {\n mobile: 320,\n mobileLandscape: 480,\n smallDesktop: 768,\n tablet: 856,\n tabletLandscape: 992,\n desktop: 1080,\n desktopLarge: 1500,\n desktopWide: 1920,\n};\n\nconst REPORT_PARAMETER_TYPES = {\n Text: 0,\n DateRange: 1,\n Date: 2,\n ApiList: 3,\n Integer: 4,\n Boolean: 5,\n};\n\nconst RENDER_TYPES = {\n CSV: 1,\n PDF: 2,\n Excel: 3,\n};\n\nconst LOCATION_TYPES = {\n Primary: 1,\n BillTo: 2,\n PayTo: 3,\n Inventory: 4,\n};\n\nconst RIG_TYPES = [\n { value: 1, label: \"Flat Bed\" },\n { value: 2, label: \"Dry Van\" },\n { value: 3, label: \"Side-Kit\" },\n { value: 4, label: \"Conestoga\" },\n { value: 5, label: \"Step Deck\" },\n { value: 6, label: \"Box Truck\" },\n { value: 7, label: \"Double Drop\" },\n { value: 8, label: \"Lowboy\" },\n { value: 9, label: \"Extendable Flat Bed\" },\n];\n\nconst PRODUCT_TYPES = [\n { value: 1, label: \"Storage Building\" },\n { value: 2, label: \"Carport\" },\n { value: 3, label: \"Gazebo\" },\n { value: 4, label: \"Playhouse\" },\n { value: 5, label: \"Container\" },\n { value: 6, label: \"Other\" },\n];\n\nconst PRODUCT_STATUS = [\n { value: 1, label: \"Sold\" },\n { value: 2, label: \"On Lease\" },\n { value: 3, label: \"Pre-Lease\" },\n { value: 4, label: \"Repo\" },\n { value: 5, label: \"Missing\" },\n // { value: 6, label: \"Destroyed\" },\n];\n\nconst SHED_STYLES = [\n { value: 1, label: \"A-Frame\" },\n { value: 2, label: \"A-Roof\" },\n { value: 3, label: \"Alpine Cottage\" },\n { value: 4, label: \"Aluminium\" },\n { value: 5, label: \"Aluminium/Wood\" },\n { value: 6, label: \"Amish A-frame\" },\n { value: 7, label: \"Amish Barn\" },\n { value: 8, label: \"Amish Metal Building\" },\n { value: 9, label: \"Barn\" },\n { value: 10, label: \"Cabin\" },\n { value: 11, label: \"Carriage\" },\n { value: 12, label: \"Chicken Coop\" },\n { value: 13, label: \"Child's Cabin\" },\n { value: 14, label: \"Classic\" },\n { value: 15, label: \"Clubhouse\" },\n { value: 16, label: \"Cottage\" },\n { value: 17, label: \"Cottage Shed\" },\n { value: 18, label: \"Cottage/Dormer\" },\n { value: 19, label: \"Deluxe Cabin\" },\n { value: 20, label: \"Double Garage\" },\n { value: 21, label: \"Double Wide\" },\n { value: 22, label: \"Dutch Barn\" },\n { value: 23, label: \"Economy\" },\n { value: 24, label: \"Elite Cabin\" },\n { value: 25, label: \"Garage\" },\n { value: 26, label: \"Garden Shed\" },\n { value: 27, label: \"Gazebo\" },\n { value: 28, label: \"Greenhouse\" },\n { value: 29, label: \"Gym and Slide\" },\n { value: 30, label: \"High Wall Barn\" },\n { value: 31, label: \"Horse Barn\" },\n { value: 32, label: \"Lofted Barn\" },\n { value: 33, label: \"Lofted Barn Cabin\" },\n { value: 34, label: \"Lofted Cabin\" },\n { value: 35, label: \"Lofted Garage\" },\n { value: 36, label: \"Low Barn\" },\n { value: 37, label: \"Low Wall Barn\" },\n { value: 38, label: \"Metal Dutch Barn\" },\n { value: 39, label: \"Mini Barn\" },\n { value: 40, label: \"Octagon\" },\n { value: 41, label: \"Playhouse\" },\n { value: 42, label: \"Shed Row Horse Barn\" },\n { value: 43, label: \"Side Lofted\" },\n { value: 44, label: \"Side Lofted Barn\" },\n { value: 45, label: \"Tea House\" },\n { value: 46, label: \"Tots Tower\" },\n { value: 47, label: \"Two-Story\" },\n { value: 48, label: \"Utility\" },\n { value: 49, label: \"Watch Tower\" },\n { value: 50, label: \"Wood\" },\n];\n\nconst COLORS = [\n { value: 1, label: \"Blue\" },\n { value: 2, label: \"Red\" },\n { value: 3, label: \"Green\" },\n { value: 4, label: \"White\" },\n { value: 5, label: \"Black\" },\n { value: 6, label: \"Other\" }\n];\n\nconst COLOR_IDS = {\n BLUE: 1,\n RED: 2,\n GREEN: 3,\n WHITE: 4,\n BLACK: 5,\n OTHER: 6,\n};\n\nconst SORT_DIRECTION = {\n ASC: \"Ascending\",\n DESC: \"Descending\",\n};\n\nconst ROOF_MATERIALS = [\n { value: 1, label: \"Charcoal\" },\n { value: 2, label: \"Clay\" },\n { value: 3, label: \"Slate\" },\n { value: 4, label: \"Stone\" },\n { value: 5, label: \"White\" },\n];\nconst MATERIALS = [\n { value: 1, label: \"Container\" },\n { value: 2, label: \"Greenhouse\" },\n { value: 3, label: \"Metal\" },\n { value: 4, label: \"Wood\" },\n];\nconst JOB_FEES = [\n { value: 1, label: \"Knock Fee\", defaultPrice: 101.33 },\n { value: 2, label: \"Pickup Fee\", defaultPrice: 388.65 },\n { value: 3, label: \"Run-off Fee\", defaultPrice: 105.77 },\n { value: 4, label: \"Permit\", defaultPrice: 400.22 },\n { value: 5, label: \"Escort\", defaultPrice: 750.27 },\n { value: 6, label: \"Failed Attempt\", defaultPrice: 500.05 },\n { value: 7, label: \"Premium Immediate Action\", defaultPrice: 200.99 },\n // { value: 8, label: \"Other\", defaultPrice: 0 },\n];\nconst JOB_TYPES = [\n { value: 1, label: \"Return\" },\n { value: 2, label: \"Retrieval\" },\n { value: 3, label: \"Off Lot\" },\n { value: 4, label: \"Move\" },\n { value: 5, label: \"MFG\" },\n { value: 6, label: \"RTO Delivery\" },\n];\nconst JOB_TYPE_IDS = {\n RETURN: 1,\n RETRIEVAL: 2,\n OFF_LOT: 3,\n MOVE: 4,\n MFG: 5,\n RTO_DELIVERY: 6,\n};\nconst JOB_STATUSES = [\n { value: 1, label: \"Open\" },\n { value: 2, label: \"Reserved\" },\n { value: 3, label: \"Scheduled\" },\n { value: 4, label: \"In Progress\" },\n { value: 5, label: \"Complete\" },\n { value: 6, label: \"Cancelled\" },\n];\nconst JOB_STATUS_IDS = {\n OPEN: 1,\n RESERVED: 2,\n SCHEDULED: 3,\n IN_PROGRESS: 4,\n COMPLETE: 5,\n CANCELLED: 6,\n};\nconst JOB_STATUS_NAMES = {\n OPEN: \"Open\",\n RESERVED: \"Reserved\",\n SCHEDULED: \"Scheduled\",\n IN_PROGRESS: \"In Progress\",\n COMPLETE: \"Complete\",\n CANCELLED: \"Cancelled\",\n};\n\nconst CHECKLIST_ITEM_TYPE_IDS = {\n ATTACHMENT: 1,\n BOOLEAN: 2,\n TEXT: 3,\n SIGNATURE: 4,\n PAYMENT: 5,\n GPS_COORDINATES: 6,\n};\n\nconst REFERENCE_DATA_URL_LIST = [\n {\n maxNameLength: 50,\n elementName: \"Material\",\n pageTitle: \"Materials\",\n iconKey: \"cog\",\n toggleURL: \"Reference/ToggleActiveMaterial\",\n saveURL: \"Reference/SaveUnitMaterial\",\n listURL: \"Reference/UnitMaterialList\",\n reactPath: \"/materials\",\n },\n {\n maxNameLength: 50,\n elementName: \"Rig Type\",\n pageTitle: \"Rig Types\",\n iconKey: \"truck\",\n toggleURL: \"Reference/ToggleRigTypeActive\",\n saveURL: \"Reference/SaveRigType\",\n listURL: \"Reference/RigTypeList\",\n reactPath: \"/rig_types\",\n },\n {\n maxNameLength: 50,\n elementName: \"Unit Type\",\n pageTitle: \"Unit Types\",\n iconKey: \"home\",\n toggleURL: \"Reference/ToggleUnitTypeActive\",\n saveURL: \"Reference/SaveUnitType\",\n listURL: \"Reference/UnitTypeList\",\n reactPath: \"/unit_types\",\n },\n {\n maxNameLength: 50,\n elementName: \"Shed Style\",\n pageTitle: \"Shed Styles\",\n iconKey: \"palette\",\n toggleURL: \"Reference/ToggleUnitStyleActive\",\n saveURL: \"Reference/SaveUnitStyle\",\n listURL: \"Reference/UnitStyleList\",\n reactPath: \"/shed_styles\",\n },\n {\n maxNameLength: 50,\n elementName: \"Color\",\n pageTitle: \"Colors\",\n iconKey: \"paint-brush\",\n toggleURL: \"Reference/ToggleUnitColorActive\",\n saveURL: \"Reference/SaveUnitColor\",\n listURL: \"Reference/UnitColorList\",\n reactPath: \"/colors\",\n },\n];\n\nconst REPORT_URL_LIST = [\n {\n api: \"shipmentQuantity\",\n url: \"/shipmentQuantity\",\n plural: null,\n pageTitle: \"Quantity Of Shipments\",\n data: [],\n keys: [\n { label: \"Company\", value: \"companyName\" },\n { label: \"Pending Dispatch\", value: \"pendingDispatch\" },\n { label: \"Scheduled\", value: \"pendingPickup\" },\n { label: \"In Transit\", value: \"inTransit\" },\n { label: \"Delivered\", value: \"delivered\" },\n { label: \"Total\", value: \"shipmentCounts\" },\n ],\n showCSVButton: true,\n },\n];\n\nconst STATES = [\n \"AL\",\n \"AK\",\n \"AR\",\n \"AZ\",\n \"CA\",\n \"CO\",\n \"CT\",\n \"FL\",\n \"DE\",\n \"GA\",\n \"ID\",\n \"HI\",\n \"IL\",\n \"IN\",\n \"IA\",\n \"KS\",\n \"KY\",\n \"LA\",\n \"ME\",\n \"MD\",\n \"MA\",\n \"MI\",\n \"MN\",\n \"MS\",\n \"MO\",\n \"MT\",\n \"NE\",\n \"NV\",\n \"NH\",\n \"NJ\",\n \"NM\",\n \"NY\",\n \"NC\",\n \"ND\",\n \"OH\",\n \"OK\",\n \"OR\",\n \"PA\",\n \"RI\",\n \"SC\",\n \"SD\",\n \"TN\",\n \"TX\",\n \"UT\",\n \"VT\",\n \"VA\",\n \"WA\",\n \"WV\",\n \"WI\",\n \"WY\",\n];\n\nconst ROLE_NAMES = {\n REPORTING: \"Reporting\",\n COMPANY_ADMIN: \"Administrator\",\n DRIVER: \"Driver\",\n DISPATCHER: \"Dispatcher\",\n COMPANY_USER: \"User\",\n COMPANY_CLERK: \"Clerk\",\n SYSADMIN: \"System Administrator\",\n};\n\nconst ROLE_IDS = {\n REPORTING: 7,\n DRIVER: 6,\n DISPATCHER: 5,\n COMPANY_USER: 4,\n COMPANY_CLERK: 3,\n COMPANY_ADMIN: 2,\n SYSADMIN: 1,\n};\n\nconst ROLE_DICTIONARY = {\n 7: ROLE_NAMES.REPORTING,\n 6: ROLE_NAMES.DRIVER,\n 5: ROLE_NAMES.DISPATCHER,\n 2: ROLE_NAMES.COMPANY_ADMIN,\n 4: ROLE_NAMES.COMPANY_USER,\n 3: ROLE_NAMES.COMPANY_CLERK,\n 1: ROLE_NAMES.SYSADMIN,\n};\n\nconst HAULER_ROLES = [\n {\n value: ROLE_IDS.COMPANY_ADMIN,\n label: ROLE_NAMES.COMPANY_ADMIN,\n groupName: \"Hauling\",\n },\n {\n value: ROLE_IDS.DISPATCHER,\n label: ROLE_NAMES.DISPATCHER,\n groupName: \"Hauling\",\n },\n { value: ROLE_IDS.DRIVER, label: ROLE_NAMES.DRIVER, groupName: \"Hauling\" },\n];\n\nconst COMPANY_ROLES = [\n {\n value: ROLE_IDS.COMPANY_ADMIN,\n label: ROLE_NAMES.COMPANY_ADMIN,\n groupName: \"Companies\",\n },\n {\n value: ROLE_IDS.COMPANY_USER,\n label: ROLE_NAMES.COMPANY_USER,\n groupName: \"Companies\",\n },\n {\n value: ROLE_IDS.COMPANY_CLERK,\n label: ROLE_NAMES.COMPANY_CLERK,\n groupName: \"Companies\",\n },\n];\n\nconst ALL_ROLES = [\n {\n value: ROLE_IDS.SYSADMIN,\n label: ROLE_NAMES.SYSADMIN,\n groupName: \"Administration\",\n },\n {\n value: ROLE_IDS.COMPANY_ADMIN,\n label: ROLE_NAMES.COMPANY_ADMIN,\n groupName: \"Hauling\",\n },\n {\n value: ROLE_IDS.DISPATCHER,\n label: ROLE_NAMES.DISPATCHER,\n groupName: \"Hauling\",\n },\n { value: ROLE_IDS.DRIVER, label: ROLE_NAMES.DRIVER, groupName: \"Hauling\" },\n {\n value: ROLE_IDS.COMPANY_ADMIN,\n label: ROLE_NAMES.COMPANY_ADMIN,\n groupName: \"Companies\",\n },\n {\n value: ROLE_IDS.COMPANY_USER,\n label: ROLE_NAMES.COMPANY_USER,\n groupName: \"Companies\",\n },\n {\n value: ROLE_IDS.COMPANY_CLERK,\n label: ROLE_NAMES.COMPANY_CLERK,\n groupName: \"Companies\",\n },\n];\n\nconst ADMIN_TASK_ROLE_IDS = [\n //CAN PERFORM COMPANY ADMIN TASKS\n ROLE_IDS.DISPATCHER,\n ROLE_IDS.COMPANY_USER,\n ROLE_IDS.COMPANY_CLERK,\n ROLE_IDS.COMPANY_ADMIN,\n ROLE_IDS.SYSADMIN,\n];\n\nconst DOCUMENT_TYPE_LIST = [\n { value: 1, label: \"Insurance\" },\n { value: 2, label: \"Hauling Contract\" },\n { value: 3, label: \"MVR\" },\n { value: 4, label: \"DOT Number\" },\n { value: 5, label: \"W9\" },\n { value: 6, label: \"CDL\" },\n { value: 7, label: \"Delivery Image\" },\n { value: 8, label: \"Front Image\" },\n { value: 9, label: \"Left Side Image\" },\n { value: 10, label: \"Right Side Image\" },\n { value: 11, label: \"Rear Image\" },\n { value: 12, label: \"Interior Image\" },\n { value: 13, label: \"Serial Image\" },\n { value: 14, label: \"User Profile Image\" },\n { value: 15, label: \"Company Profile Image\" },\n];\n\nconst DOCUMENT_TYPE_IDS = {\n USER_PROFILE_IMAGE: 14,\n COMPANY_PROFILE_IMAGE: 15,\n SIGNATURE: 16\n};\n\nconst ORG_TYPE_NAMES = {\n RTO: \"RTO\",\n MANUFACTURER: \"Manufacturer\",\n HAULER_FIRM: \"Hauler Firm\",\n};\n\nconst ORG_TYPE_IDS = {\n RTO: 1,\n MANUFACTURER: 2,\n HAULER_FIRM: 3,\n};\n\nconst ORG_TYPE_LIST = [\n { value: ORG_TYPE_IDS.RTO, label: ORG_TYPE_NAMES.RTO },\n { value: ORG_TYPE_IDS.MANUFACTURER, label: ORG_TYPE_NAMES.MANUFACTURER },\n { value: ORG_TYPE_IDS.HAULER_FIRM, label: ORG_TYPE_NAMES.HAULER_FIRM },\n];\n\nconst EMPTY_USER = {\n id: -1,\n firstName: \"\",\n middleName: \"\",\n lastName: \"\",\n phoneNumber: \"\",\n email: \"\",\n username: \"\",\n cdlNumber: \"\",\n roles: [],\n editing: true,\n password: \"\",\n cdlState: \"\",\n};\n\nconst EMPTY_LOCATION = {\n id: -1,\n addressLine1: \"\",\n addressLine2: \"\",\n city: \"\",\n state: null,\n zip: \"\",\n locationType: null,\n editing: true,\n};\n\nconst EMPTY_ORG_SUBSCRIPTION = {\n id: -1,\n org: null,\n subscriptionType: null,\n startDate: null,\n endDate: null,\n numberOfMemberList: _.map(HAULER_ROLES.slice(), (r) => ({\n id: -1,\n role: r,\n amount: r.value === ROLE_IDS.COMPANY_ADMIN ? 1 : 0,\n })),\n editing: true,\n};\n\nconst EMPTY_ORGANIZATION = {\n id: -1,\n name: \"\",\n aboutUs: \"\",\n email: \"\",\n addressLine1: \"\",\n addressLine2: \"\",\n city: \"\",\n state: null,\n zip: \"\",\n phoneNumber: \"\",\n companyType: null,\n unitTypes: [],\n rigTypes: [],\n password: \"\",\n passwordAgain: \"\",\n einNumber: \"\",\n alternateEIN: \"\",\n cardToken: \"\",\n userList: [],\n locations: [],\n subscriptionType: null,\n\n //only used for registration\n primaryContactFirstName: \"\",\n primaryContactMiddleName: \"\",\n primaryContactLastName: \"\",\n primaryContactPhoneNumber: \"\",\n primaryContactEmail: \"\",\n primaryContactUsername: \"\",\n\n hasInternalDispatcher: true,\n\n //only used for registration\n dispatcherFirstName: \"\",\n dispatcherLastName: \"\",\n dispatcherTitle: \"\",\n dispatcherPhoneNumber: \"\",\n dispatcherFaxNumber: \"\",\n dispatcherEmail: \"\",\n\n sameAccountingAddress: true,\n sameAccountingContact: true,\n accountingName: \"\",\n accountingAddressLine1: \"\",\n accountingAddressLine2: \"\",\n accountingCity: \"\",\n accountingState: null,\n accountingZip: \"\",\n accountingContactFirstName: \"\",\n accountingContactLastName: \"\",\n accountingContactTitle: \"\",\n accountingContactPhoneNumber: \"\",\n accountingContactFaxNumber: \"\",\n accountingContactEmail: \"\",\n status: \"Pending Registration\",\n};\n\nconst EMPTY_DEFAULT_FEE = {\n id: -1,\n feeType: null,\n jobType: null,\n amount: \"\",\n editing: true,\n};\n\nconst EMPTY_CHECK_LIST_ITEM = {\n id: -1,\n itemType: null,\n name: \"\",\n documentType: null,\n jobType: null,\n isRequired: false,\n seq: null,\n prompt: \"\",\n defaultBooleanValue: false,\n regExValidation: \"\",\n editing: true,\n};\n\nconst PHRASES = [\n \"Buying cinder blocks...\",\n \"Leveling site...\",\n \"Avoiding power lines...\",\n];\n\nconst SUBSCRIPTION_STATUSES = [\n { value: \"Active\", label: \"Active\" },\n { value: \"Inactive\", label: \"Inactive\" },\n];\n\nconst INVOICE_STATUSES = [\n { value: 1, label: \"Pending\" },\n { value: 2, label: \"Paid\" },\n { value: 3, label: \"Declined\" },\n { value: 4, label: \"Cancelled\" },\n { value: 5, label: \"Delivered\" },\n];\n\nconst INVOICE_STATUS_IDS = {\n pending: 1,\n paid: 2,\n declined: 3,\n cancelled: 4,\n delivered: 5,\n};\n\nconst CALENDAR_VIEW_TYPES = {\n MONTH: \"month\",\n WEEK: \"week\",\n DAY: \"day\",\n}\n\nconst constants = {\n CALENDAR_VIEW_TYPES: CALENDAR_VIEW_TYPES,\n THEME: THEME,\n TEN_SECONDS_MS: 10000,\n ONE_MINUTES_MS: 60000,\n FIVE_MINUTES_MS: 300000,\n TEN_MINUTES_MS: 600000,\n TWENTY_MINUTES_MS: 1200000,\n TWENTY_THREE_HOURS_MS: 82800000,\n DEFAULT_TIMEZONE: \"Eastern Standard Time\",\n REPORT_PARAMETER_TYPES: REPORT_PARAMETER_TYPES,\n STATES: _.map(STATES, (s) => ({ label: s, value: s })),\n SORT_DIRECTION: SORT_DIRECTION,\n ROLE_NAMES: ROLE_NAMES,\n ROLE_IDS: ROLE_IDS,\n ROLE_DICTIONARY: ROLE_DICTIONARY,\n BREAKPOINTS: BREAKPOINTS,\n RIG_TYPES: RIG_TYPES,\n PRODUCT_TYPES: PRODUCT_TYPES,\n JOB_STATUSES: JOB_STATUSES,\n JOB_STATUS_IDS: JOB_STATUS_IDS,\n JOB_STATUS_NAMES: JOB_STATUS_NAMES,\n PRODUCT_STATUS: PRODUCT_STATUS,\n SHED_STYLES: SHED_STYLES,\n COLORS: COLORS,\n COLOR_IDS: COLOR_IDS,\n ROOF_MATERIALS: ROOF_MATERIALS,\n MATERIALS: MATERIALS,\n JOB_TYPES: JOB_TYPES,\n JOB_TYPE_IDS: JOB_TYPE_IDS,\n JOB_FEES: JOB_FEES,\n ALL_ROLES: ALL_ROLES,\n HAULER_ROLES: HAULER_ROLES,\n COMPANY_ROLES: COMPANY_ROLES,\n REFERENCE_DATA_URL_LIST: REFERENCE_DATA_URL_LIST,\n REPORT_URL_LIST: REPORT_URL_LIST,\n RENDER_TYPES: RENDER_TYPES,\n ADMIN_TABS: ADMIN_TABS,\n EMPTY_ORGANIZATION,\n EMPTY_USER,\n EMPTY_LOCATION,\n EMPTY_DEFAULT_FEE,\n EMPTY_CHECK_LIST_ITEM,\n LOCATION_TYPES,\n ORG_TYPE_NAMES,\n ORG_TYPE_IDS,\n ORG_TYPE_LIST,\n EMPTY_ORG_SUBSCRIPTION,\n ADMIN_TASK_ROLE_IDS,\n PHRASES,\n SUBSCRIPTION_STATUSES,\n DOCUMENT_TYPE_IDS,\n DOCUMENT_TYPE_LIST,\n CHECKLIST_ITEM_TYPE_IDS,\n MIME_XLSX:\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n MIME_PDF: \"application/pdf\",\n INVOICE_STATUSES,\n INVOICE_STATUS_IDS,\n};\n\nexport default constants;\n","import moment from \"moment\";\n\nconst YMD = \"YYYY-MM-DD\";\nconst MDY = \"MM/DD/YY\";\nconst MDY4 = \"MM/DD/YYYY\";\nconst YMDHMS = \"YYYY-MM-DD HH:mm:ss\";\n\nconst momentFromString = function (date, fmt = null) {\n if (fmt) {\n return moment(date, fmt, true);\n }\n if (date) {\n return moment(date);\n }\n return null;\n};\n\nconst VALID_DATE_FORMAT_LIST = [\n MDY4,\n \"M/D/YY\",\n \"MM/D/YY\",\n MDY,\n \"MM/D/YYYY\",\n \"M/D/YYYY\",\n YMD,\n];\n\nconst verifyDate = (s) => {\n if (!s) return null;\n const test = moment(s, VALID_DATE_FORMAT_LIST);\n return test.isValid() ? test : null;\n};\n\nconst dateHelpers = {\n MDY: MDY,\n YMD: YMD,\n MDY4: MDY4,\n isDateValid(dateString) {\n if (!dateString) {\n return false;\n }\n if (!moment(dateString, \"MM/DD/YYYY\", true).isValid()) {\n return false;\n }\n return true;\n },\n\n getSelectedDate(date, fmt = null) {\n if (date) {\n return fmt ? moment(date).format(fmt) : moment(date);\n }\n return null;\n },\n\n toShortDateString(d, fmt = null) {\n if (!d) return \"\";\n return momentFromString(d, fmt).format(\"DD-MMM-YY\");\n },\n\n toMDYDateString(d, fmt = null) {\n if (!d) return \"\";\n return momentFromString(d, fmt).format(\"MM-DD-YY\");\n },\n\n toDateString(d, fmt = null) {\n if (!d) return \"\";\n return momentFromString(d, fmt).format(\"ddd, MM/DD/YY\");\n },\n\n toTimeString(d, fmt = null) {\n if (!d) return \"\";\n return momentFromString(d, fmt).format(\"h:mm a\");\n },\n\n getStringFromMoment(m) {\n if (m) {\n return m.format(\"YYYY-MM-DD\");\n }\n return null;\n },\n\n formatDateToShortDate(date, fmt = null) {\n if (date) {\n if (moment.isMoment(date)) {\n return date.format(MDY4);\n } else if (fmt === null) {\n return moment(date).format(MDY4);\n } else {\n return moment(date, fmt, true).format(MDY4);\n }\n }\n return date;\n },\n\n getTimeStringFromMoment(m) {\n if (!m) return \"\";\n return m.format(\"hh:mm A\");\n },\n\n getMomentFromString(date, fmt) {\n return momentFromString(date, fmt);\n },\n\n parseDatePickerDate(s, fmt = YMD) {\n const validated = verifyDate(s);\n if (validated) {\n return validated.format(fmt);\n } else {\n return s;\n }\n },\n\n getTimeRange() {\n const start = moment().startOf(\"06:00\");\n const times = 14 * 2; // 14 hours * two 30 mins sessions/hour\n\n for (let i = 0; i < times; i++) {\n const toPrint = moment(start)\n .add(30 * i, \"minutes\")\n .format(\"hh:mm A\");\n return toPrint;\n }\n },\n\n formatDateForServer(date, fmt) {\n if (date) {\n if (moment.isMoment(date)) return date.format(YMD);\n return moment(date, fmt).format(YMD);\n }\n return date;\n },\n\n formatDateTimeForServer(dateTime) {\n if (dateTime) {\n if (moment.isMoment(dateTime)) return dateTime.format(YMDHMS);\n return moment(dateTime).format(YMDHMS);\n }\n return dateTime;\n },\n\n dateFormatForClient(datetime) {\n if (datetime) {\n return moment(datetime).toDate();\n }\n },\n\n dateTimeFormat(dateTime, fmt = \"MM/DD/YYYY h:mm a\") {\n if (dateTime) {\n return moment.utc(dateTime).local().format(fmt);\n }\n return dateTime;\n },\n\n monthDayAndYear(dateTime) {\n if (dateTime) {\n return moment.utc(dateTime).local().format(MDY4);\n }\n return dateTime;\n },\n momentFromString: momentFromString,\n};\n\nexport default dateHelpers;\n","import _ from \"lodash\";\nimport api from \"./api\";\n\nconst find_filter = (filterName, filters) =>\n _.find(filters, (x) => x.filterName === filterName);\n\nconst filterHelpers = {\n // gets a new filters array based on the new filter\n // being sent back to the page from the filter component\n getFilters(priorFilters, newFilter) {\n const filterIndex = priorFilters.findIndex(x => x.filterName === newFilter.filterName);\n let newFilters = priorFilters.slice();\n if (filterIndex === -1) {\n newFilters.push(newFilter);\n } else {\n newFilters[filterIndex] = newFilter;\n }\n newFilters = _.reject(newFilters, (x) => x.label === \"Any\");\n return newFilters.filter((x) =>\n x.value !== null ||\n (x.values && x.values.length && x.values.length > 0) ||\n x.startDate ||\n x.endDate\n );\n },\n\n // transform_filters(filters = []) {\n // return filters.reduce((acc, item, i) => {\n // acc[item.filterName] = item.value !== null ? item.value : item.values;\n // return acc;\n // }, {});\n // },\n\n currentFilterValue(filters, name) {\n const filterElement = _.find(filters, (f) => f.filterName === name);\n if (filterElement) {\n if (filterElement.value) {\n return filterElement.value;\n }\n return filterElement.values;\n }\n return \"\";\n },\n\n transformFilters(filters = []) {\n return filters.reduce((acc, item, i) => {\n let itemValueToAdd;\n if (item.value === null || item.value === undefined) {\n //allow false to be passed\n if (item.values) {\n itemValueToAdd = item.values;\n }\n } else {\n itemValueToAdd = item.value;\n }\n //acc[item.filterName] = item.value || item.values;\n acc[item.filterName] = itemValueToAdd;\n return acc;\n }, {});\n },\n\n transformFiltersMultiToCSV(filters = []) {\n return filters.reduce((acc, item, i) => {\n acc[item.filterName] = item.value ? item.value : item.values.join(\",\");\n return acc;\n }, {});\n },\n\n saveSearch(area, sort_dir, sort_field, filters) {\n api\n .post(\"save_search\", {\n area,\n serialized_search: {\n sort_field,\n sort_dir,\n filters,\n },\n })\n .catch((error) => error);\n },\n\n setSavedFilters(area, callBack) {\n api\n .fetch(\"get_saved_search\", { area })\n .then((response) => {\n const search = response.data.serialized_search;\n callBack(search.sort_field, search.sort_dir, search.filters);\n })\n .catch((error) => error);\n },\n\n getValue(filterName, filters) {\n const filter = find_filter(filterName, filters);\n return filter ? filter.value : \"\";\n },\n\n getValues(filterName, filters) {\n const filter = find_filter(filterName, filters);\n return filter ? filter.values : [];\n },\n\n getStartDate(filterName, filters) {\n const filter = find_filter(filterName, filters);\n return filter ? filter.startDate : null;\n },\n\n getEndDate(filterName, filters) {\n const filter = find_filter(filterName, filters);\n return filter ? filter.endDate : null;\n },\n}\n\nexport default filterHelpers;\n","import React, { useState, useEffect } from \"react\";\nimport { Card, CardHeader, CardBody, Collapse, CardFooter } from \"reactstrap\";\nimport _ from \"lodash\";\n\nexport default function CollapsibleCardSection({\n startOpen,\n titleClass,\n cardName,\n cardClass,\n alwaysOpen,\n cardBody,\n cardFooter\n}) {\n let initialOpen = _.isBoolean(startOpen) ? startOpen : true;\n let stayOpen = _.isBoolean(alwaysOpen) ? alwaysOpen : true;\n const [collapseOpen, setCollapseOpen] = useState(initialOpen);\n\n useEffect(() => {\n let newOpen = _.isBoolean(startOpen) ? startOpen : true;\n setCollapseOpen(newOpen);\n }, [startOpen]);\n return (\n \n setCollapseOpen(!collapseOpen)}\n disabled={stayOpen}\n className={titleClass || \"collapsibleCardSectionTitle\"}\n >\n
{cardName}
\n \n \n {cardBody}\n {cardFooter && {cardFooter}}\n \n
\n );\n}\n","import React, { Fragment } from \"react\";\nimport DatePicker from \"react-datepicker\";\nimport \"react-datepicker/dist/react-datepicker.css\";\nimport { dateHelpers } from \"../utils\";\n\nexport default function DateFilter(props) {\n function onChange(value) {\n const dateDisplay = value\n ? `${props.displayName}: ${dateHelpers.formatDateToShortDate(value)}`\n : null;\n\n props.onChangeCallback({\n value: value,\n filterName: props.filterName,\n filteredDisplay: dateDisplay,\n });\n }\n\n return (\n \n \n {props.displayName}\n \n
\n onChange(e)}\n className=\"form-control\"\n />\n
\n
\n );\n}\n","import React from \"react\";\nimport moment from \"moment\";\nimport { Input } from \"reactstrap\";\n\nconst DateQuickSelect = (props) => {\n const changeQuickSelect = (quickSelectType) => {\n switch (quickSelectType) {\n case \"lastweek\":\n props.setStartDate &&\n props.setStartDate(moment().subtract(1, \"weeks\").startOf(\"isoWeek\"));\n props.setEndDate &&\n props.setEndDate(moment().subtract(1, \"weeks\").endOf(\"isoWeek\"));\n break;\n case \"weektodate\":\n props.setStartDate && props.setStartDate(moment().startOf(\"isoWeek\"));\n props.setEndDate && props.setEndDate(moment().startOf(\"day\"));\n break;\n case \"lastmonth\":\n props.setStartDate &&\n props.setStartDate(moment().subtract(1, \"months\").startOf(\"month\"));\n props.setEndDate &&\n props.setEndDate(moment().subtract(1, \"months\").endOf(\"month\"));\n break;\n case \"monthtodate\":\n props.setStartDate &&\n props.setStartDate(moment().subtract(0, \"months\").startOf(\"month\"));\n props.setEndDate && props.setEndDate(moment().startOf(\"day\"));\n break;\n case \"lastyear\":\n props.setStartDate &&\n props.setStartDate(moment().subtract(1, \"years\").startOf(\"year\"));\n props.setEndDate &&\n props.setEndDate(moment().subtract(1, \"years\").endOf(\"year\"));\n break;\n case \"yeartodate\":\n props.setStartDate &&\n props.setStartDate(moment().subtract(0, \"years\").startOf(\"year\"));\n props.setEndDate && props.setEndDate(moment().startOf(\"day\"));\n break;\n default:\n return;\n }\n };\n\n return (\n changeQuickSelect(e.target.value)}\n type=\"select\"\n value=\"\"\n style={props.style || { width: \"15px\", float: \"right\" }}\n >\n \n \n \n \n \n \n \n \n );\n};\n\nexport default DateQuickSelect;\n","import React from \"react\";\n\nexport default function EstimatedTimeOfDay(props) {\n return (\n \n \n \n \n \n \n );\n}\n","import React, { Fragment } from \"react\";\nimport { Media } from \"react-breakpoints\";\n\nconst FilterableScreen = (props) => (\n \n {({ breakpoints, currentBreakpoint }) => {\n switch (currentBreakpoint) {\n case breakpoints.mobile:\n return (\n \n
{props.children}
\n
{props.filters}
\n
\n );\n case breakpoints.desktop:\n default:\n return (\n
\n {props.filters &&\n
{props.filters}
\n }\n
{props.children}
\n {props.pager &&\n
{props.pager}
\n }\n
\n );\n }\n }}\n
\n);\n\nexport default FilterableScreen;","import React, { Component } from \"react\";\nimport { Row, Collapse, Button, Col } from \"reactstrap\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport _ from \"lodash\";\n\nexport default class FilterSet extends Component {\n constructor(props) {\n super(props);\n this.state = {\n filterDisplayText: \"\",\n collapse: !(props.open || true),\n clearFilters: props.clearFilters\n };\n this.toggleFilter = this.toggleFilter.bind(this);\n this.getFilterDisplay = this.getFilterDisplay.bind(this);\n }\n\n componentDidMount() {\n this.setState({filterDisplayText: this.getFilterDisplay(this.props.filters)});\n }\n\n componentDidUpdate(prevProps) {\n if (!_.isEqual(prevProps.filters, this.props.filters)) {\n this.setState({filterDisplayText: this.getFilterDisplay(this.props.filters)});\n }\n }\n\n toggleFilter() {\n this.setState((prevState) => { return { collapse: !prevState.collapse }}, () => {\n if (this.props.toggleFilters) {\n this.props.toggleFilters(this.state.collapse);\n }}\n );\n }\n\n getFilterDisplay(filters) {\n if (!filters || !filters.length || filters.length === 0) {\n return null;\n }\n const filterDisplay = _.chain(filters)\n .map(x => {\n return x.value !== null || x.values || x.startDate || x.endDate\n ? x.filteredDisplay\n : null}\n )\n .filter(x => x !== null && x !== undefined)\n .value()\n .join(\" | \");\n if (!filterDisplay) {\n return \"\";\n }\n return ` - ${filterDisplay}`;\n }\n\n render() {\n return (\n \n \n \n \n {\" \"}\n this.toggleFilter()}\n >\n Filters\n \n \n {this.state.filterDisplayText}\n \n {this.props.filters && this.props.filters.length !== 0 &&\n (\n \n {\" \"}\n Clear\n \n )}\n \n \n \n \n \n {this.props.children}\n \n \n \n \n \n );\n }\n}\n","import React, { Fragment, useState, useEffect } from \"react\";\nimport DebounceInput from \"react-debounce-input\";\n\nexport default function FilterText(props) {\n const [value, setValue] = useState(\"\");\n\n useEffect(() => {\n setValue(props.value || \"\")\n }, [props.value])\n\n function onChange(value) {\n let resolvedValue = value;\n if (props.forceInt) {\n resolvedValue = parseInt(value);\n if (isNaN(resolvedValue)) {\n resolvedValue = null;\n }\n }\n const filteredDisplay = resolvedValue\n ? props.useEqualsDisplayName\n ? `${props.displayName}: ${resolvedValue}`\n : `${props.displayName} ${props.descriptionPrefix ? props.descriptionPrefix : \"starts with\"} ${resolvedValue}`\n : null;\n setValue(resolvedValue);\n props.onChangeCallback({\n filterName: props.filterName,\n value: resolvedValue,\n filteredDisplay: filteredDisplay\n });\n }\n\n return (\n \n
\n {props.displayName}\n
\n onChange(event.target.value)}\n />\n
\n );\n}\n","import React, { Fragment, useState, useEffect } from 'react';\nimport Switch from \"react-switch\";\n\nexport default function FilterSwitch(props) {\n const [value, setValue] = useState(false);\n\n useEffect(() => {\n setValue(props.value || false)\n }, [props.value])\n\n function onChange(checked) {\n const filteredDisplay = checked\n ? props.displayName\n : '';\n props.onChangeCallback({\n filterName: props.filterName,\n value: checked,\n filteredDisplay,\n });\n setValue(checked);\n }\n\n return (\n \n
{props.displayName}
\n onChange(checked)}\n checked={value || false}\n />\n
);\n}\n","import React, { Fragment, useState, useEffect } from 'react';\nimport Select from \"react-select\";\nimport makeAnimated from \"react-select/animated\";\nimport _ from 'lodash';\n\nexport default function FilterSelect(props) {\n const [value, setValue] = useState(null);\n const [options, setOptions] = useState([]);\n\n useEffect(() => {\n setValue(props.value || null);\n setOptions(props.options || []);\n }, [props.value, props.options])\n\n function onChange(selection) {\n const label = selection === null ? null : selection.label;\n props.onChangeCallback({\n filterName: props.filterName,\n value: selection === null ? null : selection.value,\n label: label,\n filteredDisplay: value === null\n ? ''\n : `${props.displayName}: ${label}`\n });\n }\n\n const selectedValue = (!value)\n ? null\n : _.find(options, x => x.value === value);\n if (!options) return null;\n return (\n \n
{props.displayName}
\n \n
\n );\n}\n","import React, { Fragment, useState, useEffect } from 'react';\nimport Select from 'react-select';\nimport makeAnimated from \"react-select/animated\";\nimport _ from 'lodash';\n\nexport default function FilterMultiSelect(props) {\n const [values, setValues] = useState([]);\n const [options, setOptions] = useState([]);\n\n useEffect(() => {\n setValues(props.values || null);\n setOptions(props.options || []);\n }, [props.values, props.options])\n\n function onChange(selections) {\n if (!selections){\n props.onChangeCallback({\n filterName: props.filterName,\n value: [],\n labels: [],\n filteredDisplay: \"\"\n });\n return;\n }\n const labels = selections.map(x => x.label);\n const valuesDisplay = labels.join(', ');\n props.onChangeCallback({\n filterName: props.filterName,\n value: selections.map(x => x.value),\n labels: labels,\n filteredDisplay: valuesDisplay\n ? `${props.displayName}: ${valuesDisplay}`\n : ''\n });\n }\n\n if (!props.options) return null;\n const selectedValues = (!values || values.length === 0)\n ? null\n : _.filter(options, o => _.includes(values, o.value));\n return (\n \n
{props.displayName}:
\n {selectedValues === null // working around a deficiency in this select control for setting no items selected on a multiselect\n ? ()\n : ()\n }\n
);\n}\n","import React from \"react\";\nimport {\n Col,\n Row,\n Button,\n ButtonGroup,\n Modal,\n ModalHeader,\n ModalBody,\n ModalFooter,\n} from \"reactstrap\";\n\nexport default function JobSummaryModal(props) {\n function closeModal() {\n props.onClose && props.onClose();\n }\n\n return (\n \n {props.title}\n \n \n \n {props.data.map((u) => (\n \n {u.display}\n {u.date}\n \n ))}\n \n \n \n \n \n \n \n \n \n );\n}\n","import React from 'react';\nimport { Pagination, PaginationItem, PaginationLink } from 'reactstrap';\n\nconst PagerLink = props => (\n \n props.callBack()}>\n {props.linkText}\n \n \n);\n\nconst Pager = (props) => {\n if (!props.callBack) {\n console.warn('Add a callBack function property on the pager that accepts a page param');\n }\n\n const showPager = (props.totalPages > 0);\n const previous = (props.pageNumber > 1);\n const next = (props.pageNumber !== props.totalPages) && (props.totalPages > 1);\n\n return (\n
\n {showPager &&\n \n {previous &&\n props.callBack(1)} refPage={props.refPage} />\n }\n {previous &&\n props.callBack(props.pageNumber - 1)} refPage={props.refPage} />\n }\n Page {props.pageNumber} of {props.totalPages}\n {next &&\n props.callBack(props.pageNumber + 1)} refPage={props.refPage} />\n }\n {next &&\n props.callBack(props.totalPages)} refPage={props.refPage} />\n }\n \n }\n
\n );\n};\n\nexport default Pager;\n","import React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { Col, Row } from \"reactstrap\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\n/*\n colSize: *optional* 1-12, default of 4\n routePath: navigate to this path upon click\n title: *optional* visible string\n count: *optional* number to display along with the title\n*/\nconst LinkPanel = props => {\n return (\n \n \n \n {props.iconKey && \n \n \n \n }\n \n
{props.title}
\n {props.count !== undefined ? (\n
{props.count}
\n ) : null}\n \n
\n \n \n );\n}\n\nexport default LinkPanel;\n","import React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { Col, Card, Row } from \"reactstrap\";\n\nexport default function StatCard(props) {\n return (\n \n \n \n {props.cardName}\n {props.count}\n \n \n \n );\n}\n","import React, { useState, Fragment } from \"react\";\nimport { Button, Row, Col } from \"reactstrap\";\nimport {\n Elements,\n CardElement,\n useStripe,\n useElements,\n} from \"@stripe/react-stripe-js\";\nimport { loadStripe } from \"@stripe/stripe-js\";\n\n// need to change stripe key and get API key from C# application\n// MOST everything on this screen is placeholder with basic Stripe UI example\nconst stripePromise = loadStripe('pk_test_6pRNASCoBOKtIshFeQd4XMUh');\n//const [stripeToken, setStripeToken] = useState(stripePromise);\n\n//need to decide if this should be done in registration or in profile\n//useEffect(() => {\n// api\n// .fetch(\"public/GetToken\")\n// .then(response => {\n// if (response.data) {\n// setStripeToken(response.data);\n// }\n// })\n// .catch(error => {\n// if (props.showError) {\n// Alert(\"There was an error loading stripe token\");\n// } else {\n// console.error(error);\n// }\n// });\n//}, []);\n\nconst CheckoutForm = (props) => {\n const stripe = useStripe();\n const elements = useElements();\n const [error, setError] = useState(null);\n const [message, setMessage] = useState(null);\n const handleSubmit = async (event) => {\n // Block native form submission.\n event.preventDefault();\n\n if (!stripe || !elements) {\n // Stripe.js has not loaded yet. Make sure to disable\n // form submission until Stripe.js has loaded.\n return;\n }\n\n // Get a reference to a mounted CardElement. Elements knows how\n // to find your CardElement because there can only ever be one of\n // each type of element.\n const cardElement = elements.getElement(CardElement);\n\n // Use your card Element with other Stripe.js APIs\n const { error, paymentMethod } = await stripe.createPaymentMethod({\n type: \"card\",\n card: cardElement,\n });\n\n if (error) {\n console.log(\"[error]\", error);\n setError(error.message);\n } else {\n setError(null);\n setMessage(\"Card saved\");\n props.onSuccess(paymentMethod.id)\n }\n };\n\n return (\n
\n \n \n
{props.subscriptionCost}
\n \n
\n {props.isAdmin ? null : (\n \n \n {error &&
{error}
}\n {message &&
{message}
}\n \n Add Card\n \n
\n )}\n
\n );\n};\n\nexport default function StripeCheckout(props) {\n return (\n \n \n \n );\n}\n","import React, { Component } from \"react\";\n\nexport default class TermsAndConditions extends Component {\n render() {\n return
Terms
;\n }\n}\n","import React, { useState, useEffect } from \"react\";\nimport {\n Col,\n Row,\n Button,\n ButtonGroup,\n Modal,\n ModalHeader,\n ModalBody,\n ModalFooter,\n} from \"reactstrap\";\nimport { DebounceInput } from \"react-debounce-input\";\nimport _ from \"lodash\";\n\nexport default function TextNotificationModal(props) {\n const data = props.data;\n const openValue = data && data.length > 0 ? true : false;\n const [open, setOpen] = useState(openValue || false);\n const [message, setMessage] = useState(null);\n\n // this will be taken out when C# api setup\n useEffect(() => {}, []);\n\n function closeModal() {\n setOpen(false);\n props.onClose && props.onClose();\n }\n\n return (\n \n Send Text\n \n \n \n
Text Recipients
\n {_.map(props.data, (u) => {\n return (\n \n {u.label}\n {u.phoneNumber}\n \n );\n })}\n \n
\n
\n \n \n Text Message\n setMessage(event.target.value)}\n />\n \n \n Character Count\n
\n
\n {message && message.length}\n
\n
\n
\n # of Text Messages\n
\n
\n \n {message && message.length > 0\n ? _.ceil(message.length / 144)\n : 0}\n \n
\n \n
\n
\n \n \n \n closeModal()}\n // disabled={!quoteMode}\n >\n Send Text\n \n \n \n
\n );\n}\n","import React, { Component, Fragment } from \"react\";\nimport {\n Button,\n Card,\n CardBody,\n Col,\n Row,\n CardTitle,\n CardText,\n} from \"reactstrap\";\nimport Select from \"react-select\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { api } from \"../utils\";\nimport _ from \"lodash\";\nimport Dropzone from \"react-dropzone\";\nimport Alert from \"react-s-alert\";\n\nconst newDocument = {\n file: \"\",\n document_type: \"\",\n document_type_id: \"\",\n};\n\nexport default class Upload extends Component {\n constructor(props) {\n super(props);\n this.state = {\n files: [],\n newDocument: newDocument,\n };\n\n this.onDrop = this.onDrop.bind(this);\n this.uploadDocument = this.uploadDocument.bind(this);\n this.removeFile = this.removeFile.bind(this);\n }\n\n uploadDocument() {\n const customer_document_data = {\n file: this.state.newDocument.file,\n document_type_id: this.state.newDocument.document_type_id,\n customer_id: this.props.customer_id,\n name: this.state.files[0].name,\n document_url: this.state.files[0].name,\n type: this.props.type,\n };\n\n const trailer_document_data = {\n file: this.state.newDocument.file,\n document_type_id: this.state.newDocument.document_type_id,\n trailer_id: this.props.trailer_id,\n name: this.state.files[0].name,\n document_url: this.state.files[0].name,\n type: this.props.type,\n };\n let data = {};\n switch (this.props.type) {\n case \"customer_document\":\n data = customer_document_data;\n break;\n case \"trailer_document\":\n data = trailer_document_data;\n break;\n default:\n break;\n }\n\n api\n .post(\"uploadDocument\", data)\n .then((response) => {\n if (response.data === \"ok\") {\n this.setState(\n {\n newDocument: newDocument,\n files: [],\n },\n this.props.reload\n );\n } else {\n Alert.error(\"There was an error uploading the file\");\n }\n })\n .catch((error) => {\n Alert.error(\"There was an error uploading the file\", {\n timeout: 4000,\n });\n });\n }\n\n onDrop(files) {\n let file = files[0];\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = (event) => {\n this.setState({\n ...this.state,\n newDocument: {\n ...this.state.newDocument,\n file: event.target.result,\n },\n files: files,\n });\n };\n }\n\n handleDocumentFormInput(value, field) {\n if (field === \"document_type_id\") {\n this.setState({\n ...this.state,\n newDocument: {\n ...this.state.newDocument,\n [field]: value.value,\n document_type: value,\n },\n });\n } else {\n this.setState({\n ...this.state,\n newDocument: {\n ...this.state.newDocument,\n [field]: value,\n },\n });\n }\n }\n\n removeFile(e, file) {\n e.preventDefault();\n const currentState = this.state.files;\n const files = _.filter(currentState, (f) => f.name !== file.name);\n this.setState({ files: files });\n }\n\n render() {\n return (\n \n \n \n \n \n Drop files or click on the icon below\n
\n \n {(dropzoneProps) => {\n return (\n
\n \n
\n );\n }}\n \n
\n
\n
\n
\n \n {this.state.files.map((f) => (\n
  • \n {f.name} \n this.removeFile(e, f)}\n >\n \n \n
  • \n ))}\n
    \n \n {this.state.files.length === 1 && (\n \n Document Type\n \n this.handleDocumentFormInput(e, \"document_type_id\")\n }\n value={this.state.newDocument.document_type}\n />\n \n )}\n
    \n {/* \n \n \n \n \n \n \n */}\n
    \n );\n }\n}\n","import React, { useState, useEffect } from 'react';\nimport { constants } from '../utils';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nexport default function SortHeader(props) {\n const [direction, setDirection] = useState(props.sortDirection || constants.SORT_DIRECTION.ASC);\n\n useEffect(() => {\n setDirection(props.sortDirection || constants.SORT_DIRECTION.ASC);\n }, [props.sortDirection])\n\n const callBackDir = direction === constants.SORT_DIRECTION.DESC \n ? constants.SORT_DIRECTION.ASC \n : constants.SORT_DIRECTION.DESC;\n\n return (\n
    props.onCallback(props.fieldName, callBackDir)} className=\"sort-handle\">\n {props.displayName}\n {props.sorted && direction === constants.SORT_DIRECTION.ASC\n ? \n : null\n }\n {props.sorted && direction === constants.SORT_DIRECTION.DESC\n ? \n : null\n }\n
    \n );\n}","import React, { useState, useEffect, Fragment } from \"react\";\nimport _ from \"lodash\";\nimport Select from \"react-select\";\nimport makeAnimated from \"react-select/animated\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { Col, Button, Row, ButtonGroup, Table } from \"reactstrap\";\nimport { api, helpers } from \"../utils\";\nimport { CollapsibleCardSection } from \".\";\nimport Alert from \"react-s-alert\";\n\nexport default function EditUnitType(props) {\n const [organizationUnitTypes, setOrganizationUnitTypes] = useState(\n props.companyUnitTypes ? props.companyUnitTypes : []\n );\n const [unitTypeList, setUnitTypeList] = useState([]);\n const org = props.organization ? props.organization : {};\n const registrationMode = props.registrationMode;\n const setOrganization = props.setOrganization;\n\n useEffect(() => {\n api\n .fetch(\"public/UnitTypeList\")\n .then((response) => {\n if (response.data && response.data.length) {\n setUnitTypeList(\n _.map(response.data, (d) => {\n d.label = d.name;\n d.value = d.id;\n return d;\n })\n );\n }\n })\n .catch((error) => {\n console.error(error);\n });\n }, []);\n\n useEffect(() => {\n if (registrationMode) {\n setOrganization(organizationUnitTypes);\n }\n }, [organizationUnitTypes, registrationMode]);\n\n useEffect(() => {\n setOrganizationUnitTypes(props.companyUnitTypes);\n }, [props.companyUnitTypes]);\n\n function deleteUnitType(index) {\n const newList = Object.assign([], organizationUnitTypes);\n if (!props.registrationMode) {\n if (!window.confirm(\"Are you sure you want to delete this unit type?\"))\n return;\n }\n\n newList.splice(index, 1);\n setOrganizationUnitTypes(newList);\n\n if (!props.registrationMode) {\n saveUnit();\n }\n }\n\n function saveUnit() {\n let payload = {\n Organization: {\n Id: org.id,\n Name: org.name,\n Email: org.email,\n PhoneNumber: org.phoneNumber,\n AboutUs: org.aboutUs,\n EIN: org.einNumber,\n AlternateEIN: org.alternateEINNumber,\n TypeOfCompany: org.typeOfCompany,\n },\n CompanyUnitTypes:\n props.companyUnitTypes && props.companyUnitTypes.length\n ? _.map(props.companyUnitTypes, (r) => {\n return {\n Id: r.value,\n Name: r.label,\n };\n })\n : [],\n };\n api\n .post(`useradmin/SaveOrgDetails`, payload)\n .then((response) => {\n if (response.data.success) {\n Alert.success(\"Your profile has been updated.\");\n return;\n } else {\n Alert.error(response.data.message || \"An error occurred.\");\n return;\n }\n })\n .catch(helpers.catchHandler);\n }\n\n function addUnitType(selection) {\n let list = Object.assign([], organizationUnitTypes);\n let existingType = _.find(list, (l) => {\n return l.value === selection.value;\n });\n if (existingType !== undefined) return;\n\n list.push(selection);\n setOrganizationUnitTypes(list);\n saveUnit();\n }\n\n return (\n \n \n \n \n \n {props.registrationMode ? (\n \n {/*
    At least one is required{helpers.requiredStar()}
    */}\n \n \n \n setOrganizationUnitTypes(selection)\n }\n value={organizationUnitTypes}\n classNamePrefix=\"react-select\"\n />\n \n \n
    \n ) : (\n \n \n
    \n \n \n \n \n \n \n \n \n {organizationUnitTypes &&\n organizationUnitTypes.length > 0\n ? organizationUnitTypes.map((type, index) => (\n \n \n \n \n ))\n : null}\n \n
    Type\n \n addUnitType(selection)\n }\n value={null}\n classNamePrefix=\"react-select\"\n placeholder=\"Select to Add\"\n />\n
    {type.label}\n \n {/**/}\n \n deleteUnitType(index)\n }\n >\n \n \n \n
    \n
    \n \n
    \n )}\n \n
    \n }\n />\n \n \n
    \n );\n}\n","import React, { useState, useContext, useEffect, Fragment } from \"react\";\nimport { Col, Button, Row, Table, ButtonGroup } from \"reactstrap\";\nimport Alert from \"react-s-alert\";\nimport Select from \"react-select\";\nimport makeAnimated from \"react-select/animated\";\nimport _ from \"lodash\";\nimport { api, UserContext, helpers } from \"../utils\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { CollapsibleCardSection } from \"../components\";\nimport Dropzone from \"react-dropzone\";\nimport classnames from \"classnames\";\n\nexport default function DocumentUpload(props) {\n const userCtx = useContext(UserContext);\n const [documentTypeList, setDocumentTypeList] = useState(null);\n const [selectedDocumentType, setSelectedDocumentType] = useState(null);\n const [uploadProcessing, setUploadProcessing] = useState(null);\n const [documentList, setDocumentList] = useState(props.documentList);\n const [showUploadModule, setShowUploadModule] = useState(false);\n const excludeDocTypeIdList = props.excludeDocTypeIdList || null;\n\n useEffect(() => {\n let isMounted = true;\n\n api\n .fetch(`public/DocumentTypeList`)\n .then((response) => {\n if (response.data) {\n if (isMounted) {\n let list = _.map(response.data, (d) => {\n d.label = d.name;\n d.value = d.id;\n return d;\n });\n if (excludeDocTypeIdList && excludeDocTypeIdList.length) {\n list = _.filter(list, (l) => {\n return !excludeDocTypeIdList.contains(l.value);\n });\n }\n setDocumentTypeList(list);\n }\n }\n })\n .catch((error) => {\n console.error(error);\n });\n\n return () => {\n isMounted = false;\n };\n }, [excludeDocTypeIdList]);\n\n useEffect(() => {\n let isMounted = true;\n\n if (props.documentList !== null && isMounted) {\n setDocumentList(props.documentList);\n }\n\n return () => {\n isMounted = false;\n };\n }, [props.documentList]);\n\n function deleteDocument(index) {\n if (!window.confirm(\"Are you sure you want to delete this document?\"))\n return;\n let list = documentList.slice();\n let id = list[index].id;\n api\n .delete(`${props.deleteUrl}/${id}`)\n .then((response) => {\n if (response && response.data.success) {\n Alert.success(\"Document was deleted.\");\n props.refresh();\n } else {\n Alert.error(response.data.message || \"An error occurred.\");\n }\n })\n .catch((error) => {\n if (props.showError) {\n Alert(\"There was an error retrieving document types\");\n } else {\n console.error(error);\n }\n });\n }\n\n return (\n \n \n \n {showUploadModule && (\n \n Select Document Type before attaching file\n \n )}\n setShowUploadModule(!showUploadModule)}\n className={classnames(\n { projectSuccess: !showUploadModule },\n \"float-right\"\n )}\n >\n {showUploadModule ? \"Cancel\" : \"Upload\"}\n \n \n \n\n {showUploadModule && (\n \n \n \n Document Type:\n setSelectedDocumentType(e)}\n value={selectedDocumentType || null}\n onBlurResetsInput={false}\n onSelectResetsInput={false}\n onCloseResetsInput={false}\n classNamePrefix=\"react-select\"\n />\n {uploadProcessing && (\n \n )}\n \n \n \n \n {\n if (!acceptedFiles) {\n Alert.warning(\"Document format is not accepted\");\n return;\n }\n setUploadProcessing(true);\n\n const formData = new FormData();\n formData.append(\"file\", acceptedFiles[0]);\n props.orgId && formData.append(\"orgId\", props.orgId);\n props.jobId && formData.append(\"jobId\", props.jobId);\n formData.append(\"id\", userCtx.currentUser.id);\n if (!selectedDocumentType) {\n Alert.error(\"Document Type is required\");\n return;\n }\n formData.append(\n \"documentTypeId\",\n selectedDocumentType.value\n );\n api\n .post_form_data(props.uploadUrl, formData)\n .then((response) => {\n if (response.data.success) {\n Alert.success(\"Document was uploaded\");\n setSelectedDocumentType(null);\n if (props.refresh) {\n props.refresh();\n }\n } else {\n Alert.error(\n response.data.message ||\n \"An error occurred while processing upload.\"\n );\n setUploadProcessing(false);\n // setUploadResults(null);\n }\n })\n .catch((error) => {\n Alert.error(\n \"There was an error processing uploading your file.\"\n );\n setUploadProcessing(false);\n });\n }}\n >\n {({ getRootProps, getInputProps }) => (\n
    \n \n \n \n \n \n \n \n
    \n {`Drag file here to upload (or click here to choose file)`}\n
    \n \n
    \n )}\n \n \n
    \n
    \n )}\n \n \n \n \n \n \n \n \n \n \n \n {documentList && documentList.length > 0 ? (\n documentList.map((d, index) => (\n \n \n \n \n \n ))\n ) : (\n \n \n \n )}\n \n
    FileType
    \n
    \n \n {helpers.truncateStringOverLength(\n d.name || d.fileName,\n 20,\n true\n )}\n \n
    \n
    {d.mimeType}
    \n
    {d.documentTypeName}\n \n \n window.open(\n d.signedURL || d.signedUrl,\n \"_blank\"\n )\n }\n >\n \n \n deleteDocument(index)}\n >\n \n \n \n
    No documents found
    \n \n
    \n \n }\n />\n );\n}\n","import React, { useState, useEffect, Fragment } from \"react\";\nimport Select from \"react-select\";\nimport makeAnimated from \"react-select/animated\";\nimport _ from \"lodash\";\nimport { api, constants } from \"../utils\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { CollapsibleCardSection } from \".\";\nimport { Button, ButtonGroup, Table } from \"reactstrap\";\nimport Alert from \"react-s-alert\";\n\nconst emptyVeto = {\n id: -1,\n partnerOrg: null,\n editing: true,\n};\n\nexport default function OrgAccessModule(props) {\n // const userCtx = useContext(UserContext);\n const [orgList, setOrgList] = useState(props.orgList ? props.orgList : []);\n const [showAddRow, setShowAddRow] = useState(false);\n const [partnerOrgList, setPartnerOrgList] = useState([]);\n\n const saveUrl = \"org/SaveOrgAccess\";\n const type = props.isAllowAccess ? \"Allow Access\" : \"Deny Access\";\n\n useEffect(() => {\n const getListURL = props.showCompanies\n ? \"org/CompanySelectList\"\n : \"general/GetHaulingCompanyList\";\n const payload = props.showCompanies\n ? { exceptOrgTypeId: constants.ORG_TYPE_IDS.HAULER_FIRM }\n : {};\n api\n .post(getListURL, payload)\n .then((response) => {\n setPartnerOrgList(\n _.map(response.data, (d) => ({\n ...d,\n label: d.name,\n value: d.id,\n }))\n );\n })\n .catch((error) => {\n if (props.showError) {\n Alert(\"There was an error retrieving subscription types\");\n } else {\n console.error(error);\n }\n });\n setOrgList(props.orgList);\n }, [props.orgList, props.showCompanies, props.showError]);\n\n useEffect(() => {\n if (props.orgList !== null) {\n setOrgList(props.orgList);\n }\n }, [props.orgList]);\n\n function addRow() {\n let list = Object.assign([], orgList);\n list.unshift(Object.assign({}, emptyVeto));\n setOrgList(list);\n setShowAddRow(!showAddRow);\n }\n\n function onVetoChange(selection, index, fieldName) {\n let list = Object.assign([], orgList);\n list[index][fieldName] = selection;\n setOrgList(list);\n }\n\n function onRemoveOrg(index) {\n let list = orgList.slice();\n if (list[index] === undefined) return;\n if (list[index].id < 0) {\n list = _.reject(list, (l, idx) => {\n return idx === index;\n });\n setOrgList(list);\n setShowAddRow(false);\n return;\n }\n api\n .post(\"org/DeleteOrgAccess\", {\n Id: list[index].id,\n OrgId: list[index].orgId,\n PartnerOrgId: list[index].partnerOrgId,\n IsAllowAccess: props.isAllowAccess,\n })\n .then((response) => {\n if (response?.data?.success) {\n setShowAddRow(false);\n Alert.success(`${type} list has been updated`);\n props.refreshOrg();\n } else {\n Alert.error(\n response.data.message ||\n \"An error occurred. List cannot be updated at this time.\"\n );\n }\n })\n .catch((error) => {\n if (props.showError) {\n Alert(`There was an error updating ${type} list`);\n } else {\n console.error(error);\n }\n });\n }\n\n function onSubmit(index) {\n let list = orgList.slice();\n let item = Object.assign({}, list[index]);\n\n let payload = {\n OrgId: props.orgId,\n PartnerOrgId: item.partnerOrg.value,\n IsAllowAccess: props.isAllowAccess,\n };\n\n api\n .post(saveUrl, payload)\n .then((response) => {\n if (response?.data?.success) {\n setShowAddRow(false);\n Alert.success(`${type} list has been updated`);\n props.refreshOrg();\n } else {\n Alert.error(\n response.data.message ||\n \"An error occurred. List cannot be updated at this time.\"\n );\n }\n })\n .catch((error) => {\n if (props.showError) {\n Alert(`There was an error updating ${type} list`);\n } else {\n console.error(error);\n }\n });\n }\n return (\n \n \n \n \n \n \n \n \n \n \n {orgList && orgList.length > 0 ? (\n orgList.map((i, index) => (\n \n {i.editing ? (\n \n \n \n \n ) : (\n \n \n \n \n \n )}\n \n ))\n ) : (\n \n \n \n )}\n \n
    NameCreatedAt\n addRow()}\n >\n \n \n
    \n \n onVetoChange(e, index, \"partnerOrg\")\n }\n value={i.partnerOrg || null}\n onBlurResetsInput={false}\n onSelectResetsInput={false}\n onCloseResetsInput={false}\n classNamePrefix=\"react-select\"\n />\n \n \n onRemoveOrg(index)}\n title=\"Cancel\"\n >\n \n \n onSubmit(index)}\n >\n \n \n \n {i.partnerOrgName}{i.createdAt}\n \n onRemoveOrg(index)}\n >\n \n \n \n
    No records found
    \n \n }\n />\n );\n}\n","import React, { useState, useEffect, Fragment } from \"react\";\nimport Rating from \"react-rating\";\nimport DebounceInput from \"react-debounce-input\";\nimport {\n Col,\n Button,\n Row,\n ButtonGroup,\n Modal,\n ModalBody,\n ModalHeader,\n ModalFooter,\n} from \"reactstrap\";\nimport { api, helpers } from \"../utils\";\nimport Alert from \"react-s-alert\";\nimport { RiTruckLine, RiTruckFill } from \"react-icons/ri\";\nimport Switch from \"react-switch\";\n\nconst emptyRate = {\n id: -1,\n job: null,\n OrgId: null,\n score: null,\n comment: \"\",\n hide: false,\n};\nexport default function RatingModule(props) {\n const [job, setJob] = useState(null);\n const [rating, setRating] = useState(null);\n useEffect(() => {\n if (!props.showRating) {\n setRating(Object.assign({}, emptyRate));\n }\n setJob(props.job);\n }, [props.job, props.showRating]);\n\n useEffect(() => {\n setJob(props.job);\n }, [props.job]);\n\n function onSave() {\n if (!job || (job && !job.id)) {\n Alert.warning(\"Job details is missing.\");\n return;\n }\n if (!rating) {\n Alert.warning(\"Rating details is missing.\");\n return;\n }\n\n if (!rating.score) {\n Alert.warning(\"Rating score is required.\");\n return;\n }\n let payload = {\n Id: rating.id,\n JobId: job.id,\n OrgId: props.forCompany ? job.orgId : job.assignedToOrgId,\n Score: rating.score,\n UserId: job.driverId,\n Comment: rating.comment,\n Hide: rating.hide, // field should be called noShow\n };\n\n if(props.forCompany) {\n api\n .post(\"General/SaveOrgRating\", payload) // Presently used to save only company ratings, not hauler firm ratings\n .then((response) => {\n if (response.data && response.data.success) {\n Alert.success(\"Rating was successfully saved.\");\n if (props.onSuccess) {\n props.onSuccess();\n }\n } else {\n Alert.error(\n \"An error occurred, rating cannot be saved at this time.\"\n );\n }\n })\n .catch(helpers.catchHandler);\n } else {\n api\n .post(\"General/SaveUserRating\", payload) // Presently used to save hauler firm ratings\n .then((response) => {\n if (response.data && response.data.success) {\n Alert.success(\"Rating was successfully saved.\");\n if (props.onSuccess) {\n props.onSuccess();\n }\n } else {\n Alert.error(\n \"An error occurred, rating cannot be saved at this time.\"\n );\n }\n })\n .catch(helpers.catchHandler);\n }\n }\n\n return (\n \n {props.showRatingOnly ? (\n \n \n }\n fullSymbol={\n \n }\n />\n \n ) : (\n rating &&\n job && (\n \n \n Rate{\" \"}\n {props.forCompany\n ? `${job.orgName} `\n : `Service Provided By ${job.assignedToOrgName} `}{\" \"}\n \n \n
    \n
    \n \n Job Details - {job.jobTypeName}\n \n
    \n \n \n From Location\n \n
    \n {job.fromStreetAddress1\n ? `${job.fromStreetAddress1} `\n : null}\n
    \n
    \n {job.fromStreetAddress2\n ? `${job.fromStreetAddress2} `\n : null}\n
    \n
    \n {job.fromCity ? `${job.fromCity}, ` : \"\"}{\" \"}\n {job.fromStateName ? `${job.fromStateName} ` : \"\"}{\" \"}\n {job.fromZip ? `${job.fromZip}` : null}\n
    \n
    \n \n \n To Location\n \n
    {job.toAddress1 ? `${job.toAddress1} ` : null}
    \n
    {job.toAddress2 ? `${job.toAddress2} ` : null}
    \n
    \n {job.toCity ? `${job.toCity}, ` : null}{\" \"}\n {job.toStateName ? `${job.toStateName} ` : null}{\" \"}\n {job.toZipCode ? `${job.toZipCode}` : null}\n
    \n
    \n \n
    \n \n \n Score\n
    \n setRating({ ...rating, score: e })}\n emptySymbol={\n \n }\n fullSymbol={\n \n }\n />\n
    \n \n
    \n \n \n Comment\n \n setRating({ ...rating, comment: event.target.value })\n }\n value={rating.comment || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n \n {!props.forCompany && (\n \n \n
    \n Was No Show?\n
    \n \n setRating({ ...rating, hide: checked })\n }\n checked={rating.hide || false}\n />\n \n
    \n )}\n
    \n
    \n \n \n props.toggle()}\n >\n Cancel\n \n \n \n \n \n )\n )}\n
    \n );\n}\n","import React, { Fragment, useState, useContext, useEffect } from \"react\";\nimport {\n Col,\n Button,\n Row,\n ButtonGroup,\n Modal,\n ModalHeader,\n ModalBody,\n ModalFooter,\n} from \"reactstrap\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport _ from \"lodash\";\nimport Select from \"react-select\";\nimport DatePicker from \"react-datepicker\";\nimport \"react-datepicker/dist/react-datepicker.css\";\nimport moment from \"moment\";\nimport Alert from \"react-s-alert\";\nimport { EstimatedTimeOfDay } from \"../components\";\n\nimport { api, UserContext, helpers } from \"../utils\";\nimport { GiJapaneseBridge } from \"react-icons/gi\";\n\nconst emptySchedule = {\n jobId: null,\n driver: null,\n estimatedPickupAt: null,\n estimatedDropoffAt: null,\n estimatedDropofTimeOfDay: null,\n estimatedPickupTimeOfDay: null,\n};\n\nexport default function ScheduleModal(props) {\n const userCtx = useContext(UserContext);\n const currentUser = userCtx.currentUser;\n const [job, setJob] = useState(false);\n const [driversList, setDriversList] = useState(null);\n const [scheduleJob, setScheduleJob] = useState(null);\n const [isPrivateJob, setIsPrivateJob] = useState(props.isPrivate ? props.isPrivate : false);\n\n\n useEffect(() => {\n api\n .post(`Org/GetOrgDrivers/${currentUser.currentOrgId}`)\n .then((response) => {\n if (response && response.data) {\n setDriversList(\n _.map(response.data, (d) => {\n d.label = d.name;\n d.value = d.id;\n return d;\n })\n );\n }\n })\n .catch(helpers.catchHandler);\n formatScheduleJob(props.job);\n }, [currentUser.currentOrgId, props.job]);\n\n useEffect(() => {\n setJob(props.job);\n }, [props.job]);\n\n function formatScheduleJob(job) {\n if (job) {\n let scheduleJob = isPrivateJob\n ? {\n jobId: job.id,\n driver: Object.assign({}, job.assignedDriver, {value: job.assignedDriver.id, label: job.assignedDriver.fullName}),\n scheduledForDate: job.scheduledForDate\n ? moment(job.scheduledForDate).toDate()\n : \"\",\n estimatedPickupTimeOfDay: job.estimatedPickupTimeOfDay,\n } \n : {\n jobId: job.id,\n driver: job.driver,\n estimatedPickupAt: job.estimatedPickupAt\n ? moment(job.estimatedPickupAt).toDate()\n : \"\",\n estimatedDropoffAt: job.estimatedDropoffAt\n ? moment(job.estimatedDropoffAt).toDate()\n : \"\",\n estimatedDropofTimeOfDay: job.estimatedDropofTimeOfDay,\n estimatedPickupTimeOfDay: job.estimatedPickupTimeOfDay,\n };\n setScheduleJob(scheduleJob);\n } else {\n setScheduleJob(Object.assign({}, emptySchedule));\n }\n }\n\n function onSchedule() {\n if (!scheduleJob) {\n Alert.error(\"Schedule detail is required.\");\n return;\n }\n if (!scheduleJob.driver) {\n Alert.error(\"Please assign a driver.\");\n return;\n }\n if (!scheduleJob.estimatedPickupAt && !scheduleJob.scheduledForDate) {\n Alert.error(\"Estimated pick up is required.\");\n return;\n }\n if (!job || !job.id) {\n Alert.error(\"No Job or Job Id Available\");\n return;\n }\n if(!isPrivateJob) {\n if (!scheduleJob.estimatedDropoffAt) {\n Alert.error(\"Estimated drop off is required.\");\n return;\n }\n if (\n moment(scheduleJob.estimatedDropoffAt).isBefore(\n scheduleJob.estimatedPickupAt\n )\n ) {\n Alert.error(\"Dropoff must be after pickup\");\n return;\n }\n }\n\n let payload = isPrivateJob\n ? {\n JobId: job.id,\n DriverId: scheduleJob.driver ? scheduleJob.driver.value : null,\n AssignedToOrgId: currentUser.currentOrgId,\n ScheduledForDate: scheduleJob.scheduledForDate,\n EstimatedPickupTimeOfDay: scheduleJob.estimatedPickupTimeOfDay\n }\n : {\n JobId: job.id,\n DriverId: scheduleJob.driver ? scheduleJob.driver.value : null,\n AssignedToOrgId: currentUser.currentOrgId,\n EstimatedPickupAt: scheduleJob.estimatedPickupAt,\n EstimatedDropoffAt: scheduleJob.estimatedDropoffAt,\n EstimatedPickupTimeOfDay: scheduleJob.estimatedPickupTimeOfDay,\n EstimatedDropoffTimeOfDay: scheduleJob.estimatedDropoffTimeOfDay,\n };\n let endpoint = isPrivateJob ? \"Job/SchedulePrivateJob\": \"Job/ScheduleJob\";\n api.post(endpoint, payload).then((response) => {\n if (response.data && response.data.success) {\n Alert.success(\"Job has been scheduled.\");\n props.onSuccess();\n } else {\n Alert.error(\"An error occurred. Job cannot be scheduled at this time.\");\n }\n });\n // .catch(helpers.catchHandler);\n }\n return (\n \n \n Schedule Job\n \n \n {scheduleJob !== null && (\n \n \n \n Assigned Driver {helpers.requiredStar()}\n \n setScheduleJob({ ...scheduleJob, driver: e })\n }\n />\n \n \n \n \n { isPrivateJob ? \"Scheduled For\" : \"Estimated Pickup At\"} {helpers.requiredStar()}\n
    \n (\n isPrivateJob\n ? setScheduleJob({...scheduleJob, scheduledForDate: e})\n : setScheduleJob({ ...scheduleJob, estimatedPickupAt: e })\n )}\n />\n
    \n \n {\n !isPrivateJob\n ? \n Estimated Drop Off At {helpers.requiredStar()}\n
    \n \n setScheduleJob({ ...scheduleJob, estimatedDropoffAt: e })\n }\n disabled={isPrivateJob}\n />\n
    \n \n : null\n }\n \n
    \n \n \n Estimated Pickup Time of Day{\" \"}\n \n setScheduleJob({\n ...scheduleJob,\n estimatedPickupTimeOfDay: e.target.value,\n })\n }\n />\n \n {\n !isPrivateJob\n ? \n Estimated Drop Off Time of Day\n \n setScheduleJob({\n ...scheduleJob,\n estimatedDropoffTimeOfDay: e.target.value,\n })\n }\n disabled={isPrivateJob}\n />\n \n : null\n }\n \n
    \n )}\n
    \n \n \n \n Cancel\n \n \n \n \n \n );\n}\n","import React, { useState, useEffect } from \"react\";\nimport Alert from \"react-s-alert\";\nimport AsyncSelect from \"react-select/async\";\nimport _ from \"lodash\";\nimport { api } from \"../utils\";\n\nexport default function OrgTypeahead(props) {\n const [inputValue, setInputValue] = useState(\"\");\n useEffect(() => {}, []);\n\n const loadOrgs = (inputValue, callback) => {\n if (!inputValue || !inputValue.length || inputValue.length < 3) {\n return;\n }\n let payload = {\n Name: inputValue,\n OrgTypeId: props.orgTypeId,\n CurrentOrgId: props.currentOrgId,\n ActiveOnly: props.activeOnly,\n };\n\n api\n .post(`Org/CompanySelectList`, payload)\n .then((response) => {\n let list = _.map(response.data, (d) => {\n return { ...d, label: d.name, value: d.id };\n });\n callback(list);\n })\n .catch((error) => {\n Alert.error(\"There was an error loading the company list\");\n });\n };\n return (\n
    \n props.onChange(e)}\n value={props.value}\n inputValue={inputValue}\n onInputChange={(e) => setInputValue(e)}\n isDisabled={props.isDisabled}\n isClearable={props.isClearable}\n />\n
    \n );\n}\n","import React from \"react\";\nimport Loader from \"react-loader-spinner\";\nimport _ from \"lodash\";\n\n\nexport default function SHBSpinner({on, children, style = {}, className = \"\", phrases = []}) {\n if(on) {\n return (\n
    \n \n

    \n {phrases.length > 0 ? _.sample(phrases) : \"\"}\n

    \n
    \n )\n }\n return children\n}","import React from \"react\";\nimport { Col, Row } from \"reactstrap\";\nimport Alert from \"react-s-alert\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport Dropzone from \"react-dropzone\";\n\nexport default function ChecklistImageUpload(props) {\n return (\n \n \n {\n if (!acceptedFiles) {\n Alert.warning(\"Document format is not accepted\");\n return;\n }\n const files = acceptedFiles.map((file) =>\n Object.assign(file, {\n preview: URL.createObjectURL(file),\n })\n );\n if (!props.documentTypeId) {\n Alert.error(\"Document Type is required\");\n return;\n }\n props.refresh(files[0]);\n }}\n >\n {({ getRootProps, getInputProps }) => (\n
    \n \n \n \n \n \n \n \n
    \n {`Drag file here to upload (or click here to choose file)`}\n
    \n \n
    \n )}\n \n \n
    \n );\n}\n","import React from \"react\";\nimport { Row, Col } from \"reactstrap\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\n\nexport default function ProfileImageRender(props) {\n return (\n \n \n \n {props.profileImage && props.profileImage.signedURL ? (\n \n ) : (\n \n )}\n
    \n {props.isCompany ? \"Company \" : \"\"} Profile Picture\n
    \n {!props.profileImage && (\n
    \n Upload company profile picture under the documents module\n
    \n )}\n \n
    \n \n );\n}\n","import React, { useState } from \"react\";\nimport ReactGoogleAutocomplete from \"react-google-autocomplete\";\nimport _ from \"lodash\";\n\nexport default function AddressAutocomplete({\n placeholder = \"Search for an address\",\n getAddressInfo,\n disabled = false,\n value,\n onChange,\n id,\n style = {},\n}) {\n const [autoCompleteValue, setAutoCompleteValue] = useState(\"\");\n\n function parsePlaceDetails(details) {\n let addressInfo = {};\n if (details && details.address_components) {\n _.each(details.address_components, (c) => {\n if (_.includes(c.types, \"postal_code\")) {\n addressInfo.zip = c.long_name;\n }\n\n if (_.includes(c.types, \"administrative_area_level_1\")) {\n addressInfo.stateAbbr = c.short_name;\n }\n\n if (_.includes(c.types, \"locality\")) {\n addressInfo.city = c.long_name;\n }\n\n if (_.includes(c.types, \"street_number\")) {\n addressInfo.streetNumber = c.long_name;\n }\n\n if (_.includes(c.types, \"route\")) {\n addressInfo.route = c.long_name;\n }\n });\n } else {\n throw new Error(\"No address_components on place details result\");\n }\n\n if (details && details.geometry && details.geometry.location) {\n addressInfo.lat = details.geometry.location.lat();\n addressInfo.lng = details.geometry.location.lng();\n } else {\n throw new Error(\"No location info on place details result\");\n }\n\n getAddressInfo && getAddressInfo(addressInfo);\n setAutoCompleteValue(\"\");\n }\n\n return (\n setAutoCompleteValue(e.target.value)}\n autoComplete=\"off\"\n />\n );\n}\n","import React, { useState } from \"react\";\nimport {\n Col,\n Row,\n Button,\n ButtonGroup,\n Modal,\n ModalHeader,\n ModalBody,\n ModalFooter,\n} from \"reactstrap\";\nimport DebounceInput from \"react-debounce-input\";\n\nexport default function MemberMouseLookupModal(props) {\n const [email, setEmail] = useState(\"\");\n function closeModal() {\n props.onClose && props.onClose();\n }\n\n return (\n \n {props.title}\n \n \n \n Email\n \n setEmail(e.target.value)\n }\n value={email}\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n \n \n \n props.onClickCallback(email)}\n >\n Get Info\n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* \n NOTE: creating new document upload (as opposed to DocumentUpload.js)\n Eventually want to replace all occurences of DocumentUpload.js (but did not want to break current code)\n*/\n\nimport React, { useState, useContext, useEffect, Fragment } from \"react\";\nimport { Col, Button, Row, Table, ButtonGroup } from \"reactstrap\";\nimport Alert from \"react-s-alert\";\nimport Select from \"react-select\";\nimport makeAnimated from \"react-select/animated\";\nimport _ from \"lodash\";\nimport { api, UserContext, helpers } from \"../utils\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { CollapsibleCardSection } from \".\";\nimport Dropzone from \"react-dropzone\";\nimport classnames from \"classnames\";\n\nexport default function JobDocumentUpload(props) {\n const userCtx = useContext(UserContext);\n const [documentTypeList, setDocumentTypeList] = useState(null);\n const [selectedDocumentType, setSelectedDocumentType] = useState(null);\n const [existingDocuments, setExistingDocuments] = useState(props.existingDocuments);\n const [showUploadModule, setShowUploadModule] = useState(false);\n const excludeDocTypeIdList = props.excludeDocTypeIdList || null;\n\n useEffect(() => {\n let isMounted = true;\n\n api\n .fetch(`public/DocumentTypeList`)\n .then((response) => {\n if (response.data) {\n if (isMounted) {\n let list = _.map(response.data, (d) => {\n d.label = d.name;\n d.value = d.id;\n return d;\n });\n if (excludeDocTypeIdList && excludeDocTypeIdList.length) {\n list = _.filter(list, (l) => {\n return !excludeDocTypeIdList.contains(l.value);\n });\n }\n setDocumentTypeList(list);\n }\n }\n })\n .catch((error) => {\n console.error(error);\n });\n\n return () => {\n isMounted = false;\n };\n }, [excludeDocTypeIdList]);\n\n useEffect(() => {\n let isMounted = true;\n\n if (props.existingDocuments !== null && isMounted) {\n setExistingDocuments(props.existingDocuments);\n }\n\n return () => {\n isMounted = false;\n };\n }, [props.existingDocuments]);\n\n function deleteDocument(index) {\n if (!window.confirm(\"Are you sure you want to delete this document?\"))\n return;\n let list = existingDocuments.slice();\n let id = list[index].id;\n api\n .delete(`${props.deleteUrl}/${id}`)\n .then((response) => {\n if (response && response.data.success) {\n Alert.success(\"Document was deleted.\");\n props.refresh();\n } else {\n Alert.error(response.data.message || \"An error occurred.\");\n }\n })\n .catch((error) => {\n if (props.showError) {\n Alert(\"There was an error retrieving document types\");\n } else {\n console.error(error);\n }\n });\n }\n\n function deleteNewDocument(index) {\n let newDocumentsTemp = props.newDocumentsToUpload.slice();\n newDocumentsTemp.splice(index, 1);\n props.setNewDocumentsToUpload(newDocumentsTemp);\n \n }\n\n return (\n \n \n \n {showUploadModule && (\n \n Select Document Type before attaching file\n \n )}\n setShowUploadModule(!showUploadModule)}\n className={classnames(\n { projectSuccess: !showUploadModule },\n \"float-right\"\n )}\n >\n {showUploadModule ? \"Cancel\" : \"Upload\"}\n \n \n \n\n {showUploadModule && (\n \n \n \n Document Type:\n setSelectedDocumentType(e)}\n value={selectedDocumentType || null}\n onBlurResetsInput={false}\n onSelectResetsInput={false}\n onCloseResetsInput={false}\n classNamePrefix=\"react-select\"\n />\n \n \n \n \n {\n if (!acceptedFiles) {\n Alert.warning(\"Document format is not accepted\");\n return;\n }\n if (!selectedDocumentType) {\n Alert.error(\"Document Type is required\");\n return;\n }\n\n let newDocument = {\n orgId: props.orgId,\n jobId: props.jobId,\n id: userCtx.currentUser.id,\n documentTypeId: selectedDocumentType.value,\n documentTypeName: selectedDocumentType.label,\n file: acceptedFiles[0],\n name: acceptedFiles[0].name,\n mimeType: acceptedFiles[0].type,\n }\n\n let newDocumentsToUploadTemp = props.newDocumentsToUpload.slice();\n newDocumentsToUploadTemp.push(newDocument);\n props.setNewDocumentsToUpload(newDocumentsToUploadTemp);\n\n }}\n >\n {({ getRootProps, getInputProps }) => (\n
    \n \n \n \n \n \n \n \n
    \n {`Drag file here to upload (or click here to choose file)`}\n
    \n \n
    \n )}\n \n \n
    \n
    \n )}\n {/* New Documents */}\n \n \n New Documents\n \n \n \n \n \n \n \n \n \n {props.newDocumentsToUpload && props.newDocumentsToUpload.length > 0 ? (\n props.newDocumentsToUpload.map((d, index) => (\n \n \n \n \n \n ))\n ) : (\n \n \n \n )}\n \n
    FileType
    \n
    \n \n {helpers.truncateStringOverLength(\n d.name || d.fileName,\n 20,\n true\n )}\n \n
    \n
    {d.mimeType}
    \n
    {d.documentTypeName}\n \n deleteNewDocument(index)}\n >\n \n \n \n
    No documents found
    \n \n
    \n {/* Existing Documents */}\n {existingDocuments && existingDocuments.length > 0 &&\n \n \n Existing Documents\n \n \n \n \n \n \n \n \n \n {existingDocuments.map((d, index) => (\n \n \n \n \n \n ))}\n \n
    FileType
    \n
    \n \n {helpers.truncateStringOverLength(\n d.name || d.fileName,\n 20,\n true\n )}\n \n
    \n
    {d.mimeType}
    \n
    {d.documentTypeName}\n \n \n window.open(\n d.signedURL || d.signedUrl,\n \"_blank\"\n )\n }\n >\n \n \n deleteDocument(index)}\n >\n \n \n \n
    \n \n
    \n }\n \n }\n />\n );\n}\n","import React from \"react\";\nimport { dateHelpers, constants } from \"./\";\nimport { RatingModule } from \"../components\";\nimport _ from \"lodash\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport api from \"./api\";\n\nfunction lowerCase(str) {\n return str.toLowerCase();\n}\n\nfunction upperCase(str) {\n return str.toUpperCase();\n}\n\nconst changeDateFormat = (\n date,\n changeDateFunction,\n fieldName = null,\n itemToEditId = null\n) => {\n let formattedDate = null;\n if (dateHelpers.isDateValid(date)) {\n const dateString = dateHelpers.parseDatePickerDate(date, dateHelpers.MDY4);\n formattedDate = dateHelpers.getMomentFromString(dateString);\n }\n if (fieldName && itemToEditId) {\n changeDateFunction(formattedDate, fieldName, itemToEditId);\n } else if (fieldName) {\n changeDateFunction(formattedDate, fieldName);\n } else if (itemToEditId) {\n changeDateFunction(formattedDate, itemToEditId);\n } else {\n changeDateFunction(formattedDate);\n }\n};\n\nconst onDatePickerKeyDown = (\n event,\n changeDateFunction,\n fieldName = null,\n itemToEditId = null\n) => {\n if (event.which === 9 || event.which === 13) {\n // tab key or enter key\n const eventAction = event && event.target ? event.target.value : null;\n changeDateFormat(eventAction, changeDateFunction, fieldName, itemToEditId);\n }\n};\n\nconst toggleListItemChecked = (id, list) => {\n const idx = _.findIndex(list, (x) => x.id === id);\n let newList = list.slice();\n newList[idx].checked = newList[idx].checked ? false : true;\n return list;\n};\n\nconst helpers = {\n toggleListItemChecked: toggleListItemChecked,\n onDatePickerKeyDown: onDatePickerKeyDown,\n requiredStar() {\n return *;\n },\n booleanListEntry: function (b) {\n return b === true\n ? { label: \"Yes\", value: true }\n : { label: \"No\", value: false };\n },\n resolveValue: function (obj, id, name) {\n if (obj) return obj;\n if (id === null) return null;\n return { value: id, label: name };\n },\n resolveValues: function (objs) {\n if (objs.length === 0) {\n return [];\n }\n const formattedObjects = [];\n _.forEach(objs, (obj) => {\n if (obj.id === null) return null;\n formattedObjects.push({ value: obj.id, label: obj.name });\n });\n return formattedObjects;\n },\n yesNoOptions: function () {\n return [\n { label: \"Yes\", value: true },\n { label: \"No\", value: false },\n ];\n },\n\n addAnyOption: (list) => {\n let newList = list.slice();\n newList.unshift({ label: \"(Any)\", value: null });\n return newList;\n },\n\n formatAddress: function (address) {\n const addressArray = [address.ln1, address.ln2, address.ln3, address.ln4];\n const compactList = _.compact(addressArray, (x) => x);\n\n compactList.push(address.city + \", \" + address.state + \" \" + address.zip);\n return compactList;\n },\n\n formatPhoneNumber: function (phoneNumberString) {\n phoneNumberString = phoneNumberString.replace(/[^\\d]+/g, \"\");\n if (phoneNumberString.length === 7) {\n phoneNumberString = phoneNumberString.replace(/(\\d{3})(\\d{4})/, \"$1-$2\");\n } else if (phoneNumberString.length === 10) {\n phoneNumberString = phoneNumberString.replace(\n /(\\d{3})(\\d{3})(\\d{4})/,\n \"($1) $2-$3\"\n );\n } else if (phoneNumberString.length === 11) {\n phoneNumberString = phoneNumberString.replace(\n /^(1|)?(\\d{3})(\\d{3})(\\d{4})/,\n \"($2) $3-$4\"\n );\n }\n return phoneNumberString;\n },\n\n browserExportCSVFile: function (csv, fileTitle) {\n const fname = fileTitle || \"export.csv\";\n const blob = new Blob([csv], { type: \"text/csv;charset=utf-8;\" });\n if (navigator.msSaveBlob) {\n // IE 10+\n navigator.msSaveBlob(blob, fname);\n } else {\n const link = document.createElement(\"a\");\n if (link.download !== undefined) {\n // Browsers that support HTML5 download attribute\n const url = URL.createObjectURL(blob);\n link.setAttribute(\"href\", url);\n link.setAttribute(\"download\", fname);\n link.style.visibility = \"hidden\";\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n }\n },\n\n downloadExport: function (data, fileName, mime) {\n if (window.navigator && window.navigator.msSaveOrOpenBlob) {\n window.navigator.msSaveOrOpenBlob(data, fileName);\n } else {\n const file = new Blob([data], { type: mime });\n var anchor = window.document.createElement(\"a\");\n anchor.download = fileName;\n anchor.href = (window.webkitURL || window.URL).createObjectURL(file);\n anchor.dataset.downloadurl = [mime, anchor.download, anchor.href].join(\n \":\"\n );\n anchor.click();\n }\n },\n\n catchHandler: (e) => console.log(e),\n\n //use if statement to check against status code to redirect to sign-in screen if session token expires\n parseRequestTypeName: function (request_type_name) {\n const properCase = function (str) {\n return lowerCase(str).replace(/^\\w|\\s\\w/g, upperCase);\n };\n const removeUnderscore = function (str) {\n return str.replace(/_/g, \" \");\n };\n const request_type_label = properCase(removeUnderscore(request_type_name));\n return request_type_label;\n },\n\n mustChangePassword: function (user) {\n if (!user) return false;\n return user.mustChangePassword;\n },\n\n //expecting arrayofKeysToCheck to be array of objects with keys \"name\" (name of the key on the object) and \"label\" (what you tell the user is missing)\n //example: [{name: \"firstName\", label: \"first name\"}, {name: \"email\", label: \"e-mail address\"}]\n isFormInvalid(object, arrayOfKeysToCheck) {\n const warnings = [];\n _.map(arrayOfKeysToCheck, (key) => {\n if (!object[key.name]) {\n warnings.push(key.label);\n }\n });\n\n if (warnings.length) {\n return \"Please provide the following: \" + warnings.join(\", \");\n } else {\n return false;\n }\n },\n\n addIsEditingField(list, propName = null) {\n if (!list || !list.length || list.length === 0) {\n return [];\n }\n const isEditingList = _.map(list, (x) => {\n return {\n ...x,\n isEditing: false,\n };\n });\n return propName ? { [propName]: isEditingList } : isEditingList;\n },\n\n nullableString(s) {\n return s ? s : \"\";\n },\n emailIsValid: function (email) {\n /* eslint-disable no-useless-escape */\n const emailRe =\n /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n return emailRe.test(email);\n },\n convertToPennies: function (currency) {\n return currency * 100;\n },\n formatCurrency(x) {\n return Number(x).toLocaleString(\"en-US\", {\n style: \"currency\",\n currency: \"USD\",\n minimumFractionDigits: 2,\n });\n },\n isMobile: function (window) {\n const smallerOption =\n window.document &&\n window.document.defaultView &&\n window.document.defaultView.innerWidth\n ? window.document.defaultView.innerWidth\n : window.screen.width;\n return smallerOption <= 680;\n },\n cardHeaderName: function cardHeaderName(cardName, iconName) {\n return (\n \n \n {cardName}\n \n );\n },\n getJobTypeBadgeColor(jobTypeName) {\n switch (jobTypeName) {\n case \"Return\":\n return \"warning\";\n case \"Retrieval\":\n return \"warning\";\n case \"Off Lot\":\n return \"secondary\";\n case \"Move\":\n return \"secondary\";\n case \"MFG\":\n return \"info\";\n case \"RTO Delivery\":\n return \"info\";\n default:\n return \"info\";\n }\n },\n getJobStatusBadgeColor(jobStatusName) {\n switch (jobStatusName) {\n case \"Open\":\n return \"primary\";\n case \"Reserved\":\n return \"warning\";\n case \"Scheduled\":\n return \"warning\";\n case \"In Progress\":\n return \"warning\";\n case \"Complete\":\n return \"success\";\n case \"Cancelled\":\n return \"danger\";\n default:\n return \"primary\";\n }\n },\n resolveUserRole(currentUser, forRoleName) {\n //need to find a uniformed way to determine current user and role\n switch (forRoleName) {\n case constants.ROLE_NAMES.COMPANY_ADMIN:\n return currentUser.currentRoleId === constants.ROLE_IDS.COMPANY_ADMIN;\n case constants.ROLE_NAMES.COMPANY_CLERK:\n return currentUser.currentRoleId === constants.ROLE_IDS.COMPANY_CLERK;\n case constants.ROLE_NAMES.DISPATCHER:\n return currentUser.currentRoleId === constants.ROLE_IDS.DISPATCHER;\n default:\n return false;\n }\n },\n canEditCompanyProfile(currentUser, orgIdToEdit) {\n if (\n (currentUser.currentOrgId === orgIdToEdit &&\n currentUser.currentRoleId === constants.ROLE_IDS.COMPANY_ADMIN) ||\n currentUser.isSysAdmin\n ) {\n return true;\n }\n return false;\n },\n showStarRating(ratingScore) {\n return ;\n },\n truncateStringOverLength(stringVal, truncateOverLength, addEllipsis) {\n if (\n stringVal &&\n stringVal.length &&\n stringVal.length > truncateOverLength\n ) {\n return `${stringVal.substring(0, truncateOverLength)}${\n addEllipsis ? \"...\" : \"\"\n }`;\n }\n return stringVal;\n },\n ensureMembershipLevelSize(orgId){\n api.fetch(`UserAdmin/AdjustOrgSize/${orgId}`)\n .then((r) => {\n //console.log(\"ensure membership response\", r);\n })\n }\n};\nexport default helpers;\n","import React from \"react\";\n\nconst UserContext = React.createContext({\n currentUser: null,\n theme: null,\n // authCurrentUser: i => {}, \n setTheme: i => {},\n signIn: (_user) => {},\n signOut: i => {},\n impersonate: i => {},\n clearImpersonation: i => { },\n company: null,\n haulerFirm: null,\n// currentUserContext: null,\n// setCurrentUserContext: i => { },\n});\n\nexport default UserContext;\n","let inMemoryStorage = {};\n\nconst isSupported = () => {\n try {\n const testKey = \"teststorage\";\n localStorage.setItem(testKey, testKey);\n localStorage.removeItem(testKey);\n return true;\n } catch (e) {\n return false;\n }\n};\n\nconst clear = () => {\n if (isSupported()) {\n localStorage.clear();\n } else {\n inMemoryStorage = {};\n }\n};\n\nconst getItem = (k) => {\n if (isSupported()) {\n return localStorage.getItem(k);\n }\n if (inMemoryStorage.hasOwnProperty(k)) {\n return inMemoryStorage[k];\n }\n return null;\n};\n\nconst key = (idx) => {\n if (isSupported()) {\n return localStorage.key(idx);\n }\n return Object.keys(inMemoryStorage)[idx] || null;\n};\n\nconst removeItem = (k) => {\n if (isSupported()) {\n localStorage.removeItem(k);\n } else {\n delete inMemoryStorage[k];\n }\n};\n\nconst setItem = (k, v) => {\n if (isSupported()) {\n localStorage.setItem(k, v);\n } else {\n inMemoryStorage[k] = String(v);\n }\n};\n\nconst length = () => {\n if (isSupported()) {\n return localStorage.length;\n }\n return Object.keys(inMemoryStorage).length;\n};\n\nconst storageFactory = {\n getItem,\n setItem,\n removeItem,\n clear,\n key,\n length,\n};\n\nexport default storageFactory;\n","import React from \"react\";\nimport { Row, Col, Container } from \"reactstrap\";\n\nexport default function DesktopContainer(props) {\n return (\n \n \n \n \n \n {props.screenName && (\n

    {props.screenName}

    \n )}\n \n \n
    \n \n {props.children}\n \n \n
    \n
    \n );\n}\n","import React from \"react\";\nimport { Row, Col } from \"reactstrap\";\n\nexport default function Footer(props) {\n return (\n
    \n \n \n \n \n SHB © 2021\n \n \n
    \n );\n}\n","import { useEffect, useRef } from \"react\";\n\nexport function useInterval(callback, delay) {\n const savedCallback = useRef();\n\n // Remember the latest callback.\n useEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n // Set up the interval.\n useEffect(() => {\n function tick() {\n savedCallback.current();\n }\n if (delay !== null) {\n let id = setInterval(tick, delay);\n return () => clearInterval(id);\n }\n }, [delay]);\n}\n","import React, { useState, useContext, useEffect } from \"react\";\nimport { NavLink, useLocation } from \"react-router-dom\";\nimport classnames from \"classnames\";\nimport Sidebar from \"react-sidebar\";\nimport _ from \"lodash\";\nimport {\n FaBars,\n FaUserCircle,\n FaTrailer,\n FaChartLine,\n FaBriefcase\n} from \"react-icons/fa\";\nimport { RiListSettingsLine } from \"react-icons/ri\";\nimport { RiUserSettingsLine, RiMoneyDollarBoxLine } from \"react-icons/ri\";\nimport { TiFlowSwitch } from \"react-icons/ti\";\nimport { BsBuilding } from \"react-icons/bs\";\nimport { GiTruck, GiReceiveMoney, GiVote } from \"react-icons/gi\";\nimport { VscSignOut } from \"react-icons/vsc\";\nimport { BsFillHouseDoorFill, BsChatDots } from \"react-icons/bs\";\nimport { IoCalendarOutline } from \"react-icons/io5\";\n\nimport {\n Row,\n Col,\n Nav,\n NavItem,\n NavLink as ReactStrapNavLink,\n} from \"reactstrap\";\n\nimport { api, UserContext, constants } from \"../utils\";\nimport { useInterval } from \"../hooks/useInterval\";\n\nconst homeIcon = (\n \n);\nconst shedIcon = (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n);\n\nconst userIcon = (\n \n);\n\nconst adminIcon = (\n \n);\n\nconst companyIcon = (\n \n);\n\nconst scheduleIcon = (\n \n)\n\nconst jobIcon = ;\nconst privateJobIcon = ;\nconst haulerFirmIcon = (\n \n);\nconst reportIcon = (\n \n);\nconst subscriptionIcon = (\n \n);\nconst ratingIcon = ;\n\nconst chatIcon = ;\n\nconst invoiceIcon = (\n \n);\n\nconst HaulerMenuLinks = [\n { url: \"/jobs/hauler\", title: \"Jobs\", icon: jobIcon },\n { url: \"/privatejobs\", title: \"Private Jobs\", icon: privateJobIcon },\n { url: \"/schedule\", title: \"Schedule\", icon: scheduleIcon }\n];\n\nconst HaulerFirmMenuLinks = [\n { url: \"/jobs/haulerFirm\", title: \"Jobs\", icon: jobIcon },\n { url: \"/privatejobs\", title: \"Private Jobs\", icon: privateJobIcon },\n { url: \"/org/companies/haulerFirm\", title: \"Companies\", icon: companyIcon },\n { url: \"/users/haulerFirm\", title: \"Users\", icon: userIcon },\n { url: \"/invoices\", title: \"Invoices\", icon: invoiceIcon },\n { url: \"/admin/profile/haulerFirm\", title: \"Admin\", icon: adminIcon },\n { url: \"/schedule\", title: \"Schedule\", icon: scheduleIcon }\n];\nconst CompanyAdminMenuLinks = [\n { url: \"/jobs/company\", title: \"Jobs\", icon: jobIcon },\n { url: \"/sheds/company\", title: \"Shed Sightings\", icon: shedIcon },\n {\n url: \"/org/haulerFirms/company\",\n title: \"Hauler Firms\",\n icon: haulerFirmIcon,\n },\n { url: \"/users/company\", title: \"Users\", icon: userIcon },\n { url: \"/admin/profile/company\", title: \"Admin\", icon: adminIcon },\n { url: \"/schedule\", title: \"Schedule\", icon: scheduleIcon }\n];\nconst CompanyMenuLinks = [\n { url: \"/jobs/company\", title: \"Jobs\", icon: jobIcon },\n { url: \"/sheds/company\", title: \"Shed Sightings\", icon: shedIcon },\n {\n url: \"/org/haulerFirms/company\",\n title: \"Hauler Firms\",\n icon: haulerFirmIcon,\n },\n { url: \"/schedule\", title: \"Schedule\", icon: scheduleIcon }\n];\nconst AdminMenuLinks = [\n { url: \"/jobs/admin\", title: \"Jobs\", icon: jobIcon },\n {\n url: \"/org/haulerFirms/admin\",\n title: \"Hauler Firms\",\n icon: haulerFirmIcon,\n },\n { url: \"/org/companies/admin\", title: \"Companies\", icon: companyIcon },\n { url: \"/users/admin\", title: \"Users\", icon: userIcon },\n { url: \"/admin\", title: \"Admin\", icon: adminIcon },\n { url: \"/reports\", title: \"Reports\", icon: reportIcon },\n { url: \"/subscriptions\", title: \"Subscriptions\", icon: subscriptionIcon },\n { url: \"/ratingscontainer/admin\", title: \"Ratings\", icon: ratingIcon },\n { url: \"/schedule\", title: \"Schedule\", icon: scheduleIcon }\n];\n\nexport default function SidebarMenu() {\n const userCtx = useContext(UserContext);\n const [homeLink, setHomeLink] = useState(\"/dashboard/hauler\");\n const [links, setLinks] = useState([]);\n const [sidebarOpen, setSidebarOpen] = useState(false);\n const [openDropdown, setOpenDropdown] = useState(false);\n let location = useLocation();\n const [newChatCount, setNewChatCount] = useState(0);\n\n const currentUser = userCtx?.currentUser ? userCtx.currentUser : null;\n\n useInterval(() => {\n //get new chat status\n api\n .fetch(\"chat/NewChatCount\")\n .then((response) => setNewChatCount(response.data));\n }, 60000);\n\n useEffect(() => {\n let userLinks = [];\n let homeLink = \"\";\n if (\n currentUser?.includeHaulerModule &&\n (currentUser?.currentRoleId === constants.ROLE_IDS.DRIVER ||\n currentUser?.currentRoleId === constants.ROLE_IDS.DISPATCHER)\n ) {\n homeLink = \"/dashboard/hauler\";\n userLinks = userLinks.concat(HaulerMenuLinks);\n }\n if (\n currentUser?.includeCompanyModule &&\n (currentUser?.currentRoleId === constants.ROLE_IDS.COMPANY_CLERK ||\n currentUser?.currentRoleId === constants.ROLE_IDS.COMPANY_USER)\n ) {\n homeLink = \"/dashboard/company\";\n userLinks = userLinks.concat(CompanyMenuLinks);\n }\n if (\n currentUser?.includeCompanyAdminModule &&\n currentUser?.currentRoleId === constants.ROLE_IDS.COMPANY_ADMIN\n ) {\n homeLink = \"/dashboard/company\";\n userLinks = userLinks.concat(CompanyAdminMenuLinks);\n }\n if (\n currentUser?.includeHaulerFirmModule &&\n currentUser?.currentRoleId === constants.ROLE_IDS.COMPANY_ADMIN\n ) {\n homeLink = \"/dashboard/haulerFirm\";\n userLinks = userLinks.concat(HaulerFirmMenuLinks);\n }\n if (currentUser?.includeAdminModule && currentUser?.isSysAdmin) {\n homeLink = \"/dashboard/admin\";\n userLinks = userLinks.concat(AdminMenuLinks);\n }\n //userLinks = userLinks.concat([{ url: \"/schedule\", title: \"Schedule\", icon: scheduleIcon }]);\n setHomeLink(homeLink);\n setLinks(userLinks);\n }, [currentUser]);\n\n function shouldShowSwitchButton() {\n return (\n currentUser?.roleTypeIdList?.length &&\n currentUser.roleTypeIdList.length > 1\n );\n }\n\n function toggleSidebar(openOrClose) {\n setSidebarOpen(openOrClose);\n }\n\n const toggleDropdown = () => setOpenDropdown(!openDropdown);\n const linkItem = (link, index) => {\n if (link.url) {\n return (\n \n \n \n \n {link.icon}\n \n {sidebarOpen && (\n \n {link.title}\n \n )}\n \n \n \n );\n }\n };\n const menuStyling = classnames(\n {\n stickyLeftMenuOpen: sidebarOpen,\n stickyLeftMenuCollapsed: !sidebarOpen,\n },\n \"stickyLeftMenu p-0 m-0 py-2\"\n );\n\n let menu = (\n
    \n
    \n toggleSidebar(!sidebarOpen)}\n >\n \n \n \n {sidebarOpen && (\n \n {userCtx.currentUser.label}\n \n )}\n \n \n
    \n
    \n
    \n )}\n \n ) : null}\n \n \n \n \n \n \n {sidebarOpen && (\n \n Profile\n \n )}\n \n \n \n \n userCtx.signOut()}\n className=\"p-0\"\n >\n \n \n \n \n {sidebarOpen && (\n \n Sign Out\n \n )}\n \n \n \n \n
    \n \n );\n\n return (\n toggleSidebar(!sidebarOpen)}\n >\n {!sidebarOpen && menu} {/* collapsed menu */}\n \n );\n}\n","import React from \"react\";\nimport { Media } from \"react-breakpoints\";\nimport { Col, Row } from \"reactstrap\";\nimport _ from \"lodash\";\nimport { constants } from \"../utils\";\nimport { LinkPanel } from \"../components\";\nimport { DesktopContainer } from \"../layouts\";\n\nexport default function Admin(props) {\n return (\n \n {({ breakpoints, currentBreakpoint }) => {\n switch (currentBreakpoint) {\n case breakpoints.mobile:\n return
    {props.children}
    ;\n case breakpoints.desktop:\n default:\n return (\n \n \n \n {_.map(constants.REFERENCE_DATA_URL_LIST, (dt) => (\n \n ))}\n \n \n \n );\n }\n }}\n
    \n );\n}\n","import React, { Fragment, useState, useEffect } from \"react\";\nimport { Media } from \"react-breakpoints\";\nimport { Row, Col } from \"reactstrap\";\nimport { api, constants } from \"../utils\";\nimport { FilterableScreen, SHBSpinner, StatCard } from \"../components\";\nimport { DesktopContainer } from \"../layouts\";\nimport Alert from \"react-s-alert\";\n\nexport default function DashboardAdmin(props) {\n const [rtoCount, setRtoCount] = useState([]);\n const [manufacturerCount, setManufacturerList] = useState([]);\n const [haulerCount, setHaulerCount] = useState([]);\n const [openJobs, setOpenJobs] = useState([]);\n const [activeUserCount, setActiveUserCount] = useState([]);\n const [scheduledJobs, setScheduledJobs] = useState([]);\n const [completedJobs, setCompletedJobs] = useState([]);\n const [loading, setLoading] = useState(false);\n\n useEffect(() => {\n loadDashboardData();\n }, []);\n\n function loadDashboardData() {\n setLoading(true);\n api\n .post(`org/GetAdminDashboardData`)\n .then((response) => {\n if (response && response.data && response.data.success == false) {\n Alert.error(\"There was an error retrieving dashboard data\");\n }\n if (response && response.data) {\n setHaulerCount(response.data.haulerFirmCount);\n setRtoCount(response.data.rtoCount);\n setManufacturerList(response.data.manufacturerCount);\n setOpenJobs(response.data.openJobs);\n setScheduledJobs(response.data.scheduledJobs);\n setCompletedJobs(response.data.completedJobs);\n setActiveUserCount(response.data.userCount);\n }\n })\n .finally(() => setLoading(false));\n }\n\n return (\n \n {({ breakpoints, currentBreakpoint }) => {\n switch (currentBreakpoint) {\n case breakpoints.mobile:\n return (\n
    \n \n {props.children}\n \n
    \n );\n case breakpoints.desktop:\n default:\n return (\n \n \n }\n pager={null}\n >\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n }\n }}\n
    \n );\n}\n","import React, { Fragment, useContext, useState, useEffect } from \"react\";\nimport { Media } from \"react-breakpoints\";\nimport { Card, Col, Row } from \"reactstrap\";\nimport _ from \"lodash\";\nimport { api, UserContext, constants } from \"../utils\";\nimport {\n FilterableScreen,\n StatCard,\n ShipmentCard,\n SHBSpinner,\n} from \"../components\";\nimport { DesktopContainer } from \"../layouts\";\nimport Alert from \"react-s-alert\";\n\nexport default function DashboardCompany(props) {\n const userCtx = useContext(UserContext);\n const orgId =\n userCtx && userCtx.currentUser && userCtx.currentUser.currentOrgId\n ? userCtx.currentUser.currentOrgId\n : userCtx.currentUser && userCtx.currentUser.orgId;\n const isOrgAdmin = userCtx.currentUser.isCompanyAdminUser || userCtx.currentUser.isHaulerAdminUser;\n\n const [organization, setOrganization] = useState(null);\n // const [activeJobs, setActiveJobs] = useState([]);\n const [openJobCount, setOpenJobCount] = useState([]);\n const [completedJobCount, setCompletedJobCount] = useState([]);\n const [reservedJobCount, setReservedJobCount] = useState([]);\n const [scheduledJobCount, setScheduledJobCount] = useState([]);\n const [inProgressJobCount, setInProgressJobCount] = useState([]);\n const [activeUsers, setActiveUsers] = useState([]);\n const [privateJobCount, setPrivateJobCount] = useState([]);\n const [loading, setLoading] = useState(false);\n // const [activeJobStates, setActiveJobStates] = useState([]);\n // const [selectedState, setSelectedState] = useState(null);\n // const [filteredActiveJobs, setFilteredActiveJobs] = useState([]);\n // const [haulerDriverLists, setHaulerDriverLists] = useState([]);\n const showError = props.showError;\n\n useEffect(() => {\n setLoading(true);\n api\n .post(`general/GetCompanyDashboardData/${orgId}`)\n .then((response) => {\n if (response && response.data && response.data.success == false) {\n Alert.error(\"There was an error retrieving company dashboard data\");\n }\n if (response && response.data) {\n setOrganization(response.data.organization);\n // setActiveJobs(response.data.activeJobs);\n setOpenJobCount(response.data.openJobCount);\n setCompletedJobCount(response.data.completedJobCount);\n setReservedJobCount(response.data.reservedJobCount);\n setScheduledJobCount(response.data.scheduledJobCount);\n setInProgressJobCount(response.data.inProgressJobCount);\n setActiveUsers(response.data.userList);\n setPrivateJobCount(response.data.privateJobCount);\n // setActiveJobStates(\n // response.data.activeJobs && response.data.activeJobs.length > 0\n // ? _.sortBy(\n // _.uniq(response.data.activeJobs.map((x) => x.toStateName))\n // )\n // : []\n // );\n // setHaulerDriverLists(response.data.haulerDriverLists);\n }\n })\n .catch((error) => {\n if (showError) {\n Alert.error(\"There was an error retrieving company dashboard data\");\n } else {\n console.error(error);\n }\n })\n .finally(() => setLoading(false));\n }, [userCtx.currentUser, showError, orgId]);\n\n // const filterBySeletedState = (state) => {\n // setSelectedState(state);\n // setFilteredActiveJobs(_.filter(activeJobs, (x) => x.toStateName === state));\n // };\n\n return (\n \n {({ breakpoints, currentBreakpoint }) => {\n switch (currentBreakpoint) {\n case breakpoints.mobile:\n return (\n
    \n \n {props.children}\n \n
    \n );\n case breakpoints.desktop:\n default:\n return (\n \n \n }\n pager={null}\n >\n \n \n \n {userCtx.currentUser.isHaulerUser\n ? \n : \n }\n \n \n \n \n \n \n \n \n \n \n \n \n \n {isOrgAdmin && activeUsers && activeUsers.length ? (\n \n \n \n ) : null}\n {userCtx.currentUser.isHaulerUser\n ? \n : null\n }\n {/* {haulerDriverLists && haulerDriverLists.length > 0 && (\n \n \n \n \n \n Active Haulers and Drivers\n \n \n {haulerDriverLists.map((x, index) => (\n \n \n {x.haulerFirm.name}\n \n \n \n {x.haulerDrivers\n .map((d) => d.fullName)\n .join(\", \")}\n \n \n \n ))}\n \n \n \n )} */}\n \n {/* \n
    \n Upcoming Deliveries (Choose State)\n
    \n {activeJobStates && activeJobStates.length > 0 && (\n \n filterBySeletedState(e.target.value)\n }\n >\n \n {activeJobStates.map((x, index) => (\n \n {x}\n \n ))}\n \n )}\n {filteredActiveJobs && filteredActiveJobs.length > 0\n ? _.map(filteredActiveJobs, (j, index) => {\n return (\n \n \n
    \n );\n })\n : null}\n */}\n \n \n \n \n );\n }\n }}\n
    \n );\n}\n","import React, { useContext } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { UserContext, constants } from \"../utils\";\nimport {\n DashboardAdmin,\n DashboardCompany,\n DashboardHaulerFirm\n} from './'\nimport _ from \"lodash\";\n\nexport default function Home(props) {\n const pathParamsModule =\n props\n && props.computedMatch\n && props.computedMatch.params\n && props.computedMatch.params.module;\n const userCtx = useContext(UserContext);\n const history = useHistory();\n \n const currentUser = userCtx.currentUser;\n\n if (!userCtx || !currentUser) {\n history.push(\"/\");\n return null;\n }\n \n // if (_.includes(constants.COMPANY_ROLES.map(r => r.value), currentUser.currentRoleId)) {\n // return ;\n // }\n if (currentUser.includeAdminModule || pathParamsModule === 'admin') {\n return ;\n } else {\n return ;\n }\n\n // if (_.includes(constants.HAULER_ROLES.map(r => r.value), currentUser.currentRoleId)) {\n // return ;\n // }\n // return null;\n}\n","import React, { Fragment, useState, useContext, useEffect } from \"react\";\nimport { Link, Redirect } from \"react-router-dom\";\nimport Alert from \"react-s-alert\";\nimport { Media } from \"react-breakpoints\";\nimport {\n Col,\n Button,\n Row,\n ButtonGroup,\n Table,\n Input,\n Alert as Alert2,\n Card,\n CardBody,\n} from \"reactstrap\";\nimport Select from \"react-select\";\nimport Switch from \"react-switch\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport _ from \"lodash\";\nimport DatePicker from \"react-datepicker\";\nimport \"react-datepicker/dist/react-datepicker.css\";\nimport { api, helpers, UserContext, constants, dateHelpers } from \"../utils\";\nimport {\n CollapsibleCardSection,\n TextNotificationModal,\n DocumentUpload,\n OrgTypeahead,\n SHBSpinner,\n ChecklistImageUpload,\n AddressAutocomplete,\n EstimatedTimeOfDay,\n JobSummaryModal,\n DocumentUploader,\n JobDocumentUpload,\n} from \"../components\";\nimport { DesktopContainer } from \"../layouts\";\n\nconst { JOB_STATUS_NAMES } = constants;\n\nconst emptyJob = {\n id: 0,\n jobType: { value: 6, label: \"RTO Delivery\" },\n jobStatus: { value: 1, label: JOB_STATUS_NAMES.OPEN },\n orgId: null,\n requestedByDate: null,\n scheduledAt: null,\n scheduledBy: null,\n estimatedPickupAt: null,\n estimatedDropoffAt: null,\n estimatedPickupTimeOfDay: \"\",\n estimatedDropoffTimeOfDay: \"\",\n actualPickupAt: null,\n actualDropoffAt: null,\n reservedByOrg: null,\n reservedAt: null,\n cancelledAt: null,\n cancelledBy: null,\n cancellationReason: null,\n parentJobId: null,\n referenceNumber: \"\",\n createdByOrgPrimaryContactFirstName: \"\",\n createdByOrgPrimaryContactLastName: \"\",\n createdByOrgPrimaryContactNumber: \"\",\n createdByOrgEmail: \"\",\n compensationAmount: \"0\",\n customerFeeCollectedAt: null,\n unit: null,\n manufacturer: \"\",\n serialNumber: \"\",\n heightInFeet: \"\",\n widthInFeet: \"\",\n lengthInFeet: \"\",\n unitType: { value: 4, label: \"Utility\" },\n unitStyle: null,\n unitMaterial: { value: 4, label: \"Wood\" },\n wallColor: { value: 1, label: \"Blue\" },\n trimColor: { value: 1, label: \"Blue\" },\n roofColor: { value: 1, label: \"Blue\" },\n otherRoofColor: \"\",\n otherWallColor: \"\",\n otherTrimColor: \"\",\n unitComment: \"\",\n useExistingUnit: false, // not persisted, just used locally,\n ownerFirstName: \"\",\n ownerLastName: \"\",\n ownerEmail: \"\",\n ownerPhoneNumber: \"\",\n cinders: \"\",\n};\n\nconst emptyJobFee = {\n id: 0,\n feeType: null,\n amount: \"0.00\",\n description: \"\",\n};\n\nconst emptyComment = {\n id: 0,\n comment: \"\",\n isPrivate: false,\n};\n\nexport default function Job(props) {\n const userCtx = useContext(UserContext);\n const currentUser = userCtx.currentUser;\n const userOrgId = userCtx.currentUser.currentOrgId;\n const isCompanyUser = userCtx.currentUser.isCompanyUser;\n const isHaulerFirm =\n userCtx.currentUser.isHaulerAdminUser ||\n userCtx.currentUser.isDispatcherUser;\n const isHaulerUser = userCtx.currentUser.isHaulerUser;\n\n const jobId =\n props &&\n props.computedMatch &&\n props.computedMatch.params &&\n props.computedMatch.params.id\n ? parseInt(props.computedMatch.params.id, 10)\n : 0;\n\n const [job, setJob] = useState({\n ...emptyJob,\n createdByOrgPrimaryContactFirstName: userCtx.currentUser.firstName,\n createdByOrgPrimaryContactLastName: userCtx.currentUser.lastName,\n createdByOrgPrimaryContactNumber: userCtx.currentUser.phoneNumber,\n createdByOrgEmail: userCtx.currentUser.email,\n });\n const [jobFees, setJobFees] = useState(null);\n const [totalFees, setTotalFees] = useState(0);\n const [newFee, setNewFee] = useState(null);\n const [comments, setComments] = useState([]);\n const [newComment, setNewComment] = useState(null);\n const [draftMode, setDraftMode] = useState(false);\n const [jobOpen, setJobOpen] = useState(false);\n const [jobReserved, setJobReserved] = useState(false);\n const [jobScheduled, setJobScheduled] = useState(false);\n const [jobInProgress, setJobInProgress] = useState(false);\n const [jobComplete, setJobComplete] = useState(false);\n const [jobCancelled, setJobCancelled] = useState(false);\n const [showTextModal, setShowTextModal] = useState(null);\n const [driverOptions, setDriverOptions] = useState([]);\n const [orgRigs, setOrgRigs] = useState([]);\n const [message, setMessage] = useState(null);\n const [jobTypeList, setJobTypeList] = useState([]);\n const [stateList, setStateList] = useState([]);\n const [unitTypeList, setUnitTypeList] = useState([]);\n const [unitStyleList, setUnitStyleList] = useState([]);\n const [unitMaterialList, setUnitMaterialList] = useState([]);\n const [unitColorList, setUnitColorList] = useState([]);\n const [unitList, setUnitList] = useState([]);\n const [orgLocations, setOrgLocations] = useState([]);\n const [orgPrimaryUser, setOrgPrimaryUser] = useState(null);\n const [redirect, setRedirect] = useState(false);\n const [isJobOwner, setIsJobOwner] = useState(false);\n const [loading, setLoading] = useState(false);\n const [jobRigs, setJobRigs] = useState([]);\n const [orgDefaultChecklistItems, setOrgDefaultChecklistItems] = useState([]);\n const [jobChecklistItems, setJobChecklistItems] = useState([]);\n const [sendHaulerInvite, setSendHaulerInvite] = useState(false);\n const [jobChecklistResponses, setJobChecklistResponses] = useState([]);\n const [checklistAnswers, setChecklistAnswers] = useState({});\n const [jobMileageAndFuelCostSummary, setJobMileageAndFuelCostSummary] =\n useState(null);\n const [showMileageModal, setShowMileageModal] = useState(false);\n const [showFuelCostsModal, setShowFuelCostsModal] = useState(false);\n const [mileages, setMileages] = useState([]);\n const [fuelCosts, setFuelCosts] = useState([]);\n const [typeaheadFromAddress, setTypeaheadFromAddress] = useState(\"\");\n const [typeaheadToAddress, setTypeaheadToAddress] = useState(\"\");\n const [fromAddress, setFromAddress] = useState({\n fromAddress1: \"\",\n fromAddress2: \"\",\n fromCity: \"\",\n fromState: null,\n fromZipCode: \"\",\n pickupLat: null,\n pickupLong: null,\n });\n const [toAddress, setToAddress] = useState({\n toAddress1: \"\",\n toAddress2: \"\",\n toCity: \"\",\n toState: null,\n toZipCode: \"\",\n dropoffLat: null,\n dropoffLong: null,\n });\n const [newDocumentsToUpload, setNewDocumentsToUpload] = useState([]);\n\n const getJobDocuments = () =>\n api.fetch(`Job/GetJobDocuments/${jobId}`).then((r) => {\n const jobEdit = Object.assign({}, job);\n jobEdit.documents = r.data;\n setJob(jobEdit);\n });\n\n function showMileages() {\n api.fetch(`Job/GetJobMileages/${jobId}`).then((r) => {\n if (r && r.data && r.data.length && r.data.length > 0) {\n setMileages(\n r.data.map((x) => {\n return {\n ...x,\n display: `${x.miles} Miles - ${x.stateAbbr}`,\n date: `${dateHelpers.dateTimeFormat(x.createdAt)}`,\n };\n })\n );\n setShowMileageModal(true);\n }\n });\n }\n\n function showFuelCosts() {\n api.fetch(`Job/GetJobFuelCosts/${jobId}`).then((r) => {\n if (r && r.data && r.data.length && r.data.length > 0) {\n setFuelCosts(\n r.data.map((x) => {\n return {\n ...x,\n display: `${x.fuelCostDisplay} - ${x.stateAbbr}`,\n date: `${dateHelpers.dateTimeFormat(x.createdAt)}`,\n };\n })\n );\n setShowFuelCostsModal(true);\n }\n });\n }\n\n function getOrgDefaultJobFees(jobTypeId) {\n let orgIds = []; // ???\n orgIds.push(userOrgId);\n let payload = {\n sortField: \"Id\",\n sortDirection: \"asc\",\n activeOnly: true,\n orgIds: orgIds,\n jobTypeId: jobTypeId,\n };\n return api.post(\"Job/GetOrgFeeDefaults\", payload).then((r) => ({\n orgDefaultJobFees: _.map(r.data, (item, index) => {\n return {\n amount: item.amountDecimal,\n feeType: helpers.resolveValue(null, item.feeTypeId, item.feeTypeName),\n local_id: -1 * (index + 1),\n description: \"Default Fee\",\n };\n }),\n }));\n }\n\n function getOrgDefaultChecklistItems(jobTypeId) {\n let payload = {\n OrgId: userOrgId,\n JobTypeId: jobTypeId,\n };\n return api.post(\"Job/GetChecklistItems\", payload).then((r) => ({\n orgDefaultChecklistItems: _.map(r.data, (item, index) => {\n return {\n id: item.id,\n value: item.id,\n label: item.prompt,\n name: item.name,\n prompt: item.prompt,\n checkListItemTypeName: item.checkListItemTypeName,\n isRequired: item.isRequired,\n local_id: -1 * (index + 1),\n };\n }),\n }));\n }\n\n useEffect(() => {\n // load job data\n setLoading(true);\n\n const getJob = () =>\n api.fetch(`Job/GetJob/${jobId}`).then((r) => ({\n job: r.data,\n }));\n\n const getHaulerDrivers = () => {\n return api.post(`Org/GetOrgDrivers/${userOrgId}`).then((r) => ({\n driverOptions: _.map(r.data, (d) => {\n return {\n value: d.id,\n label: d.name,\n };\n }),\n }));\n };\n\n const getJobChecklistItems = () => {\n return api.fetch(`Job/GetJobChecklistItems/${jobId}`).then((r) => ({\n jobChecklistItems: _.map(r.data, (item, index) => {\n return {\n ...item,\n local_id: -1 * (index + 1),\n };\n }),\n }));\n };\n\n const getJobChecklistResponses = () => {\n return api.fetch(`Job/getJobChecklistResponses/${jobId}`).then((r) => ({\n jobChecklistResponses: r.data,\n }));\n };\n\n const getJobComments = () => {\n let payload = {\n sortField: \"CREATEDAT\",\n sortDirection: \"asc\",\n activeOnly: true,\n jobIds: [jobId],\n orgId: userOrgId,\n };\n return api.post(\"Job/GetJobComments\", payload).then((r) => ({\n jobComments: _.map(r.data, (item, index) => {\n return {\n id: item.id,\n comment: item.comment,\n isPrivate: item.privateToOrgId ? true : false, // FIX: will not work if privateOrgId is 0\n local_id: -1 * (index + 1),\n };\n }),\n }));\n };\n\n const getJobFees = () => {\n let payload = {\n sortField: \"Id\",\n sortDirection: \"asc\",\n activeOnly: true,\n jobIds: [jobId],\n };\n return api.post(\"Job/GetJobFees\", payload).then((r) => ({\n jobFees: _.map(r.data, (item, index) => {\n return {\n id: item.id,\n amount: item.amount,\n feeType: helpers.resolveValue(\n null,\n item.feeTypeId,\n item.feeTypeName\n ),\n local_id: -1 * (index + 1),\n description: item.description,\n };\n }),\n }));\n };\n\n const getJobMileageAndFuelCostSummary = () =>\n api.fetch(`Job/GetJobMileageAndFuelCostSummary/${jobId}`).then((r) => ({\n summary: r.data,\n }));\n\n const getJobRigs = () => {\n return api.fetch(`Job/GetJobRigTypes/${jobId}`).then((r) => ({\n jobRigs: _.map(r.data, (jr) => {\n return {\n value: jr.id,\n label: jr.rigTypeName,\n };\n }),\n }));\n };\n\n const getOrgLocations = () => {\n let orgIds = []; // ???\n orgIds.push(userOrgId);\n let payload = {\n sortField: \"Id\",\n sortDirection: \"asc\",\n activeOnly: true,\n orgIds: orgIds,\n };\n return api.post(\"Job/GetOrgLocations\", payload).then((r) => ({\n orgLocations: _.map(\n _.uniqBy(r.data, (r) => r.streetAddress1),\n (item, index) => {\n return {\n value: item.id,\n label: `${item.streetAddress1}, ${\n item.streetAddress2 ? item.streetAddress2 + \", \" : \"\"\n } ${item.city ? item.city + \", \" : \"\"} ${\n item.stateName ? item.stateName : \"\"\n } ${item.zipCode ? item.zipCode : \"\"} `,\n streetAddress1: helpers.nullableString(item.streetAddress1),\n streetAddress2: helpers.nullableString(item.streetAddress2),\n city: helpers.nullableString(item.city),\n stateId: item.stateId,\n stateName: helpers.nullableString(item.stateName),\n zipCode: helpers.nullableString(item.zipCode),\n locationType: helpers.resolveValue(\n null,\n item.locationTypeId,\n item.locationTypeName\n ),\n locationTypeId: item.locationTypeId,\n locationTypeName: item.locationTypeName,\n };\n }\n ),\n }));\n };\n\n const getRigs = () => {\n return api.post(`Org/GetOrgRigs/${userOrgId}`).then((r) => ({\n orgRigs: _.map(r.data, (r) => {\n return {\n value: r.id,\n label: r.rigTypeName,\n };\n }),\n }));\n };\n\n const getUnits = () => {\n let orgIds = []; // ???\n orgIds.push(userOrgId);\n let payload = {\n sortField: \"Id\",\n sortDirection: \"asc\",\n activeOnly: true,\n orgIds: orgIds,\n };\n return api.post(\"Unit/GetSelectList\", payload).then((r) => ({\n units: r.data,\n }));\n };\n\n let apiCalls = [];\n if (jobId > 0) {\n apiCalls.push(getJob());\n apiCalls.push(getJobFees());\n apiCalls.push(getJobComments());\n apiCalls.push(getJobRigs());\n apiCalls.push(getJobChecklistItems());\n apiCalls.push(getJobChecklistResponses());\n apiCalls.push(getJobMileageAndFuelCostSummary());\n }\n apiCalls.push(api.getJobTypes());\n apiCalls.push(api.getStates());\n apiCalls.push(api.getUnitTypes());\n apiCalls.push(api.getUnitStyles());\n apiCalls.push(api.getUnitMaterials());\n apiCalls.push(api.getUnitColors());\n if (isCompanyUser) {\n apiCalls.push(getUnits());\n apiCalls.push(getOrgLocations());\n apiCalls.push(getOrgDefaultJobFees(emptyJob.jobType.value));\n apiCalls.push(getOrgDefaultChecklistItems(emptyJob.jobType.value));\n }\n if (isHaulerUser) {\n apiCalls.push(getRigs());\n apiCalls.push(getHaulerDrivers());\n }\n Promise.all(apiCalls)\n .then((arrayResults) => {\n let aggResults = {};\n _.each(arrayResults, (x) => Object.assign(aggResults, x));\n const tempJob = aggResults.job\n ? Object.assign({}, aggResults.job)\n : null;\n if (tempJob) {\n let formattedJob = {\n id: tempJob.id,\n orgId: tempJob.orgId,\n orgName: tempJob.orgName,\n requestedByDate: dateHelpers.dateFormatForClient(\n tempJob.requestedByDate\n ),\n scheduledAt: tempJob.scheduledAt,\n scheduledBy: tempJob.scheduledBy,\n driver: helpers.resolveValue(\n null,\n tempJob.driverId,\n tempJob.driverFullName\n ),\n estimatedPickupAt: tempJob.estimatedPickupAt\n ? dateHelpers.dateFormatForClient(tempJob.estimatedPickupAt) // new Date(tempJob.estimatedPickupAt)\n : null,\n estimatedDropoffAt: tempJob.estimatedDropOffAt\n ? dateHelpers.dateFormatForClient(tempJob.estimatedDropOffAt) // new Date(tempJob.estimatedDropOffAt)\n : null,\n estimatedPickupTimeOfDay: helpers.nullableString(\n tempJob.estimatedPickupTimeOfDay\n ),\n estimatedDropoffTimeOfDay: helpers.nullableString(\n tempJob.estimatedDropOffTimeOfDay\n ),\n actualPickupAt: tempJob.actualPickupAt\n ? new Date(tempJob.actualPickupAt)\n : new Date(),\n actualPickupAtTime: tempJob.actualPickupAt\n ? tempJob.actualPickupAtTime\n : \"12:00\", // need to parse out actualPickupAtTime from actualPickupAt datetime\n actualDropoffAt: tempJob.actualDropoffAt\n ? new Date(tempJob.actualDropoffAt)\n : new Date(),\n actualDropoffAtTime: tempJob.actualDropoffAt\n ? tempJob.actualDropoffAtTime\n : \"12:00\", // need to parse out actualDropoffAtTime from actualDropoffAt datetime\n reservedAt: tempJob.reservedAt,\n cancelledAt: tempJob.cancelledAt,\n cancelledBy: tempJob.cancelledBy,\n cancellationReason: helpers.nullableString(\n tempJob.cancellationReason\n ),\n parentJobId: null,\n referenceNumber: helpers.nullableString(tempJob.referenceNumber),\n createdByOrgPrimaryContactFirstName: helpers.nullableString(\n tempJob.createdByOrgPrimaryContactFirstName\n ),\n createdByOrgPrimaryContactLastName: helpers.nullableString(\n tempJob.createdByOrgPrimaryContactLastName\n ),\n createdByOrgPrimaryContactNumber: helpers.nullableString(\n tempJob.createdByOrgPrimaryContactNumber\n ),\n createdByOrgEmail: helpers.nullableString(\n tempJob.createdByOrgEmail\n ),\n ownerFirstName: helpers.nullableString(tempJob.ownerFirstName),\n ownerLastName: helpers.nullableString(tempJob.ownerLastName),\n ownerEmail: helpers.nullableString(tempJob.ownerEmail),\n ownerPhoneNumber: helpers.nullableString(tempJob.ownerPhoneNumber),\n compensationAmount: tempJob.compensationAmount,\n customerFeeCollectedAt: tempJob.customerFeeCollectedAt,\n unit: helpers.resolveValue(\n null,\n tempJob.unitId,\n tempJob.unitSerialNumber\n ),\n manufacturer: helpers.nullableString(tempJob.manufacturer),\n serialNumber: helpers.nullableString(tempJob.serialNumber),\n heightInFeet: tempJob.heightInFeet.toFixed(2),\n widthInFeet: tempJob.widthInFeet.toFixed(2),\n lengthInFeet: tempJob.lengthInFeet.toFixed(2),\n unitComment: helpers.nullableString(tempJob.unitComment),\n jobType: helpers.resolveValue(\n null,\n tempJob.jobTypeId,\n tempJob.jobTypeName\n ),\n jobStatus: helpers.resolveValue(\n null,\n tempJob.jobStatusId,\n tempJob.jobStatusName\n ),\n unitType: helpers.resolveValue(\n null,\n tempJob.unitTypeId,\n tempJob.unitTypeName\n ),\n unitStyle: helpers.resolveValue(\n null,\n tempJob.unitStyleId,\n tempJob.unitStyleName\n ),\n unitMaterial: helpers.resolveValue(\n null,\n tempJob.unitMaterialId,\n tempJob.unitMaterialName\n ),\n wallColor: helpers.resolveValue(\n null,\n tempJob.wallColorId,\n tempJob.wallColorName\n ),\n trimColor: helpers.resolveValue(\n null,\n tempJob.trimColorId,\n tempJob.trimColorName\n ),\n roofColor: helpers.resolveValue(\n null,\n tempJob.roofColorId,\n tempJob.roofColorName\n ),\n otherRoofColor: helpers.nullableString(tempJob.otherRoofColor),\n otherWallColor: helpers.nullableString(tempJob.otherWallColor),\n otherTrimColor: helpers.nullableString(tempJob.otherTrimColor),\n useExistingUnit: false, // not persisted, used locally\n documents: tempJob.documents,\n reservedByOrg: helpers.resolveValue(\n null,\n tempJob.reservedByOrgId,\n tempJob.reservedByOrgName\n ),\n assignedToOrg: helpers.resolveValue(\n null,\n tempJob.assignedToOrgId,\n tempJob.assignedToOrgName\n ),\n reservedByOrgPrimaryContactName: helpers.nullableString(\n tempJob.reservedByOrgPrimaryContactName\n ),\n assignedToOrgPrimaryContactName: helpers.nullableString(\n tempJob.assignedToOrgPrimaryContactName\n ),\n reservedByOrgPrimaryContactNumber: helpers.nullableString(\n tempJob.reservedByOrgPrimaryContactNumber\n ),\n assignedToOrgPrimaryContactNumber: helpers.nullableString(\n tempJob.assignedToOrgPrimaryContactNumber\n ),\n isExtreme: tempJob.isExtreme,\n };\n setJob(formattedJob);\n setFromAddress({\n fromAddress1: helpers.nullableString(tempJob.fromStreetAddress1),\n fromAddress2: helpers.nullableString(tempJob.fromStreetAddress2),\n fromCity: helpers.nullableString(tempJob.fromCity),\n fromZipCode: helpers.nullableString(tempJob.fromZipCode),\n fromState: helpers.resolveValue(\n null,\n tempJob.fromStateId,\n tempJob.fromStateName\n ),\n pickupLat: tempJob.pickupLat,\n pickupLong: tempJob.pickupLong,\n });\n setToAddress({\n toAddress1: helpers.nullableString(tempJob.toAddress1),\n toAddress2: helpers.nullableString(tempJob.toAddress2),\n toCity: helpers.nullableString(tempJob.toCity),\n toZipCode: helpers.nullableString(tempJob.toZipCode),\n toState: helpers.resolveValue(\n null,\n tempJob.toStateId,\n tempJob.toStateName\n ),\n dropoffLat: tempJob.dropoffLat,\n dropoffLong: tempJob.dropoffLong,\n });\n } else {\n if (aggResults.orgPrimaryUser) {\n setJob({\n ...job,\n createdByOrgPrimaryContactFirstName:\n aggResults.orgPrimaryUser.firstName,\n createdByOrgPrimaryContactLastName:\n aggResults.orgPrimaryUser.lastName,\n });\n }\n }\n setJobTypeList(aggResults.jobTypes);\n setStateList(aggResults.states);\n setUnitTypeList(aggResults.unitTypes);\n setUnitStyleList(aggResults.unitStyles);\n setUnitMaterialList(aggResults.unitMaterials);\n setUnitColorList(aggResults.unitColors);\n setUnitList(aggResults.units);\n setOrgLocations(aggResults.orgLocations);\n setOrgRigs(aggResults.orgRigs);\n setDriverOptions(aggResults.driverOptions);\n setOrgDefaultChecklistItems(aggResults.orgDefaultChecklistItems);\n setJobMileageAndFuelCostSummary(aggResults.summary);\n if (tempJob) {\n // job already exists\n setJobFees(aggResults.jobFees);\n setJobChecklistItems(aggResults.jobChecklistItems);\n setComments(aggResults.jobComments);\n setJobRigs(aggResults.jobRigs);\n setJobChecklistResponses(aggResults.jobChecklistResponses);\n } else {\n // new job\n setJobFees(aggResults.orgDefaultJobFees);\n setOrgPrimaryUser(aggResults.orgPrimaryUser);\n let defaultJobChecklistItems = _.map(\n aggResults.orgDefaultChecklistItems,\n (item, index) => {\n return {\n checkListItem: {\n id: item.id,\n value: item.id,\n label: item.prompt,\n name: item.name,\n prompt: item.prompt,\n checkListItemTypeName: item.checkListItemTypeName,\n isRequired: item.isRequired,\n },\n local_id: -1 * (index + 1),\n };\n }\n );\n setJobChecklistItems(defaultJobChecklistItems);\n }\n let initialJobFees = tempJob\n ? aggResults.jobFees\n : aggResults.orgDefaultJobFees;\n let fees = 0;\n if (initialJobFees) {\n _.each(initialJobFees, (f) => {\n fees = fees + Number(f.amount);\n });\n setTotalFees(fees);\n }\n })\n\n .catch((error) => {\n setMessage({\n flavor: \"alert-danger\",\n text: \"There was an error loading job data.\",\n });\n })\n .finally(() => setLoading(false));\n }, [isCompanyUser, isHaulerUser, userOrgId, jobId]);\n\n useEffect(() => {\n setDraftMode(job && job.id === 0);\n switch (job && job.jobStatus ? job.jobStatus.value : 0) {\n case constants.JOB_STATUS_IDS.OPEN:\n setJobOpen(true);\n setJobReserved(false);\n setJobScheduled(false);\n setJobInProgress(false);\n setJobComplete(false);\n setJobCancelled(false);\n break;\n case constants.JOB_STATUS_IDS.RESERVED:\n setJobOpen(false);\n setJobReserved(true);\n setJobScheduled(false);\n setJobInProgress(false);\n setJobComplete(false);\n setJobCancelled(false);\n break;\n case constants.JOB_STATUS_IDS.SCHEDULED:\n setJobOpen(false);\n setJobReserved(false);\n setJobScheduled(true);\n setJobInProgress(false);\n setJobComplete(false);\n setJobCancelled(false);\n break;\n case constants.JOB_STATUS_IDS.IN_PROGRESS:\n setJobOpen(false);\n setJobReserved(false);\n setJobScheduled(false);\n setJobInProgress(true);\n setJobComplete(false);\n setJobCancelled(false);\n break;\n case constants.JOB_STATUS_IDS.COMPLETE:\n setJobOpen(false);\n setJobReserved(false);\n setJobScheduled(false);\n setJobInProgress(false);\n setJobComplete(true);\n setJobCancelled(false);\n break;\n case constants.JOB_STATUS_IDS.CANCELLED:\n setJobOpen(false);\n setJobReserved(false);\n setJobScheduled(false);\n setJobInProgress(false);\n setJobComplete(false);\n setJobCancelled(true);\n break;\n default:\n break;\n }\n setIsJobOwner(\n job &&\n (!(job.id > 0) ||\n (job.orgId === currentUser.currentOrgId &&\n constants.ADMIN_TASK_ROLE_IDS.includes(\n currentUser.currentRoleId\n )) ||\n currentUser.isAdmin)\n );\n }, [job, currentUser]);\n\n function onReserveHaulerChange(selection) {\n if (selection && selection.value) {\n api.post(`org/GetOrgDrivers/${selection.value}`).then((r) => {\n if (r && r.data) {\n setDriverOptions(\n _.map(r.data, (d) => {\n d.value = d.id;\n d.label = d.name;\n return d;\n })\n );\n setJob({ ...job, reservedByOrg: selection, driver: null });\n setSendHaulerInvite(true);\n }\n });\n } else {\n setJob({ ...job, reservedByOrg: selection, driver: null });\n setSendHaulerInvite(false);\n }\n }\n\n function onChangeJobType(selection) {\n if (selection && selection.value) {\n let apiCalls = [];\n apiCalls.push(getOrgDefaultJobFees(selection.value));\n apiCalls.push(getOrgDefaultChecklistItems(selection.value));\n Promise.all(apiCalls)\n .then((arrayResults) => {\n let aggResults = {};\n _.each(arrayResults, (x) => Object.assign(aggResults, x));\n if (\n window.confirm(\n \"Overwrite current job fees with default job fees for this new job type?\"\n )\n ) {\n let defaultFees = aggResults.orgDefaultJobFees;\n setJobFees(defaultFees);\n setTotalFees(_.sumBy(defaultFees, (f) => Number(f.amount)) || 0);\n }\n // if (window.confirm('Overwrite current job check list items with default job check list items for this new job type?')) {\n setOrgDefaultChecklistItems(aggResults.orgDefaultChecklistItems);\n let defaultJobChecklistItems = _.map(\n aggResults.orgDefaultChecklistItems,\n (item, index) => {\n return {\n // id: 0,\n checkListItem: {\n // ...item,\n id: item.id,\n value: item.id,\n label: item.prompt,\n name: item.name,\n prompt: item.prompt,\n checkListItemTypeName: item.checkListItemTypeName,\n isRequired: item.isRequired,\n },\n local_id: -1 * (index + 1),\n };\n }\n );\n setJobChecklistItems(defaultJobChecklistItems);\n // }\n })\n .catch((error) => {\n setMessage({\n flavor: \"alert-danger\",\n text: \"There was an error loading org defaults.\",\n });\n });\n }\n const jobEdit = Object.assign({}, job);\n jobEdit.jobType = selection;\n setJob(jobEdit);\n }\n\n function onChangeSelectedOrgFromAddress(e) {\n setFromAddress({\n ...fromAddress,\n fromAddress1: e.streetAddress1,\n fromAddress2: e.streetAddress2,\n fromCity: e.city,\n fromState: helpers.resolveValue(null, e.stateId, e.stateName),\n fromZipCode: e.zipCode,\n });\n }\n\n function onChangeSelectedOrgToAddress(e) {\n setToAddress({\n ...toAddress,\n toAddress1: e.streetAddress1,\n toAddress2: e.streetAddress2,\n toCity: e.city,\n toState: helpers.resolveValue(null, e.stateId, e.stateName),\n toZipCode: e.zipCode,\n });\n }\n\n function changeJobField(e) {\n const jobEdit = Object.assign({}, job);\n jobEdit[e.target.name] = e.target.value;\n setJob(jobEdit);\n }\n\n function changeJobBoolean(checked, field) {\n const jobEdit = Object.assign({}, job);\n jobEdit[field] = checked;\n setJob(jobEdit);\n }\n\n function changeJobSelect(selection, label) {\n const jobEdit = Object.assign({}, job);\n jobEdit[label] = selection;\n setJob(jobEdit);\n }\n\n function onAddJobChecklistItem(selection) {\n let newList = Object.assign([], jobChecklistItems);\n let itemToSave = {\n id: 0, // will be added as a new jobChecklistItem\n checkListItem: {\n id: selection.value,\n name: selection.label, // jobChecklistItem reference to org's checklist item\n prompt: selection.prompt,\n checkListItemTypeName: selection.checkListItemTypeName,\n isRequired: selection.isRequired,\n },\n local_id: -1 * (jobChecklistItems.length + 1),\n };\n newList = [...newList, itemToSave];\n setJobChecklistItems(newList);\n }\n\n function onRemoveJobChecklistItem(localItemId) {\n const indexToEdit = _.findIndex(jobChecklistItems, {\n local_id: localItemId,\n });\n const newList = Object.assign([], jobChecklistItems);\n newList.splice(indexToEdit, 1);\n setJobChecklistItems(newList);\n }\n\n function onJobRigChange(selection) {\n // need to alter if allowing more than one per job\n let tempJobRigs = Object.assign([], jobRigs);\n tempJobRigs = _.each(tempJobRigs, (jr) => tempJobRigs.pop(jr));\n tempJobRigs.push(selection);\n setJobRigs(tempJobRigs);\n }\n\n function convertDocToFormData(doc, jobId) {\n const formData = new FormData();\n formData.append(\"file\", doc.file);\n formData.append(\"orgId\", doc.orgId);\n formData.append(\"jobId\", jobId);\n formData.append(\"id\", doc.id);\n formData.append(\"documentTypeId\", doc.documentTypeId);\n return formData;\n }\n\n const uploadAllDocuments = (documents, jobId) => {\n return new Promise(async (resolve, reject) => {\n let allUploaded = true;\n for (let doc of documents) {\n // each document upload will happen one at a time. Might need to change this to allow to run parallelly in future\n let formData = convertDocToFormData(doc, jobId);\n await api\n .post_form_data(\"Job/SaveJobDocument\", formData)\n .then((response) => {\n if (response.data && response.data.success) {\n // on success ?\n } else {\n allUploaded = false;\n }\n })\n .catch(() => (allUploaded = false));\n }\n if (allUploaded) resolve(\"All uploaded\");\n else reject(\"All documents could not be uploaded\");\n });\n };\n\n async function onChangeUnit(selection) {\n let jobEdit = Object.assign({}, job);\n await api\n .fetch(`Unit/GetUnit/${selection.value}`)\n .then((response) => {\n let tempUnit = Object.assign({}, response.data);\n jobEdit = {\n ...jobEdit,\n unit: helpers.resolveValue(null, tempUnit.id, tempUnit.serialNumber),\n serialNumber: helpers.nullableString(tempUnit.serialNumber),\n unitType: helpers.resolveValue(\n null,\n tempUnit.unitTypeId,\n tempUnit.unitTypeName\n ),\n unitMaterial: helpers.resolveValue(\n null,\n tempUnit.unitMaterialId,\n tempUnit.unitMaterialName\n ),\n unitStyle: helpers.resolveValue(\n null,\n tempUnit.unitStyleId,\n tempUnit.unitStyleName\n ),\n wallColor: helpers.resolveValue(\n null,\n tempUnit.wallColorId,\n tempUnit.wallColorName\n ),\n trimColor: helpers.resolveValue(\n null,\n tempUnit.trimColorId,\n tempUnit.trimColorName\n ),\n roofColor: helpers.resolveValue(\n null,\n tempUnit.roofColorId,\n tempUnit.roofColorName\n ),\n manufacturer: helpers.nullableString(tempUnit.manufacturer),\n heightInFeet: tempUnit.heightInFeet,\n widthInFeet: tempUnit.widthInFeet,\n lengthInFeet: tempUnit.lengthInFeet,\n comment: helpers.nullableString(tempUnit.comment),\n };\n setJob(jobEdit);\n })\n .catch(helpers.catchHandler);\n }\n\n function onDateChange(selected, field) {\n const editJob = Object.assign({}, job);\n editJob[field] = selected;\n setJob(editJob);\n }\n\n function onTimeChange(event, field) {\n const editJob = Object.assign({}, job);\n editJob[field] = event.target.value;\n setJob(editJob);\n }\n\n function onSaveJob() {\n window.scroll(0, 0);\n let warnings = [];\n if (!job.jobStatus) {\n warnings.push(\"Valid job status is required.\"); // in case of bad data\n }\n if (!job.jobType) {\n warnings.push(\"Valid job type is required.\"); // in case of bad data\n }\n if (!fromAddress.fromAddress1) {\n warnings.push(\"Valid origin address is required.\");\n }\n if (!fromAddress.fromCity) {\n warnings.push(\"Valid origin city is required.\");\n }\n if (!fromAddress.fromState) {\n warnings.push(\"Valid origin state is required.\");\n }\n if (!fromAddress.fromZipCode) {\n warnings.push(\"Valid origin zip code is required.\");\n }\n if (!toAddress.toAddress1) {\n warnings.push(\"Valid destination address is required.\");\n }\n if (!toAddress.toCity) {\n warnings.push(\"Valid destination city is required.\");\n }\n if (!toAddress.toState) {\n warnings.push(\"Valid destination state is required.\");\n }\n if (!toAddress.toZipCode) {\n warnings.push(\"Valid destination zip code is required.\");\n }\n if (!job.manufacturer || _.trim(job.manufacturer).length < 2) {\n warnings.push(\"Please provide a valid manufacturer.\");\n }\n if (!job.lengthInFeet) {\n warnings.push(\"Building length in feet is required.\");\n }\n if (!job.widthInFeet) {\n warnings.push(\"Building width in feet is required.\");\n }\n if (!job.heightInFeet) {\n warnings.push(\"Building height in feet is required.\");\n }\n if (warnings.length) {\n setMessage({\n text: warnings.join(\" \"),\n flavor: \"alert-danger\",\n });\n return;\n } else {\n setMessage(null);\n }\n let jobPayload = {\n id: job.id,\n jobTypeId: job.jobType.value,\n typeOfJobStatus: job.jobStatus.value,\n orgId: job.orgId ? job.orgId : userOrgId, // if updating job, keep same orgId (cannot be changed)\n requestedByDate: job.requestedByDate,\n parentJobId: job.parentJobId,\n referenceNumber: job.referenceNumber,\n createdByOrgPrimaryContactFirstName:\n job.createdByOrgPrimaryContactFirstName,\n createdByOrgPrimaryContactLastName:\n job.createdByOrgPrimaryContactLastName,\n createdByOrgPrimaryContactNumber: job.createdByOrgPrimaryContactNumber,\n createdByOrgEmail: job.createdByOrgEmail,\n fromStreetAddress1: fromAddress.fromAddress1,\n fromStreetAddress2: fromAddress.fromAddress2,\n fromCity: fromAddress.fromCity,\n fromStateId: fromAddress.fromState ? fromAddress.fromState.value : null,\n fromZipCode: fromAddress.fromZipCode,\n pickupLat: fromAddress.pickupLat ? fromAddress.pickupLat : null,\n pickupLong: fromAddress.pickupLong ? fromAddress.pickupLong : null,\n toAddress1: toAddress.toAddress1,\n toAddress2: toAddress.toAddress2,\n toCity: toAddress.toCity,\n toStateId: toAddress.toState ? toAddress.toState.value : null,\n toZipCode: toAddress.toZipCode,\n dropoffLat: toAddress.dropoffLat ? toAddress.dropoffLat : null,\n dropoffLong: toAddress.dropoffLong ? toAddress.dropoffLong : null,\n compensationAmount: Number(totalFees) * 100,\n customerFeeCollectedAt: job.customerFeeCollectedAt,\n unitId: job.unit ? job.unit.value : null,\n unitTypeId: job.unitType.value,\n unitStyleId:\n job.unitStyle && job.unitStyle.value ? job.unitStyle.value : null, // FIX: UnitStyleId comes back as 0 from UnitMap if UnitStyle is null\n unitMaterialId: job.unitMaterial.value,\n wallColorId: job.wallColor.value,\n trimColorId: job.trimColor.value,\n roofColorId: job.roofColor.value,\n otherWallColor:\n job.wallColor.value == constants.COLOR_IDS.OTHER\n ? job.otherWallColor\n : null,\n otherTrimColor:\n job.trimColor.value == constants.COLOR_IDS.OTHER\n ? job.otherTrimColor\n : null,\n otherRoofColor:\n job.roofColor.value == constants.COLOR_IDS.OTHER\n ? job.otherRoofColor\n : null,\n manufacturer: job.manufacturer,\n serialNumber: job.serialNumber,\n heightInFeet: job.heightInFeet,\n widthInFeet: job.widthInFeet,\n lengthInFeet: job.lengthInFeet,\n unitComment: job.unitComment,\n ownerFirstName: job.ownerFirstName,\n ownerLastName: job.ownerLastName,\n ownerEmail: job.ownerEmail,\n ownerPhoneNumber: job.ownerPhoneNumber,\n reservedByOrgId:\n sendHaulerInvite && job.reservedByOrg ? job.reservedByOrg.value : null,\n driverId:\n sendHaulerInvite && job.driver && job.driver.value\n ? job.driver.value\n : null,\n sendHaulerInvite: sendHaulerInvite,\n isExtreme: job.isExtreme,\n };\n const jobFeesPayload = _.map(jobFees, (f) => ({\n id: f.id ? f.id : 0,\n feeTypeId: f.feeType.value,\n amount: f.amount,\n description: f.description,\n includeFee: true,\n }));\n const jobCommentsPayload = _.map(comments, (c) => ({\n id: c.id ? c.id : 0,\n comment: c.comment,\n privateToOrgId: c.isPrivate ? userOrgId : null,\n }));\n const jobChecklistItemsPayload = _.map(jobChecklistItems, (item) => ({\n Id: item.id ? item.id : 0,\n CheckListItemId: item.checkListItem.id,\n Required: item.checkListItem.isRequired,\n }));\n let payload = {\n job: jobPayload,\n jobFees: jobFeesPayload,\n jobComments: jobCommentsPayload,\n jobChecklistItems: jobChecklistItemsPayload,\n };\n api\n .post(\"Job/SaveJob\", payload)\n .then((response) => {\n if (response.data && response.data.success) {\n uploadAllDocuments(newDocumentsToUpload, response.data.message.id)\n .then((response) => {\n if (isJobOwner) {\n setMessage({\n text: \"Job has been updated successfully! You will be redirected momentarily.\",\n flavor: \"alert-success\",\n });\n setTimeout(() => {\n setRedirect(true);\n }, 2000);\n } else {\n setMessage({\n text: \"Comments saved successfully.\",\n flavor: \"alert-success\",\n });\n }\n })\n .catch((error) => {\n setMessage({ text: error, flavor: \"alert-danger\" });\n });\n } else {\n setMessage({ text: response.data.message, flavor: \"alert-danger\" });\n }\n })\n .catch(helpers.catchHandler);\n }\n\n function onAddNewFee() {\n setNewFee(Object.assign({}, emptyJobFee));\n }\n\n function onCancelAddNewJobFee() {\n setNewFee(null);\n }\n\n function onNewJobFeeTypeSelect(selection, name) {\n setNewFee({\n ...newFee,\n [name]: selection,\n });\n }\n\n function changeNewJobFeeField(event) {\n setNewFee({\n ...newFee,\n [event.target.name]: event.target.value,\n });\n }\n\n const newJobFeeRow = () => {\n return (\n \n \n onNewJobFeeTypeSelect(event, \"feeType\")}\n isDisabled={jobReserved}\n />\n \n \n changeNewJobFeeField(event)}\n value={newFee.dsc}\n className=\"form-control\"\n disabled={jobReserved}\n maxLength=\"500\"\n />\n \n \n changeNewJobFeeField(event)}\n // value={item.charge || (item.type && item.type.defaultPrice) || 0}\n value={newFee.amount}\n className=\"form-control\"\n />\n \n \n \n onSaveNewJobFee()}\n // onClick={() => addToJobFees(item)}\n title=\"Add to quote\"\n disabled={\n !(\n newFee &&\n newFee.feeType &&\n newFee.description &&\n newFee.amount\n )\n }\n >\n \n \n onCancelAddNewJobFee()}\n title=\"Cancel New Job Fee\"\n >\n \n \n \n \n \n );\n };\n\n function onEditJobFee(localJobFeeId) {\n const indexToEdit = _.findIndex(jobFees, { local_id: localJobFeeId });\n let tempList = _.cloneDeep(jobFees);\n const snapshotItem = Object.assign({}, tempList[indexToEdit]);\n tempList[indexToEdit].isEditing = true;\n tempList[indexToEdit].pristine = snapshotItem;\n setJobFees(tempList);\n }\n\n function onCancelEditJobFee(localJobFeeId) {\n const indexToEdit = _.findIndex(jobFees, { local_id: localJobFeeId });\n let tempList = _.cloneDeep(jobFees);\n tempList[indexToEdit].isEditing = false;\n tempList[indexToEdit] = tempList[indexToEdit].pristine;\n setJobFees(tempList);\n }\n\n function onEditJobFeeTypeSelect(selection, name, localJobFeeId) {\n const indexToEdit = _.findIndex(jobFees, { local_id: localJobFeeId });\n const newList = Object.assign([], jobFees);\n newList[indexToEdit][name] = selection;\n setJobFees(newList);\n }\n\n function changeJobFee(event, localJobFeeId) {\n const indexToEdit = _.findIndex(jobFees, { local_id: localJobFeeId });\n const newList = Object.assign([], jobFees);\n newList[indexToEdit][event.target.name] = event.target.value;\n // if(event.target.name === 'amount') {\n // newList[indexToEdit].amountDisplay = `$${event.target.value}`; // FIX\n // }\n setJobFees(newList);\n }\n\n function onSaveEditedJobFee(localJobFeeId) {\n const indexToEdit = _.findIndex(jobFees, { local_id: localJobFeeId });\n const newList = Object.assign([], jobFees);\n newList[indexToEdit].isEditing = false;\n setJobFees(newList);\n let fees = Number(totalFees) - Number(newList[indexToEdit].pristine.amount);\n fees = Number(fees) + Number(newList[indexToEdit].amount);\n setTotalFees(fees);\n }\n\n function onSaveNewJobFee() {\n let newList = Object.assign([], jobFees);\n let jobFeeToSave = Object.assign({}, newFee);\n // if (!this.isJobFeeValid()) return;\n jobFeeToSave = {\n ...jobFeeToSave,\n local_id: -1 * (jobFees.length + 1),\n };\n newList = [...newList, jobFeeToSave];\n setJobFees(newList);\n setNewFee(null);\n addToJobFees(jobFeeToSave.amount);\n // const fees = totalFees + parseInt(jobFeeToSave.amount, 10);\n // setTotalFees(fees);\n }\n\n function addToJobFees(amount) {\n const fees = Number(totalFees) + Number(amount);\n setTotalFees(fees);\n }\n\n function deleteFromJobFees(amount) {\n const fees = Number(totalFees) - Number(amount);\n setTotalFees(fees);\n }\n\n function onDeleteJobFee(localJobFeeId, amount) {\n const indexToEdit = _.findIndex(jobFees, { local_id: localJobFeeId });\n const newList = Object.assign([], jobFees); // const newList = _.cloneDeep(jobFees);\n newList.splice(indexToEdit, 1);\n setJobFees(newList);\n deleteFromJobFees(amount);\n // const fees = totalFees - parseInt(amount, 10);\n // setTotalFees(fees);\n }\n\n const jobFeeRow = (item) => {\n return (\n \n \n \n onEditJobFeeTypeSelect(event, \"feeType\", item.local_id)\n }\n isDisabled={jobReserved}\n />\n \n \n changeJobFee(event, item.local_id)}\n value={item.description}\n className=\"form-control\"\n disabled={jobReserved}\n maxLength=\"500\"\n />\n \n \n changeJobFee(event, item.local_id)}\n value={item.amount}\n className=\"form-control\"\n />\n \n \n \n addToJobFees(item)}\n onClick={() => onSaveEditedJobFee(item.local_id)}\n title=\"Add to quote\"\n disabled={\n !(item && item.feeType && item.description && item.amount)\n }\n >\n \n \n onCancelEditJobFee(item.local_id)}\n title=\"Cancel Edit Job Fee\"\n >\n \n \n \n \n \n );\n };\n\n function onAddNewComment() {\n setNewComment(Object.assign({}, emptyComment));\n }\n\n function onCancelAddNewComment() {\n setNewComment(null);\n }\n\n function onNewCommentIsPrivateChange(checked, field) {\n const commentEdit = Object.assign({}, newComment);\n commentEdit[field] = checked;\n setNewComment(commentEdit);\n }\n\n function changeNewCommentField(event) {\n setNewComment({\n ...newComment,\n [event.target.name]: event.target.value,\n });\n }\n\n const newCommentRow = () => {\n return (\n \n \n changeNewCommentField(event)}\n value={newComment.dsc}\n className=\"form-control\"\n />\n \n \n onNewCommentIsPrivateChange(e, \"isPrivate\")}\n checked={newComment && newComment.isPrivate === true ? true : false}\n />\n \n \n \n onSaveNewComment()}\n title=\"Add comment\"\n disabled={!(newComment && newComment.comment)}\n >\n \n \n onCancelAddNewComment()}\n title=\"Cancel New Comment\"\n >\n \n \n \n \n \n );\n };\n\n function onEditComment(localCommentId) {\n const indexToEdit = _.findIndex(comments, { local_id: localCommentId });\n let tempList = _.cloneDeep(comments);\n const snapshotItem = Object.assign({}, tempList[indexToEdit]);\n tempList[indexToEdit].isEditing = true;\n tempList[indexToEdit].pristine = snapshotItem;\n setComments(tempList);\n }\n\n function onCancelEditComment(localCommentId) {\n const indexToEdit = _.findIndex(comments, { local_id: localCommentId });\n let tempList = _.cloneDeep(comments);\n tempList[indexToEdit].isEditing = false;\n tempList[indexToEdit] = tempList[indexToEdit].pristine;\n setComments(tempList);\n }\n\n function changeCommentField(event, localCommentId) {\n const indexToEdit = _.findIndex(comments, { local_id: localCommentId });\n const newList = Object.assign([], comments);\n newList[indexToEdit][event.target.name] = event.target.value;\n setComments(newList);\n }\n\n function onCommentIsPrivateChange(checked, field, localCommentId) {\n const indexToEdit = _.findIndex(comments, { local_id: localCommentId });\n const newList = Object.assign([], comments);\n newList[indexToEdit][field] = checked;\n setComments(newList);\n }\n\n function onSaveEditedComment(localCommentId) {\n const indexToEdit = _.findIndex(comments, { local_id: localCommentId });\n const newList = Object.assign([], comments);\n newList[indexToEdit].isEditing = false;\n setComments(newList);\n }\n\n function onSaveNewComment() {\n let newList = Object.assign([], comments);\n let commentToSave = Object.assign({}, newComment);\n // if (!this.isCommentValid()) return;\n commentToSave = {\n ...commentToSave,\n local_id: -1 * (comments.length + 1),\n };\n newList = [...newList, commentToSave];\n setComments(newList);\n setNewComment(null);\n }\n\n function onDeleteComment(localCommentId) {\n const indexToEdit = _.findIndex(comments, { local_id: localCommentId });\n const newList = Object.assign([], comments); // const newList = _.cloneDeep(jobFees);\n newList.splice(indexToEdit, 1);\n setComments(newList);\n }\n\n const jobCommentRow = (item) => {\n return (\n \n \n changeCommentField(event, item.local_id)}\n value={item.comment}\n className=\"form-control\"\n maxLength=\"500\"\n />\n \n \n \n onCommentIsPrivateChange(e, \"isPrivate\", item.local_id)\n }\n checked={item && item.isPrivate === true ? true : false}\n />\n \n \n \n onSaveEditedComment(item.local_id)}\n title=\"Edit comment\"\n disabled={!(item && item.comment)}\n >\n \n \n onCancelEditComment(item.local_id)}\n title=\"Cancel Edit Comment\"\n >\n \n \n \n \n \n );\n };\n\n function onScheduleJob() {\n window.scroll(0, 0);\n let jobCopy = Object.assign({}, job);\n if (!jobCopy.driver) {\n Alert.error(\"Please assign a driver.\");\n return;\n }\n if (!jobCopy.estimatedPickupAt) {\n Alert.error(\"Pickup Date is required.\");\n return;\n }\n if (!jobCopy.estimatedDropoffAt) {\n Alert.error(\"Dropoff Date is required.\");\n return;\n }\n let payload = {\n JobId: jobCopy ? jobCopy.id : null,\n DriverId: jobCopy.driver ? jobCopy.driver.value : null,\n AssignedToOrgId: currentUser.currentOrgId,\n EstimatedPickupAt: dateHelpers.formatDateForServer(\n jobCopy.estimatedPickupAt\n ), //jobCopy.estimatedPickupAt,\n EstimatedDropoffAt: dateHelpers.formatDateForServer(\n jobCopy.estimatedDropoffAt\n ), //jobCopy.estimatedDropoffAt,\n EstimatedPickupTimeOfDay: jobCopy.estimatedPickupTimeOfDay,\n EstimatedDropoffTimeOfDay: jobCopy.estimatedDropoffTimeOfDay,\n };\n\n api\n .post(\"Job/ScheduleJob\", payload)\n .then((response) => {\n if (response.data && response.data.success) {\n // Alert.success(\"Job has been scheduled.\");\n setMessage({\n text: \"Job has been scheduled! You will be redirected momentarily.\",\n flavor: \"alert-success\",\n });\n setTimeout(() => {\n setRedirect(true);\n }, 2000);\n } else {\n // Alert.error(\"An error occurred. Job cannot be scheduled at this time.\");\n setMessage({ text: response.data.message, flavor: \"alert-danger\" });\n }\n })\n .catch(helpers.catchHandler);\n }\n\n function onCompleteJob() {\n window.scroll(0, 0);\n let jobCopy = Object.assign({}, job);\n if (!jobCopy.actualPickupAt && !jobCopy.actualPickupAtTime) {\n Alert.error(\"Actual Pickup At date and time is required.\");\n return;\n }\n if (!jobCopy.actualDropoffAt && !jobCopy.actualDropoffAtTime) {\n Alert.error(\"Actual Dropoff At date and time is required.\");\n return;\n }\n\n let tempRequiredItems = _.filter(\n jobChecklistItems,\n (x) => x.required == true\n );\n let requiredChecklistItems = _.map(tempRequiredItems, (x) => x.id);\n let itemsAnswered = _.map(checklistAnswers, (x) => x.jobChecklistItemId);\n\n let isValid = _.every(requiredChecklistItems, (ri) =>\n _.includes(itemsAnswered, ri)\n );\n\n if (!isValid) {\n Alert.error(\"A required checklist item has not been answered\");\n return;\n }\n\n if (!window.confirm(`Are you sure you'd like to Complete this job?`))\n return;\n\n const jobRigsPayload = _.map(jobRigs, (jr) => ({\n Id: jr.id ? jr.id : 0,\n RigTypeId: jr.value,\n }));\n\n let payload = {\n JobId: jobCopy ? jobCopy.id : null,\n // Need to send : '2021-08-04T04:00:00.000Z'\n // actualPickupAt: Tue Aug 17 2021 10:12:11 GMT-0400 (Eastern Daylight Time)\n // actualPickupAtTime: '12:00'\n actualPickupAt: job.actualPickupAt, //`${job.actualPickupAt}T${job.actualPickupAtTime}`\n actualDropoffAt: job.actualDropoffAt, //`${job.actualDropoffAt}T${job.actualDropoffAtTime}`\n jobRigs: jobRigsPayload,\n };\n\n Promise.all(\n _.map(checklistAnswers, async (v) => {\n setMessage(\"Saving Responses\");\n let newResponse = {};\n newResponse.JobChecklistItemId = parseInt(v.jobChecklistItemId, 10);\n newResponse.ChecklistItemTypeId = parseInt(v.checklistItemTypeId, 10);\n newResponse.DocumentTypeId = v.documentTypeId\n ? parseInt(v.documentTypeId, 10)\n : null;\n newResponse.Sequence = parseInt(v.sequence, 10);\n newResponse.Prompt = v.prompt;\n switch (v.checklistItemTypeId) {\n case constants.CHECKLIST_ITEM_TYPE_IDS.BOOLEAN:\n newResponse.BoolResponse = v.value;\n break;\n case constants.CHECKLIST_ITEM_TYPE_IDS.ATTACHMENT:\n case constants.CHECKLIST_ITEM_TYPE_IDS.SIGNATURE:\n const formData = new FormData();\n formData.append(\"OrgId\", currentUser.currentOrgId);\n formData.append(\"JobId\", jobId);\n formData.append(\"Id\", currentUser.id);\n formData.append(\"DocumentTypeId\", v.documentTypeId);\n if (v.value) {\n formData.append(`File`, v.value);\n }\n let response = await api.post_form_data(\n `Job/SaveJobDocument`,\n formData\n );\n\n if (response.data.success && response.data.message) {\n newResponse.AttachmentResponse = response.data.message;\n } else {\n setMessage({\n text: response.data.message,\n flavor: \"alert-danger\",\n });\n throw new Error(response.data.message);\n }\n break;\n case constants.CHECKLIST_ITEM_TYPE_IDS.TEXT:\n newResponse.TextResponse = v.value;\n break;\n case constants.CHECKLIST_ITEM_TYPE_IDS.PAYMENT:\n newResponse.PaymentResponse = v.value;\n break;\n default:\n const message =\n \"Unknown checklistItemTypes: \" + v.checkListItemTypeId;\n console.warn(message);\n throw new Error(message);\n }\n return newResponse;\n })\n )\n .then((r) => {\n if (r) {\n Alert.success(\"Marking Job Complete\");\n payload.CheckListItemResponses = r;\n return api.post(`Job/CompleteJob`, payload);\n } else {\n setMessage({\n text: \"Error setting checklist responses.\",\n flavor: \"alert-danger\",\n });\n throw new Error(\"Error setting checklist responses.\");\n }\n })\n .then((response) => {\n if (response.data.success) {\n setMessage({\n text: \"Job has been completed successfully! You will be redirected momentarily.\",\n flavor: \"alert-success\",\n });\n setTimeout(() => {\n setRedirect(true);\n }, 2000);\n } else {\n setMessage({ text: response.data.message, flavor: \"alert-danger\" });\n }\n })\n .catch(helpers.catchHandler)\n .finally(() => {\n setMessage(null);\n });\n }\n\n if (redirect) {\n return ;\n }\n\n if (!loading) {\n console.log(\"Is Job Owner\", isJobOwner);\n console.log(\"Current Org\", currentUser.currentOrgId);\n console.log(\"Reserved By Org\", job?.reservedByOrg?.value);\n return (\n \n {({ breakpoints, currentBreakpoint }) => {\n switch (currentBreakpoint) {\n case breakpoints.mobile:\n return
    {props.children}
    ;\n case breakpoints.desktop:\n default:\n return (\n 0 ? (\n \n {`Job #${jobId}`} \n \n \n {job.jobStatus ? job.jobStatus.label : null}\n \n \n \n ) : (\n `Request New Hauling Job`\n )\n }\n >\n {message ? (\n {message.text}\n ) : null}\n {showTextModal && (\n setShowTextModal(null)}\n />\n )}\n \n \n \n \n {!isJobOwner && (\n \n Company\n
    \n \n
    \n \n )}\n \n Job Type {helpers.requiredStar()}\n onChangeJobType(event)}\n isDisabled={!draftMode}\n />\n \n \n PO or Reference # (optional)\n changeJobField(event)}\n value={job.referenceNumber}\n className=\"form-control\"\n disabled={isHaulerUser}\n maxLength=\"100\"\n />\n \n \n Requested By Date\n
    \n \n onDateChange(e, \"requestedByDate\")\n }\n disabled={isHaulerUser}\n />\n
    \n \n \n Extreme\n
    \n \n changeJobBoolean(e, \"isExtreme\")\n }\n checked={\n job && job.isExtreme === true\n ? true\n : false\n }\n disabled={isHaulerUser}\n />\n
    \n \n
    \n \n \n
    Contact Information
    \n \n
    \n \n \n Primary Contact First Name\n changeJobField(event)}\n value={\n job.createdByOrgPrimaryContactFirstName ||\n (orgPrimaryUser\n ? orgPrimaryUser.firstName\n : \"\")\n }\n className=\"form-control\"\n disabled={isHaulerUser || jobComplete}\n maxLength=\"50\"\n />\n \n \n Primary Contact Last Name\n changeJobField(event)}\n value={\n job.createdByOrgPrimaryContactLastName ||\n (orgPrimaryUser\n ? orgPrimaryUser.lastName\n : \"\")\n }\n className=\"form-control\"\n disabled={isHaulerUser || jobComplete}\n maxLength=\"50\"\n />\n \n \n Primary Contact Phone Number\n changeJobField(event)}\n value={\n job.createdByOrgPrimaryContactNumber ||\n (orgPrimaryUser\n ? orgPrimaryUser.phoneNumber\n : \"\")\n }\n className=\"form-control\"\n disabled={isHaulerUser || jobComplete}\n maxLength=\"20\"\n />\n \n \n Primary Contact Email\n changeJobField(event)}\n value={\n job.createdByOrgEmail ||\n (orgPrimaryUser ? orgPrimaryUser.email : \"\")\n }\n className=\"form-control\"\n disabled={isHaulerUser || jobComplete}\n maxLength=\"320\"\n />\n \n \n \n \n \n \n
    \n Origin Address {helpers.requiredStar()}\n
    \n \n {/* Unable to get lat & lng for pickup location with this, need to update */}\n {/* {draftMode &&\n (job.jobType.value ===\n constants.JOB_TYPE_IDS.MFG ||\n job.jobType.value ===\n constants.JOB_TYPE_IDS.RTO_DELIVERY) ? (\n \n \n onChangeSelectedOrgFromAddress(event)\n }\n isDisabled={\n (!isJobOwner && !draftMode) ||\n jobComplete ||\n (orgLocations && !orgLocations.length)\n }\n />\n \n ) : null} */}\n
    \n \n \n \n setTypeaheadFromAddress(e.target.value)\n }\n disabled={\n (!isJobOwner && !draftMode) ||\n jobComplete\n }\n getAddressInfo={({\n city,\n streetNumber,\n route,\n zip,\n lat,\n lng,\n stateAbbr,\n }) => {\n let tempState = null;\n\n if (stateAbbr) {\n tempState = _.find(\n stateList,\n (s) => s.label === stateAbbr\n );\n }\n\n setFromAddress({\n ...fromAddress,\n fromAddress1: `${streetNumber} ${route}`,\n fromCity: city,\n fromZipCode: zip,\n pickupLat: lat,\n pickupLong: lng,\n fromState: tempState,\n });\n setTypeaheadFromAddress(\"\");\n }}\n />\n \n \n \n \n \n \n setFromAddress({\n ...fromAddress,\n fromAddress1: e.target.value,\n })\n }\n value={fromAddress.fromAddress1}\n className=\"form-control\"\n placeholder=\"Address\"\n disabled={\n (!isJobOwner && !draftMode) ||\n jobComplete\n }\n maxLength=\"255\"\n />\n \n \n \n \n \n setFromAddress({\n ...fromAddress,\n fromAddress2: e.target.value,\n })\n }\n value={fromAddress.fromAddress2}\n className=\"form-control\"\n placeholder=\"Address Line 2 (optional)\"\n disabled={\n (!isJobOwner && !draftMode) ||\n jobComplete\n }\n maxLength=\"255\"\n />\n \n \n \n \n \n \n setFromAddress({\n ...fromAddress,\n fromCity: e.target.value,\n })\n }\n value={fromAddress.fromCity}\n className=\"form-control\"\n placeholder=\"City\"\n disabled={\n (!isJobOwner && !draftMode) ||\n jobComplete\n }\n maxLength=\"255\"\n />\n \n \n \n setFromAddress({\n ...fromAddress,\n fromState: x,\n })\n }\n isDisabled={\n (!isJobOwner && !draftMode) ||\n jobComplete\n }\n />\n \n \n \n setFromAddress({\n ...fromAddress,\n fromZipCode: e.target.value,\n })\n }\n value={fromAddress.fromZipCode}\n className=\"form-control\"\n placeholder=\"Zip\"\n disabled={\n (!isJobOwner && !draftMode) ||\n jobComplete\n }\n maxLength=\"11\"\n />\n \n \n \n \n \n \n
    \n Destination Address{\" \"}\n {helpers.requiredStar()}\n
    \n \n {/* Unable to get lat & lng for dropoff location with this, need to update */}\n {/* {job.jobType.value ===\n constants.JOB_TYPE_IDS.RETURN ||\n job.jobType.value ===\n constants.JOB_TYPE_IDS.RETRIEVAL ||\n job.jobType.value ===\n constants.JOB_TYPE_IDS.OFF_LOT ? (\n \n \n onChangeSelectedOrgToAddress(event)\n }\n isDisabled={\n (!isJobOwner && !draftMode) ||\n jobComplete ||\n (orgLocations && !orgLocations.length)\n }\n />\n \n ) : null} */}\n
    \n \n \n \n setTypeaheadToAddress(e.target.value)\n }\n disabled={\n (!isJobOwner && !draftMode) ||\n jobComplete\n }\n getAddressInfo={({\n city,\n streetNumber,\n route,\n zip,\n lat,\n lng,\n stateAbbr,\n }) => {\n let tempState = null;\n\n if (stateAbbr) {\n tempState = _.find(\n stateList,\n (s) => s.label === stateAbbr\n );\n }\n\n setToAddress({\n ...toAddress,\n toAddress1: `${streetNumber} ${route}`,\n toCity: city,\n toZipCode: zip,\n dropoffLat: lat,\n dropoffLong: lng,\n toState: tempState || null,\n });\n setTypeaheadToAddress(\"\");\n }}\n />\n \n \n \n \n \n \n setToAddress({\n ...toAddress,\n toAddress1: e.target.value,\n })\n }\n value={toAddress.toAddress1}\n className=\"form-control\"\n placeholder=\"Address\"\n disabled={\n (!isJobOwner && !draftMode) ||\n jobComplete\n }\n maxLength=\"255\"\n />\n \n \n \n \n \n setToAddress({\n ...toAddress,\n toAddress2: e.target.value,\n })\n }\n value={toAddress.toAddress2}\n className=\"form-control\"\n placeholder=\"Address Line 2 (optional)\"\n disabled={\n (!isJobOwner && !draftMode) ||\n jobComplete\n }\n maxLength=\"255\"\n />\n \n \n \n \n \n \n setToAddress({\n ...toAddress,\n toCity: e.target.value,\n })\n }\n value={toAddress.toCity}\n className=\"form-control\"\n placeholder=\"City\"\n disabled={\n (!isJobOwner && !draftMode) ||\n jobComplete\n }\n maxLength=\"255\"\n />\n \n \n \n setToAddress({\n ...toAddress,\n toState: x,\n })\n }\n isDisabled={\n (!isJobOwner && !draftMode) ||\n jobComplete\n }\n />\n \n \n \n setToAddress({\n ...toAddress,\n toZipCode: e.target.value,\n })\n }\n value={toAddress.toZipCode}\n className=\"form-control\"\n placeholder=\"Zip\"\n disabled={\n (!isJobOwner && !draftMode) ||\n jobComplete\n }\n maxLength=\"11\"\n />\n \n \n \n
    \n {!isJobOwner && jobOpen ? null : (\n \n \n \n \n
    Owner / Lessee Details
    \n \n
    \n \n \n Contact First Name\n \n changeJobField(event)\n }\n value={job.ownerFirstName}\n className=\"form-control\"\n disabled={\n (!isJobOwner && !draftMode) ||\n jobComplete\n }\n maxLength=\"50\"\n />\n \n \n Contact Last Name\n \n changeJobField(event)\n }\n value={job.ownerLastName}\n className=\"form-control\"\n disabled={\n (!isJobOwner && !draftMode) ||\n jobComplete\n }\n maxLength=\"50\"\n />\n \n \n Email\n \n changeJobField(event)\n }\n value={job.ownerEmail}\n className=\"form-control\"\n disabled={\n (!isJobOwner && !draftMode) ||\n jobComplete\n }\n maxLength=\"75\"\n />\n \n \n Phone Number\n \n changeJobField(event)\n }\n value={job.ownerPhoneNumber}\n className=\"form-control\"\n disabled={\n (!isJobOwner && !draftMode) ||\n jobComplete\n }\n maxLength=\"20\"\n />\n \n \n \n
    \n )}\n \n \n
    Building Information
    \n \n {/* {!isJobOwner ? null : (\n \n Select Existing Unit\n \n \n changeJobBoolean(e, \"useExistingUnit\")\n }\n checked={\n job && job.useExistingUnit === true\n ? true\n : false\n }\n disabled={\n (!isJobOwner && !draftMode) ||\n jobComplete\n }\n />\n \n \n )} */}\n {/* {isJobOwner && job.useExistingUnit ? (\n \n onChangeUnit(event)}\n value={job.unit}\n classNamePrefix=\"react-select\"\n isDisabled={\n (!isJobOwner && !draftMode) || jobComplete\n }\n />\n \n ) : null} */}\n
    \n \n \n Unit Type {helpers.requiredStar()}\n \n changeJobSelect(event, \"unitType\")\n }\n isDisabled={\n (!isJobOwner && !draftMode) || jobComplete\n }\n />\n \n \n Manufacturer {helpers.requiredStar()}\n changeJobField(event)}\n value={job.manufacturer}\n className=\"form-control\"\n disabled={\n (!isJobOwner && !draftMode) || jobComplete\n }\n maxLength=\"75\"\n />\n \n \n Serial # (optional)\n changeJobField(event)}\n value={job.serialNumber}\n className=\"form-control\"\n disabled={\n (!isJobOwner && !draftMode) || jobComplete\n }\n maxLength=\"50\"\n />\n \n \n Style (optional)\n \n changeJobSelect(event, \"unitStyle\")\n }\n isDisabled={\n (!isJobOwner && !draftMode) || jobComplete\n }\n />\n \n \n \n \n Material {helpers.requiredStar()}\n \n changeJobSelect(event, \"unitMaterial\")\n }\n isDisabled={\n (!isJobOwner && !draftMode) || jobComplete\n }\n />\n \n \n Length (ft) {helpers.requiredStar()}\n changeJobField(event)}\n value={job.lengthInFeet}\n className=\"form-control\"\n disabled={\n (!isJobOwner && !draftMode) || jobComplete\n }\n />\n \n \n Width (ft) {helpers.requiredStar()}\n changeJobField(event)}\n value={job.widthInFeet}\n className=\"form-control\"\n disabled={\n (!isJobOwner && !draftMode) || jobComplete\n }\n />\n \n \n Height (ft) {helpers.requiredStar()}\n changeJobField(event)}\n value={job.heightInFeet}\n className=\"form-control\"\n disabled={\n (!isJobOwner && !draftMode) || jobComplete\n }\n />\n \n \n \n \n Wall Color {helpers.requiredStar()}\n \n changeJobSelect(event, \"wallColor\")\n }\n isDisabled={\n (!isJobOwner && !draftMode) || jobComplete\n }\n />\n \n \n Roof Color {helpers.requiredStar()}\n \n changeJobSelect(event, \"roofColor\")\n }\n isDisabled={\n (!isJobOwner && !draftMode) || jobComplete\n }\n />\n \n \n Trim Color {helpers.requiredStar()}\n \n changeJobSelect(event, \"trimColor\")\n }\n isDisabled={\n (!isJobOwner && !draftMode) || jobComplete\n }\n />\n \n \n \n \n {job.wallColor.value ==\n constants.COLOR_IDS.OTHER ? (\n changeJobField(event)}\n value={job.otherWallColor}\n className=\"form-control\"\n disabled={jobComplete}\n maxLength=\"75\"\n />\n ) : null}\n \n \n {job.roofColor.value ==\n constants.COLOR_IDS.OTHER ? (\n changeJobField(event)}\n value={job.otherRoofColor}\n className=\"form-control\"\n disabled={jobComplete}\n maxLength=\"75\"\n />\n ) : null}\n \n \n {job.trimColor.value ==\n constants.COLOR_IDS.OTHER ? (\n changeJobField(event)}\n value={job.otherTrimColor}\n className=\"form-control\"\n disabled={jobComplete}\n maxLength=\"75\"\n />\n ) : null}\n \n \n \n \n {!isJobOwner ? null : (\n onAddNewFee()}\n >\n Add New Fee\n \n )}\n
    Compensation Details
    \n \n
    \n \n \n \n \n \n Fee Type {helpers.requiredStar()}\n \n Description {helpers.requiredStar()}\n \n {jobReserved ? null : (\n \n Amt {helpers.requiredStar()}\n \n \n )}\n \n \n \n {newFee ? {newJobFeeRow()} : null}\n {jobFees &&\n jobFees.length > 0 &&\n _.map(jobFees, (jf, index) => (\n \n {jf.isEditing ? (\n jobFeeRow(jf, index)\n ) : (\n \n \n {jf.feeType\n ? jf.feeType.label\n : null}\n \n \n {jf.description}\n \n \n {helpers.formatCurrency(\n jf.amount || 0\n )}\n \n {jobReserved || isHaulerUser ? (\n \n ) : (\n \n \n \n onEditJobFee(\n jf.local_id\n )\n }\n // disabled={}\n >\n \n \n {/* {jf.deactivatedAt ? (\n this.togglminWidth150eActive(u, \"activate\")}\n >\n {\" \"}\n Revive\n \n ) : ( */}\n \n onDeleteJobFee(\n jf.local_id,\n jf.amount\n )\n }\n title=\"Remove from quote\"\n >\n \n \n {/* )} */}\n \n \n )}\n \n )}\n \n ))}\n \n \n \n \n Total:\n \n \n \n {helpers.formatCurrency(totalFees)}\n \n \n \n \n \n \n \n {isJobOwner && ( //&& (draftMode || jobOpen)\n \n \n \n
    Checklist Items To Include
    \n \n {console.log(\"Draft Mod: \", draftMode)}\n {console.log(\"Job Open: \", jobOpen)}\n {(draftMode || jobOpen) && (\n \n \n Add Item:\n \n \n \n onAddJobChecklistItem(event)\n }\n isDisabled={!draftMode && !jobOpen}\n />\n \n \n )}\n
    \n \n \n \n \n \n Item\n Type\n Required\n \n \n \n \n {jobChecklistItems &&\n jobChecklistItems.length > 0 &&\n _.map(jobChecklistItems, (item) => (\n \n \n {item.checkListItem\n ? item.checkListItem.prompt\n : \"\"}\n \n \n {item.checkListItem\n ? item.checkListItem\n .checkListItemTypeName\n : \"\"}\n \n \n {item.checkListItem &&\n item.checkListItem\n .isRequired ? (\n \n ) : null}\n \n \n {draftMode || jobOpen ? (\n \n onRemoveJobChecklistItem(\n item.local_id\n )\n }\n title=\"Remove from quote\"\n >\n \n \n ) : null}\n \n \n ))}\n \n \n \n \n
    \n )}\n {(isJobOwner ||\n currentUser.currentOrgId ===\n job?.reservedByOrg?.value) && (\n \n \n \n )}\n\n {(isJobOwner ||\n currentUser.currentOrgId ===\n job?.reservedByOrg?.value) && (\n \n \n \n onAddNewComment()}\n >\n Add New Comment\n \n
    Comments
    \n \n
    \n \n \n \n \n \n Comment\n Is Private?\n \n \n \n \n {newComment ? (\n {newCommentRow()}\n ) : null}\n {comments &&\n comments.length > 0 &&\n _.map(comments, (c, index) => (\n \n {c.isEditing ? (\n jobCommentRow(c, index)\n ) : (\n \n \n {c.comment}\n \n \n
    \n {c.isPrivate ? (\n \n \n \n ) : null}\n
    \n \n \n \n \n onEditComment(\n c.local_id\n )\n }\n // disabled={}\n >\n \n \n \n onDeleteComment(\n c.local_id\n )\n }\n title=\"Remove from quote\"\n >\n \n \n \n \n
    \n )}\n \n ))}\n \n \n \n
    \n
    \n )}\n {isJobOwner && !isHaulerFirm && (\n \n \n \n
    Invite Specific Hauler
    \n \n
    \n \n \n Hauling Co\n onReserveHaulerChange(e)} //setJob({ ...job, reservedByOrg: e })}\n currentOrgId={currentUser.currentOrgId}\n value={job.reservedByOrg}\n orgTypeId={\n constants.ORG_TYPE_IDS.HAULER_FIRM\n }\n isClearable={true}\n isDisabled={\n jobReserved ||\n jobScheduled ||\n jobInProgress ||\n jobComplete ||\n jobCancelled\n }\n />\n \n \n Driver{\" \"}\n \n (Optional)\n \n \n setJob({ ...job, driver: event })\n }\n placeholder=\"Not Specified\"\n isClearable\n isDisabled={\n jobReserved ||\n jobScheduled ||\n jobInProgress ||\n jobComplete ||\n jobCancelled\n }\n />\n \n {/* \n \n sendHaulerInvite()}\n disabled={!(job.reservedByOrg)} // && job.driver //\n >\n Send Invite to this Hauler\n \n \n */}\n \n
    \n )}\n {(isJobOwner ||\n currentUser.currentOrgId ===\n job?.reservedByOrg?.value) && (\n \n \n \n {isJobOwner && (\n \n Cancel\n \n )}\n onSaveJob()}\n >\n {isJobOwner\n ? \"Save Job\"\n : \"Save Comments\"}\n \n \n \n \n )}\n \n }\n />\n \n
    \n {jobReserved ||\n jobScheduled ||\n jobInProgress ||\n jobComplete ? (\n \n \n \n \n \n \n \n
    \n Hauler Org: {job?.reservedByOrg?.label}\n
    \n \n
    \n \n \n Contact\n \n \n \n Ph #\n \n \n \n \n \n
    \n {(jobReserved && isHaulerUser) ||\n jobScheduled ||\n jobInProgress ||\n jobComplete ? (\n \n \n \n
    Schedule
    \n \n
    \n \n \n Driver{\" \"}\n {!jobComplete && helpers.requiredStar()}\n \n changeJobSelect(event, \"driver\")\n }\n placeholder=\"Not specified\"\n isDisabled={\n !isHaulerUser ||\n jobInProgress ||\n jobComplete\n }\n value={job.driver}\n />\n \n \n Pickup Date{\" \"}\n {!jobComplete && helpers.requiredStar()}\n
    \n \n onDateChange(\n selected,\n \"estimatedPickupAt\"\n )\n }\n isClearable={isHaulerFirm}\n className=\"form-control\"\n readOnly={\n !isHaulerUser ||\n jobInProgress ||\n jobComplete\n }\n />\n
    \n \n \n {\" \"}\n Est Pickup Time Of Day\n \n setJob({\n ...job,\n estimatedPickupTimeOfDay:\n e.target.value,\n })\n }\n disabled={\n !isHaulerUser ||\n jobInProgress ||\n jobComplete\n }\n />\n \n \n Dropoff Date{\" \"}\n {!jobComplete && helpers.requiredStar()}\n
    \n \n onDateChange(\n selected,\n \"estimatedDropoffAt\"\n )\n }\n isClearable={isHaulerFirm}\n className=\"form-control\"\n disabled={jobComplete}\n readOnly={\n !isHaulerUser ||\n jobInProgress ||\n jobComplete\n }\n />\n
    \n \n \n {\" \"}\n Est Dropoff Time Of Day\n \n setJob({\n ...job,\n estimatedDropoffTimeOfDay:\n e.target.value,\n })\n }\n disabled={\n !isHaulerUser ||\n jobInProgress ||\n jobComplete\n }\n />\n \n
    \n \n \n {isHaulerUser &&\n (jobReserved || jobScheduled) && (\n onScheduleJob()}\n title=\"Save Driver Schedule\"\n >\n {\" \"}\n Save Schedule\n \n )}\n \n \n
    \n ) : null}\n {jobOpen || jobInProgress || jobComplete ? (\n \n \n \n
    Job Progress Details
    \n \n
    \n \n \n Actual Pickup At\n
    \n \n onDateChange(\n selected,\n \"actualPickupAt\"\n )\n }\n isClearable={isHaulerFirm}\n className=\"form-control mr-0 pr-0\"\n disabled={jobComplete}\n readOnly={!isHaulerUser}\n />\n
    \n \n \n \n onTimeChange(\n selected,\n \"actualPickupAtTime\"\n )\n }\n />\n \n \n Actual Dropoff At\n
    \n \n onDateChange(\n selected,\n \"actualDropoffAt\"\n )\n }\n isClearable={isHaulerFirm}\n className=\"form-control mr-0 pr-0\"\n disabled={jobComplete}\n readOnly={!isHaulerUser}\n />\n
    \n \n \n \n onTimeChange(\n selected,\n \"actualDropoffAtTime\"\n )\n }\n />\n \n \n Rig Type Used\n \n onJobRigChange(event)\n }\n placeholder=\"Not specified\"\n isDisabled={\n !isHaulerUser || jobComplete\n }\n />\n \n
    \n {jobMileageAndFuelCostSummary && (\n \n \n showMileages()}\n >{`Mileage: ${jobMileageAndFuelCostSummary.mileageDisplay}`}\n \n \n showFuelCosts()}\n >{`Fuel Costs: ${jobMileageAndFuelCostSummary.fuelCostDisplay}`}\n \n \n )}\n {showMileageModal && (\n setShowMileageModal(false)}\n open={showMileageModal}\n />\n )}\n {showFuelCostsModal && (\n \n setShowFuelCostsModal(false)\n }\n open={showFuelCostsModal}\n />\n )}\n \n \n
    \n {isJobOwner\n ? `Checklist Responses`\n : `Checklist Items Requested`}\n
    \n \n
    \n \n \n \n \n \n Item\n {/* Type */}\n Response\n Required\n \n \n \n {jobChecklistItems &&\n jobChecklistItems.length > 0 &&\n _.map(jobChecklistItems, (item) => (\n \n \n {item.checkListItem\n ? item.checkListItem.prompt\n : \"\"}\n \n {/* {item.checkListItem ? item.checkListItem.checkListItemTypeName : ''} */}\n \n {jobChecklistResponses &&\n jobChecklistResponses.length ? (\n \n ri.jobChecklistItemId ===\n item.id\n )}\n />\n ) : (\n \n )}\n \n \n {item.required ? (\n \n ) : null}\n \n \n ))}\n \n \n \n \n\n {(isJobOwner ||\n currentUser.currentOrgId ===\n job?.reservedByOrg?.value) && (\n \n \n \n )}\n \n {jobInProgress && (\n \n onCompleteJob()}\n >\n {\" \"}\n Complete Job\n \n \n )}\n {jobComplete && job.invoiced && (\n \n \n api.downloadPDF(\n \"job.FinalInvoicePdfURL\"\n )\n }\n // disabled={!draftMode}\n >\n {\" \"}\n Invoice\n \n \n )}\n \n
    \n ) : null}\n \n }\n />\n \n
    \n ) : null}\n \n );\n }\n }}\n
    \n );\n } else {\n return (\n \n \n \n );\n }\n}\n\nconst setAnswer = (\n checklistAnswers,\n clItem,\n value,\n setChecklistAnswers,\n jobChecklistItemId\n) => {\n if (!clItem) return;\n const newValue = {\n value: value,\n checklistItemTypeId: clItem.checkListItemTypeId,\n documentTypeId: clItem.documentTypeId,\n sequence: clItem.seq,\n prompt: clItem.prompt,\n jobChecklistItemId: jobChecklistItemId,\n isRequired: clItem.isRequired,\n };\n setChecklistAnswers({ ...checklistAnswers, [clItem.id]: newValue });\n};\n\nfunction CheckListItem({\n clItem,\n checklistAnswers,\n setChecklistAnswers,\n jobChecklistItemId,\n jobId,\n}) {\n const [addingImage, setAddingImage] = useState(null);\n\n const ItemWrapper = ({ seq, children }) => {\n return (\n \n {children}\n {/* {seq}. {children} */}\n \n );\n };\n\n const value =\n checklistAnswers &&\n checklistAnswers[clItem.id] &&\n (checklistAnswers[clItem.id].value !== null ||\n checklistAnswers[clItem.id].value !== undefined)\n ? checklistAnswers[clItem.id].value\n : \"\";\n\n const previewStyle = {\n display: \"inline\",\n width: 200,\n height: 200,\n };\n\n const prompt = _.truncate(clItem.prompt, { length: 18 });\n\n if (\n constants.CHECKLIST_ITEM_TYPE_IDS.ATTACHMENT === clItem.checkListItemTypeId\n ) {\n return (\n \n
    \n setAddingImage(!addingImage)}\n >\n {addingImage ? (\n \n ) : (\n \n )}{\" \"}\n Images\n \n {addingImage ? (\n \n \n \n \n setAnswer(\n checklistAnswers,\n clItem,\n v,\n setChecklistAnswers,\n jobChecklistItemId\n )\n }\n />\n {value ? (\n \n File to be uploaded\n \n \n \n \n \n \n {\n \n }\n \n \n \n \n setAnswer(\n checklistAnswers,\n clItem,\n null,\n setChecklistAnswers,\n jobChecklistItemId\n )\n }\n >\n \n \n \n \n \n \n \n \n ) : null}\n \n \n \n ) : null}\n
    \n
    \n );\n }\n\n if (\n constants.CHECKLIST_ITEM_TYPE_IDS.BOOLEAN === clItem.checkListItemTypeId\n ) {\n return (\n \n \n setAnswer(\n checklistAnswers,\n clItem,\n e,\n setChecklistAnswers,\n jobChecklistItemId\n )\n }\n checked={typeof value === \"boolean\" ? value : false}\n />\n \n );\n }\n\n if (\n constants.CHECKLIST_ITEM_TYPE_IDS.GPS_COORDINATES ===\n clItem.checkListItemTypeId\n ) {\n return (\n \n Log in to driver app to enter.\n \n );\n }\n\n if (\n constants.CHECKLIST_ITEM_TYPE_IDS.SIGNATURE === clItem.checkListItemTypeId\n ) {\n return (\n \n Log in to driver app to enter.\n \n );\n }\n\n if (constants.CHECKLIST_ITEM_TYPE_IDS.TEXT === clItem.checkListItemTypeId) {\n return (\n \n \n setAnswer(\n checklistAnswers,\n clItem,\n e.target.value,\n setChecklistAnswers,\n jobChecklistItemId\n )\n }\n />\n \n );\n }\n\n if (\n constants.CHECKLIST_ITEM_TYPE_IDS.PAYMENT === clItem.checkListItemTypeId\n ) {\n return (\n \n Log in to driver app to enter.\n \n );\n }\n console.warn(\"No matching render item for CheckListItemType of \" + clItem.id);\n return null;\n}\n\nfunction CheckListResponse({ clResponse }) {\n if (!clResponse) {\n return null;\n }\n\n const ResponseWrapper = ({ children }) => {\n return
    {children}
    ;\n };\n\n if (\n constants.CHECKLIST_ITEM_TYPE_IDS.ATTACHMENT ===\n clResponse.checkListItemTypeId\n ) {\n return (\n \n {clResponse.attachmentResponseSignedUrl ? (\n \n \n \n \n window.open(\n clResponse.attachmentResponseSignedUrl ||\n clResponse.attachmentResponseSignedUrl,\n \"_blank\"\n )\n }\n >\n \n \n \n \n \n ) : (\n
    Attachment
    \n )}\n
    \n );\n }\n\n if (\n constants.CHECKLIST_ITEM_TYPE_IDS.BOOLEAN === clResponse.checkListItemTypeId\n ) {\n return (\n \n
    \n {_.isBoolean(clResponse.boolResponse)\n ? clResponse.boolResponse\n ? \"Yes\"\n : \"No\"\n : \"N/A\"}\n
    \n
    \n );\n }\n\n if (\n constants.CHECKLIST_ITEM_TYPE_IDS.GPS_COORDINATES ===\n clResponse.checkListItemTypeId\n ) {\n return (\n \n
    \n {` ${clResponse.gpsResponseLat}`}, {clResponse.gpsResponseLong}\n
    \n
    \n );\n }\n\n if (\n constants.CHECKLIST_ITEM_TYPE_IDS.SIGNATURE ===\n clResponse.checkListItemTypeId\n ) {\n return (\n \n {clResponse.attachmentResponseSignedUrl ? (\n \n window.open(\n clResponse.attachmentResponseSignedUrl ||\n clResponse.attachmentResponseSignedUrl,\n \"_blank\"\n )\n }\n >\n \n \n ) : (\n
    File not found
    \n )}\n
    \n );\n }\n\n if (\n constants.CHECKLIST_ITEM_TYPE_IDS.TEXT === clResponse.checkListItemTypeId\n ) {\n return (\n \n
    {`${clResponse.textResponse}`}
    \n
    \n );\n }\n console.warn(\n \"No matching render item for CheckListItemType of \" + clResponse.id\n );\n return null;\n}\n","import React, { Fragment, useState, useContext, useEffect } from \"react\";\nimport { Redirect, Link } from \"react-router-dom\";\nimport { Media } from \"react-breakpoints\";\nimport {\n Col,\n Button,\n Row,\n Table,\n ButtonGroup,\n Alert as Alert2,\n Badge,\n UncontrolledTooltip,\n} from \"reactstrap\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport _ from \"lodash\";\n\nimport {\n api,\n constants,\n UserContext,\n filterHelpers,\n helpers,\n dateHelpers,\n} from \"../utils\";\nimport {\n DateFilter,\n FilterText,\n FilterableScreen,\n FilterSet,\n Pager,\n FilterMultiSelect,\n FilterSwitch,\n RatingModule,\n ScheduleModal,\n SHBSpinner,\n} from \"../components\";\nimport { DesktopContainer } from \"../layouts\";\n\nconst getInitialJobStatus = (jobStatusId) => {\n if (!jobStatusId) return null;\n\n const selectedFilter = _.find(\n constants.JOB_STATUSES,\n (x) => x.value === parseInt(jobStatusId, 10)\n );\n\n if (!selectedFilter) return null;\n\n return {\n filterName: \"jobStatusIds\",\n filteredDisplay: `Job Status: ${selectedFilter.label}`,\n labels: [selectedFilter.label],\n value: [selectedFilter.value],\n };\n};\n\nexport default function Jobs(props) {\n const userCtx = useContext(UserContext);\n const currentUser = userCtx.currentUser;\n const isSysAdmin = currentUser.isSysAdmin;\n const isCompany = currentUser.isCompanyUser;\n const isHaulerUser = currentUser.isHaulerUser;\n const isDispatcher =\n currentUser.currentRoleId === constants.ROLE_IDS.DISPATCHER ||\n currentUser.isHaulerAdminUser;\n const isDriver = currentUser.currentRoleId === constants.ROLE_IDS.DRIVER;\n const isCompanyAdmin = currentUser.currentRoleId === constants.ROLE_IDS.COMPANY_ADMIN && isCompany; // admin role can be hauler or company admins\n const isCompanyClerk = currentUser.currentRoleId === constants.ROLE_IDS.COMPANY_CLERK;\n const [message, setMessage] = useState(null);\n const [showScheduleModal, setShowScheduleModal] = useState(false);\n const [loading, setLoading] = useState(false);\n const [redirectToJob, setRedirectToJob] = useState(null);\n const jobStatusId =\n props.computedMatch.params && props.computedMatch.params.jobStatusId\n ? props.computedMatch.params.jobStatusId\n : props.location &&\n props.location.state &&\n props.location.state.jobStatusId\n ? props.location.state.jobStatusId\n : null;\n\n const initialJobStatus = getInitialJobStatus(jobStatusId);\n\n let canAddEditJobs = isCompanyAdmin || isCompanyClerk;\n let isOpenJobSearch = false;\n if (isHaulerUser) {\n isOpenJobSearch = true;\n }\n\n const [paginatedList, setPaginatedList] = useState({\n list: [],\n pageNumber: 1,\n totalPages: 1,\n });\n const [filters, setFilters] = useState(\n initialJobStatus ? [initialJobStatus] : []\n );\n const [pageNumber, setPageNumber] = useState(1);\n const sortField = null;\n const sortDirection = null;\n const [showRatingModal, setShowRatingModal] = useState(false);\n const [jobToRate, setJobToRate] = useState(null);\n const [jobToSchedule, setJobToSchedule] = useState(null);\n useEffect(refreshData, [\n filters,\n pageNumber,\n currentUser.currentOrgId,\n isCompany,\n isOpenJobSearch,\n ]);\n\n function refreshData() {\n setLoading(true);\n let payload = {\n SortField: sortField,\n SortDirection: sortDirection,\n PageNumber: pageNumber,\n IsOpenJobSearch: isOpenJobSearch,\n CurrentOrgId: currentUser.currentOrgId,\n };\n _.each(filters, (filter) => (payload[filter.filterName] = filter.value));\n api\n .post(\"Job/List\", payload)\n .then((response) => {\n setPaginatedList({\n list: _.map(response.data.list, (l) => {\n l.driver = l.driverId\n ? { label: l.driverFullName, value: l.driverId }\n : null;\n l.jobStatusId =\n l.jobStatusId === constants.JOB_STATUS_IDS.RESERVED &&\n !l.underReservationGracePeriod && !currentUser.isSysAdmin && \n l.reservedByOrgId !== currentUser.currentOrgId &&\n !isCompany\n ? constants.JOB_STATUS_IDS.OPEN\n : l.jobStatusId;\n l.jobStatusName =\n l.jobStatusName === constants.JOB_STATUS_NAMES.RESERVED &&\n !l.underReservationGracePeriod && !currentUser.isSysAdmin && \n l.reservedByOrgId !== currentUser.currentOrgId &&\n !isCompany\n ? constants.JOB_STATUS_NAMES.OPEN\n : l.jobStatusName;\n return l;\n }),\n pageNumber: response.data.pageNumber,\n totalPages: response.data.totalPages,\n });\n })\n .catch(helpers.catchHandler)\n .finally(() => setLoading(false));\n }\n\n function onFilterChange(changedFilter) {\n const filterChanges = filterHelpers.getFilters(filters, changedFilter);\n setFilters(filterChanges);\n }\n\n function currentFilterValue(name) {\n const filterElement = _.find(filters, (f) => f.filterName === name);\n if (filterElement) {\n if (filterElement.value) {\n return filterElement.value;\n }\n return filterElement.values;\n }\n return \"\";\n }\n\n function toggleCanceljob(jobId, reviving = false) {\n if (!reviving) {\n if (!window.confirm(`Are you sure you'd like to cancel this job?`))\n return;\n }\n api\n .delete(`Job/ToggleCancelJob/${jobId}`)\n .then((response) => {\n if (response.data.success) {\n refreshData();\n } else {\n if (reviving) {\n setMessage({\n text: \"An error ocurred. Job cannot be revived at this time.\",\n flavor: \"alert-danger\",\n });\n } else {\n setMessage({\n text: \"An error ocurred. Job cannot be canceled at this time.\",\n flavor: \"alert-danger\",\n });\n }\n }\n })\n .catch((error) => {\n if (reviving) {\n setMessage({\n text: \"There was an error reviving this job.\",\n flavor: \"alert-danger\",\n });\n } else {\n setMessage({\n text: \"There was an error cancelling this job.\",\n flavor: \"alert-danger\",\n });\n }\n });\n }\n\n function onReserve(jobId) {\n if (!window.confirm(`Are you sure you'd like to reserve this job?`)) return;\n let payload = {\n JobId: jobId,\n ReservedByOrgId: currentUser.currentOrgId,\n };\n api\n .post(`Job/ReserveJob`, payload)\n .then((response) => {\n if (response.data.success) {\n setMessage({\n text: \"Job was successfully reserved.\",\n flavor: \"alert-success\",\n });\n refreshData();\n } else {\n setMessage({\n text: \"An error ocurred. Job cannot be reserved at this time.\",\n flavor: \"alert-danger\",\n });\n }\n })\n .catch((error) => {\n setMessage({\n text: \"There was an error reserving this job.\",\n flavor: \"alert-danger\",\n });\n });\n }\n\n function onUnreserve(jobId) {\n if (!window.confirm(`Are you sure you'd like to unreserve this job?`))\n return;\n api\n .post(`Job/UnreserveJob/${jobId}`)\n .then((response) => {\n if (response.data.success) {\n setMessage({\n text: \"Job was successfully unreserved.\",\n flavor: \"alert-success\",\n });\n refreshData();\n } else {\n setMessage({\n text: \"An error ocurred. Job cannot be unreserved at this time.\",\n flavor: \"alert-danger\",\n });\n }\n })\n .catch((error) => {\n setMessage({\n text: \"There was an error unreserving this job.\",\n flavor: \"alert-danger\",\n });\n });\n }\n\n function onUnschedule(jobId) {\n if (!window.confirm(`Are you sure you'd like to Unschedule this job?`))\n return;\n api\n .post(`Job/UnscheduleJob/${jobId}`)\n .then((response) => {\n if (response.data.success) {\n setMessage({\n text: \"Job was successfully unscheduled.\",\n flavor: \"alert-success\",\n });\n refreshData();\n } else {\n setMessage({\n text: \"An error ocurred. Job cannot be Unscheduled at this time.\",\n flavor: \"alert-danger\",\n });\n }\n })\n .catch((error) => {\n setMessage({\n text: \"There was an error unscheduling this job.\",\n flavor: \"alert-danger\",\n });\n });\n }\n\n function onSchedule(jobId) {\n const job = _.find(paginatedList.list, (l) => l.id === jobId);\n setJobToSchedule(job);\n setShowScheduleModal(true);\n }\n\n function onRating(jobId) {\n const job = _.find(paginatedList.list, (j) => j.id === jobId);\n setJobToRate(job);\n setShowRatingModal(true);\n }\n\n function onCancelRating() {\n setJobToRate(null);\n setShowRatingModal(false);\n }\n\n function onRatingSuccess() {\n onCancelRating();\n refreshData();\n }\n\n function onScheduleSuccess() {\n setJobToSchedule(null);\n setShowScheduleModal(false);\n refreshData();\n }\n\n function onInProgress(jobId) {\n if (\n !window.confirm(`Are you sure you'd like to set this job as in progress?`)\n )\n return;\n api\n .post(`Job/SetJobInProgressJob/${jobId}`)\n .then((response) => {\n if (response.data.success) {\n setMessage({\n text: \"Job is set to in progress.\",\n flavor: \"alert-success\",\n });\n refreshData();\n } else {\n setMessage({\n text: \"An error ocurred. Job status cannot be changed at this time.\",\n flavor: \"alert-danger\",\n });\n }\n })\n .catch((error) => {\n setMessage({\n text: \"There was an error change the status for this job.\",\n flavor: \"alert-danger\",\n });\n });\n }\n\n return redirectToJob ? (\n \n ) : (\n \n {({ breakpoints, currentBreakpoint }) => {\n switch (currentBreakpoint) {\n case breakpoints.mobile:\n return (\n
    \n \n {props.children}\n \n
    \n );\n case breakpoints.desktop:\n default:\n return (\n \n \n {message ? (\n {message.text}\n ) : null}\n \n \n \n setFilters([])}\n >\n \n \n onFilterChange(e)}\n />\n \n \n onFilterChange(e)}\n options={constants.JOB_TYPES}\n />\n \n \n onFilterChange(e)}\n options={constants.JOB_STATUSES}\n />\n \n {isCompany && (\n \n \n onFilterChange(e)\n }\n />\n \n )}\n \n \n \n onFilterChange(e)}\n />\n \n \n onFilterChange(e)}\n />\n \n \n onFilterChange(e)}\n />\n \n \n onFilterChange(e)}\n />\n \n \n \n \n onFilterChange(e)}\n />\n \n \n onFilterChange(e)}\n />\n \n \n onFilterChange(e)}\n />\n \n \n onFilterChange(e)}\n />\n \n \n onFilterChange(e)}\n />\n \n \n onFilterChange(e)}\n />\n \n \n \n \n \n \n \n \n \n {canAddEditJobs\n ? \n \n \n : null\n }\n \n \n \n \n }\n pager={\n
    \n \n setPageNumber(newPageNumber)\n }\n />\n
    \n }\n >\n \n \n \n \n \n Job #\n \n {/* Pickup Date */}\n Requested By\n Type\n Status\n Origin\n Destination\n {isCompany && Assigned Hauler}\n {isDispatcher && Assigned Driver}\n \n \n \n \n {paginatedList?.list?.length ? (\n _.map(paginatedList.list, (j, index) => (\n setRedirectToJob(j.id)}\n style={{ cursor: \"pointer\" }}\n >\n \n {j.name}\n \n \n {j.isExtreme && (\n \n Extreme\n \n )}\n {j.isPrivateHaulerJob && (\n \n Private\n \n )}\n \n \n {dateHelpers.formatDateToShortDate(\n j.requestedByDate\n )}\n \n \n \n {j.jobTypeName}\n \n \n \n \n {j.jobStatusName}\n \n \n {`${j.fromCity}, ${j.fromStateName} ${j.fromZipCode}`}\n {`${j.toCity}, ${j.toStateName} ${j.toZipCode}`}\n {isCompany && {j.reservedByOrgName}}\n {isDispatcher && {j.driverFullName}}\n \n \n {((isHaulerUser &&\n j.completedByUserId ===\n currentUser.id &&\n !j.ratedByHauler) ||\n (!isHaulerUser &&\n currentUser.currentOrgId ===\n j.orgId &&\n !j.ratedByCompany)) &&\n j.typeOfJobStatus ===\n constants.JOB_STATUS_IDS.COMPLETE && (\n {\n e.stopPropagation();\n onRating(j.id);\n }}\n title=\"Rate\"\n >\n {\" \"}\n \n )}\n {isDispatcher &&\n j.typeOfJobStatus ===\n constants.JOB_STATUS_IDS.SCHEDULED &&\n j.assignedToOrgId ===\n currentUser.currentOrgId && (\n {\n e.stopPropagation();\n onUnschedule(j.id);\n }}\n title=\"Unschedule\"\n >\n {\" \"}\n \n )}\n {isDriver &&\n j.typeOfJobStatus ===\n constants.JOB_STATUS_IDS.SCHEDULED &&\n j.assignedToOrgId ===\n currentUser.currentOrgId &&\n j.driver.value === currentUser.id && (\n {\n e.stopPropagation();\n onInProgress(j.id);\n }}\n title=\"Mark in progress\"\n >\n {\" \"}\n \n )}\n {j.typeOfJobStatus ===\n constants.JOB_STATUS_IDS.RESERVED &&\n isCompany && (\n \n {!j.underReservationGracePeriod && (\n \n \n \n \n This job has not been\n scheduled. The reservation\n grace period for this hauler\n has expired. This job can be\n now be reserved by another\n hauling company.\n \n \n \n )}\n \n )}\n {j.typeOfJobStatus ===\n constants.JOB_STATUS_IDS.RESERVED &&\n j.reservedByOrgId ===\n currentUser.currentOrgId && (\n \n {isDispatcher &&\n !j.underReservationGracePeriod && (\n \n \n \n \n Your reservation grace\n period for this job has\n expired. This job can be\n now be reserved by another\n hauling company. A job\n cannot be reserved by\n another hauling company if\n it is scheduled.\n \n \n \n )}\n {\n e.stopPropagation();\n onSchedule(j.id);\n }}\n title=\"Schedule job\"\n >\n {\" \"}\n \n {\n e.stopPropagation();\n onUnreserve(j.id);\n }}\n title=\"Unreserve\"\n >\n {\" \"}\n \n \n )}\n {isDispatcher &&\n !isDriver &&\n ((!j.underReservationGracePeriod &&\n j.typeOfJobStatus ===\n constants.JOB_STATUS_IDS.RESERVED &&\n j.reservedByOrgId !==\n currentUser.currentOrgId) ||\n j.typeOfJobStatus ===\n constants.JOB_STATUS_IDS.OPEN) && (\n {\n e.stopPropagation();\n onReserve(j.id);\n }}\n title=\"Reserve\"\n >\n {\" \"}\n \n )}\n {(isHaulerUser || isDriver) &&\n j.typeOfJobStatus ===\n constants.JOB_STATUS_IDS.IN_PROGRESS &&\n j.assignedToOrgId ===\n currentUser.currentOrgId && (\n \n \n \n {\" \"}\n \n \n \n )}\n {canAddEditJobs \n ? \n \n \n {\" \"}\n \n \n {j.cancelledAt ? (\n {\n e.stopPropagation();\n toggleCanceljob(j.id, true);\n }}\n title=\"Revive\"\n >\n {\" \"}\n \n ) : (\n \n {j.typeOfJobStatus !==\n constants.JOB_STATUS_IDS\n .COMPLETE && (\n {\n e.stopPropagation();\n toggleCanceljob(j.id);\n }}\n title=\"Cancel\"\n >\n {\" \"}\n \n )}\n \n )}\n \n : null\n }\n \n \n \n ))\n ) : (\n \n No records found\n \n )}\n \n \n \n {showRatingModal && (\n setShowRatingModal(!showRatingModal)}\n job={jobToRate}\n forCompany={isHaulerUser}\n onSuccess={() => onRatingSuccess()}\n />\n )}\n {showScheduleModal && jobToSchedule && (\n \n setShowScheduleModal(!showScheduleModal)\n }\n job={jobToSchedule}\n onSuccess={() => onScheduleSuccess()}\n />\n )}\n \n \n
    \n \n );\n }\n }}\n
    \n );\n}\n","import React, { Fragment, useState, useContext, useEffect } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { Media } from \"react-breakpoints\";\nimport {\n Col,\n Button,\n Row,\n Table,\n ButtonGroup,\n UncontrolledTooltip,\n} from \"reactstrap\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport _ from \"lodash\";\nimport { api, helpers, UserContext, filterHelpers, constants } from \"../utils\";\nimport {\n FilterText,\n FilterableScreen,\n FilterSet,\n FilterSwitch,\n Pager,\n RatingModule,\n} from \"../components\";\nimport { DesktopContainer } from \"../layouts\";\nimport Alert from \"react-s-alert\";\n\nexport default function Organizations(props) {\n const moduleAccess = props?.computedMatch?.params?.module;\n const orgType = props?.computedMatch?.params?.orgType;\n const userCtx = useContext(UserContext);\n const isAdmin =\n moduleAccess === \"admin\" && userCtx.currentUser.includeAdminModule;\n const [paginatedList, setPaginatedList] = useState({\n list: [],\n pageNumber: 1,\n totalPages: 1,\n });\n const [filters, setFilters] = useState([\n { filterName: \"ActiveOnly\", value: true, filteredDisplay: \"Active Only\" },\n { filterName: \"CurrentOrgId\", value: userCtx?.currentUser?.currentOrgId },\n ]);\n const [pageNumber, setPageNumber] = useState(1);\n const orgTypeId =\n props.computedMatch.params && props.computedMatch.params.orgTypeId\n ? props.computedMatch.params.orgTypeId\n : props.location && props.location.state && props.location.state.orgTypeId\n ? props.location.state.orgTypeId\n : null;\n\n useEffect(refreshData, [\n filters,\n pageNumber,\n orgType,\n moduleAccess,\n orgTypeId,\n ]);\n\n function refreshData() {\n let payload = {\n sortField: null,\n sortDirection: null,\n pageNumber: pageNumber,\n };\n if (orgType === \"haulerFirms\" || orgType === \"haulerFirm\") {\n payload.OrgTypeId = constants.ORG_TYPE_IDS.HAULER_FIRM;\n } else {\n if (orgTypeId) {\n payload.OrgTypeId = orgTypeId;\n } else {\n payload.ExceptOrgTypeId = constants.ORG_TYPE_IDS.HAULER_FIRM;\n }\n }\n _.each(filters, (filter) => (payload[filter.filterName] = filter.value));\n api\n .post(\"Org/OrgList\", payload)\n .then((response) => {\n setPaginatedList(response.data);\n })\n .catch(helpers.catchHandler);\n }\n\n function onFilterChange(changedFilter) {\n const filterChanges = filterHelpers.getFilters(filters, changedFilter);\n setFilters(filterChanges);\n }\n\n function currentFilterValue(name) {\n const filterElement = _.find(filters, (f) => f.filterName === name);\n if (filterElement) {\n if (filterElement.value) {\n return filterElement.value;\n }\n return filterElement.values;\n }\n return \"\";\n }\n\n function saveOrgAccess(index, allowAccess) {\n let editList = Object.assign([], paginatedList.list);\n let payload = {\n OrgId: userCtx.currentUser.orgId,\n PartnerOrgId: editList[index].id,\n IsAllowAccess: allowAccess,\n };\n\n api\n .post(\"org/SaveOrgAccess\", payload)\n .then((response) => {\n if (response?.data?.success) {\n Alert.success(\n `Company has been ${\n allowAccess ? \"added to allow list\" : \"blocked\"\n }.`\n );\n refreshData();\n } else {\n Alert.error(response.data.message || \"An error occurred.\");\n }\n })\n .catch((error) => {\n if (props.showError) {\n Alert(`There was an error performing this operation.`);\n } else {\n console.error(error);\n }\n });\n }\n\n function deleteOrgAccess(index, allowAccess) {\n let editList = Object.assign([], paginatedList.list);\n\n let payload = {\n OrgId: userCtx.currentUser.orgId,\n PartnerOrgId: editList[index].id,\n IsAllowAccess: allowAccess,\n };\n\n api\n .post(\"org/DeleteOrgAccess\", payload)\n .then((response) => {\n if (response?.data?.success) {\n Alert.success(\n `Company has been ${\n allowAccess\n ? \"removed from allow list\"\n : \"removed from blocked list\"\n }.`\n );\n refreshData();\n } else {\n Alert.error(response.data.message || \"An error occurred.\");\n }\n })\n .catch((error) => {\n if (props.showError) {\n Alert(`There was an error performing this operation.`);\n } else {\n console.error(error);\n }\n });\n }\n const routePath =\n orgType === \"companies\" ? \"companyProfile\" : \"haulerFirmProfile\";\n return (\n \n {({ breakpoints, currentBreakpoint }) => {\n switch (currentBreakpoint) {\n case breakpoints.mobile:\n return
    {props.children}
    ;\n case breakpoints.desktop:\n default:\n return (\n \n \n \n \n setFilters([])}\n >\n \n \n onFilterChange(e)}\n />\n \n \n onFilterChange(e)}\n />\n \n \n \n \n \n \n \n \n \n \n \n }\n //pager={null} //(
    PAGER
    )\n pager={\n
    \n \n setPageNumber(newPageNumber)\n }\n />\n
    \n }\n >\n \n \n \n \n \n Name\n State\n Type\n Contact\n Email\n Phone\n {isAdmin && (\n \n Registered\n \n \n )}\n \n \n \n {paginatedList.list &&\n paginatedList.list.length > 0 ? (\n _.map(paginatedList.list, (u, index) => {\n return isAdmin ||\n u.status !== \"Pending Registration\" ? (\n \n \n
    \n \n {u.companyName}\n \n
    \n
    \n \n
    \n \n {u.stateName}\n {u.orgTypeName}\n {u.primaryUserFullName}\n \n {u.primaryUserEmail || u.companyEmail}\n \n \n {u.primaryUserPhoneNumber ||\n u.companyPhoneNumber}\n \n {isAdmin ? (\n \n \n {u.status === \"Pending Registration\" ? (\n \n ) : (\n \n )}\n \n \n {u.deactivatedAt ? (\n this.toggleActive(u, \"activate\")}\n >\n {\" \"}\n Revive\n \n ) : (\n this.toggleActive(u, \"deactivate\")}\n >\n {\" \"}\n Deactivate\n \n )}\n \n \n ) : (\n \n \n {u.allowedAccessAt && u.deniedAccessAt && (\n \n \n \n \n {u.companyName} is currently\n listed in the allow and deny\n list for your company. In this\n case your denied list will be\n respected and {u.companyName}{\" \"}\n will NOT have access to jobs\n posted by your company.\n \n \n \n )}\n {u.allowedAccessAt ? (\n \n deleteOrgAccess(index, true)\n }\n title={`Remove ${u.companyName} from having exclusive access to available jobs for your organization`}\n >\n {\" \"}\n \n ) : (\n \n saveOrgAccess(index, true)\n }\n title={`Grant ${u.companyName} exclusive access to available jobs for your organization`}\n disable={u.allowAccessAt}\n >\n {\" \"}\n \n )}\n\n {u.deniedAccessAt ? (\n \n deleteOrgAccess(index, false)\n }\n title={`UnBlock ${u.companyName}`}\n >\n {\" \"}\n \n ) : (\n \n saveOrgAccess(index, false)\n }\n title={`Block ${u.companyName} from working with your organization`}\n disable={u.deniedAccessAt}\n >\n {\" \"}\n \n )}\n \n \n )}\n \n ) : null;\n })\n ) : (\n \n \n No records found\n \n \n )}\n \n \n \n
    \n \n
    \n );\n }\n }}\n \n );\n}\n","import React, { Fragment, useState, useContext, useEffect } from \"react\";\nimport { Link, Redirect } from \"react-router-dom\";\nimport Alert from \"react-s-alert\";\nimport { Media } from \"react-breakpoints\";\nimport {\n Col,\n Button,\n Row,\n ButtonGroup,\n Table,\n Input,\n Alert as Alert2,\n Card,\n CardBody,\n} from \"reactstrap\";\nimport Select from \"react-select\";\nimport Switch from \"react-switch\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport _ from \"lodash\";\nimport DatePicker from \"react-datepicker\";\nimport \"react-datepicker/dist/react-datepicker.css\";\nimport { api, helpers, UserContext, constants, dateHelpers } from \"../utils\";\nimport {\n CollapsibleCardSection,\n TextNotificationModal,\n DocumentUpload,\n DocumentUploader,\n OrgTypeahead,\n SHBSpinner,\n ChecklistImageUpload,\n AddressAutocomplete,\n EstimatedTimeOfDay,\n JobSummaryModal,\n JobDocumentUpload,\n} from \"../components\";\nimport { DesktopContainer } from \"../layouts\";\nimport { GiConsoleController } from \"react-icons/gi\";\n\nconst { JOB_STATUS_NAMES } = constants;\n\nconst emptyJob = {\n id: 0,\n jobType: { value: 6, label: \"RTO Delivery\" },\n referenceNumber: \"\",\n compensationAmountInDollars: \"0\",\n requestedByDate: null,\n scheduledForDate: null,\n pickupContactFirstName: \"\",\n pickupContactLastName: \"\",\n pickupContactPhoneNumber: \"\",\n pickupContactEmail: \"\",\n dropoffContactFirstName: \"\",\n dropoffContactLastName: \"\",\n dropoffContactPhoneNumber: \"\",\n dropoffContactEmail: \"\",\n // unitType: { value: 4, label: \"Utility\" },\n manufacturer: \"\",\n serialNumber: \"\",\n // unitStyle: null,\n // unitMaterial: { value: 4, label: \"Wood\" },\n lengthInFeet: \"\",\n widthInFeet: \"\",\n heightInFeet: \"\",\n roofColor: { value: 1, label: \"Blue\" },\n wallColor: { value: 1, label: \"Blue\" },\n trimColor: { value: 1, label: \"Blue\" },\n otherRoofColor: \"\",\n otherWallColor: \"\",\n otherTrimColor: \"\",\n note: \"\",\n jobStatus: { value: 2, label: JOB_STATUS_NAMES.RESERVED },\n estimatedPickupTimeOfDay: null\n //orgId: currentUser ? currentUser.orgId : null\n};\n\nexport default function PrivateJob(props) {\n const userCtx = useContext(UserContext);\n const currentUser = userCtx.currentUser;\n const userOrgId = userCtx.currentUser.currentOrgId;\n const isCompanyUser = userCtx.currentUser.isCompanyUser;\n const isHaulerFirm =\n userCtx.currentUser.isHaulerAdminUser ||\n userCtx.currentUser.isDispatcherUser;\n const isHaulerUser = userCtx.currentUser.isHaulerUser;\n\n const privateJobId =\n props &&\n props.computedMatch &&\n props.computedMatch.params &&\n props.computedMatch.params.id\n ? parseInt(props.computedMatch.params.id, 10)\n : 0;\n\n const [job, setJob] = useState({\n ...emptyJob,\n orgId: currentUser ? currentUser.orgId : null,\n createdByOrgPrimaryContactFirstName: userCtx.currentUser.firstName,\n createdByOrgPrimaryContactLastName: userCtx.currentUser.lastName,\n createdByOrgPrimaryContactNumber: userCtx.currentUser.phoneNumber,\n createdByOrgEmail: userCtx.currentUser.email,\n });\n\n const [showScheduleInfo, setShowScheduleInfo] = useState(false);\n const [driversList, setDriversList] = useState(null);\n // const [driverOptions, setDriverOptions] = useState([]);\n // const [orgRigs, setOrgRigs] = useState([]);\n const [message, setMessage] = useState(null);\n const [jobTypeList, setJobTypeList] = useState([]);\n const [stateList, setStateList] = useState([]);\n // const [unitTypeList, setUnitTypeList] = useState([]);\n // const [unitStyleList, setUnitStyleList] = useState([]);\n // const [unitMaterialList, setUnitMaterialList] = useState([]);\n const [unitColorList, setUnitColorList] = useState([]);\n const [loading, setLoading] = useState(false);\n // const [jobRigs, setJobRigs] = useState([]);\n const [typeaheadFromAddress, setTypeaheadFromAddress] = useState(\"\");\n const [typeaheadToAddress, setTypeaheadToAddress] = useState(\"\");\n const [redirect, setRedirect] = useState(false);\n const [jobComplete, setJobComplete] = useState(false);\n const [fromAddress, setFromAddress] = useState({\n fromStreetAddress1: \"\",\n fromStreetAddress2: \"\",\n fromCity: \"\",\n fromState: null,\n fromZipCode: \"\",\n pickupLat: null,\n pickupLong: null,\n });\n const [toAddress, setToAddress] = useState({\n toAddress1: \"\",\n toAddress2: \"\",\n toCity: \"\",\n toState: null,\n toZipCode: \"\",\n dropoffLat: null,\n dropoffLong: null,\n });\n const [newDocumentsToUpload, setNewDocumentsToUpload] = useState([]);\n\n const getPrivateJobDocuments = () =>\n api.fetch(`Job/GetPrivateJobDocuments/${privateJobId}`).then((r) => {\n const jobEdit = Object.assign({}, job);\n jobEdit.documents = r.data;\n setJob(jobEdit);\n });\n\n\n useEffect(() => {\n // load job data\n setLoading(true);\n\n const getJob = () =>\n api.fetch(`Job/GetPrivateJob/${privateJobId}`).then((r) => ({\n job: r.data,\n }));\n\n let apiCalls = [];\n if (privateJobId > 0) {\n apiCalls.push(getJob());\n }\n apiCalls.push(api.getJobTypes());\n apiCalls.push(api.getStates());\n apiCalls.push(api.getUnitTypes());\n apiCalls.push(api.getUnitStyles());\n apiCalls.push(api.getUnitMaterials());\n apiCalls.push(api.getUnitColors());\n apiCalls.push(api.getOrgDrivers(userOrgId));\n // if (isHaulerUser) {\n // apiCalls.push(getRigs());\n // apiCalls.push(getHaulerDrivers());\n // }\n Promise.all(apiCalls)\n .then((arrayResults) => {\n let aggResults = {};\n _.each(arrayResults, (x) => Object.assign(aggResults, x));\n const tempJob = aggResults.job\n ? Object.assign({}, aggResults.job)\n : null;\n if (tempJob) {\n let formattedJob = {\n id: tempJob.id,\n // orgId: tempJob.orgId,\n // orgName: tempJob.orgName,\n jobStatus: helpers.resolveValue(\n null,\n tempJob.jobStatusId,\n tempJob.jobStatusName\n ),\n assignedDriverId: tempJob.assignedDriverId,\n estimatedPickupTimeOfDay: tempJob.estimatedPickupTimeOfDay,\n jobType: _.find(constants.JOB_TYPES, jt => jt.value === tempJob.jobTypeId),\n referenceNumber: helpers.nullableString(tempJob.referenceNumber),\n compensationAmountInDollars: tempJob.compensationAmountInDollars,\n requestedByDate: dateHelpers.dateFormatForClient(tempJob.requestedByDate),\n scheduledForDate: dateHelpers.dateFormatForClient(tempJob.scheduledForDate),\n pickupContactFirstName: helpers.nullableString(tempJob.pickupContactFirstName),\n pickupContactLastName: helpers.nullableString(tempJob.pickupContactLastName),\n pickupContactPhoneNumber: helpers.nullableString(tempJob.pickupContactPhoneNumber),\n pickupContactEmail: helpers.nullableString(tempJob.pickupContactEmail),\n dropoffContactFirstName: helpers.nullableString(tempJob.dropoffContactFirstName),\n dropoffContactLastName: helpers.nullableString(tempJob.dropoffContactLastName),\n dropoffContactPhoneNumber: helpers.nullableString(tempJob.dropoffContactPhoneNumber),\n dropoffContactEmail: helpers.nullableString(tempJob.dropoffContactEmail),\n // unitType: helpers.resolveValue(\n // null,\n // tempJob.unitTypeId,\n // tempJob.unitTypeName\n // ),\n manufacturer: helpers.nullableString(tempJob.manufacturer),\n serialNumber: helpers.nullableString(tempJob.serialNumber),\n // unitStyle: helpers.resolveValue(\n // null,\n // tempJob.unitStyleId,\n // tempJob.unitStyleName\n // ),\n // unitMaterial: helpers.resolveValue(\n // null,\n // tempJob.unitMaterialId,\n // tempJob.unitMaterialName\n // ),\n lengthInFeet: tempJob.lengthInFeet?.toFixed(2),\n widthInFeet: tempJob.widthInFeet?.toFixed(2),\n heightInFeet: tempJob.heightInFeet?.toFixed(2),\n wallColor: helpers.resolveValue(\n null,\n tempJob.wallColorId,\n tempJob.wallColorName\n ),\n trimColor: helpers.resolveValue(\n null,\n tempJob.trimColorId,\n tempJob.trimColorName\n ),\n roofColor: helpers.resolveValue(\n null,\n tempJob.roofColorId,\n tempJob.roofColorName\n ),\n otherRoofColor: helpers.nullableString(tempJob.otherRoofColor),\n otherWallColor: helpers.nullableString(tempJob.otherWallColor),\n otherTrimColor: helpers.nullableString(tempJob.otherTrimColor),\n note: helpers.nullableString(tempJob.note),\n documents: tempJob.documents\n };\n setJob(formattedJob);\n if (formattedJob.jobStatus.label === constants.JOB_STATUS_NAMES.SCHEDULED\n || formattedJob.jobStatus.label === constants.JOB_STATUS_NAMES.COMPLETE) {\n setShowScheduleInfo(true);\n }\n setJobComplete(tempJob.completedAt ? true : false);\n setFromAddress({\n fromStreetAddress1: helpers.nullableString(tempJob.fromStreetAddress1),\n fromStreetAddress2: helpers.nullableString(tempJob.fromStreetAddress2),\n fromCity: helpers.nullableString(tempJob.fromCity),\n fromZipCode: helpers.nullableString(tempJob.fromZipCode),\n fromState: helpers.resolveValue(\n null,\n tempJob.fromStateId,\n tempJob.fromStateAbbr\n ),\n pickupLat: tempJob.pickupLat,\n pickupLong: tempJob.pickupLong,\n });\n setToAddress({\n toAddress1: helpers.nullableString(tempJob.toAddress1),\n toAddress2: helpers.nullableString(tempJob.toAddress2),\n toCity: helpers.nullableString(tempJob.toCity),\n toZipCode: helpers.nullableString(tempJob.toZipCode),\n toState: helpers.resolveValue(\n null,\n tempJob.toStateId,\n tempJob.toStateAbbr\n ),\n dropoffLat: tempJob.dropoffLat,\n dropoffLong: tempJob.dropoffLong,\n });\n } else {\n if (aggResults.orgPrimaryUser) {\n setJob({\n ...job,\n createdByOrgPrimaryContactFirstName:\n aggResults.orgPrimaryUser.firstName,\n createdByOrgPrimaryContactLastName:\n aggResults.orgPrimaryUser.lastName,\n });\n }\n }\n setJobTypeList(aggResults.jobTypes);\n setStateList(aggResults.states);\n // setUnitTypeList(aggResults.unitTypes);\n // setUnitStyleList(aggResults.unitStyles);\n // setUnitMaterialList(aggResults.unitMaterials);\n setUnitColorList(aggResults.unitColors);\n if (tempJob) {\n // job already exists\n // setJobRigs(aggResults.jobRigs);\n } else {\n // new job\n }\n if (aggResults.drivers) {\n setDriversList(aggResults.drivers);\n }\n })\n\n .catch((error) => {\n console.log('error', error);\n setMessage({\n flavor: \"alert-danger\",\n text: \"There was an error loading job data.\",\n });\n })\n .finally(() => setLoading(false));\n }, [isCompanyUser, isHaulerUser, userOrgId, privateJobId]);\n\n function onChangeJobType(selection) {\n const jobEdit = Object.assign({}, job);\n jobEdit.jobType = selection;\n setJob(jobEdit);\n }\n\n function changeJobField(e) {\n const jobEdit = Object.assign({}, job);\n jobEdit[e.target.name] = e.target.value;\n setJob(jobEdit);\n }\n\n function onDateChange(selected, field) {\n const editJob = Object.assign({}, job);\n editJob[field] = selected;\n setJob(editJob);\n }\n\n function changeJobSelect(selection, label) {\n const jobEdit = Object.assign({}, job);\n jobEdit[label] = selection;\n setJob(jobEdit);\n }\n\n function convertDocToFormData(doc, jobId) {\n const formData = new FormData();\n formData.append(\"file\", doc.file);\n formData.append(\"orgId\", doc.orgId);\n formData.append(\"jobId\", jobId);\n formData.append(\"id\", doc.id);\n formData.append(\"documentTypeId\", doc.documentTypeId);\n return formData;\n }\n\n const uploadAllDocuments = (documents, jobId) => {\n return new Promise(async (resolve, reject) => {\n let allUploaded = true;\n for (let doc of documents) {\n // each document upload will happen one at a time. Might need to change this to allow to run parallelly in future\n let formData = convertDocToFormData(doc, jobId)\n await api\n .post_form_data(\"Job/SavePrivateJobDocument\", formData)\n .then((response) => {\n if (response.data && response.data.success) {\n // on success ?\n } else {\n allUploaded = false;\n }\n\n })\n .catch(() => allUploaded = false)\n }\n if (allUploaded) resolve(\"All uploaded\");\n else reject(\"All documents could not be uploaded\");\n })\n }\n\n function objectToFormData(obj, rootName, ignoreList) {\n var formData = new FormData();\n\n function appendFormData(data, root) {\n if (!ignore(root)) {\n root = root || \"\";\n if (data instanceof File || root.endsWith(\"File\")) {\n //TODO\n // if (data instanceof File || (data && data.uri && data.name && data.type)) {\n formData.append(root, data);\n } else if (Array.isArray(data)) {\n for (var i = 0; i < data.length; i++) {\n appendFormData(data[i], root + \"[\" + i + \"]\");\n }\n } else if (typeof data === \"object\" && data) {\n for (var key in data) {\n if (data.hasOwnProperty(key)) {\n if (root === \"\") {\n appendFormData(data[key], key);\n } else {\n appendFormData(data[key], root + \".\" + key);\n }\n }\n }\n } else {\n if (data !== null && typeof data !== \"undefined\") {\n formData.append(root, data);\n }\n }\n }\n }\n\n function ignore(root) {\n return (\n Array.isArray(ignoreList) &&\n ignoreList.some(function (x) {\n return x === root;\n })\n );\n }\n\n appendFormData(obj, rootName);\n\n return formData;\n }\n\n function onSaveJob() {\n window.scroll(0, 0);\n let warnings = [];\n if (!job.jobStatus) {\n warnings.push(\"Valid job status is required.\"); // in case of bad data\n }\n if (!job.jobType) {\n warnings.push(\"Valid job type is required.\"); // in case of bad data\n }\n if (!fromAddress.fromStreetAddress1) {\n warnings.push(\"Valid origin address is required.\");\n }\n if (!fromAddress.fromCity) {\n warnings.push(\"Valid origin city is required.\");\n }\n if (!fromAddress.fromState) {\n warnings.push(\"Valid origin state is required.\");\n }\n if (!fromAddress.fromZipCode) {\n warnings.push(\"Valid origin zip code is required.\");\n }\n if (!toAddress.toAddress1) {\n warnings.push(\"Valid destination address is required.\");\n }\n if (!toAddress.toCity) {\n warnings.push(\"Valid destination city is required.\");\n }\n if (!toAddress.toState) {\n warnings.push(\"Valid destination state is required.\");\n }\n if (!toAddress.toZipCode) {\n warnings.push(\"Valid destination zip code is required.\");\n }\n if (!job.manufacturer || _.trim(job.manufacturer).length < 2) {\n warnings.push(\"Please provide a valid manufacturer.\");\n }\n if (!job.lengthInFeet) {\n warnings.push(\"Building length in feet is required.\");\n }\n if (!job.widthInFeet) {\n warnings.push(\"Building width in feet is required.\");\n }\n if (!job.heightInFeet) {\n warnings.push(\"Building height in feet is required.\");\n }\n if (showScheduleInfo) {\n if (!job.assignedDriverId) {\n warnings.push(\"Please assign a driver to the schedule.\");\n }\n if (!job.estimatedPickupTimeOfDay) {\n warnings.push(\"Please select an estimated pickup time.\");\n }\n if (!job.scheduledForDate) {\n warnings.push(\"Please select a schedule date.\");\n }\n }\n\n if (warnings.length) {\n setMessage({\n text: warnings.join(\" \"),\n flavor: \"alert-danger\",\n });\n return;\n } else {\n setMessage(null);\n }\n let payload = {\n id: job.id,\n orgId: job.orgId ? job.orgId : userOrgId,\n typeOfJobStatus: job.jobStatus.value,\n jobTypeId: job.jobType.value,\n referenceNumber: job.referenceNumber,\n compensationAmount: Number(job.compensationAmountInDollars),\n requestedByDate: dateHelpers.formatDateForServer(job.requestedByDate),\n scheduledForDate: dateHelpers.formatDateForServer(job.scheduledForDate),\n pickupContactFirstName: job.pickupContactFirstName,\n pickupContactLastName: job.pickupContactLastName,\n pickupContactPhoneNumber: job.pickupContactPhoneNumber,\n pickupContactEmail: job.pickupContactEmail,\n dropoffContactFirstName: job.dropoffContactFirstName,\n dropoffContactLastName: job.dropoffContactLastName,\n dropoffContactPhoneNumber: job.dropoffContactPhoneNumber,\n dropoffContactEmail: job.dropoffContactEmail,\n fromStreetAddress1: fromAddress.fromStreetAddress1,\n fromStreetAddress2: fromAddress.fromStreetAddress2,\n fromCity: fromAddress.fromCity,\n fromStateId: fromAddress.fromState ? fromAddress.fromState.value : null,\n fromZipCode: fromAddress.fromZipCode,\n // pickupLat: fromAddress.pickupLat ? fromAddress.pickupLat : null,\n // pickupLong: fromAddress.pickupLong ? fromAddress.pickupLong : null,\n toAddress1: toAddress.toAddress1,\n toAddress2: toAddress.toAddress2,\n toCity: toAddress.toCity,\n toStateId: toAddress.toState ? toAddress.toState.value : null,\n toZipCode: toAddress.toZipCode,\n dropoffLat: toAddress.dropoffLat ? toAddress.dropoffLat : null,\n dropoffLong: toAddress.dropoffLong ? toAddress.dropoffLong : null,\n // unitTypeId: job.unitType.value,\n manufacturer: job.manufacturer,\n serialNumber: job.serialNumber,\n // unitStyleId:\n // job.unitStyle && job.unitStyle.value ? job.unitStyle.value : null,\n // unitMaterialId: job.unitMaterial.value,\n lengthInFeet: job.lengthInFeet,\n widthInFeet: job.widthInFeet,\n heightInFeet: job.heightInFeet,\n wallColorId: job.wallColor.value,\n trimColorId: job.trimColor.value,\n roofColorId: job.roofColor.value,\n estimatedPickupTimeOfDay: job.estimatedPickupTimeOfDay,\n assignedDriverId: job.assignedDriverId,\n otherWallColor: job.wallColor.value == constants.COLOR_IDS.OTHER ? job.otherWallColor : null,\n otherTrimColor: job.trimColor.value == constants.COLOR_IDS.OTHER ? job.otherTrimColor : null,\n otherRoofColor: job.roofColor.value == constants.COLOR_IDS.OTHER ? job.otherRoofColor : null,\n note: job.note\n };\n\n if (showScheduleInfo) {\n payload.typeOfJobStatus = constants.JOB_STATUS_IDS.SCHEDULED\n }\n if (!showScheduleInfo && !payload.assignedDriverId) {\n payload.assignedDriverId = currentUser.id\n }\n if (!showScheduleInfo && !payload.estimatedPickupTimeOfDay) {\n payload.estimatedPickupTimeOfDay = \"AM\"\n }\n\n let formPayload = objectToFormData(payload, null, []);\n\n api\n .post(\"Job/SavePrivateJob\", formPayload)\n .then((response) => {\n if (response.data && response.data.success) {\n uploadAllDocuments(newDocumentsToUpload, response.data.message.id).then((response) => {\n setMessage({\n text: \"Private Job has been updated successfully! You will be redirected momentarily.\",\n flavor: \"alert-success\",\n });\n setTimeout(() => {\n setRedirect(true);\n }, 2000);\n })\n .catch((error) => {\n setMessage({ text: error, flavor: \"alert-danger\" });\n\n });\n } else {\n setMessage({ text: response.data.message, flavor: \"alert-danger\" });\n }\n })\n .catch(helpers.catchHandler);\n }\n\n\n\n if (redirect) {\n return ;\n }\n\n if (!loading) {\n return (\n \n {({ breakpoints, currentBreakpoint }) => {\n switch (currentBreakpoint) {\n case breakpoints.mobile:\n return
    {props.children}
    ;\n case breakpoints.desktop:\n default:\n return (\n 0 ? (\n \n {`Private Job #${privateJobId}`} \n \n \n {job.jobStatus ? job.jobStatus.label : null}\n \n \n \n ) : (\n `New Private Job`\n )\n }\n >\n {message ? (\n {message.text}\n ) : null}\n \n \n \n \n \n Job Type {helpers.requiredStar()}\n onChangeJobType(event)}\n isDisabled={jobComplete}\n />\n \n \n PO or Reference # (optional)\n changeJobField(event)}\n value={job.referenceNumber}\n className=\"form-control\"\n maxLength=\"255\"\n disabled={jobComplete}\n />\n \n \n Compensation Amount\n changeJobField(event)}\n value={job.compensationAmountInDollars}\n className=\"form-control\"\n disabled={jobComplete}\n />\n \n \n Requested By\n
    \n \n onDateChange(e, \"requestedByDate\")\n }\n disabled={jobComplete}\n />\n
    \n \n
    \n \n \n
    Pickup Contact Information
    \n \n
    \n \n \n Pickup Contact First Name\n changeJobField(event)}\n value={job.pickupContactFirstName}\n className=\"form-control\"\n disabled={jobComplete}\n maxLength=\"50\"\n />\n \n \n Pickup Contact Last Name\n changeJobField(event)}\n value={job.pickupContactLastName}\n className=\"form-control\"\n disabled={jobComplete}\n maxLength=\"50\"\n />\n \n \n Pickup Contact Phone Number\n changeJobField(event)}\n value={job.pickupContactPhoneNumber}\n className=\"form-control\"\n disabled={jobComplete}\n maxLength=\"12\"\n />\n \n \n Pickup Contact Email\n changeJobField(event)}\n value={job.pickupContactEmail}\n className=\"form-control\"\n disabled={jobComplete}\n maxLength=\"320\"\n />\n \n \n \n \n
    Dropoff Contact Information
    \n \n
    \n \n \n Dropoff Contact First Name\n changeJobField(event)}\n value={job.dropoffContactFirstName}\n className=\"form-control\"\n disabled={jobComplete}\n maxLength=\"50\"\n />\n \n \n Dropoff Contact Last Name\n changeJobField(event)}\n value={job.dropoffContactLastName}\n className=\"form-control\"\n disabled={jobComplete}\n maxLength=\"50\"\n />\n \n \n Dropoff Contact Phone Number\n changeJobField(event)}\n value={job.dropoffContactPhoneNumber}\n className=\"form-control\"\n disabled={jobComplete}\n maxLength=\"12\"\n />\n \n \n Dropoff Contact Email\n changeJobField(event)}\n value={job.dropoffContactEmail}\n className=\"form-control\"\n disabled={jobComplete}\n maxLength=\"320\"\n />\n \n \n \n \n \n \n
    \n Origin Address {helpers.requiredStar()}\n
    \n \n
    \n \n \n \n setTypeaheadFromAddress(e.target.value)\n }\n disabled={jobComplete}\n getAddressInfo={({\n city,\n streetNumber,\n route,\n zip,\n lat,\n lng,\n stateAbbr,\n }) => {\n let tempState = null;\n\n if (stateAbbr) {\n tempState = _.find(\n stateList,\n (s) => s.label === stateAbbr\n );\n }\n\n setFromAddress({\n ...fromAddress,\n fromStreetAddress1: `${streetNumber} ${route}`,\n fromCity: city,\n fromZipCode: zip,\n pickupLat: lat,\n pickupLong: lng,\n fromState: tempState,\n });\n setTypeaheadFromAddress(\"\");\n }}\n />\n \n \n \n \n \n \n setFromAddress({\n ...fromAddress,\n fromStreetAddress1: e.target.value,\n })\n }\n value={fromAddress.fromStreetAddress1}\n className=\"form-control\"\n placeholder=\"Address\"\n disabled={jobComplete}\n maxLength=\"255\"\n />\n \n \n \n \n \n setFromAddress({\n ...fromAddress,\n fromStreetAddress2: e.target.value,\n })\n }\n value={fromAddress.fromStreetAddress2}\n className=\"form-control\"\n placeholder=\"Address Line 2 (optional)\"\n disabled={jobComplete}\n maxLength=\"255\"\n />\n \n \n \n \n \n \n setFromAddress({\n ...fromAddress,\n fromCity: e.target.value,\n })\n }\n value={fromAddress.fromCity}\n className=\"form-control\"\n placeholder=\"City\"\n disabled={jobComplete}\n maxLength=\"255\"\n />\n \n \n \n setFromAddress({\n ...fromAddress,\n fromState: x,\n })\n }\n isDisabled={jobComplete}\n />\n \n \n \n setFromAddress({\n ...fromAddress,\n fromZipCode: e.target.value,\n })\n }\n value={fromAddress.fromZipCode}\n className=\"form-control\"\n placeholder=\"Zip\"\n disabled={jobComplete}\n maxLength=\"11\"\n />\n \n \n \n \n \n \n
    \n Destination Address{\" \"}\n {helpers.requiredStar()}\n
    \n \n
    \n \n \n \n setTypeaheadToAddress(e.target.value)\n }\n disabled={jobComplete}\n getAddressInfo={({\n city,\n streetNumber,\n route,\n zip,\n lat,\n lng,\n stateAbbr,\n }) => {\n let tempState = null;\n\n if (stateAbbr) {\n tempState = _.find(\n stateList,\n (s) => s.label === stateAbbr\n );\n }\n\n setToAddress({\n ...toAddress,\n toAddress1: `${streetNumber} ${route}`,\n toCity: city,\n toZipCode: zip,\n dropoffLat: lat,\n dropoffLong: lng,\n toState: tempState || null,\n });\n setTypeaheadToAddress(\"\");\n }}\n />\n \n \n \n \n \n \n setToAddress({\n ...toAddress,\n toAddress1: e.target.value,\n })\n }\n value={toAddress.toAddress1}\n className=\"form-control\"\n placeholder=\"Address\"\n disabled={jobComplete}\n maxLength=\"255\"\n />\n \n \n \n \n \n setToAddress({\n ...toAddress,\n toAddress2: e.target.value,\n })\n }\n value={toAddress.toAddress2}\n className=\"form-control\"\n placeholder=\"Address Line 2 (optional)\"\n disabled={jobComplete}\n maxLength=\"255\"\n />\n \n \n \n \n \n \n setToAddress({\n ...toAddress,\n toCity: e.target.value,\n })\n }\n value={toAddress.toCity}\n className=\"form-control\"\n placeholder=\"City\"\n disabled={jobComplete}\n maxLength=\"255\"\n />\n \n \n \n setToAddress({\n ...toAddress,\n toState: x,\n })\n }\n isDisabled={jobComplete}\n />\n \n \n \n setToAddress({\n ...toAddress,\n toZipCode: e.target.value,\n })\n }\n value={toAddress.toZipCode}\n className=\"form-control\"\n placeholder=\"Zip\"\n disabled={jobComplete}\n maxLength=\"11\"\n />\n \n \n \n
    \n \n \n
    Building Information
    \n \n
    \n \n {/* \n Unit Type {helpers.requiredStar()}\n \n changeJobSelect(event, \"unitType\")\n }\n isDisabled={jobComplete}\n />\n */}\n \n Manufacturer {helpers.requiredStar()}\n changeJobField(event)}\n value={job.manufacturer}\n className=\"form-control\"\n disabled={jobComplete}\n maxLength=\"255\"\n />\n \n \n Serial # (optional)\n changeJobField(event)}\n value={job.serialNumber}\n className=\"form-control\"\n disabled={jobComplete}\n maxLength=\"255\"\n />\n \n {/* \n Style (optional)\n \n changeJobSelect(event, \"unitStyle\")\n }\n isDisabled={jobComplete}\n />\n */}\n \n \n {/* \n Material {helpers.requiredStar()}\n \n changeJobSelect(event, \"unitMaterial\")\n }\n isDisabled={jobComplete}\n />\n */}\n \n Length (ft) {helpers.requiredStar()}\n changeJobField(event)}\n value={job.lengthInFeet}\n className=\"form-control\"\n disabled={jobComplete}\n />\n \n \n Width (ft) {helpers.requiredStar()}\n changeJobField(event)}\n value={job.widthInFeet}\n className=\"form-control\"\n disabled={jobComplete}\n />\n \n \n Height (ft) {helpers.requiredStar()}\n changeJobField(event)}\n value={job.heightInFeet}\n className=\"form-control\"\n disabled={jobComplete}\n />\n \n \n \n \n Wall Color {helpers.requiredStar()}\n \n changeJobSelect(event, \"wallColor\")\n }\n isDisabled={jobComplete}\n />\n \n \n Roof Color {helpers.requiredStar()}\n \n changeJobSelect(event, \"roofColor\")\n }\n isDisabled={jobComplete}\n />\n \n \n Trim Color {helpers.requiredStar()}\n \n changeJobSelect(event, \"trimColor\")\n }\n isDisabled={jobComplete}\n />\n \n \n \n \n {job.wallColor?.value == constants.COLOR_IDS.OTHER\n ? changeJobField(event)}\n value={job.otherWallColor}\n className=\"form-control\"\n disabled={jobComplete}\n maxLength=\"75\"\n />\n : null\n }\n \n \n {job.roofColor?.value == constants.COLOR_IDS.OTHER\n ? changeJobField(event)}\n value={job.otherRoofColor}\n className=\"form-control\"\n disabled={jobComplete}\n maxLength=\"75\"\n />\n : null\n }\n \n \n {job.trimColor?.value == constants.COLOR_IDS.OTHER\n ? changeJobField(event)}\n value={job.otherTrimColor}\n className=\"form-control\"\n disabled={jobComplete}\n maxLength=\"75\"\n />\n : null\n }\n \n \n \n \n
    Notes
    \n \n
    \n \n \n changeJobField(event)}\n value={job.note}\n className=\"form-control\"\n maxLength=\"500\"\n disabled={jobComplete}\n />\n \n \n \n \n Add Scheduling Info?\n \n setShowScheduleInfo(!showScheduleInfo)\n }\n checked={showScheduleInfo}\n //disabled={isHaulerUser}\n />\n \n \n {\n showScheduleInfo\n ? <>\n \n \n
    Notes
    \n \n
    \n \n \n Assigned Driver {helpers.requiredStar()}\n d.value === job.assignedDriverId)}\n name=\"driver\"\n options={driversList}\n onChange={(e) =>\n setJob({ ...job, assignedDriverId: e.value })\n }\n isDisabled={jobComplete}\n />\n \n \n Scheduled For\n
    \n \n onDateChange(e, \"scheduledForDate\")\n }\n disabled={jobComplete}\n />\n
    \n \n \n Estimated Pickup Time Of Day {helpers.requiredStar()}\n setJob({ ...job, estimatedPickupTimeOfDay: e.target.value })\n }\n disabled={jobComplete}\n />\n \n
    \n \n : null\n }\n {/* Private Job Document Upload */}\n \n \n \n \n \n\n {/* \n {jobInProgress && (\n \n onCompleteJob()}\n >\n {\" \"}\n Complete Job\n \n \n )}\n */}\n \n \n \n \n Cancel\n \n {jobComplete\n ? null\n : onSaveJob()}\n >\n Save Job\n \n }\n \n \n \n \n }\n />\n \n
    \n\n\n \n );\n }\n }}\n
    \n );\n } else {\n return (\n \n \n \n );\n }\n}\n\n","import React, { Fragment, useState, useContext, useEffect } from \"react\";\nimport { Redirect, Link } from \"react-router-dom\";\nimport { Media } from \"react-breakpoints\";\nimport {\n Col,\n Button,\n Row,\n Table,\n ButtonGroup,\n Alert as Alert2,\n Badge,\n UncontrolledTooltip,\n} from \"reactstrap\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport _ from \"lodash\";\n\nimport {\n api,\n constants,\n UserContext,\n filterHelpers,\n helpers,\n dateHelpers,\n} from \"../utils\";\nimport {\n DateFilter,\n FilterText,\n FilterableScreen,\n FilterSet,\n Pager,\n FilterMultiSelect,\n FilterSwitch,\n SHBSpinner,\n ScheduleModal\n} from \"../components\";\nimport { DesktopContainer } from \"../layouts\";\n\nexport default function PrivateJobs(props) {\n const userCtx = useContext(UserContext);\n const currentUser = userCtx.currentUser;\n const isSysAdmin = currentUser.isSysAdmin;\n const isCompany = currentUser.isCompanyUser;\n const isHaulerUser = currentUser.isHaulerUser;\n const isDispatcher =\n currentUser.currentRoleId === constants.ROLE_IDS.DISPATCHER ||\n currentUser.isHaulerAdminUser;\n const isDriver = currentUser.currentRoleId === constants.ROLE_IDS.DRIVER;\n const [message, setMessage] = useState(null);\n const [showScheduleModal, setShowScheduleModal] = useState(false);\n const [loading, setLoading] = useState(false);\n const [redirectToJob, setRedirectToJob] = useState(null);\n const [jobToSchedule, setJobToSchedule] = useState(null);\n\n let hideJobEditButtons = isHaulerUser || isSysAdmin;\n let isOpenJobSearch = false;\n if (isHaulerUser) {\n isOpenJobSearch = true;\n }\n\n const [paginatedList, setPaginatedList] = useState({\n list: [],\n pageNumber: 1,\n totalPages: 1,\n });\n const [filters, setFilters] = useState([]);\n const [pageNumber, setPageNumber] = useState(1);\n const sortField = null;\n const sortDirection = null;\n\n useEffect(refreshData, [\n filters,\n pageNumber,\n currentUser.currentOrgId,\n isCompany,\n isOpenJobSearch,\n ]);\n\n function refreshData() {\n setLoading(true);\n let payload = {\n SortField: sortField,\n SortDirection: sortDirection,\n PageNumber: pageNumber,\n IsOpenJobSearch: isOpenJobSearch,\n CurrentOrgId: currentUser.currentOrgId,\n };\n _.each(filters, (filter) => (payload[filter.filterName] = filter.value));\n api\n .post(\"Job/PrivateJobList\", payload)\n .then((response) => {\n setPaginatedList({\n list: _.map(response.data.list, (l) => {\n l.jobTypeName = _.find(constants.JOB_TYPES, jt => jt.value === l.jobTypeId)?.label;\n return l;\n }),\n pageNumber: response.data.pageNumber,\n totalPages: response.data.totalPages,\n });\n })\n .catch(helpers.catchHandler)\n .finally(() => setLoading(false));\n }\n\n function onSchedule(jobId) {\n const job = _.find(paginatedList.list, (l) => l.id === jobId);\n setJobToSchedule(job);\n setShowScheduleModal(true);\n }\n\n function onScheduleSuccess() {\n setJobToSchedule(null);\n setShowScheduleModal(false);\n refreshData();\n }\n\n function onFilterChange(changedFilter) {\n const filterChanges = filterHelpers.getFilters(filters, changedFilter);\n setFilters(filterChanges);\n }\n\n function currentFilterValue(name) {\n const filterElement = _.find(filters, (f) => f.filterName === name);\n if (filterElement) {\n if (filterElement.value) {\n return filterElement.value;\n }\n return filterElement.values;\n }\n return \"\";\n }\n\n function onMarkComplete(privateJobId) {\n if (\n !window.confirm(`Are you sure you'd like to set this job as completed?`)\n )\n return;\n\n api\n .post(`Job/CompletePrivateJob`, {privateJobId: privateJobId})\n .then((response) => {\n if (response.data.success) {\n setMessage({\n text: \"Job has been marked completed.\",\n flavor: \"alert-success\",\n });\n refreshData();\n } else {\n setMessage({\n text: `An error ocurred. Job status cannot be changed at this time. ${response.data.message ? response.data.message : ''}`,\n flavor: \"alert-danger\",\n });\n }\n })\n .catch((error) => {\n setMessage({\n text: \"There was an error change the status for this job.\",\n flavor: \"alert-danger\",\n });\n });\n }\n\n function togglePrivateJobActive(privateJobId, reviving = false) {\n if (!reviving) {\n if (!window.confirm(`Are you sure you'd like to cancel this job?`))\n return;\n }\n api\n .delete(`Job/TogglePrivateJobActive/${privateJobId}`)\n .then((response) => {\n if (response.data.success) {\n refreshData();\n } else {\n if (reviving) {\n setMessage({\n text: \"An error ocurred. Private Job cannot be revived at this time.\",\n flavor: \"alert-danger\",\n });\n } else {\n setMessage({\n text: \"An error ocurred. Private Job cannot be canceled at this time.\",\n flavor: \"alert-danger\",\n });\n }\n }\n })\n .catch((error) => {\n if (reviving) {\n setMessage({\n text: \"There was an error reviving this job.\",\n flavor: \"alert-danger\",\n });\n } else {\n setMessage({\n text: \"There was an error cancelling this job.\",\n flavor: \"alert-danger\",\n });\n }\n });\n }\n\n return redirectToJob ? (\n \n ) : (\n \n {({ breakpoints, currentBreakpoint }) => {\n switch (currentBreakpoint) {\n case breakpoints.mobile:\n return (\n
    \n \n {props.children}\n \n
    \n );\n case breakpoints.desktop:\n default:\n return (\n \n \n {message ? (\n {message.text}\n ) : null}\n \n \n \n setFilters([])}\n >\n \n \n onFilterChange(e)}\n />\n \n \n onFilterChange(e)}\n options={constants.JOB_TYPES}\n />\n \n {/* \n onFilterChange(e)}\n options={constants.JOB_STATUSES}\n />\n */}\n \n \n onFilterChange(e)\n }\n />\n \n \n \n \n onFilterChange(e)}\n />\n \n \n onFilterChange(e)}\n />\n \n \n onFilterChange(e)}\n />\n \n \n onFilterChange(e)}\n />\n \n \n \n \n onFilterChange(e)}\n />\n \n \n onFilterChange(e)}\n />\n \n \n onFilterChange(e)}\n />\n \n \n onFilterChange(e)}\n />\n \n \n onFilterChange(e)}\n />\n \n \n onFilterChange(e)}\n />\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n }\n pager={\n
    \n \n setPageNumber(newPageNumber)\n }\n />\n
    \n }\n >\n \n \n \n \n \n Job #\n {/* Pickup Date */}\n Requested By Date\n Type\n Origin\n Destination\n Completed At\n \n \n \n \n {paginatedList?.list?.length ? (\n _.map(paginatedList.list, (pj, index) => (\n setRedirectToJob(pj.id)}\n style={{ cursor: \"pointer\" }}\n >\n \n {pj.name}\n \n \n {dateHelpers.formatDateToShortDate(pj.requestedByDate)}\n \n \n \n {pj.jobTypeName}\n \n \n {`${pj.fromCity}, ${pj.fromStateAbbr} ${pj.fromZipCode}`}\n {`${pj.toCity}, ${pj.toStateAbbr} ${pj.toZipCode}`}\n {dateHelpers.formatDateToShortDate(pj.completedAt)}\n \n \n {pj.completedAt\n ? null\n : \n {\n e.stopPropagation();\n onMarkComplete(pj.id);\n }}\n >\n {\" \"}\n {/* Complete Job */}\n \n {\n e.stopPropagation();\n onSchedule(pj.id);\n }}\n title=\"Schedule job\"\n >\n {\" \"}\n {/* Schedule */}\n \n \n {\" \"}\n {/* Edit */}\n \n {pj.deactivatedAt ? (\n {\n e.stopPropagation();\n togglePrivateJobActive(pj.id, true);\n }}\n >\n {\" \"}\n Revive\n \n ) : (\n \n {\n e.stopPropagation();\n togglePrivateJobActive(pj.id);\n }}\n title=\"Cancel job\"\n >\n {\" \"}\n {/* Cancel Job */}\n \n \n )}\n \n }\n \n \n \n ))\n ) : (\n \n No records found\n \n )}\n \n \n \n {showScheduleModal && jobToSchedule && (\n \n setShowScheduleModal(!showScheduleModal)\n }\n job={jobToSchedule}\n onSuccess={() => onScheduleSuccess()}\n isPrivate={true}\n />\n )}\n \n \n
    \n \n );\n }\n }}\n
    \n );\n}\n","import React, { useState, useContext, useEffect, Fragment } from \"react\";\nimport { Redirect } from \"react-router-dom\";\nimport { Media } from \"react-breakpoints\";\nimport { Card, CardBody, Col, Button, Row, Alert } from \"reactstrap\";\nimport DebounceInput from \"react-debounce-input\";\nimport Select from \"react-select\";\nimport _ from \"lodash\";\nimport { api, helpers, UserContext, constants } from \"../utils\";\nimport {\n CollapsibleCardSection,\n DocumentUpload,\n ProfileImageRender,\n} from \"../components\";\nimport { DesktopContainer } from \"../layouts\";\nimport Switch from \"react-switch\";\n\nexport default function Profile(props) {\n const userCtx = useContext(UserContext);\n const inviteToken = props?.computedMatch?.params?.inviteToken\n ? props.computedMatch.params.inviteToken\n : null;\n const [user, setUser] = useState(userCtx.currentUser);\n const [timezoneList, setTimezoneList] = useState([]);\n const [redirectPath, setRedirectPath] = useState(null);\n const [message, setMessage] = useState(null);\n const [profileImage, setProfileImage] = useState(null);\n const [documentList, setDocumentList] = useState([]);\n\n useEffect(() => {\n api.getTimezones().then(({ timezones }) => setTimezoneList(timezones));\n if (!inviteToken) {\n setUser(userCtx.currentUser);\n }\n }, [userCtx.currentUser, inviteToken]);\n\n useEffect(refresh, [user]);\n\n function refresh() {\n if (!user) return;\n api.post(`general/GetUserDocuments/${user.id}`).then((response) => {\n if (response?.data) {\n setDocumentList(response.data);\n setProfileImage(\n _.find(\n response.data,\n (p) =>\n p.documentTypeId ===\n constants.DOCUMENT_TYPE_IDS.USER_PROFILE_IMAGE\n )\n );\n }\n });\n }\n\n function onChange(fieldName, fieldValue) {\n let newUser = Object.assign({}, user);\n newUser[fieldName] = fieldValue;\n setUser(newUser);\n }\n\n function onSubmit() {\n if (inviteToken) {\n setMessage({\n text: \"Your user profile has been successfully created. Redirecting you to login now.\",\n flavor: \"alert-success\",\n });\n setRedirectPath(\"/\");\n return;\n }\n let warnings = [];\n if (!user.firstName || _.trim(user.firstName).length < 2) {\n warnings.push(\"Please provide a valid first name.\");\n }\n if (!user.lastName || _.trim(user.lastName).length < 2) {\n warnings.push(\"Please provide a valid last name.\");\n }\n if (!user.username || _.trim(user.username).length < 2) {\n warnings.push(\"Please provide a username.\");\n }\n if (!user.email || !helpers.emailIsValid(user.email)) {\n warnings.push(\"Please provide a valid email.\");\n }\n if (!user.timezone) {\n warnings.push(\"Please provide a timezone.\");\n }\n if (\n _.some(user.roles, (r) => constants.ROLE_IDS.DRIVER === r.typeOfUserRole)\n ) {\n if (!user.cdlNumber || _.trim(user.cdlNumber).length < 2) {\n warnings.push(\"Please provide a CDL number.\");\n }\n if (!user.cdlState) {\n warnings.push(\"Please provide a CDL state.\");\n }\n }\n if (warnings.length) {\n setMessage({\n text: warnings.join(\" \"),\n flavor: \"alert-danger\",\n });\n return;\n } else {\n setMessage(null);\n }\n api\n .post(\"Public/SaveProfile\", user)\n .then((response) => {\n if (response.data.success) {\n setMessage({\n text: \"Your profile has been updated successfully!\",\n flavor: \"alert-success\",\n });\n setTimeout(() => userCtx.signIn(user), 3000);\n } else {\n setMessage({ text: response.data.message, flavor: \"alert-danger\" });\n }\n })\n .catch(helpers.catchHandler);\n }\n\n function onUpdatePassword() {\n let warnings = [];\n if (!user.newPassword || _.trim(user.newPassword).length < 8) {\n warnings.push(\n \"Please provide a valid, new password of at least 8 characters.\"\n );\n }\n if (!user.oldPassword || _.trim(user.oldPassword).length < 8) {\n warnings.push(\n \"Please provide a valid, existing password of at least 8 characters.\"\n );\n }\n if (!user.newPasswordAgain || _.trim(user.newPasswordAgain).length < 8) {\n warnings.push(\"Please provide your valid, new password a second time.\");\n }\n if (user.newPassword !== user.newPasswordAgain) {\n warnings.push(\n \"Your new password and password confirmation do not match.\"\n );\n }\n if (user.newPassword === user.oldPassword) {\n warnings.push(\"Your new password and old password must be different.\");\n }\n if (warnings.length) {\n setMessage({\n text: warnings.join(\" \"),\n flavor: \"alert-danger\",\n });\n return;\n } else {\n setMessage(null);\n }\n api\n .post(\"Public/UpdatePassword\", {\n password: user.newPassword,\n oldPassword: user.oldPassword,\n })\n .then((response) => {\n if (response.data.success) {\n setMessage({\n text: \"Your password has been updated successfully!\",\n flavor: \"alert-success\",\n });\n setUser({\n ...user,\n oldPassword: \"\",\n newPassword: \"\",\n newPasswordAgain: \"\",\n });\n } else {\n setMessage({ text: response.data.message, flavor: \"alert-danger\" });\n }\n })\n .catch(helpers.catchHandler);\n }\n\n if (redirectPath) {\n return ;\n }\n const isImpersonating = localStorage.getItem(\"adminUser\") ? true : false;\n if (!user) return null;\n return (\n \n {({ breakpoints, currentBreakpoint }) => {\n switch (currentBreakpoint) {\n case breakpoints.mobile:\n return
    {props.children}
    ;\n case breakpoints.desktop:\n default:\n return (\n \n {message ? (\n {message.text}\n ) : null}\n \n \n \n \n {\n \n }\n \n \n \n \n \n First Name {helpers.requiredStar()}\n \n onChange(\n event.target.name,\n event.target.value\n )\n }\n value={user.firstName || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n \n Last Name {helpers.requiredStar()}\n \n onChange(\n event.target.name,\n event.target.value\n )\n }\n value={user.lastName || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n \n Username {helpers.requiredStar()}\n \n onChange(\n event.target.name,\n event.target.value\n )\n }\n value={user.username || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n \n Timezone {helpers.requiredStar()}\n x.value === user.timezone\n )}\n onChange={(option) =>\n onChange(\"timezone\", option.value)\n }\n />\n \n \n \n \n Email {helpers.requiredStar()}\n \n onChange(\n event.target.name,\n event.target.value\n )\n }\n value={user.email || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n \n
    Proximity Alerts
    \n \n onChange(\n \"proximityAlertsOn\",\n !user.proximityAlertsOn\n )\n }\n checked={user.proximityAlertsOn}\n />\n \n {user.proximityAlertsOn && (\n \n Alert Radius In Miles{\" \"}\n {helpers.requiredStar()}\n \n onChange(\n event.target.name,\n event.target.value\n )\n }\n value={\n user.proximityAlertsRadiusInMiles ||\n \"\"\n }\n className=\"form-control\"\n style={{ maxWidth: 90 }}\n debounceTimeout={300}\n />\n \n )}\n \n \n onSubmit()}\n >\n Save\n \n \n \n
    \n \n
    \n \n \n \n \n \n {inviteToken ? null : (\n \n
    \n Old Password{\" \"}\n {helpers.requiredStar()}\n
    \n \n onChange(\n event.target.name,\n event.target.value\n )\n }\n value={user.oldPassword || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n )}\n
    \n \n \n
    \n {inviteToken ? null : `New `}\n Password {helpers.requiredStar()}\n
    \n \n onChange(\n event.target.name,\n event.target.value\n )\n }\n value={user.newPassword || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n
    \n \n \n
    \n Retype Password{\" \"}\n {helpers.requiredStar()}\n
    \n \n onChange(\n event.target.name,\n event.target.value\n )\n }\n value={user.newPasswordAgain || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n
    \n \n \n onUpdatePassword()}\n size=\"sm\"\n >\n Update Password\n \n \n \n
    \n
    \n \n {isImpersonating ? (\n \n \n userCtx.clearImpersonation()\n }\n >\n Stop Impersonating\n \n \n ) : null}\n
    \n \n
    \n \n }\n />\n \n {user?.includeHaulerModule && (\n \n \n \n CDL Number {helpers.requiredStar()}\n \n onChange(\n event.target.name,\n event.target.value\n )\n }\n value={user.cdlNumber || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n \n CDL State {helpers.requiredStar()}\n u.value === user.cdlState\n )}\n options={constants.STATES}\n onChange={(event) =>\n onChange(\"cdlState\", event.value)\n }\n />\n \n \n }\n />\n \n )}\n\n \n \n \n
    \n \n \n
    \n );\n }\n }}\n
    \n );\n}\n","import React, { useState, useEffect, Fragment } from \"react\";\nimport { Media } from \"react-breakpoints\";\nimport { Col, Card, CardImg, Row } from \"reactstrap\";\nimport { api } from \"../utils\";\nimport { CollapsibleCardSection } from \"../components\";\nimport { DesktopContainer } from \"../layouts\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\n\nvar chance = require(\"chance\").Chance();\n\nexport default function PublicProfile(props) {\n const userId =\n props &&\n props.computedMatch &&\n props.computedMatch.params &&\n props.computedMatch.params.id &&\n parseInt(props.computedMatch.params.id, 10);\n const [user, setUser] = useState(null);\n\n useEffect(() => {\n api\n .fetch(`useradmin/user/${userId}`)\n .then((response) => {\n if (response?.data) {\n setUser(response.data);\n }\n })\n .catch((error) => {\n console.error(error);\n });\n }, [userId]);\n\n const profileName = user !== null ? `${user.firstName} ${user.lastName}` : \"\";\n\n function showStarRating() {\n return (\n \n \n \n \n \n \n \n );\n }\n return (\n \n {({ breakpoints, currentBreakpoint }) => {\n switch (currentBreakpoint) {\n case breakpoints.mobile:\n return
    {props.children}
    ;\n case breakpoints.desktop:\n default:\n return (\n \n {user && (\n \n \n \n \n \n \n {showStarRating()}\n \n \n \n \n {user.email}\n \n \n \n \n \n \n {user.phoneNumber ||\n user.driverPhoneNumber}\n \n \n \n \n \n {user.tagLine ||\n \"No data available for this user.\"}\n \n \n \n \n \n }\n />\n \n \n \n \n \n \n \n )}\n \n );\n }\n }}\n
    \n );\n}\n","import React, { Fragment, useState, useEffect } from \"react\";\nimport {\n Button,\n ButtonGroup,\n Card,\n CardBody,\n CardTitle,\n Col,\n Input,\n Row,\n Table,\n Alert,\n} from \"reactstrap\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n FilterText,\n FilterableScreen,\n FilterSet,\n FilterSwitch,\n Pager,\n SortHeader,\n} from \"../components\";\nimport { constants, helpers, api, filterHelpers } from \"../utils\";\nimport _ from \"lodash\";\n\nconst emptyItem = { id: 0, name: \"\" };\n\nexport default function ReferenceDataList(props) {\n const metaData = _.find(\n constants.REFERENCE_DATA_URL_LIST,\n (x) => x.reactPath === props.location.pathname\n );\n const [filters, setFilters] = useState([\n { filterName: \"ActiveOnly\", value: true, filteredDisplay: \"Active Only\" },\n ]);\n const [editItem, setEditItem] = useState(null);\n const [paginatedList, setPaginatedList] = useState({\n list: [],\n pageNumber: 1,\n totalPages: 1,\n });\n const [sortField, setSortField] = useState(\"name\");\n const [sortDirection, setSortDirection] = useState(\n constants.SORT_DIRECTION.ASC\n );\n const [message, setMessage] = useState(null);\n const [pageNumber, setPageNumber] = useState(1);\n\n useEffect(refreshData, [\n filters,\n pageNumber,\n sortField,\n sortDirection,\n metaData.listURL,\n ]);\n\n function refreshData() {\n let payload = {\n sortField: sortField,\n sortDirection: sortDirection,\n pageNumber: pageNumber,\n };\n _.each(filters, (filter) => (payload[filter.filterName] = filter.value));\n api\n .post(metaData.listURL, payload)\n .then((response) => {\n setPaginatedList(response.data);\n })\n .catch(helpers.catchHandler);\n }\n\n function onFilterChange(changedFilter) {\n const filterChanges = filterHelpers.getFilters(filters, changedFilter);\n setFilters(filterChanges);\n }\n\n function onSort(field, direction) {\n if (sortField !== field) {\n setSortField(field);\n }\n if (sortDirection !== direction) {\n setSortDirection(direction);\n }\n }\n\n function onChange(fieldName, fieldValue) {\n setEditItem({\n ...editItem,\n [fieldName]: fieldValue,\n });\n }\n\n function onAdd() {\n let tempArray = paginatedList.list.slice();\n tempArray.unshift(emptyItem);\n setPaginatedList({ ...paginatedList, list: tempArray });\n setEditItem(emptyItem);\n }\n\n function editingNew() {\n return paginatedList.list.length && !paginatedList.list[0].id;\n }\n\n function cancelNew() {\n let temporaryArray = paginatedList.list.slice();\n temporaryArray.shift();\n setPaginatedList({ ...paginatedList, list: temporaryArray });\n }\n\n function onEdit(item) {\n if (editingNew()) cancelNew();\n setEditItem(item);\n }\n\n function onEditKeyPress(e) {\n if (e.key === \"Enter\") {\n onSave();\n }\n }\n\n function onEditKeyDown(e) {\n if (e.keyCode === 27) {\n // 27=Escape\n onCancelEdit();\n }\n }\n\n function onCancelEdit() {\n if (editingNew()) cancelNew();\n setEditItem(emptyItem);\n }\n\n function onToggleActive(item) {\n api\n .post(metaData.toggleURL + \"/\" + item.id)\n .then((r) => {\n if (r.data.success) {\n refreshData();\n } else {\n setMessage({ flavor: \"alert-danger\", text: r.data.message });\n }\n })\n .catch(helpers.catchHandler);\n }\n\n function onSave() {\n if (!editItem?.name) {\n setMessage({\n flavor: \"alert-warning\",\n text: \"Please provide text in order to save.\",\n });\n return;\n }\n api\n .post(metaData.saveURL, editItem)\n .then((r) => {\n if (r.data.success) {\n setEditItem(emptyItem);\n refreshData();\n } else {\n setMessage({ flavor: \"alert-danger\", text: r.data.message });\n }\n })\n .catch(helpers.catchHandler);\n }\n\n return (\n \n \n \n \n \n

    {metaData.pageTitle}

    \n \n \n {editingNew() ? null : (\n \n \n \n \n \n )}\n \n
    \n
    \n \n {message ? (\n {message.text}\n ) : null}\n \n \n setFilters([])}\n >\n \n \n onFilterChange(e)}\n />\n \n \n onFilterChange(e)}\n />\n \n \n \n \n \n }\n pager={\n
    \n setPageNumber(newPageNumber)}\n />\n
    \n }\n >\n \n \n \n \n \n \n \n \n \n \n {_.map(paginatedList.list, (item) => (\n \n {editItem && item.id === editItem.id ? (\n \n \n \n \n ) : (\n \n \n \n \n )}\n \n ))}\n \n
    \n onSort(sf, sd)}\n />\n
    \n \n onChange(e.target.name, e.target.value)\n }\n onKeyPress={onEditKeyPress}\n onKeyDown={onEditKeyDown}\n maxLength={metaData.maxNameLength || 50}\n />\n \n \n \n Save\n \n \n \n \n \n
    {item.name}\n \n \n {item.deactivatedAt ? (\n onToggleActive(item)}\n >\n \n \n ) : (\n onToggleActive(item)}\n >\n \n \n )}\n \n
    \n \n
    \n \n
    \n
    \n
    \n );\n}\n","import React from \"react\";\nimport { Row, Col, Container } from \"reactstrap\";\nimport { CompanyRegistration, HaulerRegistration } from \".\";\n\nexport default function Register(props) {\n const type = props?.computedMatch?.params?.type;\n\n return (\n \n \n \n {type && type === \"haulerFirm\" && }\n {type && type === \"company\" && }\n \n \n \n );\n}\n","import React, { Fragment, useState, useEffect } from \"react\";\nimport {\n Card,\n Button,\n CardBody,\n Row,\n Col,\n Label,\n ButtonGroup,\n Input\n} from \"reactstrap\";\nimport Switch from \"react-switch\";\nimport Select from \"react-select\";\nimport AsyncSelect from \"react-select/async\";\nimport _ from \"lodash\";\nimport DatePicker from \"react-datepicker\";\nimport { api, helpers, dateHelpers, constants } from \"../utils\";\nimport { DateQuickSelect } from \"../components\";\nimport Alert from \"react-s-alert\";\n\nexport default function Reports(props) {\n const [flatReports, setFlatReports] = useState([]);\n const [parameters, setParameters] = useState([]);\n const [parameterValues, setParameterValues] = useState({});\n const [selectedReport, setSelectedReport] = useState(null);\n const [defaultParameters] = useState({});\n\n useEffect(() => {\n api\n .fetch(\"report/reports\")\n .then(response => {\n const reportGroups = _.map(response.data, rg => {\n return {\n ...rg,\n reports: _.map(_.filter(rg.reports, r => r.enabled), r => {\n return {\n ...r,\n groupName: rg.name,\n label: r.name, // ${r.description}`,\n value: r.name\n };\n }),\n label: rg.name,\n value: rg.name\n };\n });\n let flatReports = [];\n _.each(reportGroups, rg => {\n _.each(rg.reports, rpt => {\n flatReports.push(rpt);\n });\n });\n setFlatReports(flatReports);\n })\n .catch(error => console.error(error));\n }, []);\n\n function isFormValid(report, params) {\n let warnings = [];\n _.each(report.parameters, rp => {\n if (!rp.hidden && rp.required) {\n switch (rp.parameterType) {\n case constants.REPORT_PARAMETER_TYPES.Text:\n if (!rp.value) {\n warnings.push(`Enter a ${rp.prompts[0]} value`);\n }\n break;\n case constants.REPORT_PARAMETER_TYPES.DateRange:\n if (!rp.value || !rp.value.length) {\n warnings.push(\"Select valid date from and date through values\");\n // } else if (!moment.isMoment(rp.value[0].value) || !moment.isMoment(rp.value[1].value)) {\n // warnings.push('Date from and date through must be valid dates');\n } else if (\n dateHelpers\n .getMomentFromString(rp.value[0])\n .isAfter(dateHelpers.getMomentFromString(rp.value[1]))\n ) {\n warnings.push(\"Date from cannot be after date through\");\n }\n break;\n case constants.REPORT_PARAMETER_TYPES.Date:\n if (!rp.value) {\n warnings.push(`Select a valid ${rp.prompts[0]} value`);\n }\n break;\n case constants.REPORT_PARAMETER_TYPES.ApiList:\n if (rp.multi) {\n if (!rp.value || !rp.value.length) {\n warnings.push(`Select one or more ${rp.prompts[0]} values`);\n }\n } else {\n if (!rp.value || !rp.value.value) {\n warnings.push(`Select a ${rp.prompts[0]} value`);\n }\n }\n break;\n case constants.REPORT_PARAMETER_TYPES.Integer:\n if (!rp.value || isNaN(parseInt(rp.value.value, 10))) {\n warnings.push(`Provide a valid ${rp.prompts[0]} value`);\n }\n break;\n default:\n console.error(`UNKNOWN parameter type [${rp.parameterType}] !!!!`);\n break;\n }\n }\n });\n if (warnings.length) {\n alert(warnings.join(\"\\n\"));\n }\n return warnings.length === 0;\n }\n\n function parseParameters(report, params) {\n let rawParameters = {};\n _.each(report.parameters, rp => {\n if (!rp.hidden) {\n switch (rp.parameterType) {\n case constants.REPORT_PARAMETER_TYPES.Text:\n rawParameters[rp.names[0]] = { label: \"\", value: rp.value || \"\" };\n break;\n case constants.REPORT_PARAMETER_TYPES.DateRange:\n if (rp.value) {\n // due to validation we know that these are valid moment values now\n rawParameters.date_range = {\n label: `${rp.value[0]} - ${rp.value[1]}`,\n value: [\n { label: \"Date From\", value: rp.value[0] },\n { label: \"Date Through\", value: rp.value[1] }\n ]\n // date_helpers.formatDateForServer(rp.value) + \"|\" + date_helpers.formatDateForServer(params[rp.names[1]])\n };\n } else {\n rawParameters.date_range = {\n label: \"Date Range not set\",\n value: [null, null]\n };\n }\n break;\n case constants.REPORT_PARAMETER_TYPES.Date:\n rawParameters[rp.names[0]] = { label: \"\", value: rp.value };\n break;\n case constants.REPORT_PARAMETER_TYPES.ApiList:\n if (rp.value) {\n if (rp.multi) {\n if (rp.value.length) {\n rawParameters[rp.names[0]] = {\n label: _.map(rp.value, x => x[rp.apiValueAttribute]).join(\n \",\"\n ),\n value: _.map(rp.value, x => ({\n label: x[rp.apiValueAttribute],\n value: x[rp.apiKeyAttribute]\n }))\n };\n }\n } else {\n rawParameters[rp.names[0]] = {\n label: rp.value[rp.apiValueAttribute],\n value: rp.value[rp.apiKeyAttribute]\n };\n }\n } else {\n rawParameters[rp.names[0]] = null; // {label: \"\", value: null};\n }\n break;\n case constants.REPORT_PARAMETER_TYPES.Integer:\n if (rp.value) {\n rawParameters[rp.names[0]] = {\n label: \"\",\n value: parseInt(rp.value, 10)\n };\n } else {\n rawParameters[rp.names[0]] = { label: \"\", value: null };\n }\n break;\n case constants.REPORT_PARAMETER_TYPES.Boolean:\n rawParameters[rp.names[0]] = {\n label: \"\",\n value: rp.value === true\n };\n break;\n default:\n console.error(`UNKNOWN parameter type [${rp.parameterType}] !!!!`);\n break;\n }\n }\n });\n return rawParameters;\n }\n\n function generateReport() {\n if (!isFormValid(selectedReport, parameters)) return;\n const payload = {\n reportName: selectedReport.value,\n parameters: parseParameters(selectedReport, parameters),\n typeOfRender: constants.RENDER_TYPES.Excel\n };\n\n api\n .postWithExcelReturn(\"report/execute\", payload)\n .then(response => {\n const fileName = `report.xlsx`;\n if (window.navigator && window.navigator.msSaveOrOpenBlob) {\n window.navigator.msSaveOrOpenBlob(response.data, fileName);\n } else {\n const file = new Blob([response.data], { type: constants.MIME_XLSX });\n if (navigator.msSaveBlob) {\n navigator.msSaveBlob(file, fileName);\n } else {\n var link = document.createElement(\"a\");\n if (link.download !== undefined) {\n var url = URL.createObjectURL(file);\n link.setAttribute(\"href\", url);\n link.setAttribute(\"download\", fileName);\n link.style.visibility = \"hidden\";\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n }\n }\n })\n .catch(e => {\n console.error(e);\n Alert.error(\"There was an error generating the report\");\n });\n }\n\n function cancel() {\n setParameters(defaultParameters);\n setSelectedReport(null);\n }\n\n function onReportSelect(report) {\n let fetches = [];\n _.each(\n _.filter(\n report.parameters,\n p =>\n p.parameterType === constants.REPORT_PARAMETER_TYPES.ApiList &&\n !p.typeahead\n ),\n p => {\n fetches.push(() => {\n return api\n .fetch_raw(p.apiRoute, {})\n .then(response => {\n return {\n [`${p.names[0]}_options`]: _.map(response.data, x => ({\n ...x,\n value: x[p.apiKeyAttribute],\n label: x[p.apiValueAttribute]\n }))\n };\n })\n .catch(error => console.error(error));\n });\n }\n );\n if (fetches.length) {\n Promise.all(_.map(fetches, f => f()))\n .then(aggregateResults => {\n setSelectedReport(report);\n let newParameterValues = {};\n aggregateResults.forEach(r => Object.assign(newParameterValues, r));\n setParameterValues(newParameterValues);\n })\n .catch(error => console.error(error));\n } else {\n setSelectedReport(report);\n }\n }\n\n function loadApiListOptions(\n inputValue,\n callBack,\n apiRoute,\n valueAttribute,\n labelAttribute\n ) {\n if (!inputValue || !inputValue.length || inputValue.length < 2) return;\n api\n .fetch_raw(apiRoute, { inputValue })\n .then(response => {\n callBack(\n _.map(response.data, x => ({\n ...x,\n value: x[valueAttribute],\n label: x[labelAttribute]\n }))\n );\n })\n .catch(error => console.error(error));\n }\n\n function setParameterValue(parameterName, value, parameterIndex = null) {\n let r = Object.assign({}, selectedReport);\n const paramToChangeIndex = _.findIndex(r.parameters, p =>\n p.names.includes(parameterName)\n );\n let paramToChange = r.parameters[paramToChangeIndex];\n if (parameterIndex !== null) {\n if (!paramToChange.value || paramToChange.value.constructor !== Array) {\n paramToChange.value = [null, null];\n }\n paramToChange.value[parameterIndex] = value;\n } else {\n paramToChange.value = value;\n }\n setSelectedReport(r);\n }\n\n function onDropdownSelection(parameterName, selection) {\n let r = Object.assign({}, selectedReport);\n const paramToChangeIndex = _.findIndex(r.parameters, p =>\n p.names.includes(parameterName)\n );\n let paramToChange = r.parameters[paramToChangeIndex];\n if (selection) {\n paramToChange.value = selection;\n } else {\n paramToChange.value = null;\n setParameterValues(\n Object.assign({}, parameterValues, {\n [`${parameterName}_input_value`]: \"\"\n })\n );\n }\n setSelectedReport(r);\n }\n\n function renderParameters(paramList) {\n let segments = [];\n _.each(paramList, p => {\n const segmentKey = `${p.names[0]}_param`;\n switch (p.parameterType) {\n case constants.REPORT_PARAMETER_TYPES.Boolean:\n segments.push(\n \n \n \n \n \n setParameterValue(p.names[0], e)}\n checked={p.value || false}\n />\n \n \n );\n break;\n case constants.REPORT_PARAMETER_TYPES.Integer:\n case constants.REPORT_PARAMETER_TYPES.Text:\n segments.push(\n \n \n \n \n \n setParameterValue(p.names[0], e.target.value)}\n className=\"form-control\"\n maxLength=\"50\"\n />\n \n \n );\n break;\n case constants.REPORT_PARAMETER_TYPES.Date:\n segments.push(\n \n \n \n \n \n \n setParameterValue(\n p.names[0],\n dateHelpers.formatDateForServer(e)\n )\n }\n className=\"form-control\"\n // onKeyDown={(event) => helpers.onDatePickerKeyDown(event, e => this.setParameterValue(p.names[0], e))}\n />\n \n \n );\n break;\n case constants.REPORT_PARAMETER_TYPES.DateRange:\n segments.push(\n \n \n \n \n \n \n \n setParameterValue(\n p.names[0],\n dateHelpers.formatDateForServer(e),\n 0\n )\n }\n className=\"form-control\"\n // onKeyDown={(event) => helpers.onDatePickerKeyDown(event, e => this.setParameterValue(p.names[0], e, 0))}\n />\n \n setParameterValue(\n p.names[0],\n dateHelpers.formatDateForServer(x),\n 0\n )\n }\n setEndDate={x =>\n setParameterValue(\n p.names[0],\n dateHelpers.formatDateForServer(x),\n 1\n )\n }\n />\n \n \n \n \n \n \n \n \n setParameterValue(\n p.names[1],\n dateHelpers.formatDateForServer(e),\n 1\n )\n }\n className=\"form-control\"\n // onKeyDown={(event) => helpers.onDatePickerKeyDown(event, e => this.setParameterValue(p.names[1], e, 1))}\n />\n \n \n \n );\n break;\n case constants.REPORT_PARAMETER_TYPES.ApiList:\n if (p.typeahead) {\n segments.push(\n \n \n \n \n \n \n loadApiListOptions(\n inputValue,\n callBack,\n p.apiRoute,\n p.apiKeyAttribute,\n p.apiValueAttribute\n ),\n 500\n )}\n placeholder=\"Type Search Value\"\n // defaultOptions={true}\n options={parameterValues[`${p.names[0]}_options`]}\n onChange={e => onDropdownSelection(p.names[0], e)}\n inputValue={parameterValues[`${p.names[0]}_input_value`]}\n onInputChange={e =>\n setParameterValues(\n Object.assign({}, parameterValues, {\n [`${p.names[0]}_input_value`]: e\n })\n )\n }\n value={parameterValues[`${p.names[0]}_selection`]}\n isMulti={p.multi}\n isDisabled={false}\n isClearable={true}\n />\n \n \n );\n } else {\n segments.push(\n \n \n \n \n \n onDropdownSelection(p.names[0], e)}\n options={parameterValues[`${p.names[0]}_options`]}\n isMulti={p.multi}\n isDisabled={false}\n isClearable={true}\n />\n \n \n );\n }\n break;\n default:\n console.error(\"unknown param type to render: \", p);\n break;\n }\n });\n return {segments.map(x => x)};\n }\n\n return (\n
    \n \n \n \n \n \n \n \n \n \n onReportSelect(e)}\n options={flatReports}\n />\n \n \n {selectedReport && (\n \n \n \n {selectedReport.description}\n \n \n
    \n {renderParameters(selectedReport.parameters)}\n \n \n \n \n generateReport()}\n >\n Run\n \n \n \n \n
    \n )}\n
    \n
    \n \n
    \n
    \n );\n}\n","import React, { useState, useEffect } from \"react\";\nimport { Media } from \"react-breakpoints\";\nimport { Button, Col, Row, Card, CardHeader, CardBody } from \"reactstrap\";\nimport { api, dateHelpers } from \"../utils\";\nimport { DesktopContainer } from \"../layouts\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\n\nexport default function Shed(props) {\n const shedSightingId = props?.computedMatch?.params?.id\n ? parseInt(props.computedMatch.params.id, 10)\n : 0;\n\n const [shedSighting, setShedSighting] = useState(null);\n\n useEffect(() => {\n api.fetch(`Unit/GetShedSighting/${shedSightingId}`).then((response) => {\n setShedSighting(response.data);\n });\n }, [shedSightingId]);\n\n function openNavigationLink(oLat, oLng) {\n const scheme = \"https://www.google.com/maps/dir/?api=1¶meters\";\n const originLatLng = `&origin=${oLat},${oLng}`;\n // const destinationLatLng = `&destination=${dLat},${dLng}`;\n const url = `${scheme}${originLatLng}`;\n window.open(url,\"_blank\")\n }\n\n return (\n \n {({ breakpoints, currentBreakpoint }) => {\n switch (currentBreakpoint) {\n case breakpoints.mobile:\n return
    {props.children}
    ;\n case breakpoints.desktop:\n default:\n return (\n \n {shedSighting && (\n <>\n \n \n \n \n \n \n \n \n
    Shed Information
    \n \n
    \n
    \n \n \n \n Serial #: {shedSighting.serialNumber}\n \n Type: {shedSighting.unitTypeName}\n \n \n \n Material: {shedSighting.unitMaterialName}\n \n \n Wall Color: {shedSighting.wallColorName}\n \n \n \n \n Trim Color: {shedSighting.trimColorName}\n \n \n Roof Color: {shedSighting.roofColorName}\n \n \n \n \n Entered At:{\" \"}\n {dateHelpers.dateTimeFormat(\n shedSighting.createdAt\n )}\n \n \n Length (ft): {shedSighting.lengthInFeet}\n \n \n \n \n Width (ft): {shedSighting.widthInFeet}\n \n \n Height (ft): {shedSighting.heightInFeet}\n \n \n \n \n Comments: {shedSighting.comment}\n \n \n \n \n Location: \n openNavigationLink(\n shedSighting.latitude,\n shedSighting.longitude\n )}\n title=\"View location in new window\"\n >\n \n \n \n \n \n
    \n \n
    \n \n \n \n \n \n \n \n \n
    Images
    \n \n
    \n
    \n \n {shedSighting.images &&\n shedSighting.images.map((x, index) => (\n \n {x.documentTypeName}\n \n \n View\n \n \n \n ))}\n \n
    \n \n
    \n \n
    \n \n )}\n
    \n );\n }\n }}\n
    \n );\n}\n","import React, { Fragment, useState, useEffect } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { Media } from \"react-breakpoints\";\nimport { Col, Button, Row, Table } from \"reactstrap\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport _ from \"lodash\";\nimport { api, filterHelpers } from \"../utils\";\nimport {\n FilterMultiSelect,\n FilterText,\n FilterableScreen,\n FilterSet,\n} from \"../components\";\nimport { DesktopContainer } from \"../layouts\";\nimport Alert from \"react-s-alert\";\n\nexport default function Sheds(props) {\n const [filters, setFilters] = useState([]);\n const [list, setList] = useState([]);\n const [pageNumber, setPageNumber] = useState(1);\n const [totalPages, setTotalPages] = useState(0);\n const [unitTypes, setUnitTypes] = useState([]);\n const [unitMaterials, setUnitMaterials] = useState([]);\n const [unitColors, setUnitColors] = useState([]);\n\n function refreshData() {\n let data = {\n PageNumber: pageNumber,\n };\n _.each(filters, (filter) => (data[filter.filterName] = filter.value));\n api\n .post(\"unit/ShedSightingList\", data)\n .then((r) => {\n if (!r) {\n Alert.error(\"\", \"No response from server\");\n }\n if (!r.data || !r.data.list) {\n Alert.error(\"\", \"Error loading list\");\n }\n setPageNumber(r.data.pageNumber);\n setTotalPages(r.data.totalPages);\n if (pageNumber <= 1) {\n setList(r.data.list);\n } else {\n setList([].concat(list).concat(r.data.list));\n }\n })\n .catch((error) => {});\n }\n\n useEffect(refreshData, [pageNumber, filters]);\n\n useEffect(() => {\n let apiCalls = [];\n apiCalls.push(api.getUnitTypes());\n apiCalls.push(api.getUnitMaterials());\n apiCalls.push(api.getUnitColors());\n\n Promise.all(apiCalls).then((arrayResults) => {\n let aggResults = {};\n _.each(arrayResults, (x) => Object.assign(aggResults, x));\n setUnitTypes(aggResults.unitTypes);\n setUnitMaterials(aggResults.unitMaterials);\n setUnitColors(aggResults.unitColors);\n });\n }, []);\n\n function onFilterChange(changedFilter) {\n const filterChanges = filterHelpers.getFilters(filters, changedFilter);\n setFilters(filterChanges);\n setPageNumber(1);\n }\n\n function currentFilterValue(name) {\n const filterElement = _.find(filters, (f) => f.filterName === name);\n if (filterElement) {\n if (filterElement.value) {\n return filterElement.value;\n }\n return filterElement.values;\n }\n return \"\";\n }\n\n function openNavigationLink(oLat, oLng) {\n const scheme = \"https://www.google.com/maps/dir/?api=1¶meters\";\n const originLatLng = `&origin=${oLat},${oLng}`;\n // const destinationLatLng = `&destination=${dLat},${dLng}`;\n const url = `${scheme}${originLatLng}`;\n window.open(url,\"_blank\")\n }\n\n return (\n \n {({ breakpoints, currentBreakpoint }) => {\n switch (currentBreakpoint) {\n case breakpoints.mobile:\n return
    {props.children}
    ;\n case breakpoints.desktop:\n default:\n return (\n \n \n \n \n setFilters([])}\n >\n \n \n onFilterChange(e)}\n />\n \n \n onFilterChange(e)}\n options={unitTypes}\n />\n \n \n onFilterChange(e)}\n options={unitMaterials}\n />\n \n \n \n \n onFilterChange(e)}\n />\n \n \n onFilterChange(e)}\n options={unitColors}\n />\n \n \n onFilterChange(e)}\n options={unitColors}\n />\n \n \n onFilterChange(e)}\n options={unitColors}\n />\n \n \n \n \n \n \n \n \n \n \n \n }\n pager={null}\n >\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {list && list.length > 0 ? (\n _.map(list, (r, index) => (\n \n \n \n \n \n \n \n \n \n \n \n ))\n ) : (\n \n \n \n )}\n \n
    Serial #Unit TypeUnit MaterialWall ColorRoof ColorTrim ColorManufacturerDimensionsLocation
    \n \n {r.serialNumber}\n \n {r.unitTypeName}{r.unitMaterialName}{r.wallColorName}{r.roofColorName}{r.trimColorName}{r.manufacturer}{`${r.lengthInFeet || \"-\"} L X ${\n r.widthInFeet || \"-\"\n } W X ${r.heightInFeet || \"-\"} H`}\n openNavigationLink(\n r.latitude,\n r.longitude\n )}\n title=\"View location in new window\"\n >\n \n \n
    No records found
    \n {totalPages > pageNumber && (\n setPageNumber(pageNumber + 1)}\n >\n Load more\n \n )}\n \n
    \n \n
    \n );\n }\n }}\n
    \n );\n}\n","export default __webpack_public_path__ + \"static/media/shb_logo.7f9a6ab7.jpeg\";","import React, { useState, useContext, useEffect } from \"react\";\nimport { Alert, Form, Row, Col, Container, Button } from \"reactstrap\";\nimport { Link } from \"react-router-dom\";\nimport { api, helpers, UserContext } from \"../utils\";\nimport { useAlert } from \"../hooks/useAlert\";\nimport SHBLogo from \"../components/images/shb_logo.jpeg\";\n\nexport default function SignIn(props) {\n const userCtx = useContext(UserContext);\n const [username, setUserName] = useState(\n localStorage.getItem(\"lastUsername\") || \"\"\n );\n const [password, setPassword] = useState(\"\");\n const [alert, setAlert] = useAlert(null);\n\n useEffect(() => {\n if (userCtx) {\n userCtx.setTheme(\"lightTheme\");\n }\n }, [userCtx]);\n\n function handleUsername(e) {\n setUserName(e.target.value);\n }\n\n function handlePassword(e) {\n setPassword(e.target.value);\n }\n\n function handleSubmit(e) {\n e.preventDefault();\n api\n .post(\"public/authenticate\", {\n Username: username,\n Password: password,\n })\n .then((response) => {\n if (response.data.success) {\n setAlert({ flavor: \"alert-success\", text: \"Log-In Successful!\" });\n userCtx.signIn(response.data.user);\n } else {\n setAlert({ flavor: \"alert-danger\", text: response.data.message });\n }\n })\n .catch(helpers.catchHandler);\n }\n\n return (\n \n {alert ? (\n \n \n {alert.text}\n \n \n ) : null}\n \n \n \n \n \n \n

    \n Sign In\n

    \n \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n \n Sign In\n \n
    \n
    \n \n Misplaced your password?\n \n
    \n
    \n \n
    \n \n \n

    \n Register\n

    \n \n
    \n \n \n \n
    \n Shed Haulers\n
    \n
    \n Sign Up Here\n \n \n \n \n
    \n RTOs & Manufacturers\n
    \n
    \n Sign Up Here\n \n \n
    \n \n
    \n \n \n \"SHB\n \n \n
    \n );\n}\n","import { useState, useEffect } from 'react';\n\nexport function useAlert(msg) {\n const [message, setMessage] = useState(msg);\n\n useEffect(\n () => {\n if (message) {\n setTimeout(() => setMessage(null), 5000);\n }\n },\n [message]\n );\n\n return [message, setMessage];\n}","import React, { useState, useContext, useEffect, useRef } from \"react\";\nimport { Link, Redirect } from \"react-router-dom\";\nimport { Media } from \"react-breakpoints\";\nimport {\n Col,\n Button,\n Row,\n ButtonGroup,\n Card,\n CardTitle,\n CardHeader,\n CardBody,\n Badge,\n Table,\n Label,\n Alert,\n} from \"reactstrap\";\nimport Select from \"react-select\";\nimport Dropzone from \"react-dropzone\";\nimport DebounceInput from \"react-debounce-input\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport classnames from \"classnames\";\nimport _ from \"lodash\";\nimport Switch from \"react-switch\";\nimport { api, helpers, UserContext, constants } from \"../utils\";\nimport { DesktopContainer } from \"../layouts\";\nimport { SketchPicker, CirclePicker, BlockPicker, CompactPicker } from 'react-color'\n\nconst roleGroupStyles = {\n alignItems: \"center\",\n fontSize: 14,\n fontWeight: \"bold\",\n textDecoration: \"underline\",\n margin: \"2px 0 0 0\",\n};\n\nconst formatRoleGroupLabel = (data) => (\n
    \n {data.label}\n
    \n);\n\nconst resolveRoleContextDescription = (ur) => {\n if (ur.typeOfOrg === constants.ORG_TYPE_IDS.HAULER_FIRM) {\n return (\n \n {ur.orgName} Hauling Firm\n \n );\n }\n if (\n ur.typeOfOrg === constants.ORG_TYPE_IDS.RTO ||\n ur.typeOfOrg === constants.ORG_TYPE_IDS.MANUFACTURER\n ) {\n return (\n \n {ur.orgName} Company\n \n );\n }\n return -;\n};\nconst resolveOrgList = (list, currentUser) => {\n if (!currentUser.isSysAdmin) {\n list = _.filter(list, (l) => {\n return l.value === currentUser.orgId;\n });\n }\n return list;\n};\n\nconst resolveAvailableRoles = (currentUser) => {\n let roleList = constants.ALL_ROLES.slice();\n if (!_.includes(currentUser.roleTypeIdList, constants.ROLE_IDS.SYSADMIN)) {\n roleList = _.reject(\n roleList,\n (r) => r.value === constants.ROLE_IDS.SYSADMIN\n );\n let haulerAdmin = _.find(currentUser.roles, (r) => {\n return (\n r.roleId === constants.ROLE_IDS.COMPANY_ADMIN &&\n r.typeOfOrg === constants.ORG_TYPE_IDS.HAULER_FIRM &&\n r.orgId === currentUser.orgId\n );\n });\n if (haulerAdmin !== undefined) {\n roleList = constants.HAULER_ROLES.slice();\n }\n\n let companyAdmin = _.find(currentUser.roles, (r) => {\n return (\n r.roleId === constants.ROLE_IDS.COMPANY_ADMIN &&\n r.typeOfOrg !== constants.ORG_TYPE_IDS.HAULER_FIRM &&\n r.orgId === currentUser.orgId\n );\n });\n if (companyAdmin !== undefined) {\n roleList = constants.COMPANY_ROLES.slice();\n }\n }\n return _.sortBy(roleList, \"label\");\n};\n\nconst groupRoleOptions = (roleList) => {\n // groups with 1 option each\n let groupedRoles = _.chain(roleList.slice())\n .groupBy((r) => r.groupName)\n .toPairs()\n .map((kv) => {\n return {\n label: kv[0],\n options: kv[1],\n };\n })\n .value();\n let filteredGroupedRoles = [];\n // consolidate all options under a single group\n _.each(groupedRoles, (g) => {\n // if this group contains at least 1 role among those desired include it in the filtered output\n if (\n _.some(\n g.options,\n (role) => _.findIndex(roleList, (r2) => r2.value === role.value) >= 0\n )\n ) {\n // filter the contained roles to only those desired\n g.options = _.filter(\n g.options,\n (role) => _.findIndex(roleList, (r2) => r2.value === role.value) >= 0\n );\n filteredGroupedRoles.push(g);\n }\n });\n return filteredGroupedRoles;\n};\n\nconst DEFAULT_DRIVER_COLOR = \"#0C797D\";\n\nconst defaultNewUser = {\n id: 0,\n isPrimaryContact: true,\n timezone: constants.DEFAULT_TIMEZONE,\n roles: [],\n driverHexColor: DEFAULT_DRIVER_COLOR,\n};\n\nexport default function User(props) {\n const userCtx = useContext(UserContext);\n const routeUserId = props?.computedMatch?.params?.id\n ? parseInt(props.computedMatch.params.id, 10)\n : null;\n const [user, setUser] = useState(defaultNewUser);\n const [companies, setCompanies] = useState([]);\n const [haulerFirms, sethaulerFirms] = useState([]);\n const [haulerRoleLimits, setHaulerRoleLimits] = useState(null);\n const [timezoneList, setTimezoneList] = useState([]);\n const [message, setMessage] = useState(null);\n const [roleSelectionState, setRoleSelectionState] = useState(null);\n const [redirectTo, setRedirectTo] = useState(\"\");\n const [files, setFiles] = useState([]);\n const isNewUser = !routeUserId;\n const currentUser = userCtx?.currentUser ? userCtx.currentUser : null;\n const { current: availableRoles } = useRef(\n currentUser ? resolveAvailableRoles(currentUser) : []\n );\n const { current: canMaintainCompanies } = useRef(\n currentUser\n ? currentUser.isSysAdmin ||\n _.some(currentUser.roles, (r) => {\n return (\n r.roleId === constants.ROLE_IDS.COMPANY_ADMIN &&\n (r.typeOfOrg === constants.ORG_TYPE_IDS.RTO ||\n r.typeOfOrg === constants.ORG_TYPE_IDS.MANUFACTURER)\n );\n })\n : false\n );\n const { current: canMaintainhaulerFirms } = useRef(\n currentUser\n ? currentUser.isSysAdmin ||\n _.some(currentUser.roles, (r) => {\n return (\n r.roleId === constants.ROLE_IDS.COMPANY_ADMIN &&\n r.typeOfOrg === constants.ORG_TYPE_IDS.HAULER_FIRM\n );\n })\n : false\n );\n\n const canMaintainRoles = currentUser.isAdminUser;\n const atLeast1CompanyRole =\n (user.orgTypeName === \"RTO\" || user.orgTypeName === \"Manufacturer\") &&\n _.some(user.roles, (r) =>\n _.some(constants.COMPANY_ROLES, (x) => x.value === r.typeOfUserRole)\n );\n const atLeast1haulerFirmRole =\n user.orgTypeName === \"Hauler Firm\" &&\n _.some(user.roles, (r) =>\n _.some(constants.HAULER_ROLES, (x) => x.value === r.typeOfUserRole)\n );\n const mouseUser = (theUser) => {\n if(theUser.id < 1) return;\n api\n .fetch(`Mouse/GetUser/${theUser.memberMouseId}`)\n .then((r) => console.log(\"response\", r));\n }\n \n \n const loadData = () => {\n const getUser = () =>\n api\n .fetch(`UserAdmin/User/${routeUserId}`)\n .then((r) => ({ user: r.data }));\n \n let apiCalls = [];\n apiCalls.push(api.getTimezones());\n if (routeUserId) {\n apiCalls.push(getUser());\n }\n if(!routeUserId && currentUser.orgTypeName === constants.ORG_TYPE_NAMES.HAULER_FIRM) {\n apiCalls.push(api.getAvailableRoles(currentUser.orgId));\n }\n if (canMaintainCompanies) {\n apiCalls.push(api.getCompanies());\n }\n if (canMaintainhaulerFirms) {\n apiCalls.push(api.getHaulerFirms());\n }\n //apiCalls.push(api.getCurrentOrgAvailableRoles())\n Promise.all(apiCalls)\n .then((arrayResults) => {\n let aggResults = {};\n _.each(arrayResults, (x) => Object.assign(aggResults, x));\n //setAvailableOrgRoles(aggResults.availableOrgRoles);\n const haulerFirms = aggResults.haulerFirms\n ? aggResults.haulerFirms\n : [];\n const availableHaulerRoles = aggResults.availableHaulerRoles\n ? aggResults.availableHaulerRoles\n : [];\n if (haulerFirms) {\n sethaulerFirms(haulerFirms);\n }\n if(availableHaulerRoles) {\n setHaulerRoleLimits(availableHaulerRoles);\n }\n const companies = aggResults.companies ? aggResults.companies : [];\n setCompanies(companies);\n setTimezoneList(aggResults.timezones ? aggResults.timezones : []);\n const existingUser = aggResults.user ? aggResults.user : null;\n if (existingUser) {\n existingUser.company = existingUser.companyid\n ? _.find(companies, (c) => c.id === existingUser.companyid)\n : null;\n existingUser.haulerFirm = existingUser.haulerFirmId\n ? _.find(haulerFirms, (c) => c.id === existingUser.haulerFirmId)\n : null;\n existingUser.cdlState = existingUser.cdlState\n ? _.find(constants.STATES, (s) => s.value === existingUser.cdlState)\n : null;\n if(existingUser && existingUser.memberMouseId){\n //mouseUser(existingUser);\n }\n setUser(existingUser);\n }\n })\n .catch((error) =>\n setMessage({\n flavor: \"alert-danger\",\n text: \"There was an error loading user data\",\n })\n );\n };\n\n useEffect(loadData, [\n canMaintainCompanies,\n canMaintainhaulerFirms,\n routeUserId,\n ]);\n \n function onChange(fieldName, fieldValue) {\n let newUser = Object.assign({}, user);\n newUser[fieldName] = fieldValue;\n if (fieldName === \"email\" && isNewUser) {\n newUser.username = fieldValue;\n }\n setUser(newUser);\n }\n\n function onRemoveRole(selectedRole) {\n let newUser = Object.assign({}, user);\n newUser.roles = _.reject(\n user.roles,\n (r) =>\n r.typeOfUserRole === selectedRole.typeOfUserRole &&\n r.haulerFirmId === selectedRole.haulerFirmId &&\n r.companyId === selectedRole.companyId\n );\n setUser(newUser);\n }\n\n function onAddRole() {\n if(!RoleIsAvailable()) return;\n if (!roleSelectionState?.newRole?.typeSelection) {\n setMessage({\n flavor: \"projectWarning\",\n text: \"Select a role type before attempting to add the role.\",\n });\n return;\n }\n if (\n roleSelectionState?.newRole?.typeSelection.value !==\n constants.ROLE_IDS.SYSADMIN &&\n roleSelectionState.newRole.company === null &&\n roleSelectionState.newRole.haulerFirm === null\n ) {\n setMessage({\n flavor: \"projectWarning\",\n text: `Select a context/applicability for this ${roleSelectionState.newRole.typeSelection.label} role before attempting to add it.`,\n });\n return;\n }\n const newCompanyId = roleSelectionState.newRole.company\n ? roleSelectionState.newRole.company.value\n : null;\n const newHaulerFirmId = roleSelectionState.newRole.haulerFirm\n ? roleSelectionState.newRole.haulerFirm.value\n : null;\n if (\n _.some(\n user.roles,\n (ur) =>\n ur.typeOfUserRole ===\n roleSelectionState.newRole.typeSelection.value &&\n ((newCompanyId !== null && ur.orgId === newCompanyId) ||\n (newHaulerFirmId !== null && ur.orgId === newHaulerFirmId))\n )\n ) {\n setMessage({\n flavor: \"projectWarning\",\n text: \"This role has already been given.\",\n });\n return;\n }\n if (\n roleSelectionState.newRole.typeSelection.value ===\n constants.ROLE_IDS.SYSADMIN &&\n _.some(\n user.roles,\n (ur) => ur.typeOfUserRole === constants.ROLE_IDS.SYSADMIN\n )\n ) {\n setMessage({\n flavor: \"projectWarning\",\n text: \"The system administrator role has already been given.\",\n });\n return;\n }\n let newUserRoles = user.roles.slice();\n let newUser = Object.assign({}, user);\n if (newCompanyId) {\n newUserRoles.push({\n typeOfUserRole: roleSelectionState.newRole.typeSelection.value,\n typeOfOrg: roleSelectionState.newRole.company.orgTypeId,\n orgId: newCompanyId,\n orgName: roleSelectionState.newRole.company.label,\n });\n if (!user.orgId) {\n newUser = { ...user, orgId: newCompanyId };\n }\n } else if (newHaulerFirmId) {\n newUserRoles.push({\n typeOfUserRole: roleSelectionState.newRole.typeSelection.value,\n typeOfOrg: roleSelectionState.newRole.haulerFirm.orgTypeId,\n orgId: newHaulerFirmId,\n orgName: roleSelectionState.newRole.haulerFirm.label,\n });\n if (!user.orgId) {\n newUser = { ...user, orgId: newHaulerFirmId };\n }\n } else if (\n roleSelectionState.newRole.typeSelection.value ===\n constants.ROLE_IDS.SYSADMIN\n ) {\n newUserRoles.push({\n typeOfUserRole: roleSelectionState.newRole.typeSelection.value,\n typeOfOrg: null,\n orgId: null,\n orgName: null,\n });\n }\n newUser.roles = newUserRoles;\n setUser(newUser);\n setRoleSelectionState({\n ...roleSelectionState,\n newRole: {\n typeSelection: roleSelectionState.newRole.typeSelection,\n company: null,\n haulerFirm: null,\n },\n });\n }\n\n function onRoleSelectChange(fieldName, selection) {\n let newRoleState = {\n typeSelection: roleSelectionState?.newRole?.typeSelection,\n company: null,\n haulerFirm: null,\n };\n let canSelectCompany = roleSelectionState?.canSelectCompany\n ? roleSelectionState.canSelectCompany\n : false;\n let canSelecthaulerFirm = roleSelectionState?.canSelecthaulerFirm\n ? roleSelectionState.canSelecthaulerFirm\n : false;\n if (fieldName === \"typeSelection\") {\n const isHaulerUser = user.orgTypeName === \"Hauler Firm\";\n const isCompanyUser =\n user.orgTypeName === \"RTO\" || user.orgTypeName === \"Manufacturer\";\n if (\n selection.value === constants.ROLE_IDS.COMPANY_USER ||\n selection.value === constants.ROLE_IDS.COMPANY_CLERK ||\n (isCompanyUser && selection.value === constants.ROLE_IDS.COMPANY_ADMIN)\n ) {\n canSelectCompany = true;\n canSelecthaulerFirm = false;\n if (companies && companies.length === 1) {\n newRoleState.company = companies[0];\n }\n } else if (\n selection.value === constants.ROLE_IDS.DRIVER ||\n selection.value === constants.ROLE_IDS.DISPATCHER ||\n (isHaulerUser && selection.value === constants.ROLE_IDS.COMPANY_ADMIN)\n ) {\n canSelectCompany = false;\n canSelecthaulerFirm = true;\n if (haulerFirms && haulerFirms.length === 1) {\n newRoleState.haulerFirm = haulerFirms[0];\n }\n } else if (selection.value === constants.ROLE_IDS.SYSADMIN) {\n canSelectCompany = false;\n canSelecthaulerFirm = false;\n }\n }\n newRoleState[fieldName] = selection;\n setRoleSelectionState({\n newRole: newRoleState,\n canSelectCompany: canSelectCompany,\n canSelecthaulerFirm: canSelecthaulerFirm,\n });\n }\n\n function validate() {\n let warnings = [];\n if (!user.firstName || _.trim(user.firstName).length < 2) {\n warnings.push(\"Please provide a valid first name.\");\n }\n if (!user.lastName || _.trim(user.lastName).length < 2) {\n warnings.push(\"Please provide a valid last name.\");\n }\n if (!user.username || _.trim(user.username).length < 2) {\n warnings.push(\"Please provide a username.\");\n }\n if ((!user.password || user.password.length < 8) && user.id === 0) {\n warnings.push(\"Please provide a password of at least 8 characters.\");\n }\n if (!user.email || !helpers.emailIsValid(user.email)) {\n warnings.push(\"Please provide a valid email.\");\n }\n if (!user.roles || user.roles.length === 0) {\n warnings.push(\"Please select at least 1 role for the user.\");\n } else if (\n _.some(user.roles, (r) => constants.ROLE_IDS.DRIVER === r.typeOfUserRole)\n ) {\n if (!user.cdlNumber || _.trim(user.cdlNumber).length < 2) {\n warnings.push(\"Please provide a CDL number.\");\n }\n if (!user.cdlState) {\n warnings.push(\"Please provide a CDL state.\");\n }\n }\n if (\n atLeast1haulerFirmRole &&\n !user.orgId &&\n !_.some(\n user.roles,\n (r) =>\n r.orgId !== null && r.typeOfOrg === constants.ORG_TYPE_IDS.HAULER_FIRM\n )\n ) {\n warnings.push(\"Select a primary hauling firm.\");\n }\n if (\n atLeast1CompanyRole &&\n !user.orgId &&\n !_.some(\n user.roles,\n (r) =>\n r.orgId !== null &&\n (r.typeOfOrg === constants.ORG_TYPE_IDS.RTO ||\n r.typeOfOrg === constants.ORG_TYPE_IDS.MANUFACTURER)\n )\n ) {\n warnings.push(\"Select a primary company.\");\n }\n return warnings;\n }\n\n function onSave() {\n window.scroll(0, 0);\n const warnings = validate();\n if (warnings.length) {\n setMessage({\n text: warnings.join(\" \"),\n flavor: \"alert-danger\",\n });\n return;\n } else {\n setMessage(null);\n }\n let payload = Object.assign({}, user);\n if (!payload.id) {\n delete payload.id;\n }\n if (payload.cdlState) {\n payload.cdlState = payload.cdlState.value;\n }\n if (payload.haulerFirm) {\n payload.OrgId = payload.haulerFirm.value;\n delete payload.haulerFirm;\n }\n if (payload.company) {\n payload.OrgId = payload.company.value;\n delete payload.company;\n }\n payload.Roles = _.map(payload.roles, (r, index) => ({\n RoleId: r.typeOfUserRole,\n OrgId: r.orgId,\n IsDefaultContext:\n r.isDefaultContext || (payload?.roles?.length < 2 && index === 0),\n }));\n api\n .post(\"UserAdmin/SaveUser\", payload)\n .then((response) => {\n if (response.data.success) {\n setUser({ ...user, id: response.data.message.id });\n if (files.length) {\n let p2 = new FormData();\n p2.append(\"id\", response.data.message.id);\n p2.append(\"file\", files[0]);\n api.post_form_data(\"UserAdmin/SaveDLImage\", p2).then((r2) => {\n if (r2.data.success) {\n setRedirectTo(\"/users/admin\");\n } else {\n setMessage({ text: r2.data.message, flavor: \"alert-danger\" });\n }\n });\n } else {\n setRedirectTo(\"/users/admin\");\n }\n } else {\n setMessage({ text: response.data.message, flavor: \"alert-danger\" });\n }\n })\n .catch(helpers.catchHandler);\n }\n\n function onFileDrop(acceptedFiles, rejectedFiles) {\n if (rejectedFiles.length) {\n setMessage({\n text: \"One or more files were rejected.\",\n flavor: \"alert-danger\",\n });\n return;\n }\n let newFiles = files.slice();\n newFiles.push(acceptedFiles[0]);\n setFiles(newFiles);\n }\n\n function onDeleteCDL(documentId) {\n api\n .post(\"UserAdmin/DeleteDocument/\" + documentId, {})\n .then((response) => {\n if (response.data.success) {\n setUser({\n ...user,\n documents: _.reject(user.documents, (doc) => doc.id === documentId),\n });\n } else {\n setMessage({ text: response.data.message, flavor: \"alert-danger\" });\n }\n })\n .catch(helpers.catchHandler);\n }\n\n function adminHaulerFirmOptions (haulerFirmOptions) {\n return (\n _.filter(haulerFirmOptions, hf => {\n return _.some(currentUser.roles, role => {\n return (role.orgId === hf.value)\n })\n })\n );\n }\n\n const isDriverUser = _.some(\n user.roles,\n (r) => constants.ROLE_IDS.DRIVER === r.typeOfUserRole\n );\n const newSelectedRole = roleSelectionState?.newRole?.typeSelection\n ? _.find(\n constants.roles,\n (r) => r.value === roleSelectionState.newRole.typeSelection.value\n )\n : null;\n let newSelectedRoleContextDescription = null;\n if (newSelectedRole && roleSelectionState?.newRole?.company) {\n newSelectedRoleContextDescription = `: for the ${roleSelectionState.newRole.company.label} Company`;\n } else if (newSelectedRole && roleSelectionState?.newRole?.haulerFirm) {\n newSelectedRoleContextDescription = `: for the ${roleSelectionState.newRole.haulerFirm.label} Hauling Firm`;\n }\n const fullName = user?.lastName\n ? `${user.firstName} ${user.lastName}`\n : \"User\";\n if (redirectTo) {\n return ;\n }\n\n function RoleIsAvailable(){\n if(currentUser.orgTypeName === constants.ORG_TYPE_NAMES.HAULER_FIRM \n && roleSelectionState?.newRole?.typeSelection) {\n if(roleSelectionState?.newRole?.typeSelection.value === constants.ROLE_IDS.COMPANY_ADMIN\n && haulerRoleLimits.availableAdmins <= 0) {\n setMessage({\n text: \"Current subcription does not allow for more admin roles.\",\n flavor: \"alert-danger\",\n });\n return false;\n }\n if(roleSelectionState?.newRole?.typeSelection.value === constants.ROLE_IDS.DISPATCHER\n && haulerRoleLimits.availableDispatchers <= 0) {\n setMessage({\n text: \"Current subcription does not allow for more dispatcher roles.\",\n flavor: \"alert-danger\",\n });\n return false;\n }\n if(roleSelectionState?.newRole?.typeSelection.value === constants.ROLE_IDS.DRIVER\n && haulerRoleLimits.availableDrivers <= 0) {\n setMessage({\n text: \"Current subcription does not allow for more driver roles.\",\n flavor: \"alert-danger\",\n });\n return false;\n }\n return true;\n }\n return true;\n }\n\n return (\n \n {({ breakpoints, currentBreakpoint }) => {\n switch (currentBreakpoint) {\n case breakpoints.mobile:\n return
    {props.children}
    ;\n case breakpoints.desktop:\n default:\n return (\n \n {message ? (\n {message.text}\n ) : null}\n \n \n \n \n \n \n First Name {helpers.requiredStar()}\n \n onChange(event.target.name, event.target.value)\n }\n value={user.firstName || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n \n Middle Name\n \n onChange(event.target.name, event.target.value)\n }\n value={user.middleName || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n \n Last Name {helpers.requiredStar()}\n \n onChange(event.target.name, event.target.value)\n }\n value={user.lastName || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n \n
    Primary Contact
    \n onChange(\"isPrimaryContact\", e)}\n checked={user.isPrimaryContact || false}\n />\n \n
    \n \n \n Phone #\n \n onChange(event.target.name, event.target.value)\n }\n value={user.phoneNumber || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n \n Timezone\n x.value === user.timezone\n )}\n onChange={(option) =>\n onChange(\"timezone\", option.value)\n }\n />\n \n {isNewUser ? (\n \n Password {helpers.requiredStar()}\n \n onChange(\n event.target.name,\n event.target.value\n )\n }\n value={user.password || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n ) : null}\n {atLeast1CompanyRole ? (\n \n Primary Company {helpers.requiredStar()}\n c.value === user.orgId\n )}\n options={companies}\n onChange={(option) =>\n onChange(\n \"orgId\",\n option ? option.value : null\n )\n }\n />\n \n ) : null}\n {atLeast1haulerFirmRole ? (\n \n Primary Hauling Firm {helpers.requiredStar()}\n c.value === user.orgId\n )}\n options={adminHaulerFirmOptions(haulerFirms)}\n onChange={(option) =>\n onChange(\n \"orgId\",\n option ? option.value : null\n )\n }\n />\n \n ) : null}\n \n \n \n Email {helpers.requiredStar()}\n \n onChange(event.target.name, event.target.value)\n }\n value={user.email || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n disabled={user.memberMouseId}\n />\n \n \n Username {helpers.requiredStar()}\n \n onChange(event.target.name, event.target.value)\n }\n value={user.username || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n \n
    \n
    \n \n
    \n {isDriverUser && (\n \n \n \n \n \n \n
    Driver Information
    \n \n
    \n
    \n \n \n \n Driver display color\n
    \n onChange(\"driverHexColor\", color.hex)}\n />\n
    \n
    \n \n
    \n \n \n CDL Number {helpers.requiredStar()}\n \n onChange(\n event.target.name,\n event.target.value\n )\n }\n value={user.cdlNumber || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n \n CDL State {helpers.requiredStar()}\n \n onChange(\"cdlState\", event)\n }\n />\n \n \n \n \n \n \n \n Drop files or click on the icon below\n \n \n {({ getRootProps, getInputProps }) => (\n
    \n
    \n \n 0,\n })}\n >\n \n

    \n
    \n
    \n )}\n \n
    \n
    \n \n
    \n \n \n
    Documents
    \n \n \n \n \n \n \n \n {user.documents\n ? user.documents.map((doc) => (\n \n \n \n \n ))\n : null}\n \n
    Name\n
    {doc.fileName}\n \n \n View\n \n \n onDeleteCDL(doc.id)\n }\n >\n \n \n \n
    \n \n
    \n
    \n
    \n \n
    \n )}\n {canMaintainRoles && (\n \n \n \n \n \n \n
    Adjust {fullName} Roles
    \n \n
    \n
    \n \n \n \n \n \n onRoleSelectChange(\"typeSelection\", option)\n }\n />\n {roleSelectionState &&\n roleSelectionState.newRole ? (\n \n \n {\n roleSelectionState.newRole.typeSelection\n .label\n }\n \n {newSelectedRoleContextDescription}\n \n ) : null}\n \n {roleSelectionState &&\n canMaintainCompanies &&\n roleSelectionState.canSelectCompany ? (\n \n \n \n onRoleSelectChange(\"company\", option)\n }\n />\n \n ) : null}\n {roleSelectionState &&\n canMaintainhaulerFirms &&\n roleSelectionState.canSelecthaulerFirm ? (\n \n \n \n onRoleSelectChange(\"haulerFirm\", option)\n }\n />\n \n ) : null}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {_.sortBy(\n user.roles,\n (r) =>\n constants.ROLE_DICTIONARY[\n r.typeOfUserRole\n ]\n ).map((r, index) => (\n \n \n \n \n \n ))}\n \n
    Role NameContext
    \n {\n constants.ROLE_DICTIONARY[\n r.typeOfUserRole\n ]\n }\n \n {resolveRoleContextDescription(r)}\n \n onRemoveRole(r)}\n className=\"projectDanger\"\n size=\"sm\"\n title=\"Remove\"\n >\n \n \n
    \n \n
    \n
    \n
    \n \n
    \n )}\n \n \n \n \n \n \n Cancel\n \n \n \n \n \n \n \n
    \n );\n }\n }}\n
    \n );\n}\n","import React, { Fragment, useState, useContext, useEffect } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { Media } from \"react-breakpoints\";\nimport { Alert, Col, Button, Row, Table, ButtonGroup } from \"reactstrap\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport _ from \"lodash\";\nimport classnames from \"classnames\";\nimport { api, helpers, UserContext, filterHelpers, constants } from \"../utils\";\nimport {\n FilterText,\n FilterableScreen,\n FilterSet,\n FilterSwitch,\n FilterSelect,\n FilterMultiSelect,\n Pager,\n} from \"../components\";\nimport { DesktopContainer } from \"../layouts\";\n\nconst resolveRoleListDescription = (roles) => {\n return _.map(roles, (r) => constants.ROLE_DICTIONARY[r.typeOfUserRole]).join(\n \", \"\n );\n};\n\nexport default function Users(props) {\n const userCtx = useContext(UserContext);\n const [filters, setFilters] = useState([\n { filterName: \"ActiveOnly\", value: true, filteredDisplay: \"Active Only\" },\n ]);\n const [paginatedList, setPaginatedList] = useState({\n list: [],\n pageNumber: 1,\n totalPages: 1,\n });\n const [message, setMessage] = useState(\"\");\n const [companies, setCompanies] = useState([]);\n const [haulingFirms, setHaulingFirms] = useState([]);\n const [pageNumber, setPageNumber] = useState(1);\n const rolesList = constants.ALL_ROLES.map((x) => {\n return { value: x.value, label: `${x.groupName} - ${x.label}` };\n });\n\n useEffect(() => {\n let apiCalls = [];\n apiCalls.push(api.getCompanies());\n apiCalls.push(api.getHaulerFirms());\n Promise.all(apiCalls)\n .then((arrayResults) => {\n let aggResults = {};\n _.each(arrayResults, (x) => Object.assign(aggResults, x));\n setHaulingFirms(aggResults.haulerFirms);\n setCompanies(aggResults.companies);\n })\n .catch((error) =>\n setMessage({\n flavor: \"alert-danger\",\n text: \"There was an error loading user data\",\n })\n );\n }, []);\n\n useEffect(refreshData, [filters, pageNumber]);\n\n function refreshData() {\n let payload = {\n sortField: null,\n sortDirection: null,\n pageNumber: pageNumber,\n };\n _.each(filters, (filter) => (payload[filter.filterName] = filter.value));\n api\n .post(\"UserAdmin/List\", payload)\n .then((response) => {\n setPaginatedList(response.data);\n })\n .catch(helpers.catchHandler);\n }\n\n function onFilterChange(changedFilter) {\n const filterChanges = filterHelpers.getFilters(filters, changedFilter);\n setFilters(filterChanges);\n }\n\n function onImpersonate(u) {\n api\n .post(\"UserAdmin/Impersonate\", { username: u.username })\n .then((response) => {\n if (response.data.success) {\n userCtx.impersonate(response.data.user, response.data.user.token);\n setMessage(\"\");\n } else {\n setMessage({ flavor: \"danger\", text: response.data.message });\n }\n })\n .catch(helpers.catchHandler);\n }\n\n function onUnlockUser(selected) {\n api\n .post(`UserAdmin/UnlockUser/${selected.id}`)\n .then((response) => {\n if (response.data.success) {\n refreshData();\n setMessage(\"\");\n } else {\n setMessage({ flavor: \"danger\", text: response.data.message });\n }\n })\n .catch(helpers.catchHandler);\n }\n\n function onToggleMustChangePassword(selected) {\n api\n .post(`UserAdmin/ToggleMustChangePassword/${selected.id}`)\n .then((response) => {\n if (response.data.success) {\n refreshData();\n setMessage(\"\");\n } else {\n setMessage({ flavor: \"danger\", text: response.data.message });\n }\n })\n .catch(helpers.catchHandler);\n }\n\n function onToggleActive(selected) {\n api\n .post(`UserAdmin/ToggleUserActive/${selected.id}`)\n .then((response) => {\n if (response.data.success) {\n refreshData();\n setMessage(\"\");\n } else {\n setMessage({ flavor: \"danger\", text: response.data.message });\n }\n })\n .catch(helpers.catchHandler);\n }\n\n return (\n \n {({ breakpoints, currentBreakpoint }) => {\n switch (currentBreakpoint) {\n case breakpoints.mobile:\n return
    {props.children}
    ;\n case breakpoints.desktop:\n default:\n return (\n \n \n \n setFilters([])}\n >\n \n \n onFilterChange(e)}\n />\n \n \n onFilterChange(e)}\n />\n \n \n onFilterChange(e)}\n options={rolesList}\n />\n \n {userCtx?.currentUser?.isSysAdmin ? (\n \n \n onFilterChange(e)}\n clearValue={() =>\n onFilterChange({\n filterName: \"CompanyId\",\n value: null,\n })\n }\n />\n \n \n onFilterChange(e)}\n clearValue={() =>\n onFilterChange({\n filterName: \"HaulingFirmId\",\n value: null,\n })\n }\n />\n \n \n ) : null}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n }\n pager={\n
    \n \n setPageNumber(newPageNumber)\n }\n />\n
    \n }\n >\n \n \n {message && (\n {message.text}\n )}\n \n \n \n Name\n Organization\n Organization Type\n Roles\n \n Info\n \n \n \n \n {_.map(paginatedList.list, (u) => (\n \n \n \n {u.firstName} {u.lastName}\n \n \n {u.username}\n \n \n \n {u.orgName}\n \n \n {u.orgTypeName}\n \n {resolveRoleListDescription(u.roles)}\n \n onToggleMustChangePassword(u)}\n >\n \n \n {u.isLockedOut ? (\n onUnlockUser(u)}\n >\n \n \n ) : null}\n \n \n
    \n Last Logged On:{\" \"}\n \n {u.lastLoggedOn ? u.lastLoggedOn : \"Never\"}\n \n
    \n \n \n \n onImpersonate(u)}\n >\n Impersonate\n \n {u.active ? (\n onToggleActive(u)}\n >\n \n \n ) : (\n onToggleActive(u)}\n >\n \n \n )}\n \n \n \n ))}\n \n \n \n
    \n \n
    \n );\n }\n }}\n
    \n );\n}\n","import React, { useState } from \"react\";\nimport helpers from \"../utils/helpers\";\nimport {\n Container,\n Col,\n Row,\n Card,\n CardBody,\n Alert,\n Button,\n Label,\n Input,\n} from \"reactstrap\";\nimport api from \"../utils/api\";\nimport { Link, Redirect } from \"react-router-dom\";\nimport SHBLogo from \"../components/images/shb_logo.jpeg\";\n\nexport default function ForgotPassword(props) {\n const [authData, setAuthData] = useState({ username: \"\" });\n const [redirectTo, setRedirectTo] = useState(\"\");\n const [message, setMessage] = useState(null);\n\n function validate() {\n let warnings = [];\n if (!authData.username) {\n warnings.push(\"Username is required (usually your email address)\");\n }\n return warnings;\n }\n\n function onChange(fieldName, fieldValue) {\n let newData = Object.assign({}, authData);\n newData[fieldName] = fieldValue;\n setAuthData(newData);\n }\n\n function onSubmit() {\n const warnings = validate();\n if (warnings.length) {\n setMessage({\n text: warnings.join(\" \"),\n flavor: \"alert-danger\",\n });\n return;\n } else {\n setMessage(null);\n }\n api\n .post(\"Public/ForgotPassword\", { username: authData.username })\n .then((response) => {\n if (response.data.success) {\n setMessage({\n flavor: \"alert-success\",\n text: \"If we have a user with that address, we've just sent a reset link!\",\n });\n setTimeout(() => {\n setRedirectTo(\"/\");\n }, 5000);\n } else {\n setMessage({ flavor: \"alert-danger\", text: response.data.message });\n }\n })\n .catch(helpers.catchHandler);\n }\n\n if (redirectTo) {\n return ;\n }\n return (\n \n \n \n \n \"SHB\n \n \n \n \n \n
    \n \n {\" \"}\n Wait, I already have an account - take me to log in!\n \n
    \n
    \n {message ? (\n {message.text}\n ) : null}\n
    \n
    \n
    \n \n \n \n onChange(\"username\", e.target.value)}\n placeholder=\"Username\"\n maxLength=\"250\"\n />\n \n \n \n Reset Password\n \n \n
    \n
    \n
    \n \n
    \n
    \n );\n}\n","import React, { useState } from \"react\";\nimport { Link, Redirect } from \"react-router-dom\";\nimport {\n Container,\n Col,\n Row,\n Card,\n CardBody,\n Alert,\n Button,\n Label,\n Input,\n} from \"reactstrap\";\nimport helpers from \"../utils/helpers\";\nimport api from \"../utils/api\";\nimport SHBLogo from \"../components/images/shb_logo.jpeg\";\n\nexport default function ResetPassword(props) {\n const [authData, setAuthData] = useState({\n password: \"\",\n passwordAgain: \"\",\n resetToken: props?.computedMatch?.params?.resetToken\n ? props.computedMatch.params.resetToken\n : null,\n });\n const [redirectTo, setRedirectTo] = useState(\"\");\n const [message, setMessage] = useState(null);\n\n function onChange(fieldName, fieldValue) {\n let newData = Object.assign({}, authData);\n newData[fieldName] = fieldValue;\n setAuthData(newData);\n }\n\n function validate() {\n let warnings = [];\n if (!authData.password || authData.password.length < 8) {\n warnings.push(\n \"Password is required and must be at least 8 characters long.\"\n );\n }\n if (authData.password !== authData.passwordAgain) {\n warnings.push(\"The password and password confirmation do not match.\");\n }\n return warnings;\n }\n\n function onSubmit() {\n const warnings = validate();\n if (warnings.length) {\n setMessage({\n text: warnings.join(\" \"),\n flavor: \"alert-danger\",\n });\n return;\n } else {\n setMessage(null);\n }\n api\n .post(\"Public/SetPassword\", {\n token: authData.resetToken,\n password: authData.password,\n })\n .then((response) => {\n if (response.data.success) {\n setMessage({\n flavor: \"alert-success\",\n text: \"You have successfully reset your password. We're now redirecting you to the home screen.\",\n });\n setTimeout(() => {\n setRedirectTo(\"/\");\n }, 5000);\n } else {\n setMessage({ flavor: \"alert-danger\", text: response.data.message });\n }\n })\n .catch(helpers.catchHandler);\n }\n\n if (redirectTo) {\n return ;\n }\n return (\n \n \n \n \n \"SHB\n \n \n \n \n \n
    \n Return to Login Screen\n
    \n
    \n {message ? (\n {message.text}\n ) : null}\n
    \n
    \n
    \n \n \n \n onChange(\"password\", e.target.value)}\n placeholder=\"Password\"\n />\n \n \n \n \n \n \n onChange(\"passwordAgain\", e.target.value)\n }\n placeholder=\"Re-Type Password\"\n />\n \n \n \n Confirm Password Reset\n \n \n
    \n
    \n
    \n \n
    \n
    \n );\n}\n","import React, { useContext, useState } from \"react\";\nimport { Container, Col, Row, Card, CardBody, Alert, Button } from \"reactstrap\";\nimport helpers from \"../utils/helpers\";\nimport DebounceInput from \"react-debounce-input\";\nimport _ from \"lodash\";\nimport { api, UserContext } from \"../utils\";\n\nexport default function UpdatePassword(props) {\n const userCtx = useContext(UserContext);\n const [user, setUser] = useState(userCtx.currentUser);\n const [message, setMessage] = useState(null);\n\n function onChange(fieldName, fieldValue) {\n let newUser = Object.assign({}, user);\n newUser[fieldName] = fieldValue;\n setUser(newUser);\n }\n\n function onUpdatePassword() {\n let warnings = [];\n if (!user.newPassword || _.trim(user.newPassword).length < 8) {\n warnings.push(\n \"Please provide a valid, new password of at least 8 characters.\"\n );\n }\n if (!user.oldPassword || _.trim(user.oldPassword).length < 8) {\n warnings.push(\n \"Please provide a valid, existing password of at least 8 characters.\"\n );\n }\n if (!user.newPasswordAgain || _.trim(user.newPasswordAgain).length < 8) {\n warnings.push(\"Please provide your valid, new password a second time.\");\n }\n if (user.newPassword !== user.newPasswordAgain) {\n warnings.push(\n \"Your new password and password confirmation do not match.\"\n );\n }\n if (user.newPassword === user.oldPassword) {\n warnings.push(\"Your new password and old password must be different.\");\n }\n if (warnings.length) {\n setMessage({\n text: warnings.join(\" \"),\n flavor: \"alert-danger\",\n });\n return;\n } else {\n setMessage(null);\n }\n api\n .post(\"Public/UpdatePassword\", {\n password: user.newPassword,\n oldPassword: user.oldPassword,\n })\n .then((response) => {\n if (response.data.success) {\n setMessage({\n text: \"Your password has been updated successfully!. We're now redirecting you to the home screen.\",\n flavor: \"alert-success\",\n });\n const newUser = {\n ...user,\n mustChangePassword: false,\n oldPassword: \"\",\n newPassword: \"\",\n newPasswordAgain: \"\",\n };\n setUser(newUser);\n setTimeout(() => userCtx.signIn(newUser), 3000);\n } else {\n setMessage({ text: response.data.message, flavor: \"alert-danger\" });\n }\n })\n .catch(helpers.catchHandler);\n }\n\n return (\n \n

    Your password needs to be updated...

    \n {message ? (\n {message.text}\n ) : null}\n \n \n \n \n \n \n
    \n Old Password {helpers.requiredStar()}\n
    \n \n onChange(event.target.name, event.target.value)\n }\n value={user.oldPassword || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n
    \n \n \n
    \n New Password {helpers.requiredStar()}\n
    \n \n onChange(event.target.name, event.target.value)\n }\n value={user.newPassword || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n
    \n \n \n
    \n Retype Password {helpers.requiredStar()}\n
    \n \n onChange(event.target.name, event.target.value)\n }\n value={user.newPasswordAgain || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n
    \n \n \n onUpdatePassword()}\n size=\"sm\"\n >\n Update Password\n \n \n \n
    \n
    \n \n
    \n
    \n );\n}\n","import React, { useState, useEffect, Fragment } from \"react\";\nimport { Media } from \"react-breakpoints\";\nimport { Link, Redirect } from \"react-router-dom\";\nimport _ from \"lodash\";\nimport { api, helpers, constants } from \"../utils\";\nimport { CollapsibleCardSection, MemberMouseLookupModal } from \"../components\";\nimport { DesktopContainer } from \"../layouts\";\nimport DebounceInput from \"react-debounce-input\";\nimport Select from \"react-select\";\nimport makeAnimated from \"react-select/animated\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n Col,\n Button,\n Row,\n ButtonGroup,\n Card,\n CardHeader,\n CardBody,\n Label,\n FormGroup,\n Input,\n Table,\n} from \"reactstrap\";\nimport Alert from \"react-s-alert\";\n\nconst emptyRigType = {\n id: 0,\n type: null,\n qty: 1,\n editing: true,\n};\n\nconst HaulerFirm = \"Hauler Firm\";\n\nexport default function HaulerRegistration(props) {\n const [org, setOrganization] = useState(\n Object.assign({}, constants.EMPTY_ORGANIZATION)\n );\n const [stateList, setStateList] = useState([]);\n const [rigTypeList, setRigTypeList] = useState([]);\n const [redirectToHome, setRedirectToHome] = useState(null);\n const [companyType, setCompanyType] = useState(null);\n const [saving, setSaving] = useState(false);\n const [mmEmail, setMmEmail] = useState(\"\");\n const [showMMModal, setShowMMModal] = useState(false);\n\n useEffect(() => {\n api\n .fetch(\"public/StateList\")\n .then((response) => {\n if (response.data && response.data.length) {\n setStateList(\n _.map(response.data, (d) => {\n d.label = d.name;\n d.value = d.id;\n return d;\n })\n );\n }\n })\n .catch((error) => {\n console.error(error);\n });\n api\n .fetch(\"public/RigTypeList\")\n .then((response) => {\n if (response.data && response.data.length) {\n setRigTypeList(\n _.map(response.data, (d) => {\n d.label = d.name;\n d.value = d.id;\n return d;\n })\n );\n }\n })\n .catch((error) => {\n console.error(error);\n });\n api\n .fetch(\"public/OrgTypeList\")\n .then((response) => {\n if (response.data && response.data.length) {\n let companyType = _.find(response.data, (d) => {\n return d.name === HaulerFirm;\n });\n setCompanyType(companyType);\n }\n })\n .catch((error) => {\n console.error(error);\n });\n }, []);\n\n useEffect(() => {\n setOrganization(org);\n }, [org]);\n\n function registerButton(className) {\n return (\n \n {GetMMButton(\"float-left mb-2\")}\n \n \n \n \n \n submitRegistration()}\n title={\"Submit\"}\n disabled={saving}\n >\n {saving && }\n {\"Register\"}\n \n \n \n \n );\n }\n\n function GetMMButton(className) {\n return (\n \n \n setShowMMModal(!showMMModal)}\n //title={\"\"}\n disabled={saving}\n >\n {/* {saving && } */}\n {\"Get MemberMouse Account Info\"}\n \n \n \n );\n }\n\n function formatLocations() {\n let list = [];\n let primaryLocation = {\n StreetAddress1: org.addressLine1,\n StreetAddress2: org.addressLine2,\n City: org.city,\n StateId: org.state ? org.state.value : null,\n ZipCode: org.zip,\n LocationTypeId: constants.LOCATION_TYPES.Primary,\n };\n\n list.push(primaryLocation);\n\n if (org.sameAccountingAddress) {\n let billToLocation = Object.assign({}, primaryLocation);\n billToLocation.LocationTypeId = constants.LOCATION_TYPES.BillTo;\n list.push(billToLocation);\n } else {\n list.push({\n StreetAddress1: org.accountingAddressLine1,\n StreetAddress2: org.accountingAddressLine2,\n City: org.accountingCity,\n StateId: org.accountingState ? org.accountingState.value : null,\n ZipCode: org.accountingZip,\n LocationTypeId: constants.LOCATION_TYPES.BillTo,\n });\n }\n return list;\n }\n\n function onRigTypeSelect(index, selection, name) {\n const orgCopy = Object.assign({}, org);\n orgCopy.rigTypes[index][name] = selection;\n setOrganization(orgCopy);\n }\n\n async function addToRigTypes() {\n let orgCopy = Object.assign({}, org);\n orgCopy.rigTypes.unshift(Object.assign({}, emptyRigType));\n await setOrganization(orgCopy);\n }\n\n function saveRigType(index) {\n let orgCopy = Object.assign({}, org);\n\n if (!orgCopy.rigTypes[index].type) {\n Alert.error(\"Please select a rig type\");\n return;\n }\n if (!orgCopy.rigTypes[index].qty < 0) {\n Alert.error(\"Please enter a valid quantity.\");\n return;\n }\n\n orgCopy.rigTypes[index].editing = false;\n setOrganization(orgCopy);\n }\n function editRigType(index, event, fieldName) {\n let orgCopy = Object.assign({}, org);\n orgCopy.rigTypes[index][fieldName] = event.target.value;\n setOrganization(orgCopy);\n }\n\n async function deleteFromRigTypes(index) {\n const orgCopy = Object.assign({}, org);\n orgCopy.rigTypes.splice(index, 1);\n await setOrganization(orgCopy);\n }\n\n function GetMMInfo(email) {\n api.post(`public/GetMMUser/${email}`)\n .then((response) => {\n if(response && response.success){\n let mmUser = response.message;\n org.primaryContactFirstName = mmUser.first_name || \"\";\n org.primaryContactMiddleName = \"\"; // no last name field for membermouse\n org.primaryContactLastName = mmUser.last_name || \"\";\n org.primaryContactEmail = mmUser.email || \"\";\n org.primaryContactUsername = mmUser.username || \"\";\n org.primaryContactPhoneNumber = mmUser.phone || \"\";\n org.isPrimaryContact = true;\n }\n })\n }\n\n function submitRegistration() {\n setSaving(true);\n let warnings = [];\n if (!org.name || _.trim(org.name).length < 2) {\n warnings.push(\"Please provide a company name\");\n }\n if (!org.email || !helpers.emailIsValid(org.email)) {\n warnings.push(\"Please provide a valid company email.\");\n }\n if (!org.phoneNumber) {\n warnings.push(\"Please provide a company phone number.\");\n }\n if (!org.addressLine1) {\n warnings.push(\"Please provide a company address line 1.\");\n }\n if (!org.city) {\n warnings.push(\"Please provide a City.\");\n }\n if (!org.state) {\n warnings.push(\"Please provide a State.\");\n }\n if (!org.zip) {\n warnings.push(\"Please provide a Zip.\");\n }\n if (!org.einNumber || org.einNumber.length < 9) {\n warnings.push(\"Please provide a valid EIN number.\");\n }\n //if (!org.einNumber && !org.alternateEIN) {\n // warnings.push('Please provide a EIN number or a valid SSN.')\n //}\n //if (!org.cardToken) {\n // warnings.push('Please provide a valid payment method.')\n //}\n if (\n !org.primaryContactFirstName ||\n _.trim(org.primaryContactFirstName).length < 2\n ) {\n warnings.push(\"Please provide a valid first name for primary contact.\");\n }\n if (\n !org.primaryContactLastName ||\n _.trim(org.primaryContactLastName).length < 2\n ) {\n warnings.push(\"Please provide a valid last name for primary contact.\");\n }\n if (\n !org.primaryContactPhoneNumber ||\n _.trim(org.primaryContactPhoneNumber).length < 10\n ) {\n warnings.push(\"Please provide a valid phone number for primary contact.\");\n }\n if (\n !org.primaryContactEmail ||\n !helpers.emailIsValid(org.primaryContactEmail)\n ) {\n warnings.push(\"Please provide a valid email for primary contact.\");\n }\n if (!org.password || _.trim(org.password).length < 8) {\n warnings.push(\n \"Please provide a valid password of at least 8 characters.\"\n );\n }\n if (!org.passwordAgain || _.trim(org.passwordAgain).length < 8) {\n warnings.push(\n \"Please provide your valid confirmation password of at least 8 characters.\"\n );\n }\n if (org.password !== org.passwordAgain) {\n warnings.push(\"Your password and confirmation password do not match.\");\n }\n //if (!org.subscriptionType) {\n // warnings.push('Please select a subcription plan.')\n //}\n if (warnings.length) {\n Alert.error(warnings.join(\" \"));\n setSaving(false);\n return;\n }\n\n let user = {\n FirstName: org.primaryContactFirstName,\n MiddleName: org.primaryContactMiddleName,\n LastName: org.primaryContactLastName,\n Email: org.primaryContactEmail,\n Username:\n org.primaryContactUsername !== \"\"\n ? org.primaryContactUsername\n : org.primaryContactEmail,\n PhoneNumber: org.primaryContactPhoneNumber,\n Password: org.password,\n IsPrimaryContact: org.isPrimaryContact,\n };\n\n let haulerFirm = {\n Id: org.id,\n Name: org.name,\n Email: org.email,\n PhoneNumber: org.phoneNumber,\n AboutUs: org.aboutUs,\n EIN: org.einNumber,\n AlternateEIN: org.alternateEIN,\n //SubscriptionTypeId: _.find(subscriptionTypes, t => { return t.label === \"Monthly\"; }).value,\n OrgTypeId: companyType ? companyType.id : null,\n };\n let payload = {\n User: user,\n Company: haulerFirm,\n Locations: formatLocations(),\n RigTypes:\n org.rigTypes && org.rigTypes.length\n ? _.map(org.rigTypes, (t) => {\n return {\n RigTypeId: t.type.value,\n Name: t.type.label,\n Qty: parseInt(t.qty, 10),\n };\n })\n : [],\n };\n\n api\n .post(`Public/RegisterOrg`, payload)\n .then((response) => {\n if (response.data.success) {\n Alert.success(\n \"Your registration is now complete! You will now be redirected to the logon screen.\"\n );\n setTimeout(() => setRedirectToHome(\"/\"), 3000);\n } else {\n Alert.error(response.data.message || \"An error occurred.\");\n setSaving(false);\n }\n })\n .catch(helpers.catchHandler);\n }\n\n if (redirectToHome !== null) {\n return ;\n }\n\n const screenName = (\n \n Hauler Firm Registration{\" \"}\n \n );\n return (\n \n {({ breakpoints, currentBreakpoint }) => {\n switch (currentBreakpoint) {\n case breakpoints.mobile:\n return
    {props.children}
    ;\n case breakpoints.desktop:\n default:\n return (\n \n {org && (\n \n {registerButton(\"float-right mb-2\")}\n {\n setShowMMModal(!showMMModal)}\n />\n }\n\n {/* HAULER DETAILS */}\n \n \n \n \n \n \n
    Hauler Firm Profile
    \n \n
    \n
    \n \n \n \n Hauler Firm Name {helpers.requiredStar()}\n \n setOrganization({\n ...org,\n name: e.target.value,\n })\n }\n value={org.name || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n \n \n \n Email {helpers.requiredStar()}\n \n setOrganization({\n ...org,\n email: e.target.value,\n })\n }\n value={org.email || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n \n \n \n Address Line 1 {helpers.requiredStar()}\n \n setOrganization({\n ...org,\n addressLine1: e.target.value,\n })\n }\n value={org.addressLine1 || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n \n \n \n Address Line 2\n \n setOrganization({\n ...org,\n addressLine2: e.target.value,\n })\n }\n value={org.addressLine2 || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n \n \n \n City {helpers.requiredStar()}\n \n setOrganization({\n ...org,\n city: e.target.value,\n })\n }\n value={org.city || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n \n State {helpers.requiredStar()}\n \n setOrganization({ ...org, state: e })\n }\n value={org.state || null}\n onBlurResetsInput={false}\n onSelectResetsInput={false}\n onCloseResetsInput={false}\n classNamePrefix=\"react-select\"\n />\n \n \n Zip {helpers.requiredStar()}\n \n setOrganization({\n ...org,\n zip: e.target.value,\n })\n }\n value={org.zip || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n \n \n \n Phone Number {helpers.requiredStar()}\n \n setOrganization({\n ...org,\n phoneNumber: e.target.value,\n })\n }\n value={org.phoneNumber || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n \n \n \n EIN Number {helpers.requiredStar()}\n \n setOrganization({\n ...org,\n einNumber: e.target.value,\n })\n }\n value={org.einNumber || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n \n {/* */}\n {/* */}\n {/* SSN Number {helpers.requiredStar()}*/}\n {/* setOrganization({ ...org, alternateEIN: e.target.value })}*/}\n {/* value={org.alternateEIN || \"\"}*/}\n {/* className=\"form-control\"*/}\n {/* debounceTimeout={300}*/}\n {/* />*/}\n {/* */}\n {/* */}\n \n
    \n \n
    \n\n {/* BILL TO ADDRESS */}\n \n \n \n \n \n \n
    Bill To Address
    \n \n \n \n \n \n \n
    \n
    \n {!org.sameAccountingAddress && (\n \n \n \n Address Line 1 {helpers.requiredStar()}\n \n setOrganization({\n ...org,\n accountingAddressLine1: e.target.value,\n })\n }\n value={org.accountingAddressLine1 || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n // placeholder=\"123 Main St\"\n />\n \n \n \n \n Address Line 2\n \n setOrganization({\n ...org,\n accountingAddressLine2: e.target.value,\n })\n }\n value={org.accountingAddressLine2 || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n // placeholder=\"Address Line 2 (optional)\"\n />\n \n \n \n \n City {helpers.requiredStar()}\n \n setOrganization({\n ...org,\n accountingCity: e.target.value,\n })\n }\n value={org.accountingCity || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n // placeholder=\"Tupelo\"\n />\n \n \n State {helpers.requiredStar()}\n \n setOrganization({\n ...org,\n accountingState: e,\n })\n }\n value={org.accountingState || null}\n onBlurResetsInput={false}\n onSelectResetsInput={false}\n onCloseResetsInput={false}\n classNamePrefix=\"react-select\"\n />\n \n \n Zip {helpers.requiredStar()}\n \n setOrganization({\n ...org,\n accountingZip: e.target.value,\n })\n }\n value={org.accountingZip || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n // placeholder=\"35888\"\n />\n \n \n \n )}\n
    \n \n
    \n\n {/* PRIMARY USER */}\n \n \n \n
    \n \n This will be your first user for your\n organization\n \n
    \n
    \n \n \n First Name {helpers.requiredStar()}\n \n setOrganization({\n ...org,\n primaryContactFirstName:\n e.target.value,\n })\n }\n value={org.primaryContactFirstName || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n \n Middle Name\n \n setOrganization({\n ...org,\n primaryContactMiddleName:\n e.target.value,\n })\n }\n value={org.primaryContactMiddleName || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n\n \n Last Name {helpers.requiredStar()}\n \n setOrganization({\n ...org,\n primaryContactLastName:\n e.target.value,\n })\n }\n value={org.primaryContactLastName || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n \n \n \n Phone Number {helpers.requiredStar()}\n \n setOrganization({\n ...org,\n primaryContactPhoneNumber:\n e.target.value,\n })\n }\n value={\n org.primaryContactPhoneNumber || \"\"\n }\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n \n \n \n Username {helpers.requiredStar()}\n \n setOrganization({\n ...org,\n primaryContactUsername:\n e.target.value,\n })\n }\n value={org.primaryContactUsername || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n \n \n \n Email {helpers.requiredStar()}\n {\n const fieldValue = e.target.value;\n let newOrg = {\n ...org,\n primaryContactEmail: fieldValue,\n };\n if (fieldValue) {\n const minLen = _.min([\n fieldValue.length,\n org.primaryContactUsername\n ? org.primaryContactUsername\n .length\n : 0,\n ]);\n if (\n minLen === 0 ||\n _.startsWith(\n org.primaryContactUsername,\n fieldValue.substring(0, minLen)\n )\n ) {\n newOrg.primaryContactUsername =\n fieldValue;\n }\n }\n setOrganization(newOrg);\n }}\n value={org.primaryContactEmail || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n \n \n \n Password {helpers.requiredStar()}\n \n setOrganization({\n ...org,\n password: e.target.value,\n })\n }\n value={org.password || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n \n \n \n Retype Password {helpers.requiredStar()}\n \n setOrganization({\n ...org,\n passwordAgain: e.target.value,\n })\n }\n value={org.passwordAgain || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n \n
    \n
    \n }\n />\n \n \n\n {/* RIG TYPES */}\n \n \n {/*RIG TYPES*/}\n \n \n
    \n \n At least one is required{\" \"}\n {helpers.requiredStar()}\n \n
    \n \n \n \n \n \n Rig Type\n Qty\n \n addToRigTypes()}\n title=\"Add\"\n >\n {\" \"}\n Add\n \n \n \n \n \n {org.rigTypes && org.rigTypes.length > 0\n ? _.map(org.rigTypes, (r, index) => (\n \n \n {r.editing ? (\n \n \n \n onRigTypeSelect(\n index,\n event,\n \"type\"\n )\n }\n />\n \n \n \n editRigType(\n index,\n event,\n \"qty\"\n )\n }\n value={r.qty}\n className=\"form-control\"\n debounceTimeout={300}\n placeholder=\"Qty\"\n />\n \n \n \n \n saveRigType(index)\n }\n title=\"Add\"\n >\n \n \n \n \n \n ) : (\n \n \n \n {r.type &&\n r.type.label}\n \n \n \n {r.qty}\n \n \n \n \n deleteFromRigTypes(\n index\n )\n }\n title=\"Remove from quote\"\n >\n \n \n \n \n \n )}\n \n \n ))\n : null}\n \n \n \n \n \n
    \n }\n />\n \n \n {/* STRIPE DETAILS */}\n {/* setOrganization({ ...org, cardToken: e })}*/}\n {/* haulerFirmId={0}*/}\n {/* registrationMode={true}*/}\n {/* setSubscription={(e) => setOrganization({ ...org, subscriptionType: e })}*/}\n {/*/>*/}\n\n {registerButton(\"float-right\")}\n \n )}\n
    \n );\n }\n }}\n
    \n );\n}\n","import React, { useState, useEffect, Fragment } from \"react\";\nimport { Media } from \"react-breakpoints\";\nimport { Link, Redirect } from \"react-router-dom\";\nimport _ from \"lodash\";\nimport DebounceInput from \"react-debounce-input\";\nimport Select from \"react-select\";\nimport makeAnimated from \"react-select/animated\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n Col,\n Button,\n Row,\n ButtonGroup,\n Card,\n CardHeader,\n CardBody,\n Label,\n FormGroup,\n Input,\n} from \"reactstrap\";\nimport Alert from \"react-s-alert\";\nimport { api, helpers, constants } from \"../utils\";\nimport { CollapsibleCardSection, EditUnitType } from \"../components\";\nimport { DesktopContainer } from \"../layouts\";\n\nconst HaulerFirm = \"Hauler Firm\";\n\nexport default function CompanyRegistration(props) {\n const [org, setOrganization] = useState(\n Object.assign({}, constants.EMPTY_ORGANIZATION)\n );\n const [stateList, setStateList] = useState([]);\n const [companyTypeList, setCompanyTypeList] = useState([]);\n const [redirectToHome, setRedirectToHome] = useState(null);\n const [saving, setSaving] = useState(false);\n\n useEffect(() => {\n api\n .fetch(\"public/StateList\")\n .then((response) => {\n if (response.data) {\n setStateList(\n _.map(response.data, (d) => {\n d.label = d.name;\n d.value = d.id;\n return d;\n })\n );\n }\n })\n .catch((error) => {\n console.error(error);\n });\n\n api\n .fetch(\"public/OrgTypeList\")\n .then((response) => {\n if (response.data && response.data.length) {\n setCompanyTypeList(\n _.chain(response.data)\n .reject((d) => {\n return d.name === HaulerFirm;\n })\n .map((d) => {\n d.label = d.name;\n d.value = d.id;\n return d;\n })\n .value()\n );\n }\n })\n .catch((error) => {\n console.error(error);\n });\n }, []);\n\n function formatLocations() {\n let list = [];\n let primaryLocation = {\n StreetAddress1: org.addressLine1,\n StreetAddress2: org.addressLine2,\n City: org.city,\n StateId: org.state ? org.state.value : null,\n ZipCode: org.zip,\n LocationTypeId: constants.LOCATION_TYPES.Primary,\n };\n\n list.push(primaryLocation);\n\n if (org.sameAccountingAddress) {\n let payToLocation = Object.assign({}, primaryLocation);\n payToLocation.LocationTypeId = constants.LOCATION_TYPES.PayTo;\n list.push(payToLocation);\n } else {\n list.push({\n StreetAddress1: org.accountingAddressLine1,\n StreetAddress2: org.accountingAddressLine2,\n City: org.accountingCity,\n StateId: org.accountingState ? org.accountingState.value : null,\n ZipCode: org.accountingZip,\n LocationTypeId: constants.LOCATION_TYPES.PayTo,\n });\n }\n return list;\n }\n\n function submitRegistration() {\n setSaving(true);\n let warnings = [];\n if (!org.name || _.trim(org.name).length < 2) {\n warnings.push(\"Please provide a company name\");\n }\n if (!org.email || !helpers.emailIsValid(org.email)) {\n warnings.push(\"Please provide a valid company email.\");\n }\n if (!org.phoneNumber) {\n warnings.push(\"Please provide a company phone number.\");\n }\n if (!org.addressLine1) {\n warnings.push(\"Please provide a company address line 1.\");\n }\n if (!org.city) {\n warnings.push(\"Please provide a City.\");\n }\n if (!org.state) {\n warnings.push(\"Please provide a State.\");\n }\n if (!org.zip) {\n warnings.push(\"Please provide a Zip.\");\n }\n if (!org.einNumber || org.einNumber.length < 9) {\n warnings.push(\"Please provide a valid EIN number.\");\n }\n if (\n !org.primaryContactFirstName ||\n _.trim(org.primaryContactFirstName).length < 2\n ) {\n warnings.push(\"Please provide a valid first name for primary contact.\");\n }\n if (\n !org.primaryContactLastName ||\n _.trim(org.primaryContactLastName).length < 2\n ) {\n warnings.push(\"Please provide a valid last name for primary contact.\");\n }\n if (\n !org.primaryContactPhoneNumber ||\n _.trim(org.primaryContactPhoneNumber).length < 10\n ) {\n warnings.push(\"Please provide a valid phone number for primary contact.\");\n }\n if (\n !org.primaryContactEmail ||\n !helpers.emailIsValid(org.primaryContactEmail)\n ) {\n warnings.push(\"Please provide a valid email for primary contact.\");\n }\n if (!org.password || _.trim(org.password).length < 8) {\n warnings.push(\n \"Please provide a valid password of at least 8 characters.\"\n );\n }\n if (!org.passwordAgain || _.trim(org.passwordAgain).length < 8) {\n warnings.push(\n \"Please provide your valid confirmation password of at least 8 characters.\"\n );\n }\n if (org.password !== org.passwordAgain) {\n warnings.push(\"Your password and confirmation password do not match.\");\n }\n\n if (warnings.length) {\n Alert.error(warnings.join(\" \"));\n setSaving(false);\n return;\n }\n\n let user = {\n FirstName: org.primaryContactFirstName,\n MiddleName: org.primaryContactMiddleName,\n LastName: org.primaryContactLastName,\n Email: org.primaryContactEmail,\n Username:\n org.primaryContactUsername !== \"\"\n ? org.primaryContactUsername\n : org.primaryContactEmail,\n PhoneNumber: org.primaryContactPhoneNumber,\n Password: org.password,\n IsPrimaryContact: org.isPrimaryContact,\n };\n\n let company = {\n Id: org.id,\n Name: org.name,\n Email: org.email,\n PhoneNumber: org.phoneNumber,\n AboutUs: org.aboutUs,\n EIN: org.einNumber,\n AlternateEIN: org.alternateEIN,\n OrgTypeId: org.companyType ? org.companyType.value : null,\n };\n\n let payload = {\n User: user,\n Company: company,\n Locations: formatLocations(),\n UnitTypes:\n org.unitTypes && org.unitTypes.length\n ? _.map(org.unitTypes, (t) => {\n return { Id: t.value, Name: t.label };\n })\n : [],\n };\n\n api\n .post(`Public/RegisterOrg`, payload)\n .then((response) => {\n if (response.data.success) {\n Alert.success(\n \"Your registration is now complete! You will now be redirected to the logon screen.\"\n );\n return setTimeout(() => setRedirectToHome(\"/\"), 3000);\n } else {\n Alert.error(response.data.message || \"An error occurred.\");\n setSaving(false);\n return;\n }\n })\n .catch(helpers.catchHandler);\n }\n\n function registerButton(className) {\n return (\n \n \n \n \n \n \n submitRegistration()}\n disabled={saving}\n >\n {saving && }\n\n {\"Register\"}\n \n \n \n \n );\n }\n\n if (redirectToHome !== null) {\n return ;\n }\n\n const screenName = (\n \n Company Registration{\" \"}\n \n );\n return (\n \n {({ breakpoints, currentBreakpoint }) => {\n switch (currentBreakpoint) {\n case breakpoints.mobile:\n return
    {props.children}
    ;\n case breakpoints.desktop:\n default:\n return (\n \n \n {registerButton(\"float-right mb-2\")}\n {/* COMPANY DETAILS */}\n \n \n \n \n \n \n
    Company Profile
    \n \n
    \n
    \n \n \n \n Company Name {helpers.requiredStar()}\n \n setOrganization({\n ...org,\n name: e.target.value,\n })\n }\n value={org.name || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n \n \n \n Email {helpers.requiredStar()}\n \n setOrganization({\n ...org,\n email: e.target.value,\n })\n }\n value={org.email || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n \n \n \n Address Line 1 {helpers.requiredStar()}\n \n setOrganization({\n ...org,\n addressLine1: e.target.value,\n })\n }\n value={org.addressLine1 || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n \n \n \n Address Line 2\n \n setOrganization({\n ...org,\n addressLine2: e.target.value,\n })\n }\n value={org.addressLine2 || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n \n \n \n City {helpers.requiredStar()}\n \n setOrganization({\n ...org,\n city: e.target.value,\n })\n }\n value={org.city || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n \n State {helpers.requiredStar()}\n \n setOrganization({ ...org, state: e })\n }\n value={org.state || null}\n onBlurResetsInput={false}\n onSelectResetsInput={false}\n onCloseResetsInput={false}\n classNamePrefix=\"react-select\"\n />\n \n \n Zip {helpers.requiredStar()}\n \n setOrganization({\n ...org,\n zip: e.target.value,\n })\n }\n value={org.zip || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n \n \n \n Phone Number {helpers.requiredStar()}\n \n setOrganization({\n ...org,\n phoneNumber: e.target.value,\n })\n }\n value={org.phoneNumber || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n \n \n \n Company Type {helpers.requiredStar()}\n \n setOrganization({ ...org, companyType: e })\n }\n value={org.companyType || null}\n onBlurResetsInput={false}\n onSelectResetsInput={false}\n onCloseResetsInput={false}\n classNamePrefix=\"react-select\"\n />\n \n \n \n \n EIN Number {helpers.requiredStar()}\n \n setOrganization({\n ...org,\n einNumber: e.target.value,\n })\n }\n value={org.einNumber || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n \n \n
    \n \n
    \n\n {/* BILL TO ADDRESS */}\n \n \n \n \n \n \n
    Pay To Address
    \n \n \n \n \n \n \n
    \n
    \n {!org.sameAccountingAddress && (\n \n \n \n Address Line 1 {helpers.requiredStar()}\n \n setOrganization({\n ...org,\n accountingAddressLine1: e.target.value,\n })\n }\n value={org.accountingAddressLine1 || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n \n \n \n Address Line 2\n \n setOrganization({\n ...org,\n accountingAddressLine2: e.target.value,\n })\n }\n value={org.accountingAddressLine2 || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n \n \n \n City {helpers.requiredStar()}\n \n setOrganization({\n ...org,\n accountingCity: e.target.value,\n })\n }\n value={org.accountingCity || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n // placeholder=\"Tupelo\"\n />\n \n \n State {helpers.requiredStar()}\n \n setOrganization({\n ...org,\n accountingState: e,\n })\n }\n value={org.accountingState || null}\n onBlurResetsInput={false}\n onSelectResetsInput={false}\n onCloseResetsInput={false}\n classNamePrefix=\"react-select\"\n />\n \n \n Zip {helpers.requiredStar()}\n \n setOrganization({\n ...org,\n accountingZip: e.target.value,\n })\n }\n value={org.accountingZip || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n \n \n )}\n
    \n \n
    \n\n {/* PRIMARY USER */}\n \n \n \n
    \n \n This will be your first user for your\n organization\n \n
    \n
    \n \n \n First Name {helpers.requiredStar()}\n \n setOrganization({\n ...org,\n primaryContactFirstName: e.target.value,\n })\n }\n maxLength={50}\n value={org.primaryContactFirstName || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n \n Middle Name\n \n setOrganization({\n ...org,\n primaryContactMiddleName:\n e.target.value,\n })\n }\n value={org.primaryContactMiddleName || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n\n \n Last Name {helpers.requiredStar()}\n \n setOrganization({\n ...org,\n primaryContactLastName: e.target.value,\n })\n }\n value={org.primaryContactLastName || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n \n \n \n Phone Number {helpers.requiredStar()}\n \n setOrganization({\n ...org,\n primaryContactPhoneNumber:\n e.target.value,\n })\n }\n value={org.primaryContactPhoneNumber || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n \n \n \n Username {helpers.requiredStar()}\n \n setOrganization({\n ...org,\n primaryContactUsername: e.target.value,\n })\n }\n value={org.primaryContactUsername || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n \n \n \n Email {helpers.requiredStar()}\n {\n const fieldValue = e.target.value;\n let newOrg = {\n ...org,\n primaryContactEmail: fieldValue,\n };\n if (fieldValue) {\n const minLen = _.min([\n fieldValue.length,\n org.primaryContactUsername\n ? org.primaryContactUsername.length\n : 0,\n ]);\n if (\n minLen === 0 ||\n _.startsWith(\n org.primaryContactUsername,\n fieldValue.substring(0, minLen)\n )\n ) {\n newOrg.primaryContactUsername =\n fieldValue;\n }\n }\n setOrganization(newOrg);\n }}\n value={org.primaryContactEmail || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n \n \n \n Password {helpers.requiredStar()}\n \n setOrganization({\n ...org,\n password: e.target.value,\n })\n }\n value={org.password || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n \n \n \n Retype Password {helpers.requiredStar()}\n \n setOrganization({\n ...org,\n passwordAgain: e.target.value,\n })\n }\n value={org.passwordAgain || \"\"}\n className=\"form-control\"\n debounceTimeout={300}\n />\n \n \n
    \n
    \n }\n />\n \n \n \n setOrganization({ ...org, unitTypes: e })\n }\n />\n {registerButton(\"float-right mt-2\")}\n \n
    \n );\n }\n }}\n
    \n );\n}\n","import React, { useState, useContext, useEffect, Fragment } from \"react\";\nimport { Media } from \"react-breakpoints\";\nimport { Col, Button, Row, ButtonGroup, Table, Input } from \"reactstrap\";\nimport DebounceInput from \"react-debounce-input\";\nimport Alert from \"react-s-alert\";\nimport Select from \"react-select\";\nimport makeAnimated from \"react-select/animated\";\nimport _ from \"lodash\";\nimport { api, helpers, constants, UserContext, dateHelpers } from \"../utils\";\nimport {\n CollapsibleCardSection,\n DocumentUpload,\n OrgAccessModule,\n ProfileImageRender,\n} from \"../components\";\nimport { DesktopContainer } from \"../layouts\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\n\nconst emptyRigType = {\n id: 0,\n type: null,\n qty: 1,\n editing: true,\n};\n\nconst HaulerFirmString = \"Hauler Firm\";\n\nexport default function CompanyProfile(props) {\n const userCtx = useContext(UserContext);\n const [organization, setOrganization] = useState(null);\n const [currentCompanyType, setCurrentOrgType] = useState(null);\n const [organizationUsers, setOrganizationUsers] = useState(null);\n const [companyLocations, setCompanyLocations] = useState(null);\n const [prestineLocation, setPrestineLocation] = useState(null);\n const [stateList, setStateList] = useState([]);\n const [locationTypeList, setLocationTypeList] = useState([]);\n const [allowOrgAccessList, setAllowOrgAccessList] = useState(null);\n const [denyOrgAccessList, setDenyOrgAccessList] = useState(null);\n const [orgDocumentList, setOrgDocumentList] = useState(null);\n const [addNewRigType, setAddNewRigType] = useState(false);\n const [newRigTypeName, setNewRigTypeName] = useState(\"\");\n\n //Company related\n const [orgTypeList, setCompanyTypeList] = useState([]);\n\n //Hauler Firm related\n const [haulerRigTypes, setHaulerRigTypes] = useState(null);\n const [prestineRigType, setPrestineRigType] = useState(null);\n const [rigTypeList, setRigTypeList] = useState([]);\n\n const [profileImage, setProfileImage] = useState(null);\n\n const routeOrgId = props?.computedMatch?.params?.haulerFirmId\n ? parseInt(props.computedMatch.params.haulerFirmId, 10)\n : props?.orgId\n ? props.orgId\n : userCtx?.currentUser?.currentOrgId\n ? userCtx?.currentUser?.currentOrgId\n : 0;\n\n const getRigTypes = () =>\n api.fetch(\"public/RigTypeList\").then((r) => ({\n rigTypeList: _.map(r.data, (d) => {\n return { ...d, label: d.name, value: d.id };\n }),\n }));\n const getOrgTypes = () =>\n api.fetch(\"public/OrgTypeList\").then((r) => ({\n orgTypeList: _.map(r.data, (d) => {\n return { ...d, label: d.name, value: d.id };\n }),\n }));\n const getStateList = () =>\n api.fetch(\"public/StateList\").then((r) => ({\n stateList: _.map(r.data, (d) => {\n return { ...d, label: d.name, value: d.id };\n }),\n }));\n const getLocationTypes = () =>\n api.fetch(\"public/LocationTypeList\").then((r) => ({\n locationTypeList: _.map(r.data, (d) => {\n return { ...d, label: d.name, value: d.id };\n }),\n }));\n\n const saveNewRigType = () => {\n if (!newRigTypeName) {\n setAddNewRigType(false);\n return;\n }\n\n api\n .post(\"reference/SaveRigType\", { name: newRigTypeName })\n .then((response) => {\n if (response && response.data && response.data.success) {\n setNewRigTypeName(\"\");\n setAddNewRigType(false);\n\n getRigTypes().then((response) =>\n setRigTypeList(response.rigTypeList)\n );\n } else {\n Alert.error(response.data.message);\n }\n })\n .catch((error) =>\n Alert.error(\"There was an error saving the new rig type\")\n );\n };\n\n useEffect(() => {\n let apiCalls = [];\n apiCalls.push(getRigTypes());\n apiCalls.push(getOrgTypes());\n apiCalls.push(getStateList());\n apiCalls.push(getLocationTypes());\n Promise.all(apiCalls)\n .then((arrayResults) => {\n let aggResults = {};\n _.each(arrayResults, (x) => Object.assign(aggResults, x));\n setRigTypeList(aggResults.rigTypeList);\n setCompanyTypeList(aggResults.orgTypeList);\n setStateList(aggResults.stateList);\n setLocationTypeList(aggResults.locationTypeList);\n })\n .catch((error) =>\n Alert.error(\"There was an error loading reference data\")\n );\n }, [userCtx.currentUser]);\n\n useEffect(refreshCompanyDetails, [routeOrgId, stateList]);\n\n function refreshAccessLists() {\n api\n .fetch(`Org/GetOrgDetails/${routeOrgId}`)\n .then((response) => {\n setDenyOrgAccessList(\n response.data.denyAccessList\n ? _.map(response.data.denyAccessList, (t) => {\n t.value = t.partnerOrgId;\n t.label = t.partnerOrgName;\n t.createdAt = dateHelpers.toMDYDateString(t.createdAt);\n return t;\n })\n : []\n );\n setAllowOrgAccessList(\n response.data.allowAccessList\n ? _.map(response.data.allowAccessList, (t) => {\n t.value = t.partnerOrgId;\n t.label = t.partnerOrgName;\n t.createdAt = dateHelpers.toMDYDateString(t.createdAt);\n return t;\n })\n : []\n );\n })\n .catch((error) => {\n console.error(error);\n });\n }\n\n function refreshCompanyDetails() {\n api\n .fetch(`Org/GetOrgDetails/${routeOrgId}`)\n .then((response) => {\n if (response.data) {\n let organization = response.data.organization;\n organization.orgType = {\n label: organization.orgTypeName,\n value: organization.orgTypeId,\n };\n organization.subscriptionType = {\n label: organization.subscriptionTypeName,\n value: organization.subscriptionTypeId,\n };\n setCurrentOrgType(organization.orgType);\n setOrganization(organization);\n setCompanyLocations(\n _.map(response.data.locations, (l) => {\n l.locationType = {\n label: l.locationTypeName,\n value: l.locationTypeId,\n };\n l.state = _.find(stateList, (s) => {\n return s.value === l.stateId;\n }); //{ label: l.stateName, value: l.stateId };\n l.editing = false;\n return l;\n })\n );\n let userList = _.chain(response.data.userList)\n .filter((u) => {\n return u.roleTypeIdList.includes(\n constants.ROLE_IDS.COMPANY_ADMIN\n );\n })\n .map((u) => ({ value: u.id, label: u.fullName }))\n .value();\n organization.primaryContact = _.find(\n userList,\n (u) => u.value === organization.primaryUserId\n );\n\n setOrganizationUsers(userList);\n\n setHaulerRigTypes(\n _.map(response.data.orgRigTypes, (d) => ({\n id: d.id,\n type: { label: d.rigTypeName, value: d.rigTypeId },\n qty: d.qty,\n label: d.rigTypeName,\n value: d.rigTypeId,\n editing: false,\n }))\n );\n setDenyOrgAccessList(\n response.data.denyAccessList\n ? _.map(response.data.denyAccessList, (t) => {\n t.value = t.partnerOrgId;\n t.label = t.partnerOrgName;\n t.createdAt = dateHelpers.toMDYDateString(t.createdAt);\n return t;\n })\n : []\n );\n setAllowOrgAccessList(\n response.data.allowAccessList\n ? _.map(response.data.allowAccessList, (t) => {\n t.value = t.partnerOrgId;\n t.label = t.partnerOrgName;\n t.createdAt = dateHelpers.toMDYDateString(t.createdAt);\n return t;\n })\n : []\n );\n setOrgDocumentList(\n response.data.documents\n ? _.map(response.data.documents, (t) => {\n return t;\n })\n : []\n );\n setProfileImage(\n _.find(\n response.data.documents,\n (d) =>\n d.documentTypeId ===\n constants.DOCUMENT_TYPE_IDS.COMPANY_PROFILE_IMAGE\n )\n );\n }\n })\n .catch(() => {\n Alert(\"There was an error retrieving company details\");\n });\n }\n\n function saveCompanyProfile() {\n let warnings = [];\n if (!organization.name || _.trim(organization.name).length < 2) {\n warnings.push(\"Please provide a company name\");\n }\n if (!organization.email || !helpers.emailIsValid(organization.email)) {\n warnings.push(\"Please provide a valid company email.\");\n }\n if (!organization.phoneNumber) {\n warnings.push(\"Please provide a company phone number.\");\n }\n if (!organization.ein) {\n warnings.push(\"Please provide a EIN number.\");\n }\n if (warnings.length) {\n Alert.error(warnings.join(\" \"));\n return;\n }\n\n let payload = {\n Organization: {\n Id: organization.id,\n Name: organization.name,\n Email: organization.email,\n PhoneNumber: organization.phoneNumber,\n AboutUs: organization.aboutUs,\n Tagline: organization.tagline,\n EIN: organization.ein,\n OrgTypeId: organization.orgType ? organization.orgType.value : null,\n SubscriptionTypeId: organization.subscriptionType\n ? organization.subscriptionType.value\n : null,\n PrimaryUserId: organization.primaryContact\n ? organization.primaryContact.value\n : null,\n PaymenyGatewayApiLoginId: organization.apiLoginId,\n PaymenyGatewayTransactionKey: organization.apiTransactionKey,\n PaymentProcessorId: organization.paymentProcessor\n ? organization.paymentProcessor.value\n : null,\n },\n };\n api\n .post(`useradmin/SaveOrgDetails`, payload)\n .then((response) => {\n if (response.data.success) {\n refreshCompanyDetails();\n Alert.success(\"Your profile has been updated.\");\n } else {\n Alert.error(response.data.message || \"An error occurred.\");\n }\n })\n .catch(helpers.catchHandler);\n }\n\n function submitButton(className) {\n return (\n \n \n saveCompanyProfile()}\n >\n Save Profile\n \n \n \n );\n }\n\n function onRigTypeSelect(index, selection, name) {\n let list = Object.assign([], haulerRigTypes);\n list[index][name] = selection;\n setHaulerRigTypes(list);\n }\n async function addToRigTypes() {\n let list = Object.assign([], haulerRigTypes);\n list.unshift(Object.assign({}, emptyRigType));\n await setHaulerRigTypes(list);\n // await setNewRigType(Object.assign({}, emptyRigType));\n }\n function editRigType(index) {\n let list = Object.assign([], haulerRigTypes);\n let prestine = Object.assign({}, list[index]);\n list[index].editing = true;\n setPrestineRigType(prestine);\n setHaulerRigTypes(list);\n }\n function saveRigType(index) {\n let list = Object.assign([], haulerRigTypes);\n let rig = Object.assign({}, list[index]);\n\n let warnings = [];\n if (\n rig &&\n _.some(list, (r) => {\n return r.type.label === rig.type.label;\n })\n ) {\n warnings.push(\n \"Rig Type already exist. Please update the existing quantity\"\n );\n }\n if (!rig.qty || rig.qty < 0) {\n warnings.push(\"Please enter a valid quantity.\");\n }\n if (!rig.type) {\n warnings.push(\"Please select a rig type.\");\n }\n if (warnings.length) {\n Alert.error(warnings.join(\" \"));\n return;\n }\n let payload = {\n Id: rig.id,\n Qty: rig.qty,\n RigTypeId: rig.type ? rig.type.value : null,\n OrgId: routeOrgId,\n };\n api\n .post(`org/SaveOrgRigType`, payload)\n .then((response) => {\n if (response.data.success) {\n Alert.success(\"Rig types have been updated.\");\n refreshCompanyDetails();\n return;\n } else {\n Alert.error(response.data.message || \"An error occurred.\");\n return;\n }\n })\n .catch(helpers.catchHandler);\n }\n function onRigTypeInputChange(index, event) {\n let list = Object.assign([], haulerRigTypes);\n list[index][event.target.name] = event.target.value;\n setHaulerRigTypes(list);\n }\n function onCancelEdit(index) {\n let list = Object.assign([], haulerRigTypes);\n if (list[index].id > 0) {\n list[index] = Object.assign({}, prestineRigType);\n list[index].editing = false;\n } else {\n list = _.reject(list, (l, idx) => {\n return index === idx;\n });\n }\n setPrestineRigType(null);\n setHaulerRigTypes(list);\n }\n async function deleteFromRigTypes(index) {\n if (\n !window.confirm(\n \"Are you sure you want to delete this rig type? Deletes are final.\"\n )\n )\n return;\n let list = Object.assign([], haulerRigTypes);\n let rig = list[index];\n\n api.delete(`org/DeleteHaulerFirmRig/${rig.id}`).then((response) => {\n if (response?.data?.success) {\n Alert.success(\"Rig has been deleted\");\n refreshCompanyDetails();\n } else {\n Alert.error(\"An error occurred. Rig cannot be deleted at this time.\");\n }\n });\n }\n\n function onLocationInputChange(e, index, name) {\n let list = companyLocations.slice();\n list[index][name] = e && e.target ? e.target.value : e;\n setCompanyLocations(list);\n }\n function addLocation() {\n let list = Object.assign([], companyLocations);\n list.unshift(constants.EMPTY_LOCATION);\n setCompanyLocations(list);\n }\n function editLocation(index) {\n const list = companyLocations.slice();\n setPrestineLocation(Object.assign({}, list[index]));\n list[index].editing = true;\n setCompanyLocations(list);\n }\n function cancelEditLocation(index) {\n let list = companyLocations.slice();\n let prestine = Object.assign({}, prestineLocation);\n if (list[index].id === -1) {\n list.splice(index, 1);\n } else {\n list[index] = prestine;\n list[index].editing = false;\n }\n setCompanyLocations(list);\n setPrestineLocation(null);\n }\n function saveLocation(index) {\n const list = companyLocations.slice();\n let location = Object.assign({}, list[index]);\n let warnings = [];\n\n if (!location.locationType) {\n warnings.push(\"Please provide a location type.\");\n }\n if (!location.state) {\n warnings.push(\"Please provide a state.\");\n }\n if (\n !location.streetAddress1 ||\n _.trim(!location.streetAddress1).length < 2\n ) {\n warnings.push(\"Please provide a address line 1.\");\n }\n if (!location.zipCode || _.trim(!location.zipCode).length < 2) {\n warnings.push(\"Please provide a zip code.\");\n }\n if (!location.city || _.trim(!location.city).length < 2) {\n warnings.push(\"Please provide a city.\");\n }\n if (warnings.length) {\n Alert.error(warnings.join(\" \"));\n return;\n }\n\n let payload = {\n Id: location.id,\n orgId: routeOrgId,\n StreetAddress1: location.streetAddress1,\n StreetAddress2: location.streetAddress2,\n City: location.city,\n StateId: location.state ? location.state.value : null,\n ZipCode: location.zipCode,\n LocationTypeId: location.locationType\n ? location.locationType.value\n : null,\n TypeOfLocation: location.locationType\n ? location.locationType.value\n : null,\n };\n api\n .post(`org/SaveLocation`, payload)\n .then((response) => {\n if (response.data.success) {\n Alert.success(\"Locations have been updated.\");\n refreshCompanyDetails();\n return;\n } else {\n Alert.error(response.data.message || \"An error occurred.\");\n return;\n }\n })\n .catch(helpers.catchHandler);\n }\n function deleteLocation(index) {\n if (!window.confirm(\"Are you sure you want to delete this location?\"))\n return;\n const list = Object.assign([], companyLocations);\n let location = list[index];\n\n api.post(`org/ToggleLocationActive/${location.id}`).then((response) => {\n if (response?.data?.success) {\n Alert.success(\"Location has been deleted\");\n refreshCompanyDetails();\n } else {\n Alert.error(\n \"An error occurred. Location cannot be deleted at this time.\"\n );\n }\n });\n }\n return (\n \n {({ breakpoints, currentBreakpoint }) => {\n switch (currentBreakpoint) {\n case breakpoints.mobile:\n return
    {props.children}
    ;\n case breakpoints.desktop:\n default:\n return (\n \n {organization && (\n \n \n \n {organization === null ? null : (\n \n \n {\n \n }\n \n \n \n {currentCompanyType?.label &&\n currentCompanyType.label !==\n HaulerFirmString && (\n \n \n Company Type{\" \"}\n {helpers.requiredStar()}\n \n setOrganization({\n ...organization,\n orgType: e,\n })\n }\n isDisabled={true}\n value={\n organization.orgType || null\n }\n onBlurResetsInput={false}\n onSelectResetsInput={false}\n onCloseResetsInput={false}\n classNamePrefix=\"react-select\"\n />\n \n \n )}\n \n \n Hauler Firm Name {helpers.requiredStar()}\n \n setOrganization({\n ...organization,\n name: e.target.value,\n })\n }\n value={organization.name || \"\"}\n className=\"form-control\"\n maxLength={50}\n />\n \n \n \n \n Email {helpers.requiredStar()}\n \n setOrganization({\n ...organization,\n email: e.target.value,\n })\n }\n value={organization.email || \"\"}\n className=\"form-control\"\n // debounceTimeout={320}\n />\n \n \n \n \n Phone Number{\" \"}\n {helpers.requiredStar()}\n \n setOrganization({\n ...organization,\n phoneNumber: e.target.value,\n })\n }\n value={\n organization.phoneNumber || \"\"\n }\n className=\"form-control\"\n maxLength={20}\n />\n \n \n \n \n EIN Number\n \n setOrganization({\n ...organization,\n ein: e.target.value,\n })\n }\n value={organization.ein || \"\"}\n className=\"form-control\"\n maxLength={64}\n />\n \n \n \n \n Primary Company Contact{\" \"}\n {helpers.requiredStar()}{\" \"}\n \n (Admins)\n \n \n setOrganization({\n ...organization,\n primaryContact: e,\n })\n }\n value={\n organization.primaryContact ||\n null\n }\n onBlurResetsInput={false}\n onSelectResetsInput={false}\n onCloseResetsInput={false}\n classNamePrefix=\"react-select\"\n />\n \n \n \n\n \n \n \n
    \n About Us {helpers.requiredStar()}\n
    \n \n setOrganization({\n ...organization,\n aboutUs: e.target.value,\n })\n }\n //onChange={(event) => setOrganization(event)}\n value={organization.aboutUs}\n className=\"form-control minHeight150\"\n maxLength={500}\n placeholder=\"Description of your company\"\n />\n \n
    \n \n \n
    \n Tagline {helpers.requiredStar()}\n
    \n \n setOrganization({\n ...organization,\n tagline: e.target.value,\n })\n }\n value={organization.tagline}\n className=\"form-control minHeight150\"\n placeholder=\"Company Tagline\"\n maxLength={255}\n />\n \n
    \n \n
    \n {submitButton(\"float-right\")}\n \n
    \n
    \n }\n />\n )}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {companyLocations &&\n companyLocations.length > 0\n ? companyLocations.map(\n (l, index) => (\n \n {l.editing ? (\n \n \n Address Line 1\n {helpers.requiredStar()}\n \n onLocationInputChange(\n e,\n index,\n \"streetAddress1\"\n )\n }\n value={\n l.streetAddress1 ||\n \"\"\n }\n className=\"form-control\"\n debounceTimeout={\n 300\n }\n />\n \n \n \n \n Address Line 2\n \n onLocationInputChange(\n e,\n index,\n \"streetAddress2\"\n )\n }\n value={\n l.streetAddress2 ||\n \"\"\n }\n className=\"form-control\"\n debounceTimeout={\n 300\n }\n />\n \n \n \n \n City\n {helpers.requiredStar()}\n \n onLocationInputChange(\n e,\n index,\n \"city\"\n )\n }\n value={\n l.city || \"\"\n }\n className=\"form-control\"\n debounceTimeout={\n 300\n }\n />\n \n \n State\n {helpers.requiredStar()}\n \n onLocationInputChange(\n e,\n index,\n \"state\"\n )\n }\n value={\n l.state ||\n null\n }\n onBlurResetsInput={\n false\n }\n onSelectResetsInput={\n false\n }\n onCloseResetsInput={\n false\n }\n classNamePrefix=\"react-select\"\n />\n \n \n Zip\n {helpers.requiredStar()}\n \n onLocationInputChange(\n e,\n index,\n \"zipCode\"\n )\n }\n value={\n organization.zipCode ||\n \"\"\n }\n className=\"form-control\"\n debounceTimeout={\n 300\n }\n />\n \n \n \n \n Location Type\n {helpers.requiredStar()}\n \n onLocationInputChange(\n e,\n index,\n \"locationType\"\n )\n }\n value={\n l.locationType ||\n null\n }\n onBlurResetsInput={\n false\n }\n onSelectResetsInput={\n false\n }\n onCloseResetsInput={\n false\n }\n classNamePrefix=\"react-select\"\n />\n \n \n \n \n \n ) : (\n \n \n \n \n \n )}\n \n )\n )\n : null}\n \n
    LocationType\n addLocation()}\n title=\"Add\"\n >\n {\" \"}\n Add\n \n
    \n \n
    \n \n \n cancelEditLocation(\n index\n )\n }\n >\n \n \n \n saveLocation(\n index\n )\n }\n >\n \n \n \n \n {l.streetAddress1 && (\n
    \n {l.streetAddress1}\n
    \n )}\n {l.streetAddress2 && (\n
    \n {l.streetAddress2}\n
    \n )}\n
    \n {l.city},{\" \"}\n {l.state &&\n l.state\n .label}{\" \"}\n {l.zipCode}\n
    \n
    \n {l.locationType &&\n l.locationType\n .label}\n \n \n \n editLocation(\n index\n )\n }\n >\n \n \n \n deleteLocation(\n index\n )\n }\n >\n \n \n \n
    \n \n
    \n \n
    \n \n }\n />\n \n \n \n \n \n \n Don't see the rig type you need in the rig\n type list when adding a rig type?\n \n

    \n setAddNewRigType(true)}\n title=\"Add A New Rig Type\"\n >\n Click here to add a new rig type\n \n

    \n \n
    \n {addNewRigType && (\n \n \n \n setNewRigTypeName(e.target.value)\n }\n />\n \n \n \n setAddNewRigType(false)}\n title=\"Cancel\"\n >\n \n \n saveNewRigType()}\n title=\"Save New Rig Type\"\n >\n \n \n \n \n \n )}\n
    \n \n \n
    \n \n At least one is required\n {helpers.requiredStar()}\n \n
    \n \n \n \n \n \n Rig Type\n Qty\n \n addToRigTypes()}\n title=\"Add\"\n >\n {\" \"}\n Add\n \n \n \n \n \n {haulerRigTypes &&\n haulerRigTypes.length > 0\n ? _.map(\n haulerRigTypes,\n (r, index) => (\n \n \n {r.editing ? (\n \n \n \n onRigTypeSelect(\n index,\n event,\n \"type\"\n )\n }\n isDisabled={\n r.id > 0\n }\n />\n \n \n \n onRigTypeInputChange(\n index,\n event\n )\n }\n value={r.qty}\n className=\"form-control\"\n debounceTimeout={\n 300\n }\n placeholder=\"Qty\"\n />\n \n \n \n \n onCancelEdit(\n index\n )\n }\n title=\"Cancel\"\n >\n \n \n \n saveRigType(\n index\n )\n }\n title=\"Save\"\n >\n \n \n \n \n \n ) : (\n \n \n \n {r.type &&\n r.type.label}\n \n \n \n {r.qty}\n \n \n \n \n editRigType(\n index\n )\n }\n title=\"Edit\"\n >\n \n \n \n deleteFromRigTypes(\n index\n )\n }\n title=\"Remove from quota\"\n >\n \n \n \n \n \n )}\n \n \n )\n )\n : null}\n \n \n \n \n \n
    \n \n }\n />\n \n
    \n \n \n {orgDocumentList === null ? null : (\n \n )}\n \n \n\n {/* STRIPE DETAILS \n \n \n \n \n \n */}\n \n )}\n
    \n );\n }\n }}\n
    \n );\n}\n","import React, { useState, useContext, useEffect, Fragment } from \"react\";\nimport { Media } from \"react-breakpoints\";\nimport { Col, Button, Row, ButtonGroup, Table, Input, Label } from \"reactstrap\";\nimport DebounceInput from \"react-debounce-input\";\nimport Alert from \"react-s-alert\";\nimport Select from \"react-select\";\nimport Switch from \"react-switch\";\nimport makeAnimated from \"react-select/animated\";\nimport _ from \"lodash\";\nimport { api, helpers, constants, UserContext, dateHelpers } from \"../utils\";\nimport {\n CollapsibleCardSection,\n DocumentUpload,\n OrgAccessModule,\n ProfileImageRender,\n} from \"../components\";\nimport { DesktopContainer } from \"../layouts\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\n\nconst emptyRigType = {\n id: 0,\n type: null,\n qty: 1,\n editing: true,\n};\n\nconst HaulerFirmString = \"Hauler Firm\";\nconst DocumentItemTypeName = \"Attachment\";\nconst BooleanItemTypeName = \"Boolean\";\nconst TextItemTypeName = \"Text\";\n\nexport default function CompanyProfile(props) {\n const userCtx = useContext(UserContext);\n const user = userCtx.currentUser;\n const [organization, setOrganization] = useState(null);\n const [currentCompanyType, setCurrentOrgType] = useState(null);\n const [organizationUsers, setOrganizationUsers] = useState(null);\n const [companyLocations, setCompanyLocations] = useState(null);\n const [prestineLocation, setPrestineLocation] = useState(null);\n const [stateList, setStateList] = useState([]);\n const [locationTypeList, setLocationTypeList] = useState([]);\n const [allowOrgAccessList, setAllowOrgAccessList] = useState(null);\n const [denyOrgAccessList, setDenyOrgAccessList] = useState(null);\n const [orgDocumentList, setOrgDocumentList] = useState(null);\n const [feeTypeList, setFeeTypeList] = useState(null);\n const [checkListItemTypeList, setCheckListItemTypeList] = useState(null);\n const [documentTypeList, setDocumentTypeList] = useState(null);\n const [jobTypeList, setJobTypeList] = useState(null);\n //Company related\n const [unitTypeList, setUnitTypeList] = useState([]);\n const [orgTypeList, setCompanyTypeList] = useState([]);\n const [companyUnitTypes, setCompanyUnitTypes] = useState(null);\n const [defaultFeeList, setDefaultFeeList] = useState(null);\n const [prestineFee, setPrestineFee] = useState(null);\n const [checkListItems, setCheckListItems] = useState(null);\n const [prestineItem, setPrestineItem] = useState(null);\n\n //Hauler Firm related\n const [haulerRigTypes, setHaulerRigTypes] = useState(null);\n const [prestineRigType, setPrestineRigType] = useState(null);\n const [rigTypeList, setRigTypeList] = useState(null);\n\n const [profileImage, setProfileImage] = useState(null);\n const [selectedJobType, setSelectedJobType] = useState(null);\n const [isReordering, setIsReordering] = useState(null);\n const [paymentInfo, setPaymentInfo] = useState(null);\n\n const routeOrgId = props?.computedMatch?.params?.companyId\n ? parseInt(props.computedMatch.params.companyId, 10)\n : props?.orgId\n ? props.orgId\n : userCtx?.currentUser?.currentOrgId\n ? userCtx?.currentUser?.currentOrgId\n : 0;\n\n const getCheckListItemTypes = () =>\n api.fetch(\"public/CheckListItemTypeList\").then((r) => ({\n checkListItemTypeList: _.map(r.data, (d) => {\n return { ...d, label: d.name, value: d.id };\n }),\n }));\n const getJobTypes = () =>\n api.fetch(`public/JobTypeList`).then((r) => ({\n jobTypeList: _.map(r.data, (d) => {\n return { ...d, label: d.name, value: d.id };\n }),\n }));\n const getDocumentTypes = () =>\n api.fetch(`public/DocumentTypeList`).then((r) => ({\n documentTypeList: _.map(r.data, (d) => {\n return { ...d, label: d.name, value: d.id };\n }),\n }));\n const getFeeTypes = () =>\n api.fetch(\"public/FeeTypeList\").then((r) => ({\n feeTypeList: _.map(r.data, (d) => {\n return { ...d, label: d.name, value: d.id };\n }),\n }));\n const getRigTypes = () =>\n api.fetch(\"public/RigTypeList\").then((r) => ({\n rigTypeList: _.map(r.data, (d) => {\n return { ...d, label: d.name, value: d.id };\n }),\n }));\n const getOrgTypes = () =>\n api.fetch(\"public/OrgTypeList\").then((r) => ({\n orgTypeList: _.map(r.data, (d) => {\n return { ...d, label: d.name, value: d.id };\n }),\n }));\n const getUnitTypes = () =>\n api.fetch(\"public/UnitTypeList\").then((r) => ({\n unitTypeList: _.map(r.data, (d) => {\n return { ...d, label: d.name, value: d.id };\n }),\n }));\n const getStateList = () =>\n api.fetch(\"public/StateList\").then((r) => ({\n stateList: _.map(r.data, (d) => {\n return { ...d, label: d.name, value: d.id };\n }),\n }));\n const getLocationTypes = () =>\n api.fetch(\"public/LocationTypeList\").then((r) => ({\n locationTypeList: _.map(r.data, (d) => {\n return { ...d, label: d.name, value: d.id };\n }),\n }));\n\n useEffect(() => {\n let apiCalls = [];\n apiCalls.push(getCheckListItemTypes());\n apiCalls.push(getJobTypes());\n apiCalls.push(getDocumentTypes());\n apiCalls.push(getFeeTypes());\n apiCalls.push(getRigTypes());\n apiCalls.push(getOrgTypes());\n apiCalls.push(getUnitTypes());\n apiCalls.push(getStateList());\n apiCalls.push(getLocationTypes());\n Promise.all(apiCalls)\n .then((arrayResults) => {\n let aggResults = {};\n _.each(arrayResults, (x) => Object.assign(aggResults, x));\n setJobTypeList(aggResults.jobTypeList);\n setStateList(aggResults.states);\n setUnitTypeList(aggResults.unitTypes);\n setDocumentTypeList(aggResults.documentTypeList);\n setFeeTypeList(aggResults.feeTypeList);\n setRigTypeList(aggResults.rigTypeList);\n setCompanyTypeList(aggResults.orgTypeList);\n setUnitTypeList(aggResults.unitTypeList);\n setStateList(aggResults.stateList);\n setLocationTypeList(aggResults.locationTypeList);\n setCheckListItemTypeList(aggResults.checkListItemTypeList);\n })\n .catch((error) =>\n Alert.error(\"There was an error loading reference data\")\n );\n }, [userCtx.currentUser]);\n\n useEffect(refreshCompanyDetails, [rigTypeList, routeOrgId, stateList]);\n\n useEffect(refreshChecklistItems, [selectedJobType, routeOrgId]);\n\n function refreshChecklistItems() {\n if (!selectedJobType) {\n setCheckListItems(null);\n return;\n }\n\n api\n .fetch(\n `org/GetOrganizationJobTypeCheckListItems/${routeOrgId}/jobType/${selectedJobType.value}`\n )\n .then((response) => {\n setCheckListItems(\n _.map(response.data, (c) => {\n c.itemType = {\n value: c.checkListItemTypeId,\n label: c.checkListItemTypeName,\n };\n c.documentType = {\n value: c.documentTypeId,\n label: c.documentTypeName,\n };\n c.jobType = { value: c.jobTypeId, label: c.jobTypeName };\n c.editing = false;\n return c;\n })\n );\n setIsReordering(false);\n })\n .catch(() =>\n Alert.error(\"There was an error switching checklist job type\")\n );\n }\n\n function refreshCompanyDetails() {\n api\n .fetch(`Org/GetOrgDetails/${routeOrgId}`)\n .then((response) => {\n if (response.data) {\n let organization = response.data.organization;\n organization.orgType = {\n label: organization.orgTypeName,\n value: organization.orgTypeId,\n };\n organization.subscriptionType = {\n label: organization.subscriptionTypeName,\n value: organization.subscriptionTypeId,\n };\n organization.primaryContact = {\n label: organization.primaryContactName,\n value: organization.primaryUserId,\n };\n organization.primaryLocation = response?.data?.locations?.length\n ? _.find(response.data.locations, (l) => {\n return l.typeOfLocation === constants.LOCATION_TYPES.Primary;\n })\n : null;\n setCurrentOrgType(organization.orgType);\n setOrganization(organization);\n setCompanyLocations(\n _.map(response.data.locations, (l) => {\n l.locationType = {\n label: l.locationTypeName,\n value: l.locationTypeId,\n };\n l.state = _.find(stateList, (s) => {\n return s.value === l.stateId;\n }); //{ label: l.stateName, value: l.stateId };\n l.editing = false;\n return l;\n })\n );\n let userList = _.chain(response.data.userList)\n .filter((u) => {\n return u.roleTypeIdList.includes(\n constants.ROLE_IDS.COMPANY_ADMIN\n );\n })\n .map((u) => ({ value: u.id, label: u.fullName }))\n .value();\n setOrganizationUsers(userList);\n setCompanyUnitTypes(\n _.map(response.data.orgUnitTypes, (t) => {\n t.value = t.unitTypeId;\n t.label = t.unitTypeName;\n return t;\n })\n );\n setHaulerRigTypes(\n _.map(response.data.orgRigTypes, (d) => {\n let rig = _.find(rigTypeList, (r) => {\n return r.value === d.rigTypeId;\n });\n d.type = { label: rig.label, value: d.rigTypeId };\n d.label = rig.label;\n d.value = d.rigTypeId;\n d.editing = false;\n return d;\n })\n );\n setDenyOrgAccessList(\n response.data.denyAccessList\n ? _.map(response.data.denyAccessList, (t) => {\n t.value = t.partnerOrgId;\n t.label = t.partnerOrgName;\n t.createdAt = dateHelpers.toMDYDateString(t.createdAt);\n return t;\n })\n : []\n );\n setAllowOrgAccessList(\n response.data.allowAccessList\n ? _.map(response.data.allowAccessList, (t) => {\n t.value = t.partnerOrgId;\n t.label = t.partnerOrgName;\n t.createdAt = dateHelpers.toMDYDateString(t.createdAt);\n return t;\n })\n : []\n );\n setDefaultFeeList(\n response.data.defaultFees\n ? _.map(response.data.defaultFees, (t) => {\n t.jobType = helpers.resolveValue(\n null,\n t.typeOfJob,\n t.typeOfJobName\n );\n t.feeType = helpers.resolveValue(\n null,\n t.feeTypeId,\n t.feeTypeName\n );\n t.amount = t.amount / 100;\n return t;\n })\n : []\n );\n setOrgDocumentList(\n response.data.documents\n ? _.map(response.data.documents, (t) => {\n return t;\n })\n : []\n );\n setProfileImage(\n _.find(\n response.data.documents,\n (d) =>\n d.documentTypeId ===\n constants.DOCUMENT_TYPE_IDS.COMPANY_PROFILE_IMAGE\n )\n );\n\n if (\n organization.orgTypeId === constants.ORG_TYPE_IDS.RTO ||\n organization.orgTypeId === constants.ORG_TYPE_IDS.MANUFACTURER\n ) {\n api\n .fetch(`Org/GetOrganizationPaymentInformation/${routeOrgId}`)\n .then((x) => {\n if (x && x.data) {\n setPaymentInfo(x.data);\n }\n });\n }\n }\n })\n .catch((error) => {\n Alert(\"There was an error retrieving company details\");\n });\n }\n\n function saveCompanyProfile() {\n let warnings = [];\n if (!organization.name || _.trim(organization.name).length < 2) {\n warnings.push(\"Please provide a company name\");\n }\n if (!organization.email || !helpers.emailIsValid(organization.email)) {\n warnings.push(\"Please provide a valid company email.\");\n }\n if (!organization.phoneNumber) {\n warnings.push(\"Please provide a company phone number.\");\n }\n if (!organization.ein) {\n warnings.push(\"Please provide a EIN number.\");\n }\n if (warnings.length) {\n Alert.error(warnings.join(\" \"));\n return;\n }\n\n let payload = {\n Organization: {\n Id: organization.id,\n Name: organization.name,\n Email: organization.email,\n PhoneNumber: organization.phoneNumber,\n AboutUs: organization.aboutUs,\n Tagline: organization.tagline,\n EIN: organization.ein,\n OrgTypeId: organization.orgType ? organization.orgType.value : null,\n SubscriptionTypeId: organization.subscriptionType\n ? organization.subscriptionType.value\n : null,\n PrimaryUserId: organization.primaryContact\n ? organization.primaryContact.value\n : null,\n PaymenyGatewayApiLoginId: organization.apiLoginId,\n PaymenyGatewayTransactionKey: organization.apiTransactionKey,\n PaymentProcessorId: organization.paymentProcessor\n ? organization.paymentProcessor.value\n : null,\n },\n };\n api\n .post(`useradmin/SaveOrgDetails`, payload)\n .then((response) => {\n if (response.data.success) {\n refreshCompanyDetails();\n Alert.success(\"Your profile has been updated.\");\n return;\n } else {\n Alert.error(response.data.message || \"An error occurred.\");\n return;\n }\n })\n .catch(helpers.catchHandler);\n }\n\n function savePaymentSettings() {\n let warnings = [];\n\n if (paymentInfo.allowPayments) {\n if (!paymentInfo.stripeCustomerId) {\n warnings.push(\"Please provide a Stripe Customer Identifier\");\n }\n if (!paymentInfo.stripePublicKey) {\n warnings.push(\"Please provide a Stripe Public Key\");\n }\n if (!paymentInfo.stripeSecretKey) {\n warnings.push(\"Please provide a Stripe Secret Key\");\n }\n }\n if (warnings.length) {\n Alert.error(warnings.join(\" \"));\n return;\n }\n\n let payload = {\n OrganizationId: routeOrgId,\n AllowPayments: paymentInfo.allowPayments,\n StripeCustomerId: paymentInfo.stripeCustomerId,\n StripeSecretKey: paymentInfo.stripeSecretKey,\n StripePublicKey: paymentInfo.stripePublicKey\n };\n api\n .post(`Org/SetOrganizationPaymentInformation`, payload)\n .then((response) => {\n if (response) {\n Alert.success(\"The payment settings have been saved.\");\n return;\n } else {\n Alert.error(\"An error occurred while saving payment settings.\");\n return;\n }\n })\n .catch(helpers.catchHandler);\n }\n\n function submitButton(className) {\n return (\n \n \n saveCompanyProfile()}\n >\n Save Profile\n \n \n \n );\n }\n\n function onRigTypeSelect(index, selection, name) {\n let list = Object.assign([], haulerRigTypes);\n list[index][name] = selection;\n setHaulerRigTypes(list);\n }\n async function addToRigTypes() {\n let list = Object.assign([], haulerRigTypes);\n list.unshift(Object.assign({}, emptyRigType));\n await setHaulerRigTypes(list);\n // await setNewRigType(Object.assign({}, emptyRigType));\n }\n function editRigType(index) {\n let list = Object.assign([], haulerRigTypes);\n let prestine = Object.assign({}, list[index]);\n list[index].editing = true;\n setPrestineRigType(prestine);\n setHaulerRigTypes(list);\n }\n function saveRigType(index) {\n let list = Object.assign([], haulerRigTypes);\n let rig = Object.assign({}, list[index]);\n setHaulerRigTypes(list);\n\n let warnings = [];\n if (!rig.qty || rig.qty < 0) {\n warnings.push(\"Please enter a valid quantity.\");\n }\n if (!rig.type) {\n warnings.push(\"Please select a rig type.\");\n }\n if (warnings.length) {\n Alert.error(warnings.join(\" \"));\n return;\n }\n let payload = {\n Id: rig.id,\n Qty: rig.qty,\n RigTypeId: rig.type ? rig.type.value : null,\n OrgId: routeOrgId,\n };\n api\n .post(`org/SaveOrgRigType`, payload)\n .then((response) => {\n if (response.data.success) {\n Alert.success(\"Rig types have been updated.\");\n refreshCompanyDetails();\n return;\n } else {\n Alert.error(response.data.message || \"An error occurred.\");\n return;\n }\n })\n .catch(helpers.catchHandler);\n }\n function onRigTypeInputChange(index, event) {\n let list = Object.assign([], haulerRigTypes);\n list[index][event.target.name] = event.target.value;\n setHaulerRigTypes(list);\n }\n function onCancelEdit(index) {\n let list = Object.assign([], haulerRigTypes);\n list[index] = Object.assign({}, prestineRigType);\n list[index].editing = false;\n setPrestineRigType(null);\n setHaulerRigTypes(list);\n }\n async function deleteFromRigTypes(index) {\n if (\n !window.confirm(\n \"Are you sure you want to delete this rig type? Deletes are final.\"\n )\n )\n return;\n let list = Object.assign([], haulerRigTypes);\n let rig = list[index];\n\n api.delete(`org/DeleteHaulerFirmRig/${rig.id}`).then((response) => {\n if (response?.data?.success) {\n Alert.success(\"Rig has been deleted\");\n refreshCompanyDetails();\n } else {\n Alert.error(\"An error occurred. Rig cannot be deleted at this time.\");\n }\n });\n }\n\n function addUnitType(selection) {\n let list = Object.assign([], companyUnitTypes);\n let existingType = _.find(list, (l) => {\n return l.value === selection.value;\n });\n if (existingType !== undefined) return;\n let payload = {\n Id: 0,\n OrgId: routeOrgId,\n UnitTypeId: selection.value,\n };\n api.post(`org/SaveOrgUnitType`, payload).then((response) => {\n if (response?.data?.success) {\n Alert.success(\"Unit has been saved\");\n refreshCompanyDetails();\n } else {\n Alert.error(\"An error occurred. Unit cannot be deleted at this time.\");\n }\n });\n }\n function deleteUnitType(index) {\n if (!window.confirm(\"Are you sure you want to delete this unit type?\"))\n return;\n const list = Object.assign([], companyUnitTypes);\n let unit = list[index];\n\n api.delete(`org/DeleteOrgUnitType/${unit.id}`).then((response) => {\n if (response?.data?.success) {\n Alert.success(\"Unit has been deleted\");\n refreshCompanyDetails();\n } else {\n Alert.error(\"An error occurred. Unit cannot be deleted at this time.\");\n }\n });\n }\n\n function onLocationInputChange(e, index, name) {\n let list = companyLocations.slice();\n list[index][name] = e && e.target ? e.target.value : e;\n setCompanyLocations(list);\n }\n function addLocation() {\n let list = Object.assign([], companyLocations);\n list.unshift(constants.EMPTY_LOCATION);\n setCompanyLocations(list);\n }\n function editLocation(index) {\n const list = companyLocations.slice();\n setPrestineLocation(Object.assign({}, list[index]));\n list[index].editing = true;\n setCompanyLocations(list);\n }\n function cancelEditLocation(index) {\n let list = companyLocations.slice();\n let prestine = Object.assign({}, prestineLocation);\n if (list[index].id === -1) {\n list.splice(index, 1);\n } else {\n list[index] = prestine;\n list[index].editing = false;\n }\n setCompanyLocations(list);\n setPrestineLocation(null);\n }\n function saveLocation(index) {\n const list = companyLocations.slice();\n let location = Object.assign({}, list[index]);\n let warnings = [];\n\n if (!location.locationType) {\n warnings.push(\"Please provide a location type.\");\n }\n if (!location.state) {\n warnings.push(\"Please provide a state.\");\n }\n if (\n !location.streetAddress1 ||\n _.trim(!location.streetAddress1).length < 2\n ) {\n warnings.push(\"Please provide a address line 1.\");\n }\n if (!location.zipCode || _.trim(!location.zipCode).length < 2) {\n warnings.push(\"Please provide a zip code.\");\n }\n if (!location.city || _.trim(!location.city).length < 2) {\n warnings.push(\"Please provide a city.\");\n }\n if (warnings.length) {\n Alert.error(warnings.join(\" \"));\n return;\n }\n\n let payload = {\n Id: location.id,\n orgId: routeOrgId,\n StreetAddress1: location.streetAddress1,\n StreetAddress2: location.streetAddress2,\n City: location.city,\n StateId: location.state ? location.state.value : null,\n ZipCode: location.zipCode,\n LocationTypeId: location.locationType\n ? location.locationType.value\n : null,\n TypeOfLocation: location.locationType\n ? location.locationType.value\n : null,\n };\n api\n .post(`org/SaveLocation`, payload)\n .then((response) => {\n if (response.data.success) {\n Alert.success(\"Locations have been updated.\");\n refreshCompanyDetails();\n return;\n } else {\n Alert.error(response.data.message || \"An error occurred.\");\n return;\n }\n })\n .catch(helpers.catchHandler);\n }\n function deleteLocation(index) {\n if (!window.confirm(\"Are you sure you want to delete this location?\"))\n return;\n const list = Object.assign([], companyLocations);\n let location = list[index];\n\n api.post(`org/ToggleLocationActive/${location.id}`).then((response) => {\n if (response?.data?.success) {\n Alert.success(\"Location has been deleted\");\n refreshCompanyDetails();\n } else {\n Alert.error(\n \"An error occurred. Location cannot be deleted at this time.\"\n );\n }\n });\n }\n\n function addFee() {\n let list = Object.assign([], defaultFeeList);\n list.unshift(Object.assign({}, constants.EMPTY_DEFAULT_FEE));\n setDefaultFeeList(list);\n }\n function editFee(index) {\n let list = Object.assign([], defaultFeeList);\n setPrestineFee(Object.assign({}, list[index]));\n list[index].editing = true;\n setDefaultFeeList(list);\n }\n function cancelFeeEdit(index) {\n let list = Object.assign([], defaultFeeList);\n let prestine = Object.assign({}, prestineFee);\n if (list[index].id === -1) {\n list.splice(index, 1);\n } else {\n list[index] = prestine;\n list[index].editing = false;\n }\n setDefaultFeeList(list);\n setPrestineFee(null);\n }\n function onFeeInputChange(e, index, name) {\n let list = Object.assign([], defaultFeeList);\n list[index][name] = e && e.target ? e.target.value : e;\n setDefaultFeeList(list);\n }\n function saveFee(index) {\n let list = Object.assign([], defaultFeeList);\n let fee = Object.assign({}, list[index]);\n let warnings = [];\n if (!fee.feeType) {\n warnings.push(\"Please provide a fee type.\");\n }\n\n if (!fee.amount || _.trim(!fee.amount).length < 2) {\n warnings.push(\"Please provide a valid fee amount.\");\n }\n if (warnings.length) {\n Alert.error(warnings.join(\" \"));\n return;\n }\n let payload = {\n Id: fee.id,\n OrgId: routeOrgId,\n Amount: fee.amount !== 0 ? Number(fee.amount * 100) : fee.amount,\n FeeTypeId: fee.feeType ? fee.feeType.value : null,\n JobTypeId: fee.jobType ? fee.jobType.value : null,\n };\n api\n .post(`org/SaveDefaultFee`, payload)\n .then((response) => {\n if (response.data.success) {\n Alert.success(\"Fee has been saved.\");\n refreshCompanyDetails();\n return;\n } else {\n Alert.error(response.data.message || \"An error occurred.\");\n return;\n }\n })\n .catch(helpers.catchHandler);\n }\n function deleteFee(index) {\n if (!window.confirm(\"Are you sure you want to delete this fee type?\"))\n return;\n let list = Object.assign([], defaultFeeList);\n let fee = list[index];\n\n api.post(`org/ToggleDefaultFeeActive/${fee.id}`).then((response) => {\n if (response?.data?.success) {\n Alert.success(\"Fee has been deleted\");\n refreshCompanyDetails();\n } else {\n Alert.error(\"An error occurred. Fee cannot be deleted at this time.\");\n }\n });\n }\n\n function deleteCkItem(index) {\n if (!window.confirm(\"Are you sure you want to delete this item?\")) return;\n let list = Object.assign([], checkListItems);\n let item = list[index];\n\n api.post(`org/ToggleCheckListItemActive/${item.id}`).then((response) => {\n if (response?.data?.success) {\n Alert.success(\"Item has been deleted\");\n refreshCompanyDetails();\n } else {\n Alert.error(\"An error occurred. Item cannot be deleted at this time.\");\n }\n });\n }\n function saveCkItem(index) {\n let list = Object.assign([], checkListItems);\n let item = list[index];\n let warnings = [];\n if (!item.itemType) {\n warnings.push(\"Please provide a item type.\");\n }\n if (!selectedJobType) {\n warnings.push(\"Please provide a job type.\");\n }\n if (!item.name || _.trim(!item.name).length < 2) {\n warnings.push(\"Please provide a valid name.\");\n }\n if (!item.prompt || _.trim(!item.prompt).length < 2) {\n warnings.push(\"Please provide a valid prompt.\");\n }\n if (\n item.itemType &&\n item.itemType.label === DocumentItemTypeName &&\n !item.documentType\n ) {\n warnings.push(\"Please provide a document type.\");\n }\n if (warnings.length) {\n Alert.error(warnings.join(\" \"));\n return;\n }\n if(item.itemType && item.itemType.value === constants.CHECKLIST_ITEM_TYPE_IDS.SIGNATURE) {\n item.documentType = {\n value: constants.DOCUMENT_TYPE_IDS.SIGNATURE\n }\n }\n let payload = {\n Id: item.id,\n OrgId: routeOrgId,\n Name: item.name,\n Prompt: item.prompt,\n CheckListItemTypeId: item.itemType ? item.itemType.value : null,\n DocumentTypeId: item.documentType ? item.documentType.value : null,\n JobTypeId: selectedJobType.value,\n IsRequired: item.isRequired,\n DefaultBooleanValue: item.defaultBooleanValue,\n RegExValidation: item.regExValidation,\n Seq:\n item.id === 0\n ? checkListItems && checkListItems.length\n ? checkListItems.length + 1\n : 1\n : index + 1,\n };\n api\n .post(`org/SaveCheckListItem`, payload)\n .then((response) => {\n if (response.data.success) {\n Alert.success(\"Item has been saved.\");\n refreshChecklistItems();\n return;\n } else {\n Alert.error(response.data.message || \"An error occurred.\");\n return;\n }\n })\n .catch(helpers.catchHandler);\n }\n function addCheckListItem() {\n let list = Object.assign([], checkListItems);\n list.unshift(Object.assign({}, constants.EMPTY_CHECK_LIST_ITEM));\n setCheckListItems(list);\n }\n function editCkItem(index) {\n let list = Object.assign([], checkListItems);\n setPrestineItem(Object.assign({}, list[index]));\n list[index].editing = true;\n setCheckListItems(list);\n }\n function cancelCKItemEdit(index) {\n let list = Object.assign([], checkListItems);\n let prestine = Object.assign({}, prestineItem);\n if (list[index].id === -1) {\n list.splice(index, 1);\n } else {\n list[index] = prestine;\n list[index].editing = false;\n }\n setCheckListItems(list);\n setPrestineItem(null);\n }\n function onCkItemInputChange(e, index, fieldName) {\n let list = Object.assign([], checkListItems);\n list[index][fieldName] = e && e.target ? e.target.value : e;\n setCheckListItems(list);\n }\n function onCkItemBoolChange(index, fieldName) {\n let list = Object.assign([], checkListItems);\n list[index][fieldName] = !list[index][fieldName];\n setCheckListItems(list);\n }\n function reorderChecklistItem(oldIndex, newIndex) {\n if (\n !checkListItems ||\n !checkListItems.length ||\n checkListItems.length < 2\n ) {\n return;\n }\n const item = checkListItems.slice(oldIndex, oldIndex + 1)[0];\n let newArray = checkListItems.filter((x, index) => index !== oldIndex);\n newArray.splice(newIndex, 0, item);\n setCheckListItems(newArray);\n }\n function saveNewOrder() {\n if (!checkListItems || !selectedJobType) {\n setIsReordering(false);\n return;\n }\n\n const ids = checkListItems.map((x) => x.id);\n api\n .post(\n `org/ReorderOrganizationJobTypeCheckListItems/${routeOrgId}/jobType/${selectedJobType.value}`,\n JSON.stringify(ids)\n )\n .then((response) => {\n setCheckListItems(\n _.map(response.data, (c) => {\n c.itemType = {\n value: c.checkListItemTypeId,\n label: c.checkListItemTypeName,\n };\n c.documentType = {\n value: c.documentTypeId,\n label: c.documentTypeName,\n };\n c.jobType = { value: c.jobTypeId, label: c.jobTypeName };\n c.editing = false;\n return c;\n })\n );\n setIsReordering(false);\n })\n .catch(() => {\n Alert.error(\"There was an error re-ordering checklist items\");\n setIsReordering(false);\n });\n }\n\n return (\n \n {({ breakpoints, currentBreakpoint }) => {\n switch (currentBreakpoint) {\n case breakpoints.mobile:\n return
    {props.children}
    ;\n case breakpoints.desktop:\n default:\n return (\n \n {organization && (\n \n \n \n {organization === null ? null : (\n \n \n {\n \n }\n \n \n \n {currentCompanyType?.label &&\n currentCompanyType.label !==\n HaulerFirmString && (\n \n \n Company Type{\" \"}\n {helpers.requiredStar()}\n \n setOrganization({\n ...organization,\n orgType: e,\n })\n }\n isDisabled={true}\n value={\n organization.orgType || null\n }\n onBlurResetsInput={false}\n onSelectResetsInput={false}\n onCloseResetsInput={false}\n classNamePrefix=\"react-select\"\n />\n \n \n )}\n \n \n Name {helpers.requiredStar()}\n \n setOrganization({\n ...organization,\n name: e.target.value,\n })\n }\n value={organization.name || \"\"}\n className=\"form-control\"\n maxLength={50}\n />\n \n \n \n \n Email {helpers.requiredStar()}\n \n setOrganization({\n ...organization,\n email: e.target.value,\n })\n }\n value={organization.email || \"\"}\n className=\"form-control\"\n maxLength={320}\n />\n \n \n \n \n Phone Number{\" \"}\n {helpers.requiredStar()}\n \n setOrganization({\n ...organization,\n phoneNumber: e.target.value,\n })\n }\n value={\n organization.phoneNumber || \"\"\n }\n className=\"form-control\"\n maxLength={20}\n />\n \n \n \n \n EIN Number\n \n setOrganization({\n ...organization,\n ein: e.target.value,\n })\n }\n value={organization.ein || \"\"}\n className=\"form-control\"\n maxLength={64}\n />\n \n \n \n \n Primary Company Contact{\" \"}\n {helpers.requiredStar()}{\" \"}\n \n (Admins)\n \n \n setOrganization({\n ...organization,\n primaryContact: e,\n })\n }\n value={\n organization.primaryContact ||\n null\n }\n onBlurResetsInput={false}\n onSelectResetsInput={false}\n onCloseResetsInput={false}\n classNamePrefix=\"react-select\"\n />\n \n \n \n\n \n \n \n
    \n About Us {helpers.requiredStar()}\n
    \n \n setOrganization({\n ...organization,\n aboutUs: e.target.value,\n })\n }\n //onChange={(event) => setOrganization(event)}\n value={organization.aboutUs}\n className=\"form-control minHeight150\"\n maxLength={500}\n placeholder=\"Description of your company\"\n />\n \n
    \n \n \n
    \n Tagline {helpers.requiredStar()}\n
    \n \n setOrganization({\n ...organization,\n tagline: e.target.value,\n })\n }\n //onChange={(event) => setOrganization(event)}\n value={organization.tagline}\n className=\"form-control minHeight150\"\n maxLength={255}\n placeholder=\"Company Tagline\"\n />\n \n
    \n \n
    \n {submitButton(\"float-right\")}\n \n
    \n
    \n }\n />\n )}\n \n \n\n \n \n {user?.includeHaulerFirmModule && (\n \n \n {haulerRigTypes === null ? null : (\n \n \n
    \n \n At least one is required\n {helpers.requiredStar()}\n \n
    \n \n \n \n \n \n Rig Type\n Qty\n \n \n addToRigTypes()\n }\n title=\"Add\"\n >\n {\" \"}\n Add\n \n \n \n \n \n {haulerRigTypes &&\n haulerRigTypes.length > 0\n ? _.map(\n haulerRigTypes,\n (r, index) => (\n \n \n {r.editing ? (\n \n \n \n onRigTypeSelect(\n index,\n event,\n \"type\"\n )\n }\n isDisabled={\n r.id > 0\n }\n />\n \n \n \n onRigTypeInputChange(\n index,\n event\n )\n }\n value={\n r.qty\n }\n className=\"form-control\"\n debounceTimeout={\n 300\n }\n placeholder=\"Qty\"\n />\n \n \n \n \n onCancelEdit(\n index\n )\n }\n title=\"Cancel\"\n >\n \n \n \n saveRigType(\n index\n )\n }\n title=\"Add\"\n >\n \n \n \n \n \n ) : (\n \n \n \n {r.type &&\n r.type\n .label}\n \n \n \n \n {r.qty}\n \n \n \n \n \n editRigType(\n index\n )\n }\n title=\"Edit\"\n >\n \n \n \n deleteFromRigTypes(\n index\n )\n }\n title=\"Remove from quota\"\n >\n \n \n \n \n \n )}\n \n \n )\n )\n : null}\n \n \n \n \n \n
    \n }\n />\n )}\n \n
    \n )}\n {user?.includeCompanyAdminModule && (\n \n \n {companyUnitTypes === null ? null : (\n \n \n \n \n \n \n \n \n \n \n \n \n {companyUnitTypes &&\n companyUnitTypes.length > 0\n ? companyUnitTypes.map(\n (type, index) => (\n \n \n \n \n )\n )\n : null}\n \n
    Type\n \n addUnitType(selection)\n }\n value={null}\n classNamePrefix=\"react-select\"\n placeholder=\"Select to Add\"\n />\n
    {type.label}\n \n \n deleteUnitType(\n index\n )\n }\n >\n \n \n \n
    \n \n
    \n \n
    \n }\n />\n )}\n \n \n )}\n \n \n \n \n {allowOrgAccessList === null ? null : (\n refreshCompanyDetails()}\n orgId={routeOrgId}\n />\n )}\n \n \n {denyOrgAccessList === null ? null : (\n refreshCompanyDetails()}\n orgId={routeOrgId}\n />\n )}\n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {companyLocations &&\n companyLocations.length > 0\n ? companyLocations.map(\n (l, index) => (\n \n {l.editing ? (\n \n \n Address Line 1\n {helpers.requiredStar()}\n \n onLocationInputChange(\n e,\n index,\n \"streetAddress1\"\n )\n }\n value={\n l.streetAddress1 ||\n \"\"\n }\n className=\"form-control\"\n maxLength={150}\n />\n \n \n \n \n Address Line 2\n \n onLocationInputChange(\n e,\n index,\n \"streetAddress2\"\n )\n }\n value={\n l.streetAddress2 ||\n \"\"\n }\n className=\"form-control\"\n maxLength={150}\n />\n \n \n \n \n City\n {helpers.requiredStar()}\n \n onLocationInputChange(\n e,\n index,\n \"city\"\n )\n }\n value={\n l.city || \"\"\n }\n className=\"form-control\"\n maxLength={150}\n />\n \n \n State\n {helpers.requiredStar()}\n \n onLocationInputChange(\n e,\n index,\n \"state\"\n )\n }\n value={\n l.state ||\n null\n }\n onBlurResetsInput={\n false\n }\n onSelectResetsInput={\n false\n }\n onCloseResetsInput={\n false\n }\n classNamePrefix=\"react-select\"\n />\n \n \n Zip\n {helpers.requiredStar()}\n \n onLocationInputChange(\n e,\n index,\n \"zipCode\"\n )\n }\n value={\n l.zipCode ||\n \"\"\n }\n className=\"form-control\"\n maxLength={15}\n />\n \n \n \n \n Location Type\n {helpers.requiredStar()}\n \n onLocationInputChange(\n e,\n index,\n \"locationType\"\n )\n }\n value={\n l.locationType ||\n null\n }\n onBlurResetsInput={\n false\n }\n onSelectResetsInput={\n false\n }\n onCloseResetsInput={\n false\n }\n classNamePrefix=\"react-select\"\n />\n \n \n \n \n \n ) : (\n \n \n \n \n \n )}\n \n )\n )\n : null}\n \n
    LocationType\n addLocation()}\n title=\"Add\"\n disabled={\n companyLocations &&\n _.some(\n companyLocations,\n (s) => {\n return s.editing;\n }\n )\n }\n >\n {\" \"}\n Add\n \n
    \n \n
    \n \n \n cancelEditLocation(\n index\n )\n }\n >\n \n \n \n saveLocation(\n index\n )\n }\n >\n \n \n \n \n {l.streetAddress1 && (\n
    \n {l.streetAddress1}\n
    \n )}\n {l.streetAddress2 && (\n
    \n {l.streetAddress2}\n
    \n )}\n
    \n {l.city},{\" \"}\n {l.state &&\n l.state\n .label}{\" \"}\n {l.zipCode}\n
    \n
    \n {l.locationType &&\n l.locationType\n .label}\n \n \n \n editLocation(\n index\n )\n }\n >\n \n \n \n deleteLocation(\n index\n )\n }\n >\n \n \n \n
    \n \n
    \n \n
    \n \n }\n />\n \n {user?.includeCompanyAdminModule && (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {defaultFeeList &&\n defaultFeeList.length > 0\n ? defaultFeeList.map(\n (f, index) => (\n \n {f.editing ? (\n \n \n Job Type\n {helpers.requiredStar()}\n \n onFeeInputChange(\n e,\n index,\n \"jobType\"\n )\n }\n value={\n f.jobType ||\n null\n }\n onBlurResetsInput={\n false\n }\n onSelectResetsInput={\n false\n }\n onCloseResetsInput={\n false\n }\n classNamePrefix=\"react-select\"\n />\n \n \n \n \n Fee Type\n {helpers.requiredStar()}\n \n onFeeInputChange(\n e,\n index,\n \"feeType\"\n )\n }\n value={\n f.feeType ||\n null\n }\n onBlurResetsInput={\n false\n }\n onSelectResetsInput={\n false\n }\n onCloseResetsInput={\n false\n }\n classNamePrefix=\"react-select\"\n />\n \n \n \n \n Amount\n {helpers.requiredStar()}\n \n onFeeInputChange(\n e,\n index,\n \"amount\"\n )\n }\n value={\n f.amount ||\n \"\"\n }\n className=\"form-control\"\n debounceTimeout={\n 300\n }\n />\n \n \n \n \n \n ) : (\n \n \n \n \n \n \n )}\n \n )\n )\n : null}\n \n
    Job TypeFee TypeAmount\n addFee()}\n title=\"Add\"\n disabled={\n defaultFeeList &&\n _.some(\n defaultFeeList,\n (s) => {\n return s.editing;\n }\n )\n }\n >\n {\" \"}\n Add\n \n
    \n \n
    \n \n
    \n \n
    \n \n \n cancelFeeEdit(\n index\n )\n }\n >\n \n \n \n saveFee(index)\n }\n >\n \n \n \n \n {f.jobType &&\n f.jobType.label}\n \n {f.feeType &&\n f.feeType.label}\n \n {f.amountDisplay}\n \n \n \n editFee(index)\n }\n >\n \n \n \n deleteFee(\n index\n )\n }\n >\n \n \n \n
    \n \n
    \n \n
    \n \n }\n />\n \n )}\n
    \n\n \n {user?.includeHaulerFirmModule ? null : (\n \n \n \n \n \n setSelectedJobType(e)}\n value={selectedJobType}\n onBlurResetsInput={false}\n onSelectResetsInput={false}\n onCloseResetsInput={false}\n classNamePrefix=\"react-select\"\n />\n \n \n {checkListItems &&\n checkListItems.length > 1 &&\n !isReordering && (\n \n setIsReordering(true)\n }\n >\n Re-order\n \n )}\n {checkListItems &&\n checkListItems.length > 1 &&\n isReordering && (\n saveNewOrder()}\n >\n Save New Order\n \n )}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {checkListItems &&\n checkListItems.length > 0\n ? checkListItems.map(\n (c, index) => (\n \n {c.editing ? (\n \n \n Name\n {helpers.requiredStar()}\n \n onCkItemInputChange(\n e,\n index,\n \"name\"\n )\n }\n value={\n c.name ||\n \"\"\n }\n className=\"form-control\"\n maxLength={\n 255\n }\n />\n \n \n \n \n Item Type\n {helpers.requiredStar()}\n \n onCkItemInputChange(\n e,\n index,\n \"itemType\"\n )\n }\n value={\n c.itemType ||\n null\n }\n onBlurResetsInput={\n false\n }\n onSelectResetsInput={\n false\n }\n onCloseResetsInput={\n false\n }\n classNamePrefix=\"react-select\"\n />\n \n \n \n \n Document Type\n \n onCkItemInputChange(\n e,\n index,\n \"documentType\"\n )\n }\n value={\n c.documentType ||\n null\n }\n onBlurResetsInput={\n false\n }\n onSelectResetsInput={\n false\n }\n onCloseResetsInput={\n false\n }\n isDisabled={\n c.itemType &&\n c.itemType\n .label !==\n DocumentItemTypeName\n }\n classNamePrefix=\"react-select\"\n />\n \n \n \n \n RegExValidation\n \n onCkItemInputChange(\n e,\n index,\n \"regExValidation\"\n )\n }\n value={\n c.regExValidation ||\n \"\"\n }\n className=\"form-control\"\n maxLength={\n 100\n }\n title=\"\"\n disabled={\n c.itemType &&\n c.itemType\n .label !==\n TextItemTypeName\n }\n />\n \n \n \n \n Prompt\n {helpers.requiredStar()}\n \n onCkItemInputChange(\n e,\n index,\n \"prompt\"\n )\n }\n value={\n c.prompt ||\n \"\"\n }\n className=\"form-control\"\n maxLength={\n 255\n }\n placeholder=\"Text to be displayed on job completion\"\n />\n \n \n \n \n
    \n Default\n Boolean\n Value\n
    \n \n onCkItemBoolChange(\n index,\n \"defaultBooleanValue\"\n )\n }\n checked={\n c.defaultBooleanValue\n }\n disabled={\n c.itemType &&\n c.itemType\n .label !==\n BooleanItemTypeName\n }\n />\n \n \n
    \n Is Required?\n {helpers.requiredStar()}\n
    \n \n onCkItemBoolChange(\n index,\n \"isRequired\"\n )\n }\n checked={\n c.isRequired\n }\n />\n \n \n \n \n \n ) : (\n \n \n \n \n \n \n )}\n \n )\n )\n : null}\n \n
    TypeNameDocument Type\n \n addCheckListItem()\n }\n title=\"Add\"\n disabled={\n checkListItems &&\n _.some(\n checkListItems,\n (s) => {\n return s.editing;\n }\n )\n }\n >\n {\" \"}\n Add\n \n
    \n \n
    \n \n \n cancelCKItemEdit(\n index\n )\n }\n >\n \n \n \n saveCkItem(\n index\n )\n }\n >\n \n \n \n \n {isReordering &&\n index > 0 && (\n \n reorderChecklistItem(\n index,\n index -\n 1\n )\n }\n >\n ↑\n \n )}\n {isReordering &&\n index !==\n checkListItems.length -\n 1 && (\n \n reorderChecklistItem(\n index,\n index +\n 1\n )\n }\n >\n ↓\n \n )}\n {c.itemType &&\n c.itemType\n .label}\n
    \n \n Job Type:{\" \"}\n \n {\n c.jobType\n .label\n }\n
    \n
    \n {helpers.truncateStringOverLength(\n c.name,\n 20,\n true\n )}\n \n {c.documentType &&\n c.documentType\n .label}\n \n \n \n editCkItem(\n index\n )\n }\n >\n \n \n \n deleteCkItem(\n index\n )\n }\n >\n \n \n \n
    \n \n
    \n \n
    \n
    \n }\n />\n \n \n )}\n\n \n {orgDocumentList === null ? null : (\n \n )}\n \n
    \n {user.includeCompanyAdminModule && paymentInfo && (\n \n \n \n \n \n \n

    Enable Payments (via Stripe)

    \n \n setPaymentInfo({\n ...paymentInfo,\n allowPayments:\n !paymentInfo.allowPayments,\n })\n }\n checked={paymentInfo.allowPayments}\n />\n \n
    \n \n \n \n \n setPaymentInfo({\n ...paymentInfo,\n stripeCustomerId: e.target.value,\n })\n }\n className=\"form-control\"\n />\n \n \n \n \n \n \n setPaymentInfo({\n ...paymentInfo,\n stripePublicKey: e.target.value,\n })\n }\n className=\"form-control\"\n />\n \n \n \n \n \n \n setPaymentInfo({\n ...paymentInfo,\n stripeSecretKey: e.target.value,\n })\n }\n className=\"form-control\"\n />\n \n \n \n \n savePaymentSettings()}\n >\n Save Payment Settings\n \n \n \n \n
    \n }\n />\n \n \n )}\n \n )}\n
    \n );\n }\n }}\n
    \n );\n}\n","import React, { useState, useEffect, Fragment } from \"react\";\nimport { Media } from \"react-breakpoints\";\nimport { Col, CardImg, Row } from \"reactstrap\";\nimport { api, helpers, constants } from \"../utils\";\nimport { CollapsibleCardSection } from \"../components\";\nimport { DesktopContainer } from \"../layouts\";\n\nexport default function PublicProfileCompany(props) {\n const orgId =\n props &&\n props.computedMatch &&\n props.computedMatch.params &&\n props.computedMatch.params.id\n ? parseInt(props.computedMatch.params.id, 10)\n : props?.computedMatch?.params?.companyId\n ? parseInt(props.computedMatch.params.companyId, 10)\n : props?.computedMatch?.params?.haulerFirmId\n ? parseInt(props.computedMatch.params.haulerFirmId, 10)\n : props?.orgId\n ? props.orgId\n : 0;\n\n const [organization, setOrganization] = useState(null);\n\n useEffect(() => {\n api.fetch(`Org/GetOrgPublicProfileDetails/${orgId}`).then((response) => {\n if (response.data) {\n let organization = response.data;\n organization.orgType = {\n label: organization.orgTypeName,\n value: organization.orgTypeId,\n };\n setOrganization(organization);\n }\n });\n }, [orgId]);\n\n const profileName =\n organization !== null ? `${organization.companyName}` : \"\";\n\n return (\n \n {({ breakpoints, currentBreakpoint }) => {\n switch (currentBreakpoint) {\n case breakpoints.mobile:\n return
    {props.children}
    ;\n case breakpoints.desktop:\n default:\n return (\n \n {organization && (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {organization.companyName}\n \n {helpers.showStarRating(\n organization.orgTypeId === constants.ORG_TYPE_IDS.HAULER_FIRM\n ? organization.haulerRatingScore\n : organization.companyRatingScore\n )}\n \n \n \n {organization.primaryLocationId !==\n null ? (\n \n \n \n Location:\n \n \n \n \n {organization.streetAddress1}\n \n \n {organization.streetAddress2 && (\n \n \n {\n organization.streetAddress2\n }\n \n \n )}\n \n \n {organization.city},{\" \"}\n {organization.stateName}{\" \"}\n {organization.zipCode}\n \n \n \n ) : (\n
    \n No location set for this company.\n
    \n )}\n\n \n \n Email: \n \n {organization.companyEmail}\n \n \n \n \n \n PH:{\" \"}\n \n {\n organization.companyPhoneNumber\n }\n \n \n \n \n {organization.signedUrl && (\n \n {/**/}\n \n {/* */}\n \n )}\n
    \n \n
    \n
    \n }\n //cardFooter={\n // \n // \n // \"{organization.companyTagline}\"\n // \n // \n // }\n />\n \n \n \n\n \n {organization.aboutUs !== \"\" && (\n \n \n \n \n \n \n \n
    \n {organization.aboutUs || \"\"}\n
    \n \n
    \n \n
    \n \n }\n />\n \n
    \n )}\n {organization.primaryUserId !== null && (\n \n \n \n \n \n \n {organization.primaryUserFullName}\n \n \n \n \n \n PH: \n \n {organization.primaryUserPhoneNumber ||\n organization.companyPhoneNumber}\n \n \n \n \n \n Email: \n \n {organization.primaryUserEmail ||\n organization.companyEmail}\n \n \n \n \n }\n />\n \n \n )}\n \n \n {organization.companyTagline && (\n \n \n \"{organization.companyTagline}\"\n \n \n )}\n \n )}\n
    \n );\n }\n }}\n
    \n );\n}\n","import React, { useState, useContext, useEffect, Fragment } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { Media } from \"react-breakpoints\";\nimport {\n Card,\n CardBody,\n Col,\n Button,\n Row,\n ButtonGroup,\n Table,\n Input,\n Badge,\n} from \"reactstrap\";\nimport classnames from \"classnames\";\nimport Select from \"react-select\";\nimport makeAnimated from \"react-select/animated\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport Alert from \"react-s-alert\";\nimport DatePicker from \"react-datepicker\";\nimport \"react-datepicker/dist/react-datepicker.css\";\nimport {\n api,\n helpers,\n UserContext,\n filterHelpers,\n constants,\n dateHelpers,\n} from \"../utils\";\nimport _ from \"lodash\";\nimport {\n FilterText,\n FilterableScreen,\n FilterSet,\n FilterSwitch,\n Pager,\n FilterSelect,\n} from \"../components\";\nimport { DesktopContainer } from \"../layouts\";\n\nexport default function Subscriptions(props) {\n const userCtx = useContext(UserContext);\n const statusList = constants.SUBSCRIPTION_STATUSES;\n const [subscriptionTypeList, setSubscriptionTypeList] = useState([]);\n const [orgList, setOrgList] = useState([]);\n const [prestineSubscription, setPrestineSubscription] = useState(null);\n const [paginatedList, setPaginatedList] = useState({\n list: [],\n pageNumber: 1,\n totalPages: 1,\n });\n const [filters, setFilters] = useState([\n { filterName: \"ActiveOnly\", value: true, filteredDisplay: \"Active Only\" },\n ]);\n const [pageNumber, setPageNumber] = useState(1);\n\n const getSubscriptionTypes = () =>\n api.fetch(\"public/SubscriptionTypeList\").then((r) => ({\n subscriptionTypeList: _.map(r.data, (d) => {\n return { ...d, label: d.name, value: d.id };\n }),\n }));\n\n const getOrgList = () =>\n api\n .post(\"org/CompanySelectList\", {\n ActiveOnly: true,\n OrgTypeId: constants.ORG_TYPE_IDS.HAULER_FIRM,\n HasSubscription: false,\n })\n .then((r) => ({\n orgList: _.map(r.data, (d) => {\n return { ...d, label: d.name, value: d.id };\n }),\n }));\n\n useEffect(() => {\n let apiCalls = [];\n apiCalls.push(getSubscriptionTypes(), getOrgList());\n Promise.all(apiCalls)\n .then((arrayResults) => {\n let aggResults = {};\n _.each(arrayResults, (x) => Object.assign(aggResults, x));\n setSubscriptionTypeList(aggResults.subscriptionTypeList);\n setOrgList(aggResults.orgList);\n })\n .catch((error) =>\n Alert.error(\"There was an error loading reference data\")\n );\n }, [userCtx.currentUser]);\n\n useEffect(refreshData, [filters, pageNumber]);\n\n function refreshData() {\n let payload = {\n sortField: null,\n sortDirection: null,\n pageNumber: pageNumber,\n };\n _.each(filters, (filter) => (payload[filter.filterName] = filter.value));\n api\n .post(\"Admin/OrgSubscriptions\", payload)\n .then((response) => {\n let plist = response.data;\n plist.list = _.map(plist.list, (o) => {\n o.org = { value: o.orgId, label: o.orgName, orgTypeId: o.orgTypeId };\n o.subscriptionType = {\n value: o.subscriptionTypeId,\n label: o.subscriptionTypeName,\n };\n o.endDate = new Date(dateHelpers.dateTimeFormat(o.endDate));\n o.startDate = new Date(dateHelpers.dateTimeFormat(o.startDate));\n o.editing = false;\n o.numberOfMemberList = _.map(o.numberOfMemberList, (n) => {\n n.role = helpers.resolveValue(null, n.roleId, n.roleName);\n return n;\n });\n\n return o;\n });\n setPaginatedList(plist);\n })\n .catch(helpers.catchHandler);\n }\n\n function refreshOrgSelectList() {\n let apiCalls = [];\n apiCalls.push(getOrgList());\n Promise.all(apiCalls)\n .then((arrayResults) => {\n let aggResults = {};\n _.each(arrayResults, (x) => Object.assign(aggResults, x));\n setOrgList(aggResults.orgList);\n })\n .catch((error) =>\n Alert.error(\"There was an error loading reference data\")\n );\n }\n function onFilterChange(changedFilter) {\n const filterChanges = filterHelpers.getFilters(filters, changedFilter);\n setFilters(filterChanges);\n }\n\n function currentFilterValue(name) {\n const filterElement = _.find(filters, (f) => f.filterName === name);\n if (filterElement) {\n if (filterElement.value) {\n return filterElement.value;\n }\n return filterElement.values;\n }\n return \"\";\n }\n\n function onInputChange(e, index, fieldName) {\n let pList = Object.assign({}, paginatedList);\n pList.list[index][fieldName] = e && e.target ? e.target.value : e;\n setPaginatedList(pList);\n }\n\n function addNew() {\n let pList = Object.assign({}, paginatedList);\n pList.list.unshift(Object.assign({}, constants.EMPTY_ORG_SUBSCRIPTION));\n setPaginatedList(pList);\n }\n\n function onCancel(index) {\n let pList = Object.assign({}, paginatedList);\n if (pList.list[index].id < 0) {\n pList.list = _.reject(pList.list, (l, indx) => {\n return indx === index;\n });\n } else {\n pList.list[index] = prestineSubscription;\n pList.list[index].editing = false;\n }\n setPaginatedList(pList);\n setPrestineSubscription(null);\n refreshData();\n }\n\n function onEdit(index) {\n let pList = Object.assign({}, paginatedList);\n let prestine = Object.assign({}, pList.list[index]);\n\n setPrestineSubscription(prestine);\n pList.list[index].editing = true;\n setPaginatedList(pList);\n }\n\n function onRevive(index) {\n let plist = Object.assign({}, paginatedList);\n let item = plist.list[index];\n api\n .post(`admin/ToggleOrgSubscriptionActive/${item.id}`)\n .then((response) => {\n if (response?.data?.success) {\n Alert.success(\"Subscription has been revived\");\n refreshData();\n } else {\n Alert.error(response.data.message || \"An error occurred\");\n }\n })\n .catch((error) =>\n Alert.error(\"There was an error deleting subscription\")\n );\n }\n\n function onDelete(index) {\n if (!window.confirm(\"Are you sure you want to delete this subscription?\"))\n return;\n let plist = Object.assign({}, paginatedList);\n let item = plist.list[index];\n api\n .post(`admin/ToggleOrgSubscriptionActive/${item.id}`)\n .then((response) => {\n if (response?.data?.success) {\n Alert.success(\"Subscription has been deleted\");\n refreshData();\n } else {\n Alert.error(response.data.message || \"An error occurred\");\n }\n })\n .catch((error) =>\n Alert.error(\"There was an error deleting subscription\")\n );\n }\n function onSave(index) {\n let plist = Object.assign({}, paginatedList);\n let item = plist.list[index];\n if (!item.org) {\n Alert.warning(\"Company is required.\");\n }\n if (!item.subscriptionType) {\n Alert.warning(\"Subscription Type is required.\");\n }\n if (!item.startDate) {\n Alert.warning(\"Start Date is required.\");\n }\n if (!item.endDate) {\n Alert.warning(\"End Date is required.\");\n }\n if (item.startDate && item.endDate && item.startDate > item.endDate) {\n Alert.warning(\"Please enter a valid start and end date range.\");\n }\n if (item.numOfMember && !item.numOfMember.length) {\n Alert.warning(\n \"Please enter the allotted number of member and roles available for this subscription\"\n );\n }\n if (\n _.find(item.numberOfMemberList, (n) => {\n return n.role.value === constants.ROLE_IDS.COMPANY_ADMIN;\n }) === undefined\n ) {\n item.numberOfMemberList.push({\n id: -1,\n role: {\n value: constants.ROLE_IDS.COMPANY_ADMIN,\n label: constants.ROLE_NAMES.COMPANY_ADMIN,\n },\n amount: 1,\n });\n }\n let payload = {\n Id: item.id,\n OrgId: item.org ? item.org.value : null,\n SubscriptionTypeId: item.subscriptionType\n ? item.subscriptionType.value\n : null,\n StartDate: item.startDate,\n EndDate: item.endDate,\n NumberOfMemberList: _.map(item.numberOfMemberList, (m) => ({\n Id: m.id,\n OrgSubscriptionId: m.orgSubscriptionId ? m.orgSubscriptionId : item.id,\n RoleId: m.role ? m.role.value : null,\n Amount: m.amount ? parseInt(m.amount) : 0,\n })),\n };\n api\n .post(\"admin/SaveOrgSubscription\", payload)\n .then((response) => {\n if (response?.data?.success) {\n Alert.success(\"Subscription has been saved\");\n //setCompanyMember(null);\n refreshData();\n refreshOrgSelectList();\n } else {\n Alert.error(response.data.message || \"An error occurred\");\n }\n })\n .catch((error) => Alert.error(\"There was an error saving subscription\"));\n }\n\n function onMemberInputChange(subIndex, value, roleIdx) {\n let plist = Object.assign({}, paginatedList);\n let memberList = plist.list[subIndex].numberOfMemberList;\n memberList[roleIdx].amount = value;\n plist.list[subIndex].numberOfMemberList = memberList;\n setPaginatedList(plist);\n }\n return (\n \n {({ breakpoints, currentBreakpoint }) => {\n switch (currentBreakpoint) {\n case breakpoints.mobile:\n return
    {props.children}
    ;\n case breakpoints.desktop:\n default:\n return (\n \n \n \n \n setFilters([])}\n >\n \n \n onFilterChange(e)}\n />\n \n \n onFilterChange(e)}\n clearValue={() =>\n onFilterChange({\n filterName: \"Status\",\n value: null,\n })\n }\n />\n \n \n onFilterChange(e)}\n clearValue={() =>\n onFilterChange({\n filterName: \"SubscriptionTypeId\",\n value: null,\n })\n }\n />\n \n\n \n onFilterChange(e)}\n />\n \n \n \n \n \n \n \n \n \n \n \n \n \n }\n pager={\n
    \n \n setPageNumber(newPageNumber)\n }\n />\n
    \n }\n >\n \n \n \n \n {paginatedList &&\n paginatedList.list &&\n !_.some(paginatedList.list, (l) => {\n return l.editing;\n }) && (\n \n Company\n Subscription Status\n Subscription Type\n Expiration Date\n \n addNew()}\n >\n Add New\n Subscription\n \n \n \n )}\n \n \n {paginatedList.list && paginatedList.list.length ? (\n _.map(paginatedList.list, (o, subIndex) => (\n \n {o.editing ? (\n \n \n \n \n \n \n {o.id < 0 &&\n orgList &&\n !orgList.length && (\n \n There are no Companies\n requiring subscriptions at\n this time\n \n )}\n \n \n Company\n \n onInputChange(\n e,\n subIndex,\n \"org\"\n )\n }\n value={o.org || null}\n onBlurResetsInput={false}\n onSelectResetsInput={false}\n onCloseResetsInput={false}\n classNamePrefix=\"react-select\"\n isDisabled={o.id > 0}\n />\n \n \n Subscription Type\n \n onInputChange(\n e,\n subIndex,\n \"subscriptionType\"\n )\n }\n value={\n o.subscriptionType || null\n }\n onBlurResetsInput={false}\n onSelectResetsInput={false}\n onCloseResetsInput={false}\n classNamePrefix=\"react-select\"\n />\n \n \n Start Date\n
    \n \n onInputChange(\n e,\n subIndex,\n \"startDate\"\n )\n }\n />\n
    \n \n \n End Date\n
    \n \n onInputChange(\n e,\n subIndex,\n \"endDate\"\n )\n }\n />\n
    \n \n
    \n \n \n \n Add Number Of Users Per Role\n \n \n \n \n \n \n One admin user is\n allotted by default\n \n \n \n \n \n \n \n \n \n \n \n \n \n {o.numberOfMemberList.map(\n (\n r,\n roleIdx\n ) => (\n \n \n \n \n )\n )}\n \n
    RoleAmount
    \n {\n r.role\n .label\n }\n \n \n onMemberInputChange(\n subIndex,\n e\n .target\n .value,\n roleIdx\n )\n }\n />\n
    \n \n
    \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n \n \n \n onCancel(subIndex)}\n title={`Cancel Edit`}\n >\n \n \n {o.id < 0 &&\n orgList &&\n !orgList.length ? null : (\n onSave(subIndex)}\n title={`Save subscription for ${o.orgName}`}\n >\n \n \n )}\n \n \n
    \n ) : (\n \n \n \n {o.orgName}\n \n \n \n \n {o.isSubscriptionActive\n ? \"Active\"\n : \"Inactive\"}\n \n \n {o.subscriptionTypeName}\n \n {dateHelpers.dateTimeFormat(\n o.endDate,\n \"MM/DD/YYYY\"\n )}\n \n \n \n {o.deactivatedAt ? (\n onRevive(subIndex)}\n title={`Revive subscription for ${o.orgName}`}\n disabled={_.some(\n paginatedList.list,\n (p) => p.editing\n )}\n >\n \n \n ) : (\n \n onEdit(subIndex)}\n title={`Edit subscription for ${o.orgName}`}\n disabled={_.some(\n paginatedList.list,\n (p) => p.editing\n )}\n >\n \n \n onDelete(subIndex)}\n title={`Delete subscription for ${o.orgName}`}\n disabled={_.some(\n paginatedList.list,\n (p) => p.editing\n )}\n >\n \n \n \n )}\n \n \n \n )}\n \n ))\n ) : (\n \n No records found\n \n )}\n \n \n \n
    \n \n
    \n );\n }\n }}\n
    \n );\n}\n","import React, { useState } from \"react\";\nimport { Col, Row, Nav, NavItem, NavLink, TabContent, TabPane } from \"reactstrap\";\nimport classnames from \"classnames\";\nimport { DesktopContainer } from \"../layouts\";\nimport { Media } from \"react-breakpoints\";\nimport {\n CompanyRatings,\n HaulerRatings\n} from \"./\"; \n\nexport default function RatingsContainer(props) {\n const [activeTab, setActiveTab] = useState('hauler_ratings');\n\n function tabToggle(tab) {\n if (activeTab !== tab) {\n setActiveTab(tab);\n }\n }\n\n return (\n \n {({ breakpoints, currentBreakpoint }) => {\n switch (currentBreakpoint) {\n case breakpoints.mobile:\n return
    {props.children}
    ;\n case breakpoints.desktop:\n default:\n return (\n \n \n \n \n {activeTab === \"hauler_ratings\" && \n \n \n \n \n \n }\n \n \n {activeTab === \"company_ratings\" && \n \n \n \n \n \n }\n \n \n \n );\n }\n }}\n
    \n );\n}","import React, { useState, useContext, useEffect, Fragment } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { Media } from \"react-breakpoints\";\nimport {\n Card,\n CardBody,\n Col,\n Button,\n Row,\n ButtonGroup,\n Table,\n} from \"reactstrap\";\nimport classnames from \"classnames\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport Alert from \"react-s-alert\";\nimport {\n api,\n helpers,\n UserContext,\n filterHelpers,\n dateHelpers,\n constants\n} from \"../utils\";\nimport _ from \"lodash\";\nimport {\n FilterableScreen,\n FilterSet,\n FilterSwitch,\n FilterSelect,\n Pager,\n RatingModule,\n} from \"../components\";\nimport { DesktopContainer } from \"../layouts\";\n\nexport default function CompanyRatings(props) {\n const userCtx = useContext(UserContext);\n // const [orgList, setOrgList] = useState([]);\n const [haulerList, setHaulerList] = useState([]);\n const [manufacturerRTOList, setManufacturerRTOList] = useState([]);\n const [paginatedList, setPaginatedList] = useState({\n list: [],\n pageNumber: 1,\n totalPages: 1,\n });\n const [filters, setFilters] = useState([\n { filterName: \"ActiveOnly\", value: true, filteredDisplay: \"Active Only\" },\n ]);\n const [pageNumber, setPageNumber] = useState(1);\n\n const getOrgList = () =>\n api\n .post(\"org/CompanySelectList\", {\n ActiveOnly: true,\n })\n .then((r) => ({\n // orgList: _.map(r.data, (d) => {\n // return { ...d, label: d.name, value: d.id };\n // }),\n haulerList: _.chain(r.data)\n .filter((d) => {\n return d.orgTypeId === constants.ORG_TYPE_IDS.HAULER_FIRM\n })\n .map((d) => ({ ...d, label: d.name, value: d.id }))\n .value(),\n manufacturerRTOList: _.chain(r.data)\n .filter((d) => {\n return d.orgTypeId !== constants.ORG_TYPE_IDS.HAULER_FIRM\n })\n .map((d) => ({ ...d, label: d.name, value: d.id }))\n .value()\n }));\n\n useEffect(() => {\n let apiCalls = [];\n apiCalls.push(getOrgList());\n Promise.all(apiCalls)\n .then((arrayResults) => {\n let aggResults = {};\n _.each(arrayResults, (x) => Object.assign(aggResults, x));\n // setOrgList(aggResults.orgList);\n setHaulerList(aggResults.haulerList);\n setManufacturerRTOList(aggResults.manufacturerRTOList);\n })\n .catch((error) =>\n Alert.error(\"There was an error loading reference data\")\n );\n }, [userCtx.currentUser]);\n\n useEffect(refreshData, [filters, pageNumber]);\n\n function refreshData() {\n let payload = {\n sortField: null,\n sortDirection: null,\n pageNumber: pageNumber,\n };\n _.each(filters, (filter) => (payload[filter.filterName] = filter.value));\n api\n .post(\"Admin/GetManufacturerOrRTORatings\", payload)\n .then((response) => {\n let plist = response.data;\n plist.list = _.map(plist.list, (r) => {\n return {\n performedForOrg: {\n label: r.organizationName,\n value: r.orgId,\n },\n performedByHauler: { // not the greatest way to get this, but should work\n label: r.jobDriverOrgName, \n value: r.jobDriverOrgId,\n },\n performedByUser: {\n label: r.createdByUserFullName,\n value: r.createdByUserId,\n },\n score: r.score,\n comment: r.comment,\n id: r.id,\n deactivatedAt: r.deactivatedAt,\n createdAt: r.createdAt\n };\n });\n setPaginatedList(plist);\n })\n .catch(helpers.catchHandler);\n }\n\n function onFilterChange(changedFilter) {\n const filterChanges = filterHelpers.getFilters(filters, changedFilter);\n setFilters(filterChanges);\n }\n\n function onToggleCommentView(index) {\n let pList = Object.assign({}, paginatedList);\n pList.list[index].viewing = !pList.list[index].viewing;\n setPaginatedList(pList);\n }\n\n function onToggleActive(index, type) {\n let plist = Object.assign({}, paginatedList);\n let item = plist.list[index];\n if (\n !window.confirm(\n `Are you sure you want to ${type.toLowerCase()} this rating?`\n )\n )\n return;\n\n api\n .post(`Admin/ToggleRatingActive/${item.id}`)\n .then((response) => {\n if (response?.data?.success) {\n Alert.success(`Rating has been ${type.toLowerCase()}d`);\n refreshData();\n } else {\n Alert.error(response.data.message || \"An error occurred\");\n }\n })\n .catch((error) => Alert.error(\"There was an error updating rating\"));\n }\n\n return (\n \n {({ breakpoints, currentBreakpoint }) => {\n switch (currentBreakpoint) {\n case breakpoints.mobile:\n return
    {props.children}
    ;\n case breakpoints.desktop:\n default:\n return (\n \n \n \n \n setFilters([])}\n >\n \n \n onFilterChange(e)}\n clearValue={() =>\n onFilterChange({\n filterName: \"PerformedForOrgId\",\n value: null,\n })\n }\n />\n \n \n onFilterChange(e)}\n clearValue={() =>\n onFilterChange({\n filterName: \"PerformedByHaulerId\",\n value: null,\n })\n }\n />\n \n \n onFilterChange(e)}\n />\n \n \n \n \n \n \n \n \n \n \n \n \n \n }\n pager={\n
    \n \n setPageNumber(newPageNumber)\n }\n />\n
    \n }\n >\n \n \n \n \n \n Performed For\n Performed By\n Score\n {/* No Show? */}\n Entered At\n \n \n \n \n {paginatedList.list && paginatedList.list.length ? (\n _.map(paginatedList.list, (r, index) => (\n \n \n \n
    \n Company:{\" \"}\n {r.performedForOrg.value && (\n \n {r.performedForOrg.label}\n \n )}\n
    \n {/*
    \n User:{\" \"}\n {r.performedForUser.value && (\n \n {r.performedForUser.label}\n \n )}\n
    */}\n \n \n
    \n Hauling Firm:{\" \"}\n \n {r.performedByHauler.label}\n \n
    \n
    \n User:{\" \"}\n \n {r.performedByUser.label}\n \n
    \n \n \n \n \n {/* \n {r.noShow && (\n \n )}\n */}\n \n {dateHelpers.dateTimeFormat(\n r.createdAt,\n \"MM/DD/YYYY\"\n )}\n \n \n \n {r.deactivatedAt ? (\n \n onToggleActive(index, \"Revive\")\n }\n title={`Revive rating`}\n >\n \n \n ) : (\n \n \n onToggleCommentView(index)\n }\n title={`View Comment`}\n >\n \n \n\n \n onToggleActive(index, \"Delete\")\n }\n title={`Delete rating`}\n >\n \n \n \n )}\n \n \n \n {r.viewing && (\n \n \n \n \n
    \n Comment\n
    \n
    {r.comment}
    \n
    \n
    \n \n \n )}\n
    \n ))\n ) : (\n \n No records found\n \n )}\n \n \n \n
    \n \n
    \n );\n }\n }}\n
    \n );\n}\n","import React, { useState, useContext, useEffect, Fragment } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { Media } from \"react-breakpoints\";\nimport {\n Card,\n CardBody,\n Col,\n Button,\n Row,\n ButtonGroup,\n Table,\n} from \"reactstrap\";\nimport classnames from \"classnames\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport Alert from \"react-s-alert\";\nimport {\n api,\n helpers,\n UserContext,\n filterHelpers,\n dateHelpers,\n constants\n} from \"../utils\";\nimport _ from \"lodash\";\nimport {\n FilterableScreen,\n FilterSet,\n FilterSwitch,\n FilterSelect,\n Pager,\n RatingModule,\n} from \"../components\";\nimport { DesktopContainer } from \"../layouts\";\n\nexport default function HaulerRatings(props) {\n const userCtx = useContext(UserContext);\n // const [orgList, setOrgList] = useState([]);\n const [haulerList, setHaulerList] = useState([]);\n const [manufacturerRTOList, setManufacturerRTOList] = useState([]);\n const [paginatedList, setPaginatedList] = useState({\n list: [],\n pageNumber: 1,\n totalPages: 1,\n });\n const [filters, setFilters] = useState([\n { filterName: \"ActiveOnly\", value: true, filteredDisplay: \"Active Only\" },\n ]);\n const [pageNumber, setPageNumber] = useState(1);\n\n const getOrgList = () =>\n api\n .post(\"org/CompanySelectList\", {\n ActiveOnly: true,\n })\n .then((r) => ({\n // orgList: _.map(r.data, (d) => {\n // return { ...d, label: d.name, value: d.id };\n // }),\n haulerList: _.chain(r.data)\n .filter((d) => {\n return d.orgTypeId === constants.ORG_TYPE_IDS.HAULER_FIRM\n })\n .map((d) => ({ ...d, label: d.name, value: d.id }))\n .value(),\n manufacturerRTOList: _.chain(r.data)\n .filter((d) => {\n return d.orgTypeId !== constants.ORG_TYPE_IDS.HAULER_FIRM\n })\n .map((d) => ({ ...d, label: d.name, value: d.id }))\n .value()\n }));\n\n useEffect(() => {\n let apiCalls = [];\n apiCalls.push(getOrgList());\n Promise.all(apiCalls)\n .then((arrayResults) => {\n let aggResults = {};\n _.each(arrayResults, (x) => Object.assign(aggResults, x));\n // setOrgList(aggResults.orgList);\n setHaulerList(aggResults.haulerList);\n setManufacturerRTOList(aggResults.manufacturerRTOList);\n })\n .catch((error) =>\n Alert.error(\"There was an error loading reference data\")\n );\n }, [userCtx.currentUser]);\n\n useEffect(refreshData, [filters, pageNumber]);\n\n function refreshData() {\n let payload = {\n sortField: null,\n sortDirection: null,\n pageNumber: pageNumber,\n };\n _.each(filters, (filter) => (payload[filter.filterName] = filter.value));\n api\n .post(\"Admin/GetHaulerRatings\", payload)\n .then((response) => {\n let plist = response.data;\n plist.list = _.map(plist.list, (r) => {\n return {\n performedForHauler: { // not the greatest way to get this, but should work since driver must be set for job to be complete\n label: r.organizationName,\n value: r.orgId,\n },\n performedByCompany: { \n label: r.jobOrgName, \n value: r.jobOrgId,\n },\n performedByUser: {\n label: r.createdByUserFullName,\n value: r.createdByUserId,\n },\n score: r.score,\n comment: r.comment,\n id: r.id,\n deactivatedAt: r.deactivatedAt,\n createdAt: r.createdAt,\n noShow: r.hide\n };\n });\n setPaginatedList(plist);\n })\n .catch(helpers.catchHandler);\n }\n\n function onFilterChange(changedFilter) {\n const filterChanges = filterHelpers.getFilters(filters, changedFilter);\n setFilters(filterChanges);\n }\n\n function onToggleCommentView(index) {\n let pList = Object.assign({}, paginatedList);\n pList.list[index].viewing = !pList.list[index].viewing;\n setPaginatedList(pList);\n }\n\n function onToggleActive(index, type) {\n let plist = Object.assign({}, paginatedList);\n let item = plist.list[index];\n if (\n !window.confirm(\n `Are you sure you want to ${type.toLowerCase()} this rating?`\n )\n )\n return;\n\n api\n .post(`Admin/ToggleRatingActive/${item.id}`)\n .then((response) => {\n if (response?.data?.success) {\n Alert.success(`Rating has been ${type.toLowerCase()}d`);\n refreshData();\n } else {\n Alert.error(response.data.message || \"An error occurred\");\n }\n })\n .catch((error) => Alert.error(\"There was an error updating rating\"));\n }\n\n return (\n \n {({ breakpoints, currentBreakpoint }) => {\n switch (currentBreakpoint) {\n case breakpoints.mobile:\n return
    {props.children}
    ;\n case breakpoints.desktop:\n default:\n return (\n \n \n \n \n setFilters([])}\n >\n \n \n onFilterChange(e)}\n clearValue={() =>\n onFilterChange({\n filterName: \"PerformedForOrgId\",\n value: null,\n })\n }\n />\n \n \n onFilterChange(e)}\n clearValue={() =>\n onFilterChange({\n filterName: \"PerformedByCompanyId\",\n value: null,\n })\n }\n />\n \n \n onFilterChange(e)}\n />\n \n \n \n \n \n \n \n \n \n \n \n \n \n }\n pager={\n
    \n \n setPageNumber(newPageNumber)\n }\n />\n
    \n }\n >\n \n \n \n \n \n Performed For\n Performed By\n Score\n No Show?\n Entered At\n \n \n \n \n {paginatedList.list && paginatedList.list.length ? (\n _.map(paginatedList.list, (r, index) => (\n \n \n \n
    \n Hauling Firm:{\" \"}\n {r.performedForHauler.value && (\n \n {r.performedForHauler.label}\n \n )}\n
    \n {/*
    \n User:{\" \"}\n {r.performedForUser.value && (\n \n {r.performedForUser.label}\n \n )}\n
    */}\n \n \n
    \n Company:{\" \"}\n \n {r.performedByCompany.label}\n \n
    \n
    \n User:{\" \"}\n \n {r.performedByUser.label}\n \n
    \n \n \n \n \n \n {r.noShow && (\n \n )}\n \n \n {dateHelpers.dateTimeFormat(\n r.createdAt,\n \"MM/DD/YYYY\"\n )}\n \n \n \n {r.deactivatedAt ? (\n \n onToggleActive(index, \"Revive\")\n }\n title={`Revive rating`}\n >\n \n \n ) : (\n \n \n onToggleCommentView(index)\n }\n title={`View Comment`}\n >\n \n \n\n \n onToggleActive(index, \"Delete\")\n }\n title={`Delete rating`}\n >\n \n \n \n )}\n \n \n \n {r.viewing && (\n \n \n \n \n
    \n Comment\n
    \n
    {r.comment}
    \n
    \n
    \n \n \n )}\n
    \n ))\n ) : (\n \n No records found\n \n )}\n \n \n \n
    \n \n
    \n );\n }\n }}\n
    \n );\n}\n","import React, { useContext, useEffect, useState } from \"react\";\nimport { Button, Col, Input, Row } from \"reactstrap\";\nimport { DesktopContainer } from \"../layouts\";\nimport AsyncSelect from \"react-select/async\";\nimport _ from \"lodash\";\nimport Alert from \"react-s-alert\";\nimport { api, dateHelpers, UserContext } from \"../utils\";\nimport { useInterval } from \"../hooks/useInterval\";\n\nconst ChatBubble = ({ message, myId }) => {\n const sentByMe = message.sentById === myId;\n return (\n {`${message.sentByFullName} - ${message.message}`}\n );\n};\n\nexport default function Chats() {\n const [chats, setChats] = useState([]);\n const [selectedUser, setSelectedUser] = useState(null);\n const [selectedChat, setSelectedChat] = useState(null);\n const [chatMessages, setChatMessages] = useState([]);\n const [message, setMessage] = useState([]);\n const [userAutoComplete, setUserAutoComplete] = useState(\"\");\n const userContext = useContext(UserContext);\n const [messagePagingAvailable, setMessagePagingAvailable] = useState(false);\n\n const loadUsers = (inputValue, callback) => {\n if (!inputValue || !inputValue.length || inputValue.length < 3) {\n return;\n }\n\n api\n .fetch(`chat/UserTypeahead/${inputValue}`)\n .then((response) => {\n let list = _.map(response.data, (d) => {\n return { label: d.name, value: d.id };\n });\n callback(list);\n })\n .catch((_error) => {\n Alert.error(\"There was an error finding the person\");\n });\n };\n\n const loadChatMessagesWithReset = () => {\n if (!selectedChat) {\n return;\n }\n\n api\n .fetch(`chat/GetChatMessages/${selectedChat.id}/1`)\n .then((response) => {\n if (response.data) {\n setMessagePagingAvailable(\n response.data.totalPages > response.data.pageNumber\n );\n\n setChatMessages(response.data.list);\n }\n })\n .catch((_error) => {\n Alert.error(\"There was an error loading chat messages\");\n });\n };\n\n const loadChatMessages = (chatId) => {\n if (!chatId) {\n return;\n }\n\n api\n .fetch(`chat/GetChatMessages/${chatId}/1`)\n .then((response) => {\n if (response.data) {\n //add new messages to the front of the list\n const newMessages = _.differenceBy(\n response.data.list,\n chatMessages,\n \"id\"\n );\n const messages = newMessages.slice().concat(chatMessages);\n setChatMessages(_.orderBy(messages, [\"id\"], [\"desc\"]));\n }\n })\n .catch((_error) => {\n Alert.error(\"There was an error loading chat messages\");\n });\n };\n\n const loadMoreMessages = () => {\n if (!selectedChat || !chatMessages || chatMessages.length === 0) {\n return;\n }\n\n const minId = _.minBy(chatMessages, \"id\").id;\n api\n .fetch(`chat/GetEarlierChatMessages/${selectedChat.id}/${minId}`)\n .then((response) => {\n const messages = chatMessages.slice().concat(response.data.list);\n setChatMessages(messages);\n setMessagePagingAvailable(\n response.data.totalPages > response.data.pageNumber\n );\n })\n .catch((_error) => {\n Alert.error(\"There was an error fetching more chat messages\");\n });\n };\n\n const loadChats = () => {\n api\n .fetch(`chat/GetMostRecentChats`)\n .then((response) => {\n if (response.data) {\n setChats(response.data.list);\n }\n })\n .catch((_error) => {\n Alert.error(\"There was an error loading chats\");\n });\n };\n\n const sendMessage = () => {\n if (!selectedUser && !selectedChat) {\n Alert(\"No chat or person is selected\");\n return;\n }\n if (!message) {\n Alert(\"Message cannot be empty\");\n return;\n }\n\n const isNew = !selectedChat;\n\n var url = isNew ? \"chat/CreateChat\" : \"chat/SendMessage\";\n\n var data = isNew\n ? {\n UserId: selectedUser.value,\n Message: message,\n }\n : {\n ChatId: selectedChat.id,\n Message: message,\n };\n\n api\n .post(url, data)\n .then((response) => {\n setMessage(\"\");\n if (isNew) {\n setSelectedChat(response.data);\n } else {\n setChatMessages(\n _.orderBy(\n [].concat([response.data]).concat(chatMessages),\n [\"id\"],\n [\"desc\"]\n )\n );\n }\n })\n .catch((_error) => {\n Alert.error(\"There was an error sending message\");\n });\n };\n\n const getChatName = (chat) => {\n if (!userContext || !chat) {\n return \"\";\n }\n return userContext.currentUser.id === chat.user1Id\n ? chat.user2FullName\n : chat.user1FullName;\n };\n\n const isChatNew = (chat) => {\n if (!userContext || !chat) {\n return false;\n }\n\n if (selectedChat && selectedChat.id === chat.id) {\n return false;\n }\n\n return userContext.currentUser.id === chat.user1Id\n ? !chat.user1Read\n : !chat.user2Read;\n };\n\n useEffect(() => {\n if (selectedUser) {\n api\n .fetch(`chat/GetChatWithUser/${selectedUser.value}`)\n .then((response) => {\n if (response.data) {\n setSelectedChat(response.data);\n } else {\n setChatMessages([]);\n setSelectedChat(null);\n }\n })\n .catch((_error) => {\n Alert.error(\"There was an error finding the chat\");\n setChatMessages([]);\n setSelectedChat(null);\n });\n }\n }, [selectedUser]);\n\n useEffect(loadChatMessagesWithReset, [selectedChat]);\n\n useEffect(loadChats, []);\n\n useInterval(() => {\n if (selectedChat) {\n loadChatMessages(selectedChat.id);\n }\n }, 10000);\n\n useInterval(() => {\n loadChats();\n }, 60000);\n\n return (\n \n \n \n loadUsers(inputValue, callBack),\n 500\n )}\n placeholder={\"Enter person to chat\"}\n onChange={(e) => setSelectedUser(e)}\n value={selectedUser}\n inputValue={userAutoComplete}\n onInputChange={(e) => setUserAutoComplete(e)}\n isClearable={true}\n />\n {chats && chats.length > 0 && (\n
    \n Click on a chat for messages:\n
    \n )}\n {chats &&\n chats.length > 0 &&\n chats.map((x) => (\n setSelectedChat(x)}>\n {`${getChatName(x)} - ${dateHelpers.dateTimeFormat(\n x.lastMessageAt\n )}`}\n \n ))}\n \n \n {selectedUser && !selectedChat && (\n <>\n \n \n There is no chat with {selectedUser.label} yet. Enter a\n message below to start one with them:\n \n \n \n \n setMessage(e.target.value)}\n onKeyPress={(event) => {\n if (event.key === \"Enter\") {\n sendMessage();\n }\n }}\n />\n \n \n \n \n \n \n \n \n )}\n {selectedChat && (\n <>\n \n \n setMessage(e.target.value)}\n onKeyPress={(event) => {\n if (event.key === \"Enter\") {\n sendMessage();\n }\n }}\n />\n \n \n sendMessage()}\n color=\"primary\"\n >\n Send Message\n \n \n \n \n \n
    Chat with {getChatName(selectedChat)}
    \n \n
    \n \n \n
    \n {chatMessages &&\n chatMessages.map((x) => (\n \n \n \n \n \n ))}\n {messagePagingAvailable && (\n loadMoreMessages()}\n style={{ margin: \"0 auto\" }}\n color=\"link\"\n >\n More\n \n )}\n
    \n \n
    \n \n )}\n \n
    \n
    \n );\n}\n","import React, { Fragment, useState, useEffect } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { Media } from \"react-breakpoints\";\nimport { Col, Button, Row, Table, ButtonGroup, Alert } from \"reactstrap\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport _ from \"lodash\";\n\nimport { api, constants, filterHelpers, helpers, dateHelpers } from \"../utils\";\nimport {\n DateFilter,\n FilterableScreen,\n FilterSet,\n Pager,\n FilterMultiSelect,\n SHBSpinner,\n} from \"../components\";\nimport { DesktopContainer } from \"../layouts\";\n\nexport default function Invoices(props) {\n const [loading, setLoading] = useState(false);\n const [paginatedList, setPaginatedList] = useState({\n list: [],\n pageNumber: 1,\n totalPages: 1,\n });\n const [filters, setFilters] = useState([]);\n const [pageNumber, setPageNumber] = useState(1);\n const [orgList, setOrgList] = useState([]);\n\n useEffect(refreshData, [filters, pageNumber]);\n\n useEffect(getOrgList, []);\n\n function refreshData() {\n setLoading(true);\n let payload = {\n PageNumber: pageNumber,\n PageSize: 25,\n MaxResults: 25,\n };\n _.each(filters, (filter) => (payload[filter.filterName] = filter.value));\n api\n .post(\"Invoice/FindPaginatedInvoices\", payload)\n .then((response) => {\n if (response && response.data) {\n setPaginatedList(response.data);\n }\n })\n .catch(helpers.catchHandler)\n .finally(() => setLoading(false));\n }\n\n function getOrgList() {\n api\n .post(\"Org/CompanySelectList\", { SortField: \"NAME\" })\n .then((response) => {\n if (response && response.data) {\n setOrgList(\n response.data.map((x) => {\n return {\n value: x.id,\n label: x.name,\n };\n })\n );\n }\n })\n .catch(helpers.catchHandler);\n }\n\n function onFilterChange(changedFilter) {\n const filterChanges = filterHelpers.getFilters(filters, changedFilter);\n setFilters(filterChanges);\n }\n\n function generatePdf(invoiceId) {\n api\n .fetchWithPdfReturn(`Invoice/GetInvoicePdf/${invoiceId}`)\n .then((response) => {\n const fileName = `invoice_${invoiceId}.pdf`;\n if (window.navigator && window.navigator.msSaveOrOpenBlob) {\n window.navigator.msSaveOrOpenBlob(response.data, fileName);\n } else {\n const file = new Blob([response.data], { type: constants.MIME_PDF });\n if (navigator.msSaveBlob) {\n navigator.msSaveBlob(file, fileName);\n } else {\n var link = document.createElement(\"a\");\n if (link.download !== undefined) {\n var url = URL.createObjectURL(file);\n link.setAttribute(\"href\", url);\n link.setAttribute(\"download\", fileName);\n link.style.visibility = \"hidden\";\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n }\n }\n })\n .catch((e) => {\n console.error(e);\n Alert.error(\"There was an error loading the invoice pdf\");\n });\n }\n\n function changeStatus(invoiceId, invoiceStatusId, deliverEmail) {\n if (\n !window.confirm(\n `Are you sure you'd like to change the status of the invoice?`\n )\n ) {\n return;\n }\n\n const payload = {\n InvoiceId: invoiceId,\n InvoiceStatusId: invoiceStatusId,\n DeliverEmail: !!deliverEmail,\n };\n\n api\n .post(`Invoice/ChangeInvoiceStatus/`, payload)\n .then(() => {\n refreshData();\n })\n .catch(() => {\n Alert.error(\"There was an error changing the invoice status\");\n });\n }\n\n return (\n \n {({ breakpoints, currentBreakpoint }) => {\n switch (currentBreakpoint) {\n case breakpoints.mobile:\n return (\n
    \n \n {props.children}\n \n
    \n );\n case breakpoints.desktop:\n default:\n return (\n \n \n \n \n \n setFilters([])}\n >\n \n \n onFilterChange(e)}\n options={constants.INVOICE_STATUSES}\n />\n \n \n onFilterChange(e)}\n />\n \n \n onFilterChange(e)}\n />\n \n \n onFilterChange(e)}\n options={orgList}\n />\n \n \n \n \n \n \n \n Un-Invoiced Items\n \n \n \n \n \n \n \n \n }\n pager={\n
    \n \n setPageNumber(newPageNumber)\n }\n />\n
    \n }\n >\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {paginatedList?.list?.length ? (\n _.map(paginatedList.list, (j, index) => (\n \n \n \n \n \n \n \n \n ))\n ) : (\n \n \n \n )}\n \n
    Invoice #Invoice DateStatusForTotal
    {j.id}\n {dateHelpers.formatDateToShortDate(\n j.createdAt\n )}\n {j.invoiceStatusName}{j.organizationName}{j.totalDisplay}\n generatePdf\n \n {\n e.stopPropagation();\n generatePdf(j.id);\n }}\n >\n Invoice Pdf\n \n {j.invoiceStatusId ===\n constants.INVOICE_STATUS_IDS\n .pending && (\n <>\n \n changeStatus(\n j.id,\n constants.INVOICE_STATUS_IDS\n .delivered,\n true\n )\n }\n >\n \n Deliver Email\n \n \n changeStatus(\n j.id,\n constants.INVOICE_STATUS_IDS\n .delivered,\n false\n )\n }\n >\n Mark Delivered\n \n \n changeStatus(\n j.id,\n constants.INVOICE_STATUS_IDS\n .cancelled,\n false\n )\n }\n >\n Mark Cancelled\n \n \n )}\n {j.invoiceStatusId ===\n constants.INVOICE_STATUS_IDS\n .delivered && (\n <>\n \n changeStatus(\n j.id,\n constants.INVOICE_STATUS_IDS\n .paid,\n false\n )\n }\n >\n Mark Paid\n \n \n changeStatus(\n j.id,\n constants.INVOICE_STATUS_IDS\n .declined,\n false\n )\n }\n >\n Mark Declined\n \n \n changeStatus(\n j.id,\n constants.INVOICE_STATUS_IDS\n .cancelled,\n false\n )\n }\n >\n Mark Cancelled\n \n \n )}\n \n
    No invoices found
    \n \n
    \n \n
    \n \n );\n }\n }}\n
    \n );\n}\n","import React, { useState, useEffect, Fragment } from \"react\";\nimport { Media } from \"react-breakpoints\";\nimport { Col, Button, Input, Row, Table } from \"reactstrap\";\nimport Switch from \"react-switch\";\nimport Alert from \"react-s-alert\";\nimport { api, constants, helpers } from \"../utils\";\nimport { SHBSpinner } from \"../components\";\nimport { DesktopContainer } from \"../layouts\";\nimport _ from \"lodash\";\n\nexport default function UnInvoicedLineItems(props) {\n const [orgList, setOrgList] = useState([]);\n const [groupedData, setGroupedData] = useState([]);\n const [selectedOrgId, setSelectedOrgId] = useState(\"\");\n const [loading, setLoading] = useState(false);\n const [comment, setComment] = useState(\"\");\n\n useEffect(getUninvoicedLineItemsForOrg, [selectedOrgId]);\n\n useEffect(getOrgList, []);\n\n function getUninvoicedLineItemsForOrg() {\n if (!selectedOrgId) {\n return;\n }\n\n setLoading(true);\n api\n .fetch(`Invoice/GetUnInvoicedInvoiceLineItemsForOrg/${selectedOrgId}`)\n .then((response) => {\n if (response && response.data) {\n const data = response.data.map((x) => {\n return {\n ...x,\n invoiceLines: x.invoiceLines.map((l) => {\n return {\n ...l,\n tempAmount: (l.amount / 100).toFixed(2).toString(),\n };\n }),\n };\n });\n setGroupedData(data);\n }\n })\n .catch(helpers.catchHandler)\n .finally(() => setLoading(false));\n }\n\n function getOrgList() {\n api\n .post(\"Org/CompanySelectList\", { SortField: \"NAME\" })\n .then((response) => {\n if (response && response.data) {\n setOrgList(response.data);\n }\n })\n .catch(helpers.catchHandler);\n }\n\n function createInvoice(sendEmail) {\n _.each(groupedData, (x) => {\n if (\n _.find(x.invoiceLines, function (y) {\n return y.description === \"Total Job Compensation Amount\" && y.includeInInvoice;\n }) && _.filter(x.invoiceLines, z => z.includeInInvoice).length > 1\n ) {\n Alert.error(\"Please submit either Total Job Compensation Amount or individual line items for each job in invoice\");\n return false;\n }\n return true;\n })\n\n\n const allLineItems = _.flatten(\n groupedData.map((x) => {\n return x.invoiceLines;\n })\n );\n\n if (\n _.find(allLineItems, function (x) {\n return isNaN(x.tempAmount);\n })\n ) {\n Alert.error(\"Please ensure all amounts are valid\");\n return false;\n }\n\n if (\n !_.find(allLineItems, function (x) {\n return x.includeInInvoice;\n })\n ) {\n Alert.error(\"Please enable at least one line item to invoice\");\n return false;\n }\n\n const validatedLineItems = allLineItems.map((x) => {\n return {\n ...x,\n amount: parseFloat(x.tempAmount) * 100,\n };\n });\n\n const payload = {\n OrgId: selectedOrgId,\n InvoiceLines: validatedLineItems,\n Comment: comment,\n DeliverEmail: sendEmail,\n };\n\n api\n .post(\"Invoice/CreateInvoice\", payload)\n .then(() => {\n Alert.success(\"The invoice was created\");\n getUninvoicedLineItemsForOrg();\n setComment(\"\");\n })\n .catch(helpers.catchHandler);\n }\n\n function changeValue(jobIndex, itemIndex, fieldName, value) {\n const newGroupedData = groupedData.map((x, index) => {\n if (index === jobIndex) {\n return {\n ...x,\n invoiceLines: x.invoiceLines.map((l, lineIndex) => {\n if (lineIndex === itemIndex) {\n return {\n ...l,\n [fieldName]: value,\n };\n } else {\n return l;\n }\n }),\n };\n } else {\n return x;\n }\n });\n setGroupedData(newGroupedData);\n }\n\n return (\n \n {({ breakpoints, currentBreakpoint }) => {\n switch (currentBreakpoint) {\n case breakpoints.mobile:\n return (\n
    \n \n {props.children}\n \n
    \n );\n case breakpoints.desktop:\n default:\n return (\n \n \n \n \n setSelectedOrgId(e.target.value)}\n >\n \n {orgList &&\n orgList.length > 0 &&\n orgList.map((x, index) => (\n \n ))}\n \n \n \n {selectedOrgId && (\n <>\n createInvoice(true)}\n className=\"btn\"\n style={{ float: \"right\" }}\n >\n Create Invoice and Email\n \n createInvoice(false)}\n className=\"btn\"\n style={{ float: \"right\", marginRight: \"1rem\" }}\n >\n Create Invoice as Pending\n \n \n )}\n \n \n \n \n \n setComment(e.target.value)}\n />\n \n \n \n \n {groupedData && groupedData.length > 0 && (\n \n \n \n \n \n \n \n {groupedData.map((x, index) => (\n \n \n \n {x.jobHeaderDescription}\n \n \n \n
    \n \n \n \n \n \n \n \n \n {x.invoiceLines.map((l, lineIndex) => (\n \n \n \n \n \n ))}\n \n
    \n Description\n AmountInclude In Invoice
    \n \n changeValue(\n index,\n lineIndex,\n \"description\",\n e.target.value\n )\n }\n disabled={l.description === \"Total Job Compensation Amount\"}\n />\n \n \n changeValue(\n index,\n lineIndex,\n \"tempAmount\",\n e.target.value\n )\n }\n />\n \n \n changeValue(\n index,\n lineIndex,\n \"includeInInvoice\",\n !l.includeInInvoice\n )\n }\n />\n
    \n \n \n ))}\n \n \n )}\n {groupedData && groupedData.length === 0 && (\n
    \n No un-invoiced items found for this organization\n
    \n )}\n \n
    \n
    \n \n );\n }\n }}\n
    \n );\n}\n","import React from \"react\";\nimport { Row, Col, Container } from \"reactstrap\";\n\nexport default function Privacy(props) {\n const privacyPolicyHtml = `\n \n
    \n
    PRIVACY NOTICE

    Last updated December 22, 2021



    Thank you for choosing to be part of our community at Shed Hauler's Brotherhood (\"Company,\" \"we,\" \"us,\" or \"our\"). We are committed to protecting your personal information and your right to privacy. If you have any questions or concerns about this privacy notice or our practices with regard to your personal information, please contact us at __________.

    This privacy notice describes how we might use your information if you:
    • Download and use our mobile applicationSHB
    • Engage with us in other related ways ― including any sales, marketing, or events
    In this privacy notice, if we refer to:
    • \"Website,\" we are referring to any website of ours that references or links to this policy
    • \"App,\" we are referring to any application of ours that references or links to this policy, including any listed above
    • \"Services,\" we are referring to our Website, App, and other related services, including any sales, marketing, or events
    The purpose of this privacy notice is to explain to you in the clearest way possible what information we collect, how we use it, and what rights you have in relation to it. If there are any terms in this privacy notice that you do not agree with, please discontinue use of our Services immediately.

    Please read this privacy notice carefully, as it will help you understand what we do with the information that we collect.

    TABLE OF CONTENTS


    1. WHAT INFORMATION DO WE COLLECT?

    Personal information you disclose to us

    In Short:  We collect personal information that you provide to us.

    We collect personal information that you voluntarily provide to us when you register on the Services, express an interest in obtaining information about us or our products and Services, when you participate in activities on the Services (such as by posting messages in our online forums or entering competitions, contests or giveaways) or otherwise when you contact us.

    The personal information that we collect depends on the context of your interactions with us and the Services, the choices you make and the products and features you use. The personal information we collect may include the following:

    Personal Information Provided by You. We collect namesphone numbersemail addressesmailing addressesusernamespasswordscontact preferencesbilling addressesand other similar information.

    Payment Data. We may collect data necessary to process your payment if you make purchases, such as your payment instrument number (such as a credit card number), and the security code associated with your payment instrument. All payment data is stored by Stripe. You may find their privacy notice link(s) here: https://stripe.com/privacy.

    All personal information that you provide to us must be true, complete and accurate, and you must notify us of any changes to such personal information.

    Information collected through our App

    In Short:  We collect information regarding your geolocation, mobile device, push notifications, when you use our App.

    If you use our App, we also collect the following information:
    • Geolocation Information. We may request access or permission to and track location-based information from your mobile device, either continuously or while you are using our App, to provide certain location-based services. If you wish to change our access or permissions, you may do so in your device's settings.
    • Mobile Device Access. We may request access or permission to certain features from your mobile device, including your mobile device's camera, and other features. If you wish to change our access or permissions, you may do so in your device's settings.
    • Mobile Device Data. We automatically collect device information (such as your mobile device ID, model and manufacturer), operating system, version information and system configuration information, device and application identification numbers, browser type and version, hardware model, Internet service provider and/or mobile carrier, and Internet Protocol (IP) address (or proxy server). If you are using our App, we may also collect information about the phone network associated with your mobile device, your mobile device’s operating system or platform, the type of mobile device you use, your mobile device’s unique device ID and information about the features of our App you accessed.
    • Push Notifications. We may request to send you push notifications regarding your account or certain features of the App. If you wish to opt-out from receiving these types of communications, you may turn them off in your device's settings.
    This information is primarily needed to maintain the security and operation of our App, for troubleshooting and for our internal analytics and reporting purposes.

    2. HOW DO WE USE YOUR INFORMATION?

    In Short:  We process your information for purposes based on legitimate business interests, the fulfillment of our contract with you, compliance with our legal obligations, and/or your consent.

    We use personal information collected via our Services for a variety of business purposes described below. We process your personal information for these purposes in reliance on our legitimate business interests, in order to enter into or perform a contract with you, with your consent, and/or for compliance with our legal obligations. We indicate the specific processing grounds we rely on next to each purpose listed below.

    We use the information we collect or receive:
    • To facilitate account creation and logon process. If you choose to link your account with us to a third-party account (such as your Google or Facebook account), we use the information you allowed us to collect from those third parties to facilitate account creation and logon process for the performance of the contract.
    • To post testimonials. We post testimonials on our Services that may contain personal information. Prior to posting a testimonial, we will obtain your consent to use your name and the content of the testimonial. If you wish to update, or delete your testimonial, please contact us at shedhaulersbrotherhood@gmail.com and be sure to include your name, testimonial location, and contact information.
    • Request feedback. We may use your information to request feedback and to contact you about your use of our Services.
    • To enable user-to-user communications. We may use your information in order to enable user-to-user communications with each user's consent.
    • To manage user accounts. We may use your information for the purposes of managing our account and keeping it in working order.

    • Fulfill and manage your orders. We may use your information to fulfill and manage your orders, payments, returns, and exchanges made through the Services.

    • Administer prize draws and competitions. We may use your information to administer prize draws and competitions when you elect to participate in our competitions.

    • To deliver and facilitate delivery of services to the user. We may use your information to provide you with the requested service.

    • To respond to user inquiries/offer support to users. We may use your information to respond to your inquiries and solve any potential issues you might have with the use of our Services.

    3. WILL YOUR INFORMATION BE SHARED WITH ANYONE?

    In Short:  We only share information with your consent, to comply with laws, to provide you with services, to protect your rights, or to fulfill business obligations.

    We may process or share your data that we hold based on the following legal basis:
    • Consent: We may process your data if you have given us specific consent to use your personal information for a specific purpose.
    • Legitimate Interests: We may process your data when it is reasonably necessary to achieve our legitimate business interests.
    • Performance of a Contract: Where we have entered into a contract with you, we may process your personal information to fulfill the terms of our contract.
    • Legal Obligations: We may disclose your information where we are legally required to do so in order to comply with applicable law, governmental requests, a judicial proceeding, court order, or legal process, such as in response to a court order or a subpoena (including in response to public authorities to meet national security or law enforcement requirements).
    • Vital Interests: We may disclose your information where we believe it is necessary to investigate, prevent, or take action regarding potential violations of our policies, suspected fraud, situations involving potential threats to the safety of any person and illegal activities, or as evidence in litigation in which we are involved.
    More specifically, we may need to process your data or share your personal information in the following situations:
    • Business Transfers. We may share or transfer your information in connection with, or during negotiations of, any merger, sale of company assets, financing, or acquisition of all or a portion of our business to another company.
    • Other Users. When you share personal information (for example, by posting comments, contributions or other content to the Services) or otherwise interact with public areas of the Services, such personal information may be viewed by all users and may be publicly made available outside the Services in perpetuity. Similarly, other users will be able to view descriptions of your activity, communicate with you within our Services, and view your profile.

    4. HOW LONG DO WE KEEP YOUR INFORMATION?

    In Short:  We keep your information for as long as necessary to fulfill the purposes outlined in this privacy notice unless otherwise required by law.

    We will only keep your personal information for as long as it is necessary for the purposes set out in this privacy notice, unless a longer retention period is required or permitted by law (such as tax, accounting or other legal requirements). No purpose in this notice will require us keeping your personal information for longer than the period of time in which users have an account with us.

    When we have no ongoing legitimate business need to process your personal information, we will either delete or anonymize such information, or, if this is not possible (for example, because your personal information has been stored in backup archives), then we will securely store your personal information and isolate it from any further processing until deletion is possible.

    5. HOW DO WE KEEP YOUR INFORMATION SAFE?

    In Short:  We aim to protect your personal information through a system of organizational and technical security measures.

    We have implemented appropriate technical and organizational security measures designed to protect the security of any personal information we process. However, despite our safeguards and efforts to secure your information, no electronic transmission over the Internet or information storage technology can be guaranteed to be 100% secure, so we cannot promise or guarantee that hackers, cybercriminals, or other unauthorized third parties will not be able to defeat our security, and improperly collect, access, steal, or modify your information. Although we will do our best to protect your personal information, transmission of personal information to and from our Services is at your own risk. You should only access the Services within a secure environment.

    6. DO WE COLLECT INFORMATION FROM MINORS?

    In Short:  We do not knowingly collect data from or market to children under 18 years of age.

    We do not knowingly solicit data from or market to children under 18 years of age. By using the Services, you represent that you are at least 18 or that you are the parent or guardian of such a minor and consent to such minor dependent’s use of the Services. If we learn that personal information from users less than 18 years of age has been collected, we will deactivate the account and take reasonable measures to promptly delete such data from our records. If you become aware of any data we may have collected from children under age 18, please contact us at shedhaulersbrotherhood@gmail.com.

    7. WHAT ARE YOUR PRIVACY RIGHTS?

    In Short:  You may review, change, or terminate your account at any time.
     
    If you are a resident in the EEA or UK and you believe we are unlawfully processing your personal information, you also have the right to complain to your local data protection supervisory authority. You can find their contact details here: https://ec.europa.eu/justice/data-protection/bodies/authorities/index_en.htm.

    If you are a resident in Switzerland, the contact details for the data protection authorities are available here: https://www.edoeb.admin.ch/edoeb/en/home.html.

    Account Information

    If you would at any time like to review or change the information in your account or terminate your account, you can:
    • Log in to your account settings and update your user account.
    Upon your request to terminate your account, we will deactivate or delete your account and information from our active databases. However, we may retain some information in our files to prevent fraud, troubleshoot problems, assist with any investigations, enforce our Terms of Use and/or comply with applicable legal requirements.

    Opting out of email marketing: You can unsubscribe from our marketing email list at any time by clicking on the unsubscribe link in the emails that we send or by contacting us using the details provided below. You will then be removed from the marketing email list — however, we may still communicate with you, for example to send you service-related emails that are necessary for the administration and use of your account, to respond to service requests, or for other non-marketing purposes. To otherwise opt-out, you may:
    • Access your account settings and update your preferences.

    8. CONTROLS FOR DO-NOT-TRACK FEATURES

    Most web browsers and some mobile operating systems and mobile applications include a Do-Not-Track (\"DNT\") feature or setting you can activate to signal your privacy preference not to have data about your online browsing activities monitored and collected. At this stage no uniform technology standard for recognizing and implementing DNT signals has been finalized. As such, we do not currently respond to DNT browser signals or any other mechanism that automatically communicates your choice not to be tracked online. If a standard for online tracking is adopted that we must follow in the future, we will inform you about that practice in a revised version of this privacy notice. 

    9. DO CALIFORNIA RESIDENTS HAVE SPECIFIC PRIVACY RIGHTS?

    In Short:  Yes, if you are a resident of California, you are granted specific rights regarding access to your personal information.

    California Civil Code Section 1798.83, also known as the \"Shine The Light\" law, permits our users who are California residents to request and obtain from us, once a year and free of charge, information about categories of personal information (if any) we disclosed to third parties for direct marketing purposes and the names and addresses of all third parties with which we shared personal information in the immediately preceding calendar year. If you are a California resident and would like to make such a request, please submit your request in writing to us using the contact information provided below.

    If you are under 18 years of age, reside in California, and have a registered account with a Service, you have the right to request removal of unwanted data that you publicly post on the Services. To request removal of such data, please contact us using the contact information provided below, and include the email address associated with your account and a statement that you reside in California. We will make sure the data is not publicly displayed on the Services, but please be aware that the data may not be completely or comprehensively removed from all our systems (e.g. backups, etc.).

    10. DO WE MAKE UPDATES TO THIS NOTICE?     

    In Short:  Yes, we will update this notice as necessary to stay compliant with relevant laws.

    We may update this privacy notice from time to time. The updated version will be indicated by an updated \"Revised\" date and the updated version will be effective as soon as it is accessible. If we make material changes to this privacy notice, we may notify you either by prominently posting a notice of such changes or by directly sending you a notification. We encourage you to review this privacy notice frequently to be informed of how we are protecting your information.

    11. HOW CAN YOU CONTACT US ABOUT THIS NOTICE?     

    If you have questions or comments about this notice, you may email us at shedhaulersbrotherhood@gmail.com or by post to:

    Shed Hauler's Brotherhood
    __________
    __________

    12. HOW CAN YOU REVIEW, UPDATE, OR DELETE THE DATA WE COLLECT FROM YOU?     

    Based on the applicable laws of your country, you may have the right to request access to the personal information we collect from you, change that information, or delete it in some circumstances. To request to review, update, or delete your personal information, please submit a request form by clicking here.
    \n
    \n
    \n This privacy policy was created using Termly's Privacy Policy Generator.\n
    \n `;\n\n return (\n \n \n \n \n \n );\n}\n","import React, { Fragment, useState, useContext, useEffect } from \"react\";\nimport { Redirect, Link } from \"react-router-dom\";\nimport Alert from \"react-s-alert\";\nimport { Media } from \"react-breakpoints\";\nimport { Calendar, Views, dateFnsLocalizer } from 'react-big-calendar';\nimport \"react-big-calendar/lib/css/react-big-calendar.css\";\nimport \"react-big-calendar/lib/addons/dragAndDrop/styles.css\";\nimport format from 'date-fns/format';\nimport parse from 'date-fns/parse';\nimport startOfWeek from 'date-fns/startOfWeek';\nimport getDay from 'date-fns/getDay';\nimport enUS from 'date-fns/locale/en-US';\nimport {\n Col,\n Button,\n Row,\n Table,\n ButtonGroup,\n Alert as Alert2,\n Badge,\n UncontrolledTooltip,\n} from \"reactstrap\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport _ from \"lodash\";\nimport moment from \"moment\";\nimport {\n api,\n constants,\n UserContext,\n filterHelpers,\n helpers,\n dateHelpers,\n} from \"../utils\";\nimport {\n DateFilter,\n FilterText,\n FilterableScreen,\n FilterSet,\n Pager,\n FilterMultiSelect,\n FilterSwitch,\n RatingModule,\n ScheduleModal,\n SHBSpinner,\n} from \"../components\";\nimport { DesktopContainer } from \"../layouts\";\n\nconst getInitialJobStatus = (jobStatusId) => {\n if (!jobStatusId) return null;\n\n const selectedFilter = _.find(\n constants.JOB_STATUSES,\n (x) => x.value === parseInt(jobStatusId, 10)\n );\n\n if (!selectedFilter) return null;\n\n return {\n filterName: \"jobStatusIds\",\n filteredDisplay: `Job Status: ${selectedFilter.label}`,\n labels: [selectedFilter.label],\n value: [selectedFilter.value],\n };\n};\n\nconst EMPTY_SCHEDULE_CRITERIA = {\n orgId: 0, \n startsAfter: \"\",\n startsBefore: \"\",\n timezone: \"\",\n activeOnly: true,\n };\n\nexport default function ScheduleViewer(props) {\n const today = new Date();\n const userCtx = useContext(UserContext);\n const currentUser = userCtx.currentUser;\n const isSysAdmin = currentUser.isSysAdmin;\n const isCompany = currentUser.isCompanyUser;\n const isHaulerUser = currentUser.isHaulerUser;\n const isDispatcher =\n currentUser.currentRoleId === constants.ROLE_IDS.DISPATCHER ||\n currentUser.isHaulerAdminUser;\n const isDriver = currentUser.currentRoleId === constants.ROLE_IDS.DRIVER;\n const isCompanyAdmin = currentUser.currentRoleId === constants.ROLE_IDS.COMPANY_ADMIN && isCompany; // admin role can be hauler or company admins\n const isCompanyClerk = currentUser.currentRoleId === constants.ROLE_IDS.COMPANY_CLERK;\n const [message, setMessage] = useState(null);\n \n const [loading, setLoading] = useState(false);\n const [redirectToJob, setRedirectToJob] = useState(null);\n const jobStatusId =\n props.computedMatch.params && props.computedMatch.params.jobStatusId\n ? props.computedMatch.params.jobStatusId\n : props.location &&\n props.location.state &&\n props.location.state.jobStatusId\n ? props.location.state.jobStatusId\n : null;\n\n const initialJobStatus = getInitialJobStatus(jobStatusId);\n\n const [currentJobs, setCurrentJobs] = useState([]);\n const [selectedDate, setSelectedDate] = useState(null);\n const [calendarView, setCalendarView] = useState(Views.MONTH);\n const [selectedJob, setSelectedJob] = useState();\n let initialScheduleCriteria = {\n timezone: userCtx && userCtx.currentUser && userCtx.currentUser.timezone, \n jobId: selectedJob && selectedJob.value,\n // startsAfter: selectedDate ? selectedDate : formatDateTimeForServer(moment().day(0).toDate()), // set intial range start to the sunday of the current week\n // startsBefore: selectedDate ? selectedDate : formatDateTimeForServer(moment().day(6).toDate()) // set intial range end to the saturday of the current week\n startsAfter: selectedDate ? selectedDate : formatDateTimeForServer(moment().startOf(\"month\").subtract(5, \"days\").format('YYYY-MM-DD hh:mm')), // set intial range start to the sunday of the current week\n startsBefore: selectedDate ? selectedDate : formatDateTimeForServer(moment().endOf(\"month\").add(5, \"days\").format('YYYY-MM-DD hh:mm')) // set intial range end to the saturday of the current week\n };\n const [scheduleCriteria, setScheduleCriteria] = useState(Object.assign(EMPTY_SCHEDULE_CRITERIA, initialScheduleCriteria));\n const locales = {\n 'en-US': enUS,\n };\n const localizer = dateFnsLocalizer({\n format,\n parse,\n startOfWeek,\n getDay,\n locales,\n });\n \n useEffect(refreshData, \n [scheduleCriteria, calendarView]);\n\n function refreshData() {\n setLoading(true);\n let apiCalls = [];\n apiCalls.push(getJobs());\n apiCalls.push(getPrivateJobs());\n Promise.all(apiCalls)\n .then((arrayResults) => {\n let aggResults = {};\n _.each(arrayResults, (x) => Object.assign(aggResults, x));\n const jobList = aggResults.jobs \n ? aggResults.jobs\n : [];\n const privateJobList = aggResults.privateJobs \n ? aggResults.privateJobs\n : [];\n let jl = [];\n let pjl = [];\n if(jobList) {\n // jl = _.map(jobList, job => {\n // return {\n // title: job.name,\n // allDay: false,\n // start: new Date(resolveJobStart(job)),\n // end: new Date(resolveJobEnd(job)),\n // jobStatusId: job.jobStatusId,\n // driverHexColor: job.driverHexColor,\n // isPrivateJob: false,\n // id: job.id\n // // tooltip: `${job.fromStreetAddress1} - ${job.toAddress1}`\n // }\n // });\n _.each(jobList, job => {\n jl.push({\n title: job.name,\n allDay: false,\n start: new Date(job.estimatedPickupAt),\n end: new Date(job.estimatedPickupAt),\n jobStatusId: job.jobStatusId,\n driverHexColor: job.driverHexColor,\n isPrivateJob: false,\n id: job.id\n // tooltip: `${job.fromStreetAddress1} - ${job.toAddress1}`\n });\n if(job.estimatedDropOffAt !== job.estimatedPickupAt) {\n jl.push({\n title: job.name,\n allDay: false,\n start: new Date(job.estimatedDropOffAt),\n end: new Date(job.estimatedDropOffAt),\n jobStatusId: job.jobStatusId,\n driverHexColor: job.driverHexColor,\n isPrivateJob: false,\n id: job.id\n // tooltip: `${job.fromStreetAddress1} - ${job.toAddress1}`\n });\n }\n });\n }\n if(privateJobList) {\n pjl = _.map(privateJobList, pJob => {\n return {\n title: pJob.name,\n allDay: false,\n start: new Date(pJob.scheduledForDate),\n end: new Date(pJob.scheduledForDate),\n jobStatusId: pJob.jobStatusId,\n driverHexColor: pJob.driverHexColor,\n isPrivateJob: true,\n id: pJob.id\n // tooltip: `${job.fromStreetAddress1} - ${job.toAddress1}`\n }\n }); \n }\n let joinedList = jl.concat(pjl);\n setCurrentJobs(joinedList);\n }).catch((error) =>\n Alert.error(\"There was an error loading reference data\")\n )\n .finally( \n ()=>{setLoading(false);} \n );\n }\n\n function getJobs(){\n let payload = {\n SortField: null,\n SortDirection: null,\n PageNumber: 1,\n CurrentOrgId: currentUser.currentOrgId,\n DateRangeFrom: scheduleCriteria.startsAfter,\n DateRangeTo: scheduleCriteria.startsBefore,\n // RequestedDateFrom: scheduleCriteria.startsAfter,\n // RequestedDateTo:scheduleCriteria.startsBefore,\n // ScheduledDateFrom: scheduleCriteria.startsAfter,\n // ScheduledDateTo: scheduleCriteria.startsBefore,\n // CompletedDateFrom: scheduleCriteria.startsAfter,\n // CompletedDateTo: scheduleCriteria.startsBefore,\n //IsOpenJobSearch: isOpenJobSearch,\n };\n //_.each(filters, (filter) => (payload[filter.filterName] = filter.value));\n return api\n .post(\"Job/GetScheduleJobs\", payload)\n .then((response) => {\n let jobObject ={};\n if(response && response.data && response.data.success) {\n jobObject = {\n jobs: (response.data.list.slice())\n };\n }\n return jobObject;\n })\n .catch(helpers.catchHandler);\n }\n\n function getPrivateJobs(){\n let payload = {\n SortField: null,\n SortDirection: null,\n PageNumber: 1,\n CurrentOrgId: currentUser.currentOrgId,\n DateRangeFrom: scheduleCriteria.startsAfter,\n DateRangeTo: scheduleCriteria.startsBefore,\n // RequestedDateFrom: scheduleCriteria.startsAfter,\n // RequestedDateTo:scheduleCriteria.startsBefore,\n // ScheduledDateFrom: scheduleCriteria.startsAfter,\n // ScheduledDateTo: scheduleCriteria.startsBefore,\n // CompletedDateFrom: scheduleCriteria.startsAfter,\n // CompletedDateTo: scheduleCriteria.startsBefore,\n //IsOpenJobSearch: isOpenJobSearch,\n };\n //_.each(filters, (filter) => (payload[filter.filterName] = filter.value));\n return api\n .post(\"Job/GetPrivateScheduleJobs\", payload)\n .then((response) => {\n let privateJobObject ={};\n if(response && response.data && response.data.success) {\n privateJobObject = {\n privateJobs: (response.data.list.slice())\n };\n }\n return privateJobObject;\n })\n .catch(helpers.catchHandler);\n }\n\n function resolveJobStart(job) {\n switch (job.jobStatusId){\n case constants.JOB_STATUS_IDS.OPEN:\n return job.createdAt;\n case constants.JOB_STATUS_IDS.RESERVED:\n return job.reservedAt ? job.reservedAt : job.createdAt;\n case constants.JOB_STATUS_IDS.SCHEDULED:\n return job.scheduledAt \n ? job.scheduledAt \n : job.reservedAt\n ? job.reservedAt\n : job.createdAt;\n case constants.JOB_STATUS_IDS.COMPLETE:\n return job.scheduledAt \n ? job.scheduledAt \n : job.reservedAt \n ? job.reservedAt \n : job.createdAt;\n }\n }\n\n\n function resolveJobEnd(job) {\n switch (job.jobStatusId){\n case constants.JOB_STATUS_IDS.OPEN:\n return job.requestedByDate;\n case constants.JOB_STATUS_IDS.RESERVED:\n return job.reservedAt \n ? (job.requestedByDate > job.reservedAt ? job.requestedByDate : job.reservedAt)\n : job.requestedByDate;\n case constants.JOB_STATUS_IDS.SCHEDULED:\n return job.requestedByDate > (job.scheduledAt ? job.scheduledAt : job.scheduledForDate) \n ? job.requestedByDate \n : (job.scheduledAt ? job.scheduledAt : job.scheduledForDate);\n case constants.JOB_STATUS_IDS.COMPLETE:\n return job.completedAt;\n }\n }\n\n function formatDateTimeForServer(dateTime) {\n if (moment.isMoment(dateTime)) return dateTime.format(\"YYYY-MM-DDTHH:mm:ss\")\n return moment(dateTime).format(\"YYYY-MM-DDTHH:mm:ss\");\n }\n\n function calendarRangesChanged(dateRange, type) {\n // month: gives dateRange gives object with start and end key/value pairs\n // week: gives array of 7 elements, start to end dates\n // day: gives array of one element which is the day\n \n let scheduleCriteriaEdit = Object.assign({}, scheduleCriteria);\n\n // type is undefined when using 'today', 'back', 'next' buttons\n if(!type) {\n type = calendarView;\n // setSelectedDate(\"\");\n } else {\n setCalendarView(type);\n }\n\n switch(type) {\n case constants.CALENDAR_VIEW_TYPES.MONTH:\n scheduleCriteriaEdit.startsAfter = formatDateTimeForServer(dateRange.start);\n scheduleCriteriaEdit.startsBefore = formatDateTimeForServer(dateRange.end);\n break;\n case constants.CALENDAR_VIEW_TYPES.WEEK:\n scheduleCriteriaEdit.startsAfter = formatDateTimeForServer(dateRange[0]);\n scheduleCriteriaEdit.startsBefore = formatDateTimeForServer(dateRange[dateRange.length - 1]);\n break;\n case constants.CALENDAR_VIEW_TYPES.DAY:\n scheduleCriteriaEdit.startsAfter = formatDateTimeForServer(dateRange[0]);\n scheduleCriteriaEdit.startsBefore = formatDateTimeForServer(moment(dateRange[0]).add(24, \"hours\"));\n break;\n }\n \n setScheduleCriteria(scheduleCriteriaEdit);\n }\n\n const jobClicked = (job) => {\n let joblink = job.isPrivateJob\n ? `/privatejob/${job.id}`\n : `/job/${job.id}`; \n setRedirectToJob(joblink)\n };\n\n const onNavigate = (newDate) => setSelectedDate(newDate);\n\n return redirectToJob ? (\n \n ) : (\n \n {({ breakpoints, currentBreakpoint }) => {\n switch (currentBreakpoint) {\n case breakpoints.mobile:\n return (\n
    \n \n {props.children}\n \n
    \n );\n case breakpoints.desktop:\n default:\n return (\n \n \n {message ? (\n {message.text}\n ) : null}\n
    \n calendarRangesChanged(dateRange, type)}\n //step={60} // time increments in minutes\n selectable\n localizer={localizer}\n events={currentJobs}\n onNavigate={onNavigate}\n defaultDate={selectedDate ? selectedDate : today}\n view={calendarView}\n date={selectedDate}\n onSelectEvent={jobClicked}\n startAccessor=\"start\"\n endAccessor=\"end\"\n popup={true}\n views={{ month: true, week: true, day: true }}\n eventPropGetter={(event, start, end, isSelected) => ({\n event,\n start,\n end,\n isSelected,\n style: \n {backgroundColor: event.driverHexColor} // if driverHexColor does not exist, then react big calendar defaults to a blue\n })}\n style={{ height: 500,width: '95%' }}\n />\n
    \n
    \n \n );\n }\n }}\n
    \n );\n}\n","import React, { useState, useContext, useEffect, Fragment } from \"react\";\nimport { Route, Switch, Redirect, useHistory } from \"react-router-dom\";\nimport _ from \"lodash\";\nimport Alert from \"react-s-alert\";\nimport \"react-s-alert/dist/s-alert-default.css\";\nimport \"react-s-alert/dist/s-alert-css-effects/slide.css\";\nimport { api, constants, storage, helpers, UserContext } from \"./utils\";\nimport { TermsAndConditions } from \"./components\";\nimport { Footer, SidebarMenu } from \"./layouts\";\nimport {\n Admin,\n Home,\n Job,\n Jobs,\n Organizations,\n PrivateJob,\n PrivateJobs,\n Profile,\n PublicProfile,\n Register,\n Shed,\n Sheds,\n SignIn,\n User,\n Users,\n ReferenceDataList,\n Reports,\n ResetPassword,\n ForgotPassword,\n UpdatePassword,\n CompanyProfile,\n HaulerFirmProfile,\n PublicProfileCompany,\n Subscriptions,\n CompanyRatings,\n HaulerRatings,\n RatingsContainer,\n Chats,\n Invoices,\n UnInvoicedLineItems,\n Privacy,\n ScheduleViewer,\n} from \"./pages\";\n\nconst nowTime = () => new Date().getTime();\nwindow.lastActivityCheckedAt = nowTime();\nconst { THEME } = constants;\n\nexport default function App() {\n const userCtx = useContext(UserContext);\n let history = useHistory();\n const jsonUser = storage.getItem(\"currentUser\");\n const parsedUser = jsonUser\n ? JSON.parse(storage.getItem(\"currentUser\"))\n : null;\n const [currentUser, setCurrentUser] = useState(parsedUser);\n const [theme, setTheme] = useState(THEME.lightTheme);\n const [impersonating, setImpersonation] = useState(\n storage.getItem(\"adminUser\") ? true : false\n );\n const [alertMessage, setAlertMessage] = useState(null);\n\n useEffect(() => {\n const setLastActivity = () => {\n if (!currentUser) {\n // not logged in, clean up and do nothing\n if (storage.getItem(\"lastActivity\")) {\n storage.removeItem(\"lastActivity\");\n }\n return;\n }\n storage.setItem(\"lastActivity\", nowTime());\n if (alertMessage) {\n setAlertMessage(null);\n }\n };\n\n const startTimer = () => {\n clearIntervalIfExists();\n window.lastActivityIntervalId = window.setInterval(\n compareTimerToLastActivity,\n constants.FIVE_MINUTES_MS\n );\n };\n\n if (currentUser) {\n window.addEventListener(\"click\", setLastActivity);\n setLastActivity();\n startTimer();\n return () => {\n window.removeEventListener(\"click\", setLastActivity);\n clearIntervalIfExists();\n };\n } else {\n clearIntervalIfExists();\n }\n }, [currentUser, alertMessage]);\n\n function clearIntervalIfExists() {\n window.clearInterval(window.lastActivityIntervalId);\n }\n\n function compareTimerToLastActivity() {\n window.lastActivityCheckedAt = nowTime();\n const lastActivity = storage.getItem(\"lastActivity\");\n if (!lastActivity) return;\n if (nowTime() - parseInt(lastActivity) > constants.TWENTY_MINUTES_MS) {\n signOut(\n \"You have been logged out due to inactivity. Please log back in to continue.\"\n );\n return;\n }\n verifyAuthentication();\n }\n\n function verifyAuthentication() {\n const sessionStartedAt = storage.getItem(\"sessionStartedAt\");\n\n if (\n !currentUser ||\n !currentUser.token ||\n !sessionStartedAt ||\n nowTime() - sessionStartedAt < constants.TWENTY_MINUTES_MS\n ) {\n return; // not logged in or < 20 min since logon, no need to verify anything\n }\n\n if (nowTime() - sessionStartedAt > constants.TWENTY_THREE_HOURS_MS) {\n signOut(\"Your session has timed out. Please log in.\");\n } else {\n api\n .fetch(\"Public/AuthCheck?nocache=\" + nowTime())\n .then((r) => {\n if (!r.data.success) {\n signOut(\"Your session has timed out. Please log in.\");\n }\n })\n .catch((e) => {\n signOut(\"Your session has timed out. Please log in.\");\n });\n }\n }\n\n function isAuthenticated() {\n return currentUser && currentUser.token ? true : false;\n }\n\n function resolveInitialUserContext(u) {\n if (!u) return;\n if (u.isSysAdmin) {\n return {\n label: constants.ROLE_NAMES.SYSADMIN,\n value: constants.ROLE_IDS.SYSADMIN,\n };\n }\n if (u.isAdminUser) {\n return _.find(\n u.roles,\n (r) => r.typeOfUserRole === constants.ROLE_IDS.COMPANY_ADMIN\n );\n }\n const dispatcherRole = _.find(\n u.roles,\n (r) => r.typeOfUserRole === constants.ROLE_IDS.DISPATCHER\n );\n if (dispatcherRole) return dispatcherRole;\n return u.roles[0];\n }\n\n function enhanceUser(u) {\n if (!u) return u;\n u.includeAdminModule = u.isSysAdmin;\n u.includeOrgAdminModule = u.isAdminUser;\n u.includeCompanyModule = u.isCompanyUser;\n u.includeCompanyAdminModule = u.isCompanyAdminUser;\n u.includeHaulerModule = u.isHaulerUser;\n u.includeHaulerFirmModule = u.isHaulerAdminUser;\n // if (u.token) {\n // delete u.token;\n // }\n return u;\n }\n\n function impersonate(u, _impersonateToken) {\n if (impersonating) {\n return; // do not allow impersonation a 2nd time if we're already in that mode\n }\n // remember the admin user's details\n const adminUser = JSON.parse(storage.getItem(\"currentUser\"));\n // const adminUserToken = storage.getItem(\"token\");\n // clear storage\n // storage.removeItem(\"token\");\n storage.removeItem(\"currentUser\");\n // set the impersonation details\n u = enhanceUser(u);\n const ur = resolveInitialUserContext(u);\n u.currentRoleId = ur.roleId;\n u.currentOrgId = ur.orgId;\n // storage.setItem(\"token\", impersonateToken);\n storage.setItem(\"currentUser\", JSON.stringify(u));\n // remember the admin details for later\n // storage.setItem(\"adminToken\", adminUserToken);\n storage.setItem(\"adminUser\", JSON.stringify(adminUser));\n setCurrentUser(u);\n // setAuthToken(impersonateToken);\n setImpersonation(true);\n // setCurrentContext(resolveInitialUserContext(u));\n // window.location.pathname = '/home';\n history.push(\"/home\");\n }\n\n function clearImpersonation() {\n if (!impersonating) {\n return; // do not allow clear of the primary user if we're not impersonating\n }\n // get the original admin user\n const adminUser = JSON.parse(storage.getItem(\"adminUser\"));\n // const adminUserToken = storage.getItem(\"adminToken\");\n // clear localstorage\n // storage.removeItem(\"adminToken\");\n storage.removeItem(\"adminUser\");\n // set the admin user back as primary\n // storage.setItem(\"token\", adminUserToken);\n storage.setItem(\"currentUser\", JSON.stringify(adminUser));\n storage.setItem(\"untethering\", true);\n setCurrentUser(adminUser);\n // setAuthToken(adminUserToken);\n setImpersonation(false);\n }\n\n function signOut(message) {\n // storage.removeItem(\"token\");\n storage.removeItem(\"currentUser\");\n storage.removeItem(\"lastActivity\");\n storage.removeItem(\"sessionStartedAt\");\n setCurrentUser(null);\n // setAuthToken(null);\n if (message) {\n Alert.warning(message);\n setAlertMessage(message);\n // setSignInMessageVisible(true);\n }\n if (impersonating) {\n clearImpersonation();\n }\n }\n\n const AuthRoute = ({ component: Component, ...extraProps }) => {\n return (\n {\n const combinedProps = Object.assign(props, extraProps);\n if (helpers.mustChangePassword(currentUser)) {\n return ;\n }\n if (!isAuthenticated()) {\n return ;\n }\n // if (!currentUser?.accepted_tnc) {\n // return ();\n // }\n return storage.getItem(\"untethering\") ? (\n unSetTetheringAndRedirect(extraProps.location.pathname)\n ) : (\n \n );\n }}\n />\n );\n };\n\n const LoginRoute = ({ component: Component, ...extraProps }) => {\n if (isAuthenticated()) return ;\n return (\n {\n const combinedProps = Object.assign(props, extraProps);\n if (\n (_.startsWith(combinedProps.path, \"/invite\") ||\n _.startsWith(combinedProps.path, \"/register\") ||\n _.startsWith(combinedProps.path, \"/reset_password\") ||\n _.startsWith(combinedProps.path, \"/forgot_password\")) &&\n Component\n ) {\n return ;\n }\n return ;\n }}\n />\n );\n };\n\n function unSetTetheringAndRedirect(path) {\n storage.removeItem(\"untethering\");\n return ;\n }\n const referencePathList = _.map(\n constants.REFERENCE_DATA_URL_LIST,\n (x) => x.reactPath\n );\n // const report_list = _.map(constants.REPORT_URL_LIST, x => x.url);\n const showSidebar = userCtx && currentUser && currentUser.id;\n\n const user = {\n currentUser: currentUser,\n //currentUserContext: currentContext,\n setCurrentUserContext: (userRole) => {\n let u = Object.assign({}, currentUser);\n u.currentRoleId = userRole.roleId;\n u.currentOrgId = userRole.orgId;\n // setCurrentContext(resolveInitialUserContext(u));\n storage.setItem(\"currentUser\", JSON.stringify(u));\n setCurrentUser(u);\n history.push(\"/home\"); //return ;\n },\n theme: theme,\n setTheme: setTheme,\n impersonate: impersonate,\n clearImpersonation: clearImpersonation,\n signIn: (newUser, token) => {\n newUser = enhanceUser(newUser);\n const ur = resolveInitialUserContext(newUser);\n newUser.currentRoleId = ur.roleId;\n newUser.currentOrgId = ur.orgId;\n storage.setItem(\"lastUsername\", newUser.username);\n storage.setItem(\"currentUser\", JSON.stringify(newUser));\n storage.setItem(\"lastActivity\", nowTime());\n storage.setItem(\"sessionStartedAt\", nowTime());\n setAlertMessage(null);\n setCurrentUser(newUser);\n // setCurrentContext(resolveInitialUserContext(newUser));\n // if (token) {\n // storage.setItem(\"token\", token);\n // setAuthToken(token);\n // }\n },\n signOut: signOut,\n };\n if(user){\n console.log(\"user -> \", user);\n }\n if(user && user.currentUser && user.currentUser.orgId){\n helpers.ensureMembershipLevelSize(user.currentUser.orgId);\n }\n\n return (\n
    \n \n \n {showSidebar && (\n \n \n \n )}\n
    \n \n {/* PUBLIC ROUTES */}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {\n window.location.replace('https://shbrotherhood.org/memberships/');\n return null;\n }}\n />\n \n
    \n
    \n \n
    \n );\n}\n","// In production, we register a service worker to serve assets from local cache.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\n// cached resources are updated in the background.\n\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\n// This link also includes instructions on opting out of this behavior.\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport default function register () {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Lets check if a service worker still exists or not.\n checkValidServiceWorker(swUrl);\n } else {\n // Is not local host. Just register service worker\n registerValidSW(swUrl);\n }\n });\n }\n}\n\nfunction registerValidSW (swUrl) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the old content will have been purged and\n // the fresh content will have been added to the cache.\n // It's the perfect time to display a \"New content is\n // available; please refresh.\" message in your web app.\n console.log('New content is available; please refresh.');\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker (swUrl) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n if (\n response.status === 404 ||\n response.headers.get('content-type').indexOf('javascript') === -1\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister () {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { BrowserRouter as Router } from 'react-router-dom';\nimport ReactBreakpoints from \"react-breakpoints\";\nimport { ErrorBoundary } from 'react-error-boundary';\nimport { Button, Row, Col, Container } from \"reactstrap\";\nimport { library } from '@fortawesome/fontawesome-svg-core';\n\nimport {\n faAngleUp, faAngleDown, faFilter, faExclamationTriangle, faSearch, faClipboardCheck,\n faArrowCircleRight, faCheckCircle, faDownload, faHourglass, faHourglassHalf, faBan,\n faPlusCircle, faEdit, faTimesCircle, faTrash, faRecycle, faUser, faFileUpload, faPrint,\n faAngleDoubleDown, faFileCsv, faUnlockAlt, faMapMarkedAlt, faPalette,\n faComments, faImages, faSave, faHome, faEye, faCheck, faPlus, faBackspace, faMinus,\n faGripLines, faTimes, faTruck, faPaintBrush, faTrashAlt, faMask, faAward, faCog, faCogs,\n faInfoCircle, faReply, faBars, faUserCircle, faMoneyCheckAlt, faDollarSign, faFileInvoiceDollar, faBuilding,\n faEnvelope,\n faMapMarked,\n faKey,\n faStar,\n faStarHalf,\n faWarehouse,\n faUsers,\n faAddressCard,\n faTruckLoading,\n faUpload,\n faUserTimes,\n faUserPlus,\n faUserSlash,\n faUserTag,\n faHandHoldingUsd,\n faTasks,\n faExternalLinkAlt,\n faCheckDouble,\n faStarHalfAlt,\n faEyeSlash,\n faCalendarAlt,\n faCalendarTimes,\n faUndo,\n faFlagCheckered,\n faDirections,\n faSync,\n faSearchLocation\n} from '@fortawesome/free-solid-svg-icons';\n\nimport { constants } from \"./utils\";\nimport App from './App';\nimport registerServiceWorker from './registerServiceWorker';\nimport 'bootstrap/dist/css/bootstrap.css';\nimport './assets/index.scss';\n\nconst rootElement = document.getElementById('root');\n\n// add font awesome icons to be used in the app below \nlibrary.add(faEye, faAngleUp, faAngleDown, faFilter, faExclamationTriangle, faSearch,\n faClipboardCheck, faCheckCircle, faDownload, faHourglass, faHourglassHalf, faBan,\n faArrowCircleRight, faPlusCircle, faAngleDoubleDown, faFileCsv, faEdit, faTimesCircle,\n faTrash, faRecycle, faInfoCircle, faMapMarkedAlt, faPalette, faUnlockAlt,\n faUser, faFileUpload, faPrint, faComments, faImages, faSave, faHome, faCheck, faPlus,\n faBackspace, faMinus, faGripLines, faTimes, faTruck, faPaintBrush,\n faTrashAlt, faReply, faMask, faAward, faCog, faCogs, faUpload,\n faBars, faUserCircle, faMoneyCheckAlt, faDollarSign, faFileInvoiceDollar, faBuilding,\n faEnvelope, faMapMarked, faKey, faStar, faStarHalf, faWarehouse, faUsers, faAddressCard, faTruckLoading,\n faUserTimes, faUserPlus, faUserSlash, faUserTag, faHandHoldingUsd, faTasks, faExternalLinkAlt,\n faCheckDouble, faStarHalfAlt, faEyeSlash, faCalendarAlt, faCalendarTimes, faUndo, faFlagCheckered, faDirections, faSync,\n faSearchLocation\n);\n\nconst {\n BREAKPOINTS\n} = constants;\n\nconst goBack = () => {\n window.history.back();\n};\n\nconst AppFallBackComponent = ({ componentStack, error }) => {\n console.log('componentStack :\\n', componentStack, '\\n\\n error : \\n\\n', error);\n return (\n \n \n \n

    Something went wrong on our side.

    \n \n
    \n \n \n

    Please use your browser's back button to return to the previous screen.

    \n \n
    \n \n \n

    \n \n
    \n
    \n );\n};\n\nReactDOM.render(\n \n \n \n \n \n \n ,\nrootElement);\n\n\nregisterServiceWorker();\n\n"],"sourceRoot":""}