{"version":3,"sources":["webpack://landee-app/./src/utils/typescriptGuards.ts","webpack://landee-app/./src/components/global/authentication/typeGuards.ts","webpack://landee-app/./src/components/global/authentication/authConfig.ts","webpack://landee-app/./src/components/global/authentication/authFunctions.ts","webpack://landee-app/./src/utils/api/baseApi.ts","webpack://landee-app/./src/types/enums.ts","webpack://landee-app/./src/translations/imports.ts","webpack://landee-app/./src/translations/index.ts","webpack://landee-app/./src/store/globalStore.ts","webpack://landee-app/./src/store/persistStore.ts","webpack://landee-app/./src/components/global/error-modal/ErrorModalStore.ts","webpack://landee-app/./src/components/forms/pilot-page/PilotStore.ts","webpack://landee-app/./src/components/forms/pilot-company/PilotCompanyStore.ts","webpack://landee-app/./src/components/forms/plane-page/PlaneStore.ts","webpack://landee-app/./src/components/forms/airport-page/AirportStore.ts","webpack://landee-app/./src/components/forms/assign-airport/AssignStore.ts","webpack://landee-app/./src/components/cart/CartStore.ts","webpack://landee-app/./src/components/forms/airport-company/AirportCompanyStore.ts","webpack://landee-app/./src/components/pilot-home/PilotHomeStore.ts","webpack://landee-app/./src/types/ValidityConfig.ts","webpack://landee-app/./src/types/PaymentType.ts","webpack://landee-app/./src/components/global/utils.ts","webpack://landee-app/./src/components/forms/pricing-item/computePrice.ts","webpack://landee-app/./src/components/forms/pricing-item/PricingItemStore.ts","webpack://landee-app/./src/components/roles-page/RolesPageStore.ts","webpack://landee-app/./src/middlewares/rtkQueryErrorLogger.ts","webpack://landee-app/./src/middlewares/listenerMiddleware.ts","webpack://landee-app/./src/middlewares/storageFunctions.ts","webpack://landee-app/./src/middlewares/persistMiddleware.ts","webpack://landee-app/./src/store/index.ts","webpack://landee-app/./src/components/global/authentication/msalInstance.tsx","webpack://landee-app/./src/utils/api/user.ts","webpack://landee-app/./src/utils/api/planes.ts","webpack://landee-app/./src/store/globalSelectors.ts","webpack://landee-app/./src/components/global/base-pages/ErrorBoundary.tsx","webpack://landee-app/./src/components/global/authentication/AuthComponent.tsx","webpack://landee-app/./src/components/global/routing/routesEnum.ts","webpack://landee-app/./src/components/global/PageElements.tsx","webpack://landee-app/./src/components/global/base-pages/LoadingPage.tsx","webpack://landee-app/./src/components/global/base-pages/LoadingDetail.tsx","webpack://landee-app/./src/components/global/base-pages/ErrorDetail.tsx","webpack://landee-app/./src/utils/api/html.ts","webpack://landee-app/./src/components/global/FormButtons.tsx","webpack://landee-app/./src/components/registration/registration-hub/RegistrationHub.tsx","webpack://landee-app/./src/components/registration/user-terms/TermItem.tsx","webpack://landee-app/./src/components/registration/user-terms/UserTerms.tsx","webpack://landee-app/./src/components/registration/RegistrationPage.tsx","webpack://landee-app/./src/components/global/GridElements.tsx","webpack://landee-app/./src/components/admin-page/pilot-grid/GridHeader.tsx","webpack://landee-app/./src/components/global/GridButtons.tsx","webpack://landee-app/./src/components/admin-page/pilot-grid/GridRow.tsx","webpack://landee-app/./src/components/admin-page/pilot-grid/Grid.tsx","webpack://landee-app/./src/components/admin-page/planes-grid/GridHeader.tsx","webpack://landee-app/./src/components/admin-page/planes-grid/RowButtons.tsx","webpack://landee-app/./src/components/admin-page/planes-grid/GridRow.tsx","webpack://landee-app/./src/components/admin-page/planes-grid/Grid.tsx","webpack://landee-app/./src/utils/api/airports.ts","webpack://landee-app/./src/components/admin-page/airports-grid/GridHeader.tsx","webpack://landee-app/./src/components/admin-page/airports-grid/RowButtons.tsx","webpack://landee-app/./src/components/admin-page/airports-grid/GridRow.tsx","webpack://landee-app/./src/components/admin-page/airports-grid/RequestButtons.tsx","webpack://landee-app/./src/components/admin-page/airports-grid/GridRowRequest.tsx","webpack://landee-app/./src/components/admin-page/airports-grid/utils.tsx","webpack://landee-app/./src/components/admin-page/airports-grid/Grid.tsx","webpack://landee-app/./src/components/admin-page/AdminPage.tsx","webpack://landee-app/./src/components/pilot-home/PilotHomeSelectors.ts","webpack://landee-app/./src/utils/api/pricings.ts","webpack://landee-app/./src/components/pilot-home/home-form/GpsInput.tsx","webpack://landee-app/./src/store/persistSelectors.ts","webpack://landee-app/./src/components/pilot-home/home-form/AirportInput.tsx","webpack://landee-app/./src/components/pilot-home/home-form/PlaneInput.tsx","webpack://landee-app/./src/components/pilot-home/home-form/CompanyInput.tsx","webpack://landee-app/./src/components/pilot-home/home-form/DateInput.tsx","webpack://landee-app/./src/components/pilot-home/home-form/HomeForm.tsx","webpack://landee-app/./src/components/pilot-home/PilotHomePage.tsx","webpack://landee-app/./src/components/global/routing/routesChecks.tsx","webpack://landee-app/./src/components/global/base-pages/NotFoundPage.tsx","webpack://landee-app/./src/components/global/menu/AppMenuItem.tsx","webpack://landee-app/./src/components/global/authentication/useAuth.ts","webpack://landee-app/./src/components/global/menu/AirportsSelect.tsx","webpack://landee-app/./src/components/global/menu/AppMenu.tsx","webpack://landee-app/./src/components/global/AppLayout.tsx","webpack://landee-app/./src/components/forms/pilot-page/PilotSelectors.ts","webpack://landee-app/./src/components/forms/pilot-page/pilot-form/Street.tsx","webpack://landee-app/./src/components/forms/pilot-page/pilot-form/City.tsx","webpack://landee-app/./src/components/forms/pilot-page/pilot-form/PostalCode.tsx","webpack://landee-app/./src/components/forms/pilot-page/pilot-form/Country.tsx","webpack://landee-app/./src/components/forms/pilot-page/pilot-form/PhoneNumber.tsx","webpack://landee-app/./src/components/forms/pilot-page/pilot-form/PilotLicenceNumber.tsx","webpack://landee-app/./src/components/forms/pilot-page/pilot-form/business-grid/GridHeader.tsx","webpack://landee-app/./src/components/forms/pilot-page/pilot-form/business-grid/RowButtons.tsx","webpack://landee-app/./src/components/forms/pilot-page/pilot-form/business-grid/GridRow.tsx","webpack://landee-app/./src/components/forms/pilot-page/pilot-form/business-grid/Grid.tsx","webpack://landee-app/./src/components/forms/pilot-page/pilot-form/PilotForm.tsx","webpack://landee-app/./src/components/forms/pilot-page/PilotPage.tsx","webpack://landee-app/./src/components/forms/pilot-company/PilotCompanySelectors.ts","webpack://landee-app/./src/components/forms/pilot-company/company-form/BusinessName.tsx","webpack://landee-app/./src/components/forms/pilot-company/company-form/CompanyEmail.tsx","webpack://landee-app/./src/components/forms/pilot-company/company-form/PhoneNumber.tsx","webpack://landee-app/./src/components/forms/pilot-company/company-form/RegistrationNumber.tsx","webpack://landee-app/./src/components/forms/pilot-company/company-form/TaxNumber.tsx","webpack://landee-app/./src/components/forms/pilot-company/company-form/Street.tsx","webpack://landee-app/./src/components/forms/pilot-company/company-form/City.tsx","webpack://landee-app/./src/components/forms/pilot-company/company-form/PostalCode.tsx","webpack://landee-app/./src/components/forms/pilot-company/company-form/Country.tsx","webpack://landee-app/./src/components/forms/pilot-company/company-form/CompanyForm.tsx","webpack://landee-app/./src/components/forms/pilot-company/PilotCompanyPage.tsx","webpack://landee-app/./src/components/forms/plane-page/PlaneSelectors.ts","webpack://landee-app/./src/components/forms/plane-page/plane-form/Imatriculation.tsx","webpack://landee-app/./src/components/forms/plane-page/plane-form/PlaneName.tsx","webpack://landee-app/./src/components/forms/plane-page/plane-form/PlaneType.tsx","webpack://landee-app/./src/components/forms/plane-page/plane-form/Mtow.tsx","webpack://landee-app/./src/components/forms/plane-page/plane-form/WingsSpan.tsx","webpack://landee-app/./src/components/forms/plane-page/plane-form/SeatsCount.tsx","webpack://landee-app/./src/components/forms/plane-page/plane-form/PlaneForm.tsx","webpack://landee-app/./src/components/forms/plane-page/PlanePage.tsx","webpack://landee-app/./src/utils/api/roles.ts","webpack://landee-app/./src/components/forms/assign-airport/AssignSelectors.ts","webpack://landee-app/./src/components/forms/assign-airport/assign-form/UserEmail.tsx","webpack://landee-app/./src/components/forms/assign-airport/assign-form/SelectedRole.tsx","webpack://landee-app/./src/components/forms/assign-airport/assign-form/SelectedAirport.tsx","webpack://landee-app/./src/components/forms/assign-airport/assign-form/AssignForm.tsx","webpack://landee-app/./src/components/forms/assign-airport/AssignAirportPage.tsx","webpack://landee-app/./src/components/forms/airport-page/AirportSelectors.ts","webpack://landee-app/./src/components/forms/airport-page/airport-form/Name.tsx","webpack://landee-app/./src/components/forms/airport-page/airport-form/business-grid/utils.tsx","webpack://landee-app/./src/components/forms/airport-page/airport-form/business-grid/GridHeader.tsx","webpack://landee-app/./src/utils/api/businessEntity.ts","webpack://landee-app/./src/components/forms/airport-page/airport-form/business-grid/RowButtons.tsx","webpack://landee-app/./src/components/forms/airport-page/airport-form/business-grid/GridRow.tsx","webpack://landee-app/./src/components/forms/airport-page/airport-form/business-grid/RequestButtons.tsx","webpack://landee-app/./src/components/forms/airport-page/airport-form/business-grid/GridRowRequest.tsx","webpack://landee-app/./src/components/forms/airport-page/airport-form/business-grid/Grid.tsx","webpack://landee-app/./src/components/forms/airport-page/airport-form/AirportForm.tsx","webpack://landee-app/./src/components/forms/airport-page/AirportPage.tsx","webpack://landee-app/./src/components/forms/airport-company/AirportCompanySelectors.ts","webpack://landee-app/./src/components/forms/airport-company/company-form/Name.tsx","webpack://landee-app/./src/components/forms/airport-company/company-form/CompanyEmail.tsx","webpack://landee-app/./src/components/forms/airport-company/company-form/PhoneNumber.tsx","webpack://landee-app/./src/components/forms/airport-company/company-form/RegistrationNumber.tsx","webpack://landee-app/./src/components/forms/airport-company/company-form/TaxNumber.tsx","webpack://landee-app/./src/components/forms/airport-company/company-form/Street.tsx","webpack://landee-app/./src/components/forms/airport-company/company-form/City.tsx","webpack://landee-app/./src/components/forms/airport-company/company-form/PostalCode.tsx","webpack://landee-app/./src/components/forms/airport-company/company-form/Country.tsx","webpack://landee-app/./src/components/forms/airport-company/company-form/BankAccount.tsx","webpack://landee-app/./src/components/forms/airport-company/company-form/Iban.tsx","webpack://landee-app/./src/components/forms/airport-company/company-form/Currency.tsx","webpack://landee-app/./src/components/forms/airport-company/company-form/CompanyForm.tsx","webpack://landee-app/./src/components/forms/airport-company/AirportCompanyPage.tsx","webpack://landee-app/./src/components/roles-page/requests-grid/GridHeader.tsx","webpack://landee-app/./src/components/roles-page/requests-grid/RowButtons.tsx","webpack://landee-app/./src/components/roles-page/requests-grid/GridRow.tsx","webpack://landee-app/./src/components/roles-page/requests-grid/Grid.tsx","webpack://landee-app/./src/components/roles-page/users-grid/GridHeader.tsx","webpack://landee-app/./src/components/roles-page/users-grid/RowButtons.tsx","webpack://landee-app/./src/components/roles-page/users-grid/GridRow.tsx","webpack://landee-app/./src/components/roles-page/users-grid/Grid.tsx","webpack://landee-app/./src/components/roles-page/RolesPageSelectors.ts","webpack://landee-app/./src/components/roles-page/user-modal/UserGrid.tsx","webpack://landee-app/./src/components/roles-page/user-modal/AirportsGrid.tsx","webpack://landee-app/./src/components/roles-page/user-modal/UserModal.tsx","webpack://landee-app/./src/components/roles-page/users-grid/DownloadToolbar.tsx","webpack://landee-app/./src/components/roles-page/RolesPage.tsx","webpack://landee-app/./src/components/pricings-page/pricings-grid/utils.tsx","webpack://landee-app/./src/components/pricings-page/pricings-grid/GridHeader.tsx","webpack://landee-app/./src/components/pricings-page/pricings-grid/RowButtons.tsx","webpack://landee-app/./src/components/pricings-page/pricings-grid/ValidityCell.tsx","webpack://landee-app/./src/components/pricings-page/pricings-grid/FiltersCell.tsx","webpack://landee-app/./src/components/pricings-page/pricings-grid/GridRow.tsx","webpack://landee-app/./src/components/pricings-page/pricings-grid/RequestButtons.tsx","webpack://landee-app/./src/components/pricings-page/pricings-grid/GridRowRequest.tsx","webpack://landee-app/./src/components/pricings-page/pricings-grid/Grid.tsx","webpack://landee-app/./src/components/pricings-page/PricingsPage.tsx","webpack://landee-app/./src/components/forms/pricing-item/PricingItemSelectors.ts","webpack://landee-app/./src/components/forms/pricing-item/pricing-form/PaymentType.tsx","webpack://landee-app/./src/components/forms/pricing-item/pricing-form/PaymentTypeEng.tsx","webpack://landee-app/./src/components/forms/pricing-item/pricing-form/ValidFrom.tsx","webpack://landee-app/./src/components/forms/pricing-item/pricing-form/ValidTo.tsx","webpack://landee-app/./src/components/forms/pricing-item/pricing-form/LocalPrice.tsx","webpack://landee-app/./src/components/forms/pricing-item/pricing-form/PriceWithoutTax.tsx","webpack://landee-app/./src/components/forms/pricing-item/pricing-form/Tax.tsx","webpack://landee-app/./src/components/forms/pricing-item/pricing-form/LocalCurrency.tsx","webpack://landee-app/./src/components/forms/pricing-item/pricing-form/ResidentDiscount.tsx","webpack://landee-app/./src/components/forms/pricing-item/pricing-form/Commission.tsx","webpack://landee-app/./src/components/forms/pricing-item/pricing-form/BusinessEntity.tsx","webpack://landee-app/./src/components/forms/pricing-item/pricing-form/validity-config/CheckBoxItem.tsx","webpack://landee-app/./src/components/forms/pricing-item/pricing-form/validity-config/DaysRow.tsx","webpack://landee-app/./src/components/forms/pricing-item/pricing-form/validity-config/SpecialsRow.tsx","webpack://landee-app/./src/components/forms/pricing-item/pricing-form/validity-config/TimeFrom.tsx","webpack://landee-app/./src/components/forms/pricing-item/pricing-form/validity-config/TimeTo.tsx","webpack://landee-app/./src/components/forms/pricing-item/pricing-form/validity-config/ValidityConfig.tsx","webpack://landee-app/./src/components/forms/pricing-item/pricing-form/filters-grid/GridHeader.tsx","webpack://landee-app/./src/components/forms/pricing-item/pricing-form/filters-grid/AttributeCell.tsx","webpack://landee-app/./src/components/forms/pricing-item/pricing-form/filters-grid/OperatorCell.tsx","webpack://landee-app/./src/components/forms/pricing-item/pricing-form/filters-grid/ValueCell.tsx","webpack://landee-app/./src/components/forms/pricing-item/pricing-form/filters-grid/GridRow.tsx","webpack://landee-app/./src/components/forms/pricing-item/pricing-form/filters-grid/Grid.tsx","webpack://landee-app/./src/components/forms/pricing-item/pricing-form/PricingForm.tsx","webpack://landee-app/./src/components/forms/pricing-item/PricingItemPage.tsx","webpack://landee-app/./src/utils/api/transaction.ts","webpack://landee-app/./src/components/transactions-page/ReportToolbarUser.tsx","webpack://landee-app/./src/components/transactions-page/ReportToolbarAirport.tsx","webpack://landee-app/./src/components/transactions-page/user-transactions-grid/GridHeader.tsx","webpack://landee-app/./src/components/transactions-page/user-transactions-grid/GridRow.tsx","webpack://landee-app/./src/components/transactions-page/user-transactions-grid/Grid.tsx","webpack://landee-app/./src/components/transactions-page/airport-transactions-grid/GridHeader.tsx","webpack://landee-app/./src/components/transactions-page/airport-transactions-grid/GridRow.tsx","webpack://landee-app/./src/components/transactions-page/airport-transactions-grid/Grid.tsx","webpack://landee-app/./src/components/transactions-page/TransactionsPage.tsx","webpack://landee-app/./src/components/cart/CartSelectors.ts","webpack://landee-app/./src/components/cart/select-page/GridHeader.tsx","webpack://landee-app/./src/components/cart/select-page/Quantity.tsx","webpack://landee-app/./src/components/cart/select-page/GridRow.tsx","webpack://landee-app/./src/components/cart/select-page/Grid.tsx","webpack://landee-app/./src/components/cart/select-page/SelectPage.tsx","webpack://landee-app/./src/components/cart/summary-page/GridHeader.tsx","webpack://landee-app/./src/components/cart/summary-page/GridRow.tsx","webpack://landee-app/./src/components/cart/summary-page/Grid.tsx","webpack://landee-app/./src/components/cart/summary-page/SummaryPage.tsx","webpack://landee-app/./src/components/cart/CartPage.tsx","webpack://landee-app/./src/components/global/routing/useAppRoutes.tsx","webpack://landee-app/./src/components/global/error-modal/ErrorElement.tsx","webpack://landee-app/./src/components/global/error-modal/ErrorModal.tsx","webpack://landee-app/./src/components/global/App.tsx","webpack://landee-app/./src/index.tsx"],"names":["hasOwnPropertyTS","obj","prop","isStringProperty","host","property","setKnownStringProperty","value","isNumberProperty","setKnownNumberProperty","updateObjectProperty","object","originProperty","originPropertyConstructor","cloneObject","isNulund","isAuthenticationResult","eventPayload","isAccountInfo","isUserTokenClaims","claims","authConfig","level","message","containsPii","editProfile","policyNames","graphConfig","handleLogin","reason","handleLogout","isAuthenticated","getAuthToken","account","loginRequestObject","authResult","error","InteractionRequiredAuthError","baseApi","headers","authToken","LanguageEnum","UserTermType","PlaneTypeEnum","UserRoleTypeEnum","UserModeEnum","resources","loadTranslations","changeLanguage","lng","toggleLanguage","getLocaleObject","getDateFormat","settings","getDaysEnum","locale","getLocaleNumberSeparator","stringNumber","initialState","globalSlice","state","action","setUser","setUserMode","setLanguage","persistSlice","setGlobalAirport","setPersistStore","errorModalSlice","addApiError","clearApiErrors","showErrorModal","selectApiErrors","selectShowErrorModal","pilotPageSlice","pilot","setInitPilot","setShowInvalids","setPilotLicenceNumber","setStreet","setCity","setPostalCode","setCountry","setPhoneNumber","resetStore","pilotCompanySlice","ent","setInitCompany","setBussinessName","setCompanyEmail","setRegistrationNumber","setTaxNumber","planePageSlice","pla","initPlane","setImatriculation","setPlaneName","setPlaneType","setMtow","setSeatsCount","setWingsSpan","airportPageSlice","req","item","initAirport","setName","AssignAirportSlice","setSelectedAirport","setUserEmail","setSelectedRole","cartSlice","x","index","quantity","newQuantity","initCartItems","updateQuantity","increaseQuantity","decreaseQuantity","airportCompanySlice","initAirportCompany","setBankAccount","setIban","setCurrency","formatISO","pilotHomeSlice","setGps","setAirport","setPlane","setCompany","setDate","filledValidityDays","emptyValidityDays","PaymentTypeOperatorEnum","nr","dateRegex","timeRegex","durationRegex","parseISODuration","argument","match","duration","capitalizeShortDay","str","isValidEmail","email","isMaxDate","date","checkDecimalInput","numberString","checkIntegerInput","isValidPhoneNumber","exist","isEmpty","isInteger","isDouble","checkIntegerInputAndMaxLength","maxLength","checkIntegerInputAndMaxValue","parsedValue","checkDecimalInputAndMaxValue","maxStringLength","maxNumberLength","replacedString","newDateWithoutTime","newDate","ComputedProperty","computePrice","args","priceWithoutTax","priceWithTax","tax","editedField","previousEditedField","withoutTaxNumber","withTaxNumber","parsedTax","taxNumber","getPriceWithoutTax","getPriceWithTax","getTax","result","getLastEditedPriceProperties","lastEdites","secondEdit","pricingItemSlice","comp","filtersIndex","lastEditedPriceProperties","newIndex","newFilter","updatedFilter","filteredItems","initPricingItem","setPaymentTypeText","setPaymentTypeTextEng","setValidFrom","setValidTo","setLocalPrice","setPriceWithoutTax","setLocalCurrency","setResidentDiscount","setTax","setCommission","setBusinessEntityId","setValidityDays","updateValidityDaysProperty","setValidityTimeFrom","setValidityTimeTo","addEmptyPaymentTypeJson","updateExistPaymentTypeJson","removeExistPaymentTypeJson","rolesPageSlice","showModal","hideModal","api","next","listenerMiddleware","startAppListening","addAppListener","hasLocalStorage","storage","testKey","setItemToStorage","persistStore","getItemsFromStorage","stringStore","currentState","previousState","listenerApi","persistState","initialized","defaultPersistStore","storageStore","defaultStoreEntries","storageStoreEntries","newDefaultStoreEntries","defaultEntry","defaultProperty","searchedStorageItem","storageEntry","store","getDefaultMiddleware","PublicClientApplication","initMsalInstance","EventType","userApi","builder","termType","dispatch","queryFulfilled","response","draft","entity","tempId","updatedIndex","updatedEntity","id","useGetPilotQuery","useLazyGetPilotQuery","useConfirmTermsMutation","useSavePilotMutation","useSavePilotEntityMutation","useDeletePilotEntityMutation","useSetDefaultPilotEntityMutation","planesApi","meta","arg","b","plane","draftPlane","a","imatriculation","useGetAllUserPlanesQuery","useLazyGetAllUserPlanesQuery","useSaveOrUpdatePlaneMutation","useDeletePlaneMutation","selectUser","selectUserMode","selectLanguage","selectUserId","selectIsAuthenticated","user","ErrorBoundary","props","errorInfo","t","Container","Row","format","AuthComponent","accounts","instance","inProgress","saveUser","updateGlobalUser","newUser","AppRoutesEnum","PageLoading","faSpinner","PageError","backButtonFunction","Button","PageInfo","htmlApi","groupCode","language","useGetHtmlContentQuery","FormConfirmButton","showLoading","other","FormCancelButton","navigate","isLoading","data","isError","htmlComponents","handleReject","handleConfirm","confirmTerms","loadingBusiness","dataBusiness","errorBusiness","loadingContract","dataContract","errorContract","GridError","GridEmpty","GridLoading","GridNoAirport","GridNoAdmin","GridLabel","label","iconString","getRequestCellClassName","changedProperties","cellProperties","primary","centered","deleted","added","isArray","baseClass","GridNewRecord","faCirclePlus","GridEditButton","faPen","GridRemoveButton","faTrashCan","GridApproveButton","GridRejectButton","faXmark","GridDetailButton","faEye","GridRow","isSuccess","deletePlane","planeName","planeType","airportsApi","userId","icao","gpsPoint","request","airportRequest","useGetAllAirportsQuery","useLazyGetUserAirportsQuery","useGetCommissionQuery","useLazyGetIsAdminOnAirportQuery","useLazyGetIsAdminOrResidentOnAirportQuery","useLazyGetSortedAirportsByGpsQuery","useLazyGetUsersForAirportQuery","useApproveRequestMutation","useRejectRequestMutation","useStartEditRequestQuery","useLazyCancelEditRequestQuery","useLazySaveEditRequestQuery","useSaveAirportRequestMutation","useGetBusinessEntitiesQuery","useGetApprovedBusinessEntitiesQuery","airport","name","currency","singleUserRole","getClassName","firstApprover","secondApprover","approverMessageClass","approveRequest","apLoading","apData","apError","rejectRequest","rjLoading","rjData","rjError","GridRowRequest","gpsPointsToString","gpsPoints","acc","getChangedProperties","emptyArray","firstValue","secondValue","getAirports","userMode","selectGps","selectAirport","selectPlane","selectCompany","selectDate","selectDisableConfirmButton","selectValidSendingObject","pricingsApi","paymentDate","useLazyGetPricingsByIcaoQuery","useLazyGetValidPricingItemsQuery","useGetPricingConfigurationQuery","useLazyStartEditPricingItemQuery","useLazyCancelEditPricingItemQuery","useLazySaveEditPricingItemQuery","useSavePricingItemRequestMutation","useDeletePricingItemMutation","useApprovePricingItemRequestMutation","useRejectPricingItemRequestMutation","updateProperty","invalidGps","setInvalidGps","setCurrentPosition","handleSuccess","handleError","position","err","Form","InputGroup","faSatellite","selectGlobalAirport","globalAirport","gps","saveGlobalAirport","runQuery","sortedAirports","sortedError","notSortedAirports","notSortedError","setPropertyAndGlobalAirport","exactMatch","newValue","searchAirport","allPlanes","searchPlane","allCompanies","defaultCompany","searchCompany","formRef","parseISO","faCalendarDay","companies","disableButton","company","validSendingObject","getPricingItems","pricingItems","initData","checkAuth","auth","element","checkIndex","mode","checkUnregAdminPilot","checkAdminPilot","checkPilot","itemLabel","onClick","Nav","searchParams","setSearchParams","icaoParam","allAirports","paramsAirport","selectedAirport","pilotOrAdmin","expanded","setExpanded","navbarRef","clickOutsideListener","isAdminOnAirport","adSuccess","adData","event","Navbar","selectInitPilot","selectShowInvalids","selectPilotLicenceNumber","selectStreet","selectCity","selectPostalCode","selectCountry","selectPhoneNumber","selectPilotIsInvalid","street","city","postalCode","country","phoneNumber","selectModifiedPilot","initPilot","pilotLicenceNumber","selectIsSamePilot","showInvalids","runDelete","bussinessName","registrationNumber","isDefault","setDefault","isInvalid","isSame","show","updatePilot","handleCancel","handleSave","backErrorFn","selectInitCompany","selectBussinessName","selectCompanyEmail","selectRegistrationNumber","selectTaxNumber","selectCompanyIsInvalid","selectModifiedCompany","initCompany","companyEmail","selectIsSameCompany","updateCompany","selectInitPlane","selectImatriculation","selectPlaneName","selectPlaneType","selectMtow","selectSeatsCount","selectWingsSpan","selectPlaneIsInvalid","mtow","selectModifiedPlane","seatsCount","wingsSpan","selectIsSamePlane","parsedObject","updatePlane","rolesApi","requestId","role","useLazyGetRoleRequestsQuery","useApproveRoleRequestMutation","useRejectRoleRequestMutation","useSaveRoleRequestMutation","useRemoveUserRoleMutation","selectSelectedAirport","selectUserEmail","selectSelectedRole","selectAssignIsInvalid","userEmail","selectedRole","selectModifiedAssign","isAdmin","roles","isResident","assign","sendRequest","returnedRequest","handleAssign","selectInitAirportRequest","selectIcao","selectName","selectAirportIsInvalid","selectAirportRequest","initAirportRequest","selectIsSameAirport","entityRequest","businessEntityApi","useApproveBusinessEntityMutation","useRejectBusinessEntityMutation","useLazyStartEditBusinessEntityQuery","useLazyCancelEditBusinessEntityQuery","useLazySaveEditBusinessEntityQuery","useDeleteBusinessEntityMutation","useSaveBusinessEntityRequestMutation","selectedIcao","bankAccount","iban","rowSettings","i","itemDeleted","itemAdded","adLoading","adError","navigateBack","selectInitAirportsCompanyRequest","selectAirportsCompanyId","selectAirportIcao","selectBankAccount","selectIban","selectCurrency","initRequest","airportsCompanyId","airportIcao","savedRef","cancelEdit","saveEdit","saveCompany","airportsIcao","startEdit","roleRemoval","userRole","created","handleClick","roleRequestsQuery","rqLoading","rqSuccess","rqData","rqError","rqFetching","adFetching","removeUser","usersQuery","usLoading","usSuccess","usData","usError","usFetching","selectShowModal","UserGrid","AirportsGrid","airports","y","handleClose","getUserAirports","Modal","firstValueJson","secondValueJson","getDaysArray","config","daysEnum","daysArray","validityConfig","getOperatorSymbol","operator","filtersCellId","filters","paymentTypeText","paymentTypeTextEng","paymentTypeJson","validFrom","validTo","localPrice","localCurrency","residentDiscount","commission","pricingsQuery","prLoading","prSuccess","prData","prError","prFetching","selectInitPricingRequest","selectPricingItemId","selectPaymentTypeText","selectPaymentTypeTextEng","selectValidFrom","selectValidTo","selectLocalPrice","selectPriceWithoutTax","selectLocalCurrency","selectResidentDiscount","selectTax","selectCommission","selectBusinessEntityId","selectValidityDays","selectValidityTimeFrom","selectValidityTimeTo","selectPaymentTypeJson","selectPricingIsInvalid","validityDays","validityTimeFrom","validityTimeTo","businessEntityId","parsedPrice","selectModifiedPricing","pricingItemId","selectIsSamePricing","dateWithoutTime","isAfter","getCurrencyValues","currencyValues","airportCurrency","isFetching","selectedValue","CheckBoxItem","onCheckChange","updateConfigProperty","checkMonday","checkTuesday","checkWednesday","checkThursday","checkFriday","checkSaturday","checkSunday","updateConfig","handleCheckAll","handleCheckWeekdays","handleCheckWeekend","timeFrom","timeTo","parsedTimeFrom","timeWithoutDate","faClock","parsedTimeTo","attribute","configs","updateAttribute","updateOperator","updateValue","filter","updateFilter","removeFilter","pricingItem","savePricingItem","transactionApi","separatePaymentsResult","useLazyGetAirportPaymentsQuery","useGetUserPaymentsQuery","useSaveTransactionMutation","payments","groupedPayments","paymentDetail","getPayments","transactionDate","price","title","airportBusinessEntityName","adminLoading","adminError","setMode","isAdminOrResidentOnAirport","selectRequestedDate","selectAllPricings","selectExistPurchased","allPricings","selectPurchasedItems","selectTotalPrice","priceObject","fullPriceObject","selectDataForSendPayment","filteredPricings","cartQuantity","priceBeforeDiscount","handleUpdate","handleIncrease","handleDecrease","handleShowSummary","anyPurchased","purchasedItems","handleShowSelect","totalPrice","dataForSendPayment","componentLoading","setComponentLoading","saveTransaction","showSummary","setShowSummary","isAuth","routes","AssignAirportPage","timestamp","actionPayload","ErrorModal","errors","appRoutes","langParam","changeUserMode","getPilot","pilotError","pilotData","getPlanes","planesError","planesData","updatePilotError","checkLanguage","isPilot","isAdministrator","enumIndex","newLanguage","Root"],"mappings":"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","file":"main.269572c280110553ecc7.bundle.js","sourcesContent":["export const hasOwnPropertyTS = (obj: X, prop: Y): obj is X & Record => {\r\n\treturn obj.hasOwnProperty(prop)\r\n}\r\n\r\n\r\nexport const isStringProperty = (host: T, property: K): host is T & Record => {\r\n\treturn typeof host[property] === \"string\";\r\n}\r\n\r\nexport const setKnownStringProperty = (host: Record, property: K, value: string): Record => {\r\n\thost[property] = value;\r\n\treturn host;\r\n}\r\n\r\n\r\nexport const isNumberProperty = (host: T, property: K): host is T & Record => {\r\n\treturn typeof host[property] === \"number\";\r\n}\r\n\r\nexport const setKnownNumberProperty = (host: Record, property: K, value: number): Record => {\r\n\thost[property] = value;\r\n\treturn host;\r\n}\r\n\r\n\r\nexport type ValueOf = T[keyof T];\r\n\r\nexport type ParamIntersection = { [K in keyof T]: (x: T[K]) => void }[keyof T] extends (x: infer I) => void ? I : never;\r\n\r\nexport type ParamMerged = { [K in keyof T]: (x: T[K]) => void }[keyof T] extends (x: infer I) => void ? { [K in keyof I]: I[K] } : never;\r\n\r\n\r\n\r\nexport const updateObjectProperty = (object: T, property: U, value: any): T | null => {\r\n\tif (!hasOwnPropertyTS(object, property)) return null\r\n\t\r\n\tlet originProperty = object[property];\r\n\tif (originProperty !== null && !(typeof originProperty === typeof value)) return null;\r\n\t\r\n\tif (originProperty !== null && typeof originProperty === \"object\") {\r\n\t\tlet originPropertyConstructor = Object.getPrototypeOf(originProperty).constructor;\r\n\t\tif (!(value instanceof originPropertyConstructor)) return null;\r\n\t};\r\n\tlet cloneObject = { ...object };\r\n\tcloneObject[property] = value;\r\n\treturn cloneObject;\r\n}\r\n\r\nexport const isNulund = (value: unknown): value is null | undefined => {\r\n\tif (value === null || value === undefined) return true;\r\n\treturn false;\r\n}\r\n\r\ntype FixedLengthArray = R['length'] extends N ? R : FixedLengthArray;\r\n\r\ntype RowData = FixedLengthArray;\r\n\r\n//JSON.stringify(object, null, 2)\r\n\r\n// disable one row (without spaces)\r\n// @ts - ignore: Unreachable code error\r\n\r\n// disable all (without spaces)\r\n// @ts - nocheck\r\n\r\n// error pass, else others throw typescript error (without spaces)\r\n// @ts - expect-error","import { EventPayload, AccountInfo, AuthenticationResult } from \"@azure/msal-browser\";\r\nimport { TokenClaims } from \"@azure/msal-common\";\r\nimport { hasOwnPropertyTS } from 'utils/typescriptGuards';\r\n\r\n\r\nexport function isAuthenticationResult(eventPayload: EventPayload | undefined | null): eventPayload is AuthenticationResult {\r\n\tif (eventPayload !== undefined\r\n\t\t&& eventPayload !== null\r\n\t\t&& hasOwnPropertyTS(eventPayload, 'accessToken') && eventPayload['accessToken']\r\n\t\t&& typeof eventPayload['accessToken'] === 'string' && eventPayload['accessToken'].length > 0\r\n\t\t&& hasOwnPropertyTS(eventPayload, 'idToken') && eventPayload['idToken']\r\n\t\t&& typeof eventPayload['idToken'] === 'string' && eventPayload['idToken'].length > 0\r\n\t\t&& hasOwnPropertyTS(eventPayload, 'tokenType') && eventPayload['tokenType']\r\n\t\t&& typeof eventPayload['tokenType'] === 'string' && eventPayload['tokenType'].length > 0\r\n\t\t&& hasOwnPropertyTS(eventPayload, 'account') && eventPayload.account)\r\n\t\treturn true;\r\n\treturn false;\r\n}\r\n\r\n\r\nexport function isAccountInfo(eventPayload: EventPayload | undefined | null): eventPayload is AccountInfo {\r\n\tif (eventPayload !== undefined\r\n\t\t&& eventPayload !== null\r\n\t\t&& hasOwnPropertyTS(eventPayload, 'homeAccountId') && eventPayload['homeAccountId']\r\n\t\t&& typeof eventPayload['homeAccountId'] === 'string' && eventPayload['homeAccountId'].length > 0\r\n\t\t&& hasOwnPropertyTS(eventPayload, 'localAccountId') && eventPayload['localAccountId']\r\n\t\t&& typeof eventPayload['localAccountId'] === 'string' && eventPayload['localAccountId'].length > 0\r\n\t\t&& hasOwnPropertyTS(eventPayload, 'username') && eventPayload['username']\r\n\t\t&& typeof eventPayload['username'] === 'string' && eventPayload['username'].length > 0)\r\n\t\treturn true;\r\n\treturn false;\r\n}\r\n\r\n\r\ntype UserTokenClaims = { emails: string[], family_name: string, given_name: string }\r\n\r\nexport function isUserTokenClaims(claims: TokenClaims | undefined | null): claims is UserTokenClaims {\r\n\tif (claims !== undefined\r\n\t\t&& claims !== null\r\n\t\t&& hasOwnPropertyTS(claims, 'emails') && claims['emails'] && claims['emails'].length > 0\r\n\t\t&& hasOwnPropertyTS(claims, 'family_name') && claims['family_name']\r\n\t\t&& typeof claims['family_name'] === 'string' && claims['family_name'].length > 0\r\n\t\t&& hasOwnPropertyTS(claims, 'given_name') && claims['given_name'] &&\r\n\t\ttypeof claims['given_name'] === 'string' && claims['given_name'].length > 0)\r\n\t\treturn true;\r\n\treturn false;\r\n}","import { LogLevel } from \"@azure/msal-browser\";\r\nimport { Configuration } from \"@azure/msal-browser\";\r\n\r\n\r\nexport const authConfig: Configuration = {\r\n\tauth: {\r\n\t\tclientId: process.env.B2C_CLIENT_ID ?? 'default',\r\n\t\tauthority: process.env.B2C_AUTHORITY,\r\n\t\tknownAuthorities: process.env.B2C_KNOWN_AUTHORITIES ? process.env.B2C_KNOWN_AUTHORITIES.split(\",\") : ['default'],\r\n\t\tredirectUri: process.env.B2C_REDIRECT_URI,\r\n\t\tpostLogoutRedirectUri: process.env.B2C_POST_LOGOUT_REDIRECT_URI\r\n\t},\r\n\tcache: {\r\n\t\tcacheLocation: \"sessionStorage\",\r\n\t\tstoreAuthStateInCookie: false\r\n\t},\r\n\tsystem: {\r\n\t\tloggerOptions: {\r\n\t\t\tloggerCallback: (level, message, containsPii) => {\r\n\t\t\t\tif (containsPii) return;\r\n\t\t\t\tswitch (level) {\r\n\t\t\t\t\tcase LogLevel.Error:\r\n\t\t\t\t\t\tconsole.error(message);\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\tcase LogLevel.Info:\r\n\t\t\t\t\t\tconsole.info(message);\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\tcase LogLevel.Verbose:\r\n\t\t\t\t\t\tconsole.debug(message);\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\tcase LogLevel.Warning:\r\n\t\t\t\t\t\tconsole.warn(message);\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n\r\n\r\n// Add here scopes for id token to be used at MS Identity Platform endpoints\r\nexport const loginRequest = { scopes: process.env.B2C_LOGIN_SCOPES ? process.env.B2C_LOGIN_SCOPES.split(\",\") : ['default'] };\r\n\r\nexport const editProfile = { authority: process.env.B2C_EDIT_PROFILE_AUTHORITY };\r\n\r\nexport const policyNames = { signUpSignIn: process.env.B2C_SIGNUP_SIGNIN_POLICY };\r\n\r\nexport const graphConfig = { graphMeEndpoint: 'https://graph.microsoft-ppe.com/v1.0/me' };","import { msalInstance } from 'components/global/authentication/msalInstance';\r\nimport { loginRequest } from 'components/global/authentication/authConfig';\r\nimport { InteractionRequiredAuthError } from '@azure/msal-browser';\r\n\r\n\r\n\r\nexport const handleLogin = () => {\r\n\tmsalInstance.loginRedirect(loginRequest)\r\n\t\t.catch((reason: unknown) => console.error(reason));\r\n};\r\n\r\n\r\nexport const handleLogout = () => {\r\n\tmsalInstance.logoutRedirect()\r\n\t\t.catch((reason: unknown) => console.error(reason));\r\n};\r\n\r\n\r\nexport const isAuthenticated = () => {\r\n\tconst accounts = msalInstance.getAllAccounts();\r\n\tif (accounts.length > 0) return true;\r\n\treturn false;\r\n};\r\n\r\n\r\nexport const getAuthToken = async() => {\r\n\tconst account = msalInstance.getActiveAccount();\r\n\tif (account) {\r\n\t\tconst loginRequestObject = { ...loginRequest, account: account };\r\n\r\n\t\tconst authResult = await msalInstance.acquireTokenSilent(loginRequestObject).catch(error => {\r\n\t\t\tif (error instanceof InteractionRequiredAuthError) {\r\n\t\t\t\treturn msalInstance.acquireTokenRedirect(loginRequestObject);\r\n\t\t\t};\r\n\t\t\tconsole.error(error);\r\n\t\t});\r\n\r\n\t\tif (authResult) return authResult.accessToken;\r\n\t};\r\n\r\n\treturn '-default-';\r\n};","import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react';\r\nimport { getAuthToken } from 'components/global/authentication/authFunctions';\r\n\r\n\r\nexport const baseApi = createApi({\r\n\treducerPath: 'baseApi',\r\n\tbaseQuery: fetchBaseQuery({\r\n\t\tbaseUrl: `${process.env.URL_DATA_API}/api/`,\r\n\t\tprepareHeaders: async(headers) => {\r\n\t\t\tconst authToken = await getAuthToken();\r\n\t\t\theaders.set('authorization', `Bearer ${authToken}`);\r\n\t\t\treturn headers;\r\n\t\t},\r\n\t}),\r\n\ttagTypes: [\r\n\t\t'Planes',\r\n\t\t'Pricings',\r\n\t\t'Pilot',\r\n\t\t'AirportsByUser',\r\n\t\t'RoleRequests',\r\n\t\t'UsersByAirport',\r\n\t\t'AirportPayments',\r\n\t\t'UserPayments',\r\n\t\t'BusinessEntities',\r\n\t\t'ApprovedBusinessEntities',\r\n\t\t'Airports',\r\n\t\t'AdminOnAirport',\r\n\t\t'AdminOrResidentOnAirport',\r\n\t\t'SortedAirports'\r\n\t],\r\n\tendpoints: () => ({}),\r\n});","\r\nexport enum LanguageEnum {\r\n\ten = \"EN\",\r\n\tcz = \"CZ\",\r\n\tde = \"DE\",\r\n}\r\n\r\n\r\nexport enum UserTermType {\r\n\tservice = \"Service\",\r\n\tbussiness = \"Bussiness\",\r\n\tcontract = \"Contract\",\r\n}\r\n\r\n\r\nexport enum PlaneTypeEnum {\r\n\tull = \"ULL\",\r\n\tga = \"GA\"\r\n}\r\n\r\n\r\nexport enum UserRoleTypeEnum {\r\n\tadmin = \"Admin\",\r\n\tbookkeeper = \"Bookkeeper\",\r\n\tresident = \"Resident\"\r\n}\r\n\r\nexport enum UserModeEnum {\r\n\twaiting = \"Waiting\",\r\n\terror = \"Error\",\r\n\tunregistered = \"Unregistered\",\r\n\tadministrator = \"Administrator\",\r\n\tpilot = \"Pilot\"\r\n}","import globalEN from 'translations/en/global.json';\r\nimport globalCZ from 'translations/cz/global.json';\r\nimport globalDE from 'translations/de/global.json';\r\n\r\nimport adminPageEN from 'translations/en/adminPage.json';\r\nimport adminPageCZ from 'translations/cz/adminPage.json';\r\nimport adminPageDE from 'translations/de/adminPage.json';\r\n\r\nimport cartPageEN from 'translations/en/cartPage.json';\r\nimport cartPageCZ from 'translations/cz/cartPage.json';\r\nimport cartPageDE from 'translations/de/cartPage.json';\r\n\r\nimport pilotHomeEN from 'translations/en/pilotHome.json';\r\nimport pilotHomeCZ from 'translations/cz/pilotHome.json';\r\nimport pilotHomeDE from 'translations/de/pilotHome.json';\r\n\r\nimport pricingsPageEN from 'translations/en/pricingsPage.json';\r\nimport pricingsPageCZ from 'translations/cz/pricingsPage.json';\r\nimport pricingsPageDE from 'translations/de/pricingsPage.json';\r\n\r\nimport registrationPageEN from 'translations/en/registrationPage.json';\r\nimport registrationPageCZ from 'translations/cz/registrationPage.json';\r\nimport registrationPageDE from 'translations/de/registrationPage.json';\r\n\r\nimport rolesPageEN from 'translations/en/rolesPage.json';\r\nimport rolesPageCZ from 'translations/cz/rolesPage.json';\r\nimport rolesPageDE from 'translations/de/rolesPage.json';\r\n\r\nimport transactionsPageEN from 'translations/en/transactionsPage.json';\r\nimport transactionsPageCZ from 'translations/cz/transactionsPage.json';\r\nimport transactionsPageDE from 'translations/de/transactionsPage.json';\r\n\r\nimport formPagesEN from 'translations/en/formPages.json';\r\nimport formPagesCZ from 'translations/cz/formPages.json';\r\nimport formPagesDE from 'translations/de/formPages.json';\r\n\r\n\r\n\r\nexport const resources = {\r\n\tEN: {\r\n\t\tglobal: globalEN,\r\n\t\tadminPage: adminPageEN,\r\n\t\tcartPage: cartPageEN,\r\n\t\tpilotHome: pilotHomeEN,\r\n\t\tpricingsPage: pricingsPageEN,\r\n\t\tregistrationPage: registrationPageEN,\r\n\t\trolesPage: rolesPageEN,\r\n\t\ttransactionsPage: transactionsPageEN,\r\n\t\tformPages: formPagesEN\r\n\t},\r\n\tCZ: {\r\n\t\tglobal: globalCZ,\r\n\t\tadminPage: adminPageCZ,\r\n\t\tcartPage: cartPageCZ,\r\n\t\tpilotHome: pilotHomeCZ,\r\n\t\tpricingsPage: pricingsPageCZ,\r\n\t\tregistrationPage: registrationPageCZ,\r\n\t\trolesPage: rolesPageCZ,\r\n\t\ttransactionsPage: transactionsPageCZ,\r\n\t\tformPages: formPagesCZ\r\n\t},\r\n\tDE: {\r\n\t\tglobal: globalDE,\r\n\t\tadminPage: adminPageDE,\r\n\t\tcartPage: cartPageDE,\r\n\t\tpilotHome: pilotHomeDE,\r\n\t\tpricingsPage: pricingsPageDE,\r\n\t\tregistrationPage: registrationPageDE,\r\n\t\trolesPage: rolesPageDE,\r\n\t\ttransactionsPage: transactionsPageDE,\r\n\t\tformPages: formPagesDE\r\n\t}\r\n} as const;","import i18next from 'i18next';\r\nimport { initReactI18next } from 'react-i18next';\r\nimport { LanguageEnum } from 'types/enums';\r\nimport localeObjectCZ from 'date-fns/locale/cs';\r\nimport localeObjectEN from 'date-fns/locale/en-US';\r\nimport localeObjectDE from 'date-fns/locale/de';\r\nimport { resources } from 'translations/imports';\r\n\r\n\r\n\r\nexport default function loadTranslations() {\r\n\ti18next.use(initReactI18next).init({\r\n\t\tinterpolation: { escapeValue: false },\r\n\t\tlng: LanguageEnum.cz,\r\n\t\tresources\r\n\t});\r\n};\r\n\r\n\r\nexport function changeLanguage(lng: LanguageEnum) {\r\n\ti18next.changeLanguage(lng);\r\n};\r\n\r\n\r\nexport function toggleLanguage() {\r\n\tconst lng = i18next.language;\r\n\tif (lng === LanguageEnum.en) i18next.changeLanguage(LanguageEnum.cz);\r\n\tif (lng === LanguageEnum.cz) i18next.changeLanguage(LanguageEnum.de);\r\n\tif (lng === LanguageEnum.de) i18next.changeLanguage(LanguageEnum.en);\r\n};\r\n\r\n\r\nexport function getLocaleObject() {\r\n\tconst lng = i18next.language;\r\n\tif (lng === LanguageEnum.cz) return localeObjectCZ;\r\n\tif (lng === LanguageEnum.de) return localeObjectDE;\r\n\treturn localeObjectEN;\r\n};\r\n\r\nexport function getDateFormat(settings?: { withTime: boolean }) {\r\n\tconst lng = i18next.language;\r\n\tif (lng === LanguageEnum.cz && settings && settings.withTime === true) return 'dd.MM.yyyy - HH:mm';\r\n\tif (lng === LanguageEnum.cz) return 'dd.MM.yyyy';\r\n\tif (lng === LanguageEnum.de && settings && settings.withTime === true) return 'dd.MM.yyyy - HH:mm';\r\n\tif (lng === LanguageEnum.de) return 'dd.MM.yyyy';\r\n\tif (settings && settings.withTime === true) return 'MM/dd/yyyy - HH:mm'\r\n\treturn 'MM/dd/yyyy';\r\n};\r\n\r\nexport function getDaysEnum() {\r\n\tconst locale = getLocaleObject();\r\n\t\r\n\tif (!locale.localize) return ({\r\n\t\tsunday: 'Su',\r\n\t\tmonday: 'Mo',\r\n\t\ttuesday: 'Tu',\r\n\t\twednesday: 'We',\r\n\t\tthursday: 'Th',\r\n\t\tfriday: 'Fr',\r\n\t\tsaturday: 'Sa'\r\n\t});\r\n\r\n\treturn ({\r\n\t\tsunday: locale.localize.day(0, { width: 'short' }) as string,\r\n\t\tmonday: locale.localize.day(1, { width: 'short' }) as string,\r\n\t\ttuesday: locale.localize.day(2, { width: 'short' }) as string,\r\n\t\twednesday: locale.localize.day(3, { width: 'short' }) as string,\r\n\t\tthursday: locale.localize.day(4, { width: 'short' }) as string,\r\n\t\tfriday: locale.localize.day(5, { width: 'short' }) as string,\r\n\t\tsaturday: locale.localize.day(6, { width: 'short' }) as string\r\n\t});\r\n}\r\n\r\n\r\nexport function getLocaleNumberSeparator(stringNumber: string) {\r\n\tconst lng = i18next.language;\r\n\tif (lng === LanguageEnum.cz) return stringNumber.replace('.', ',');\r\n\tif (lng === LanguageEnum.de) return stringNumber.replace('.', ',');\r\n\treturn stringNumber;\r\n}","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\r\nimport { changeLanguage } from 'translations';\r\nimport { LanguageEnum, UserModeEnum } from 'types/enums';\r\nimport { User } from 'types/User';\r\nimport { Airport } from 'types/Airport';\r\n\r\n\r\ninterface GlobalState {\r\n\tuser: User | null,\r\n\tlanguage: LanguageEnum,\r\n\tuserMode: UserModeEnum\r\n};\r\n\r\nconst initialState: GlobalState = {\r\n\tuser: null,\r\n\tlanguage: LanguageEnum.cz,\r\n\tuserMode: UserModeEnum.waiting\r\n};\r\n\r\n\r\nexport const globalSlice = createSlice({\r\n\tname: 'global',\r\n\tinitialState,\r\n\treducers: {\r\n\t\tsetUser: (state, action: PayloadAction) => {\r\n\t\t\tstate.user = action.payload\r\n\t\t},\r\n\t\tsetUserMode: (state, action: PayloadAction) => {\r\n\t\t\tstate.userMode = action.payload\r\n\t\t},\r\n\t\tsetLanguage: (state, action: PayloadAction) => {\r\n\t\t\tchangeLanguage(action.payload);\r\n\t\t\tstate.language = action.payload\r\n\t\t}\r\n\t},\r\n});\r\n\r\nexport default globalSlice.reducer;\r\n\r\n\r\nexport const {\r\n\tsetUser,\r\n\tsetUserMode,\r\n\tsetLanguage } = globalSlice.actions;","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\r\nimport { Airport } from 'types/Airport';\r\n\r\n\r\n\r\ninterface PersistState {\r\n\tglobalAirport: Airport | null\r\n};\r\n\r\nconst initialState: PersistState = {\r\n\tglobalAirport: null\r\n};\r\n\r\n\r\n\r\nexport const persistSlice = createSlice({\r\n\tname: 'persist',\r\n\tinitialState,\r\n\treducers: {\r\n\t\tsetGlobalAirport: (state, action: PayloadAction) => {\r\n\t\t\tstate.globalAirport = action.payload\r\n\t\t},\r\n\t\tsetPersistStore: (state, action: PayloadAction) => {\r\n\t\t\treturn action.payload;\r\n\t\t}\r\n\t},\r\n});\r\n\r\nexport default persistSlice.reducer;\r\n\r\n\r\n\r\nexport const {\r\n\tsetGlobalAirport,\r\n\tsetPersistStore } = persistSlice.actions;","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\r\nimport { ApiError } from 'types/ApiError';\r\nimport { RootState } from 'store';\r\n\r\n\r\ninterface ErrorModalState {\r\n\tapiErrors: ApiError[],\r\n\tshowErrorModal: boolean\r\n};\r\n\r\nconst initialState: ErrorModalState = {\r\n\tapiErrors: [],\r\n\tshowErrorModal: false\r\n};\r\n\r\n\r\nexport const errorModalSlice = createSlice({\r\n\tname: 'errorModal',\r\n\tinitialState,\r\n\treducers: {\r\n\t\taddApiError: (state, action: PayloadAction) => {\r\n\t\t\tstate.apiErrors = [ ...state.apiErrors, action.payload ]\r\n\t\t\t\r\n\t\t\tif (state.showErrorModal === false) state.showErrorModal = true;\r\n\t\t},\r\n\t\tclearApiErrors: (state) => {\r\n\t\t\tstate.apiErrors = []\r\n\t\t},\r\n\t\tshowErrorModal: (state, action: PayloadAction) => {\r\n\t\t\tstate.showErrorModal = action.payload\r\n\t\t},\r\n\t},\r\n});\r\n\r\nexport default errorModalSlice.reducer;\r\n\r\n\r\nexport const {\r\n\taddApiError,\r\n\tclearApiErrors,\r\n\tshowErrorModal } = errorModalSlice.actions;\r\n\r\n\r\n//BASE SELECTORS\r\nexport const selectApiErrors = (state: RootState) => state.errorModal.apiErrors;\r\nexport const selectShowErrorModal = (state: RootState) => state.errorModal.showErrorModal;","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\r\nimport { ModifiablePilot, Pilot } from 'types/Pilot';\r\n\r\n\r\ninterface PilotPageState extends ModifiablePilot {\r\n\tinitPilot: Pilot | null,\r\n\tshowInvalids: boolean\r\n};\r\n\r\nconst initialState: PilotPageState = {\r\n\tinitPilot: null,\r\n\tshowInvalids: false,\r\n\tpilotLicenceNumber: null,\r\n\tstreet: '',\r\n\tcity: '',\r\n\tpostalCode: '',\r\n\tcountry: '',\r\n\tphoneNumber: null\r\n};\r\n\r\n\r\nexport const pilotPageSlice = createSlice({\r\n\tname: 'pilotPage',\r\n\tinitialState,\r\n\treducers: {\r\n\t\tsetInitPilot: (state, action: PayloadAction) => {\r\n\t\t\tlet pilot = action.payload;\r\n\r\n\t\t\tstate.initPilot = pilot ?? null;\r\n\t\t\tstate.pilotLicenceNumber = pilot && pilot.pilotLicenceNumber\r\n\t\t\t\t? pilot.pilotLicenceNumber\r\n\t\t\t\t: initialState.pilotLicenceNumber;\r\n\t\t\tstate.street = pilot && pilot.street\r\n\t\t\t\t? pilot.street\r\n\t\t\t\t: initialState.street;\r\n\t\t\tstate.city = pilot && pilot.city\r\n\t\t\t\t? pilot.city\r\n\t\t\t\t: initialState.city;\r\n\t\t\tstate.postalCode = pilot && pilot.postalCode\r\n\t\t\t\t? pilot.postalCode\r\n\t\t\t\t: initialState.postalCode;\r\n\t\t\tstate.country = pilot && pilot.country\r\n\t\t\t\t? pilot.country\r\n\t\t\t\t: initialState.country;\r\n\t\t\tstate.phoneNumber = pilot && pilot.phoneNumber\r\n\t\t\t\t? pilot.phoneNumber\r\n\t\t\t\t: initialState.phoneNumber;\r\n\t\t},\r\n\t\tsetShowInvalids: (state, action: PayloadAction) => {\r\n\t\t\tstate.showInvalids = action.payload\r\n\t\t},\r\n\t\tsetPilotLicenceNumber: (state, action: PayloadAction) => {\r\n\t\t\tstate.pilotLicenceNumber = action.payload\r\n\t\t},\r\n\t\tsetStreet: (state, action: PayloadAction) => {\r\n\t\t\tstate.street = action.payload\r\n\t\t},\r\n\t\tsetCity: (state, action: PayloadAction) => {\r\n\t\t\tstate.city = action.payload\r\n\t\t},\r\n\t\tsetPostalCode: (state, action: PayloadAction) => {\r\n\t\t\tstate.postalCode = action.payload\r\n\t\t},\r\n\t\tsetCountry: (state, action: PayloadAction) => {\r\n\t\t\tstate.country = action.payload\r\n\t\t},\r\n\t\tsetPhoneNumber: (state, action: PayloadAction) => {\r\n\t\t\tstate.phoneNumber = action.payload\r\n\t\t},\r\n\t\tresetStore: (state) => initialState,\r\n\t},\r\n});\r\n\r\nexport default pilotPageSlice.reducer;\r\n\r\n\r\nexport const {\r\n\tsetInitPilot,\r\n\tsetShowInvalids,\r\n\tsetPilotLicenceNumber,\r\n\tsetStreet,\r\n\tsetCity,\r\n\tsetPostalCode,\r\n\tsetCountry,\r\n\tsetPhoneNumber,\r\n\tresetStore } = pilotPageSlice.actions;","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\r\nimport { PilotBusinessEntity, ModifiablePilotCompany } from 'types/PilotBusinessEntity';\r\n\r\n\r\ninterface PilotCompanyState extends ModifiablePilotCompany {\r\n\tinitCompany: PilotBusinessEntity | null,\r\n\tshowInvalids: boolean\r\n};\r\n\r\nconst initialState: PilotCompanyState = {\r\n\tinitCompany: null,\r\n\tshowInvalids: false,\r\n\tbussinessName: '',\r\n\tcompanyEmail: '',\r\n\tphoneNumber: null,\r\n\tregistrationNumber: '',\r\n\ttaxNumber: '',\r\n\tstreet: '',\r\n\tcity: '',\r\n\tpostalCode: '',\r\n\tcountry: ''\r\n};\r\n\r\n\r\nexport const pilotCompanySlice = createSlice({\r\n\tname: 'pilotCompany',\r\n\tinitialState,\r\n\treducers: {\r\n\t\tsetInitCompany: (state, action: PayloadAction) => {\r\n\t\t\tlet ent = action.payload;\r\n\t\t\t\r\n\t\t\tstate.initCompany = ent ?? null;\r\n\t\t\tstate.bussinessName = ent && ent.bussinessName\r\n\t\t\t\t? ent.bussinessName\r\n\t\t\t\t: initialState.bussinessName;\r\n\t\t\tstate.companyEmail = ent && ent.companyEmail\r\n\t\t\t\t? ent.companyEmail\r\n\t\t\t\t: initialState.companyEmail;\r\n\t\t\tstate.phoneNumber = ent && ent.phoneNumber\r\n\t\t\t\t? ent.phoneNumber\r\n\t\t\t\t: initialState.phoneNumber;\r\n\t\t\tstate.registrationNumber = ent && ent.registrationNumber\r\n\t\t\t\t? ent.registrationNumber\r\n\t\t\t\t: initialState.registrationNumber;\r\n\t\t\tstate.taxNumber = ent && ent.taxNumber\r\n\t\t\t\t? ent.taxNumber\r\n\t\t\t\t: initialState.taxNumber;\r\n\t\t\tstate.street = ent && ent.street\r\n\t\t\t\t? ent.street\r\n\t\t\t\t: initialState.street;\r\n\t\t\tstate.city = ent && ent.city\r\n\t\t\t\t? ent.city\r\n\t\t\t\t: initialState.city;\r\n\t\t\tstate.postalCode = ent && ent.postalCode\r\n\t\t\t\t? ent.postalCode\r\n\t\t\t\t: initialState.postalCode;\r\n\t\t\tstate.country = ent && ent.country\r\n\t\t\t\t? ent.country\r\n\t\t\t\t: initialState.country;\r\n\t\t},\r\n\t\tsetShowInvalids: (state, action: PayloadAction) => {\r\n\t\t\tstate.showInvalids = action.payload\r\n\t\t},\r\n\t\tsetBussinessName: (state, action: PayloadAction) => {\r\n\t\t\tstate.bussinessName = action.payload\r\n\t\t},\r\n\t\tsetCompanyEmail: (state, action: PayloadAction) => {\r\n\t\t\tstate.companyEmail = action.payload\r\n\t\t},\r\n\t\tsetPhoneNumber: (state, action: PayloadAction) => {\r\n\t\t\tstate.phoneNumber = action.payload\r\n\t\t},\r\n\t\tsetRegistrationNumber: (state, action: PayloadAction) => {\r\n\t\t\tstate.registrationNumber = action.payload\r\n\t\t},\r\n\t\tsetTaxNumber: (state, action: PayloadAction) => {\r\n\t\t\tstate.taxNumber = action.payload\r\n\t\t},\r\n\t\tsetStreet: (state, action: PayloadAction) => {\r\n\t\t\tstate.street = action.payload\r\n\t\t},\r\n\t\tsetCity: (state, action: PayloadAction) => {\r\n\t\t\tstate.city = action.payload\r\n\t\t},\r\n\t\tsetPostalCode: (state, action: PayloadAction) => {\r\n\t\t\tstate.postalCode = action.payload\r\n\t\t},\r\n\t\tsetCountry: (state, action: PayloadAction) => {\r\n\t\t\tstate.country = action.payload\r\n\t\t},\r\n\t\tresetStore: (state) => initialState,\r\n\t},\r\n});\r\n\r\nexport default pilotCompanySlice.reducer;\r\n\r\n\r\nexport const {\r\n\tsetInitCompany,\r\n\tsetShowInvalids,\r\n\tsetBussinessName,\r\n\tsetCompanyEmail,\r\n\tsetPhoneNumber,\r\n\tsetRegistrationNumber,\r\n\tsetTaxNumber,\r\n\tsetStreet,\r\n\tsetCity,\r\n\tsetPostalCode,\r\n\tsetCountry,\r\n\tresetStore } = pilotCompanySlice.actions;","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\r\nimport { Plane } from 'types/Plane';\r\nimport { PlaneTypeEnum } from 'types/enums';\r\n\r\n\r\ninterface PlanePageState extends Omit {\r\n\tinitPlane: Plane | null,\r\n\tshowInvalids: boolean,\r\n\tmtow: string,\r\n\twingsSpan: string | null\r\n};\r\n\r\nconst initialState: PlanePageState = {\r\n\tinitPlane: null,\r\n\tshowInvalids: false,\r\n\timatriculation: '',\r\n\tplaneName: null,\r\n\tplaneType: '',\r\n\tmtow: '0',\r\n\tseatsCount: null,\r\n\twingsSpan: null\r\n};\r\n\r\n\r\nexport const planePageSlice = createSlice({\r\n\tname: 'planePage',\r\n\tinitialState,\r\n\treducers: {\r\n\t\tinitPlane: (state, action: PayloadAction) => {\r\n\t\t\tlet pla = action.payload;\r\n\t\t\t\r\n\t\t\tstate.initPlane = pla ?? null;\r\n\t\t\tstate.imatriculation = pla && pla.imatriculation\r\n\t\t\t\t? pla.imatriculation\r\n\t\t\t\t: initialState.imatriculation;\r\n\t\t\tstate.planeName = pla && pla.planeName\r\n\t\t\t\t? pla.planeName\r\n\t\t\t\t: initialState.planeName;\r\n\t\t\tstate.planeType = pla && pla.planeType\r\n\t\t\t\t? pla.planeType\r\n\t\t\t\t: initialState.planeType;\r\n\t\t\tstate.mtow = pla && pla.mtow\r\n\t\t\t\t? `${pla.mtow}`\r\n\t\t\t\t: initialState.mtow;\r\n\t\t\tstate.seatsCount = pla && pla.seatsCount\r\n\t\t\t\t? pla.seatsCount\r\n\t\t\t\t: initialState.seatsCount;\r\n\t\t\tstate.wingsSpan = pla && pla.wingsSpan\r\n\t\t\t\t? `${pla.wingsSpan}`\r\n\t\t\t\t: initialState.wingsSpan;\r\n\t\t},\r\n\t\tsetShowInvalids: (state, action: PayloadAction) => {\r\n\t\t\tstate.showInvalids = action.payload\r\n\t\t},\r\n\t\tsetImatriculation: (state, action: PayloadAction) => {\r\n\t\t\tstate.imatriculation = action.payload\r\n\t\t},\r\n\t\tsetPlaneName: (state, action: PayloadAction) => {\r\n\t\t\tstate.planeName = action.payload\r\n\t\t},\r\n\t\tsetPlaneType: (state, action: PayloadAction) => {\r\n\t\t\tstate.planeType = action.payload\r\n\t\t},\r\n\t\tsetMtow: (state, action: PayloadAction) => {\r\n\t\t\tstate.mtow = action.payload\r\n\t\t},\r\n\t\tsetSeatsCount: (state, action: PayloadAction) => {\r\n\t\t\tstate.seatsCount = action.payload\r\n\t\t},\r\n\t\tsetWingsSpan: (state, action: PayloadAction) => {\r\n\t\t\tstate.wingsSpan = action.payload\r\n\t\t},\r\n\t\tresetStore: (state) => initialState,\r\n\t},\r\n});\r\n\r\nexport default planePageSlice.reducer;\r\n\r\n\r\nexport const {\r\n\tinitPlane,\r\n\tsetShowInvalids,\r\n\tsetImatriculation,\r\n\tsetPlaneName,\r\n\tsetPlaneType,\r\n\tsetMtow,\r\n\tsetSeatsCount,\r\n\tsetWingsSpan,\r\n\tresetStore } = planePageSlice.actions;","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\r\nimport { Airport, AirportRequest, ModifiableAirport } from 'types/Airport';\r\n\r\n\r\ninterface AirportPageState extends ModifiableAirport {\r\n\tinitAirportRequest: AirportRequest | null,\r\n\tshowInvalids: boolean\r\n};\r\n\r\nconst initialState: AirportPageState = {\r\n\tinitAirportRequest: null,\r\n\tshowInvalids: false,\r\n\ticao: '',\r\n\tname: ''\r\n};\r\n\r\n\r\nexport const airportPageSlice = createSlice({\r\n\tname: 'airportPage',\r\n\tinitialState,\r\n\treducers: {\r\n\t\tinitAirport: (state, action: PayloadAction) => {\r\n\t\t\tlet req = action.payload.changeRequest;\r\n\t\t\tlet item = req ? req : action.payload;\r\n\r\n\t\t\tstate.initAirportRequest = req ?? null;\r\n\t\t\tstate.icao = action.payload.icao;\r\n\r\n\t\t\tif (item) {\r\n\t\t\t\tstate.name = item.name ? item.name : initialState.name;\r\n\t\t\t}\r\n\t\t},\r\n\t\tsetShowInvalids: (state, action: PayloadAction) => {\r\n\t\t\tstate.showInvalids = action.payload\r\n\t\t},\r\n\t\tsetName: (state, action: PayloadAction) => {\r\n\t\t\tstate.name = action.payload\r\n\t\t},\r\n\t\tresetStore: (state) => initialState,\r\n\t},\r\n});\r\n\r\nexport default airportPageSlice.reducer;\r\n\r\n\r\nexport const {\r\n\tinitAirport,\r\n\tsetShowInvalids,\r\n\tsetName,\r\n\tresetStore } = airportPageSlice.actions;","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\r\nimport { UserRoleTypeEnum } from 'types/enums';\r\nimport { Airport } from 'types/Airport';\r\n\r\n\r\ninterface AssignAirportState {\r\n\tshowInvalids: boolean,\r\n\tselectedAirport: Airport | null,\r\n\tuserEmail: string,\r\n\tselectedRole: UserRoleTypeEnum | ''\r\n};\r\n\r\nconst initialState: AssignAirportState = {\r\n\tshowInvalids: false,\r\n\tselectedAirport: null,\r\n\tuserEmail: '',\r\n\tselectedRole: ''\r\n};\r\n\r\n\r\nexport const AssignAirportSlice = createSlice({\r\n\tname: 'assaignAirport',\r\n\tinitialState,\r\n\treducers: {\r\n\t\tsetShowInvalids: (state, action: PayloadAction) => {\r\n\t\t\tstate.showInvalids = action.payload\r\n\t\t},\r\n\t\tsetSelectedAirport: (state, action: PayloadAction) => {\r\n\t\t\tstate.selectedAirport = action.payload\r\n\t\t},\r\n\t\tsetUserEmail: (state, action: PayloadAction) => {\r\n\t\t\tstate.userEmail = action.payload\r\n\t\t},\r\n\t\tsetSelectedRole: (state, action: PayloadAction) => {\r\n\t\t\tstate.selectedRole = action.payload\r\n\t\t},\r\n\t\tresetStore: (state) => initialState,\r\n\t},\r\n});\r\n\r\nexport default AssignAirportSlice.reducer;\r\n\r\n\r\nexport const {\r\n\tsetShowInvalids,\r\n\tsetSelectedAirport,\r\n\tsetUserEmail,\r\n\tsetSelectedRole,\r\n\tresetStore } = AssignAirportSlice.actions;","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\r\nimport { PricingItem } from 'types/PricingItem';\r\nimport { Airport } from 'types/Airport';\r\n\r\n\r\nexport type CartInitData = {\r\n\tselectedAirport: Airport,\r\n\timatriculation: string,\r\n\tbusinessEntityId: number | null,\r\n\trequestedDate: string,\r\n\tallValidPricings: PricingItem[]\r\n};\r\n\r\n\r\ninterface CartState {\r\n\tselectedAirport: Airport | null,\r\n\timatriculation: string,\r\n\tbusinessEntityId: number,\r\n\trequestedDate: string,\r\n\tallPricings: PricingItem[]\r\n};\r\n\r\nconst initialState: CartState = {\r\n\tselectedAirport: null,\r\n\timatriculation: '',\r\n\tbusinessEntityId: 0,\r\n\trequestedDate: '',\r\n\tallPricings: []\r\n};\r\n\r\n\r\nexport const cartSlice = createSlice({\r\n\tname: 'cart',\r\n\tinitialState,\r\n\treducers: {\r\n\t\tinitCartItems: (state, action: PayloadAction) => {\r\n\t\t\tstate.selectedAirport = action.payload.selectedAirport;\r\n\t\t\tstate.imatriculation = action.payload.imatriculation;\r\n\t\t\tstate.businessEntityId = action.payload.businessEntityId ?? initialState.businessEntityId;\r\n\t\t\tstate.requestedDate = action.payload.requestedDate;\r\n\t\t\tstate.allPricings = action.payload.allValidPricings.map(x => ({\r\n\t\t\t\t...x,\r\n\t\t\t\tpriceBeforeDiscount: x.residentDiscount && x.residentDiscount > 0 ? x.localPrice : null,\r\n\t\t\t\tlocalPrice: (x.localPrice / 100) * (100 - x.residentDiscount),\r\n\t\t\t\tcartQuantity: 0\r\n\t\t\t}));\r\n\t\t},\r\n\r\n\t\tupdateQuantity: (state, action: PayloadAction<{ pricingItemId: number, quantity: number }>) => {\r\n\t\t\tconst index = state.allPricings.findIndex(item => item.id === action.payload.pricingItemId);\r\n\t\t\tif (index !== -1) state.allPricings[index].cartQuantity = action.payload.quantity;\r\n\t\t},\r\n\r\n\t\tincreaseQuantity: (state, action: PayloadAction) => {\r\n\t\t\tconst index = state.allPricings.findIndex(item => item.id === action.payload);\r\n\t\t\tif (index !== -1) {\r\n\t\t\t\tlet quantity = state.allPricings[index].cartQuantity;\r\n\t\t\t\tlet newQuantity = typeof quantity === 'number' ? quantity + 1 : 0;\r\n\t\t\t\tstate.allPricings[index].cartQuantity = newQuantity;\r\n\t\t\t};\r\n\t\t},\r\n\r\n\t\tdecreaseQuantity: (state, action: PayloadAction) => {\r\n\t\t\tconst index = state.allPricings.findIndex(item => item.id === action.payload);\r\n\t\t\tif (index !== -1) {\r\n\t\t\t\tlet quantity = state.allPricings[index].cartQuantity;\r\n\t\t\t\tlet newQuantity = typeof quantity === 'number' && quantity > 0 ? quantity - 1 : 0;\r\n\t\t\t\tstate.allPricings[index].cartQuantity = newQuantity;\r\n\t\t\t};\r\n\t\t},\r\n\r\n\t\tresetStore: () => initialState,\r\n\t},\r\n});\r\n\r\nexport default cartSlice.reducer;\r\n\r\n\r\nexport const {\r\n\tinitCartItems,\r\n\tupdateQuantity,\r\n\tincreaseQuantity,\r\n\tdecreaseQuantity,\r\n\tresetStore } = cartSlice.actions;","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\r\nimport { BusinessEntity, BusinessEntityRequest, ModifiableBusinessEntity } from 'types/BusinessEntity';\r\n\r\n\r\ninterface AirportCompanyState extends ModifiableBusinessEntity {\r\n\tinitAirportsCompanyRequest: BusinessEntityRequest | null,\r\n\tairportsCompanyId: number,\r\n\tairportIcao: string,\r\n\tshowInvalids: boolean\r\n};\r\n\r\nconst initialState: AirportCompanyState = {\r\n\tinitAirportsCompanyRequest: null,\r\n\tairportsCompanyId: 0,\r\n\tairportIcao: '',\r\n\tshowInvalids: false,\r\n\tname: '',\r\n\tcompanyEmail: '',\r\n\tphoneNumber: '',\r\n\tregistrationNumber: '',\r\n\ttaxNumber: '',\r\n\tstreet: '',\r\n\tcity: '',\r\n\tpostalCode: '',\r\n\tcountry: '',\r\n\tbankAccount: '',\r\n\tiban: '',\r\n\tcurrency: ''\r\n};\r\n\r\n\r\nexport const airportCompanySlice = createSlice({\r\n\tname: 'airportCompany',\r\n\tinitialState,\r\n\treducers: {\r\n\t\tinitAirportCompany: (state, action: PayloadAction<{ businessEntity: BusinessEntity | null, airportIcao: string }>) => {\r\n\t\t\tlet req = action.payload.businessEntity?.changeRequest;\r\n\t\t\tlet item = req ? req : action.payload.businessEntity;\r\n\r\n\t\t\tstate.initAirportsCompanyRequest = req ?? null;\r\n\t\t\tstate.airportsCompanyId = action.payload.businessEntity ? action.payload.businessEntity.id : 0;\r\n\t\t\tstate.airportIcao = action.payload.airportIcao;\r\n\r\n\t\t\tif (item) {\r\n\t\t\t\tstate.name = item.name\r\n\t\t\t\t\t? item.name\r\n\t\t\t\t\t: initialState.name;\r\n\t\t\t\tstate.companyEmail = item.companyEmail\r\n\t\t\t\t\t? item.companyEmail\r\n\t\t\t\t\t: initialState.companyEmail;\r\n\t\t\t\tstate.phoneNumber = item.phoneNumber\r\n\t\t\t\t\t? item.phoneNumber\r\n\t\t\t\t\t: initialState.phoneNumber;\r\n\t\t\t\tstate.registrationNumber = item.registrationNumber\r\n\t\t\t\t\t? item.registrationNumber\r\n\t\t\t\t\t: initialState.registrationNumber;\r\n\t\t\t\tstate.taxNumber = item.taxNumber\r\n\t\t\t\t\t? item.taxNumber\r\n\t\t\t\t\t: initialState.taxNumber;\r\n\t\t\t\tstate.street = item.street\r\n\t\t\t\t\t? item.street\r\n\t\t\t\t\t: initialState.street;\r\n\t\t\t\tstate.city = item.city\r\n\t\t\t\t\t? item.city\r\n\t\t\t\t\t: initialState.city;\r\n\t\t\t\tstate.postalCode = item.postalCode\r\n\t\t\t\t\t? item.postalCode\r\n\t\t\t\t\t: initialState.postalCode;\r\n\t\t\t\tstate.country = item.country\r\n\t\t\t\t\t? item.country\r\n\t\t\t\t\t: initialState.country;\r\n\t\t\t\tstate.bankAccount = item.bankAccount\r\n\t\t\t\t\t? item.bankAccount\r\n\t\t\t\t\t: initialState.bankAccount;\r\n\t\t\t\tstate.iban = item.iban\r\n\t\t\t\t\t? item.iban\r\n\t\t\t\t\t: initialState.iban;\r\n\t\t\t\tstate.currency = item.currency\r\n\t\t\t\t\t? item.currency\r\n\t\t\t\t\t: initialState.currency;\r\n\t\t\t}\r\n\t\t},\r\n\t\tsetShowInvalids: (state, action: PayloadAction) => {\r\n\t\t\tstate.showInvalids = action.payload\r\n\t\t},\r\n\t\tsetName: (state, action: PayloadAction) => {\r\n\t\t\tstate.name = action.payload\r\n\t\t},\r\n\t\tsetCompanyEmail: (state, action: PayloadAction) => {\r\n\t\t\tstate.companyEmail = action.payload\r\n\t\t},\r\n\t\tsetPhoneNumber: (state, action: PayloadAction) => {\r\n\t\t\tstate.phoneNumber = action.payload\r\n\t\t},\r\n\t\tsetRegistrationNumber: (state, action: PayloadAction) => {\r\n\t\t\tstate.registrationNumber = action.payload\r\n\t\t},\r\n\t\tsetTaxNumber: (state, action: PayloadAction) => {\r\n\t\t\tstate.taxNumber = action.payload\r\n\t\t},\r\n\t\tsetStreet: (state, action: PayloadAction) => {\r\n\t\t\tstate.street = action.payload\r\n\t\t},\r\n\t\tsetCity: (state, action: PayloadAction) => {\r\n\t\t\tstate.city = action.payload\r\n\t\t},\r\n\t\tsetPostalCode: (state, action: PayloadAction) => {\r\n\t\t\tstate.postalCode = action.payload\r\n\t\t},\r\n\t\tsetCountry: (state, action: PayloadAction) => {\r\n\t\t\tstate.country = action.payload\r\n\t\t},\r\n\t\tsetBankAccount: (state, action: PayloadAction) => {\r\n\t\t\tstate.bankAccount = action.payload\r\n\t\t},\r\n\t\tsetIban: (state, action: PayloadAction) => {\r\n\t\t\tstate.iban = action.payload\r\n\t\t},\r\n\t\tsetCurrency: (state, action: PayloadAction) => {\r\n\t\t\tstate.currency = action.payload\r\n\t\t},\r\n\t\tresetStore: (state) => initialState,\r\n\t},\r\n});\r\n\r\nexport default airportCompanySlice.reducer;\r\n\r\n\r\nexport const {\r\n\tinitAirportCompany,\r\n\tsetShowInvalids,\r\n\tsetName,\r\n\tsetCompanyEmail,\r\n\tsetPhoneNumber,\r\n\tsetRegistrationNumber,\r\n\tsetTaxNumber,\r\n\tsetStreet,\r\n\tsetCity,\r\n\tsetPostalCode,\r\n\tsetCountry,\r\n\tsetBankAccount,\r\n\tsetIban,\r\n\tsetCurrency,\r\n\tresetStore } = airportCompanySlice.actions;","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\r\nimport { Airport } from 'types/Airport';\r\nimport { Plane } from 'types/Plane';\r\nimport { GpsPoint } from 'types/GpsPoint';\r\nimport { PilotBusinessEntity } from 'types/PilotBusinessEntity';\r\nimport formatISO from 'date-fns/formatISO';\r\n\r\n\r\ninterface PilotHomeState {\r\n\tgps: GpsPoint | null,\r\n\tairport: Airport | null,\r\n\tplane: Plane | null,\r\n\tcompany: PilotBusinessEntity | null,\r\n\tdate: string\r\n};\r\n\r\nconst initialState: PilotHomeState = {\r\n\tgps: null,\r\n\tairport: null,\r\n\tplane: null,\r\n\tcompany: null,\r\n\tdate: formatISO(new Date())\r\n};\r\n\r\n\r\nexport const pilotHomeSlice = createSlice({\r\n\tname: 'pilotHome',\r\n\tinitialState,\r\n\treducers: {\r\n\t\tsetGps: (state, action: PayloadAction) => {\r\n\t\t\tstate.gps = action.payload\r\n\t\t},\r\n\t\tsetAirport: (state, action: PayloadAction) => {\r\n\t\t\tstate.airport = action.payload\r\n\t\t},\r\n\t\tsetPlane: (state, action: PayloadAction) => {\r\n\t\t\tstate.plane = action.payload\r\n\t\t},\r\n\t\tsetCompany: (state, action: PayloadAction) => {\r\n\t\t\tstate.company = action.payload\r\n\t\t},\r\n\t\tsetDate: (state, action: PayloadAction) => {\r\n\t\t\tstate.date = action.payload\r\n\t\t}\r\n\t},\r\n});\r\n\r\nexport default pilotHomeSlice.reducer;\r\n\r\n\r\nexport const {\r\n\tsetGps,\r\n\tsetAirport,\r\n\tsetPlane,\r\n\tsetCompany,\r\n\tsetDate } = pilotHomeSlice.actions;","\r\nexport interface DaysValidityConfig {\r\n\tmonday: boolean,\r\n\ttuesday: boolean,\r\n\twednesday: boolean,\r\n\tthursday: boolean,\r\n\tfriday: boolean,\r\n\tsaturday: boolean,\r\n\tsunday: boolean\r\n}\r\n\r\n\r\nexport interface ValidityConfig extends DaysValidityConfig {\r\n\tfrom?: string | null,\r\n\tto?: string | null\r\n}\r\n\r\n\r\nexport const filledValidityDays: DaysValidityConfig = {\r\n\tmonday: true,\r\n\ttuesday: true,\r\n\twednesday: true,\r\n\tthursday: true,\r\n\tfriday: true,\r\n\tsaturday: true,\r\n\tsunday: true\r\n}\r\n\r\nexport const emptyValidityDays: DaysValidityConfig = {\r\n\tmonday: false,\r\n\ttuesday: false,\r\n\twednesday: false,\r\n\tthursday: false,\r\n\tfriday: false,\r\n\tsaturday: false,\r\n\tsunday: false\r\n}","\r\nexport interface PaymentType {\r\n\tattribute: string,\r\n\toperator: PaymentTypeOperatorEnum,\r\n\tvalue: string,\r\n\tindex?: number\r\n}\r\n\r\n\r\nexport enum PaymentTypeOperatorEnum {\r\n\tempty = \"\",\r\n\tequal = \"eq\",\r\n\tlessThen = \"lt\",\r\n\tgreaterThen = \"gt\",\r\n\tlessThenOrEqual = \"lteq\",\r\n\tgreaterThenOrEqual = \"gteq\"\r\n}","const nr = '\\\\d+(?:[\\\\.,]\\\\d+)?';\r\nconst dateRegex = '(' + nr + 'Y)?(' + nr + 'M)?(' + nr + 'D)?';\r\nconst timeRegex = 'T(' + nr + 'H)?(' + nr + 'M)?(' + nr + 'S)?';\r\nconst durationRegex = new RegExp('P' + dateRegex + '(?:' + timeRegex + ')?');\r\n\r\n\r\nexport const parseISODuration = (argument: string) => {\r\n\r\n\tif (!(typeof argument === 'string' || Object.prototype.toString.call(argument) === '[object String]'))\r\n\t\treturn {};\r\n\r\n\tconst match = argument.match(durationRegex)\r\n\tif (!match) return {};\r\n\r\n\r\n\tif (!match[1] &&\r\n\t\t!match[2] &&\r\n\t\t!match[3] &&\r\n\t\t!match[4] &&\r\n\t\t!match[5] &&\r\n\t\t!match[6]) return {};\r\n\r\n\tconst duration: Duration = {};\r\n\tif (match[1]) duration.years = parseFloat(match[1]);\r\n\tif (match[2]) duration.months = parseFloat(match[2]);\r\n\tif (match[3]) duration.days = parseFloat(match[3]);\r\n\tif (match[4]) duration.hours = parseFloat(match[4]);\r\n\tif (match[5]) duration.minutes = parseFloat(match[5]);\r\n\tif (match[6]) duration.seconds = parseFloat(match[6]);\r\n\treturn duration;\r\n};\r\n\r\nexport const capitalizeShortDay = (str: string) =>\r\n\t`${str[0].toUpperCase()}${str.slice(1)}`;\r\n\r\nexport const isValidEmail = (email: string | null | undefined) =>\r\n\temail ? /^\\S+@\\S+\\.\\w+$/.test(email) : false;\r\n\r\nexport const isMaxDate = (date: string | null | undefined) =>\r\n\tdate ? /^9999-12-31*/.test(date) : false;\r\n\r\nexport const checkDecimalInput = (numberString: string | null | undefined) =>\r\n\tnumberString ? /^[1-9]+\\d*[,.]?\\d{0,2}$/.test(numberString) : false;\r\n\r\nexport const checkIntegerInput = (numberString: string | null | undefined) =>\r\n\tnumberString ? /^[1-9]\\d*$/.test(numberString) : false;\r\n\r\nexport const isValidPhoneNumber = (numberString: string | null | undefined) =>\r\n\tnumberString ? /\\+?[\\d\\s]+\\d$/.test(numberString) : false;\r\n\r\nexport const exist = (value: unknown | null | undefined) =>\r\n\t(value !== undefined && value !== null) ? true : false;\r\n\r\nexport const isEmpty = (value: unknown | null | undefined) => {\r\n\tif (value === null || value === undefined) return true;\r\n\tif (typeof value === 'string' && value === '') return true;\r\n\tif (typeof value === 'number' && value === 0) return true;\r\n\tif (Number.isNaN(value)) return true;\r\n\treturn false;\r\n}\r\n\r\nexport const isInteger = (value: number) => {\r\n\tif (!Number.isNaN(value) && isFinite(value) && value > -2147483648 && value < 2147483647)\r\n\t\treturn true;\r\n\treturn false;\r\n}\r\n\r\nexport const isDouble = (value: number) => {\r\n\tif (!Number.isNaN(value) && value > 4.94065645841247E-324 && value < 1.7976931348623157e+308)\r\n\t\treturn true;\r\n\treturn false;\r\n}\r\n\r\nexport const checkIntegerInputAndMaxLength = (numberString: string | null | undefined, maxLength: number) => {\r\n\tif (numberString === null || numberString === undefined || numberString === '')\r\n\t\treturn false;\r\n\t\r\n\tlet isValid = checkIntegerInput(numberString);\r\n\tif (isValid && numberString.length <= maxLength)\r\n\t\treturn true;\r\n\t\r\n\treturn false;\r\n}\r\n\r\ntype IntegerInputAndMaxValueType = { success: true, parsedValue: number } | { success: false, parsedValue: null }\r\n\r\nexport const checkIntegerInputAndMaxValue = (numberString: string | null | undefined, maxLength?: number): IntegerInputAndMaxValueType => {\r\n\tif (numberString === null || numberString === undefined || numberString === '')\r\n\t\treturn { success: false, parsedValue: null };\r\n\t\r\n\tlet isValid = checkIntegerInput(numberString);\r\n\tif (!isValid)\r\n\t\treturn { success: false, parsedValue: null };\r\n\r\n\tlet parsedValue = parseInt(numberString);\r\n\tif (maxLength === undefined && isInteger(parsedValue))\r\n\t\treturn { success: true, parsedValue: parsedValue };\r\n\r\n\tif (maxLength !== undefined && isInteger(parsedValue) && parsedValue <= maxLength)\r\n\t\treturn { success: true, parsedValue: parsedValue };\r\n\r\n\treturn { success: false, parsedValue: null };\r\n}\r\n\r\n\r\ntype DecimalInputAndMaxValueType = { success: true, parsedValue: string } | { success: false, parsedValue: null }\r\n\r\nexport const checkDecimalInputAndMaxValue = (numberString: string | null | undefined, maxStringLength?: number, maxNumberLength?: number): DecimalInputAndMaxValueType => {\r\n\t\r\n\tif (numberString === null || numberString === undefined || numberString === '')\r\n\t\treturn { success: false, parsedValue: null };\r\n\t\r\n\tlet isValid = checkDecimalInput(numberString);\r\n\tif (!isValid)\r\n\t\treturn { success: false, parsedValue: null };\r\n\r\n\tlet replacedString = numberString.replace(',', '.');\r\n\tlet parsedValue = parseFloat(replacedString);\r\n\tswitch (true) {\r\n\t\tcase (!isDouble(parsedValue)):\r\n\t\t\treturn { success: false, parsedValue: null };\r\n\t\t\r\n\t\tcase (maxStringLength === undefined && maxNumberLength === undefined):\r\n\t\t\treturn { success: true, parsedValue: replacedString };\r\n\t\t\r\n\t\tcase (maxStringLength === undefined && maxNumberLength !== undefined && parsedValue <= maxNumberLength):\r\n\t\t\treturn { success: true, parsedValue: replacedString };\r\n\r\n\t\tcase (maxStringLength !== undefined && maxNumberLength === undefined && replacedString.length <= maxStringLength):\r\n\t\t\treturn { success: true, parsedValue: replacedString };\r\n\t\t\r\n\t\tcase (maxStringLength !== undefined && maxNumberLength !== undefined && replacedString.length <= maxStringLength && parsedValue <= maxNumberLength):\r\n\t\t\treturn { success: true, parsedValue: replacedString };\r\n\t\t\r\n\t\tdefault:\r\n\t\t\treturn { success: false, parsedValue: null };\r\n\t}\r\n}\r\n\r\nexport const newDateWithoutTime = () => {\r\n\tlet newDate = new Date();\r\n\tnewDate.setHours(0, 0, 0, 0);\r\n\treturn newDate;\r\n}","import { isInteger } from 'components/global/utils';\r\n\r\n\r\nexport enum ComputedProperty {\r\n\tpriceWithoutTax = 'priceWithoutTax',\r\n\tpriceWithTax = 'priceWithTax',\r\n\ttax = 'tax',\r\n\tinit = 'init'\r\n}\r\n\r\n\r\nexport type LastEditedPriceProperties = [ ComputedProperty, ComputedProperty ]\r\n\r\n\r\ntype ComputePriceType = {\r\n\tpriceWithoutTax: string | null | undefined,\r\n\tpriceWithTax: string | null | undefined,\r\n\ttax: string | null | undefined,\r\n\teditedField: ComputedProperty,\r\n\tpreviousEditedField: ComputedProperty\r\n}\r\n\r\ntype ComputePriceReturn = {\r\n\tpriceWithoutTax: string,\r\n\tpriceWithTax: string,\r\n\ttax: string\r\n}\r\n\r\n\r\nexport const computePrice = (args: ComputePriceType): ComputePriceReturn => {\r\n\tconst { priceWithoutTax, priceWithTax, tax, editedField, previousEditedField } = args;\r\n\r\n\t//all properties missing\r\n\tif (priceWithoutTax === '' && priceWithTax === '' && tax === '') {\r\n\t\treturn {\r\n\t\t\tpriceWithoutTax: '',\r\n\t\t\tpriceWithTax: '',\r\n\t\t\ttax: ''\r\n\t\t};\r\n\t};\r\n\r\n\tconst withoutTaxNumber = priceWithoutTax ? parseFloat(priceWithoutTax) : 0;\r\n\tconst withTaxNumber = priceWithTax ? parseFloat(priceWithTax) : 0;\r\n\tconst parsedTax = tax ? parseFloat(tax) : 0;\r\n\tconst taxNumber = parsedTax > 0 && parsedTax <= 100 ? parsedTax : 0;\r\n\r\n\tswitch (true) {\r\n\t\t//explicit zero input\r\n\t\tcase (priceWithoutTax === '0' && editedField === ComputedProperty.priceWithoutTax):\r\n\t\tcase (priceWithTax === '0' && editedField === ComputedProperty.priceWithTax):\r\n\t\tcase (tax === '0' && editedField === ComputedProperty.tax):\r\n\t\t\treturn {\r\n\t\t\t\tpriceWithoutTax: '0',\r\n\t\t\t\tpriceWithTax: '0',\r\n\t\t\t\ttax: '0'\r\n\t\t\t};\r\n\r\n\t\t//one property exist\r\n\t\tcase (withoutTaxNumber > 0 && priceWithTax === '0' && tax === '0'):\r\n\t\tcase (withoutTaxNumber > 0 && priceWithTax === '' && tax === ''):\r\n\t\t\treturn {\r\n\t\t\t\tpriceWithoutTax: `${withoutTaxNumber}`,\r\n\t\t\t\tpriceWithTax: '',\r\n\t\t\t\ttax: ''\r\n\t\t\t};\r\n\t\tcase (withTaxNumber > 0 && priceWithoutTax === '0' && tax === '0'):\r\n\t\tcase (withTaxNumber > 0 && priceWithoutTax === '' && tax === ''):\r\n\t\t\treturn {\r\n\t\t\t\tpriceWithoutTax: '',\r\n\t\t\t\tpriceWithTax: `${withTaxNumber}`,\r\n\t\t\t\ttax: ''\r\n\t\t\t};\r\n\t\tcase (taxNumber > 0 && priceWithoutTax === '0' && priceWithTax === '0'):\r\n\t\tcase (taxNumber > 0 && priceWithoutTax === '' && priceWithTax === ''):\r\n\t\t\treturn {\r\n\t\t\t\tpriceWithoutTax: '',\r\n\t\t\t\tpriceWithTax: '',\r\n\t\t\t\ttax: `${taxNumber}`\r\n\t\t\t};\r\n\r\n\r\n\t\t//two properties exist, explicit zero\r\n\t\tcase (priceWithoutTax === '0' && withTaxNumber > 0 && taxNumber > 0 && editedField === ComputedProperty.priceWithoutTax):\r\n\t\tcase (priceWithoutTax === '' && withTaxNumber > 0 && taxNumber > 0 && editedField === ComputedProperty.priceWithoutTax):\r\n\t\t\treturn {\r\n\t\t\t\tpriceWithoutTax: '',\r\n\t\t\t\tpriceWithTax: `${withTaxNumber}`,\r\n\t\t\t\ttax: `${taxNumber}`\r\n\t\t\t};\r\n\t\tcase (withoutTaxNumber > 0 && priceWithTax === '0' && taxNumber > 0 && editedField === ComputedProperty.priceWithTax):\r\n\t\tcase (withoutTaxNumber > 0 && priceWithTax === '' && taxNumber > 0 && editedField === ComputedProperty.priceWithTax):\r\n\t\t\treturn {\r\n\t\t\t\tpriceWithoutTax: `${withoutTaxNumber}`,\r\n\t\t\t\tpriceWithTax: '',\r\n\t\t\t\ttax: `${taxNumber}`\r\n\t\t\t};\r\n\t\tcase (withoutTaxNumber > 0 && withTaxNumber > 0 && tax === '0' && editedField === ComputedProperty.tax):\r\n\t\tcase (withoutTaxNumber > 0 && withTaxNumber > 0 && tax === '' && editedField === ComputedProperty.tax):\r\n\t\t\treturn {\r\n\t\t\t\tpriceWithoutTax: `${withoutTaxNumber}`,\r\n\t\t\t\tpriceWithTax: `${withTaxNumber}`,\r\n\t\t\t\ttax: ''\r\n\t\t\t};\r\n\r\n\t\t\r\n\t\t//two properties exist\r\n\t\tcase (priceWithoutTax === '0' && withTaxNumber > 0 && taxNumber > 0):\r\n\t\tcase (priceWithoutTax === '' && withTaxNumber > 0 && taxNumber > 0):\r\n\t\t\treturn {\r\n\t\t\t\tpriceWithoutTax: `${getPriceWithoutTax(withTaxNumber, taxNumber)}`,\r\n\t\t\t\tpriceWithTax: `${withTaxNumber}`,\r\n\t\t\t\ttax: `${taxNumber}`\r\n\t\t\t};\r\n\t\tcase (withoutTaxNumber > 0 && priceWithTax === '0' && taxNumber > 0):\r\n\t\tcase (withoutTaxNumber > 0 && priceWithTax === '' && taxNumber > 0):\r\n\t\t\treturn {\r\n\t\t\t\tpriceWithoutTax: `${withoutTaxNumber}`,\r\n\t\t\t\tpriceWithTax: `${getPriceWithTax(withoutTaxNumber, taxNumber)}`,\r\n\t\t\t\ttax: `${taxNumber}`\r\n\t\t\t};\r\n\t\tcase (withoutTaxNumber > 0 && withTaxNumber > 0 && tax === '0'):\r\n\t\tcase (withoutTaxNumber > 0 && withTaxNumber > 0 && tax === ''):\r\n\t\t\treturn {\r\n\t\t\t\tpriceWithoutTax: `${withoutTaxNumber}`,\r\n\t\t\t\tpriceWithTax: `${withTaxNumber}`,\r\n\t\t\t\ttax: `${getTax(withoutTaxNumber, withTaxNumber)}`\r\n\t\t\t};\r\n\r\n\t\t\r\n\t\t//all exist, first edited field\r\n\t\tcase (editedField === ComputedProperty.init):\r\n\t\tcase (editedField === ComputedProperty.priceWithTax && previousEditedField === ComputedProperty.init):\r\n\t\t\treturn {\r\n\t\t\t\tpriceWithoutTax: `${getPriceWithoutTax(withTaxNumber, taxNumber)}`,\r\n\t\t\t\tpriceWithTax: `${withTaxNumber}`,\r\n\t\t\t\ttax: `${taxNumber}`\r\n\t\t\t};\r\n\t\tcase (editedField === ComputedProperty.priceWithoutTax && previousEditedField === ComputedProperty.init):\r\n\t\tcase (editedField === ComputedProperty.tax && previousEditedField === ComputedProperty.init):\r\n\t\t\treturn {\r\n\t\t\t\tpriceWithoutTax: `${withoutTaxNumber}`,\r\n\t\t\t\tpriceWithTax: `${getPriceWithTax(withoutTaxNumber, taxNumber)}`,\r\n\t\t\t\ttax: `${taxNumber}`\r\n\t\t\t};\r\n\r\n\r\n\t\t//all exist, previous edited field exist\r\n\t\tcase (editedField === ComputedProperty.priceWithTax && previousEditedField === ComputedProperty.priceWithoutTax):\r\n\t\tcase (editedField === ComputedProperty.priceWithoutTax && previousEditedField === ComputedProperty.priceWithTax):\r\n\t\t\treturn {\r\n\t\t\t\tpriceWithoutTax: `${withoutTaxNumber}`,\r\n\t\t\t\tpriceWithTax: `${withTaxNumber}`,\r\n\t\t\t\ttax: `${getTax(withoutTaxNumber, withTaxNumber)}`\r\n\t\t\t};\r\n\r\n\t\tcase (editedField === ComputedProperty.priceWithTax && previousEditedField === ComputedProperty.tax):\r\n\t\tcase (editedField === ComputedProperty.tax && previousEditedField === ComputedProperty.priceWithTax):\r\n\t\t\treturn {\r\n\t\t\t\tpriceWithoutTax: `${getPriceWithoutTax(withTaxNumber, taxNumber)}`,\r\n\t\t\t\tpriceWithTax: `${withTaxNumber}`,\r\n\t\t\t\ttax: `${taxNumber}`\r\n\t\t\t};\r\n\r\n\t\tcase (editedField === ComputedProperty.priceWithoutTax && previousEditedField === ComputedProperty.tax):\r\n\t\tcase (editedField === ComputedProperty.tax && previousEditedField === ComputedProperty.priceWithoutTax):\r\n\t\t\treturn {\r\n\t\t\t\tpriceWithoutTax: `${withoutTaxNumber}`,\r\n\t\t\t\tpriceWithTax: `${getPriceWithTax(withoutTaxNumber, taxNumber)}`,\r\n\t\t\t\ttax: `${taxNumber}`\r\n\t\t\t};\r\n\t\t\r\n\t\t//default\r\n\t\tdefault:\r\n\t\t\treturn {\r\n\t\t\t\tpriceWithoutTax: `${withoutTaxNumber}`,\r\n\t\t\t\tpriceWithTax: `${withTaxNumber}`,\r\n\t\t\t\ttax: `${taxNumber}`\r\n\t\t\t};\r\n\t}\r\n}\r\n\r\n\r\nconst getTax = (priceWithoutTax: number, priceWithTax: number) => {\r\n\tconst tax = (priceWithTax / priceWithoutTax - 1) * 100;\r\n\tconst result = Math.round(tax);\r\n\treturn result;\r\n}\r\n\r\nconst getPriceWithTax = (priceWithoutTax: number, tax: number) => {\r\n\tconst priceWithTax = priceWithoutTax * (1 + tax / 100);\r\n\tconst result = Math.round(priceWithTax);\r\n\treturn result > 0 && isInteger(result) ? result : 0;\r\n}\r\n\r\nconst getPriceWithoutTax = (priceWithTax: number, tax: number) => {\r\n\tconst priceWithoutTax = priceWithTax / (1 + tax / 100);\r\n\tconst result = Math.round(priceWithoutTax);\r\n\treturn result > 0 && isInteger(result) ? result : 0;\r\n}\r\n\r\n\r\nexport const getLastEditedPriceProperties = (editedField: ComputedProperty, lastEdites: LastEditedPriceProperties): LastEditedPriceProperties => {\r\n\tconst secondEdit = lastEdites[1];\r\n\t\r\n\tif (secondEdit !== ComputedProperty.init && secondEdit === editedField)\r\n\t\treturn lastEdites;\r\n\r\n\treturn [ secondEdit, editedField ];\r\n}","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\r\nimport { ModifiablePricingItem, PricingItem, PricingItemRequest } from 'types/PricingItem';\r\nimport { DaysValidityConfig, filledValidityDays } from 'types/ValidityConfig';\r\nimport { PaymentType, PaymentTypeOperatorEnum } from 'types/PaymentType';\r\nimport formatISO from 'date-fns/formatISO';\r\nimport { isMaxDate, newDateWithoutTime } from 'components/global/utils';\r\nimport { computePrice, ComputedProperty, LastEditedPriceProperties, getLastEditedPriceProperties } from 'components/forms/pricing-item/computePrice';\r\n\r\n\r\ninterface PricingItemState extends Omit {\r\n\tinitPricingRequest: PricingItemRequest | null,\r\n\tpricingItemId: number,\r\n\tairportIcao: string,\r\n\tshowInvalids: boolean,\r\n\r\n\tlocalPrice: string,\r\n\tresidentDiscount: string,\r\n\ttax: string,\r\n\tcommission: string,\r\n\tpriceWithoutTax: string,\r\n\r\n\tvalidityDays: DaysValidityConfig,\r\n\tvalidityTimeFrom: string | null,\r\n\tvalidityTimeTo: string | null,\r\n\tpaymentTypeJson: Required[] | null,\r\n\tlastUsedIndexForFilters: number,\r\n\tlastEditedPriceProperties: LastEditedPriceProperties\r\n};\r\n\r\nconst initialState: PricingItemState = {\r\n\tinitPricingRequest: null,\r\n\tpricingItemId: 0,\r\n\tairportIcao: '',\r\n\tshowInvalids: false,\r\n\tpriceWithoutTax: '',\r\n\tpaymentTypeText: '',\r\n\tpaymentTypeTextEng: '',\r\n\tvalidFrom: formatISO(newDateWithoutTime()),\r\n\tvalidTo: null,\r\n\tlocalPrice: '',\r\n\tlocalCurrency: '',\r\n\tresidentDiscount: '0',\r\n\ttax: '',\r\n\tcommission: '0',\r\n\tbusinessEntityId: 0,\r\n\tvalidityDays: filledValidityDays,\r\n\tvalidityTimeFrom: null,\r\n\tvalidityTimeTo: null,\r\n\tpaymentTypeJson: null,\r\n\tlastUsedIndexForFilters: 0,\r\n\tlastEditedPriceProperties: [ ComputedProperty.init, ComputedProperty.init ]\r\n};\r\n\r\n\r\nexport const pricingItemSlice = createSlice({\r\n\tname: 'pricingItem',\r\n\tinitialState,\r\n\treducers: {\r\n\t\tinitPricingItem: (state, action: PayloadAction<{ pricingItem: PricingItem | null, airportIcao: string }>) => {\r\n\t\t\tlet req = action.payload.pricingItem?.changeRequest;\r\n\t\t\tlet item = req ? req : action.payload.pricingItem;\r\n\t\t\t\r\n\t\t\tstate.initPricingRequest = req ?? null;\r\n\t\t\tstate.pricingItemId = item ? item.id : 0;\r\n\t\t\tstate.airportIcao = action.payload.airportIcao;\r\n\r\n\t\t\tif (item) {\r\n\t\t\t\tstate.paymentTypeText = item.paymentTypeText\r\n\t\t\t\t\t? item.paymentTypeText\r\n\t\t\t\t\t: initialState.paymentTypeText;\r\n\t\t\t\tstate.paymentTypeTextEng = item.paymentTypeTextEng\r\n\t\t\t\t\t? item.paymentTypeText\r\n\t\t\t\t\t: initialState.paymentTypeTextEng;\r\n\t\t\t\tstate.validFrom = item.validFrom\r\n\t\t\t\t\t? item.validFrom\r\n\t\t\t\t\t: initialState.validFrom;\r\n\t\t\t\tstate.validTo = item.validTo && !isMaxDate(item.validTo)\r\n\t\t\t\t\t? item.validTo\r\n\t\t\t\t\t: initialState.validTo;\r\n\t\t\t\tstate.localCurrency = item.localCurrency\r\n\t\t\t\t\t? item.localCurrency\r\n\t\t\t\t\t: initialState.localCurrency;\r\n\t\t\t\tstate.validityDays = item.validityConfig\r\n\t\t\t\t\t? { ...item.validityConfig }\r\n\t\t\t\t\t: initialState.validityDays;\r\n\t\t\t\tstate.validityTimeFrom = item.validityConfig && item.validityConfig.from\r\n\t\t\t\t\t? item.validityConfig.from\r\n\t\t\t\t\t: initialState.validityTimeFrom;\r\n\t\t\t\tstate.validityTimeTo = item.validityConfig && item.validityConfig.to\r\n\t\t\t\t\t? item.validityConfig.to\r\n\t\t\t\t\t: initialState.validityTimeTo;\r\n\t\t\t\tstate.residentDiscount = item.residentDiscount\r\n\t\t\t\t\t? `${item.residentDiscount}`\r\n\t\t\t\t\t: initialState.residentDiscount;\r\n\t\t\t\tstate.commission = item.commission\r\n\t\t\t\t\t? `${item.commission}`\r\n\t\t\t\t\t: initialState.residentDiscount;\r\n\t\t\t\tstate.businessEntityId = item.businessEntityId\r\n\t\t\t\t\t? item.businessEntityId\r\n\t\t\t\t\t: initialState.businessEntityId;\r\n\r\n\t\t\t\t//set prices and tax\r\n\t\t\t\tlet priceWithoutTax = initialState.priceWithoutTax;\r\n\t\t\t\tlet priceWithTax = item.localPrice ? `${item.localPrice}` : initialState.localPrice;\r\n\t\t\t\tlet tax = item.localPrice ? `${item.tax}` : initialState.tax;\r\n\t\t\t\tlet comp = computePrice({\r\n\t\t\t\t\tpriceWithoutTax,\r\n\t\t\t\t\tpriceWithTax,\r\n\t\t\t\t\ttax,\r\n\t\t\t\t\teditedField: ComputedProperty.init,\r\n\t\t\t\t\tpreviousEditedField: ComputedProperty.init\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tstate.localPrice = comp.priceWithTax;\r\n\t\t\t\tstate.priceWithoutTax = comp.priceWithoutTax;\r\n\t\t\t\tstate.tax = comp.tax;\r\n\r\n\t\t\t\t//set filters\r\n\t\t\t\tlet filtersIndex = 0;\r\n\t\t\t\tstate.paymentTypeJson = item.paymentTypeJson\r\n\t\t\t\t\t? item.paymentTypeJson.map(x => {\r\n\t\t\t\t\t\tfiltersIndex++;\r\n\t\t\t\t\t\treturn { ...x, index: filtersIndex }\r\n\t\t\t\t\t})\r\n\t\t\t\t\t: initialState.paymentTypeJson;\r\n\t\t\t\tstate.lastUsedIndexForFilters = filtersIndex;\r\n\t\t\t}\r\n\t\t},\r\n\t\tsetShowInvalids: (state, action: PayloadAction) => {\r\n\t\t\tstate.showInvalids = action.payload\r\n\t\t},\r\n\t\tsetPaymentTypeText: (state, action: PayloadAction) => {\r\n\t\t\tstate.paymentTypeText = action.payload\r\n\t\t},\r\n\t\tsetPaymentTypeTextEng: (state, action: PayloadAction) => {\r\n\t\t\tstate.paymentTypeTextEng = action.payload\r\n\t\t},\r\n\t\tsetValidFrom: (state, action: PayloadAction) => {\r\n\t\t\tstate.validFrom = action.payload\r\n\t\t},\r\n\t\tsetValidTo: (state, action: PayloadAction) => {\r\n\t\t\tstate.validTo = action.payload\r\n\t\t},\r\n\t\tsetLocalPrice: (state, action: PayloadAction) => {\r\n\t\t\tlet editedField = ComputedProperty.priceWithTax;\r\n\t\t\tlet priceWithoutTax = state.priceWithoutTax;\r\n\t\t\tlet priceWithTax = action.payload;\r\n\t\t\tlet tax = state.tax;\r\n\t\t\tlet lastEditedPriceProperties = getLastEditedPriceProperties(editedField, state.lastEditedPriceProperties);\r\n\t\t\tlet comp = computePrice({ priceWithoutTax, priceWithTax, tax, editedField, previousEditedField: lastEditedPriceProperties[0] });\r\n\t\t\t\r\n\t\t\tstate.localPrice = comp.priceWithTax;\r\n\t\t\tstate.priceWithoutTax = comp.priceWithoutTax;\r\n\t\t\tstate.tax = comp.tax;\r\n\t\t\tstate.lastEditedPriceProperties = lastEditedPriceProperties;\r\n\t\t},\r\n\t\tsetPriceWithoutTax: (state, action: PayloadAction) => {\r\n\t\t\tlet editedField = ComputedProperty.priceWithoutTax;\r\n\t\t\tlet priceWithoutTax = action.payload;\r\n\t\t\tlet priceWithTax = state.localPrice;\r\n\t\t\tlet tax = state.tax;\r\n\t\t\tlet lastEditedPriceProperties = getLastEditedPriceProperties(editedField, state.lastEditedPriceProperties);\r\n\t\t\tlet comp = computePrice({ priceWithoutTax, priceWithTax, tax, editedField, previousEditedField: lastEditedPriceProperties[0] });\r\n\t\t\t\r\n\t\t\tstate.localPrice = comp.priceWithTax;\r\n\t\t\tstate.priceWithoutTax = comp.priceWithoutTax;\r\n\t\t\tstate.tax = comp.tax;\r\n\t\t\tstate.lastEditedPriceProperties = lastEditedPriceProperties;\r\n\t\t},\r\n\t\tsetTax: (state, action: PayloadAction) => {\r\n\t\t\tlet editedField = ComputedProperty.tax;\r\n\t\t\tlet priceWithoutTax = state.priceWithoutTax;\r\n\t\t\tlet priceWithTax = state.localPrice;\r\n\t\t\tlet tax = action.payload;\r\n\t\t\tlet lastEditedPriceProperties = getLastEditedPriceProperties(editedField, state.lastEditedPriceProperties);\r\n\t\t\tlet comp = computePrice({ priceWithoutTax, priceWithTax, tax, editedField, previousEditedField: lastEditedPriceProperties[0] });\r\n\t\t\t\r\n\t\t\tstate.localPrice = comp.priceWithTax;\r\n\t\t\tstate.priceWithoutTax = comp.priceWithoutTax;\r\n\t\t\tstate.tax = comp.tax;\r\n\t\t\tstate.lastEditedPriceProperties = lastEditedPriceProperties;\r\n\t\t},\r\n\t\tsetLocalCurrency: (state, action: PayloadAction) => {\r\n\t\t\tstate.localCurrency = action.payload\r\n\t\t},\r\n\t\tsetResidentDiscount: (state, action: PayloadAction) => {\r\n\t\t\tstate.residentDiscount = action.payload\r\n\t\t},\r\n\t\tsetCommission: (state, action: PayloadAction) => {\r\n\t\t\tstate.commission = action.payload\r\n\t\t},\r\n\t\tsetBusinessEntityId: (state, action: PayloadAction) => {\r\n\t\t\tstate.businessEntityId = action.payload\r\n\t\t},\r\n\t\tsetValidityDays: (state, action: PayloadAction) => {\r\n\t\t\tstate.validityDays = action.payload\r\n\t\t},\r\n\t\tupdateValidityDaysProperty: (state, action: PayloadAction<{ property: keyof DaysValidityConfig, value: boolean }>) => {\r\n\t\t\tstate.validityDays[action.payload.property] = action.payload.value\r\n\t\t},\r\n\t\tsetValidityTimeFrom: (state, action: PayloadAction) => {\r\n\t\t\tstate.validityTimeFrom = action.payload\r\n\t\t},\r\n\t\tsetValidityTimeTo: (state, action: PayloadAction) => {\r\n\t\t\tstate.validityTimeTo = action.payload\r\n\t\t},\r\n\t\taddEmptyPaymentTypeJson: (state) => {\r\n\t\t\tlet newIndex = state.lastUsedIndexForFilters + 1;\r\n\t\t\tlet newFilter: Required = { attribute: \"\", operator: PaymentTypeOperatorEnum.empty, value: \"\", index: newIndex };\r\n\t\t\tstate.paymentTypeJson = state.paymentTypeJson ? [ ...state.paymentTypeJson, newFilter ] : [ newFilter ];\r\n\t\t\tstate.lastUsedIndexForFilters = newIndex;\r\n\t\t},\r\n\t\tupdateExistPaymentTypeJson: (state, action: PayloadAction>) => {\r\n\t\t\tif (state.paymentTypeJson) {\r\n\t\t\t\tlet updatedFilter = action.payload;\r\n\t\t\t\tstate.paymentTypeJson = state.paymentTypeJson.map(x => x.index !== updatedFilter.index ? x : updatedFilter);\r\n\t\t\t}\r\n\t\t},\r\n\t\tremoveExistPaymentTypeJson: (state, action: PayloadAction>) => {\r\n\t\t\tif (state.paymentTypeJson) {\r\n\t\t\t\tlet filteredItems = state.paymentTypeJson.filter(x => x.index !== action.payload.index);\r\n\t\t\t\tstate.paymentTypeJson = filteredItems && filteredItems.length > 0 ? filteredItems : null;\r\n\t\t\t}\r\n\t\t},\r\n\t\tresetStore: (state) => initialState,\r\n\t},\r\n});\r\n\r\nexport default pricingItemSlice.reducer;\r\n\r\n\r\nexport const {\r\n\tinitPricingItem,\r\n\tsetShowInvalids,\r\n\tsetPaymentTypeText,\r\n\tsetPaymentTypeTextEng,\r\n\tsetValidFrom,\r\n\tsetValidTo,\r\n\tsetLocalPrice,\r\n\tsetPriceWithoutTax,\r\n\tsetLocalCurrency,\r\n\tsetResidentDiscount,\r\n\tsetTax,\r\n\tsetCommission,\r\n\tsetBusinessEntityId,\r\n\tsetValidityDays,\r\n\tupdateValidityDaysProperty,\r\n\tsetValidityTimeFrom,\r\n\tsetValidityTimeTo,\r\n\taddEmptyPaymentTypeJson,\r\n\tupdateExistPaymentTypeJson,\r\n\tremoveExistPaymentTypeJson,\r\n\tresetStore } = pricingItemSlice.actions;","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\r\nimport { Pilot } from 'types/Pilot';\r\n\r\n\r\ninterface RolesPageState {\r\n\tuser: Pilot | null,\r\n\tshowModal: boolean\r\n};\r\n\r\nconst initialState: RolesPageState = {\r\n\tuser: null,\r\n\tshowModal: false\r\n};\r\n\r\n\r\nexport const rolesPageSlice = createSlice({\r\n\tname: 'rolesPage',\r\n\tinitialState,\r\n\treducers: {\r\n\t\tshowModal: (state, action: PayloadAction) => {\r\n\t\t\tstate.user = action.payload ?? initialState.user;\r\n\t\t\tstate.showModal = true;\r\n\t\t},\r\n\t\thideModal: (state) => initialState,\r\n\t},\r\n});\r\n\r\nexport default rolesPageSlice.reducer;\r\n\r\n\r\nexport const {\r\n\tshowModal,\r\n\thideModal } = rolesPageSlice.actions;","import { isRejectedWithValue } from '@reduxjs/toolkit';\r\nimport type { MiddlewareAPI, Middleware } from '@reduxjs/toolkit';\r\nimport format from 'date-fns/format';\r\nimport { addApiError } from 'components/global/error-modal/ErrorModalStore';\r\nimport { ApiError } from 'types/ApiError';\r\nimport { hasOwnPropertyTS } from 'utils/typescriptGuards';\r\n\r\n\r\nconst rtkQueryErrorLogger: Middleware = (api: MiddlewareAPI) => (next) => (action) => {\r\n\t\r\n\tif (isRejectedWithValue(action) && typeof action.type === 'string' && /^baseApi\\/[\\w]*\\/rejected$/.test(action.type)) {\r\n\t\t\r\n\t\tconsole.warn('Api call rejected');\r\n\t\tconsole.warn({ error: action.error });\r\n\t\tconsole.warn({ meta: action.meta });\r\n\t\tconsole.warn({ payload: action.payload });\r\n\t\tconsole.warn({ type: action.type });\r\n\r\n\t\tif (process.env.SHOW_ADVANCED_ERRORS === 'TRUE') {\r\n\t\t\tconst newError: ApiError = {\r\n\t\t\t\ttype: action.type ? action.type : 'default',\r\n\t\t\t\tmessage: action.error && action.error.message ? action.error.message : 'default',\r\n\t\t\t\trequestId: hasOwnPropertyTS(action, 'meta') ? action.meta.requestId : 'default',\r\n\t\t\t\ttimestamp: format(new Date(), 'MM/dd/yyyy - HH:mm:ss'),\r\n\t\r\n\t\t\t\tactionPayload: hasOwnPropertyTS(action, 'payload') ? {\r\n\t\t\t\t\terror: action.payload.error,\r\n\t\t\t\t\tstatus: action.payload.status\r\n\t\t\t\t} : undefined,\r\n\t\r\n\t\t\t\tmeta: hasOwnPropertyTS(action, 'meta') ? {\r\n\t\t\t\t\tendpoint: action.meta.arg ? action.meta.arg.endpointName : 'default',\r\n\t\t\t\t\toriginalArgs: action.meta.arg ? action.meta.arg.originalArgs ?? 'undefined' : 'default',\r\n\t\t\t\t\ttype: action.meta.arg ? action.meta.arg.type : 'default'\r\n\t\t\t\t} : undefined,\r\n\t\t\t\t\r\n\t\t\t\trequest: hasOwnPropertyTS(action, 'meta') && hasOwnPropertyTS(action.meta, 'baseQueryMeta') && hasOwnPropertyTS(action.meta.baseQueryMeta, 'request') ? {\r\n\t\t\t\t\tmethod: action.meta.baseQueryMeta.request ? action.meta.baseQueryMeta.request.method : 'default',\r\n\t\t\t\t\turl: action.meta.baseQueryMeta.request ? action.meta.baseQueryMeta.request.url : 'default'\r\n\t\t\t\t} : undefined,\r\n\t\t\t};\r\n\t\r\n\t\t\tapi.dispatch(addApiError(newError));\r\n\t\t}\r\n\t}\r\n\treturn next(action);\r\n}\r\n\r\nexport default rtkQueryErrorLogger;","import { createListenerMiddleware, addListener } from '@reduxjs/toolkit';\r\nimport type { TypedStartListening, TypedAddListener } from '@reduxjs/toolkit';\r\nimport type { RootState, AppDispatch } from 'store'\r\n\r\n\r\n\r\nconst listenerMiddleware = createListenerMiddleware();\r\n\r\n\r\nexport type AppStartListening = TypedStartListening;\r\n\r\n\r\nexport const startAppListening = listenerMiddleware.startListening as AppStartListening;\r\n\r\n\r\nexport const addAppListener = addListener as TypedAddListener;\r\n\r\n\r\n\r\nexport default listenerMiddleware;","\r\n\r\n\r\nconst hasLocalStorage = () => {\r\n\ttry {\r\n\t\tconst storage = window.localStorage;\r\n\t\tconst testKey = 'localStorageTest'\r\n\t\t\r\n\t\tstorage.setItem(testKey, 'test')\r\n\t\tstorage.getItem(testKey)\r\n\t\tstorage.removeItem(testKey)\r\n\t}\r\n\tcatch (e) {\r\n\t\tconsole.warn('redux-persist localStorage test failed, persistence will be disabled.')\r\n\t\treturn false\r\n\t}\r\n\treturn true\r\n}\r\n\r\n\r\nconst initStorage = () => {\r\n\r\n\tif (hasLocalStorage()) {\r\n\t\tconst newStorage = window.localStorage;\r\n\t\treturn newStorage;\r\n\t}\r\n\treturn null;\r\n};\r\n\r\n\r\n// storage instance\r\nconst storage = initStorage();\r\n\r\n\r\n\r\nexport const setItemToStorage = (persistStore: T) => {\r\n\tif (typeof persistStore === 'object' && storage) {\r\n\t\tstorage.setItem('persistStore', JSON.stringify(persistStore));\r\n\t\treturn;\r\n\t}\r\n\tconsole.warn('setItemToStorage - failed access to local storage');\r\n}\r\n\r\n\r\nexport const getItemsFromStorage = () => {\r\n\tif (storage) {\r\n\t\tconst stringStore = storage.getItem('persistStore');\r\n\r\n\t\tif (stringStore) {\r\n\t\t\tconst parsedStore = JSON.parse(stringStore) as T;\r\n\t\t\treturn parsedStore;\r\n\t\t}\r\n\t}\r\n\tconsole.warn('getItemsFromStorage - failed access to local storage');\r\n}","import type { MiddlewareAPI, Middleware } from '@reduxjs/toolkit';\r\nimport { startAppListening } from 'middlewares/listenerMiddleware';\r\nimport { getItemsFromStorage, setItemToStorage } from 'middlewares/storageFunctions';\r\nimport { RootState } from 'store';\r\nimport { setPersistStore } from 'store/persistStore';\r\n\r\n\r\n\r\nstartAppListening({\r\n\tpredicate: (action, currentState, previousState) => {\r\n\t\tif (!currentState.persist)\r\n\t\t\treturn false;\r\n\t\treturn currentState.persist !== previousState.persist;\r\n\t},\r\n\teffect: async (action, listenerApi) => {\r\n\t\tlet persistState = listenerApi.getState().persist;\r\n\t\tsetItemToStorage(persistState);\r\n\t},\r\n});\r\n\r\n\r\n\r\nlet initialized = false\r\n\r\nconst persistMiddleware: Middleware = (api: MiddlewareAPI) => (next) => (action) => {\r\n\r\n\tif (!initialized) {\r\n\t\tinitialized = true\r\n\r\n\t\tlet store = api.getState() as RootState;\r\n\t\tlet defaultPersistStore = store.persist;\r\n\t\tlet storageStore = getItemsFromStorage();\r\n\r\n\t\tif (!storageStore) {\r\n\t\t\tsetItemToStorage(defaultPersistStore);\r\n\t\t};\r\n\r\n\t\tif (storageStore) {\r\n\t\t\tlet defaultStoreEntries = Object.entries(defaultPersistStore);\r\n\t\t\tlet storageStoreEntries = Object.entries(storageStore);\r\n\r\n\t\t\tlet newDefaultStoreEntries = defaultStoreEntries.map(defaultEntry => {\r\n\t\t\t\tlet defaultProperty = defaultEntry[0];\r\n\t\t\t\t\r\n\t\t\t\tlet searchedStorageItem = storageStoreEntries.find(storageEntry => defaultProperty === storageEntry[0]);\r\n\t\t\t\tif (searchedStorageItem) {\r\n\t\t\t\t\treturn [ defaultProperty, searchedStorageItem[1] ];\r\n\t\t\t\t};\r\n\t\t\t\treturn defaultEntry;\r\n\t\t\t});\r\n\r\n\t\t\tapi.dispatch(setPersistStore(Object.fromEntries(newDefaultStoreEntries)));\r\n\t\t};\r\n\t};\r\n\r\n\treturn next(action);\r\n}\r\n\r\nexport default persistMiddleware;","import { configureStore } from '@reduxjs/toolkit';\r\nimport { baseApi } from 'utils/api/baseApi';\r\nimport globalReducer from 'store/globalStore';\r\nimport persistReducer from 'store/persistStore';\r\nimport errorModalReducer from 'components/global/error-modal/ErrorModalStore';\r\nimport pilotPageReducer from 'components/forms/pilot-page/PilotStore';\r\nimport pilotCompanyReducer from 'components/forms/pilot-company/PilotCompanyStore';\r\nimport planePageReducer from 'components/forms/plane-page/PlaneStore';\r\nimport airportPageReducer from 'components/forms/airport-page/AirportStore';\r\nimport assignAirportReducer from 'components/forms/assign-airport/AssignStore';\r\nimport cartPageReducer from 'components/cart/CartStore';\r\nimport airportCompanyReducer from 'components/forms/airport-company/AirportCompanyStore';\r\nimport pilotHomeReducer from 'components/pilot-home/PilotHomeStore';\r\nimport pricingItemReducer from 'components/forms/pricing-item/PricingItemStore';\r\nimport rolesPageReducer from 'components/roles-page/RolesPageStore';\r\nimport rtkQueryErrorLogger from 'middlewares/rtkQueryErrorLogger';\r\nimport listenerMiddleware from 'middlewares/listenerMiddleware';\r\nimport persistMiddleware from 'middlewares/persistMiddleware';\r\n\r\n\r\n\r\nexport const store = configureStore({\r\n\treducer: {\r\n\t\tglobal: globalReducer,\r\n\t\tpersist: persistReducer,\r\n\t\terrorModal: errorModalReducer,\r\n\t\tcartPage: cartPageReducer,\r\n\t\tairportCompany: airportCompanyReducer,\r\n\t\tairportPage: airportPageReducer,\r\n\t\tassignAirport: assignAirportReducer,\r\n\t\tpilotCompany: pilotCompanyReducer,\r\n\t\tpilotPage: pilotPageReducer,\r\n\t\tplanePage: planePageReducer,\r\n\t\tpricingItem: pricingItemReducer,\r\n\t\tpilotHome: pilotHomeReducer,\r\n\t\trolesPage: rolesPageReducer,\r\n\t\t[baseApi.reducerPath]: baseApi.reducer,\r\n\t},\r\n\tmiddleware: (getDefaultMiddleware) => getDefaultMiddleware().prepend(listenerMiddleware.middleware).concat(baseApi.middleware).concat(rtkQueryErrorLogger).concat(persistMiddleware)\r\n});\r\n\r\n\r\n\r\nexport type RootState = ReturnType;\r\n\r\nexport type AppDispatch = typeof store.dispatch;","import { PublicClientApplication, EventType, EventMessage } from '@azure/msal-browser';\r\nimport { isAuthenticationResult, isAccountInfo } from 'components/global/authentication/typeGuards';\r\nimport { authConfig } from 'components/global/authentication/authConfig';\r\nimport { store } from 'store';\r\nimport { setUserMode } from 'store/globalStore';\r\nimport { UserModeEnum } from 'types/enums';\r\n\r\n\r\nexport const msalInstance = new PublicClientApplication(authConfig);\r\n\r\n\r\nexport const initMsalInstance = () => {\r\n\tmsalInstance.enableAccountStorageEvents();\r\n\r\n\tmsalInstance.addEventCallback((message: EventMessage) => {\r\n\t\tif (message.eventType === EventType.LOGIN_SUCCESS && isAuthenticationResult(message.payload))\r\n\t\tmsalInstance.setActiveAccount(message.payload.account);\r\n\t\r\n\t\tif (message.eventType === EventType.ACCOUNT_ADDED && isAccountInfo(message.payload))\r\n\t\t\tmsalInstance.setActiveAccount(message.payload);\r\n\t\t\r\n\t\tif (message.eventType === EventType.ACCOUNT_REMOVED)\r\n\t\t\tmsalInstance.setActiveAccount(null);\r\n\r\n\t\tif (message.eventType === EventType.LOGIN_FAILURE)\r\n\t\t\tstore.dispatch(setUserMode(UserModeEnum.error));\r\n\t});\r\n}","import { baseApi } from 'utils/api/baseApi';\r\nimport { UserTermType } from 'types/enums';\r\nimport { Pilot } from 'types/Pilot';\r\nimport { PilotBusinessEntity } from 'types/PilotBusinessEntity';\r\n\r\n\r\nconst userApi = baseApi.injectEndpoints({\r\n\toverrideExisting: false,\r\n\tendpoints: (builder) => ({\r\n\r\n\t\tgetPilot: builder.query({\r\n\t\t\tquery: () => ({\r\n\t\t\t\turl: 'User/GetUserDetail'\r\n\t\t\t}),\r\n\t\t\tprovidesTags: ['Pilot']\r\n\t\t}),\r\n\r\n\t\tconfirmTerms: builder.mutation({\r\n\t\t\tquery: (termType) => ({\r\n\t\t\t\turl: 'User/ConfirmTerms',\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\theaders: { 'content-type': 'text/plain' },\r\n\t\t\t\tbody: termType,\r\n\t\t\t}),\r\n\t\t\tasync onQueryStarted(termType, { dispatch, queryFulfilled }) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tconst { data: response } = await queryFulfilled;\r\n\r\n\t\t\t\t\tif (response) {\r\n\t\t\t\t\t\tdispatch(userApi.util.updateQueryData('getPilot', undefined, (draft) => {\r\n\t\t\t\t\t\t\tif (termType === UserTermType.bussiness) draft['termsBussiness'] = true;\r\n\t\t\t\t\t\t\tif (termType === UserTermType.contract) draft['termsContract'] = true;\r\n\t\t\t\t\t\t\tif (termType === UserTermType.service) draft['termsService'] = true;\r\n\t\t\t\t\t\t}));\r\n\t\t\t\t\t}\r\n\t\t\t\t} catch {\r\n\t\t\t\t\tdispatch(userApi.util.invalidateTags(['Pilot']));\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t}),\r\n\r\n\t\tsavePilot: builder.mutation({\r\n\t\t\tquery: (pilot) => ({\r\n\t\t\t\turl: 'User/SaveUserDetail',\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\tbody: pilot,\r\n\t\t\t}),\r\n\t\t\tasync onQueryStarted(pilot, { dispatch, queryFulfilled }) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tdispatch(userApi.util.updateQueryData('getPilot', undefined, (draft) => {\r\n\t\t\t\t\t\tObject.assign(draft, pilot);\r\n\t\t\t\t\t}));\r\n\r\n\t\t\t\t\tawait queryFulfilled;\r\n\t\t\t\t} catch {\r\n\t\t\t\t\tdispatch(userApi.util.invalidateTags(['Pilot']));\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t}),\r\n\r\n\t\tsavePilotEntity: builder.mutation({\r\n\t\t\tquery: (entity) => ({\r\n\t\t\t\turl: 'User/SaveOrUpdatePilotEntity',\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\tbody: entity,\r\n\t\t\t}),\r\n\t\t\tasync onQueryStarted(entity, { dispatch, queryFulfilled }) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tlet tempId = 0;\r\n\t\t\t\t\tlet updatedIndex = -1;\r\n\t\t\t\t\t\r\n\t\t\t\t\tdispatch(userApi.util.updateQueryData('getPilot', undefined, (draft) => {\r\n\t\t\t\t\t\tif (!draft.pilotBusinessEntityItems || draft.pilotBusinessEntityItems.length === 0) {\r\n\t\t\t\t\t\t\ttempId = Math.floor(Math.random() * 10);\r\n\t\t\t\t\t\t\tupdatedIndex = 0;\r\n\t\t\t\t\t\t\tdraft.pilotBusinessEntityItems = [ { ...entity, id: tempId } ];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse if (entity.id !== 0) {\r\n\t\t\t\t\t\t\tconst index = draft.pilotBusinessEntityItems.findIndex(item => item.id === entity.id);\r\n\t\t\t\t\t\t\tif (index !== -1) {\r\n\t\t\t\t\t\t\t\tupdatedIndex = index;\r\n\t\t\t\t\t\t\t\tdraft.pilotBusinessEntityItems[index] = entity;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\ttempId = Math.floor(Math.random() * 10);\r\n\t\t\t\t\t\t\tupdatedIndex = draft.pilotBusinessEntityItems.length;\r\n\t\t\t\t\t\t\tdraft.pilotBusinessEntityItems.push({ ...entity, id: tempId });\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}));\r\n\r\n\t\t\t\t\tconst { data: updatedEntity } = await queryFulfilled;\r\n\r\n\t\t\t\t\tif (updatedIndex !== -1) {\r\n\t\t\t\t\t\tdispatch(userApi.util.updateQueryData('getPilot', undefined, (draft) => {\r\n\t\t\t\t\t\t\tif (draft.pilotBusinessEntityItems)\r\n\t\t\t\t\t\t\t\tdraft.pilotBusinessEntityItems[updatedIndex] = updatedEntity;\r\n\t\t\t\t\t\t}));\r\n\t\t\t\t\t}\r\n\t\t\t\t} catch {\r\n\t\t\t\t\tdispatch(userApi.util.invalidateTags(['Pilot']));\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t}),\r\n\t\t\r\n\t\tdeletePilotEntity: builder.mutation({\r\n\t\t\tquery: (entity) => ({\r\n\t\t\t\turl: 'User/DeletePilotEntity',\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\tbody: entity,\r\n\t\t\t}),\r\n\t\t\tasync onQueryStarted(entity, { dispatch, queryFulfilled }) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tdispatch(userApi.util.updateQueryData('getPilot', undefined, (draft) => {\r\n\t\t\t\t\t\tconst index = draft.pilotBusinessEntityItems\r\n\t\t\t\t\t\t\t? draft.pilotBusinessEntityItems.findIndex(item => item.id === entity.id)\r\n\t\t\t\t\t\t\t: -1;\r\n\t\t\t\t\t\tif (index !== -1 && draft.pilotBusinessEntityItems)\r\n\t\t\t\t\t\t\tdraft.pilotBusinessEntityItems.splice(index, 1);\r\n\t\t\t\t\t}));\r\n\r\n\t\t\t\t\tawait queryFulfilled;\r\n\t\t\t\t} catch {\r\n\t\t\t\t\tdispatch(userApi.util.invalidateTags(['Pilot']));\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t}),\r\n\r\n\t\tsetDefaultPilotEntity: builder.mutation({\r\n\t\t\tquery: (id) => ({\r\n\t\t\t\turl: 'User/SetDefaultPilotBusinessEntity',\r\n\t\t\t\tparams: { id },\r\n\t\t\t}),\r\n\t\t\tasync onQueryStarted(id, { dispatch, queryFulfilled }) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tdispatch(userApi.util.updateQueryData('getPilot', undefined, (draft) => {\r\n\t\t\t\t\t\tif (!draft.pilotBusinessEntityItems) return;\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tdraft.pilotBusinessEntityItems.forEach(x => {\r\n\t\t\t\t\t\t\tif (x.id === id) x.isDefault = true;\r\n\t\t\t\t\t\t\telse x.isDefault = false;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}));\r\n\r\n\t\t\t\t\tawait queryFulfilled;\r\n\t\t\t\t} catch {\r\n\t\t\t\t\tdispatch(userApi.util.invalidateTags(['Pilot']));\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t}),\r\n\t}),\r\n});\r\n\r\n\r\nexport const {\r\n\tuseGetPilotQuery,\r\n\tuseLazyGetPilotQuery,\r\n\tuseConfirmTermsMutation,\r\n\tuseSavePilotMutation,\r\n\tuseSavePilotEntityMutation,\r\n\tuseDeletePilotEntityMutation,\r\n\tuseSetDefaultPilotEntityMutation } = userApi;","import { Plane } from 'types/Plane';\r\nimport { baseApi } from 'utils/api/baseApi';\r\n\r\n\r\nconst planesApi = baseApi.injectEndpoints({\r\n\toverrideExisting: false,\r\n\tendpoints: (builder) => ({\r\n\t\t\r\n\t\tgetAllUserPlanes: builder.query({\r\n\t\t\tquery: () => 'Planes/GetAllUserPlanes',\r\n\t\t\ttransformResponse: (response: Plane[], meta, arg) => \r\n\t\t\t\tresponse.sort((a,b) => (a.imatriculation > b.imatriculation) ? 1 : ((b.imatriculation > a.imatriculation) ? -1 : 0)),\r\n\t\t\tprovidesTags: ['Planes']\r\n\t\t}),\r\n\t\t\r\n\t\tsaveOrUpdatePlane: builder.mutation({\r\n\t\t\tquery: (plane) => ({\r\n\t\t\t\turl: 'Planes/SaveOrUpdatePlane',\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\tbody: plane,\r\n\t\t\t}),\r\n\t\t\tasync onQueryStarted(plane, { dispatch, queryFulfilled }) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tdispatch(planesApi.util.updateQueryData('getAllUserPlanes', undefined, (draft) => {\r\n\t\t\t\t\t\tconst index = draft.findIndex(draftPlane => draftPlane.imatriculation === plane.imatriculation);\r\n\t\t\t\t\t\tif (index !== -1) {\r\n\t\t\t\t\t\t\tdraft[index] = plane;\r\n\t\t\t\t\t\t\tdraft.sort((a,b) => (a.imatriculation > b.imatriculation) ? 1 : ((b.imatriculation > a.imatriculation) ? -1 : 0));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tdraft.push(plane);\r\n\t\t\t\t\t\t\tdraft.sort((a,b) => (a.imatriculation > b.imatriculation) ? 1 : ((b.imatriculation > a.imatriculation) ? -1 : 0));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}));\r\n\r\n\t\t\t\t\tawait queryFulfilled;\r\n\t\t\t\t} catch {\r\n\t\t\t\t\tdispatch(planesApi.util.invalidateTags(['Planes']));\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t}),\r\n\t\t\r\n\t\tdeletePlane: builder.mutation({\r\n\t\t\tquery: (imatriculation: string) => ({\r\n\t\t\t\turl: 'Planes/DeletePlane',\r\n\t\t\t\tparams: { imatriculation },\r\n\t\t\t}),\r\n\t\t\tasync onQueryStarted(imatriculation, { dispatch, queryFulfilled }) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tdispatch(planesApi.util.updateQueryData('getAllUserPlanes', undefined, (draft) => {\r\n\t\t\t\t\t\tconst index = draft.findIndex(draftPlane => draftPlane.imatriculation === imatriculation);\r\n\t\t\t\t\t\tif (index !== -1) draft.splice(index, 1);\r\n\t\t\t\t\t}));\r\n\r\n\t\t\t\t\tawait queryFulfilled;\r\n\t\t\t\t} catch {\r\n\t\t\t\t\tdispatch(planesApi.util.invalidateTags(['Planes']));\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t}),\r\n\t}),\r\n});\r\n\r\n\r\nexport const {\r\n\tuseGetAllUserPlanesQuery,\r\n\tuseLazyGetAllUserPlanesQuery,\r\n\tuseSaveOrUpdatePlaneMutation,\r\n\tuseDeletePlaneMutation } = planesApi;","import { createSelector } from '@reduxjs/toolkit';\r\nimport { RootState } from 'store';\r\n\r\n\r\n//BASE SELECTORS\r\nexport const selectUser = (state: RootState) => state.global.user;\r\nexport const selectUserMode = (state: RootState) => state.global.userMode;\r\nexport const selectLanguage = (state: RootState) => state.global.language;\r\n\r\n\r\n//CUSTOM SELECTORS\r\nexport const selectUserId = createSelector(selectUser, a => a ? a.uid : \"\");\r\nexport const selectIsAuthenticated = createSelector(selectUser, user => user !== null && user !== undefined);","import { Component, ReactNode } from 'react';\r\nimport { Translation } from 'react-i18next';\r\nimport { Container, Row } from 'react-bootstrap';\r\nimport format from 'date-fns/format';\r\n\r\n\r\ninterface ErrorBoundaryProps {\r\n\tuserName: string,\r\n\tchildren: ReactNode\r\n}\r\n\r\ninterface ErrorBoundaryState {\r\n\thasError: boolean,\r\n\terrorMessage: string | undefined,\r\n\terrorStack: string | undefined\r\n}\r\n\r\n\r\nclass ErrorBoundary extends Component {\r\n\tconstructor(props: ErrorBoundaryProps) {\r\n\t\tsuper(props);\r\n\t\tthis.state = {\r\n\t\t\thasError: false,\r\n\t\t\terrorMessage: undefined,\r\n\t\t\terrorStack: undefined\r\n\t\t};\r\n\t}\r\n\r\n\tstatic getDerivedStateFromError(error: Error) {\r\n\t\t// Update state so the next render will show the fallback UI. \r\n\t\treturn { hasError: true, errorMessage: error.message, errorStack: error.stack };\r\n\t}\r\n\r\n\tcomponentDidCatch(error: Error, errorInfo: any) {\r\n\t\t// You can also log the error to an error reporting service\r\n\t\tconsole.error('Error boundary', errorInfo, error);\r\n\t}\r\n\r\n\trender() {\r\n\t\tif (this.state.hasError) {\r\n\t\t\treturn (\r\n\t\t\t\t{( t ) => \r\n\t\t\t\t\t\r\n\t\t\t\t\t\t

{t('errorBoundary.header1')}

\r\n\t\t\t\t\t\t

{t('errorBoundary.header2')}

\r\n\r\n\t\t\t\t\t\t{t('errorBoundary.appLabel')}\r\n\t\t\t\t\t\t{t('errorBoundary.appName')}\r\n\r\n\t\t\t\t\t\t{t('errorBoundary.time')}\r\n\t\t\t\t\t\t{format(new Date(), 'dd.MM.yyyy HH:mm')}\r\n\r\n\t\t\t\t\t\t{t('errorBoundary.user')}\r\n\t\t\t\t\t\t{this.props.userName}\r\n\r\n\t\t\t\t\t\t{t('errorBoundary.message')}\r\n\t\t\t\t\t\t{this.state.errorMessage}\r\n\r\n\t\t\t\t\t\t{t('errorBoundary.stackTrace')}\r\n\t\t\t\t\t\t{this.state.errorStack}\r\n\t\t\t\t\t
\r\n\t\t\t\t}
\r\n\t\t\t);\r\n\t\t};\r\n\t\treturn this.props.children;\r\n\t}\r\n}\r\n\r\nexport default ErrorBoundary;","import { useEffect, useCallback, useContext, memo } from 'react';\r\nimport { useDispatch } from 'react-redux';\r\nimport { AccountInfo, InteractionStatus } from '@azure/msal-browser';\r\nimport { MsalContext } from '@azure/msal-react';\r\nimport { User } from 'types/User';\r\nimport { setUser } from 'store/globalStore';\r\nimport { loginRequest } from 'components/global/authentication/authConfig';\r\nimport { isUserTokenClaims } from 'components/global/authentication/typeGuards';\r\n\r\n\r\nconst AuthComponent = () => {\r\n\r\n\tconst { accounts, instance, inProgress } = useContext(MsalContext);\r\n\tconst dispatch = useDispatch();\r\n\tconst saveUser = (user: User | null) => dispatch(setUser(user));\r\n\r\n\r\n\tuseEffect(() => {\r\n\t\tif (accounts.length > 0)\r\n\t\t\tupdateGlobalUser(accounts[0]);\r\n\t\t\r\n\t\tif (accounts.length === 0)\r\n\t\t\tsaveUser(null);\r\n\t}, [ accounts.length ]);\r\n\r\n\r\n\tuseEffect(() => {\r\n\t\tif (accounts.length === 0 && inProgress === InteractionStatus.None)\r\n\t\t\tinstance.loginRedirect(loginRequest);\r\n\t}, [ accounts.length, inProgress ]);\r\n\r\n\r\n\tconst updateGlobalUser = useCallback((account: AccountInfo) => {\r\n\t\tif (isUserTokenClaims(account.idTokenClaims)) {\r\n\t\t\tconst newUser: User = {\r\n\t\t\t\tsurname: account.idTokenClaims.family_name,\r\n\t\t\t\tfirstName: account.idTokenClaims.given_name,\r\n\t\t\t\temail: account.idTokenClaims.emails[0],\r\n\t\t\t\tuid: account.localAccountId\r\n\t\t\t};\r\n\t\t\tsaveUser(newUser);\r\n\t\t};\r\n\t},[]);\r\n\r\n\treturn null;\r\n}\r\n\r\nexport default memo(AuthComponent);","\r\n\r\nexport enum AppRoutesEnum {\r\n\tbasePath = \"/\",\r\n\terror = \"error\",\r\n\tpilot = \"pilot\",\r\n\tpilotCompany = \"pilot-company\",\r\n\r\n\tplane = \"plane\",\r\n\tassignAirport = \"assign-airport\",\r\n\tairport = \"airport\",\r\n\tairportCompany = \"airport-company\",\r\n\troles = \"roles\",\r\n\tpricings = \"pricings\",\r\n\tpricingItem = \"pricing-item\",\r\n\tpayments = \"payments\",\r\n\t\r\n\tprofile = \"profile\",\r\n\tcart = \"cart\"\r\n}","import { useTranslation } from 'react-i18next';\r\nimport { Button } from 'react-bootstrap';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faSpinner } from '@fortawesome/free-solid-svg-icons/faSpinner';\r\n\r\n\r\n\r\nexport const PageLoading = (): JSX.Element => {\r\n\treturn (\r\n\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n};\r\n\r\n\r\n\r\ninterface PageErrorProps {\r\n\tmessage: string,\r\n\tbackButtonFunction?: () => void\r\n}\r\nexport const PageError = (props: PageErrorProps): JSX.Element => {\r\n\tconst { message, backButtonFunction } = props;\r\n\tconst { t } = useTranslation('global');\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t

{message}

\r\n\r\n\t\t\t{backButtonFunction !== undefined && backButtonFunction !== null &&\r\n\t\t\t\t backButtonFunction()}>\r\n\t\t\t\t\t{t('appButtons.goBack')}\r\n\t\t\t\t}\r\n\t\t
\r\n\t);\r\n}\r\n\r\n\r\ninterface PageInfoProps {\r\n\tmessage: string\r\n}\r\nexport const PageInfo = (props: PageInfoProps): JSX.Element => {\r\n\treturn (\r\n\t\t
\r\n\t\t\t

{props.message}

\r\n\t\t
\r\n\t);\r\n}","import { useTranslation } from 'react-i18next';\r\nimport { PageLoading } from 'components/global/PageElements';\r\n\r\n\r\nconst LoadingPage = (): JSX.Element => {\r\n\tconst { t } = useTranslation('global');\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t
\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t

{t('welcomeHeader')}

\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\r\n\t\t\t
\r\n\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default LoadingPage;","import { useTranslation } from 'react-i18next';\r\nimport { PageLoading } from 'components/global/PageElements';\r\n\r\n\r\nconst LoadingDetail = (): JSX.Element => {\r\n\tconst { t } = useTranslation('global');\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t\t\t\r\n\t\t\t

{t('welcomeHeader')}

\r\n\r\n\t\t\t\r\n\r\n\t\t
\r\n\t)\r\n};\r\n\r\nexport default LoadingDetail;","import { useTranslation } from 'react-i18next';\r\nimport { PageError } from 'components/global/PageElements';\r\n\r\n\r\nconst ErrorDetail = (): JSX.Element => {\r\n\tconst { t } = useTranslation('global');\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t\t\t\r\n\t\t\t

{t('welcomeHeader')}

\r\n\r\n\t\t\t\r\n\r\n\t\t
\r\n\t)\r\n};\r\n\r\nexport default ErrorDetail;","import { baseApi } from 'utils/api/baseApi';\r\nimport { HtmlComponent } from 'types/HtmlComponent';\r\nimport { LanguageEnum } from 'types/enums';\r\n\r\n\r\nconst htmlApi = baseApi.injectEndpoints({\r\n\toverrideExisting: false,\r\n\tendpoints: (builder) => ({\r\n\r\n\t\tgetHtmlContent: builder.query({\r\n\t\t\tquery: ({ groupCode, language }) => ({\r\n\t\t\t\turl: 'HtmlComponent/GetHtmlContent',\r\n\t\t\t\tparams: { groupCode, language }\r\n\t\t\t}),\r\n\t\t\ttransformResponse: (response: HtmlComponent[], meta, arg) => \r\n\t\t\t\tresponse.sort((a, b) => ('' + a.orderId).localeCompare(b.orderId, undefined, { numeric: true })),\r\n\t\t})\r\n\t}),\r\n});\r\n\r\n\r\nexport const { useGetHtmlContentQuery } = htmlApi;","import { Button, ButtonProps } from 'react-bootstrap';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faSpinner } from '@fortawesome/free-solid-svg-icons/faSpinner';\r\n\r\n\r\nexport const FormConfirmButton = (props: ButtonProps & { showLoading?: boolean, label: string }): JSX.Element => {\r\n\tvar { showLoading, ...other } = props;\r\n\treturn (\r\n\t\t\r\n\t\t\t{showLoading ? : props.label}\r\n\t\t\r\n\t)\r\n}\r\n\r\n\r\nexport const FormCancelButton = (props: ButtonProps & { showLoading?: boolean, label: string }): JSX.Element => {\r\n\tvar { showLoading, ...other } = props;\r\n\treturn (\r\n\t\t\r\n\t\t\t{showLoading ? : props.label}\r\n\t\t\r\n\t)\r\n}","import { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { useNavigate } from \"react-router-dom\";\r\nimport { selectLanguage } from 'store/globalSelectors';\r\nimport { setInitPilot } from 'components/forms/pilot-page/PilotStore';\r\nimport { useGetHtmlContentQuery } from 'utils/api/html';\r\nimport { useGetPilotQuery } from 'utils/api/user';\r\nimport { PageLoading, PageError } from 'components/global/PageElements';\r\nimport { AppRoutesEnum } from 'components/global/routing/routesEnum';\r\nimport { FormConfirmButton } from 'components/global/FormButtons';\r\n\r\n\r\nconst RegistrationHub = (): JSX.Element => {\r\n\tconst { t } = useTranslation([ 'registrationPage', 'global' ]);\r\n\r\n\tconst language = useSelector(selectLanguage);\r\n\tconst dispatch = useDispatch();\r\n\tconst navigate = useNavigate();\r\n\tconst { isLoading, data, isError } = useGetHtmlContentQuery({ groupCode: 'RegistrationPage', language });\r\n\tconst { data: pilot } = useGetPilotQuery();\r\n\r\n\r\n\tif (isLoading)\r\n\t\treturn ();\r\n\t\r\n\tif (isError)\r\n\t\treturn ();\r\n\r\n\r\n\treturn (\r\n\t\t
\r\n\r\n\t\t\t{data && data.map(x =>\r\n\t\t\t\t

{x.content}

) }\r\n\r\n\t\t\t {\r\n\t\t\t\t\tdispatch(setInitPilot(pilot ?? null));\r\n\t\t\t\t\tnavigate(`/${AppRoutesEnum.pilot}`);\r\n\t\t\t\t}} />\r\n\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default RegistrationHub;","import { useTranslation } from 'react-i18next';\r\nimport { HtmlComponent } from 'types/HtmlComponent';\r\nimport { FormConfirmButton, FormCancelButton } from 'components/global/FormButtons';\r\n\r\n\r\ninterface TermItemProps {\r\n\thtmlComponents: HtmlComponent[],\r\n handleReject: () => void,\r\n handleConfirm: () => void\r\n}\r\n\r\n\r\nconst TermItem = (props: TermItemProps): JSX.Element => {\r\n\tconst { htmlComponents, handleReject, handleConfirm } = props;\r\n\tconst { t } = useTranslation('global');\r\n\r\n\treturn (\r\n\t\t
\r\n\r\n\t\t\t{htmlComponents && htmlComponents.map(x =>\r\n\t\t\t\t

{x.content}

)}\r\n\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t\t\r\n\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t)\r\n};\r\n\r\nexport default TermItem;","import { useEffect } from 'react';\r\nimport { useSelector } from \"react-redux\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { UserTermType } from 'types/enums';\r\nimport { selectLanguage } from 'store/globalSelectors';\r\nimport { useGetHtmlContentQuery } from 'utils/api/html';\r\nimport { useConfirmTermsMutation, useGetPilotQuery } from 'utils/api/user';\r\nimport { PageLoading, PageError } from 'components/global/PageElements';\r\nimport TermItem from 'components/registration/user-terms/TermItem';\r\n/* deactivated terms */\r\n\r\n\r\nconst UserTerms = (): JSX.Element => {\r\n\tconst { t } = useTranslation([ 'registrationPage', 'global' ]);\r\n\r\n\tconst language = useSelector(selectLanguage);\r\n\tconst { data: pilot } = useGetPilotQuery();\r\n\tconst [ confirmTerms ] = useConfirmTermsMutation();\r\n\r\n\tconst { isLoading: loadingBusiness, data: dataBusiness, isError: errorBusiness } = useGetHtmlContentQuery({ groupCode: 'BusinessTerms', language });\r\n\tconst { isLoading: loadingContract, data: dataContract, isError: errorContract } = useGetHtmlContentQuery({ groupCode: 'ContractTerms', language });\r\n\t//const { isLoading: loadingService, data: dataService, isError: errorService } = useGetHtmlContentQuery({ groupCode: 'ServiceTerms', language });\r\n\r\n\t\r\n\tuseEffect(() => {\r\n\t\tsetTimeout(() => window.scrollTo(0, 0), 5);\r\n\t}, [ pilot ])\r\n\r\n\r\n\tif (loadingBusiness || loadingContract/* || loadingService*/)\r\n\t\treturn ();\r\n\t\r\n\tif (!pilot || errorBusiness || errorContract/* || errorService*/)\r\n\t\treturn ();\r\n\t\r\n\treturn (\r\n\t\t<>\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t{`1. ${t('businessTerms')}`}\r\n\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t{`2. ${t('contractTerms')}`}\r\n\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t{/*
\r\n\t\t\t\t\t{`3. ${t('serviceTerms')}`}\r\n\t\t\t\t
*/}\r\n\t\t\t
\r\n\r\n\r\n\t\t\t{dataBusiness && !pilot.termsBussiness &&\r\n\t\t\t\t confirmTerms(UserTermType.bussiness)}\r\n\t\t\t\t\thandleReject={() => window.location.replace('https://landee.cloud/')} />}\r\n\r\n\t\t\t\r\n\t\t\t{dataContract && pilot.termsBussiness && !pilot.termsContract &&\r\n\t\t\t\t confirmTerms(UserTermType.contract)}\r\n\t\t\t\t\thandleReject={() => window.location.replace('https://landee.cloud/')} />}\r\n\r\n\r\n\t\t\t{/*dataService && pilot.termsBussiness && pilot.termsContract && !pilot.termsService &&\r\n\t\t\t\t confirmTerms(UserTermType.service)}\r\n\t\t\t\t\thandleReject={() => window.location.replace('https://landee.cloud/')} />*/}\r\n\t\t\r\n\t)\r\n};\r\n\r\nexport default UserTerms;","import { useTranslation } from 'react-i18next';\r\nimport RegistrationHub from 'components/registration/registration-hub/RegistrationHub';\r\nimport UserTerms from 'components/registration/user-terms/UserTerms';\r\nimport { useGetPilotQuery } from 'utils/api/user';\r\nimport { PageLoading, PageError } from 'components/global/PageElements';\r\n/* deactivated terms */\r\n\r\n\r\nconst RegistrationPage = (): JSX.Element => {\r\n\tconst { t } = useTranslation('global');\r\n\tconst { isLoading, data: pilot, isError } = useGetPilotQuery();\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t\t\t\r\n\t\t\t

{t('welcomeHeader')}

\r\n\r\n\t\t\t{isLoading &&\r\n\t\t\t\t}\r\n\r\n\t\t\t{isError &&\r\n\t\t\t\t}\r\n\r\n\t\t\t{pilot && (!pilot.termsBussiness || !pilot.termsContract/* || !pilot.termsService*/) && \r\n\t\t\t\t}\r\n\r\n\t\t\t{pilot && pilot.termsBussiness && pilot.termsContract &&/* pilot.termsService &&*/ \r\n\t\t\t\t}\r\n\t\t
\r\n\t)\r\n};\r\n\r\nexport default RegistrationPage;","import { useTranslation } from 'react-i18next';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faSpinner } from '@fortawesome/free-solid-svg-icons/faSpinner';\r\n\r\n\r\nexport const GridError = (): JSX.Element => {\r\n\tconst { t } = useTranslation('global');\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t

{t('errorMessage')}

\r\n\t\t
\r\n\t);\r\n};\r\n\r\n\r\nexport const GridEmpty = (): JSX.Element => {\r\n\tconst { t } = useTranslation('global');\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t

{t('gridMessages.noRecords')}

\r\n\t\t
\r\n\t);\r\n};\r\n\r\n\r\nexport const GridLoading = (): JSX.Element => {\r\n\treturn (\r\n\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n};\r\n\r\n\r\nexport const GridNoAirport = (): JSX.Element => {\r\n\tconst { t } = useTranslation('global');\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t

{t('gridMessages.noAirport')}

\r\n\t\t
\r\n\t);\r\n};\r\n\r\n\r\nexport const GridNoAdmin = (): JSX.Element => {\r\n\tconst { t } = useTranslation('global');\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t

{t('gridMessages.noAdmin')}

\r\n\t\t
\r\n\t);\r\n};\r\n\r\n\r\ninterface GridLabel {\r\n\tlabel: string,\r\n\ticonString?: string\r\n}\r\nexport const GridLabel = (props: GridLabel): JSX.Element => {\r\n\tconst { label, iconString } = props;\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t{iconString !== undefined &&\r\n\t\t\t\t{`grid-${label}-icon`}/}\r\n\t\t\t
{label}
\r\n\t\t
\r\n\t);\r\n};\r\n\r\n\r\ninterface RequestCellClassNameArgs {\r\n\tchangedProperties: Array,\r\n\tcellProperties: CellPropertiesType,\r\n\tprimary: boolean,\r\n\tsettings?: SettingsType\r\n}\r\nexport type SettingsType = { centered?: boolean | null, deleted?: boolean | null, added?: boolean | null };\r\nexport type CellPropertiesType = Array | keyof T;\r\n\r\nexport const getRequestCellClassName = (args: RequestCellClassNameArgs) => {\r\n\tconst { changedProperties, cellProperties, primary, settings } = args;\r\n\tconst centered = settings && settings.centered ? settings.centered : false;\r\n\tconst deleted = settings && settings.deleted ? settings.deleted : false;\r\n\tconst added = settings && settings.added ? settings.added : false;\r\n\t\r\n\tconst isArray = Array.isArray(cellProperties);\r\n\tconst baseClass = `app-grid-cell${\r\n\t\tprimary ? ' primary-cell' : ' secondary-cell'}${\r\n\t\tcentered ? ' centered-cell' : ''}${\r\n\t\tadded ? ' added-cell' : ''}${\r\n\t\tdeleted ? ' deleted-cell' : ''}`;\r\n\t\r\n\tif (changedProperties && changedProperties.length === 0)\r\n\t\treturn baseClass;\r\n\r\n\tif (!deleted && !added && isArray && changedProperties.some(x => cellProperties.some(y => y === x)))\r\n\t\treturn baseClass + ' changed-cell';\r\n\r\n\tif (!deleted && !added && !isArray && changedProperties.some(x => x === cellProperties))\r\n\t\treturn baseClass + ' changed-cell';\r\n\r\n\treturn baseClass;\r\n}","import { useTranslation } from 'react-i18next';\r\n\r\n\r\nconst GridHeader = (): JSX.Element => {\r\n\tconst { t } = useTranslation('adminPage');\r\n\r\n\treturn (\r\n\t\t<>\r\n\r\n\t\t\t
\r\n\t\t\t\t{t('pilotGrid.headers.name')}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{t('pilotGrid.headers.licence')}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t
\r\n\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default GridHeader;","import { useTranslation } from 'react-i18next';\r\nimport { Button, ButtonProps } from 'react-bootstrap';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faCirclePlus } from '@fortawesome/free-solid-svg-icons/faCirclePlus';\r\nimport { faPen } from '@fortawesome/free-solid-svg-icons/faPen';\r\nimport { faTrashCan } from '@fortawesome/free-solid-svg-icons/faTrashCan';\r\nimport { faXmark } from '@fortawesome/free-solid-svg-icons/faXmark';\r\nimport { faEye } from '@fortawesome/free-solid-svg-icons/faEye';\r\nimport { faSpinner } from '@fortawesome/free-solid-svg-icons/faSpinner';\r\n\r\n\r\n\r\nexport const GridNewRecord = (props: ButtonProps & { label: string }): JSX.Element => {\r\n\treturn (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t{props.label}\r\n\t\t\t\r\n\t\t
\r\n\t)\r\n}\r\n\r\n\r\nexport const GridEditButton = (props: ButtonProps): JSX.Element => {\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\n\r\nexport const GridRemoveButton = (props: ButtonProps): JSX.Element => {\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\n\r\nexport const GridApproveButton = (props: ButtonProps & { showLoading?: boolean }): JSX.Element => {\r\n\tvar { showLoading, ...other } = props;\r\n\tconst { t } = useTranslation('global');\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{showLoading\r\n\t\t\t\t? \r\n\t\t\t\t: t('appButtons.approve')}\r\n\t\t\r\n\t)\r\n}\r\n\r\n\r\nexport const GridRejectButton = (props: ButtonProps): JSX.Element => {\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\n\r\nexport const GridDetailButton = (props: ButtonProps): JSX.Element => {\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}","import { memo } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch } from \"react-redux\";\r\nimport { useNavigate } from \"react-router-dom\";\r\nimport { Pilot } from 'types/Pilot';\r\nimport { AppRoutesEnum } from 'components/global/routing/routesEnum';\r\nimport { GridEditButton } from 'components/global/GridButtons';\r\nimport { setInitPilot } from 'components/forms/pilot-page/PilotStore';\r\n\r\n\r\ninterface GridRowProps {\r\n\tpilot: Pilot\r\n}\r\n \r\n\r\nconst GridRow = (props: GridRowProps): JSX.Element => {\r\n\tconst { pilot } = props;\r\n\tconst { t } = useTranslation('adminPage');\r\n\t\r\n\tconst navigate = useNavigate();\r\n\tconst dispatch = useDispatch();\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t
\r\n\t\t\t\t

{`${pilot.firstName} ${pilot.surname}`}

\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t

{pilot.pilotLicenceNumber && pilot.pilotLicenceNumber !== \"\"\r\n\t\t\t\t\t? pilot.pilotLicenceNumber\r\n\t\t\t\t\t: t('pilotGrid.noLicence')}\r\n\t\t\t\t

\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t {\r\n\t\t\t\t\t\tdispatch(setInitPilot(pilot ?? null));\r\n\t\t\t\t\t\tnavigate(`/${AppRoutesEnum.pilot}`);\r\n\t\t\t\t\t}} />\r\n\t\t\t
\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default memo(GridRow);","import { useGetPilotQuery } from 'utils/api/user';\r\nimport { GridLoading, GridError } from 'components/global/GridElements';\r\nimport GridHeader from 'components/admin-page/pilot-grid/GridHeader';\r\nimport GridRow from 'components/admin-page/pilot-grid/GridRow';\r\n\r\n\r\nconst Grid = (): JSX.Element => {\r\n\r\n\tconst { isLoading, isError, isSuccess, data } = useGetPilotQuery();\r\n\t\r\n\tif (isLoading) return (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n\r\n\tif (isError) return (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n\r\n\treturn (\r\n\t\t
\r\n\r\n\t\t\t\r\n\r\n\t\t\t{isSuccess && data &&\r\n\t\t\t\t\r\n\t\t\t}\r\n\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default Grid;","import { useTranslation } from 'react-i18next';\r\n\r\n\r\nconst GridHeader = (): JSX.Element => {\r\n\tconst { t } = useTranslation('adminPage');\r\n\r\n\treturn (\r\n\t\t<>\r\n\r\n\t\t\t
\r\n\t\t\t\t{t('planesGrid.headers.imatriculation')}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{t('planesGrid.headers.category')}\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\t{t('planesGrid.headers.name')}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t
\r\n\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default GridHeader;","import { useTranslation } from 'react-i18next';\r\nimport { useDispatch } from \"react-redux\";\r\nimport { useNavigate } from \"react-router-dom\";\r\nimport { Plane } from 'types/Plane';\r\nimport { AppRoutesEnum } from 'components/global/routing/routesEnum';\r\nimport { initPlane } from \"components/forms/plane-page/PlaneStore\";\r\nimport { GridEditButton, GridRemoveButton } from 'components/global/GridButtons';\r\nimport { useDeletePlaneMutation } from 'utils/api/planes';\r\n\r\n\r\ninterface RowButtonsProps {\r\n\tplane: Plane\r\n}\r\n \r\n\r\nconst RowButtons = (props: RowButtonsProps): JSX.Element => {\r\n\tconst { plane } = props;\r\n\tconst { t } = useTranslation('global');\r\n\t\r\n\tconst navigate = useNavigate();\r\n\tconst dispatch = useDispatch();\r\n\tconst [ deletePlane, { isLoading, isError } ] = useDeletePlaneMutation();\r\n\r\n\r\n\tif (isError) return (\r\n\t\t
\r\n\t\t\t

{t('errorMessageShort')}

\r\n\t\t
\r\n\t);\r\n\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t {\r\n\t\t\t\t\tdispatch(initPlane(plane));\r\n\t\t\t\t\tnavigate(`/${AppRoutesEnum.plane}`);\r\n\t\t\t\t}} />\r\n\r\n\t\t\t isLoading ? {} : deletePlane(plane.imatriculation)} />\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default RowButtons;","import { memo } from 'react';\r\nimport { Plane } from 'types/Plane';\r\nimport RowButtons from 'components/admin-page/planes-grid/RowButtons';\r\n\r\n\r\ninterface GridRowProps {\r\n\tplane: Plane\r\n}\r\n \r\n\r\nconst GridRow = (props: GridRowProps): JSX.Element => {\r\n\tconst { plane } = props;\r\n\tconst { imatriculation, planeName, planeType } = props.plane;\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t
\r\n\t\t\t\t

{imatriculation}

\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t

{planeType.toUpperCase()}

\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\t

{planeName}

\r\n\t\t\t
\r\n\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default memo(GridRow);","import { useTranslation } from 'react-i18next';\r\nimport { useDispatch } from \"react-redux\";\r\nimport { useNavigate } from \"react-router-dom\";\r\nimport { useGetAllUserPlanesQuery } from 'utils/api/planes';\r\nimport { AppRoutesEnum } from 'components/global/routing/routesEnum';\r\nimport GridHeader from 'components/admin-page/planes-grid/GridHeader';\r\nimport GridRow from 'components/admin-page/planes-grid/GridRow';\r\nimport { GridLoading, GridError } from 'components/global/GridElements';\r\nimport { GridNewRecord } from 'components/global/GridButtons';\r\nimport { initPlane } from \"components/forms/plane-page/PlaneStore\";\r\n\r\n\r\nconst Grid = (): JSX.Element => {\r\n\tconst { t } = useTranslation('adminPage');\r\n\t\r\n\tconst navigate = useNavigate();\r\n\tconst dispatch = useDispatch();\r\n\tconst { isLoading, isSuccess, data, isError } = useGetAllUserPlanesQuery();\r\n\r\n\t\r\n\tif (isLoading) return (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n\r\n\tif (isError) return (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n\r\n\treturn (\r\n\t\t
\r\n\r\n\t\t\t\r\n\r\n\t\t\t{isSuccess && data && data.map(x => \r\n\t\t\t\t)}\r\n\r\n\t\t\t {\r\n\t\t\t\t\tdispatch(initPlane(null));\r\n\t\t\t\t\tnavigate(`/${AppRoutesEnum.plane}`)\r\n\t\t\t\t}}/>\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default Grid;","import { baseApi } from 'utils/api/baseApi';\r\nimport { GpsPoint } from 'types/GpsPoint';\r\nimport { Airport, AirportRequest } from 'types/Airport';\r\nimport { BusinessEntity } from 'types/BusinessEntity';\r\nimport { Pilot } from 'types/Pilot';\r\n\r\n\r\nconst airportsApi = baseApi.injectEndpoints({\r\n\toverrideExisting: false,\r\n\tendpoints: (builder) => ({\r\n\r\n\t\tgetAllAirports: builder.query({\r\n\t\t\tquery: () => ({\r\n\t\t\t\turl: 'Airports/GetSimpleAirports'\r\n\t\t\t}),\r\n\t\t\tprovidesTags: ['Airports']\r\n\t\t}),\r\n\r\n\t\tgetUserAirports: builder.query({\r\n\t\t\tquery: (userId) => ({\r\n\t\t\t\turl: 'Airports/GetAirportsByUser',\r\n\t\t\t\tparams: { userId }\r\n\t\t\t}),\r\n\t\t\tprovidesTags: ['AirportsByUser']\r\n\t\t}),\r\n\r\n\t\tgetCommission: builder.query({\r\n\t\t\tquery: (icao) => ({\r\n\t\t\t\turl: 'Airports/GetCommissionByIcao',\r\n\t\t\t\tparams: { icao },\r\n\t\t\t})\r\n\t\t}),\r\n\r\n\t\tgetIsAdminOnAirport: builder.query({\r\n\t\t\tquery: (icao) => ({\r\n\t\t\t\turl: 'Airports/GetIsAdminOnAirport',\r\n\t\t\t\tparams: { icao },\r\n\t\t\t}),\r\n\t\t\tprovidesTags: ['AdminOnAirport']\r\n\t\t}),\r\n\r\n\t\tgetIsAdminOrResidentOnAirport: builder.query({\r\n\t\t\tquery: (icao) => ({\r\n\t\t\t\turl: 'Airports/GetIsAdminOrResidentOnAirport',\r\n\t\t\t\tparams: { icao },\r\n\t\t\t}),\r\n\t\t\tprovidesTags: ['AdminOrResidentOnAirport']\r\n\t\t}),\r\n\r\n\t\tgetSortedAirportsByGps: builder.query({\r\n\t\t\tquery: (gpsPoint) => ({\r\n\t\t\t\turl: 'Airports/GetSortedAirportsByGps',\r\n\t\t\t\tparams: { latitude: gpsPoint.latitude, longitude: gpsPoint.longitude },\r\n\t\t\t}),\r\n\t\t\tprovidesTags: ['SortedAirports']\r\n\t\t}),\r\n\r\n\t\tgetUsersForAirport: builder.query({\r\n\t\t\tquery: (icao) => ({\r\n\t\t\t\turl: 'Airports/GetUsersForAirport',\r\n\t\t\t\tparams: { icao }\r\n\t\t\t}),\r\n\t\t\tprovidesTags: ['UsersByAirport']\r\n\t\t}),\r\n\r\n\t\tapproveRequest: builder.mutation({\r\n\t\t\tquery: (id) => ({\r\n\t\t\t\turl: 'Airports/Approve',\r\n\t\t\t\tparams: { id },\r\n\t\t\t}),\r\n\t\t\tinvalidatesTags: ['Airports','AirportsByUser','SortedAirports']\r\n\t\t}),\r\n\r\n\t\trejectRequest: builder.mutation({\r\n\t\t\tquery: (id) => ({\r\n\t\t\t\turl: 'Airports/Reject',\r\n\t\t\t\tparams: { id },\r\n\t\t\t}),\r\n\t\t\tinvalidatesTags: ['AirportsByUser']\r\n\t\t}),\r\n\r\n\t\tstartEditRequest: builder.query({\r\n\t\t\tquery: (icao) => ({\r\n\t\t\t\turl: 'Airports/StartEdit',\r\n\t\t\t\tparams: { icao },\r\n\t\t\t}),\r\n\t\t\tkeepUnusedDataFor: 0,\r\n\t\t}),\r\n\r\n\t\tcancelEditRequest: builder.query({\r\n\t\t\tquery: (icao) => ({\r\n\t\t\t\turl: 'Airports/CancelEdit',\r\n\t\t\t\tparams: { icao },\r\n\t\t\t}),\r\n\t\t\tkeepUnusedDataFor: 0,\r\n\t\t}),\r\n\r\n\t\tsaveEditRequest: builder.query({\r\n\t\t\tquery: (icao) => ({\r\n\t\t\t\turl: 'Airports/SaveEdit',\r\n\t\t\t\tparams: { icao },\r\n\t\t\t}),\r\n\t\t\tkeepUnusedDataFor: 0,\r\n\t\t}),\r\n\r\n\t\tsaveAirportRequest: builder.mutation({\r\n\t\t\tquery: (request) => ({\r\n\t\t\t\turl: 'Airports/Save',\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\tbody: request,\r\n\t\t\t}),\r\n\t\t\tasync onQueryStarted(request, { dispatch, queryFulfilled }) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tconst { data: airportRequest } = await queryFulfilled;\r\n\r\n\t\t\t\t\tdispatch(airportsApi.util.updateQueryData('getUserAirports', request.editedByUser, (draft) => {\r\n\t\t\t\t\t\tconst index = draft.findIndex(item => item.icao === airportRequest.icao);\r\n\t\t\t\t\t\tif (index !== -1) draft[index].changeRequest = airportRequest;\r\n\t\t\t\t\t}));\r\n\r\n\t\t\t\t} catch {\r\n\t\t\t\t\tdispatch(airportsApi.util.invalidateTags(['AirportsByUser']));\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tinvalidatesTags: ['Airports','AirportsByUser','SortedAirports']\r\n\t\t}),\r\n\r\n\t\tgetBusinessEntities: builder.query({\r\n\t\t\tquery: (icao) => ({\r\n\t\t\t\turl: 'Airports/GetBusinessPartnersByIcao',\r\n\t\t\t\tparams: { icao },\r\n\t\t\t}),\r\n\t\t\tprovidesTags: ['BusinessEntities']\r\n\t\t}),\r\n\r\n\t\tgetApprovedBusinessEntities: builder.query({\r\n\t\t\tquery: (icao) => ({\r\n\t\t\t\turl: 'Airports/GetApprovedBusinessPartnersByIcao',\r\n\t\t\t\tparams: { icao },\r\n\t\t\t}),\r\n\t\t\tprovidesTags: ['ApprovedBusinessEntities']\r\n\t\t}),\r\n\t}),\r\n});\r\n\r\n\r\nexport const {\r\n\tuseGetAllAirportsQuery,\r\n\tuseLazyGetUserAirportsQuery,\r\n\tuseGetCommissionQuery,\r\n\tuseLazyGetIsAdminOnAirportQuery,\r\n\tuseLazyGetIsAdminOrResidentOnAirportQuery,\r\n\tuseLazyGetSortedAirportsByGpsQuery,\r\n\tuseLazyGetUsersForAirportQuery,\r\n\tuseApproveRequestMutation,\r\n\tuseRejectRequestMutation,\r\n\tuseStartEditRequestQuery,\r\n\tuseLazyCancelEditRequestQuery,\r\n\tuseLazySaveEditRequestQuery,\r\n\tuseSaveAirportRequestMutation,\r\n\tuseGetBusinessEntitiesQuery,\r\n\tuseGetApprovedBusinessEntitiesQuery } = airportsApi;","import { useTranslation } from 'react-i18next';\r\n\r\n\r\nconst GridHeader = (): JSX.Element => {\r\n\tconst { t } = useTranslation('adminPage');\r\n\r\n\treturn (\r\n\t\t<>\r\n\r\n\t\t\t
\r\n\t\t\t\t{t('airportsGrid.headers.icao')}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{t('airportsGrid.headers.name')}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{t('airportsGrid.headers.currency')}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{t('airportsGrid.headers.roles')}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t
\r\n\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default GridHeader;","import { useDispatch } from \"react-redux\";\r\nimport { useNavigate } from \"react-router-dom\";\r\nimport { Airport } from 'types/Airport';\r\nimport { UserRoleTypeEnum } from 'types/enums';\r\nimport { AppRoutesEnum } from 'components/global/routing/routesEnum';\r\nimport { GridEditButton } from 'components/global/GridButtons';\r\nimport { initAirport } from \"components/forms/airport-page/AirportStore\";\r\n\r\n\r\ninterface RowButtonsProps {\r\n\tairport: Airport\r\n}\r\n \r\n\r\nconst RowButtons = (props: RowButtonsProps): JSX.Element => {\r\n\tconst { airport } = props;\r\n\tconst navigate = useNavigate();\r\n\tconst dispatch = useDispatch();\r\n\r\n\r\n\tif (airport.changeRequest) return (\r\n\t\t
\r\n\t);\r\n\t\r\n\treturn (\r\n\t\t
\r\n\t\t\t x === UserRoleTypeEnum.admin) : false}\r\n\t\t\t\tonClick={() => {\r\n\t\t\t\t\tif (!airport) return;\r\n\t\t\t\t\tdispatch(initAirport(airport));\r\n\t\t\t\t\tnavigate(`/${AppRoutesEnum.airport}`);\r\n\t\t\t\t}} />\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default RowButtons;","import { useCallback, memo } from 'react';\r\nimport { Airport } from 'types/Airport';\r\nimport { SettingsType, CellPropertiesType, getRequestCellClassName } from 'components/global/GridElements';\r\nimport RowButtons from 'components/admin-page/airports-grid/RowButtons';\r\n\r\n\r\ninterface GridRowProps {\r\n\tairport: Airport,\r\n\tchangedProperties: Array\r\n}\r\n \r\n\r\nconst GridRow = (props: GridRowProps): JSX.Element => {\r\n\tconst { airport, changedProperties } = props;\r\n\tconst { icao, name, currency, singleUserRole } = props.airport;\r\n\r\n\tconst getClassName = useCallback((cellProperties: CellPropertiesType, settings?: SettingsType) => \r\n\t\tgetRequestCellClassName({ changedProperties, primary: true, cellProperties, settings })\r\n\t,[ changedProperties ]);\r\n\r\n\t\r\n\treturn (\r\n\t\t<>\r\n\t\t\t
\r\n\t\t\t\t

{icao}

\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t

{name}

\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t

{currency}

\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{singleUserRole\r\n\t\t\t\t\t? singleUserRole.map(x =>

{x}

)\r\n\t\t\t\t\t: \"-\"}\r\n\t\t\t
\r\n\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default memo(GridRow);","import { useTranslation } from 'react-i18next';\r\nimport { useSelector } from \"react-redux\";\r\nimport { AirportRequest } from 'types/Airport';\r\nimport { selectUserId } from \"store/globalSelectors\";\r\nimport { useApproveRequestMutation, useRejectRequestMutation } from 'utils/api/airports';\r\nimport { GridApproveButton, GridRejectButton } from 'components/global/GridButtons';\r\n\r\n\r\ninterface RequestButtonsProps {\r\n\tairport: AirportRequest\r\n}\r\n \r\n\r\nconst RequestButtons = (props: RequestButtonsProps): JSX.Element => {\r\n\tconst { id, firstApprover, secondApprover } = props.airport;\r\n\tconst { t } = useTranslation('global');\r\n\r\n\tconst approverMessageClass = 'app-grid-cell secondary-cell approver-message';\r\n\tconst userId = useSelector(selectUserId);\r\n\tconst [ approveRequest, { isLoading: apLoading, data: apData, isError: apError } ] = useApproveRequestMutation();\r\n\tconst [ rejectRequest, { isLoading: rjLoading, data: rjData, isError: rjError } ] = useRejectRequestMutation();\r\n\r\n\t\r\n\tif (apError || rjError) return (\r\n\t\t
\r\n\t\t\t

{t('errorMessageShort')}

\r\n\t\t
\r\n\t);\r\n\r\n\t\r\n\tif (firstApprover && firstApprover.uid === userId) return (\r\n\t\t
\r\n\t\t\t

{t('gridMessages.waiting')}

\r\n\t\t
\r\n\t);\r\n\r\n\r\n\tif (secondApprover && secondApprover.uid === userId) return (\r\n\t\t
\r\n\t\t\t

{t('gridMessages.waiting')}

\r\n\t\t
\r\n\t);\r\n\r\n\r\n\tif (apData && apData.success === false && apData.message) return (\r\n\t\t
\r\n\t\t\t

{apData.message ?? t('errorMessageShort')}

\r\n\t\t
\r\n\t);\r\n\r\n\r\n\tif (rjData && rjData.success === false && rjData.message) return (\r\n\t\t
\r\n\t\t\t

{rjData.message ?? t('errorMessageShort')}

\r\n\t\t
\r\n\t);\r\n\r\n\t\r\n\treturn (\r\n\t\t
\r\n\t\t\t (apLoading || rjLoading) ? {} : approveRequest(id)} />\r\n\r\n\t\t\t (apLoading || rjLoading) ? {} : rejectRequest(id)} />\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default RequestButtons;","import { useCallback, memo } from 'react';\r\nimport { Airport, AirportRequest } from 'types/Airport';\r\nimport { SettingsType, CellPropertiesType, getRequestCellClassName } from 'components/global/GridElements';\r\nimport RequestButtons from 'components/admin-page/airports-grid/RequestButtons';\r\n\r\n\r\ninterface GridRowRequestProps {\r\n\tairport: AirportRequest,\r\n\tchangedProperties: Array\r\n}\r\n \r\n\r\nconst GridRowRequest = (props: GridRowRequestProps): JSX.Element => {\r\n\tconst { airport, changedProperties } = props;\r\n\tconst { icao, name, currency } = props.airport;\r\n\r\n\tconst getClassName = useCallback((cellProperties: CellPropertiesType, settings?: SettingsType) => \r\n\t\tgetRequestCellClassName({ changedProperties, primary: false, cellProperties, settings })\r\n\t,[ changedProperties ]);\r\n\r\n\t\r\n\treturn (\r\n\t\t<>\r\n\t\t\t
\r\n\t\t\t\t

{icao}

\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t

{name}

\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t

{currency}

\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default memo(GridRowRequest);","import { Airport, AirportRequest } from 'types/Airport';\r\nimport { GpsPoint } from 'types/GpsPoint';\r\nimport { hasOwnPropertyTS } from 'utils/typescriptGuards';\r\n\r\n\r\nexport const gpsPointsToString = (gpsPoints: GpsPoint[] | null | undefined) => {\r\n\tif (!gpsPoints) return '';\r\n\treturn gpsPoints.reduce((acc, value, index) => {\r\n\t\tacc.push(

{`${value.latitude}N`}

);\r\n\t\tacc.push(

{`${value.longitude}E`}

);\r\n\t\treturn acc;\r\n\t}, [] as JSX.Element[]);\r\n};\r\n\r\n\r\nexport const getChangedProperties = (airport: Airport | undefined | null, airportRequest: AirportRequest | undefined | null) => {\r\n\tlet emptyArray: Array = [];\r\n\tif (!airport || !airportRequest) return emptyArray;\r\n\r\n\tconst filledArray = Object.keys(airport).reduce((acc, property) => {\r\n\t\tlet firstValue = hasOwnPropertyTS(airport, property) ? airport[property] : null;\r\n\t\tlet secondValue = hasOwnPropertyTS(airportRequest, property) ? airportRequest[property] : null;\r\n\r\n\t\tif (firstValue !== null && secondValue !== null && firstValue !== secondValue) {\r\n\t\t\tacc.push(property as keyof Airport);\r\n\t\t}\r\n\t\treturn acc;\r\n\t},emptyArray);\r\n\r\n\treturn filledArray;\r\n}","import { useEffect, Fragment } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useSelector } from \"react-redux\";\r\nimport { useNavigate } from \"react-router-dom\";\r\nimport { useLazyGetUserAirportsQuery } from 'utils/api/airports';\r\nimport { AppRoutesEnum } from 'components/global/routing/routesEnum';\r\nimport { selectUserId } from \"store/globalSelectors\";\r\nimport GridHeader from 'components/admin-page/airports-grid/GridHeader';\r\nimport GridRow from 'components/admin-page/airports-grid/GridRow';\r\nimport GridRowRequest from 'components/admin-page/airports-grid/GridRowRequest';\r\nimport { GridLoading, GridError } from 'components/global/GridElements';\r\nimport { GridNewRecord } from 'components/global/GridButtons';\r\nimport { getChangedProperties } from 'components/admin-page/airports-grid/utils';\r\n//import { fakeUserAirports } from 'utils/fake-data/userAirports';\r\n\r\n\r\nconst Grid = (): JSX.Element => {\r\n\tconst { t } = useTranslation('adminPage');\r\n\r\n\tconst userId = useSelector(selectUserId);\r\n\tconst navigate = useNavigate();\r\n\tconst [ getAirports, { isLoading, isSuccess, data, isError }] = useLazyGetUserAirportsQuery();\r\n\r\n\t\r\n\tuseEffect(() => {\r\n\t\tif (userId !== '')\r\n\t\t\tgetAirports(userId);\r\n\t}, [ userId ]);\r\n\r\n\r\n\tif (isLoading) return (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n\r\n\tif (isError) return (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t{isSuccess && data && data.map(x => /*fakeUserAirports.map(x =>*/\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t{x.changeRequest &&\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t)}\r\n\r\n\t\t\t navigate(`/${AppRoutesEnum.assignAirport}`)}/>\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default Grid;","import { useTranslation } from 'react-i18next';\r\nimport { useSelector } from \"react-redux\";\r\nimport { selectUserMode } from \"store/globalSelectors\";\r\nimport { UserModeEnum } from 'types/enums';\r\nimport pilotHatIcon from 'images/pilot-hat.svg';\r\nimport smallPlaneIcon from 'images/small-plane.svg';\r\nimport airportIcon from 'images/airport.svg';\r\nimport { GridLabel } from 'components/global/GridElements';\r\nimport PilotGrid from 'components/admin-page/pilot-grid/Grid';\r\nimport PlanesGrid from 'components/admin-page/planes-grid/Grid';\r\nimport AirportsGrid from 'components/admin-page/airports-grid/Grid';\r\n\r\n\r\nconst AdminPage = (): JSX.Element => {\r\n\tconst { t } = useTranslation('adminPage');\r\n\tconst userMode = useSelector(selectUserMode);\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t\t\t\r\n\t\t\t

{userMode === UserModeEnum.pilot ? t('headerPilot') : t('headerAdmin')}

\r\n\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\r\n\t\t
\r\n\t)\r\n};\r\n\r\nexport default AdminPage;","import { createSelector } from '@reduxjs/toolkit';\r\nimport { RootState } from 'store';\r\nimport { Airport } from 'types/Airport';\r\nimport { Plane } from 'types/Plane';\r\n\r\n\r\nexport const selectGps = (state: RootState) => state.pilotHome.gps;\r\nexport const selectAirport = (state: RootState) => state.pilotHome.airport;\r\nexport const selectPlane = (state: RootState) => state.pilotHome.plane;\r\nexport const selectCompany = (state: RootState) => state.pilotHome.company;\r\nexport const selectDate = (state: RootState) => state.pilotHome.date;\r\n\r\n\r\nexport const selectDisableConfirmButton = createSelector(\r\n\t[\r\n\t\tselectAirport,\r\n\t\tselectPlane,\r\n\t],(\r\n\t\tairport: Airport | null,\r\n\t\tplane: Plane | null,\r\n\t) => {\r\n\t\tif (!airport || !plane) return true;\r\n\t\treturn false;\r\n});\r\n\r\n\r\nexport const selectValidSendingObject = createSelector(\r\n\t[\r\n\t\tselectAirport,\r\n\t\tselectPlane,\r\n\t\tselectDate\r\n\t],(\r\n\t\tairport: Airport | null,\r\n\t\tplane: Plane | null,\r\n\t\tdate: string\r\n\t) => {\r\n\t\tif (!airport || !plane) return null;\r\n\t\treturn { icao: airport.icao, imatriculation: plane.imatriculation, paymentDate: date };\r\n});","import { baseApi } from 'utils/api/baseApi';\r\nimport { PricingItem, PricingItemRequest } from 'types/PricingItem';\r\nimport { PricingItemConfiguration } from 'types/PricingItemConfiguration';\r\n\r\n\r\nconst pricingsApi = baseApi.injectEndpoints({\r\n\toverrideExisting: false,\r\n\tendpoints: (builder) => ({\r\n\r\n\t\tgetPricingsByIcao: builder.query({\r\n\t\t\tquery: (icao) => ({\r\n\t\t\t\turl: 'PricingItem/GetPricingsByIcao',\r\n\t\t\t\tparams: { icao },\r\n\t\t\t}),\r\n\t\t\tprovidesTags: ['Pricings']\r\n\t\t}),\r\n\r\n\t\tgetValidPricingItems: builder.query({\r\n\t\t\tquery: ({ icao, imatriculation, paymentDate }) => ({\r\n\t\t\t\turl: 'PricingItem/GetValidPricingItemsByIcao',\r\n\t\t\t\tparams: { icao, imatriculation, paymentDate },\r\n\t\t\t}),\r\n\t\t}),\r\n\r\n\t\tgetPricingConfiguration: builder.query({\r\n\t\t\tquery: () => 'PricingItem/GetPricingConfiguration'\r\n\t\t}),\r\n\r\n\t\tstartEditPricingItem: builder.query({\r\n\t\t\tquery: (id) => ({\r\n\t\t\t\turl: 'PricingItem/StartEdit',\r\n\t\t\t\tparams: { id },\r\n\t\t\t}),\r\n\t\t\tkeepUnusedDataFor: 0,\r\n\t\t}),\r\n\r\n\t\tcancelEditPricingItem: builder.query({\r\n\t\t\tquery: (id) => ({\r\n\t\t\t\turl: 'PricingItem/CancelEdit',\r\n\t\t\t\tparams: { id },\r\n\t\t\t}),\r\n\t\t\tkeepUnusedDataFor: 0,\r\n\t\t}),\r\n\r\n\t\tsaveEditPricingItem: builder.query({\r\n\t\t\tquery: (id) => ({\r\n\t\t\t\turl: 'PricingItem/SaveEdit',\r\n\t\t\t\tparams: { id },\r\n\t\t\t}),\r\n\t\t\tkeepUnusedDataFor: 0,\r\n\t\t}),\r\n\r\n\t\tsavePricingItemRequest: builder.mutation({\r\n\t\t\tquery: (request) => ({\r\n\t\t\t\turl: 'PricingItem/Save',\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\tbody: request,\r\n\t\t\t}),\r\n\t\t\tinvalidatesTags: ['Pricings']\r\n\t\t}),\r\n\r\n\t\tdeletePricingItem: builder.mutation({\r\n\t\t\tquery: (id) => ({\r\n\t\t\t\turl: 'PricingItem/DeletePricingItem',\r\n\t\t\t\tparams: { id },\r\n\t\t\t}),\r\n\t\t\tinvalidatesTags: ['Pricings']\r\n\t\t}),\r\n\r\n\t\tapprovePricingItemRequest: builder.mutation({\r\n\t\t\tquery: (id) => ({\r\n\t\t\t\turl: 'PricingItem/Approve',\r\n\t\t\t\tparams: { id },\r\n\t\t\t}),\r\n\t\t\tinvalidatesTags: ['Pricings']\r\n\t\t}),\r\n\r\n\t\trejectPricingItemRequest: builder.mutation({\r\n\t\t\tquery: (id) => ({\r\n\t\t\t\turl: 'PricingItem/Reject',\r\n\t\t\t\tparams: { id },\r\n\t\t\t}),\r\n\t\t\tinvalidatesTags: ['Pricings']\r\n\t\t}),\r\n\t}),\r\n});\r\n\r\n\r\nexport const {\r\n\tuseLazyGetPricingsByIcaoQuery,\r\n\tuseLazyGetValidPricingItemsQuery,\r\n\tuseGetPricingConfigurationQuery,\r\n\tuseLazyStartEditPricingItemQuery,\r\n\tuseLazyCancelEditPricingItemQuery,\r\n\tuseLazySaveEditPricingItemQuery,\r\n\tuseSavePricingItemRequestMutation,\r\n\tuseDeletePricingItemMutation,\r\n\tuseApprovePricingItemRequestMutation,\r\n\tuseRejectPricingItemRequestMutation } = pricingsApi;","import { useState, useCallback, useEffect } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Form, InputGroup } from 'react-bootstrap';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faSatellite } from \"@fortawesome/free-solid-svg-icons/faSatellite\";\r\nimport { GpsPoint } from 'types/GpsPoint';\r\nimport { setGps } from 'components/pilot-home/PilotHomeStore';\r\nimport { selectGps } from 'components/pilot-home/PilotHomeSelectors';\r\n\r\n\r\nconst GpsInput = (): JSX.Element => {\r\n\tconst { t } = useTranslation('pilotHome');\r\n\r\n\tconst property = useSelector(selectGps);\r\n\tconst dispatch = useDispatch();\r\n\tconst updateProperty = (value: GpsPoint) => dispatch(setGps(value));\r\n\tconst [ invalidGps, setInvalidGps ] = useState('');\r\n\r\n\r\n\tuseEffect(() => {\r\n\t\tsetCurrentPosition();\r\n\t}, []);\r\n\r\n\r\n\tconst setCurrentPosition = useCallback(() => {\r\n\t\twindow.isSecureContext && 'geolocation' in navigator\r\n\t\t? navigator.geolocation.getCurrentPosition(handleSuccess, handleError)\r\n\t\t: setInvalidGps(t('gps.invalidMessage') ?? 'default');\r\n\t},[]);\r\n\r\n\t\r\n\tconst handleSuccess = useCallback((position: GeolocationPosition) => {\r\n\t\tupdateProperty({ latitude: position.coords.latitude, longitude: position.coords.longitude });\r\n\t},[]);\r\n\r\n\r\n\tconst handleError = useCallback((err: GeolocationPositionError) => {\r\n\t\tswitch (err.code) {\r\n\t\t\tcase 1: return setInvalidGps(t('gps.invalidCode1') ?? 'default');\r\n\t\t\tcase 2: return setInvalidGps(t('gps.invalidCode2') ?? 'default');\r\n\t\t\tcase 3: return setInvalidGps(t('gps.invalidCode3') ?? 'default');\r\n\t\t\tdefault: {\r\n\t\t\t\tsetInvalidGps(err.message);\r\n\t\t\t\tconsole.error(`error code: ${err.code}, error message: ${err.message}`);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t};\r\n\t},[]);\r\n\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{t('gps.label')}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t {}} />\r\n\r\n\t\t\t\t\r\n\t\t\t\t\t{invalidGps}\r\n\t\t\t\t\r\n\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\r\n\t\t\t\r\n\t\t\r\n\t)\r\n};\r\n\r\nexport default GpsInput;","import { createSelector } from '@reduxjs/toolkit';\r\nimport { RootState } from 'store';\r\n\r\n\r\n//BASE SELECTORS\r\nexport const selectGlobalAirport = (state: RootState) => state.persist.globalAirport;\r\n\r\n\r\n//CUSTOM SELECTORS","import { useEffect } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport Select from 'react-select';\r\nimport { Airport } from 'types/Airport';\r\nimport { setGlobalAirport } from \"store/persistStore\";\r\nimport { selectGlobalAirport } from \"store/persistSelectors\";\r\nimport { setAirport } from 'components/pilot-home/PilotHomeStore';\r\nimport { selectAirport, selectGps } from 'components/pilot-home/PilotHomeSelectors';\r\nimport { useLazyGetSortedAirportsByGpsQuery, useGetAllAirportsQuery } from 'utils/api/airports';\r\n\r\n\r\nconst AirportInput = (): JSX.Element => {\r\n\tconst { t } = useTranslation('global');\r\n\r\n\tconst property = useSelector(selectAirport);\r\n\tconst globalAirport = useSelector(selectGlobalAirport);\r\n\tconst gps = useSelector(selectGps);\r\n\tconst saveGlobalAirport = (airport: Airport) => dispatch(setGlobalAirport(airport));\r\n\t\r\n\tconst dispatch = useDispatch();\r\n\tconst updateProperty = (value: Airport | null) => dispatch(setAirport(value));\r\n\tconst [ runQuery, { data: sortedAirports, isError: sortedError } ] = useLazyGetSortedAirportsByGpsQuery();\r\n\tconst { data: notSortedAirports, isError: notSortedError } = useGetAllAirportsQuery();\r\n\r\n\tconst setPropertyAndGlobalAirport = (airport: Airport) => {\r\n\t\tupdateProperty(airport);\r\n\t\tsaveGlobalAirport(airport);\r\n\t};\r\n\r\n\t\r\n\tuseEffect(() => {\r\n\t\tif (globalAirport)\r\n\t\t\tupdateProperty(globalAirport);\r\n\t}, [ globalAirport ]);\r\n\r\n\t\r\n\tuseEffect(() => {\r\n\t\tif (gps) runQuery(gps);\r\n\t}, [ gps ]);\r\n\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!sortedAirports) return;\r\n\t\tconst exactMatch = sortedAirports.find(x => x.exactMatch === true);\r\n\t\tif (exactMatch)\r\n\t\t\tsetPropertyAndGlobalAirport(exactMatch);\r\n\t}, [ sortedAirports ]);\r\n\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t{t('appMenu.airportsSelect.label')} *\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t\tname=\"airport\"\r\n\t\t\t\tclassName=\"app-form-style app-form-react-select\"\r\n\t\t\t\tclassNamePrefix=\"app-select\"\r\n\t\t\t\tvalue={property ? { value: property.icao, label: `${property.icao} - ${property.name}` } : undefined}\r\n\t\t\t\tplaceholder={t('appMenu.airportsSelect.hiddenOption')}\r\n\t\t\t\tnoOptionsMessage={() => {\r\n\t\t\t\t\tif (notSortedError || sortedError)\r\n\t\t\t\t\t\treturn t('appMenu.airportsSelect.invalidMessage')\r\n\t\t\t\t\treturn t('appMenu.airportsSelect.loadingMessage')\r\n\t\t\t\t}}\r\n\t\t\t\tonChange={(newValue) => {\r\n\t\t\t\t\tif (gps && sortedAirports && newValue) {\r\n\t\t\t\t\t\tconst searchAirport = sortedAirports.find(x => x.icao === newValue.value);\r\n\t\t\t\t\t\tif (searchAirport) setPropertyAndGlobalAirport(searchAirport);\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (!gps && notSortedAirports && newValue) {\r\n\t\t\t\t\t\tconst searchAirport = notSortedAirports.find(x => x.icao === newValue.value);\r\n\t\t\t\t\t\tif (searchAirport) setPropertyAndGlobalAirport(searchAirport);\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t}}\r\n\t\t\t\toptions={gps && sortedAirports\r\n\t\t\t\t\t? sortedAirports.map(x => ({ value: x.icao, label: `${x.icao} - ${x.name}` }))\r\n\t\t\t\t\t: !gps && notSortedAirports\r\n\t\t\t\t\t? notSortedAirports.map(x => ({ value: x.icao, label: `${x.icao} - ${x.name}` }))\r\n\t\t\t\t\t: undefined}\r\n\t\t\t\t/>\r\n\t\t
\r\n\t)\r\n};\r\n\r\nexport default AirportInput;","import { useEffect } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport Select from 'react-select';\r\nimport { Plane } from 'types/Plane';\r\nimport { useGetAllUserPlanesQuery } from 'utils/api/planes';\r\nimport { setPlane } from 'components/pilot-home/PilotHomeStore';\r\nimport { selectPlane } from 'components/pilot-home/PilotHomeSelectors';\r\n\r\n\r\nconst PlaneInput = (): JSX.Element => {\r\n\tconst { t } = useTranslation('pilotHome');\r\n\r\n\tconst property = useSelector(selectPlane);\r\n\tconst dispatch = useDispatch();\r\n\tconst updateProperty = (value: Plane) => dispatch(setPlane(value));\r\n\tconst { data: allPlanes, isError } = useGetAllUserPlanesQuery();\r\n\r\n\tuseEffect(() => {\r\n\t\tif (allPlanes && allPlanes.length === 1)\r\n\t\t\tupdateProperty(allPlanes[0]);\r\n\t}, [ allPlanes ]);\r\n\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t{t('plane.label')} *\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t\tname=\"pilot-company\"\r\n\t\t\t\tclassName=\"app-form-style app-form-react-select\"\r\n\t\t\t\tclassNamePrefix=\"app-select\"\r\n\t\t\t\tvalue={property ? { value: property.imatriculation, label: `${property.imatriculation} - ${property.planeName}` } : undefined}\r\n\t\t\t\tplaceholder={t('plane.hiddenOption')}\r\n\t\t\t\tnoOptionsMessage={() => {\r\n\t\t\t\t\tif (isError)\r\n\t\t\t\t\t\treturn t('plane.invalidMessage')\r\n\t\t\t\t\treturn t('plane.loadingMessage')\r\n\t\t\t\t}}\r\n\t\t\t\tonChange={(newValue) => {\r\n\t\t\t\t\tif (allPlanes && newValue) {\r\n\t\t\t\t\t\tconst searchPlane = allPlanes.find(x => x.imatriculation === newValue.value);\r\n\t\t\t\t\t\tif (searchPlane) updateProperty(searchPlane);\r\n\t\t\t\t\t}\r\n\t\t\t\t}}\r\n\t\t\t\toptions={allPlanes\r\n\t\t\t\t\t? allPlanes.map(x => ({ value: x.imatriculation, label: `${x.imatriculation} - ${x.planeName}` }))\r\n\t\t\t\t\t: undefined}\r\n\t\t\t\t/>\r\n\t\t
\r\n\t)\r\n};\r\n\r\nexport default PlaneInput;","import { useEffect } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport Select from 'react-select';\r\nimport { PilotBusinessEntity } from 'types/PilotBusinessEntity';\r\nimport { setCompany } from 'components/pilot-home/PilotHomeStore';\r\nimport { selectCompany } from 'components/pilot-home/PilotHomeSelectors';\r\n\r\n\r\ninterface CompanyInputProps {\r\n\tallCompanies: PilotBusinessEntity[]\r\n}\r\n\r\n\r\nconst CompanyInput = (props: CompanyInputProps): JSX.Element => {\r\n\tconst { allCompanies } = props;\r\n\tconst { t } = useTranslation('pilotHome');\r\n\r\n\tconst property = useSelector(selectCompany);\r\n\tconst dispatch = useDispatch();\r\n\tconst updateProperty = (value: PilotBusinessEntity | null) => dispatch(setCompany(value));\r\n\r\n\tuseEffect(() => {\r\n\t\tif (allCompanies && allCompanies.length === 1) {\r\n\t\t\tconst defaultCompany = allCompanies.find(x => x.isDefault === true);\r\n\t\t\tif (defaultCompany) updateProperty(defaultCompany);\r\n\t\t}\r\n\t}, [ allCompanies ]);\r\n\t\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t{t('company.label')}\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t\tname=\"pilot-company\"\r\n\t\t\t\tclassName=\"app-form-style app-form-react-select\"\r\n\t\t\t\tclassNamePrefix=\"app-select\"\r\n\t\t\t\tvalue={property ? { value: property.id, label: property.bussinessName } : undefined}\r\n\t\t\t\tdefaultValue={{ value: 0, label: `${t('company.defaultOption')}` }}\r\n\t\t\t\tnoOptionsMessage={() => {\r\n\t\t\t\t\tif (!allCompanies)\r\n\t\t\t\t\t\treturn t('company.invalidMessage')\r\n\t\t\t\t\treturn t('company.loadingMessage')\r\n\t\t\t\t}}\r\n\t\t\t\tonChange={(newValue) => {\r\n\t\t\t\t\tif (newValue && newValue.value === 0) {\r\n\t\t\t\t\t\tupdateProperty(null);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (allCompanies && newValue && newValue.value !== 0) {\r\n\t\t\t\t\t\tconst searchCompany = allCompanies.find(x => x.id === newValue.value);\r\n\t\t\t\t\t\tif (searchCompany) updateProperty(searchCompany);\r\n\t\t\t\t\t}\r\n\t\t\t\t}}\r\n\t\t\t\toptions={allCompanies\r\n\t\t\t\t\t? [\r\n\t\t\t\t\t\t{ value: 0, label: `${t('company.defaultOption')}` },\r\n\t\t\t\t\t\t...allCompanies.map(x => ({ value: x.id, label: x.bussinessName }))\r\n\t\t\t\t\t]\r\n\t\t\t\t\t: undefined}\r\n\t\t\t\t/>\r\n\t\t
\r\n\t)\r\n};\r\n\r\nexport default CompanyInput;","import { useRef } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport DatePicker from 'react-datepicker';\r\nimport { Form, InputGroup } from 'react-bootstrap';\r\nimport { getLocaleObject, getDateFormat } from 'translations/index';\r\nimport parseISO from 'date-fns/parseISO';\r\nimport { setDate } from 'components/pilot-home/PilotHomeStore';\r\nimport { selectDate } from 'components/pilot-home/PilotHomeSelectors';\r\nimport formatISO from 'date-fns/formatISO';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faCalendarDay } from \"@fortawesome/free-solid-svg-icons/faCalendarDay\";\r\n\r\n\r\nconst DateInput = (): JSX.Element => {\r\n\tconst { t } = useTranslation('pilotHome');\r\n\t\r\n\tconst property = useSelector(selectDate);\r\n\tconst dispatch = useDispatch();\r\n\tconst updateProperty = (value: string) => dispatch(setDate(value));\r\n\tconst formRef = useRef(null);\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{t('date.label')}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t {\r\n\t\t\t\t\t\tif (date instanceof Date && !Number.isNaN(date.valueOf()))\r\n\t\t\t\t\t\t\tupdateProperty(formatISO(date));\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tautoComplete='off'\r\n\t\t\t\t\tlocale={getLocaleObject()}\r\n\t\t\t\t\tdateFormat={getDateFormat()}\r\n\t\t\t\t\tminDate={new Date()}/>\r\n\t\t\t\t\r\n\t\t\t\t formRef.current?.setOpen(true)}>\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default DateInput;","import { useTranslation } from 'react-i18next';\r\nimport { useGetPilotQuery } from 'utils/api/user';\r\nimport GpsInput from 'components/pilot-home/home-form/GpsInput';\r\nimport AirportInput from 'components/pilot-home/home-form/AirportInput';\r\nimport PlaneInput from 'components/pilot-home/home-form/PlaneInput';\r\nimport CompanyInput from 'components/pilot-home/home-form/CompanyInput';\r\nimport DateInput from 'components/pilot-home/home-form/DateInput';\r\n\r\n\r\nconst HomeForm = (): JSX.Element => {\r\n\tconst { t } = useTranslation('global');\r\n\r\n\tconst { isError, isSuccess, companies } = useGetPilotQuery(undefined, {\r\n\t\tselectFromResult: ({ isError, data, isSuccess }) => ({\r\n\t\t\tisError: isError,\r\n\t\t\tisSuccess: isSuccess,\r\n\t\t\tcompanies: data?.pilotBusinessEntityItems\r\n\t\t})\r\n\t});\r\n\r\n\treturn (\r\n\t\t
\r\n\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t{isSuccess && companies && companies.length > 0 &&\r\n\t\t\t\t}\r\n\r\n\t\t\t{isError &&\r\n\t\t\t\t

{t('errorMessage')}

}\r\n\r\n\t\t\t\r\n\r\n\t\t
\r\n\t)\r\n};\r\n\r\nexport default HomeForm;","import { useCallback } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { useNavigate } from \"react-router-dom\";\r\nimport { selectDisableConfirmButton, selectAirport, selectValidSendingObject, selectCompany } from 'components/pilot-home/PilotHomeSelectors';\r\nimport { useLazyGetValidPricingItemsQuery } from 'utils/api/pricings';\r\nimport { AppRoutesEnum } from 'components/global/routing/routesEnum';\r\nimport { initCartItems, CartInitData } from 'components/cart/CartStore';\r\nimport { FormConfirmButton } from 'components/global/FormButtons';\r\nimport HomeForm from 'components/pilot-home/home-form/HomeForm';\r\n//import { fakeValidPricingItems } from 'utils/fake-data/validPricingItems';\r\n\r\n\r\nconst PilotHomePage = (): JSX.Element => {\r\n\tconst { t } = useTranslation([ 'pilotHome', 'global' ]);\r\n\r\n\tconst disableButton = useSelector(selectDisableConfirmButton);\r\n\tconst airport = useSelector(selectAirport);\r\n\tconst company = useSelector(selectCompany);\r\n\tconst validSendingObject = useSelector(selectValidSendingObject);\r\n\r\n\tconst navigate = useNavigate();\r\n\tconst dispatch = useDispatch();\r\n\tconst [ getPricingItems, { data, isLoading, isError, isSuccess } ] = useLazyGetValidPricingItemsQuery();\r\n\r\n\r\n\tconst handleConfirm = useCallback(async() => {\r\n\t\tif (!validSendingObject || !airport) return;\r\n\t\tconst pricingItems = await getPricingItems(validSendingObject).unwrap();\r\n\t\tif (pricingItems) {\r\n\t\t\tconst initData: CartInitData = {\r\n\t\t\t\tselectedAirport: airport,\r\n\t\t\t\timatriculation: validSendingObject.imatriculation,\r\n\t\t\t\tbusinessEntityId: company ? company.id : null,\r\n\t\t\t\trequestedDate: validSendingObject.paymentDate,\r\n\t\t\t\tallValidPricings: pricingItems /*fakeValidPricingItems*/\r\n\t\t\t};\r\n\t\t\tdispatch(initCartItems(initData));\r\n\t\t\tnavigate(`/${AppRoutesEnum.cart}`);\r\n\t\t};\r\n\t},[ validSendingObject, airport, company ]);\r\n\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t

{t('header')}

\r\n\r\n\t\t\t\r\n\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t{isError &&\r\n\t\t\t\t\t

{t('global:errorMessage')}

}\r\n\r\n\t\t\t\t{isSuccess && data && data.length === 0 &&\r\n\t\t\t\t\t

{t('noRecords')}

}\r\n\r\n\t\t\t\t isLoading ? {} : handleConfirm()} />\r\n\t\t\t
\r\n\t\t\r\n\t\t
\r\n\t)\r\n};\r\n\r\nexport default PilotHomePage;","import { ReactNode } from 'react';\r\nimport { Navigate } from 'react-router-dom';\r\nimport { UserModeEnum } from 'types/enums';\r\nimport { AppRoutesEnum } from 'components/global/routing/routesEnum';\r\nimport LoadingPage from 'components/global/base-pages/LoadingPage';\r\nimport LoadingDetail from 'components/global/base-pages/LoadingDetail';\r\nimport ErrorDetail from 'components/global/base-pages/ErrorDetail';\r\nimport RegistrationPage from 'components/registration/RegistrationPage';\r\nimport AdminPage from 'components/admin-page/AdminPage';\r\nimport PilotHomePage from 'components/pilot-home/PilotHomePage';\r\n\r\n\r\nexport const checkAuth = (auth: boolean, element: ReactNode) => {\r\n\tif (!auth) return ;\r\n\treturn element;\r\n};\r\n\r\n\r\nexport const checkIndex = (auth: boolean, mode: UserModeEnum) => {\r\n\tif (!auth) return ;\r\n\tif (mode === UserModeEnum.waiting) return ;\r\n\tif (mode === UserModeEnum.error) return ;\r\n\tif (mode === UserModeEnum.unregistered) return ;\r\n\tif (mode === UserModeEnum.administrator) return ;\r\n\tif (mode === UserModeEnum.pilot) return ;\r\n\treturn ;\r\n};\r\n\r\n\r\nexport const checkUnregAdminPilot = (auth: boolean, mode: UserModeEnum, element: ReactNode) => {\r\n\tif (!auth) return ;\r\n\tif (mode === UserModeEnum.waiting) return ;\r\n\tif (mode === UserModeEnum.error) return ;\r\n\tif (mode === UserModeEnum.unregistered) return element;\r\n\tif (mode === UserModeEnum.administrator) return element;\r\n\tif (mode === UserModeEnum.pilot) return element;\r\n\treturn ;\r\n};\r\n\r\n\r\nexport const checkAdminPilot = (auth: boolean, mode: UserModeEnum, element: ReactNode) => {\r\n\tif (!auth) return ;\r\n\tif (mode === UserModeEnum.waiting) return ;\r\n\tif (mode === UserModeEnum.error) return ;\r\n\tif (mode === UserModeEnum.unregistered) return ;\r\n\tif (mode === UserModeEnum.administrator) return element;\r\n\tif (mode === UserModeEnum.pilot) return element;\r\n\treturn ;\r\n};\r\n\r\n\r\nexport const checkPilot = (auth: boolean, mode: UserModeEnum, element: ReactNode) => {\r\n\tif (!auth) return ;\r\n\tif (mode === UserModeEnum.waiting) return ;\r\n\tif (mode === UserModeEnum.error) return ;\r\n\tif (mode === UserModeEnum.unregistered) return ;\r\n\tif (mode === UserModeEnum.administrator) return ;\r\n\tif (mode === UserModeEnum.pilot) return element;\r\n\treturn ;\r\n};","import { useTranslation } from 'react-i18next';\r\nimport { PageInfo } from 'components/global/PageElements';\r\n\r\n\r\nconst NotFoundPage = (): JSX.Element => {\r\n\tconst { t } = useTranslation('global');\r\n\t\r\n\treturn (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t
\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t

{t('notFound.header')}

\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\r\n\t\t\t
\r\n\r\n\t\t
\r\n\t)\r\n};\r\n\r\nexport default NotFoundPage;","import { Nav } from 'react-bootstrap';\r\n\r\n\r\ninterface AppMenuItemProps {\r\n\titemLabel: string,\r\n\tonClick: () => void\r\n}\r\n\r\n\r\nconst AppMenuItem = (props: AppMenuItemProps): JSX.Element => {\r\n\tconst { itemLabel, onClick } = props;\r\n\r\n\treturn (\r\n\t\t\t\r\n\t\t\t{itemLabel}\r\n\t\t\r\n\t);\r\n}\r\n\r\nexport default AppMenuItem;","import { useCallback } from 'react';\r\nimport { msalInstance } from 'components/global/authentication/msalInstance';\r\nimport { loginRequest } from 'components/global/authentication/authConfig';\r\nimport { InteractionRequiredAuthError } from '@azure/msal-browser';\r\n\r\n\r\n\r\nconst useAuth = () => {\r\n\r\n\tconst handleLogin = useCallback(() => {\r\n\t\tmsalInstance.loginRedirect(loginRequest)\r\n\t\t\t.catch((reason: unknown) => console.error(reason));\r\n\t},[]);\r\n\r\n\r\n\tconst handleLogout = useCallback(() => {\r\n\t\tmsalInstance.logoutRedirect()\r\n\t\t\t.catch((reason: unknown) => console.error(reason));\r\n\t},[]);\r\n\r\n\r\n\tconst isAuthenticated = useCallback(() => {\r\n\t\tconst accounts = msalInstance.getAllAccounts();\r\n\t\tif (accounts.length > 0) return true;\r\n\t\treturn false;\r\n\t},[]);\r\n\r\n\r\n\tconst getAuthToken = useCallback(async() => {\r\n\t\tconst account = msalInstance.getActiveAccount();\r\n\t\tif (account) {\r\n\t\t\tconst loginRequestObject = { ...loginRequest, account: account };\r\n\r\n\t\t\tconst authResult = await msalInstance.acquireTokenSilent(loginRequestObject).catch(error => {\r\n\t\t\t\tif (error instanceof InteractionRequiredAuthError) {\r\n\t\t\t\t\treturn msalInstance.acquireTokenRedirect(loginRequestObject);\r\n\t\t\t\t};\r\n\t\t\t\tconsole.error(error);\r\n\t\t\t});\r\n\r\n\t\t\tif (authResult) return authResult.accessToken;\r\n\t\t};\r\n\r\n\t\treturn '';\r\n\t},[]);\r\n\r\n\r\n\treturn [ handleLogin, handleLogout, isAuthenticated, getAuthToken ] as const;\r\n}\r\n\r\nexport default useAuth;","import { useEffect } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { useSearchParams } from 'react-router-dom';\r\nimport Select from 'react-select';\r\nimport { Airport } from 'types/Airport';\r\nimport { setGlobalAirport } from \"store/persistStore\";\r\nimport { selectGlobalAirport } from \"store/persistSelectors\";\r\nimport { useGetAllAirportsQuery } from 'utils/api/airports';\r\nimport selectIcon from 'images/icon-select-airports.svg';\r\n\r\n\r\nconst AirportsSelect = (): JSX.Element => {\r\n\tconst { t } = useTranslation('global');\r\n\t\r\n\tconst globalAirport = useSelector(selectGlobalAirport);\r\n\tlet [ searchParams, setSearchParams ] = useSearchParams();\r\n\tconst icaoParam = searchParams.get('airport');\r\n\r\n\tconst { data: allAirports, isError } = useGetAllAirportsQuery();\r\n\tconst dispatch = useDispatch();\r\n\tconst saveGlobalAirport = (airport: Airport) => dispatch(setGlobalAirport(airport));\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!allAirports || !icaoParam || icaoParam.length === 0)\r\n\t\t\treturn;\r\n\t\t\r\n\t\tconst paramsAirport = allAirports.find(x => x.icao === icaoParam.toUpperCase());\r\n\t\tif (!paramsAirport)\r\n\t\t\treturn;\r\n\r\n\t\tsaveGlobalAirport(paramsAirport);\r\n\t\tsearchParams.delete('airport');\r\n\t\tsetSearchParams(searchParams);\r\n\t}, [ allAirports, icaoParam, searchParams ]);\r\n\r\n\t\r\n\treturn (\r\n\t\t
\r\n\t\t\t\t\r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t\t\tname=\"airports-select\"\r\n\t\t\t\tclassName={`app-form-style app-form-react-select${isError ? \" is-invalid\" : \"\"}`}\r\n\t\t\t\tclassNamePrefix=\"app-select\"\r\n\t\t\t\tvalue={globalAirport ? { value: globalAirport.icao, label: `${globalAirport.icao} - ${globalAirport.name}` } : undefined}\r\n\t\t\t\tplaceholder={t('appMenu.airportsSelect.hiddenOption')}\r\n\t\t\t\tnoOptionsMessage={() => {\r\n\t\t\t\t\tif (isError)\r\n\t\t\t\t\t\treturn t('appMenu.airportsSelect.invalidMessage')\r\n\t\t\t\t\treturn t('appMenu.airportsSelect.loadingMessage')\r\n\t\t\t\t}}\r\n\t\t\t\tonChange={(newValue) => {\r\n\t\t\t\t\tif (allAirports && newValue) {\r\n\t\t\t\t\t\tconst searchAirport = allAirports.find(x => x.icao === newValue.value);\r\n\t\t\t\t\t\tif (searchAirport) {\r\n\t\t\t\t\t\t\tsaveGlobalAirport(searchAirport);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}}\r\n\t\t\t\toptions={allAirports\r\n\t\t\t\t\t? allAirports.map(x => ({ value: x.icao, label: `${x.icao} - ${x.name}` }))\r\n\t\t\t\t\t: undefined} />\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default AirportsSelect;","import { useEffect, useState, useRef, useCallback } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useNavigate } from \"react-router-dom\";\r\nimport { AppRoutesEnum } from 'components/global/routing/routesEnum';\r\nimport AppMenuItem from \"components/global/menu/AppMenuItem\";\r\nimport { Container, Nav, Navbar } from \"react-bootstrap\";\r\nimport { selectUser, selectUserMode } from \"store/globalSelectors\";\r\nimport { UserModeEnum } from 'types/enums';\r\nimport { useSelector } from \"react-redux\";\r\nimport useAuth from 'components/global/authentication/useAuth';\r\nimport AirportsSelect from 'components/global/menu/AirportsSelect';\r\nimport brandIcon from 'images/brand.svg';\r\nimport { FormCancelButton } from 'components/global/FormButtons';\r\nimport { useLazyGetIsAdminOnAirportQuery } from 'utils/api/airports';\r\nimport { selectGlobalAirport } from \"store/persistSelectors\";\r\n\r\n\r\nconst AppMenu = (): JSX.Element => {\r\n\tconst { t } = useTranslation('global');\r\n\t\r\n\tconst selectedAirport = useSelector(selectGlobalAirport);\r\n\tconst user = useSelector(selectUser);\r\n\tconst userMode = useSelector(selectUserMode);\r\n\tconst pilotOrAdmin = userMode === UserModeEnum.administrator || userMode === UserModeEnum.pilot;\r\n\tconst navigate = useNavigate();\r\n\tconst [ handleLogin, handleLogout ] = useAuth();\r\n\tconst [ expanded, setExpanded ] = useState(false);\r\n\tconst navbarRef = useRef(null);\r\n\r\n\r\n\tuseEffect(() => {\r\n\t\tdocument.addEventListener(\"mousedown\", clickOutsideListener);\r\n\t\treturn () => {\r\n\t\t\tdocument.removeEventListener(\"mousedown\", clickOutsideListener);\r\n\t\t};\r\n\t}, []);\r\n\r\n\tconst [ isAdminOnAirport, { isSuccess: adSuccess, data: adData } ] = useLazyGetIsAdminOnAirportQuery();\r\n\r\n\t\r\n\tuseEffect(() => {\r\n\t\tif (selectedAirport) isAdminOnAirport(selectedAirport.icao);\r\n\t}, [ selectedAirport ]);\r\n\r\n\r\n\tconst clickOutsideListener = useCallback((event: MouseEvent) => {\r\n\t\tif (navbarRef.current && event.target && !navbarRef.current.contains(event.target as Element)) {\r\n\t\t\tsetExpanded(false);\r\n\t\t}\r\n\t}, [ navbarRef.current ]);\r\n\t \r\n\r\n\treturn (\r\n\t\t setExpanded(false)}\r\n\t\t\tcollapseOnSelect>\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t\"brand-logo\" {\r\n\t\t\t\t\t\tif (expanded) setExpanded(false)\r\n\t\t\t\t\t\tnavigate(AppRoutesEnum.basePath);\r\n\t\t\t\t\t})}/>\r\n\t\t\t\t\t{pilotOrAdmin &&\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t{pilotOrAdmin &&\r\n\t\t\t\t\t\t setExpanded(!expanded)} />}\r\n\r\n\t\t\t\t\t{!pilotOrAdmin &&\r\n\t\t\t\t\t\t user ? handleLogout() : handleLogin()} />}\r\n\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t{pilotOrAdmin &&\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t}\r\n\r\n\t\t\t
\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default AppMenu;","import { Outlet } from \"react-router-dom\";\r\nimport AppMenu from \"components/global/menu/AppMenu\";\r\n\r\n\r\nconst AppLayout = (): JSX.Element => {\r\n\r\n\treturn (\r\n\t\t
\r\n\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\r\n\t\t
\r\n\t);\r\n};\r\n\r\nexport default AppLayout;","import { createSelector } from '@reduxjs/toolkit';\r\nimport { RootState } from 'store';\r\nimport { Pilot } from 'types/Pilot';\r\nimport { isValidPhoneNumber, isEmpty } from 'components/global/utils';\r\n\r\n\r\nexport const selectInitPilot = (state: RootState) => state.pilotPage.initPilot;\r\nexport const selectShowInvalids = (state: RootState) => state.pilotPage.showInvalids;\r\nexport const selectPilotLicenceNumber = (state: RootState) => state.pilotPage.pilotLicenceNumber;\r\nexport const selectStreet = (state: RootState) => state.pilotPage.street;\r\nexport const selectCity = (state: RootState) => state.pilotPage.city;\r\nexport const selectPostalCode = (state: RootState) => state.pilotPage.postalCode;\r\nexport const selectCountry = (state: RootState) => state.pilotPage.country;\r\nexport const selectPhoneNumber = (state: RootState) => state.pilotPage.phoneNumber;\r\n\r\n\r\nexport const selectPilotIsInvalid = createSelector(\r\n\t[\r\n\t\tselectStreet,\r\n\t\tselectCity,\r\n\t\tselectPostalCode,\r\n\t\tselectCountry,\r\n\t\tselectPhoneNumber\r\n\t],(\r\n\t\tstreet: string | null | undefined,\r\n\t\tcity: string | null | undefined,\r\n\t\tpostalCode: string | null | undefined,\r\n\t\tcountry: string | null | undefined,\r\n\t\tphoneNumber: string | null | undefined\r\n\t) => {\r\n\t\tif (isEmpty(street)) return true;\r\n\t\tif (isEmpty(city)) return true;\r\n\t\tif (isEmpty(postalCode)) return true;\r\n\t\tif (isEmpty(country)) return true;\r\n\t\tif (!isEmpty(phoneNumber) && !isValidPhoneNumber(phoneNumber)) return true;\r\n\t\treturn false;\r\n});\r\n\r\n\r\nexport const selectModifiedPilot = createSelector(\r\n\t[\r\n\t\tselectInitPilot,\r\n\t\tselectPilotLicenceNumber,\r\n\t\tselectStreet,\r\n\t\tselectCity,\r\n\t\tselectPostalCode,\r\n\t\tselectCountry,\r\n\t\tselectPhoneNumber\r\n\t],(\r\n\t\tinitPilot: Pilot | null,\r\n\t\tpilotLicenceNumber: string | null | undefined,\r\n\t\tstreet: string | null | undefined,\r\n\t\tcity: string | null | undefined,\r\n\t\tpostalCode: string | null | undefined,\r\n\t\tcountry: string | null | undefined,\r\n\t\tphoneNumber: string | null | undefined\r\n\t) => {\r\n\t\tif (!initPilot) return null;\r\n\r\n\t\tconst newPilot: Pilot = {\r\n\t\t\t...initPilot,\r\n\t\t\tpilotLicenceNumber: pilotLicenceNumber,\r\n\t\t\tstreet: street,\r\n\t\t\tcity: city,\r\n\t\t\tpostalCode: postalCode,\r\n\t\t\tcountry: country,\r\n\t\t\tphoneNumber: phoneNumber\r\n\t\t};\r\n\t\treturn newPilot;\r\n});\r\n\r\n\r\nexport const selectIsSamePilot = createSelector(\r\n\t[\r\n\t\tselectInitPilot,\r\n\t\tselectPilotLicenceNumber,\r\n\t\tselectStreet,\r\n\t\tselectCity,\r\n\t\tselectPostalCode,\r\n\t\tselectCountry,\r\n\t\tselectPhoneNumber\r\n\t],(\r\n\t\tinitPilot: Pilot | null,\r\n\t\tpilotLicenceNumber: string | null | undefined,\r\n\t\tstreet: string | null | undefined,\r\n\t\tcity: string | null | undefined,\r\n\t\tpostalCode: string | null | undefined,\r\n\t\tcountry: string | null | undefined,\r\n\t\tphoneNumber: string | null | undefined\r\n\t) => {\r\n\t\tif (initPilot\r\n\t\t\t&& initPilot.pilotLicenceNumber === pilotLicenceNumber\r\n\t\t\t&& initPilot.street === street\r\n\t\t\t&& initPilot.city === city\r\n\t\t\t&& initPilot.postalCode === postalCode\r\n\t\t\t&& initPilot.country === country\r\n\t\t\t&& initPilot.phoneNumber === phoneNumber\r\n\t\t\t) return true;\r\n\t\treturn false;\r\n});","import { ChangeEvent } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Form } from 'react-bootstrap';\r\nimport { setStreet } from \"components/forms/pilot-page/PilotStore\";\r\nimport { selectStreet, selectShowInvalids } from \"components/forms/pilot-page/PilotSelectors\";\r\n\r\n\r\nconst Street = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\t\r\n\tconst property = useSelector(selectStreet);\r\n\tconst showInvalids = useSelector(selectShowInvalids);\r\n\tconst dispatch = useDispatch();\r\n\tconst updateProperty = (value: string) => dispatch(setStreet(value));\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{t('labels.streetNumber')} *\r\n\t\t\t\r\n\t\t\t) => {\r\n\t\t\t\t\tif (event.target.value.length === 0)\r\n\t\t\t\t\t\tupdateProperty(\"\");\r\n\t\t\t\t\tif (event.target.value.length <= 100)\r\n\t\t\t\t\t\tupdateProperty(event.target.value);\r\n\t\t\t\t}} />\r\n\t\t\t\r\n\t\t\t\t{t('invalidMessages.required')}\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default Street;","import { ChangeEvent } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Form } from 'react-bootstrap';\r\nimport { setCity } from \"components/forms/pilot-page/PilotStore\";\r\nimport { selectCity, selectShowInvalids } from \"components/forms/pilot-page/PilotSelectors\";\r\n\r\n\r\nconst City = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\t\r\n\tconst property = useSelector(selectCity);\r\n\tconst showInvalids = useSelector(selectShowInvalids);\r\n\tconst dispatch = useDispatch();\r\n\tconst updateProperty = (value: string) => dispatch(setCity(value));\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{t('labels.city')} *\r\n\t\t\t\r\n\t\t\t) => {\r\n\t\t\t\t\tif (event.target.value.length === 0)\r\n\t\t\t\t\t\tupdateProperty(\"\");\r\n\t\t\t\t\tif (event.target.value.length <= 100)\r\n\t\t\t\t\t\tupdateProperty(event.target.value);\r\n\t\t\t\t}} />\r\n\t\t\t\r\n\t\t\t\t{t('invalidMessages.required')}\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default City;","import { ChangeEvent } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Form } from 'react-bootstrap';\r\nimport { setPostalCode } from \"components/forms/pilot-page/PilotStore\";\r\nimport { selectPostalCode, selectShowInvalids } from \"components/forms/pilot-page/PilotSelectors\";\r\n\r\n\r\nconst PostalCode = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\t\r\n\tconst property = useSelector(selectPostalCode);\r\n\tconst showInvalids = useSelector(selectShowInvalids);\r\n\tconst dispatch = useDispatch();\r\n\tconst updateProperty = (value: string) => dispatch(setPostalCode(value));\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{t('labels.postalCode')} *\r\n\t\t\t\r\n\t\t\t) => {\r\n\t\t\t\t\tif (event.target.value.length === 0)\r\n\t\t\t\t\t\tupdateProperty(\"\");\r\n\t\t\t\t\tif (event.target.value.length <= 50)\r\n\t\t\t\t\t\tupdateProperty(event.target.value);\r\n\t\t\t\t}} />\r\n\t\t\t\r\n\t\t\t\t{t('invalidMessages.required')}\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default PostalCode;","import { ChangeEvent } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Form } from 'react-bootstrap';\r\nimport { setCountry } from \"components/forms/pilot-page/PilotStore\";\r\nimport { selectCountry, selectShowInvalids } from \"components/forms/pilot-page/PilotSelectors\";\r\n\r\n\r\nconst Country = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\t\r\n\tconst property = useSelector(selectCountry);\r\n\tconst showInvalids = useSelector(selectShowInvalids);\r\n\tconst dispatch = useDispatch();\r\n\tconst updateProperty = (value: string) => dispatch(setCountry(value));\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{t('labels.country')} *\r\n\t\t\t\r\n\t\t\t) => {\r\n\t\t\t\t\tupdateProperty(event.target.value);\r\n\t\t\t\t}}>\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\t{t('invalidMessages.required')}\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default Country;","import { ChangeEvent } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Form } from 'react-bootstrap';\r\nimport { setPhoneNumber } from \"components/forms/pilot-page/PilotStore\";\r\nimport { selectPhoneNumber, selectShowInvalids } from \"components/forms/pilot-page/PilotSelectors\";\r\nimport { isValidPhoneNumber, isEmpty } from 'components/global/utils';\r\n\r\n\r\nconst PhoneNumber = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\r\n\tconst property = useSelector(selectPhoneNumber);\r\n\tconst showInvalids = useSelector(selectShowInvalids);\r\n\tconst dispatch = useDispatch();\r\n\tconst updateProperty = (value: string | null) => dispatch(setPhoneNumber(value));\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{t('labels.phone')} {\r\n\t\t\t\t`(${ t('labels.phoneInfo') })`\r\n\t\t\t\t}\r\n\t\t\t\r\n\t\t\t) => {\r\n\t\t\t\t\tif (event.target.value.length === 0)\r\n\t\t\t\t\t\tupdateProperty(null);\r\n\t\t\t\t\tif (event.target.value.length <= 50)\r\n\t\t\t\t\t\tupdateProperty(event.target.value);\r\n\t\t\t\t}} />\r\n\t\t\t\r\n\t\t\t\t{t('invalidMessages.unknown')}\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default PhoneNumber;","import { ChangeEvent } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Form } from 'react-bootstrap';\r\nimport { setPilotLicenceNumber } from \"components/forms/pilot-page/PilotStore\";\r\nimport { selectPilotLicenceNumber } from \"components/forms/pilot-page/PilotSelectors\";\r\n\r\n\r\nconst PilotLicenceNumber = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\r\n\tconst property = useSelector(selectPilotLicenceNumber);\r\n\tconst dispatch = useDispatch();\r\n\tconst updateProperty = (value: string | null) => dispatch(setPilotLicenceNumber(value));\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{t('labels.pilotLicence')} {\r\n\t\t\t\t`(${ t('labels.pilotLicenceInfo') })`\r\n\t\t\t\t}\r\n\t\t\t\r\n\t\t\t) => {\r\n\t\t\t\t\tif (event.target.value.length === 0)\r\n\t\t\t\t\t\tupdateProperty(null);\r\n\t\t\t\t\tif (event.target.value.length <= 250)\r\n\t\t\t\t\t\tupdateProperty(event.target.value.toUpperCase());\r\n\t\t\t\t}} />\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default PilotLicenceNumber;","import { useTranslation } from 'react-i18next';\r\n\r\n\r\nconst GridHeader = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\r\n\treturn (\r\n\t\t<>\r\n\r\n\t\t\t
\r\n\t\t\t\t{t('labels.name')}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{t('labels.registrationNumberShort')}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{t('pilot.default')}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t
\r\n\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default GridHeader;","import { useTranslation } from 'react-i18next';\r\nimport { useDispatch } from \"react-redux\";\r\nimport { useNavigate } from \"react-router-dom\";\r\nimport { PilotBusinessEntity } from 'types/PilotBusinessEntity';\r\nimport { AppRoutesEnum } from 'components/global/routing/routesEnum';\r\nimport { setInitCompany } from \"components/forms/pilot-company/PilotCompanyStore\";\r\nimport { GridEditButton, GridRemoveButton } from 'components/global/GridButtons';\r\nimport { useDeletePilotEntityMutation } from 'utils/api/user';\r\n\r\n\r\ninterface RowButtonsProps {\r\n\tentity: PilotBusinessEntity\r\n}\r\n \r\n\r\nconst RowButtons = (props: RowButtonsProps): JSX.Element => {\r\n\tconst { entity } = props;\r\n\tconst { t } = useTranslation('global');\r\n\t\r\n\tconst navigate = useNavigate();\r\n\tconst dispatch = useDispatch();\r\n\tconst [ runDelete, { isLoading, isError } ] = useDeletePilotEntityMutation();\r\n\r\n\r\n\tif (isError) return (\r\n\t\t
\r\n\t\t\t

{t('errorMessageShort')}

\r\n\t\t
\r\n\t);\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t {\r\n\t\t\t\t\tdispatch(setInitCompany(entity));\r\n\t\t\t\t\tnavigate(`/${AppRoutesEnum.pilotCompany}`);\r\n\t\t\t\t}} />\r\n\r\n\t\t\t isLoading ? {} : runDelete(entity)} />\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default RowButtons;","import { memo } from 'react';\r\nimport { Form } from 'react-bootstrap';\r\nimport { PilotBusinessEntity } from 'types/PilotBusinessEntity';\r\nimport { useSetDefaultPilotEntityMutation } from 'utils/api/user';\r\nimport RowButtons from 'components/forms/pilot-page/pilot-form/business-grid/RowButtons';\r\n\r\n\r\ninterface GridRowProps {\r\n\tentity: PilotBusinessEntity\r\n}\r\n \r\n\r\nconst GridRow = (props: GridRowProps): JSX.Element => {\r\n\tconst { entity } = props;\r\n\tconst { id, bussinessName, registrationNumber, isDefault } = props.entity;\r\n\t\r\n\tconst [ setDefault, { isLoading, isError } ] = useSetDefaultPilotEntityMutation();\r\n\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t
\r\n\t\t\t\t

{bussinessName}

\r\n\t\t\t
\r\n\r\n\r\n\t\t\t
\r\n\t\t\t\t

{registrationNumber}

\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t ( isLoading || isError )\r\n\t\t\t\t\t\t? {}\r\n\t\t\t\t\t\t: isDefault ? setDefault(0) : setDefault(id)} />\r\n\t\t\t
\r\n\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default memo(GridRow);","import { useTranslation } from 'react-i18next';\r\nimport { useDispatch } from \"react-redux\";\r\nimport { useNavigate } from \"react-router-dom\";\r\nimport { useGetPilotQuery } from 'utils/api/user';\r\nimport { AppRoutesEnum } from 'components/global/routing/routesEnum';\r\nimport { setInitCompany } from \"components/forms/pilot-company/PilotCompanyStore\";\r\nimport { GridNewRecord } from 'components/global/GridButtons';\r\nimport { GridLoading, GridError } from 'components/global/GridElements';\r\nimport GridHeader from 'components/forms/pilot-page/pilot-form/business-grid/GridHeader';\r\nimport GridRow from 'components/forms/pilot-page/pilot-form/business-grid/GridRow';\r\n\r\n\r\nconst Grid = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\r\n\tconst navigate = useNavigate();\r\n\tconst dispatch = useDispatch();\r\n\r\n\tconst { isLoading, isError, isSuccess, companies } = useGetPilotQuery(undefined, {\r\n\t\tselectFromResult: ({ isLoading, isError, isSuccess, data }) => ({\r\n\t\t\tisLoading: isLoading,\r\n\t\t\tisError: isError,\r\n\t\t\tisSuccess: isSuccess,\r\n\t\t\tcompanies: data?.pilotBusinessEntityItems\r\n\t\t})\r\n\t});\r\n\r\n\r\n\tif (isLoading) return (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n\r\n\tif (isError) return (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n\r\n\treturn (\r\n\t\t
\r\n\r\n\t\t\t\r\n\r\n\t\t\t{isSuccess && companies && companies.map(x => \r\n\t\t\t\t)}\r\n\r\n\t\t\t {\r\n\t\t\t\t\tdispatch(setInitCompany(null));\r\n\t\t\t\t\tnavigate(`/${AppRoutesEnum.pilotCompany}`);\r\n\t\t\t\t}}/>\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default Grid;","import { useCallback } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { useNavigate } from \"react-router-dom\";\r\nimport { selectUserMode } from \"store/globalSelectors\";\r\nimport { UserModeEnum } from 'types/enums';\r\nimport { useSavePilotMutation } from 'utils/api/user';\r\nimport { AppRoutesEnum } from 'components/global/routing/routesEnum';\r\nimport { resetStore, setShowInvalids } from \"components/forms/pilot-page/PilotStore\";\r\nimport { selectPilotIsInvalid, selectIsSamePilot, selectModifiedPilot } from \"components/forms/pilot-page/PilotSelectors\";\r\nimport { FormConfirmButton, FormCancelButton } from 'components/global/FormButtons';\r\nimport { GridLabel } from 'components/global/GridElements';\r\nimport Street from 'components/forms/pilot-page/pilot-form/Street';\r\nimport City from 'components/forms/pilot-page/pilot-form/City';\r\nimport PostalCode from 'components/forms/pilot-page/pilot-form/PostalCode';\r\nimport Country from 'components/forms/pilot-page/pilot-form/Country';\r\nimport PhoneNumber from 'components/forms/pilot-page/pilot-form/PhoneNumber';\r\nimport PilotLicenceNumber from 'components/forms/pilot-page/pilot-form/PilotLicenceNumber';\r\nimport Grid from 'components/forms/pilot-page/pilot-form/business-grid/Grid';\r\n\r\n\r\nconst PilotForm = (): JSX.Element => {\r\n\tconst { t } = useTranslation([ 'formPages', 'global' ]);\r\n\r\n\tconst isInvalid = useSelector(selectPilotIsInvalid);\r\n\tconst isSame = useSelector(selectIsSamePilot);\r\n\tconst pilot = useSelector(selectModifiedPilot);\r\n\tconst userMode = useSelector(selectUserMode);\r\n\tconst navigate = useNavigate();\r\n\tconst dispatch = useDispatch();\r\n\tconst showInvalids = (show: boolean) => dispatch(setShowInvalids(show));\r\n\tconst [ updatePilot, { isError } ] = useSavePilotMutation();\r\n\r\n\r\n\tconst handleCancel = useCallback(() => {\r\n\t\tnavigate(userMode === UserModeEnum.pilot ? `/${AppRoutesEnum.profile}` : AppRoutesEnum.basePath);\r\n\t\tdispatch(resetStore());\r\n\t},[ userMode ]);\r\n\r\n\t\r\n\tconst handleSave = useCallback(() => {\r\n\t\tif (isInvalid || !pilot) {\r\n\t\t\tshowInvalids(true);\r\n\t\t\tsetTimeout(() => window.scrollTo(0, 0), 5);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tupdatePilot(pilot);\r\n\t\thandleCancel();\r\n\t},[ isInvalid, pilot ]);\r\n\t\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\r\n\t\t\t{isError &&\r\n\t\t\t\t

{t('global:errorMessage')}

}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\t\r\n\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default PilotForm;","import { useTranslation } from 'react-i18next';\r\nimport { useSelector } from \"react-redux\";\r\nimport { useNavigate } from \"react-router-dom\";\r\nimport { selectUserMode } from \"store/globalSelectors\";\r\nimport { UserModeEnum } from 'types/enums';\r\nimport { useGetPilotQuery } from 'utils/api/user';\r\nimport { AppRoutesEnum } from 'components/global/routing/routesEnum';\r\nimport { PageLoading, PageError } from 'components/global/PageElements';\r\nimport PilotForm from 'components/forms/pilot-page/pilot-form/PilotForm';\r\n\r\n\r\nconst PilotPage = (): JSX.Element => {\r\n\tconst { t } = useTranslation([ 'formPages', 'global' ]);\r\n\r\n\tconst userMode = useSelector(selectUserMode);\r\n\tconst navigate = useNavigate();\r\n\tconst { isLoading, isSuccess, isError, data } = useGetPilotQuery();\r\n\tconst backErrorFn = () => navigate(userMode === UserModeEnum.pilot ? `/${AppRoutesEnum.profile}` : AppRoutesEnum.basePath);\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t\t\t\r\n\t\t\t

{t('pilot.header')}

\r\n\r\n\t\t\t{isLoading &&\r\n\t\t\t\t}\r\n\r\n\t\t\t{isError &&\r\n\t\t\t\t}\r\n\r\n\t\t\t{isSuccess && data &&\r\n\t\t\t\t}\r\n\t\t
\r\n\t)\r\n};\r\n\r\nexport default PilotPage;","import { createSelector } from '@reduxjs/toolkit';\r\nimport { RootState } from 'store';\r\nimport { User } from 'types/User';\r\nimport { PilotBusinessEntity } from 'types/PilotBusinessEntity';\r\nimport { Pilot } from 'types/Pilot';\r\nimport { isValidEmail, isValidPhoneNumber, isEmpty } from 'components/global/utils';\r\n\r\n\r\nexport const selectInitCompany = (state: RootState) => state.pilotCompany.initCompany;\r\nexport const selectShowInvalids = (state: RootState) => state.pilotCompany.showInvalids;\r\nexport const selectBussinessName = (state: RootState) => state.pilotCompany.bussinessName;\r\nexport const selectCompanyEmail = (state: RootState) => state.pilotCompany.companyEmail;\r\nexport const selectPhoneNumber = (state: RootState) => state.pilotCompany.phoneNumber;\r\nexport const selectRegistrationNumber = (state: RootState) => state.pilotCompany.registrationNumber;\r\nexport const selectTaxNumber = (state: RootState) => state.pilotCompany.taxNumber;\r\nexport const selectStreet = (state: RootState) => state.pilotCompany.street;\r\nexport const selectCity = (state: RootState) => state.pilotCompany.city;\r\nexport const selectPostalCode = (state: RootState) => state.pilotCompany.postalCode;\r\nexport const selectCountry = (state: RootState) => state.pilotCompany.country;\r\nexport const selectUser = (state: RootState) => state.global.user;\r\nexport const selectInitPilot = (state: RootState) => state.pilotPage.initPilot;\r\n\r\n\r\nexport const selectCompanyIsInvalid = createSelector(\r\n\t[\r\n\t\tselectBussinessName,\r\n\t\tselectTaxNumber,\r\n\t\tselectRegistrationNumber,\r\n\t\tselectStreet,\r\n\t\tselectCity,\r\n\t\tselectPostalCode,\r\n\t\tselectCountry,\r\n\t\tselectCompanyEmail,\r\n\t\tselectPhoneNumber\r\n\t],(\r\n\t\tbussinessName: string,\r\n\t\ttaxNumber: string,\r\n\t\tregistrationNumber: string,\r\n\t\tstreet: string,\r\n\t\tcity: string,\r\n\t\tpostalCode: string,\r\n\t\tcountry: string,\r\n\t\temail: string | null | undefined,\r\n\t\tphoneNumber: string | null | undefined\r\n\t) => {\r\n\t\tif (isEmpty(bussinessName)) return true;\r\n\t\tif (isEmpty(taxNumber)) return true;\r\n\t\tif (isEmpty(registrationNumber)) return true;\r\n\t\tif (isEmpty(street)) return true;\r\n\t\tif (isEmpty(city)) return true;\r\n\t\tif (isEmpty(postalCode)) return true;\r\n\t\tif (isEmpty(country)) return true;\r\n\t\tif (isEmpty(email) || !isValidEmail(email)) return true;\r\n\t\tif (!isEmpty(phoneNumber) && !isValidPhoneNumber(phoneNumber)) return true;\r\n\t\treturn false;\r\n});\r\n\r\n\r\nexport const selectModifiedCompany = createSelector(\r\n\t[\r\n\t\tselectInitCompany,\r\n\t\tselectBussinessName,\r\n\t\tselectCompanyEmail,\r\n\t\tselectPhoneNumber,\r\n\t\tselectRegistrationNumber,\r\n\t\tselectTaxNumber,\r\n\t\tselectStreet,\r\n\t\tselectCity,\r\n\t\tselectPostalCode,\r\n\t\tselectCountry,\r\n\t\tselectUser,\r\n\t\tselectInitPilot\r\n\t],(\r\n\t\tinitCompany: PilotBusinessEntity | null,\r\n\t\tbussinessName: string,\r\n\t\tcompanyEmail: string,\r\n\t\tphoneNumber: string | null | undefined,\r\n\t\tregistrationNumber: string,\r\n\t\ttaxNumber: string,\r\n\t\tstreet: string,\r\n\t\tcity: string,\r\n\t\tpostalCode: string,\r\n\t\tcountry: string,\r\n\t\tuser: User | null,\r\n\t\tpilot: Pilot | null\r\n\t) => {\r\n\t\tif (!user || !pilot) return null;\r\n\r\n\t\tconst newCompany: PilotBusinessEntity = {\r\n\t\t\tid: initCompany ? initCompany.id : 0,\r\n\t\t\tbussinessName: bussinessName,\r\n\t\t\tcompanyEmail: companyEmail,\r\n\t\t\tphoneNumber: phoneNumber,\r\n\t\t\tregistrationNumber: registrationNumber,\r\n\t\t\ttaxNumber: taxNumber,\r\n\t\t\tstreet: street,\r\n\t\t\tcity: city,\r\n\t\t\tpostalCode: postalCode,\r\n\t\t\tcountry: country,\r\n\t\t\tisDefault: initCompany\r\n\t\t\t\t? initCompany.isDefault\r\n\t\t\t\t: pilot.pilotBusinessEntityItems && pilot.pilotBusinessEntityItems.length === 0\r\n\t\t\t\t? true\r\n\t\t\t\t: false,\r\n\t\t\tisPrivate: initCompany ? initCompany.isPrivate : false,\r\n\t\t\tuserUid: user.uid,\r\n\t\t};\r\n\t\treturn newCompany;\r\n});\r\n\r\n\r\nexport const selectIsSameCompany = createSelector(\r\n\t[\r\n\t\tselectInitCompany,\r\n\t\tselectBussinessName,\r\n\t\tselectCompanyEmail,\r\n\t\tselectPhoneNumber,\r\n\t\tselectRegistrationNumber,\r\n\t\tselectTaxNumber,\r\n\t\tselectStreet,\r\n\t\tselectCity,\r\n\t\tselectPostalCode,\r\n\t\tselectCountry\r\n\t],(\r\n\t\tinitCompany: PilotBusinessEntity | null,\r\n\t\tbussinessName: string,\r\n\t\tcompanyEmail: string | null | undefined,\r\n\t\tphoneNumber: string | null | undefined,\r\n\t\tregistrationNumber: string | null | undefined,\r\n\t\ttaxNumber: string,\r\n\t\tstreet: string,\r\n\t\tcity: string,\r\n\t\tpostalCode: string,\r\n\t\tcountry: string\r\n\t) => {\r\n\t\tif (initCompany\r\n\t\t\t&& initCompany.bussinessName === bussinessName\r\n\t\t\t&& initCompany.companyEmail === companyEmail\r\n\t\t\t&& initCompany.phoneNumber === phoneNumber\r\n\t\t\t&& initCompany.registrationNumber === registrationNumber\r\n\t\t\t&& initCompany.taxNumber === taxNumber\r\n\t\t\t&& initCompany.street === street\r\n\t\t\t&& initCompany.city === city\r\n\t\t\t&& initCompany.postalCode === postalCode\r\n\t\t\t&& initCompany.country === country\r\n\t\t\t) return true;\r\n\t\treturn false;\r\n});","import { ChangeEvent } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Form } from 'react-bootstrap';\r\nimport { setBussinessName } from \"components/forms/pilot-company/PilotCompanyStore\";\r\nimport { selectBussinessName, selectShowInvalids } from \"components/forms/pilot-company/PilotCompanySelectors\";\r\n\r\n\r\nconst BusinessName = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\t\r\n\tconst property = useSelector(selectBussinessName);\r\n\tconst showInvalids = useSelector(selectShowInvalids);\r\n\tconst dispatch = useDispatch();\r\n\tconst updateProperty = (value: string) => dispatch(setBussinessName(value));\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{t('labels.name')} *\r\n\t\t\t\r\n\t\t\t) => {\r\n\t\t\t\t\tif (event.target.value.length === 0)\r\n\t\t\t\t\t\tupdateProperty(\"\");\r\n\t\t\t\t\tif (event.target.value.length <= 255)\r\n\t\t\t\t\t\tupdateProperty(event.target.value);\r\n\t\t\t\t}} />\r\n\t\t\t\r\n\t\t\t\t{t('invalidMessages.required')}\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default BusinessName;","import { ChangeEvent } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Form } from 'react-bootstrap';\r\nimport { setCompanyEmail } from \"components/forms/pilot-company/PilotCompanyStore\";\r\nimport { selectCompanyEmail, selectShowInvalids } from \"components/forms/pilot-company/PilotCompanySelectors\";\r\nimport { isValidEmail, isEmpty } from 'components/global/utils';\r\n\r\n\r\nconst CompanyEmail = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\r\n\tconst property = useSelector(selectCompanyEmail);\r\n\tconst showInvalids = useSelector(selectShowInvalids);\r\n\tconst dispatch = useDispatch();\r\n\tconst updateProperty = (value: string) => dispatch(setCompanyEmail(value));\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{t('labels.email')} *\r\n\t\t\t\r\n\t\t\t) => {\r\n\t\t\t\t\tif (event.target.value.length === 0)\r\n\t\t\t\t\t\tupdateProperty(\"\");\r\n\t\t\t\t\tif (event.target.value.length <= 100)\r\n\t\t\t\t\t\tupdateProperty(event.target.value);\r\n\t\t\t\t}} />\r\n\t\t\t\r\n\t\t\t\t{property === '' ? t('invalidMessages.required') : t('invalidMessages.unknown')}\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default CompanyEmail;","import { ChangeEvent } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Form } from 'react-bootstrap';\r\nimport { setPhoneNumber } from \"components/forms/pilot-company/PilotCompanyStore\";\r\nimport { selectPhoneNumber, selectShowInvalids } from \"components/forms/pilot-company/PilotCompanySelectors\";\r\nimport { isValidPhoneNumber, isEmpty } from 'components/global/utils';\r\n\r\n\r\nconst PhoneNumber = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\r\n\tconst property = useSelector(selectPhoneNumber);\r\n\tconst showInvalids = useSelector(selectShowInvalids);\r\n\tconst dispatch = useDispatch();\r\n\tconst updateProperty = (value: string | null) => dispatch(setPhoneNumber(value));\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{t('labels.phone')} {\r\n\t\t\t\t`(${ t('labels.phoneInfo') })`\r\n\t\t\t\t}\r\n\t\t\t\r\n\t\t\t) => {\r\n\t\t\t\t\tif (event.target.value.length === 0)\r\n\t\t\t\t\t\tupdateProperty(null);\r\n\t\t\t\t\tif (event.target.value.length <= 50)\r\n\t\t\t\t\t\tupdateProperty(event.target.value);\r\n\t\t\t\t}} />\r\n\t\t\t\r\n\t\t\t\t{t('invalidMessages.unknown')}\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default PhoneNumber;","import { ChangeEvent } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Form } from 'react-bootstrap';\r\nimport { setRegistrationNumber } from \"components/forms/pilot-company/PilotCompanyStore\";\r\nimport { selectRegistrationNumber, selectShowInvalids } from \"components/forms/pilot-company/PilotCompanySelectors\";\r\n\r\n\r\nconst RegistrationNumber = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\r\n\tconst property = useSelector(selectRegistrationNumber);\r\n\tconst showInvalids = useSelector(selectShowInvalids);\r\n\tconst dispatch = useDispatch();\r\n\tconst updateProperty = (value: string) => dispatch(setRegistrationNumber(value));\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{t('labels.registrationNumber')} *\r\n\t\t\t\r\n\t\t\t) => {\r\n\t\t\t\t\tif (event.target.value.length === 0)\r\n\t\t\t\t\t\tupdateProperty(\"\");\r\n\t\t\t\t\tif (event.target.value.length <= 100)\r\n\t\t\t\t\t\tupdateProperty(event.target.value);\r\n\t\t\t\t}} />\r\n\t\t\t\r\n\t\t\t\t{t('invalidMessages.required')}\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default RegistrationNumber;","import { ChangeEvent } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Form } from 'react-bootstrap';\r\nimport { setTaxNumber } from \"components/forms/pilot-company/PilotCompanyStore\";\r\nimport { selectTaxNumber, selectShowInvalids } from \"components/forms/pilot-company/PilotCompanySelectors\";\r\n\r\n\r\nconst TaxNumber = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\t\r\n\tconst property = useSelector(selectTaxNumber);\r\n\tconst showInvalids = useSelector(selectShowInvalids);\r\n\tconst dispatch = useDispatch();\r\n\tconst updateProperty = (value: string) => dispatch(setTaxNumber(value));\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{t('labels.companyTax')} *\r\n\t\t\t\r\n\t\t\t) => {\r\n\t\t\t\t\tif (event.target.value.length === 0)\r\n\t\t\t\t\t\tupdateProperty(\"\");\r\n\t\t\t\t\tif (event.target.value.length <= 100)\r\n\t\t\t\t\t\tupdateProperty(event.target.value);\r\n\t\t\t\t}} />\r\n\t\t\t\r\n\t\t\t\t{t('invalidMessages.required')}\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default TaxNumber;","import { ChangeEvent } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Form } from 'react-bootstrap';\r\nimport { setStreet } from \"components/forms/pilot-company/PilotCompanyStore\";\r\nimport { selectStreet, selectShowInvalids } from \"components/forms/pilot-company/PilotCompanySelectors\";\r\n\r\n\r\nconst Street = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\t\r\n\tconst property = useSelector(selectStreet);\r\n\tconst showInvalids = useSelector(selectShowInvalids);\r\n\tconst dispatch = useDispatch();\r\n\tconst updateProperty = (value: string) => dispatch(setStreet(value));\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{t('labels.streetNumber')} *\r\n\t\t\t\r\n\t\t\t) => {\r\n\t\t\t\t\tif (event.target.value.length === 0)\r\n\t\t\t\t\t\tupdateProperty(\"\");\r\n\t\t\t\t\tif (event.target.value.length <= 100)\r\n\t\t\t\t\t\tupdateProperty(event.target.value);\r\n\t\t\t\t}} />\r\n\t\t\t\r\n\t\t\t\t{t('invalidMessages.required')}\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default Street;","import { ChangeEvent } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Form } from 'react-bootstrap';\r\nimport { setCity } from \"components/forms/pilot-company/PilotCompanyStore\";\r\nimport { selectCity, selectShowInvalids } from \"components/forms/pilot-company/PilotCompanySelectors\";\r\n\r\n\r\nconst City = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\t\r\n\tconst property = useSelector(selectCity);\r\n\tconst showInvalids = useSelector(selectShowInvalids);\r\n\tconst dispatch = useDispatch();\r\n\tconst updateProperty = (value: string) => dispatch(setCity(value));\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{t('labels.city')} *\r\n\t\t\t\r\n\t\t\t) => {\r\n\t\t\t\t\tif (event.target.value.length === 0)\r\n\t\t\t\t\t\tupdateProperty(\"\");\r\n\t\t\t\t\tif (event.target.value.length <= 100)\r\n\t\t\t\t\t\tupdateProperty(event.target.value);\r\n\t\t\t\t}} />\r\n\t\t\t\r\n\t\t\t\t{t('invalidMessages.required')}\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default City;","import { ChangeEvent } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Form } from 'react-bootstrap';\r\nimport { setPostalCode } from \"components/forms/pilot-company/PilotCompanyStore\";\r\nimport { selectPostalCode, selectShowInvalids } from \"components/forms/pilot-company/PilotCompanySelectors\";\r\n\r\n\r\nconst PostalCode = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\t\r\n\tconst property = useSelector(selectPostalCode);\r\n\tconst showInvalids = useSelector(selectShowInvalids);\r\n\tconst dispatch = useDispatch();\r\n\tconst updateProperty = (value: string) => dispatch(setPostalCode(value));\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{t('labels.postalCode')} *\r\n\t\t\t\r\n\t\t\t) => {\r\n\t\t\t\t\tif (event.target.value.length === 0)\r\n\t\t\t\t\t\tupdateProperty(\"\");\r\n\t\t\t\t\tif (event.target.value.length <= 50)\r\n\t\t\t\t\t\tupdateProperty(event.target.value);\r\n\t\t\t\t}} />\r\n\t\t\t\r\n\t\t\t\t{t('invalidMessages.required')}\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default PostalCode;","import { ChangeEvent } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Form } from 'react-bootstrap';\r\nimport { setCountry } from \"components/forms/pilot-company/PilotCompanyStore\";\r\nimport { selectCountry, selectShowInvalids } from \"components/forms/pilot-company/PilotCompanySelectors\";\r\n\r\n\r\nconst Country = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\t\r\n\tconst property = useSelector(selectCountry);\r\n\tconst showInvalids = useSelector(selectShowInvalids);\r\n\tconst dispatch = useDispatch();\r\n\tconst updateProperty = (value: string) => dispatch(setCountry(value));\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{t('labels.country')} *\r\n\t\t\t\r\n\t\t\t) => {\r\n\t\t\t\t\tupdateProperty(event.target.value);\r\n\t\t\t\t}}>\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\t{t('invalidMessages.required')}\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default Country;","import { useCallback } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { useNavigate } from \"react-router-dom\";\r\nimport { useSavePilotEntityMutation } from 'utils/api/user';\r\nimport { AppRoutesEnum } from 'components/global/routing/routesEnum';\r\nimport { setShowInvalids } from \"components/forms/pilot-company/PilotCompanyStore\";\r\nimport { selectCompanyIsInvalid, selectIsSameCompany, selectModifiedCompany } from \"components/forms/pilot-company/PilotCompanySelectors\";\r\nimport { FormConfirmButton, FormCancelButton } from 'components/global/FormButtons';\r\nimport BusinessName from 'components/forms/pilot-company/company-form/BusinessName';\r\nimport CompanyEmail from 'components/forms/pilot-company/company-form/CompanyEmail';\r\nimport PhoneNumber from 'components/forms/pilot-company/company-form/PhoneNumber';\r\nimport RegistrationNumber from 'components/forms/pilot-company/company-form/RegistrationNumber';\r\nimport TaxNumber from 'components/forms/pilot-company/company-form/TaxNumber';\r\nimport Street from 'components/forms/pilot-company/company-form/Street';\r\nimport City from 'components/forms/pilot-company/company-form/City';\r\nimport PostalCode from 'components/forms/pilot-company/company-form/PostalCode';\r\nimport Country from 'components/forms/pilot-company/company-form/Country';\r\n\r\n\r\nconst CompanyForm = (): JSX.Element => {\r\n\tconst { t } = useTranslation('global');\r\n\t\r\n\tconst isInvalid = useSelector(selectCompanyIsInvalid);\r\n\tconst isSame = useSelector(selectIsSameCompany);\r\n\tconst company = useSelector(selectModifiedCompany);\r\n\tconst navigate = useNavigate();\r\n\tconst dispatch = useDispatch();\r\n\tconst showInvalids = (show: boolean) => dispatch(setShowInvalids(show));\r\n\tconst [ updateCompany, { isError } ] = useSavePilotEntityMutation();\r\n\r\n\r\n\tconst handleCancel = useCallback(() => {\r\n\t\tnavigate(`/${AppRoutesEnum.pilot}`);\r\n\t},[]);\r\n\r\n\t\r\n\tconst handleSave = useCallback(() => {\r\n\t\tif (isInvalid || !company) {\r\n\t\t\tshowInvalids(true);\r\n\t\t\tsetTimeout(() => window.scrollTo(0, 0), 5);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tupdateCompany(company);\r\n\t\thandleCancel();\r\n\t},[ isInvalid, company ]);\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\r\n\t\t\t{isError &&\r\n\t\t\t\t

{t('errorMessage')}

}\r\n\r\n\t\t\t
\r\n\t\t\t\t\r\n\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default CompanyForm;","import { useEffect } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch } from \"react-redux\";\r\nimport { resetStore } from \"components/forms/pilot-company/PilotCompanyStore\";\r\nimport CompanyForm from 'components/forms/pilot-company/company-form/CompanyForm';\r\n\r\n\r\nconst PilotCompanyPage = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\r\n\tconst dispatch = useDispatch();\r\n\r\n\tuseEffect(() => {\r\n\t\treturn () => {\r\n\t\t\tdispatch(resetStore());\r\n\t\t}\r\n\t}, []);\r\n\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t\t\t\r\n\t\t\t

{t('pilotCompany.header')}

\r\n\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t)\r\n};\r\n\r\nexport default PilotCompanyPage;","import { createSelector } from '@reduxjs/toolkit';\r\nimport { RootState } from 'store';\r\nimport { User } from 'types/User';\r\nimport { Plane } from 'types/Plane';\r\nimport { PlaneTypeEnum } from 'types/enums';\r\nimport { isEmpty } from 'components/global/utils';\r\n\r\n\r\nexport const selectInitPlane = (state: RootState) => state.planePage.initPlane;\r\nexport const selectShowInvalids = (state: RootState) => state.planePage.showInvalids;\r\nexport const selectImatriculation = (state: RootState) => state.planePage.imatriculation;\r\nexport const selectPlaneName = (state: RootState) => state.planePage.planeName;\r\nexport const selectPlaneType = (state: RootState) => state.planePage.planeType;\r\nexport const selectMtow = (state: RootState) => state.planePage.mtow;\r\nexport const selectSeatsCount = (state: RootState) => state.planePage.seatsCount;\r\nexport const selectWingsSpan = (state: RootState) => state.planePage.wingsSpan;\r\nexport const selectUser = (state: RootState) => state.global.user;\r\n\r\n\r\nexport const selectPlaneIsInvalid = createSelector(\r\n\t[\r\n\t\tselectImatriculation,\r\n\t\tselectPlaneType,\r\n\t\tselectMtow\r\n\t],(\r\n\t\timatriculation: string,\r\n\t\tplaneType: PlaneTypeEnum | '',\r\n\t\tmtow: string\r\n\t) => {\r\n\t\tif (isEmpty(imatriculation)) return true;\r\n\t\tif (isEmpty(planeType)) return true;\r\n\t\tif (isEmpty(mtow)) return true;\r\n\t\treturn false;\r\n});\r\n\r\n\r\nexport const selectModifiedPlane = createSelector(\r\n\t[\r\n\t\tselectImatriculation,\r\n\t\tselectPlaneName,\r\n\t\tselectPlaneType,\r\n\t\tselectMtow,\r\n\t\tselectSeatsCount,\r\n\t\tselectWingsSpan,\r\n\t\tselectUser\r\n\r\n\t],(\r\n\t\timatriculation: string,\r\n\t\tplaneName: string | null | undefined,\r\n\t\tplaneType: PlaneTypeEnum | '',\r\n\t\tmtow: string,\r\n\t\tseatsCount: number | null | undefined,\r\n\t\twingsSpan: string | null | undefined,\r\n\t\tuser: User | null\r\n\t) => {\r\n\t\tif (!user) return null;\r\n\r\n\t\tconst newPlane: Plane = {\r\n\t\t\timatriculation: imatriculation,\r\n\t\t\tplaneName: planeName,\r\n\t\t\tplaneType: planeType,\r\n\t\t\tmtow: parseFloat(mtow),\r\n\t\t\tseatsCount: seatsCount,\r\n\t\t\twingsSpan: wingsSpan && wingsSpan !== '0' ? parseFloat(wingsSpan) : null,\r\n\t\t\tuserId: user.uid\r\n\t\t};\r\n\t\treturn newPlane;\r\n});\r\n\r\n\r\nexport const selectIsSamePlane = createSelector(\r\n\t[\r\n\t\tselectInitPlane,\r\n\t\tselectImatriculation,\r\n\t\tselectPlaneName,\r\n\t\tselectPlaneType,\r\n\t\tselectMtow,\r\n\t\tselectSeatsCount,\r\n\t\tselectWingsSpan\r\n\t],(\r\n\t\tinitPlane: Plane | null,\r\n\t\timatriculation: string,\r\n\t\tplaneName: string | null | undefined,\r\n\t\tplaneType: PlaneTypeEnum | '',\r\n\t\tmtow: string,\r\n\t\tseatsCount: number | null | undefined,\r\n\t\twingsSpan: string | null | undefined\r\n\t) => {\r\n\t\tif (initPlane\r\n\t\t\t&& initPlane.imatriculation === imatriculation\r\n\t\t\t&& initPlane.planeName === planeName\r\n\t\t\t&& initPlane.planeType === planeType\r\n\t\t\t&& initPlane.mtow === parseFloat(mtow)\r\n\t\t\t&& initPlane.seatsCount === seatsCount\r\n\t\t\t&& initPlane.wingsSpan === wingsSpan\r\n\t\t\t) return true;\r\n\t\treturn false;\r\n});","import { ChangeEvent } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Form } from 'react-bootstrap';\r\nimport { setImatriculation } from \"components/forms/plane-page/PlaneStore\";\r\nimport { selectImatriculation, selectShowInvalids, selectInitPlane } from \"components/forms/plane-page/PlaneSelectors\";\r\n\r\n\r\nconst Imatriculation = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\t\r\n\tconst property = useSelector(selectImatriculation);\r\n\tconst showInvalids = useSelector(selectShowInvalids);\r\n\tconst initPlane = useSelector(selectInitPlane);\r\n\tconst dispatch = useDispatch();\r\n\tconst updateProperty = (value: string) => dispatch(setImatriculation(value));\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{t('labels.imatriculation')} *\r\n\t\t\t\r\n\t\t\t) => {\r\n\t\t\t\t\tif (event.target.value.length === 0)\r\n\t\t\t\t\t\tupdateProperty(\"\");\r\n\t\t\t\t\tif (event.target.value.length <= 50)\r\n\t\t\t\t\t\tupdateProperty(event.target.value.toUpperCase());\r\n\t\t\t\t}} />\r\n\t\t\t\r\n\t\t\t\t{t('invalidMessages.required')}\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default Imatriculation;","import { ChangeEvent } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Form } from 'react-bootstrap';\r\nimport { setPlaneName } from \"components/forms/plane-page/PlaneStore\";\r\nimport { selectPlaneName } from \"components/forms/plane-page/PlaneSelectors\";\r\n\r\n\r\nconst PlaneName = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\r\n\tconst property = useSelector(selectPlaneName);\r\n\tconst dispatch = useDispatch();\r\n\tconst updateProperty = (value: string | null) => dispatch(setPlaneName(value));\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{t('labels.planeName')}\r\n\t\t\t\r\n\t\t\t) => {\r\n\t\t\t\t\tif (event.target.value.length === 0)\r\n\t\t\t\t\t\tupdateProperty(null);\r\n\t\t\t\t\tif (event.target.value.length <= 100)\r\n\t\t\t\t\t\tupdateProperty(event.target.value);\r\n\t\t\t\t}} />\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default PlaneName;","import { ChangeEvent } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Form } from 'react-bootstrap';\r\nimport { PlaneTypeEnum } from 'types/enums';\r\nimport { setPlaneType } from \"components/forms/plane-page/PlaneStore\";\r\nimport { selectPlaneType, selectShowInvalids } from \"components/forms/plane-page/PlaneSelectors\";\r\n\r\n\r\nconst PlaneType = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\t\r\n\tconst property = useSelector(selectPlaneType);\r\n\tconst showInvalids = useSelector(selectShowInvalids);\r\n\tconst dispatch = useDispatch();\r\n\tconst updateProperty = (value: PlaneTypeEnum) => dispatch(setPlaneType(value));\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{t('labels.category')} *\r\n\t\t\t\r\n\t\t\t) => {\r\n\t\t\t\t\tupdateProperty(event.target.value as PlaneTypeEnum);\r\n\t\t\t\t}}>\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\t{t('invalidMessages.required')}\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default PlaneType;","import { ChangeEvent } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Form } from 'react-bootstrap';\r\nimport { setMtow } from \"components/forms/plane-page/PlaneStore\";\r\nimport { selectMtow, selectShowInvalids } from \"components/forms/plane-page/PlaneSelectors\";\r\nimport { checkDecimalInputAndMaxValue } from 'components/global/utils';\r\nimport { getLocaleNumberSeparator } from 'translations/index';\r\n\r\n\r\nconst Mtow = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\t\r\n\tconst property = useSelector(selectMtow);\r\n\tconst showInvalids = useSelector(selectShowInvalids);\r\n\tconst dispatch = useDispatch();\r\n\tconst updateProperty = (value: string) => dispatch(setMtow(value));\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{t('labels.mtow')} *\r\n\t\t\t\r\n\t\t\t) => {\r\n\t\t\t\t\tif (event.target.value.length === 0 || event.target.value === '0')\r\n\t\t\t\t\t\tupdateProperty('0');\r\n\t\t\t\t\tconst parsedObject = checkDecimalInputAndMaxValue(event.target.value, 9);\r\n\t\t\t\t\tif (parsedObject.success)\r\n\t\t\t\t\t\tupdateProperty(parsedObject.parsedValue);\r\n\t\t\t\t}} />\r\n\t\t\t\r\n\t\t\t\t{t('invalidMessages.required')}\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default Mtow;","import { ChangeEvent } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Form } from 'react-bootstrap';\r\nimport { setWingsSpan } from \"components/forms/plane-page/PlaneStore\";\r\nimport { selectWingsSpan } from \"components/forms/plane-page/PlaneSelectors\";\r\nimport { checkDecimalInputAndMaxValue } from 'components/global/utils';\r\nimport { getLocaleNumberSeparator } from 'translations/index';\r\n\r\n\r\nconst WingsSpan = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\r\n\tconst property = useSelector(selectWingsSpan);\r\n\tconst dispatch = useDispatch();\r\n\tconst updateProperty = (value: string | null) => dispatch(setWingsSpan(value));\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{t('labels.wingsSpan')}\r\n\t\t\t\r\n\t\t\t) => {\r\n\t\t\t\t\tif (event.target.value.length === 0 || event.target.value === '0')\r\n\t\t\t\t\t\tupdateProperty(null);\r\n\t\t\t\t\tconst parsedObject = checkDecimalInputAndMaxValue(event.target.value, 9);\r\n\t\t\t\t\tif (parsedObject.success)\r\n\t\t\t\t\t\tupdateProperty(parsedObject.parsedValue);\r\n\t\t\t\t}} />\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default WingsSpan;","import { ChangeEvent } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Form } from 'react-bootstrap';\r\nimport { setSeatsCount } from \"components/forms/plane-page/PlaneStore\";\r\nimport { selectSeatsCount } from \"components/forms/plane-page/PlaneSelectors\";\r\nimport { checkIntegerInputAndMaxValue } from 'components/global/utils';\r\n\r\n\r\nconst SeatsCount = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\r\n\tconst property = useSelector(selectSeatsCount);\r\n\tconst dispatch = useDispatch();\r\n\tconst updateProperty = (value: number | null) => dispatch(setSeatsCount(value));\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{t('labels.seatsCount')}\r\n\t\t\t\r\n\t\t\t 0) ? property : \"\"}\r\n\t\t\t\tonChange={(event: ChangeEvent) => {\r\n\t\t\t\t\tif (event.target.value.length === 0 || event.target.value === '0')\r\n\t\t\t\t\t\tupdateProperty(null);\r\n\t\t\t\t\tconst parsedObject = checkIntegerInputAndMaxValue(event.target.value, 999999);\r\n\t\t\t\t\tif (parsedObject.success)\r\n\t\t\t\t\t\tupdateProperty(parsedObject.parsedValue);\r\n\t\t\t\t}} />\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default SeatsCount;","import { useCallback } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { useNavigate } from \"react-router-dom\";\r\nimport { selectUserMode } from \"store/globalSelectors\";\r\nimport { UserModeEnum } from 'types/enums';\r\nimport { useSaveOrUpdatePlaneMutation } from 'utils/api/planes';\r\nimport { AppRoutesEnum } from 'components/global/routing/routesEnum';\r\nimport { setShowInvalids } from \"components/forms/plane-page/PlaneStore\";\r\nimport { selectPlaneIsInvalid, selectIsSamePlane, selectModifiedPlane } from \"components/forms/plane-page/PlaneSelectors\";\r\nimport { FormConfirmButton, FormCancelButton } from 'components/global/FormButtons';\r\nimport Imatriculation from 'components/forms/plane-page/plane-form/Imatriculation';\r\nimport PlaneName from 'components/forms/plane-page/plane-form/PlaneName';\r\nimport PlaneType from 'components/forms/plane-page/plane-form/PlaneType';\r\nimport Mtow from 'components/forms/plane-page/plane-form/Mtow';\r\nimport WingsSpan from 'components/forms/plane-page/plane-form/WingsSpan';\r\nimport SeatsCount from 'components/forms/plane-page/plane-form/SeatsCount';\r\n\r\n\r\nconst PlaneForm = (): JSX.Element => {\r\n\tconst { t } = useTranslation('global');\r\n\r\n\tconst isInvalid = useSelector(selectPlaneIsInvalid);\r\n\tconst isSame = useSelector(selectIsSamePlane);\r\n\tconst plane = useSelector(selectModifiedPlane);\r\n\tconst userMode = useSelector(selectUserMode);\r\n\tconst navigate = useNavigate();\r\n\tconst dispatch = useDispatch();\r\n\tconst showInvalids = (show: boolean) => dispatch(setShowInvalids(show));\r\n\tconst [ updatePlane, { isError } ] = useSaveOrUpdatePlaneMutation();\r\n\r\n\r\n\tconst handleCancel = useCallback(() => {\r\n\t\tnavigate(userMode === UserModeEnum.pilot ? `/${AppRoutesEnum.profile}` : AppRoutesEnum.basePath);\r\n\t},[ userMode ]);\r\n\r\n\t\r\n\tconst handleSave = useCallback(() => {\r\n\t\tif (isInvalid || !plane) {\r\n\t\t\tshowInvalids(true);\r\n\t\t\tsetTimeout(() => window.scrollTo(0, 0), 5);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tupdatePlane(plane);\r\n\t\thandleCancel();\r\n\t},[ isInvalid, plane ]);\r\n\t\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\r\n\t\t\t{isError &&\r\n\t\t\t\t

{t('errorMessage')}

}\r\n\r\n\t\t\t
\r\n\t\t\t\t\r\n\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default PlaneForm;","import { useEffect } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch } from \"react-redux\";\r\nimport { resetStore } from \"components/forms/plane-page/PlaneStore\";\r\nimport PlaneForm from 'components/forms/plane-page/plane-form/PlaneForm';\r\n\r\n\r\nconst PlanePage = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\r\n\tconst dispatch = useDispatch();\r\n\r\n\tuseEffect(() => {\r\n\t\treturn () => {\r\n\t\t\tdispatch(resetStore());\r\n\t\t}\r\n\t}, []);\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t\t\t\r\n\t\t\t

{t('plane.header')}

\r\n\r\n\t\t\t\r\n\r\n\t\t
\r\n\t)\r\n};\r\n\r\nexport default PlanePage;","import { baseApi } from 'utils/api/baseApi';\r\nimport { UserRoleRequest, UserRoleRequestData } from 'types/UserRoleRequest';\r\n\r\n\r\nconst rolesApi = baseApi.injectEndpoints({\r\n\toverrideExisting: false,\r\n\tendpoints: (builder) => ({\r\n\t\t\r\n\t\tgetRoleRequests: builder.query({\r\n\t\t\tquery: (icao) => ({\r\n\t\t\t\turl: 'Roles/GetUserRoleRequestData',\r\n\t\t\t\tparams: { icao },\r\n\t\t\t}),\r\n\t\t\tprovidesTags: ['RoleRequests']\r\n\t\t}),\r\n\r\n\t\tapproveRoleRequest: builder.mutation({\r\n\t\t\tquery: (requestId) => ({\r\n\t\t\t\turl: 'Roles/ApproveUserRoleRequest',\r\n\t\t\t\tparams: { requestId },\r\n\t\t\t}),\r\n\t\t\tinvalidatesTags: ['RoleRequests','UsersByAirport','AdminOnAirport']\r\n\t\t}),\r\n\r\n\t\trejectRoleRequest: builder.mutation({\r\n\t\t\tquery: (requestId) => ({\r\n\t\t\t\turl: 'Roles/DenyUserRoleRequest',\r\n\t\t\t\tparams: { requestId },\r\n\t\t\t}),\r\n\t\t\tinvalidatesTags: ['RoleRequests']\r\n\t\t}),\r\n\r\n\t\tsaveRoleRequest: builder.mutation({\r\n\t\t\tquery: (request) => ({\r\n\t\t\t\turl: 'Roles/PostUserRoleRequest',\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\tbody: request,\r\n\t\t\t}),\r\n\t\t\tinvalidatesTags: ['RoleRequests']\r\n\t\t}),\r\n\r\n\t\tremoveUserRole: builder.mutation({\r\n\t\t\tquery: ({ icao, role, userId }) => ({\r\n\t\t\t\turl: 'Roles/RemoveUserRole',\r\n\t\t\t\tparams: { icao, role, userId },\r\n\t\t\t}),\r\n\t\t\tinvalidatesTags: ['RoleRequests','UsersByAirport','AdminOnAirport']\r\n\t\t}),\r\n\t}),\r\n});\r\n\r\n\r\nexport const {\r\n\tuseLazyGetRoleRequestsQuery,\r\n\tuseApproveRoleRequestMutation,\r\n\tuseRejectRoleRequestMutation,\r\n\tuseSaveRoleRequestMutation,\r\n\tuseRemoveUserRoleMutation } = rolesApi;","import { createSelector } from '@reduxjs/toolkit';\r\nimport { RootState } from 'store';\r\nimport { UserRoleTypeEnum } from 'types/enums';\r\nimport { UserRoleRequest } from 'types/UserRoleRequest';\r\nimport { Airport } from 'types/Airport';\r\nimport { isValidEmail, isEmpty } from 'components/global/utils';\r\n\r\n\r\nexport const selectShowInvalids = (state: RootState) => state.assignAirport.showInvalids;\r\nexport const selectSelectedAirport = (state: RootState) => state.assignAirport.selectedAirport;\r\nexport const selectUserEmail = (state: RootState) => state.assignAirport.userEmail;\r\nexport const selectSelectedRole = (state: RootState) => state.assignAirport.selectedRole;\r\n\r\n\r\nexport const selectAssignIsInvalid = createSelector(\r\n\t[\r\n\t\tselectSelectedAirport,\r\n\t\tselectUserEmail,\r\n\t\tselectSelectedRole,\r\n\t],(\r\n\t\tselectedAirport: Airport | null,\r\n\t\tuserEmail: string,\r\n\t\tselectedRole: UserRoleTypeEnum | ''\r\n\t) => {\r\n\t\tif (isEmpty(selectedAirport)) return true;\r\n\t\tif (isEmpty(userEmail) || !isValidEmail(userEmail)) return true;\r\n\t\tif (isEmpty(selectedRole)) return true;\r\n\t\treturn false;\r\n});\r\n\r\n\r\nexport const selectModifiedAssign = createSelector(\r\n\t[\r\n\t\tselectSelectedAirport,\r\n\t\tselectUserEmail,\r\n\t\tselectSelectedRole,\r\n\t],(\r\n\t\tselectedAirport: Airport | null,\r\n\t\tuserEmail: string,\r\n\t\tselectedRole: UserRoleTypeEnum | ''\r\n\t) => {\r\n\t\tif (!selectedAirport) return null;\r\n\r\n\t\tconst newRoleRequest: UserRoleRequest = {\r\n\t\t\tid: 0,\r\n\t\t\tuserEmail: userEmail,\r\n\t\t\tairport: selectedAirport,\r\n\t\t\tuserRole: selectedRole\r\n\t\t};\r\n\t\treturn newRoleRequest;\r\n});","import { ChangeEvent, useEffect } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Form } from 'react-bootstrap';\r\nimport { setUserEmail } from \"components/forms/assign-airport/AssignStore\";\r\nimport { selectUserEmail, selectSelectedAirport, selectShowInvalids } from \"components/forms/assign-airport/AssignSelectors\";\r\nimport { selectUser } from \"store/globalSelectors\";\r\nimport { useLazyGetIsAdminOnAirportQuery } from 'utils/api/airports';\r\nimport { isValidEmail } from 'components/global/utils';\r\n\r\n\r\nconst UserEmail = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\t\r\n\tconst property = useSelector(selectUserEmail);\r\n\tconst selectedAirport = useSelector(selectSelectedAirport);\r\n\tconst user = useSelector(selectUser);\r\n\tconst showInvalids = useSelector(selectShowInvalids);\r\n\tconst dispatch = useDispatch();\r\n\tconst updateProperty = (value: string) => dispatch(setUserEmail(value));\r\n\tconst [ runQuery, { isSuccess, data: isAdmin } ] = useLazyGetIsAdminOnAirportQuery();\r\n\r\n\r\n\tuseEffect(() => {\r\n\t\tif (user)\r\n\t\t\tupdateProperty(user.email);\r\n\t}, []);\r\n\r\n\r\n\tuseEffect(() => {\r\n\t\tif (selectedAirport !== null)\r\n\t\t\trunQuery(selectedAirport.icao);\r\n\t}, [ selectedAirport ]);\r\n\r\n\r\n\tuseEffect(() => {\r\n\t\tif (isSuccess && isAdmin === true)\r\n\t\t\tupdateProperty(\"\");\r\n\t}, [ isSuccess, isAdmin ]);\r\n\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{t('labels.userEmail')}\r\n\t\t\t\r\n\t\t\t) => {\r\n\t\t\t\t\tif (event.target.value.length === 0)\r\n\t\t\t\t\t\tupdateProperty(\"\");\r\n\t\t\t\t\tif (event.target.value.length <= 100)\r\n\t\t\t\t\t\tupdateProperty(event.target.value);\r\n\t\t\t\t}} />\r\n\t\t\t\r\n\t\t\t\t{property === '' ? t('invalidMessages.required') : t('invalidMessages.unknown')}\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default UserEmail;","import { ChangeEvent } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Form } from 'react-bootstrap';\r\nimport { setSelectedRole } from \"components/forms/assign-airport/AssignStore\";\r\nimport { selectSelectedRole, selectShowInvalids } from \"components/forms/assign-airport/AssignSelectors\";\r\nimport { useGetPilotQuery } from 'utils/api/user';\r\nimport { UserRoleTypeEnum } from 'types/enums';\r\n\r\n\r\nconst SelectedRole = (): JSX.Element => {\r\n\tconst { t } = useTranslation([ 'formPages', 'global']);\r\n\t\r\n\tconst property = useSelector(selectSelectedRole);\r\n\tconst showInvalids = useSelector(selectShowInvalids);\r\n\tconst dispatch = useDispatch();\r\n\tconst updateProperty = (value: UserRoleTypeEnum) => dispatch(setSelectedRole(value));\r\n\r\n\tconst { isError, roles } = useGetPilotQuery(undefined, {\r\n\t\tselectFromResult: ({ isError, data }) => ({\r\n\t\t\tisError: isError,\r\n\t\t\troles: data?.roles\r\n\t\t})\r\n\t});\r\n\r\n\tconst isResident = roles ? roles.some(role => role === UserRoleTypeEnum.resident) : false;\r\n\tconst isAdmin = roles ? roles.some(role => role === UserRoleTypeEnum.admin) : false;\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{t('labels.role')}\r\n\t\t\t\r\n\t\t\t) => {\r\n\t\t\t\t\tupdateProperty(event.target.value as UserRoleTypeEnum);\r\n\t\t\t\t}}>\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t{true &&\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t{true &&\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\t{isError ? t('global:errorMessageShort') : t('invalidMessages.required')}\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default SelectedRole;","import { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport Select from 'react-select';\r\nimport { setSelectedAirport } from \"components/forms/assign-airport/AssignStore\";\r\nimport { selectSelectedAirport, selectShowInvalids } from \"components/forms/assign-airport/AssignSelectors\";\r\nimport { Airport } from 'types/Airport';\r\nimport { useGetAllAirportsQuery } from 'utils/api/airports';\r\n\r\n\r\nconst SelectedAirport = (): JSX.Element => {\r\n\tconst { t } = useTranslation([ 'formPages', 'global']);\r\n\t\r\n\tconst property = useSelector(selectSelectedAirport);\r\n\tconst showInvalids = useSelector(selectShowInvalids);\r\n\tconst dispatch = useDispatch();\r\n\tconst updateProperty = (value: Airport) => dispatch(setSelectedAirport(value));\r\n\tconst { data: allAirports, isError } = useGetAllAirportsQuery();\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t{t('labels.airport')}\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t\tname=\"airport\"\r\n\t\t\t\tclassName={`app-form-style app-form-react-select${(showInvalids && !property) || isError ? \" is-invalid\" : \"\"}`}\r\n\t\t\t\tclassNamePrefix=\"app-select\"\r\n\t\t\t\tvalue={property ? { value: property.icao, label: `${property.icao} - ${property.name}` } : undefined}\r\n\t\t\t\tplaceholder={t('global:appMenu.airportsSelect.hiddenOption')}\r\n\t\t\t\tnoOptionsMessage={() => {\r\n\t\t\t\t\tif (isError)\r\n\t\t\t\t\t\treturn t('global:appMenu.airportsSelect.invalidMessage')\r\n\t\t\t\t\treturn t('global:appMenu.airportsSelect.loadingMessage')\r\n\t\t\t\t}}\r\n\t\t\t\tonChange={(newValue) => {\r\n\t\t\t\t\tif (allAirports && newValue) {\r\n\t\t\t\t\t\tconst searchAirport = allAirports.find(x => x.icao === newValue.value);\r\n\t\t\t\t\t\tif (searchAirport) updateProperty(searchAirport);\r\n\t\t\t\t\t}\r\n\t\t\t\t}}\r\n\t\t\t\toptions={allAirports\r\n\t\t\t\t\t? allAirports.map(x => ({ value: x.icao, label: `${x.icao} - ${x.name}` }))\r\n\t\t\t\t\t: undefined}\r\n\t\t\t\t/>\r\n\t\t
\r\n\t)\r\n};\r\n\r\nexport default SelectedAirport;","import { useCallback } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { useNavigate } from \"react-router-dom\";\r\nimport { selectUserMode } from \"store/globalSelectors\";\r\nimport { UserModeEnum } from 'types/enums';\r\nimport { useSaveRoleRequestMutation } from 'utils/api/roles';\r\nimport { AppRoutesEnum } from 'components/global/routing/routesEnum';\r\nimport { setShowInvalids } from \"components/forms/assign-airport/AssignStore\";\r\nimport { selectAssignIsInvalid, selectModifiedAssign } from \"components/forms/assign-airport/AssignSelectors\";\r\nimport { FormConfirmButton, FormCancelButton } from 'components/global/FormButtons';\r\nimport UserEmail from 'components/forms/assign-airport/assign-form/UserEmail';\r\nimport SelectedRole from 'components/forms/assign-airport/assign-form/SelectedRole';\r\nimport SelectedAirport from 'components/forms/assign-airport/assign-form/SelectedAirport';\r\n\r\n\r\nconst AssignForm = (): JSX.Element => {\r\n\tconst { t } = useTranslation('global');\r\n\t\r\n\tconst isInvalid = useSelector(selectAssignIsInvalid);\r\n\tconst assign = useSelector(selectModifiedAssign);\r\n\tconst userMode = useSelector(selectUserMode);\r\n\tconst navigate = useNavigate();\r\n\tconst dispatch = useDispatch();\r\n\tconst showInvalids = (show: boolean) => dispatch(setShowInvalids(show));\r\n\tconst [ sendRequest, { isLoading, isError, isSuccess, data: returnedRequest } ] = useSaveRoleRequestMutation();\r\n\r\n\r\n\tconst handleCancel = useCallback(() => {\r\n\t\tnavigate(userMode === UserModeEnum.pilot ? `/${AppRoutesEnum.profile}` : AppRoutesEnum.basePath);\r\n\t},[ userMode ]);\r\n\r\n\t\r\n\tconst handleAssign = useCallback(async() => {\r\n\t\tif (isInvalid || !assign) {\r\n\t\t\tshowInvalids(true);\r\n\t\t\tsetTimeout(() => window.scrollTo(0, 0), 5);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst request = await sendRequest(assign).unwrap();\r\n\t\tif (request.success === true) {\r\n\t\t\thandleCancel();\r\n\t\t};\r\n\t},[ isInvalid, assign ]);\r\n\t\r\n\r\n\treturn (\r\n\t\t
\r\n\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\r\n\t\t\t{isSuccess && returnedRequest && returnedRequest.success === false &&\r\n\t\t\t\t

{returnedRequest.message ?? t('errorMessage')}

}\r\n\r\n\t\t\t{isError &&\r\n\t\t\t\t

{t('errorMessage')}

}\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\t isLoading ? {} : handleAssign()} />\r\n\r\n\t\t\t\t\r\n\t\t\t
\r\n\r\n\t\t
\r\n\t)\r\n};\r\n\r\nexport default AssignForm;","import { useEffect } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch } from \"react-redux\";\r\nimport { resetStore } from \"components/forms/assign-airport/AssignStore\";\r\nimport AssignForm from 'components/forms/assign-airport/assign-form/AssignForm';\r\n\r\n\r\nconst RegisterRolePage = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\r\n\tconst dispatch = useDispatch();\r\n\r\n\tuseEffect(() => {\r\n\t\treturn () => {\r\n\t\t\tdispatch(resetStore());\r\n\t\t}\r\n\t}, []);\r\n\r\n\r\n\treturn (\r\n\t\t
\r\n\r\n\t\t\t

{t('assignAirport.header')}

\r\n\r\n\t\t\t\r\n\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default RegisterRolePage;","import { createSelector } from '@reduxjs/toolkit';\r\nimport { RootState } from 'store';\r\nimport { User } from 'types/User';\r\nimport { AirportRequest } from 'types/Airport';\r\nimport formatISO from 'date-fns/formatISO';\r\nimport { isEmpty } from 'components/global/utils';\r\n\r\n\r\nexport const selectInitAirportRequest = (state: RootState) => state.airportPage.initAirportRequest;\r\nexport const selectShowInvalids = (state: RootState) => state.airportPage.showInvalids;\r\nexport const selectIcao = (state: RootState) => state.airportPage.icao;\r\nexport const selectName = (state: RootState) => state.airportPage.name;\r\nexport const selectUser = (state: RootState) => state.global.user;\r\n\r\n\r\nexport const selectAirportIsInvalid = createSelector(\r\n\t[\r\n\t\tselectName\r\n\t],(\r\n\t\tname: string\r\n\t) => {\r\n\t\tif (isEmpty(name)) return true;\r\n\t\treturn false;\r\n});\r\n\r\n\r\nexport const selectAirportRequest = createSelector(\r\n\t[\r\n\t\tselectInitAirportRequest,\r\n\t\tselectIcao,\r\n\t\tselectName,\r\n\t\tselectUser\r\n\t],(\r\n\t\tinitAirportRequest: AirportRequest | null,\r\n\t\ticao: string,\r\n\t\tname: string,\r\n\t\tuser: User | null\r\n\t) => {\r\n\t\tif (!user) return null;\r\n\r\n\t\tconst request: AirportRequest = {\r\n\t\t\tid: initAirportRequest ? initAirportRequest.id : 0,\r\n\t\t\ticao: icao,\r\n\t\t\tname: name,\r\n\t\t\teditedByUser: user.uid,\r\n\t\t\tcreated: formatISO(new Date()),\r\n\t\t\tcreatedBy: user.uid\r\n\t\t};\r\n\t\treturn request;\r\n});\r\n\r\n\r\nexport const selectIsSameAirport = createSelector(\r\n\t[\r\n\t\tselectInitAirportRequest,\r\n\t\tselectName\r\n\t],(\r\n\t\tinitAirportRequest: AirportRequest | null,\r\n\t\tname: string\r\n\t) => {\r\n\t\tif (initAirportRequest && initAirportRequest.name === name) return true;\r\n\t\treturn false;\r\n});","import { ChangeEvent } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { /*useDispatch,*/ useSelector } from \"react-redux\";\r\nimport { Form } from 'react-bootstrap';\r\n//import { setName } from \"components/forms/airport-page/AirportStore\";\r\nimport { selectName/*, selectShowInvalids*/ } from \"components/forms/airport-page/AirportSelectors\";\r\n\r\n\r\nconst Name = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\t\r\n\tconst property = useSelector(selectName);\r\n\t//const showInvalids = useSelector(selectShowInvalids);\r\n\t//const dispatch = useDispatch();\r\n\t//const updateProperty = (value: string) => dispatch(setName(value));\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{t('labels.name')}\r\n\t\t\t\r\n\t\t\t) => {\r\n\t\t\t\t\t/*if (event.target.value.length === 0)\r\n\t\t\t\t\t\tupdateProperty(\"\");\r\n\t\t\t\t\tif (event.target.value.length <= 100)\r\n\t\t\t\t\t\tupdateProperty(event.target.value);*/\r\n\t\t\t\t}} />\r\n\t\t\t\r\n\t\t\t\t{t('invalidMessages.required')}\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default Name;","import { ModifiableBusinessEntity, BusinessEntityRequest } from 'types/BusinessEntity';\r\nimport { hasOwnPropertyTS } from 'utils/typescriptGuards';\r\n\r\n\r\nexport const getChangedProperties = (entity: ModifiableBusinessEntity | undefined | null, entityRequest: BusinessEntityRequest | undefined | null) => {\r\n\tlet emptyArray: Array = [];\r\n\tif (!entity || !entityRequest) return emptyArray;\r\n\r\n\tconst filledArray = Object.keys(entity).reduce((acc, property) => {\r\n\t\tlet firstValue = hasOwnPropertyTS(entity, property) ? entity[property] : null;\r\n\t\tlet secondValue = hasOwnPropertyTS(entityRequest, property) ? entityRequest[property] : null;\r\n\r\n\t\tif (firstValue !== null && secondValue !== null && firstValue !== secondValue) {\r\n\t\t\tacc.push(property as keyof ModifiableBusinessEntity);\r\n\t\t}\r\n\t\treturn acc;\r\n\t},emptyArray);\r\n\r\n\treturn filledArray;\r\n}","import { useTranslation } from 'react-i18next';\r\n\r\n\r\nconst GridHeader = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t
\r\n\t\t\t\t{t('labels.name')}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{t('labels.emailPhone')}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{t('labels.registrationNumberShort')}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{t('labels.companyTax')}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{t('labels.bankAccount')}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{t('labels.iban')}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{t('labels.address')}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default GridHeader;","import { baseApi } from 'utils/api/baseApi';\r\nimport { BusinessEntity, BusinessEntityRequest } from 'types/BusinessEntity';\r\n\r\n\r\nconst businessEntityApi = baseApi.injectEndpoints({\r\n\toverrideExisting: false,\r\n\tendpoints: (builder) => ({\r\n\r\n\t\tapproveBusinessEntity: builder.mutation({\r\n\t\t\tquery: (id) => ({\r\n\t\t\t\turl: 'BusinessEntity/Approve',\r\n\t\t\t\tparams: { id },\r\n\t\t\t}),\r\n\t\t\tinvalidatesTags: ['AirportsByUser','BusinessEntities','ApprovedBusinessEntities']\r\n\t\t}),\r\n\r\n\t\trejectBusinessEntity: builder.mutation({\r\n\t\t\tquery: (id) => ({\r\n\t\t\t\turl: 'BusinessEntity/Reject',\r\n\t\t\t\tparams: { id },\r\n\t\t\t}),\r\n\t\t\tinvalidatesTags: ['AirportsByUser','BusinessEntities','ApprovedBusinessEntities']\r\n\t\t}),\r\n\r\n\t\tstartEditBusinessEntity: builder.query({\r\n\t\t\tquery: (id) => ({\r\n\t\t\t\turl: 'BusinessEntity/StartEdit',\r\n\t\t\t\tparams: { id },\r\n\t\t\t}),\r\n\t\t\tkeepUnusedDataFor: 0,\r\n\t\t}),\r\n\r\n\t\tcancelEditBusinessEntity: builder.query({\r\n\t\t\tquery: (id) => ({\r\n\t\t\t\turl: 'BusinessEntity/CancelEdit',\r\n\t\t\t\tparams: { id },\r\n\t\t\t}),\r\n\t\t\tkeepUnusedDataFor: 0,\r\n\t\t}),\r\n\r\n\t\tsaveEditBusinessEntity: builder.query({\r\n\t\t\tquery: (id) => ({\r\n\t\t\t\turl: 'BusinessEntity/SaveEdit',\r\n\t\t\t\tparams: { id },\r\n\t\t\t}),\r\n\t\t\tkeepUnusedDataFor: 0,\r\n\t\t}),\r\n\r\n\t\tdeleteBusinessEntity: builder.mutation({\r\n\t\t\tquery: (id) => ({\r\n\t\t\t\turl: 'BusinessEntity/DeleteBusinessEntity',\r\n\t\t\t\tparams: { id },\r\n\t\t\t}),\r\n\t\t\tinvalidatesTags: ['AirportsByUser','BusinessEntities','ApprovedBusinessEntities']\r\n\t\t}),\r\n\t\t\r\n\t\tsaveBusinessEntityRequest: builder.mutation({\r\n\t\t\tquery: (request) => ({\r\n\t\t\t\turl: 'BusinessEntity/Save',\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\tbody: request,\r\n\t\t\t}),\r\n\t\t\tinvalidatesTags: ['AirportsByUser','BusinessEntities','ApprovedBusinessEntities']\r\n\t\t}),\r\n\t}),\r\n});\r\n\r\n\r\nexport const {\r\n\tuseApproveBusinessEntityMutation,\r\n\tuseRejectBusinessEntityMutation,\r\n\tuseLazyStartEditBusinessEntityQuery,\r\n\tuseLazyCancelEditBusinessEntityQuery,\r\n\tuseLazySaveEditBusinessEntityQuery,\r\n\tuseDeleteBusinessEntityMutation,\r\n\tuseSaveBusinessEntityRequestMutation } = businessEntityApi;","import { useTranslation } from 'react-i18next';\r\nimport { useSelector, useDispatch } from \"react-redux\";\r\nimport { useNavigate } from \"react-router-dom\";\r\nimport { BusinessEntity } from 'types/BusinessEntity';\r\nimport { AppRoutesEnum } from 'components/global/routing/routesEnum';\r\nimport { initAirportCompany } from \"components/forms/airport-company/AirportCompanyStore\";\r\nimport { selectIcao } from \"components/forms/airport-page/AirportSelectors\";\r\nimport { GridEditButton, GridRemoveButton } from 'components/global/GridButtons';\r\nimport { useDeleteBusinessEntityMutation } from 'utils/api/businessEntity';\r\n\r\n\r\ninterface RowButtonsProps {\r\n\tentity: BusinessEntity\r\n}\r\n \r\n\r\nconst RowButtons = (props: RowButtonsProps): JSX.Element => {\r\n\tconst { entity } = props;\r\n\tconst { t } = useTranslation('global');\r\n\r\n\tconst selectedIcao = useSelector(selectIcao);\r\n\tconst navigate = useNavigate();\r\n\tconst dispatch = useDispatch();\r\n\tconst [ runDelete, { isLoading, isError, data } ] = useDeleteBusinessEntityMutation();\r\n\tconst approverMessageClass = 'app-grid-cell primary-cell centered-cell approver-message';\r\n\r\n\r\n\tif (entity.changeRequest) return (\r\n\t\t
\r\n\t);\r\n\r\n\t\r\n\tif (data && data.success === false && data.message) return (\r\n\t\t
\r\n\t\t\t

{data.message ?? t('errorMessageShort')}

\r\n\t\t
\r\n\t);\r\n\r\n\r\n\tif (isError) return (\r\n\t\t
\r\n\t\t\t

{t('errorMessageShort')}

\r\n\t\t
\r\n\t);\r\n\r\n\t\r\n\treturn (\r\n\t\t
\r\n\t\t\t {\r\n\t\t\t\t\tif (!entity || isLoading) return;\r\n\t\t\t\t\tdispatch(initAirportCompany({ businessEntity: entity, airportIcao: selectedIcao }));\r\n\t\t\t\t\tnavigate(`/${AppRoutesEnum.airportCompany}`);\r\n\t\t\t\t}} />\r\n\r\n\t\t\t isLoading ? {} : runDelete(entity.id)} />\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default RowButtons;","import { memo, useCallback } from 'react';\r\nimport { BusinessEntity, ModifiableBusinessEntity } from 'types/BusinessEntity';\r\nimport { SettingsType, CellPropertiesType, getRequestCellClassName } from 'components/global/GridElements';\r\nimport RowButtons from 'components/forms/airport-page/airport-form/business-grid/RowButtons';\r\n\r\n\r\ninterface GridRowProps {\r\n\tentity: BusinessEntity,\r\n\tchangedProperties: Array\r\n}\r\n \r\n\r\nconst GridRow = (props: GridRowProps): JSX.Element => {\r\n\tconst { entity, changedProperties } = props;\r\n\tconst { name, companyEmail, phoneNumber, registrationNumber, taxNumber, bankAccount, iban, street, city, postalCode, country } = props.entity;\r\n\tconst rowSettings: SettingsType = { centered: true };\r\n\r\n\tconst getClassName = useCallback((cellProperties: CellPropertiesType, settings?: SettingsType) => \r\n\t\tgetRequestCellClassName({ changedProperties, primary: true, cellProperties, settings })\r\n\t,[ changedProperties ]);\r\n\r\n\r\n\tif (entity && entity.changeRequest && entity.changeRequest.itemAdded) return (\r\n\t\t<>\r\n\t\t\t{Array(8).fill('').map((x,i) =>\r\n\t\t\t\t
-
)}\r\n\t\t\r\n\t)\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t
\r\n\t\t\t\t

{name}

\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t

{companyEmail}

\r\n\t\t\t\t

{phoneNumber}

\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t

{registrationNumber}

\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t

{taxNumber}

\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t

{bankAccount}

\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t

{iban}

\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t

{street}

\r\n\t\t\t\t

{city}

\r\n\t\t\t\t

{postalCode}

\r\n\t\t\t\t

{country}

\r\n\t\t\t
\r\n\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default memo(GridRow);","import { useTranslation } from 'react-i18next';\r\nimport { useSelector } from \"react-redux\";\r\nimport { selectUserId } from \"store/globalSelectors\";\r\nimport { BusinessEntityRequest } from 'types/BusinessEntity';\r\nimport { useApproveBusinessEntityMutation, useRejectBusinessEntityMutation } from 'utils/api/businessEntity';\r\nimport { GridApproveButton, GridRejectButton } from 'components/global/GridButtons';\r\n\r\n\r\ninterface RequestButtonsProps {\r\n\tentity: BusinessEntityRequest\r\n}\r\n \r\n\r\nconst RequestButtons = (props: RequestButtonsProps): JSX.Element => {\r\n\tconst { id, firstApprover, secondApprover, itemDeleted, itemAdded } = props.entity;\r\n\tconst { t } = useTranslation('global');\r\n\t\r\n\tconst userId = useSelector(selectUserId);\r\n\tconst [ approveRequest, { isLoading: apLoading, data: apData, isError: apError } ] = useApproveBusinessEntityMutation();\r\n\tconst [ rejectRequest, { isLoading: rjLoading, data: rjData, isError: rjError } ] = useRejectBusinessEntityMutation();\r\n\tconst approverMessageClass = `app-grid-cell secondary-cell centered-cell approver-message${\r\n\t\titemDeleted ? ' deleted-cell' : ''}${\r\n\t\titemAdded ? ' added-cell' : ''}`;\r\n\r\n\t\r\n\tif (apError || rjError) return (\r\n\t\t
\r\n\t\t\t

{t('errorMessageShort')}

\r\n\t\t
\r\n\t);\r\n\r\n\r\n\tif (firstApprover && firstApprover.uid === userId) return (\r\n\t\t
\r\n\t\t\t

{t('gridMessages.waiting')}

\r\n\t\t
\r\n\t);\r\n\r\n\r\n\tif (secondApprover && secondApprover.uid === userId) return (\r\n\t\t
\r\n\t\t\t

{t('gridMessages.waiting')}

\r\n\t\t
\r\n\t);\r\n\r\n\r\n\tif (apData && apData.success === false && apData.message) return (\r\n\t\t
\r\n\t\t\t

{apData.message ?? t('errorMessageShort')}

\r\n\t\t
\r\n\t);\r\n\r\n\r\n\tif (rjData && rjData.success === false && rjData.message) return (\r\n\t\t
\r\n\t\t\t

{rjData.message ?? t('errorMessageShort')}

\r\n\t\t
\r\n\t);\r\n\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t (apLoading || rjLoading) ? {} : approveRequest(id)} />\r\n\r\n\t\t\t (apLoading || rjLoading) ? {} : rejectRequest(id)} />\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default RequestButtons;","import { memo, useCallback } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { ModifiableBusinessEntity, BusinessEntityRequest } from 'types/BusinessEntity';\r\nimport RequestButtons from 'components/forms/airport-page/airport-form/business-grid/RequestButtons';\r\nimport { SettingsType, CellPropertiesType, getRequestCellClassName } from 'components/global/GridElements';\r\n\r\n\r\ninterface GridRowRequestProps {\r\n\tentity: BusinessEntityRequest,\r\n\tchangedProperties: Array\r\n}\r\n \r\n\r\nconst GridRowRequest = (props: GridRowRequestProps): JSX.Element => {\r\n\tconst { entity, changedProperties } = props;\r\n\tconst { name, companyEmail, phoneNumber, registrationNumber, taxNumber,\r\n\t\tbankAccount, iban, street, city, postalCode, country, itemDeleted, itemAdded } = props.entity;\r\n\tconst { t } = useTranslation('global');\r\n\t\r\n\tconst rowSettings: SettingsType = { centered: true, deleted: itemDeleted, added: itemAdded };\r\n\r\n\tconst getClassName = useCallback((cellProperties: CellPropertiesType, settings?: SettingsType) => \r\n\t\tgetRequestCellClassName({ changedProperties, primary: false, cellProperties, settings })\r\n\t,[ changedProperties ]);\r\n\r\n\r\n\tif (itemDeleted) return (\r\n\t\t<>\r\n\t\t\t
\r\n\t\t\t\t

{t('gridMessages.deleteItem')}

\r\n\t\t\t\t

{name}

\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t{Array(6).fill('').map((x,i) =>\r\n\t\t\t\t
-
)}\r\n\r\n\t\t\t\r\n\t\t\r\n\t);\r\n\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t{itemAdded &&\r\n\t\t\t\t
\r\n\t\t\t\t\t

{t('gridMessages.newItem')}

\r\n\t\t\t\t\t

{name}

\r\n\t\t\t\t
}\r\n\t\t\t\r\n\t\t\t{!itemAdded &&\r\n\t\t\t\t
\r\n\t\t\t\t\t

{name}

\r\n\t\t\t\t
}\r\n\r\n\t\t\t
\r\n\t\t\t\t

{companyEmail}

\r\n\t\t\t\t

{phoneNumber}

\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t

{registrationNumber}

\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t

{taxNumber}

\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t

{bankAccount}

\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t

{iban}

\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t

{street}

\r\n\t\t\t\t

{city}

\r\n\t\t\t\t

{postalCode}

\r\n\t\t\t\t

{country}

\r\n\t\t\t
\r\n\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default memo(GridRowRequest);","import { useEffect, Fragment } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { useNavigate } from \"react-router-dom\";\r\nimport { getChangedProperties } from 'components/forms/airport-page/airport-form/business-grid/utils';\r\nimport { useLazyGetIsAdminOnAirportQuery, useGetBusinessEntitiesQuery } from 'utils/api/airports';\r\nimport { selectIcao } from \"components/forms/airport-page/AirportSelectors\";\r\nimport { AppRoutesEnum } from 'components/global/routing/routesEnum';\r\nimport { initAirportCompany } from \"components/forms/airport-company/AirportCompanyStore\";\r\nimport GridHeader from 'components/forms/airport-page/airport-form/business-grid/GridHeader';\r\nimport GridRow from 'components/forms/airport-page/airport-form/business-grid/GridRow';\r\nimport GridRowRequest from 'components/forms/airport-page/airport-form/business-grid/GridRowRequest';\r\nimport { GridLoading, GridError, GridNoAdmin } from 'components/global/GridElements';\r\nimport { GridNewRecord } from 'components/global/GridButtons';\r\n//import { fakeAirportCompanies } from 'utils/fake-data/airportCompanies';\r\n\r\n\r\nconst Grid = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\r\n\tconst selectedIcao = useSelector(selectIcao);\r\n\tconst navigate = useNavigate();\r\n\tconst dispatch = useDispatch();\r\n\r\n\r\n\tconst [ isAdminOnAirport, { isLoading: adLoading, isSuccess: adSuccess, data: adData, isError: adError } ] = useLazyGetIsAdminOnAirportQuery();\r\n\tconst { data, isLoading, isError, isSuccess } = useGetBusinessEntitiesQuery(selectedIcao);\r\n\r\n\t\r\n\tuseEffect(() => {\r\n\t\tif (selectedIcao !== '') isAdminOnAirport(selectedIcao);\r\n\t}, [ selectedIcao ]);\r\n\r\n\r\n\tif (isLoading || adLoading) return (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n\r\n\tif (isError || adError) return (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n\r\n\tif (adSuccess && adData === false) return ( /*if(false) return (*/\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n\r\n\treturn (\r\n\t\t
\r\n\r\n\t\t\t\r\n\r\n\t\t\t{isSuccess && data && data.map(x => /*fakeAirportCompanies.map(x =>*/\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t{x.changeRequest &&\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t)}\r\n\r\n\t\t\t {\r\n\t\t\t\t\tdispatch(initAirportCompany({ businessEntity: null, airportIcao: selectedIcao }));\r\n\t\t\t\t\tnavigate(`/${AppRoutesEnum.airportCompany}`)\r\n\t\t\t\t}}/>\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default Grid;","import { useCallback } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { useNavigate } from \"react-router-dom\";\r\nimport { selectUserMode } from \"store/globalSelectors\";\r\nimport { UserModeEnum } from 'types/enums';\r\n//import { useLazyCancelEditRequestQuery, useLazySaveEditRequestQuery, useSaveAirportRequestMutation } from 'utils/api/airports';\r\nimport { GridLabel } from 'components/global/GridElements';\r\nimport { AppRoutesEnum } from 'components/global/routing/routesEnum';\r\nimport { resetStore/*, setShowInvalids*/ } from \"components/forms/airport-page/AirportStore\";\r\nimport { /*selectAirportIsInvalid, selectIsSameAirport, selectAirportRequest, */selectIcao } from \"components/forms/airport-page/AirportSelectors\";\r\nimport { /*FormConfirmButton, */FormCancelButton } from 'components/global/FormButtons';\r\nimport Name from 'components/forms/airport-page/airport-form/Name';\r\nimport Grid from 'components/forms/airport-page/airport-form/business-grid/Grid';\r\n\r\n\r\nconst AirportForm = (): JSX.Element => {\r\n\tconst { t } = useTranslation([ 'formPages', 'global' ]);\r\n\r\n\tconst icao = useSelector(selectIcao);\r\n\t//const isInvalid = useSelector(selectAirportIsInvalid);\r\n\t//const isSame = useSelector(selectIsSameAirport);\r\n\t//const request = useSelector(selectAirportRequest);\r\n\tconst userMode = useSelector(selectUserMode);\r\n\t\r\n\tconst navigate = useNavigate();\r\n\tconst dispatch = useDispatch();\r\n\t//const showInvalids = (show: boolean) => dispatch(setShowInvalids(show));\r\n\t//const [ cancelEdit ] = useLazyCancelEditRequestQuery();\r\n\t//const [ saveEdit ] = useLazySaveEditRequestQuery();\r\n\t//const [ saveRequest, { isLoading, isError, isSuccess, data } ] = useSaveAirportRequestMutation();\r\n\r\n\r\n\tconst handleCancel = useCallback(() => {\r\n\t\t//cancelEdit(icao);\r\n\t\tdispatch(resetStore());\r\n\t\tnavigate(userMode === UserModeEnum.pilot ? `/${AppRoutesEnum.profile}` : AppRoutesEnum.basePath);\r\n\t},[ icao, userMode ]);\r\n\r\n\t\r\n\t/*const handleSave = useCallback(async() => {\r\n\t\tif (isInvalid || !request) {\r\n\t\t\tshowInvalids(true);\r\n\t\t\tsetTimeout(() => window.scrollTo(0, 0), 5);\r\n\t\t\treturn;\r\n\t\t};\r\n\t\tlet response = await saveRequest(request).unwrap();\r\n\t\tif (response.success === true) {\r\n\t\t\tsaveEdit(icao);\r\n\t\t\tdispatch(resetStore());\r\n\t\t\tnavigate(AppRoutesEnum.basePath);\r\n\t\t};\r\n\t},[ isInvalid, request, icao ]);*/\r\n\t\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t\t{/*isSuccess && data && data.success === false &&\r\n\t\t\t\t

{data.message ?? t('global:errorMessage')}

*/}\r\n\r\n\t\t\t{/*isError &&\r\n\t\t\t\t

{t('global:errorMessage')}

*/}\r\n\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default AirportForm;","import { useEffect } from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useNavigate } from \"react-router-dom\";\r\nimport { selectUserMode } from \"store/globalSelectors\";\r\nimport { UserModeEnum } from 'types/enums';\r\nimport { useStartEditRequestQuery } from 'utils/api/airports';\r\nimport { AppRoutesEnum } from 'components/global/routing/routesEnum';\r\nimport { selectIcao } from 'components/forms/airport-page/AirportSelectors';\r\nimport { PageLoading, PageError } from 'components/global/PageElements';\r\nimport AirportForm from 'components/forms/airport-page/airport-form/AirportForm';\r\n\r\n\r\nconst AirportPage = (): JSX.Element => {\r\n\tconst { t } = useTranslation([ 'formPages', 'global' ]);\r\n\r\n\tconst icao = useSelector(selectIcao);\r\n\tconst userMode = useSelector(selectUserMode);\r\n\tconst navigate = useNavigate();\r\n\tconst { isLoading, data, isError, isSuccess } = useStartEditRequestQuery(icao, { pollingInterval: 60 * 1000 });\r\n\tconst navigateBack = () => navigate(userMode === UserModeEnum.pilot ? `/${AppRoutesEnum.profile}` : AppRoutesEnum.basePath);\r\n\r\n\t\r\n\tuseEffect(() => {\r\n\t\tif (icao === '')\r\n\t\t\tnavigateBack();\r\n\t}, [ icao ]);\r\n\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t\t\t\r\n\t\t\t

{t('airport.header')}

\r\n\r\n\t\t\t{isLoading &&\r\n\t\t\t\t}\r\n\r\n\t\t\t{isError &&\r\n\t\t\t\t}\r\n\r\n\t\t\t{data && data.success === false &&\r\n\t\t\t\t}\r\n\r\n\t\t\t{isSuccess && data && data.success === true &&\r\n\t\t\t\t}\r\n\r\n\t\t
\r\n\t)\r\n};\r\n\r\nexport default AirportPage;","import { createSelector } from '@reduxjs/toolkit';\r\nimport { RootState } from 'store';\r\nimport { User } from 'types/User';\r\nimport { BusinessEntityRequest } from 'types/BusinessEntity';\r\nimport formatISO from 'date-fns/formatISO';\r\nimport { isValidEmail, isValidPhoneNumber, isEmpty } from 'components/global/utils';\r\n\r\n\r\nexport const selectInitAirportsCompanyRequest = (state: RootState) => state.airportCompany.initAirportsCompanyRequest;\r\nexport const selectAirportsCompanyId = (state: RootState) => state.airportCompany.airportsCompanyId;\r\nexport const selectAirportIcao = (state: RootState) => state.airportCompany.airportIcao;\r\nexport const selectShowInvalids = (state: RootState) => state.airportCompany.showInvalids;\r\nexport const selectName = (state: RootState) => state.airportCompany.name;\r\nexport const selectCompanyEmail = (state: RootState) => state.airportCompany.companyEmail;\r\nexport const selectPhoneNumber = (state: RootState) => state.airportCompany.phoneNumber;\r\nexport const selectRegistrationNumber = (state: RootState) => state.airportCompany.registrationNumber;\r\nexport const selectTaxNumber = (state: RootState) => state.airportCompany.taxNumber;\r\nexport const selectStreet = (state: RootState) => state.airportCompany.street;\r\nexport const selectCity = (state: RootState) => state.airportCompany.city;\r\nexport const selectPostalCode = (state: RootState) => state.airportCompany.postalCode;\r\nexport const selectCountry = (state: RootState) => state.airportCompany.country;\r\nexport const selectBankAccount = (state: RootState) => state.airportCompany.bankAccount;\r\nexport const selectIban = (state: RootState) => state.airportCompany.iban;\r\nexport const selectCurrency = (state: RootState) => state.airportCompany.currency;\r\nexport const selectUser = (state: RootState) => state.global.user;\r\n\r\n\r\nexport const selectCompanyIsInvalid = createSelector(\r\n\t[\r\n\t\tselectName,\r\n\t\tselectTaxNumber,\r\n\t\tselectRegistrationNumber,\r\n\t\tselectStreet,\r\n\t\tselectCity,\r\n\t\tselectPostalCode,\r\n\t\tselectCountry,\r\n\t\tselectBankAccount,\r\n\t\tselectIban,\r\n\t\tselectCurrency,\r\n\t\tselectCompanyEmail,\r\n\t\tselectPhoneNumber\r\n\t],(\r\n\t\tname: string,\r\n\t\ttaxNumber: string,\r\n\t\tregistrationNumber: string,\r\n\t\tstreet: string,\r\n\t\tcity: string,\r\n\t\tpostalCode: string,\r\n\t\tcountry: string,\r\n\t\tbankAccount: string,\r\n\t\tiban: string,\r\n\t\tcurrency: string,\r\n\t\temail: string,\r\n\t\tphoneNumber: string\r\n\t) => {\r\n\t\tif (isEmpty(name)) return true;\r\n\t\tif (isEmpty(taxNumber)) return true;\r\n\t\tif (isEmpty(registrationNumber)) return true;\r\n\t\tif (isEmpty(street)) return true;\r\n\t\tif (isEmpty(city)) return true;\r\n\t\tif (isEmpty(postalCode)) return true;\r\n\t\tif (isEmpty(country)) return true;\r\n\t\tif (isEmpty(bankAccount)) return true;\r\n\t\tif (isEmpty(iban)) return true;\r\n\t\tif (isEmpty(currency)) return true;\r\n\t\tif (isEmpty(email) || !isValidEmail(email)) return true;\r\n\t\tif (isEmpty(phoneNumber) || !isValidPhoneNumber(phoneNumber)) return true;\r\n\t\treturn false;\r\n});\r\n\r\n\r\nexport const selectModifiedCompany = createSelector(\r\n\t[\r\n\t\tselectInitAirportsCompanyRequest,\r\n\t\tselectAirportsCompanyId,\r\n\t\tselectAirportIcao,\r\n\t\tselectName,\r\n\t\tselectCompanyEmail,\r\n\t\tselectPhoneNumber,\r\n\t\tselectRegistrationNumber,\r\n\t\tselectTaxNumber,\r\n\t\tselectStreet,\r\n\t\tselectCity,\r\n\t\tselectPostalCode,\r\n\t\tselectCountry,\r\n\t\tselectBankAccount,\r\n\t\tselectIban,\r\n\t\tselectCurrency,\r\n\t\tselectUser\r\n\t],(\r\n\t\tinitRequest: BusinessEntityRequest | null,\r\n\t\tairportsCompanyId: number,\r\n\t\tairportIcao: string,\r\n\t\tname: string,\r\n\t\temail: string,\r\n\t\tphoneNumber: string,\r\n\t\tregistrationNumber: string,\r\n\t\ttaxNumber: string,\r\n\t\tstreet: string,\r\n\t\tcity: string,\r\n\t\tpostalCode: string,\r\n\t\tcountry: string,\r\n\t\tbankAccount: string,\r\n\t\tiban: string,\r\n\t\tcurrency: string,\r\n\t\tuser: User | null\r\n\t) => {\r\n\t\tif (!user) return null;\r\n\r\n\t\tconst newRequest: BusinessEntityRequest = {\r\n\t\t\tid: initRequest ? initRequest.id : 0,\r\n\t\t\tbusinessEntityId: airportsCompanyId,\r\n\t\t\tairportIcao: airportIcao,\r\n\t\t\tcreated: formatISO(new Date()),\r\n\t\t\tcreatedBy: user.uid,\r\n\t\t\teditedByUser: user.uid,\r\n\r\n\t\t\tname: name,\r\n\t\t\tcompanyEmail: email,\r\n\t\t\tphoneNumber: phoneNumber,\r\n\t\t\tregistrationNumber: registrationNumber,\r\n\t\t\ttaxNumber: taxNumber,\r\n\t\t\tstreet: street,\r\n\t\t\tcity: city,\r\n\t\t\tpostalCode: postalCode,\r\n\t\t\tcountry: country,\r\n\t\t\tbankAccount: bankAccount,\r\n\t\t\tiban: iban,\r\n\t\t\tcurrency: currency,\r\n\t\t\tentityType: \"NotDefined\"\r\n\t\t};\r\n\t\treturn newRequest;\r\n});\r\n\r\n\r\n\r\nexport const selectIsSameCompany = createSelector(\r\n\t[\r\n\t\tselectInitAirportsCompanyRequest,\r\n\t\tselectName,\r\n\t\tselectCompanyEmail,\r\n\t\tselectPhoneNumber,\r\n\t\tselectRegistrationNumber,\r\n\t\tselectTaxNumber,\r\n\t\tselectStreet,\r\n\t\tselectCity,\r\n\t\tselectPostalCode,\r\n\t\tselectCountry,\r\n\t\tselectBankAccount,\r\n\t\tselectIban,\r\n\t\tselectCurrency\r\n\t],(\r\n\t\tinitRequest: BusinessEntityRequest | null,\r\n\t\tname: string,\r\n\t\temail: string,\r\n\t\tphoneNumber: string,\r\n\t\tregistrationNumber: string,\r\n\t\ttaxNumber: string,\r\n\t\tstreet: string,\r\n\t\tcity: string,\r\n\t\tpostalCode: string,\r\n\t\tcountry: string,\r\n\t\tbankAccount: string,\r\n\t\tiban: string,\r\n\t\tcurrency: string\r\n\t) => {\r\n\t\tif (initRequest\r\n\t\t\t&& initRequest.name === name\r\n\t\t\t&& initRequest.companyEmail === email\r\n\t\t\t&& initRequest.phoneNumber === phoneNumber\r\n\t\t\t&& initRequest.registrationNumber === registrationNumber\r\n\t\t\t&& initRequest.taxNumber === taxNumber\r\n\t\t\t&& initRequest.street === street\r\n\t\t\t&& initRequest.city === city\r\n\t\t\t&& initRequest.postalCode === postalCode\r\n\t\t\t&& initRequest.country === country\r\n\t\t\t&& initRequest.bankAccount === bankAccount\r\n\t\t\t&& initRequest.iban === iban\r\n\t\t\t&& initRequest.currency === currency\r\n\t\t\t) return true;\r\n\t\treturn false;\r\n});","import { ChangeEvent } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Form } from 'react-bootstrap';\r\nimport { setName } from \"components/forms/airport-company/AirportCompanyStore\";\r\nimport { selectName, selectShowInvalids } from \"components/forms/airport-company/AirportCompanySelectors\";\r\n\r\n\r\nconst Name = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\t\r\n\tconst property = useSelector(selectName);\r\n\tconst showInvalids = useSelector(selectShowInvalids);\r\n\tconst dispatch = useDispatch();\r\n\tconst updateProperty = (value: string) => dispatch(setName(value));\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{t('labels.name')} *\r\n\t\t\t\r\n\t\t\t) => {\r\n\t\t\t\t\tif (event.target.value.length === 0)\r\n\t\t\t\t\t\tupdateProperty(\"\");\r\n\t\t\t\t\tif (event.target.value.length <= 255)\r\n\t\t\t\t\t\tupdateProperty(event.target.value);\r\n\t\t\t\t}} />\r\n\t\t\t\r\n\t\t\t\t{t('invalidMessages.required')}\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default Name;","import { ChangeEvent } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Form } from 'react-bootstrap';\r\nimport { setCompanyEmail } from \"components/forms/airport-company/AirportCompanyStore\";\r\nimport { selectCompanyEmail, selectShowInvalids } from \"components/forms/airport-company/AirportCompanySelectors\";\r\nimport { isValidEmail } from 'components/global/utils';\r\n\r\n\r\nconst CompanyEmail = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\t\r\n\tconst property = useSelector(selectCompanyEmail);\r\n\tconst showInvalids = useSelector(selectShowInvalids);\r\n\tconst dispatch = useDispatch();\r\n\tconst updateProperty = (value: string) => dispatch(setCompanyEmail(value));\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{t('labels.email')} *\r\n\t\t\t\r\n\t\t\t) => {\r\n\t\t\t\t\tif (event.target.value.length === 0)\r\n\t\t\t\t\t\tupdateProperty(\"\");\r\n\t\t\t\t\tif (event.target.value.length <= 100)\r\n\t\t\t\t\t\tupdateProperty(event.target.value);\r\n\t\t\t\t}} />\r\n\t\t\t\r\n\t\t\t\t{property === '' ? t('invalidMessages.required') : t('invalidMessages.unknown')}\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default CompanyEmail;","import { ChangeEvent } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Form } from 'react-bootstrap';\r\nimport { setPhoneNumber } from \"components/forms/airport-company/AirportCompanyStore\";\r\nimport { selectPhoneNumber, selectShowInvalids } from \"components/forms/airport-company/AirportCompanySelectors\";\r\nimport { isValidPhoneNumber } from 'components/global/utils';\r\n\r\n\r\nconst PhoneNumber = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\t\r\n\tconst property = useSelector(selectPhoneNumber);\r\n\tconst showInvalids = useSelector(selectShowInvalids);\r\n\tconst dispatch = useDispatch();\r\n\tconst updateProperty = (value: string) => dispatch(setPhoneNumber(value));\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{t('labels.phone')} * {\r\n\t\t\t\t`(${ t('labels.phoneInfo') })`\r\n\t\t\t\t}\r\n\t\t\t\r\n\t\t\t) => {\r\n\t\t\t\t\tif (event.target.value.length === 0)\r\n\t\t\t\t\t\tupdateProperty(\"\");\r\n\t\t\t\t\tif (event.target.value.length <= 50)\r\n\t\t\t\t\t\tupdateProperty(event.target.value);\r\n\t\t\t\t}} />\r\n\t\t\t\r\n\t\t\t\t{property === '' ? t('invalidMessages.required') : t('invalidMessages.unknown')}\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default PhoneNumber;","import { ChangeEvent } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Form } from 'react-bootstrap';\r\nimport { setRegistrationNumber } from \"components/forms/airport-company/AirportCompanyStore\";\r\nimport { selectRegistrationNumber, selectShowInvalids } from \"components/forms/airport-company/AirportCompanySelectors\";\r\n\r\n\r\nconst RegistrationNumber = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\t\r\n\tconst property = useSelector(selectRegistrationNumber);\r\n\tconst showInvalids = useSelector(selectShowInvalids);\r\n\tconst dispatch = useDispatch();\r\n\tconst updateProperty = (value: string) => dispatch(setRegistrationNumber(value));\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{t('labels.registrationNumber')} *\r\n\t\t\t\r\n\t\t\t) => {\r\n\t\t\t\t\tif (event.target.value.length === 0)\r\n\t\t\t\t\t\tupdateProperty(\"\");\r\n\t\t\t\t\tif (event.target.value.length <= 100)\r\n\t\t\t\t\t\tupdateProperty(event.target.value);\r\n\t\t\t\t}} />\r\n\t\t\t\r\n\t\t\t\t{t('invalidMessages.required')}\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default RegistrationNumber;","import { ChangeEvent } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Form } from 'react-bootstrap';\r\nimport { setTaxNumber } from \"components/forms/airport-company/AirportCompanyStore\";\r\nimport { selectTaxNumber, selectShowInvalids } from \"components/forms/airport-company/AirportCompanySelectors\";\r\n\r\n\r\nconst TaxNumber = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\t\r\n\tconst property = useSelector(selectTaxNumber);\r\n\tconst showInvalids = useSelector(selectShowInvalids);\r\n\tconst dispatch = useDispatch();\r\n\tconst updateProperty = (value: string) => dispatch(setTaxNumber(value));\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{t('labels.companyTax')} *\r\n\t\t\t\r\n\t\t\t) => {\r\n\t\t\t\t\tif (event.target.value.length === 0)\r\n\t\t\t\t\t\tupdateProperty(\"\");\r\n\t\t\t\t\tif (event.target.value.length <= 100)\r\n\t\t\t\t\t\tupdateProperty(event.target.value);\r\n\t\t\t\t}} />\r\n\t\t\t\r\n\t\t\t\t{t('invalidMessages.required')}\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default TaxNumber;","import { ChangeEvent } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Form } from 'react-bootstrap';\r\nimport { setStreet } from \"components/forms/airport-company/AirportCompanyStore\";\r\nimport { selectStreet, selectShowInvalids } from \"components/forms/airport-company/AirportCompanySelectors\";\r\n\r\n\r\nconst Street = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\t\r\n\tconst property = useSelector(selectStreet);\r\n\tconst showInvalids = useSelector(selectShowInvalids);\r\n\tconst dispatch = useDispatch();\r\n\tconst updateProperty = (value: string) => dispatch(setStreet(value));\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{t('labels.streetNumber')} *\r\n\t\t\t\r\n\t\t\t) => {\r\n\t\t\t\t\tif (event.target.value.length === 0)\r\n\t\t\t\t\t\tupdateProperty(\"\");\r\n\t\t\t\t\tif (event.target.value.length <= 100)\r\n\t\t\t\t\t\tupdateProperty(event.target.value);\r\n\t\t\t\t}} />\r\n\t\t\t\r\n\t\t\t\t{t('invalidMessages.required')}\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default Street;","import { ChangeEvent } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Form } from 'react-bootstrap';\r\nimport { setCity } from \"components/forms/airport-company/AirportCompanyStore\";\r\nimport { selectCity, selectShowInvalids } from \"components/forms/airport-company/AirportCompanySelectors\";\r\n\r\n\r\nconst City = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\t\r\n\tconst property = useSelector(selectCity);\r\n\tconst showInvalids = useSelector(selectShowInvalids);\r\n\tconst dispatch = useDispatch();\r\n\tconst updateProperty = (value: string) => dispatch(setCity(value));\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{t('labels.city')} *\r\n\t\t\t\r\n\t\t\t) => {\r\n\t\t\t\t\tif (event.target.value.length === 0)\r\n\t\t\t\t\t\tupdateProperty(\"\");\r\n\t\t\t\t\tif (event.target.value.length <= 100)\r\n\t\t\t\t\t\tupdateProperty(event.target.value);\r\n\t\t\t\t}} />\r\n\t\t\t\r\n\t\t\t\t{t('invalidMessages.required')}\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default City;","import { ChangeEvent } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Form } from 'react-bootstrap';\r\nimport { setPostalCode } from \"components/forms/airport-company/AirportCompanyStore\";\r\nimport { selectPostalCode, selectShowInvalids } from \"components/forms/airport-company/AirportCompanySelectors\";\r\n\r\n\r\nconst PostalCode = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\t\r\n\tconst property = useSelector(selectPostalCode);\r\n\tconst showInvalids = useSelector(selectShowInvalids);\r\n\tconst dispatch = useDispatch();\r\n\tconst updateProperty = (value: string) => dispatch(setPostalCode(value));\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{t('labels.postalCode')} *\r\n\t\t\t\r\n\t\t\t) => {\r\n\t\t\t\t\tif (event.target.value.length === 0)\r\n\t\t\t\t\t\tupdateProperty(\"\");\r\n\t\t\t\t\tif (event.target.value.length <= 50)\r\n\t\t\t\t\t\tupdateProperty(event.target.value);\r\n\t\t\t\t}} />\r\n\t\t\t\r\n\t\t\t\t{t('invalidMessages.required')}\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default PostalCode;","import { ChangeEvent } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Form } from 'react-bootstrap';\r\nimport { setCountry } from \"components/forms/airport-company/AirportCompanyStore\";\r\nimport { selectCountry, selectShowInvalids } from \"components/forms/airport-company/AirportCompanySelectors\";\r\n\r\n\r\nconst Country = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\t\r\n\tconst property = useSelector(selectCountry);\r\n\tconst showInvalids = useSelector(selectShowInvalids);\r\n\tconst dispatch = useDispatch();\r\n\tconst updateProperty = (value: string) => dispatch(setCountry(value));\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{t('labels.country')} *\r\n\t\t\t\r\n\t\t\t) => {\r\n\t\t\t\t\tupdateProperty(event.target.value);\r\n\t\t\t\t}}>\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\t{t('invalidMessages.required')}\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default Country;","import { ChangeEvent } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Form } from 'react-bootstrap';\r\nimport { setBankAccount } from \"components/forms/airport-company/AirportCompanyStore\";\r\nimport { selectBankAccount, selectShowInvalids } from \"components/forms/airport-company/AirportCompanySelectors\";\r\n\r\n\r\nconst BankAccount = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\r\n\tconst property = useSelector(selectBankAccount);\r\n\tconst showInvalids = useSelector(selectShowInvalids);\r\n\tconst dispatch = useDispatch();\r\n\tconst updateProperty = (value: string) => dispatch(setBankAccount(value));\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{t('labels.bankAccount')} *\r\n\t\t\t\r\n\t\t\t) => {\r\n\t\t\t\t\tif (event.target.value.length === 0)\r\n\t\t\t\t\t\tupdateProperty('');\r\n\t\t\t\t\tif (event.target.value.length <= 100)\r\n\t\t\t\t\t\tupdateProperty(event.target.value);\r\n\t\t\t\t}} />\r\n\t\t\t\r\n\t\t\t\t{t('invalidMessages.required')}\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default BankAccount;","import { ChangeEvent } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Form } from 'react-bootstrap';\r\nimport { setIban } from \"components/forms/airport-company/AirportCompanyStore\";\r\nimport { selectIban, selectShowInvalids } from \"components/forms/airport-company/AirportCompanySelectors\";\r\n\r\n\r\nconst Iban = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\t\r\n\tconst property = useSelector(selectIban);\r\n\tconst showInvalids = useSelector(selectShowInvalids);\r\n\tconst dispatch = useDispatch();\r\n\tconst updateProperty = (value: string) => dispatch(setIban(value));\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{t('labels.iban')} *\r\n\t\t\t\r\n\t\t\t) => {\r\n\t\t\t\t\tif (event.target.value.length === 0)\r\n\t\t\t\t\t\tupdateProperty(\"\");\r\n\t\t\t\t\tif (event.target.value.length <= 50)\r\n\t\t\t\t\t\tupdateProperty(event.target.value);\r\n\t\t\t\t}} />\r\n\t\t\t\r\n\t\t\t\t{t('invalidMessages.required')}\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default Iban;","import { ChangeEvent } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Form } from 'react-bootstrap';\r\nimport { setCurrency } from \"components/forms/airport-company/AirportCompanyStore\";\r\nimport { selectCurrency, selectShowInvalids } from \"components/forms/airport-company/AirportCompanySelectors\";\r\n\r\n\r\nconst Currency = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\t\r\n\tconst property = useSelector(selectCurrency);\r\n\tconst showInvalids = useSelector(selectShowInvalids);\r\n\tconst dispatch = useDispatch();\r\n\tconst updateProperty = (value: string) => dispatch(setCurrency(value));\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{t('labels.currency')} *\r\n\t\t\t\r\n\t\t\t) => {\r\n\t\t\t\t\tupdateProperty(event.target.value);\r\n\t\t\t\t}}>\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t{t('invalidMessages.required')}\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default Currency;","import { useCallback, useRef, useEffect } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { useNavigate } from \"react-router-dom\";\r\nimport { useLazyCancelEditBusinessEntityQuery, useLazySaveEditBusinessEntityQuery, useSaveBusinessEntityRequestMutation } from 'utils/api/businessEntity';\r\nimport { AppRoutesEnum } from 'components/global/routing/routesEnum';\r\nimport { setShowInvalids } from \"components/forms/airport-company/AirportCompanyStore\";\r\nimport { selectCompanyIsInvalid, selectIsSameCompany, selectModifiedCompany, selectAirportsCompanyId } from \"components/forms/airport-company/AirportCompanySelectors\";\r\nimport { FormConfirmButton, FormCancelButton } from 'components/global/FormButtons';\r\nimport Name from 'components/forms/airport-company/company-form/Name';\r\nimport CompanyEmail from 'components/forms/airport-company/company-form/CompanyEmail';\r\nimport PhoneNumber from 'components/forms/airport-company/company-form/PhoneNumber';\r\nimport RegistrationNumber from 'components/forms/airport-company/company-form/RegistrationNumber';\r\nimport TaxNumber from 'components/forms/airport-company/company-form/TaxNumber';\r\nimport Street from 'components/forms/airport-company/company-form/Street';\r\nimport City from 'components/forms/airport-company/company-form/City';\r\nimport PostalCode from 'components/forms/airport-company/company-form/PostalCode';\r\nimport Country from 'components/forms/airport-company/company-form/Country';\r\nimport BankAccount from 'components/forms/airport-company/company-form/BankAccount';\r\nimport Iban from 'components/forms/airport-company/company-form/Iban';\r\nimport Currency from 'components/forms/airport-company/company-form/Currency';\r\n\r\n\r\nconst CompanyForm = (): JSX.Element => {\r\n\tconst { t } = useTranslation('global');\r\n\t\r\n\tconst airportsCompanyId = useSelector(selectAirportsCompanyId);\r\n\tconst isInvalid = useSelector(selectCompanyIsInvalid);\r\n\tconst isSame = useSelector(selectIsSameCompany);\r\n\tconst company = useSelector(selectModifiedCompany);\r\n\tconst savedRef = useRef(false);\r\n\t\r\n\tconst navigate = useNavigate();\r\n\tconst dispatch = useDispatch();\r\n\tconst showInvalids = (show: boolean) => dispatch(setShowInvalids(show));\r\n\tconst [ cancelEdit ] = useLazyCancelEditBusinessEntityQuery();\r\n\tconst [ saveEdit ] = useLazySaveEditBusinessEntityQuery();\r\n\tconst [ saveCompany, { isLoading, isError, isSuccess, data } ] = useSaveBusinessEntityRequestMutation();\r\n\r\n\r\n\tuseEffect(() => {\r\n\t\treturn () => {\r\n\t\t\tif (!savedRef && airportsCompanyId !== 0) handleCancel();\r\n\t\t}\r\n\t}, []);\r\n\r\n\t\r\n\tconst handleCancel = useCallback(() => {\r\n\t\tif (airportsCompanyId !== 0)\r\n\t\t\tcancelEdit(airportsCompanyId);\r\n\t\t\r\n\t\tnavigate(`/${AppRoutesEnum.airport}`);\r\n\t},[ airportsCompanyId ]);\r\n\r\n\t\r\n\tconst handleSave = useCallback(async() => {\r\n\t\tif (isInvalid || !company) {\r\n\t\t\tshowInvalids(true);\r\n\t\t\tsetTimeout(() => window.scrollTo(0, 0), 5);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tlet response = await saveCompany(company).unwrap();\r\n\t\tif (response.success === true) {\r\n\t\t\tsavedRef.current = true;\r\n\t\t\tif (airportsCompanyId !== 0)\r\n\t\t\t\tsaveEdit(airportsCompanyId);\r\n\t\t\t\r\n\t\t\tnavigate(`/${AppRoutesEnum.airport}`);\r\n\t\t};\r\n\t},[ isInvalid, company, airportsCompanyId ]);\r\n\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t\t{isSuccess && data && data.success === false &&\r\n\t\t\t\t

{data.message ?? t('errorMessage')}

}\r\n\r\n\t\t\t\r\n\t\t\t{isError &&\r\n\t\t\t\t

{t('errorMessage')}

}\r\n\r\n\r\n\t\t\t
\r\n\t\t\t\t isLoading ? {} : handleSave()} />\r\n\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default CompanyForm;","import { useEffect } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { useNavigate } from \"react-router-dom\";\r\nimport { UserModeEnum } from 'types/enums';\r\nimport { useLazyStartEditBusinessEntityQuery } from 'utils/api/businessEntity';\r\nimport { selectUserMode } from \"store/globalSelectors\";\r\nimport { AppRoutesEnum } from 'components/global/routing/routesEnum';\r\nimport { resetStore } from 'components/forms/airport-company/AirportCompanyStore';\r\nimport { selectAirportsCompanyId, selectAirportIcao } from 'components/forms/airport-company/AirportCompanySelectors';\r\nimport { PageLoading, PageError } from 'components/global/PageElements';\r\nimport CompanyForm from 'components/forms/airport-company/company-form/CompanyForm';\r\n\r\n\r\nconst AirportCompanyPage = (): JSX.Element => {\r\n\tconst { t } = useTranslation([ 'formPages', 'global' ]);\r\n\r\n\tconst airportsCompanyId = useSelector(selectAirportsCompanyId);\r\n\tconst airportsIcao = useSelector(selectAirportIcao);\r\n\tconst userMode = useSelector(selectUserMode);\r\n\tconst dispatch = useDispatch();\r\n\tconst navigate = useNavigate();\r\n\tconst [ startEdit, { isLoading, data, isError, isSuccess } ] = useLazyStartEditBusinessEntityQuery({ pollingInterval: 60 * 1000 });\r\n\r\n\t\r\n\tuseEffect(() => {\r\n\t\tif (airportsCompanyId !== 0)\r\n\t\t\tstartEdit(airportsCompanyId);\r\n\t}, [ airportsCompanyId ]);\r\n\r\n\r\n\tuseEffect(() => {\r\n\t\tif (airportsIcao === '')\r\n\t\t\tnavigate(userMode === UserModeEnum.pilot ? `/${AppRoutesEnum.profile}` : AppRoutesEnum.basePath);\r\n\t}, [ airportsIcao ]);\r\n\r\n\t\r\n\tuseEffect(() => {\r\n\t\treturn () => {\r\n\t\t\tdispatch(resetStore());\r\n\t\t}\r\n\t}, []);\r\n\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t\t\t\r\n\t\t\t

{t('airportCompany.header')}

\r\n\r\n\t\t\t{isLoading &&\r\n\t\t\t\t}\r\n\r\n\t\t\t{isError &&\r\n\t\t\t\t navigate(`/${AppRoutesEnum.airport}`)} />}\r\n\r\n\t\t\t{isSuccess && data && data.success === false &&\r\n\t\t\t\t navigate(`/${AppRoutesEnum.airport}`)} />}\r\n\r\n\t\t\t{airportsCompanyId === 0 &&\r\n\t\t\t\t}\r\n\r\n\t\t\t{airportsCompanyId !== 0 && isSuccess && data && data.success === true &&\r\n\t\t\t\t}\r\n\t\t\t\r\n\t\t
\r\n\t)\r\n};\r\n\r\nexport default AirportCompanyPage;","import { useTranslation } from 'react-i18next';\r\n\r\n\r\nconst GridHeader = (): JSX.Element => {\r\n\tconst { t } = useTranslation('rolesPage');\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t
\r\n\t\t\t\t{t('requestsGrid.headers.user')}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{t('requestsGrid.headers.role')}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{t('requestsGrid.headers.date')}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{t('requestsGrid.headers.detail')}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default GridHeader;","import { useTranslation } from 'react-i18next';\r\nimport { useSelector } from \"react-redux\";\r\nimport { UserRoleRequestData } from 'types/UserRoleRequest';\r\nimport { selectUserId } from \"store/globalSelectors\";\r\nimport { useApproveRoleRequestMutation, useRejectRoleRequestMutation } from 'utils/api/roles';\r\nimport { GridApproveButton, GridRejectButton } from 'components/global/GridButtons';\r\n\r\n\r\ninterface RowButtonsProps {\r\n\trequest: UserRoleRequestData\r\n}\r\n \r\n\r\nconst RowButtons = (props: RowButtonsProps): JSX.Element => {\r\n\tconst { id, user, roleRemoval, firstApprover, secondApprover } = props.request;\r\n\tconst { t } = useTranslation('global');\r\n\r\n\tconst userId = useSelector(selectUserId);\r\n\tconst [ approveRequest, { isLoading: apLoading, isError: apError, data: apData } ] = useApproveRoleRequestMutation();\r\n\tconst [ rejectRequest, { isLoading: rjLoading, isError: rjError, data: rjData } ] = useRejectRoleRequestMutation();\r\n\tconst approverMessageClass = `app-grid-cell centered-cell approver-message${roleRemoval ? ' deleted-cell' : ''}`;\r\n\r\n\r\n\tif (apError || rjError) return (\r\n\t\t
\r\n\t\t\t

{t('errorMessageShort')}

\r\n\t\t
\r\n\t);\r\n\r\n\tif (user && user.uid === userId) return (\r\n\t\t
\r\n\t\t\t

{t('gridMessages.waiting')}

\r\n\t\t
\r\n\t);\r\n\r\n\tif (firstApprover && firstApprover.uid === userId) return (\r\n\t\t
\r\n\t\t\t

{t('gridMessages.waiting')}

\r\n\t\t
\r\n\t);\r\n\r\n\r\n\tif (secondApprover && secondApprover.uid === userId) return (\r\n\t\t
\r\n\t\t\t

{t('gridMessages.waiting')}

\r\n\t\t
\r\n\t);\r\n\r\n\tif (apData && apData.success === false) return (\r\n\t\t
\r\n\t\t\t

{apData.message ?? t('errorMessageShort')}

\r\n\t\t
\r\n\t);\r\n\r\n\tif (rjData && rjData.success === false) return (\r\n\t\t
\r\n\t\t\t

{rjData.message ?? t('errorMessageShort')}

\r\n\t\t
\r\n\t);\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t (apLoading || rjLoading) ? {} : approveRequest(id)} />\r\n\t\t\t\r\n\t\t\t (apLoading || rjLoading) ? {} : rejectRequest(id)} />\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default RowButtons;","import { memo } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport format from 'date-fns/format';\r\nimport parseISO from 'date-fns/parseISO';\r\nimport { UserRoleRequestData } from 'types/UserRoleRequest';\r\nimport { Pilot } from 'types/Pilot';\r\nimport { getDateFormat } from 'translations/index';\r\nimport { GridDetailButton } from 'components/global/GridButtons';\r\nimport RowButtons from 'components/roles-page/requests-grid/RowButtons';\r\n\r\n\r\ninterface GridRowProps {\r\n\trequest: UserRoleRequestData,\r\n\thandleClick: (user: Pilot) => void\r\n}\r\n \r\n\r\nconst GridRow = (props: GridRowProps): JSX.Element => {\r\n\tconst { user, userRole, created, roleRemoval } = props.request;\r\n\tconst { t } = useTranslation('rolesPage');\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t{roleRemoval &&\r\n\t\t\t\t
\r\n\t\t\t\t\t

{t('requestsGrid.removeUser')}

\r\n\t\t\t\t\t

{user ? `${user.firstName} ${user.surname}` : ''}

\r\n\t\t\t\t\t

{user ? user.email : ''}

\r\n\t\t\t\t
}\r\n\r\n\t\t\t{!roleRemoval &&\r\n\t\t\t\t
\r\n\t\t\t\t\t

{user ? user.email : ''}

\r\n\t\t\t\t
}\r\n\r\n\t\t\t
\r\n\t\t\t\t

{userRole}

\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t

{format(parseISO(created), getDateFormat())}

\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t props.handleClick(user)} />\r\n\t\t\t
\r\n\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default memo(GridRow);","import { useEffect, useCallback } from \"react\";\r\nimport { useSelector, useDispatch } from \"react-redux\";\r\nimport { Pilot } from 'types/Pilot';\r\nimport { useLazyGetRoleRequestsQuery } from 'utils/api/roles';\r\nimport { useLazyGetIsAdminOnAirportQuery } from 'utils/api/airports';\r\nimport { selectGlobalAirport } from \"store/persistSelectors\";\r\nimport { showModal } from 'components/roles-page/RolesPageStore';\r\nimport { GridLoading, GridError, GridNoAirport, GridNoAdmin, GridEmpty } from 'components/global/GridElements';\r\nimport GridHeader from 'components/roles-page/requests-grid/GridHeader';\r\nimport GridRow from 'components/roles-page/requests-grid/GridRow';\r\n//import { fakeUserRoleRequests } from 'utils/fake-data/userRoleRequests';\r\n\r\n\r\nconst Grid = (): JSX.Element => {\r\n\r\n\tconst airport = useSelector(selectGlobalAirport);\r\n\tconst dispatch = useDispatch();\r\n\tconst handleClick = useCallback((user: Pilot) => dispatch(showModal(user)), []);\r\n\tconst [ roleRequestsQuery, { isLoading: rqLoading, isSuccess: rqSuccess, data: rqData, isError: rqError, isFetching: rqFetching }] = useLazyGetRoleRequestsQuery();\r\n\tconst [ isAdminOnAirport, { isLoading: adLoading, isSuccess: adSuccess, data: adData, isError: adError, isFetching: adFetching } ] = useLazyGetIsAdminOnAirportQuery();\r\n\r\n\r\n\tuseEffect(() => {\r\n\t\tif (airport !== null) {\r\n\t\t\tisAdminOnAirport(airport.icao);\r\n\t\t\troleRequestsQuery(airport.icao);\r\n\t\t};\r\n\t}, [ airport ]);\r\n\r\n\t\r\n\tif (!airport) return (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n\r\n\tif (rqLoading || adLoading || rqFetching || adFetching) return (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n\r\n\tif (rqError || adError) return (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n\r\n\tif (adSuccess && adData === false) return ( /*if(false) return (*/\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n\r\n\tif (rqSuccess && rqData && rqData.length === 0) return ( /*if(false) return (*/\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t{rqSuccess && rqData && rqData.map(x => /*fakeUserRoleRequests.map(x =>*/\r\n\t\t\t\t)}\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default Grid;","import { useTranslation } from 'react-i18next';\r\n\r\n\r\nconst GridHeader = (): JSX.Element => {\r\n\tconst { t } = useTranslation('rolesPage');\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t
\r\n\t\t\t\t{t('usersGrid.headers.user')}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{t('usersGrid.headers.roles')}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{t('usersGrid.headers.detail')}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default GridHeader;","import { useTranslation } from 'react-i18next';\r\nimport { Pilot } from 'types/Pilot';\r\nimport { UserRoleTypeEnum } from 'types/enums';\r\nimport { useRemoveUserRoleMutation } from 'utils/api/roles';\r\nimport { FormCancelButton } from 'components/global/FormButtons';\r\n\r\n\r\ninterface RowButtonsProps {\r\n\tuser: Pilot,\r\n\tairportIcao: string\r\n}\r\n \r\n\r\nconst RowButtons = (props: RowButtonsProps): JSX.Element => {\r\n\tconst { user, airportIcao } = props;\r\n\tconst { t } = useTranslation([ 'rolesPage', 'global' ]);\r\n\t\r\n\tconst [ removeUser, { isLoading, isError, data } ] = useRemoveUserRoleMutation();\r\n\tconst isAdmin = user && user.roles ? user.roles.some(x => x === UserRoleTypeEnum.admin) : false;\r\n\r\n\t\r\n\tif (data && data.success === false) return (\r\n\t\t
\r\n\t\t\t

{data.message ?? t('global:errorMessageShort')}

\r\n\t\t
\r\n\t);\r\n\r\n\r\n\tif (isError) return (\r\n\t\t
\r\n\t\t\t

{t('global:errorMessageShort')}

\r\n\t\t
\r\n\t);\r\n\r\n\r\n\treturn (\r\n\t\t
\t\t\r\n\t\t\t (isLoading || !user)\r\n\t\t\t\t\t? {}\r\n\t\t\t\t\t: removeUser({ icao: airportIcao, userId: user.uid,\r\n\t\t\t\t\t\trole: isAdmin ? UserRoleTypeEnum.admin : UserRoleTypeEnum.resident })\r\n\t\t\t\t} />\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default RowButtons;","import { memo } from 'react';\r\nimport { Pilot } from 'types/Pilot';\r\nimport { GridDetailButton } from 'components/global/GridButtons';\r\nimport RowButtons from 'components/roles-page/users-grid/RowButtons';\r\n\r\n\r\ninterface GridRowProps {\r\n\tuser: Pilot,\r\n\tairportIcao: string,\r\n\thandleClick: (user: Pilot) => void\r\n}\r\n \r\n\r\nconst GridRow = (props: GridRowProps): JSX.Element => {\r\n\tconst { user, airportIcao, handleClick } = props;\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t
\r\n\t\t\t\t

{user ? user.email : ''}

\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{user && user.roles\r\n\t\t\t\t\t? user.roles.map(x =>

{x}

)\r\n\t\t\t\t\t:

-

}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t handleClick(user)} />\r\n\t\t\t
\r\n\r\n\t\t\t\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default memo(GridRow);","import { useEffect, useCallback } from \"react\";\r\nimport { useSelector, useDispatch } from \"react-redux\";\r\nimport { useLazyGetUsersForAirportQuery, useLazyGetIsAdminOnAirportQuery } from 'utils/api/airports';\r\nimport { selectGlobalAirport } from \"store/persistSelectors\";\r\nimport { showModal } from 'components/roles-page/RolesPageStore';\r\nimport { Pilot } from 'types/Pilot';\r\nimport { GridLoading, GridError, GridNoAirport, GridNoAdmin, GridEmpty } from 'components/global/GridElements';\r\nimport GridHeader from 'components/roles-page/users-grid/GridHeader';\r\nimport GridRow from 'components/roles-page/users-grid/GridRow';\r\n//import { fakeUsersForAirport } from 'utils/fake-data/usersForAirport';\r\n\r\n\r\nconst Grid = (): JSX.Element => {\r\n\r\n\tconst airport = useSelector(selectGlobalAirport);\r\n\tconst dispatch = useDispatch();\r\n\tconst handleClick = useCallback((user: Pilot) => dispatch(showModal(user)), []);\r\n\tconst [ isAdminOnAirport, { isLoading: adLoading, isSuccess: adSuccess, data: adData, isError: adError, isFetching: adFetching } ] = useLazyGetIsAdminOnAirportQuery();\r\n\tconst [ usersQuery, { isLoading: usLoading, isSuccess: usSuccess, data: usData, isError: usError, isFetching: usFetching }] = useLazyGetUsersForAirportQuery();\r\n\r\n\r\n\tuseEffect(() => {\r\n\t\tif (airport !== null) {\r\n\t\t\tisAdminOnAirport(airport.icao);\r\n\t\t\tusersQuery(airport.icao);\r\n\t\t};\r\n\t}, [ airport ]);\r\n\r\n\t\r\n\tif (!airport) return (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n\r\n\tif (usLoading || adLoading || usFetching || adFetching) return (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n\r\n\tif (usError || adError) return (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n\r\n\tif (adSuccess && adData === false) return ( /*if(false) return (*/\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n\r\n\tif (usSuccess && usData && usData.length === 0) return ( /*if(false) return (*/\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t{usSuccess && usData && usData.map(x => /*fakeUsersForAirport.map(x =>*/\r\n\t\t\t\t)}\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default Grid;","import { RootState } from 'store';\r\n\r\n\r\nexport const selectUser = (state: RootState) => state.rolesPage.user;\r\nexport const selectShowModal = (state: RootState) => state.rolesPage.showModal;","import { memo } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Pilot } from 'types/Pilot';\r\n\r\n\r\ninterface UserGridProps {\r\n\tuser: Pilot\r\n}\r\n\r\n\r\nconst UserGrid = (props: UserGridProps): JSX.Element => {\r\n\tconst { user } = props;\r\n\tconst { t } = useTranslation([ 'rolesPage', 'formPages' ]);\r\n\r\n\treturn (\r\n\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{t('userModal.userHeader')}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t

{t('formPages:labels.firstname')}

\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\t

{user ? user.firstName : ''}

\r\n\t\t\t
\r\n\r\n\r\n\t\t\t
\r\n\t\t\t\t

{t('formPages:labels.surname')}

\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\t

{user ? user.surname : ''}

\r\n\t\t\t
\r\n\r\n\r\n\t\t\t
\r\n\t\t\t\t

{t('formPages:labels.email')}

\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\t

{user ? user.email : ''}

\r\n\t\t\t
\r\n\r\n\r\n\t\t\t
\r\n\t\t\t\t

{t('formPages:labels.pilotLicence')}

\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\t

{user && user.pilotLicenceNumber && user.pilotLicenceNumber !== \"\"\r\n\t\t\t\t\t? user.pilotLicenceNumber\r\n\t\t\t\t\t: ' - '}

\r\n\t\t\t
\r\n\r\n\r\n\t\t\t
\r\n\t\t\t\t

{t('formPages:labels.phone')}

\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\t

{user ? user.phoneNumber : ''}

\r\n\t\t\t
\r\n\r\n\r\n\t\t\t
\r\n\t\t\t\t

{t('formPages:labels.address')}

\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\t

{user ? user.city : ''}

\r\n\t\t\t\t

{user ? user.street : ''}

\r\n\t\t\t\t

{user ? user.postalCode : ''}

\r\n\t\t\t\t

{user ? user.country : ''}

\r\n\t\t\t
\r\n\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default memo(UserGrid);","import { memo, Fragment } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Airport } from 'types/Airport';\r\nimport { GridEmpty } from 'components/global/GridElements';\r\n\r\n\r\ninterface AirportsGridProps {\r\n\tairports: Airport[]\r\n}\r\n\r\n\r\nconst AirportsGrid = (props: AirportsGridProps): JSX.Element => {\r\n\tconst { airports } = props;\r\n\tconst { t } = useTranslation('rolesPage');\r\n\r\n\t\r\n\tif (!airports || airports.length === 0) return (\r\n\t\t
\t\t\t\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\t{t('userModal.airportsHeader')}\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\r\n\t\t
\r\n\t);\r\n\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t
\r\n\t\t\t\t{t('userModal.airportsHeader')}\r\n\t\t\t
\r\n\r\n\t\t\t{airports && airports.map(x =>\t\r\n\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t

{x.icao}

\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t

{x.name}

\r\n\t\t\t\t\t
\r\n\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{x.singleUserRole\r\n\t\t\t\t\t\t\t? x.singleUserRole.map(y =>

{y}

)\r\n\t\t\t\t\t\t\t: \"-\"}\r\n\t\t\t\t\t
\t\t\r\n\t\t\t\t
)}\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default memo(AirportsGrid);","import { useEffect } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useSelector, useDispatch } from \"react-redux\";\r\nimport { Modal } from 'react-bootstrap';\r\nimport { useLazyGetUserAirportsQuery } from 'utils/api/airports';\r\nimport { GridRejectButton } from 'components/global/GridButtons';\r\nimport { GridLabel } from 'components/global/GridElements';\r\nimport { FormCancelButton } from 'components/global/FormButtons';\r\nimport { PageLoading, PageError } from 'components/global/PageElements';\r\nimport { hideModal } from 'components/roles-page/RolesPageStore';\r\nimport { selectShowModal, selectUser } from 'components/roles-page/RolesPageSelectors';\r\nimport UserGrid from 'components/roles-page/user-modal/UserGrid';\r\nimport AirportsGrid from 'components/roles-page/user-modal/AirportsGrid';\r\n//import { fakeUserAirports } from 'utils/fake-data/userAirports';\r\n\r\n\r\nconst UserModal = (): JSX.Element => {\r\n\tconst { t } = useTranslation([ 'rolesPage', 'global' ]);\r\n\r\n\tconst show = useSelector(selectShowModal);\r\n\tconst user = useSelector(selectUser);\r\n\tconst dispatch = useDispatch();\r\n\tconst handleClose = () => dispatch(hideModal());\r\n\tconst [ getUserAirports, { isLoading, isSuccess, data, isError }] = useLazyGetUserAirportsQuery();\r\n\r\n\t\r\n\tuseEffect(() => {\r\n\t\tif (user) getUserAirports(user.uid);\r\n\t}, [ user ]);\r\n\r\n\t\r\n\treturn (\r\n\t\t\r\n\r\n\t\t\t\r\n\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\r\n\r\n\t\t\t\t
\r\n\r\n\t\t\t\t\t{isLoading &&\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t{isError &&\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\t{isSuccess && user && /*true &&*/\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t{isSuccess && user && /*user &&*/\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t{isSuccess && user && data && /*fakeUserAirports &&*/\r\n\t\t\t\t\t\t}\r\n\r\n\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default UserModal;","import { useEffect } from 'react';\r\nimport { useSelector } from \"react-redux\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport format from 'date-fns/format';\r\nimport { CSVLink } from 'react-csv';\r\nimport { selectGlobalAirport } from \"store/persistSelectors\";\r\nimport { useLazyGetUsersForAirportQuery } from 'utils/api/airports';\r\nimport { ModifiablePilot, Pilot } from 'types/Pilot';\r\nimport { User } from 'types/User';\r\n\r\ntype UserData = Pick & Omit & ModifiablePilot;\r\n\r\n\r\nconst DownloadToolbar = (): JSX.Element => {\r\n\tconst { t } = useTranslation(['formPages', 'global']);\r\n\tconst airport = useSelector(selectGlobalAirport);\r\n\tconst [ usersQuery, { data }] = useLazyGetUsersForAirportQuery({\r\n\t\tselectFromResult: ({ data }) => ({\r\n\t\t\tdata: data ? data.map((x): UserData => ({\r\n\t\t\t\tfirstName: x.firstName,\r\n\t\t\t\tsurname: x.surname,\r\n\t\t\t\temail: x.email,\r\n\t\t\t\tpilotLicenceNumber: x.pilotLicenceNumber,\r\n\t\t\t\tstreet: x.street,\r\n\t\t\t\tcity: x.city,\r\n\t\t\t\tpostalCode: x.postalCode,\r\n\t\t\t\tcountry: x.country,\r\n\t\t\t\tphoneNumber: x.phoneNumber,\r\n\t\t\t\troles: x.roles\r\n\t\t\t})) : undefined\r\n\t\t})\r\n\t});\r\n\r\n\t\r\n\tuseEffect(() => {\r\n\t\tif (airport !== null)\r\n\t\t\tusersQuery(airport.icao);\r\n\t}, [ airport ]);\r\n\r\n\r\n\treturn (\r\n\t\t
\r\n\r\n\t\t\t 0 ? '' : ' disabled'}`}\r\n\t\t\t\tonClick={() => data && data.length > 0 ? true : false}\r\n\t\t\t\ttarget=\"_blank\">\r\n\t\t\t\t{t('global:appButtons.saveToExcel')}\r\n\t\t\t\r\n\r\n\t\t
\r\n\t)\r\n};\r\n\r\nexport default DownloadToolbar;","import { useTranslation } from 'react-i18next';\r\nimport { GridLabel } from 'components/global/GridElements';\r\nimport RequestsGrid from 'components/roles-page/requests-grid/Grid';\r\nimport UsersGrid from 'components/roles-page/users-grid/Grid';\r\nimport UserModal from 'components/roles-page/user-modal/UserModal';\r\nimport DownloadToolbar from 'components/roles-page/users-grid/DownloadToolbar';\r\n\r\n\r\nconst RolesPage = (): JSX.Element => {\r\n\tconst { t } = useTranslation('rolesPage');\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t\t\t\r\n\t\t\t

{t('header')}

\r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t\t\r\n\r\n\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\r\n\t\t\t\r\n\r\n\t\t
\r\n\t)\r\n};\r\n\r\nexport default RolesPage;","import { ModifiablePricingItem, PricingItemRequest } from 'types/PricingItem';\r\nimport { hasOwnPropertyTS } from 'utils/typescriptGuards';\r\n\r\n\r\nexport const getChangedProperties = (item: ModifiablePricingItem | undefined | null, request: PricingItemRequest | undefined | null) => {\r\n\tlet emptyArray: Array = [];\r\n\tif (!item || !request) return emptyArray;\r\n\r\n\tconst filledArray = Object.keys(item).reduce((acc, property) => {\r\n\t\tlet firstValue = hasOwnPropertyTS(item, property) ? item[property] : null;\r\n\t\tlet secondValue = hasOwnPropertyTS(request, property) ? request[property] : null;\r\n\r\n\t\tif (property === \"paymentTypeJson\") {\r\n\t\t\tlet firstValueJson = JSON.stringify(item[property]);\r\n\t\t\tlet secondValueJson = JSON.stringify(request[property]);\r\n\r\n\t\t\tif (firstValueJson !== secondValueJson) {\r\n\t\t\t\tacc.push(property as keyof ModifiablePricingItem);\r\n\t\t\t}\r\n\t\t\treturn acc;\r\n\t\t};\r\n\r\n\t\tif (property === \"validityConfig\") {\r\n\t\t\tlet firstValueJson = JSON.stringify(item[property]);\r\n\t\t\tlet secondValueJson = JSON.stringify(request[property]);\r\n\r\n\t\t\tif (firstValueJson !== secondValueJson) {\r\n\t\t\t\tacc.push(property as keyof ModifiablePricingItem);\r\n\t\t\t}\r\n\t\t\treturn acc;\r\n\t\t};\r\n\r\n\t\tif (firstValue !== null && secondValue !== null && firstValue !== secondValue) {\r\n\t\t\tacc.push(property as keyof ModifiablePricingItem);\r\n\t\t}\r\n\t\treturn acc;\r\n\t},emptyArray);\r\n\r\n\treturn filledArray;\r\n}","import { useTranslation } from 'react-i18next';\r\n\r\n\r\nconst GridHeader = (): JSX.Element => {\r\n\tconst { t } = useTranslation('pricingsPage');\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t
\r\n\t\t\t\t{t('headers.name')}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{t('headers.filters')}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{t('headers.discount')}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{t('headers.fromTo')}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{t('headers.validIn')}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{t('headers.price')}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{t('headers.tax')}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{t('headers.commission')}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default GridHeader;","import { useTranslation } from 'react-i18next';\r\nimport { useSelector, useDispatch } from \"react-redux\";\r\nimport { useNavigate } from \"react-router-dom\";\r\nimport { PricingItem } from 'types/PricingItem';\r\nimport { selectGlobalAirport } from \"store/persistSelectors\";\r\nimport { initPricingItem } from \"components/forms/pricing-item/PricingItemStore\";\r\nimport { AppRoutesEnum } from 'components/global/routing/routesEnum';\r\nimport { useDeletePricingItemMutation } from 'utils/api/pricings';\r\nimport { GridEditButton, GridRemoveButton } from 'components/global/GridButtons';\r\n\r\n\r\ninterface RowButtonsProps {\r\n\titem: PricingItem\r\n}\r\n \r\n\r\nconst RowButtons = (props: RowButtonsProps): JSX.Element => {\r\n\tconst { item } = props;\r\n\tconst { t } = useTranslation('global');\r\n\r\n\tconst airport = useSelector(selectGlobalAirport);\r\n\tconst navigate = useNavigate();\r\n\tconst dispatch = useDispatch();\r\n\tconst [ runDelete, { isLoading, isError, data } ] = useDeletePricingItemMutation();\r\n\tconst approverMessageClass = 'app-grid-cell primary-cell centered-cell approver-message';\r\n\r\n\r\n\tif (item.changeRequest) return (\r\n\t\t
\r\n\t);\r\n\r\n\t\r\n\tif (data && data.success === false && data.message) return (\r\n\t\t
\r\n\t\t\t

{data.message ?? t('errorMessageShort')}

\r\n\t\t
\r\n\t);\r\n\r\n\r\n\tif (isError) return (\r\n\t\t
\r\n\t\t\t

{t('errorMessageShort')}

\r\n\t\t
\r\n\t);\r\n\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t {\r\n\t\t\t\t\tif (!airport || isLoading) return;\r\n\t\t\t\t\tdispatch(initPricingItem({ pricingItem: item, airportIcao: airport.icao }));\r\n\t\t\t\t\tnavigate(`/${AppRoutesEnum.pricingItem}`);\r\n\t\t\t\t}} />\r\n\r\n\t\t\t isLoading ? {} : runDelete(item.id)} />\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default RowButtons;","import { useSelector } from \"react-redux\";\r\nimport { ValidityConfig } from 'types/ValidityConfig';\r\nimport { selectLanguage } from \"store/globalSelectors\";\r\nimport { LanguageEnum } from 'types/enums';\r\nimport { getDaysEnum } from 'translations/index';\r\nimport { capitalizeShortDay } from 'components/global/utils';\r\nimport format from 'date-fns/format';\r\nimport parseISO from 'date-fns/parseISO';\r\n\r\n\r\nconst getDaysArray = (config: ValidityConfig, language: LanguageEnum) => {\r\n\tconst daysEnum = getDaysEnum();\r\n\tlet daysArray: string[] = [];\r\n\t\r\n\tif (!config) return '';\r\n\tif (language === LanguageEnum.en && config.sunday) daysArray.push(capitalizeShortDay(daysEnum.sunday));\r\n\tif (config.monday) daysArray.push(capitalizeShortDay(daysEnum.monday));\r\n\tif (config.tuesday) daysArray.push(capitalizeShortDay(daysEnum.tuesday));\r\n\tif (config.wednesday) daysArray.push(capitalizeShortDay(daysEnum.wednesday));\r\n\tif (config.thursday) daysArray.push(capitalizeShortDay(daysEnum.thursday));\r\n\tif (config.friday) daysArray.push(capitalizeShortDay(daysEnum.friday));\r\n\tif (config.saturday) daysArray.push(capitalizeShortDay(daysEnum.saturday));\r\n\tif (language === LanguageEnum.cz && config.sunday) daysArray.push(capitalizeShortDay(daysEnum.sunday));\r\n\t\r\n\treturn daysArray.join(', ');\r\n}\r\n\r\n\r\n\r\ninterface ValidityCellProps {\r\n\tvalidityConfig: ValidityConfig\r\n}\r\n \r\n\r\nconst ValidityCell = (props: ValidityCellProps): JSX.Element => {\r\n\tconst { validityConfig } = props;\r\n\r\n\tconst language = useSelector(selectLanguage);\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t

{getDaysArray(validityConfig, language)}

\r\n\t\t\t{validityConfig && validityConfig.from &&\r\n\t\t\t\t

{`${format(parseISO(validityConfig.from), 'HH:mm')} - ${validityConfig.to ? format(parseISO(validityConfig.to), 'HH:mm') : ''}`}\r\n\t\t\t\t

\r\n\t\t\t}\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default ValidityCell;","import { PaymentType, PaymentTypeOperatorEnum } from 'types/PaymentType';\r\n\r\n\r\nconst getOperatorSymbol = (operator: PaymentTypeOperatorEnum) => {\r\n\tif (operator === PaymentTypeOperatorEnum.equal) return '=';\r\n\tif (operator === PaymentTypeOperatorEnum.lessThen) return '<';\r\n\tif (operator === PaymentTypeOperatorEnum.greaterThen) return '>';\r\n\tif (operator === PaymentTypeOperatorEnum.lessThenOrEqual) return '<=';\r\n\tif (operator === PaymentTypeOperatorEnum.greaterThenOrEqual) return '>=';\r\n\treturn '';\r\n}\r\n\r\n\r\ninterface FiltersCellProps {\r\n\tfiltersCellId: string,\r\n\tfilters: PaymentType[] | null | undefined\r\n}\r\n \r\n\r\nconst FiltersCell = (props: FiltersCellProps): JSX.Element => {\r\n\tconst { filtersCellId, filters } = props;\r\n\r\n\tif (!filters || filters.length === 0) return (<>);\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t{filters && filters.map(x =>\r\n\t\t\t\t

\r\n\t\t\t\t\t{`${x.attribute} ${getOperatorSymbol(x.operator)} ${x.value.toUpperCase()}`}\r\n\t\t\t\t

)}\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default FiltersCell;","import { memo, useCallback } from 'react';\r\nimport { getDateFormat } from 'translations/index';\r\nimport format from 'date-fns/format';\r\nimport parseISO from 'date-fns/parseISO';\r\nimport { PricingItem, ModifiablePricingItem } from 'types/PricingItem';\r\nimport { isMaxDate } from 'components/global/utils';\r\nimport RowButtons from 'components/pricings-page/pricings-grid/RowButtons';\r\nimport ValidityCell from 'components/pricings-page/pricings-grid/ValidityCell';\r\nimport FiltersCell from 'components/pricings-page/pricings-grid/FiltersCell';\r\nimport { SettingsType, CellPropertiesType, getRequestCellClassName } from 'components/global/GridElements';\r\n\r\n\r\ninterface GridRowProps {\r\n\titem: PricingItem,\r\n\tchangedProperties: Array\r\n}\r\n \r\n\r\nconst GridRow = (props: GridRowProps): JSX.Element => {\r\n\tconst { item, changedProperties } = props;\r\n\tconst { paymentTypeText, paymentTypeTextEng, paymentTypeJson, validFrom, validTo,\r\n\t\tlocalPrice, localCurrency, validityConfig, residentDiscount, tax, commission } = props.item;\r\n\t\r\n\tconst rowSettings: SettingsType = { centered: true };\r\n\r\n\tconst getClassName = useCallback((cellProperties: CellPropertiesType, settings?: SettingsType) => \r\n\t\tgetRequestCellClassName({ changedProperties, primary: true, cellProperties, settings })\r\n\t,[ changedProperties ]);\r\n\t\r\n\r\n\tif (item && item.changeRequest && item.changeRequest.itemAdded) return (\r\n\t\t<>\r\n\t\t\t{Array(9).fill('').map((x,i) =>\r\n\t\t\t\t
-
)}\r\n\t\t\r\n\t)\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t
\r\n\t\t\t\t

{paymentTypeText}

\r\n\t\t\t\t

{`(${paymentTypeTextEng})`}

\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t

{`${residentDiscount}%`}

\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t

{validFrom ? format(parseISO(validFrom), getDateFormat()) : '-'}

\r\n\t\t\t\t

{validTo && !isMaxDate(validTo)\r\n\t\t\t\t\t? format(parseISO(validTo), getDateFormat())\r\n\t\t\t\t\t: '-'}

\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t

{`${localPrice} ${localCurrency}`}

\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t

{`${tax}%`}

\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t

{`${commission}%`}

\r\n\t\t\t
\r\n\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default memo(GridRow);","import { useTranslation } from 'react-i18next';\r\nimport { useSelector } from \"react-redux\";\r\nimport { PricingItemRequest } from 'types/PricingItem';\r\nimport { selectUserId } from \"store/globalSelectors\";\r\nimport { useApprovePricingItemRequestMutation, useRejectPricingItemRequestMutation } from 'utils/api/pricings';\r\nimport { GridApproveButton, GridRejectButton } from 'components/global/GridButtons';\r\n\r\n\r\ninterface RequestButtonsProps {\r\n\titem: PricingItemRequest\r\n}\r\n \r\n\r\nconst RequestButtons = (props: RequestButtonsProps): JSX.Element => {\r\n\tconst { id, firstApprover, secondApprover, itemDeleted, itemAdded } = props.item;\r\n\tconst { t } = useTranslation('global');\r\n\r\n\tconst userId = useSelector(selectUserId);\r\n\tconst [ approveRequest, { isLoading: apLoading, data: apData, isError: apError } ] = useApprovePricingItemRequestMutation();\r\n\tconst [ rejectRequest, { isLoading: rjLoading, data: rjData, isError: rjError } ] = useRejectPricingItemRequestMutation();\r\n\tconst approverMessageClass = `app-grid-cell secondary-cell centered-cell approver-message${\r\n\t\titemDeleted ? ' deleted-cell' : ''}${\r\n\t\titemAdded ? ' added-cell' : ''}`;\r\n\r\n\r\n\tif (apError || rjError) return (\r\n\t\t
\r\n\t\t\t

{t('errorMessageShort')}

\r\n\t\t
\r\n\t);\r\n\r\n\t\r\n\tif (firstApprover && firstApprover.uid === userId) return (\r\n\t\t
\r\n\t\t\t

{t('gridMessages.waiting')}

\r\n\t\t
\r\n\t);\r\n\r\n\r\n\tif (secondApprover && secondApprover.uid === userId) return (\r\n\t\t
\r\n\t\t\t

{t('gridMessages.waiting')}

\r\n\t\t
\r\n\t);\r\n\r\n\r\n\tif (apData && apData.success === false && apData.message) return (\r\n\t\t
\r\n\t\t\t

{apData.message ?? t('errorMessageShort')}

\r\n\t\t
\r\n\t);\r\n\r\n\r\n\tif (rjData && rjData.success === false && rjData.message) return (\r\n\t\t
\r\n\t\t\t

{rjData.message ?? t('errorMessageShort')}

\r\n\t\t
\r\n\t);\r\n\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t (apLoading || rjLoading) ? {} : approveRequest(id)} />\r\n\r\n\t\t\t (apLoading || rjLoading) ? {} : rejectRequest(id)} />\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default RequestButtons;","import { memo, useCallback } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { getDateFormat } from 'translations/index';\r\nimport format from 'date-fns/format';\r\nimport parseISO from 'date-fns/parseISO';\r\nimport { PricingItemRequest, ModifiablePricingItem } from 'types/PricingItem';\r\nimport { isMaxDate } from 'components/global/utils';\r\nimport RequestButtons from 'components/pricings-page/pricings-grid/RequestButtons';\r\nimport ValidityCell from 'components/pricings-page/pricings-grid/ValidityCell';\r\nimport FiltersCell from 'components/pricings-page/pricings-grid/FiltersCell';\r\nimport { SettingsType, CellPropertiesType, getRequestCellClassName } from 'components/global/GridElements';\r\n\r\n\r\ninterface GridRowRequestProps {\r\n\trequest: PricingItemRequest,\r\n\tchangedProperties: Array\r\n}\r\n \r\n\r\nconst GridRowRequest = (props: GridRowRequestProps): JSX.Element => {\r\n\tconst { request, changedProperties } = props;\r\n\tconst { paymentTypeText, paymentTypeTextEng, paymentTypeJson, validFrom, validTo,\r\n\t\tlocalPrice, localCurrency, validityConfig, residentDiscount, tax, commission, itemDeleted, itemAdded } = props.request;\r\n\tconst { t } = useTranslation('global');\r\n\t\r\n\tconst rowSettings: SettingsType = { centered: true, deleted: itemDeleted, added: itemAdded };\r\n\r\n\tconst getClassName = useCallback((cellProperties: CellPropertiesType, settings?: SettingsType) => \r\n\t\tgetRequestCellClassName({ changedProperties, primary: false, cellProperties, settings })\r\n\t,[ changedProperties ]);\r\n\r\n\t\r\n\tif (itemDeleted) return (\r\n\t\t<>\r\n\t\t\t
\r\n\t\t\t\t

{t('gridMessages.deleteItem')}

\r\n\t\t\t\t

{paymentTypeText}

\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t{Array(7).fill('').map((x,i) =>\r\n\t\t\t\t
-
)}\r\n\r\n\t\t\t\r\n\t\t\r\n\t);\r\n\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t{itemAdded &&\r\n\t\t\t\t
\r\n\t\t\t\t\t

{t('gridMessages.newItem')}

\r\n\t\t\t\t\t

{paymentTypeText}

\r\n\t\t\t\t\t

{`(${paymentTypeTextEng})`}

\r\n\t\t\t\t
}\r\n\t\t\t\r\n\t\t\t{!itemAdded &&\r\n\t\t\t\t
\r\n\t\t\t\t\t

{paymentTypeText}

\r\n\t\t\t\t\t

{`(${paymentTypeTextEng})`}

\r\n\t\t\t\t
}\r\n\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t

{`${residentDiscount}%`}

\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t

{validFrom ? format(parseISO(validFrom), getDateFormat()) : '-'}

\r\n\t\t\t\t

{validTo && !isMaxDate(validTo)\r\n\t\t\t\t\t? format(parseISO(validTo), getDateFormat())\r\n\t\t\t\t\t: '-'}

\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t

{`${localPrice} ${localCurrency}`}

\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t

{`${tax}%`}

\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t

{`${commission}%`}

\r\n\t\t\t
\r\n\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default memo(GridRowRequest);","import { useEffect, Fragment } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useSelector, useDispatch } from \"react-redux\";\r\nimport { useNavigate } from \"react-router-dom\";\r\nimport { AppRoutesEnum } from 'components/global/routing/routesEnum';\r\nimport { selectGlobalAirport } from \"store/persistSelectors\";\r\nimport { initPricingItem } from \"components/forms/pricing-item/PricingItemStore\";\r\nimport { useLazyGetPricingsByIcaoQuery } from 'utils/api/pricings';\r\nimport { useLazyGetIsAdminOnAirportQuery } from 'utils/api/airports';\r\nimport { GridNewRecord } from 'components/global/GridButtons';\r\nimport { GridLoading, GridError, GridNoAirport, GridNoAdmin } from 'components/global/GridElements';\r\nimport { getChangedProperties } from 'components/pricings-page/pricings-grid/utils';\r\nimport GridHeader from 'components/pricings-page/pricings-grid/GridHeader';\r\nimport GridRow from 'components/pricings-page/pricings-grid/GridRow';\r\nimport GridRowRequest from 'components/pricings-page/pricings-grid/GridRowRequest';\r\n//import { fakePricingItems } from 'utils/fake-data/pricingItems';\r\n\r\n\r\nconst Grid = (): JSX.Element => {\r\n\tconst { t } = useTranslation('pricingsPage');\r\n\r\n\tconst airport = useSelector(selectGlobalAirport);\r\n\tconst navigate = useNavigate();\r\n\tconst dispatch = useDispatch();\r\n\tconst [ pricingsQuery, { isLoading: prLoading, isSuccess: prSuccess, data: prData, isError: prError, isFetching: prFetching }] = useLazyGetPricingsByIcaoQuery();\r\n\tconst [ isAdminOnAirport, { isLoading: adLoading, isSuccess: adSuccess, data: adData, isError: adError, isFetching: adFetching } ] = useLazyGetIsAdminOnAirportQuery();\r\n\r\n\t\r\n\tuseEffect(() => {\r\n\t\tif (airport !== null) {\r\n\t\t\tisAdminOnAirport(airport.icao);\r\n\t\t\tpricingsQuery(airport.icao);\r\n\t\t};\r\n\t}, [ airport ]);\r\n\r\n\r\n\tif (!airport) return (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n\r\n\tif (prLoading || adLoading || prFetching || adFetching) return (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n\r\n\tif (prError || adError) return (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n\r\n\tif (adSuccess && adData === false) return ( /*if(false) return (*/\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t{prSuccess && prData && prData.map(x => /*fakePricingItems.map(x =>*/\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t{x.changeRequest &&\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t)}\r\n\r\n\t\t\t {\r\n\t\t\t\t\tdispatch(initPricingItem({ pricingItem: null, airportIcao: airport.icao }));\r\n\t\t\t\t\tnavigate(`/${AppRoutesEnum.pricingItem}`)\r\n\t\t\t\t}}/>\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default Grid;","import { useTranslation } from 'react-i18next';\r\nimport Grid from 'components/pricings-page/pricings-grid/Grid';\r\n\r\n\r\nconst PricingsPage = (): JSX.Element => {\r\n\tconst { t } = useTranslation('pricingsPage');\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t\t\t\r\n\t\t\t

{t('header')}

\r\n\r\n\t\t\t\r\n\r\n\t\t
\r\n\t)\r\n};\r\n\r\nexport default PricingsPage;","import { createSelector } from '@reduxjs/toolkit';\r\nimport { RootState } from 'store';\r\nimport { User } from 'types/User';\r\nimport { PricingItemRequest } from 'types/PricingItem';\r\nimport { PaymentType, PaymentTypeOperatorEnum } from 'types/PaymentType';\r\nimport { DaysValidityConfig } from 'types/ValidityConfig';\r\nimport formatISO from 'date-fns/formatISO';\r\nimport { isEmpty } from 'components/global/utils';\r\n\r\n\r\nexport const selectInitPricingRequest = (state: RootState) => state.pricingItem.initPricingRequest;\r\nexport const selectPricingItemId = (state: RootState) => state.pricingItem.pricingItemId;\r\nexport const selectAirportIcao = (state: RootState) => state.pricingItem.airportIcao;\r\nexport const selectShowInvalids = (state: RootState) => state.pricingItem.showInvalids;\r\nexport const selectPaymentTypeText = (state: RootState) => state.pricingItem.paymentTypeText;\r\nexport const selectPaymentTypeTextEng = (state: RootState) => state.pricingItem.paymentTypeTextEng;\r\nexport const selectValidFrom = (state: RootState) => state.pricingItem.validFrom;\r\nexport const selectValidTo = (state: RootState) => state.pricingItem.validTo;\r\nexport const selectLocalPrice = (state: RootState) => state.pricingItem.localPrice;\r\nexport const selectPriceWithoutTax = (state: RootState) => state.pricingItem.priceWithoutTax;\r\nexport const selectLocalCurrency = (state: RootState) => state.pricingItem.localCurrency;\r\nexport const selectResidentDiscount = (state: RootState) => state.pricingItem.residentDiscount;\r\nexport const selectTax = (state: RootState) => state.pricingItem.tax;\r\nexport const selectCommission = (state: RootState) => state.pricingItem.commission;\r\nexport const selectBusinessEntityId = (state: RootState) => state.pricingItem.businessEntityId;\r\nexport const selectValidityDays = (state: RootState) => state.pricingItem.validityDays;\r\nexport const selectValidityTimeFrom = (state: RootState) => state.pricingItem.validityTimeFrom;\r\nexport const selectValidityTimeTo = (state: RootState) => state.pricingItem.validityTimeTo;\r\nexport const selectPaymentTypeJson = (state: RootState) => state.pricingItem.paymentTypeJson;\r\nexport const selectUser = (state: RootState) => state.global.user;\r\n\r\n\r\nexport const selectPricingIsInvalid = createSelector(\r\n\t[\r\n\t\tselectPaymentTypeText,\r\n\t\tselectPaymentTypeTextEng,\r\n\t\tselectValidFrom,\r\n\t\tselectLocalPrice,\r\n\t\tselectLocalCurrency,\r\n\t\tselectValidityDays,\r\n\t\tselectValidityTimeFrom,\r\n\t\tselectValidityTimeTo,\r\n\t\tselectResidentDiscount,\r\n\t\tselectBusinessEntityId\r\n\t],(\r\n\t\tpaymentTypeText: string,\r\n\t\tpaymentTypeTextEng: string,\r\n\t\tvalidFrom: string,\r\n\t\tlocalPrice: string,\r\n\t\tlocalCurrency: string,\r\n\t\tvalidityDays: DaysValidityConfig,\r\n\t\tvalidityTimeFrom: string | null,\r\n\t\tvalidityTimeTo: string | null,\r\n\t\tresidentDiscount: string,\r\n\t\tbusinessEntityId: number\r\n\t) => {\r\n\t\tif (isEmpty(paymentTypeText)) return true;\r\n\t\tif (isEmpty(paymentTypeTextEng)) return true;\r\n\t\tif (isEmpty(validFrom)) return true;\r\n\t\tif (!isEmpty(validityTimeTo) && isEmpty(validityTimeFrom)) return true;\r\n\t\tif (isEmpty(localCurrency)) return true;\r\n\t\tif (isEmpty(residentDiscount)) return true;\r\n\t\tif (localPrice === '') return true;\r\n\t\tlet parsedPrice = parseFloat(localPrice);\r\n\t\tif (localCurrency === 'CZK' && parsedPrice > 0 && parsedPrice < 50) return true;\r\n\t\tif (localCurrency === 'EUR' && parsedPrice > 0 && parsedPrice < 2) return true;\r\n\t\tif (!validityDays || Object.values(validityDays).every(x => x === false)) return true;\r\n\t\tif (businessEntityId === 0) return true;\r\n\t\treturn false;\r\n});\r\n\r\n\r\nexport const selectModifiedPricing = createSelector(\r\n\t[\r\n\t\tselectInitPricingRequest,\r\n\t\tselectPricingItemId,\r\n\t\tselectAirportIcao,\r\n\t\tselectPaymentTypeText,\r\n\t\tselectPaymentTypeTextEng,\r\n\t\tselectPaymentTypeJson,\r\n\t\tselectValidFrom,\r\n\t\tselectValidTo,\r\n\t\tselectLocalPrice,\r\n\t\tselectLocalCurrency,\r\n\t\tselectResidentDiscount,\r\n\t\tselectTax,\r\n\t\tselectCommission,\r\n\t\tselectBusinessEntityId,\r\n\t\tselectValidityDays,\r\n\t\tselectValidityTimeFrom,\r\n\t\tselectValidityTimeTo,\r\n\t\tselectUser\r\n\t],(\r\n\t\tinitRequest: PricingItemRequest | null,\r\n\t\tpricingItemId: number,\r\n\t\tairportIcao: string,\r\n\t\tpaymentTypeText: string,\r\n\t\tpaymentTypeTextEng: string,\r\n\t\tpaymentTypeJson: PaymentType[] | null | undefined,\r\n\t\tvalidFrom: string,\r\n\t\tvalidTo: string | null | undefined,\r\n\t\tlocalPrice: string,\r\n\t\tlocalCurrency: string,\r\n\t\tresidentDiscount: string,\r\n\t\ttax: string,\r\n\t\tcommission: string,\r\n\t\tbusinessEntityId: number,\r\n\t\tvalidityDays: DaysValidityConfig,\r\n\t\tvalidityTimeFrom: string | null,\r\n\t\tvalidityTimeTo: string | null,\r\n\t\tuser: User | null\r\n\t) => {\r\n\t\tif (!user) return null;\r\n\r\n\t\tconst newPricingItem: PricingItemRequest = {\r\n\t\t\tid: initRequest ? initRequest.id : 0,\r\n\t\t\tpricingItemId: pricingItemId,\r\n\t\t\ticao: airportIcao,\r\n\t\t\tcreated: formatISO(new Date()),\r\n\t\t\tcreatedBy: user.uid,\r\n\t\t\teditedByUser: user.uid,\r\n\r\n\t\t\tpaymentTypeText: paymentTypeText,\r\n\t\t\tpaymentTypeTextEng: paymentTypeTextEng,\r\n\t\t\tpaymentTypeJson: paymentTypeJson && paymentTypeJson.length > 0\r\n\t\t\t\t? paymentTypeJson.filter(x => x.attribute !== '' && x.operator !== PaymentTypeOperatorEnum.empty && x.value !== '')\r\n\t\t\t\t: paymentTypeJson,\r\n\t\t\tvalidFrom: validFrom,\r\n\t\t\tvalidTo: validTo,\r\n\t\t\tlocalPrice: localPrice === '' ? 0 : parseFloat(localPrice),\r\n\t\t\tlocalCurrency: localCurrency,\r\n\t\t\tvalidityConfig: {\r\n\t\t\t\t...validityDays,\r\n\t\t\t\tfrom: validityTimeFrom,\r\n\t\t\t\tto: validityTimeTo\r\n\t\t\t},\r\n\t\t\tresidentDiscount: residentDiscount === '' ? 0 : parseFloat(residentDiscount),\r\n\t\t\ttax: tax === '' ? 0 : parseFloat(tax),\r\n\t\t\tcommission: commission === '' ? 0 : parseFloat(commission),\r\n\t\t\tbusinessEntityId: businessEntityId\r\n\t\t};\r\n\t\treturn newPricingItem;\r\n});\r\n\r\n\r\nexport const selectIsSamePricing = createSelector(\r\n\t[\r\n\t\tselectInitPricingRequest,\r\n\t\tselectPaymentTypeText,\r\n\t\tselectPaymentTypeTextEng,\r\n\t\tselectPaymentTypeJson,\r\n\t\tselectValidFrom,\r\n\t\tselectValidTo,\r\n\t\tselectLocalPrice,\r\n\t\tselectLocalCurrency,\r\n\t\tselectResidentDiscount,\r\n\t\tselectTax,\r\n\t\tselectCommission,\r\n\t\tselectBusinessEntityId,\r\n\t\tselectValidityDays,\r\n\t\tselectValidityTimeFrom,\r\n\t\tselectValidityTimeTo\r\n\t],(\r\n\t\tinitRequest: PricingItemRequest | null,\r\n\t\tpaymentTypeText: string,\r\n\t\tpaymentTypeTextEng: string,\r\n\t\tpaymentTypeJson: PaymentType[] | null | undefined,\r\n\t\tvalidFrom: string,\r\n\t\tvalidTo: string | null | undefined,\r\n\t\tlocalPrice: string,\r\n\t\tlocalCurrency: string,\r\n\t\tresidentDiscount: string,\r\n\t\ttax: string,\r\n\t\tcommission: string,\r\n\t\tbusinessEntityId: number,\r\n\t\tvalidityDays: DaysValidityConfig,\r\n\t\tvalidityTimeFrom: string | null,\r\n\t\tvalidityTimeTo: string | null\r\n\t) => {\r\n\t\tif (initRequest\r\n\t\t\t&& initRequest.paymentTypeText === paymentTypeText\r\n\t\t\t&& initRequest.paymentTypeTextEng === paymentTypeTextEng\r\n\t\t\t&& initRequest.validFrom === validFrom\r\n\t\t\t&& initRequest.validTo === validTo\r\n\t\t\t&& localPrice !== ''\r\n\t\t\t&& initRequest.localPrice === parseFloat(localPrice)\r\n\t\t\t&& initRequest.localCurrency === localCurrency\r\n\t\t\t&& residentDiscount !== ''\r\n\t\t\t&& initRequest.residentDiscount === parseFloat(residentDiscount)\r\n\t\t\t&& tax !== ''\r\n\t\t\t&& initRequest.tax === parseFloat(tax)\r\n\t\t\t&& commission !== ''\r\n\t\t\t&& initRequest.commission === parseFloat(commission)\r\n\t\t\t&& initRequest.businessEntityId === businessEntityId\r\n\t\t\t&& JSON.stringify(initRequest.paymentTypeJson) === JSON.stringify(paymentTypeJson)\r\n\t\t\t&& JSON.stringify(initRequest.validityConfig) === JSON.stringify({\r\n\t\t\t\t...validityDays,\r\n\t\t\t\tfrom: validityTimeFrom,\r\n\t\t\t\tto: validityTimeTo\r\n\t\t\t})) return true;\r\n\t\treturn false;\r\n});","import { ChangeEvent } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Form } from 'react-bootstrap';\r\nimport { setPaymentTypeText } from \"components/forms/pricing-item/PricingItemStore\";\r\nimport { selectPaymentTypeText, selectShowInvalids } from \"components/forms/pricing-item/PricingItemSelectors\";\r\n\r\n\r\nconst PaymentType = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\t\r\n\tconst property = useSelector(selectPaymentTypeText);\r\n\tconst showInvalids = useSelector(selectShowInvalids);\r\n\tconst dispatch = useDispatch();\r\n\tconst updateProperty = (value: string) => dispatch(setPaymentTypeText(value));\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{t('labels.paymentType')} *\r\n\t\t\t\r\n\t\t\t) => {\r\n\t\t\t\t\tif (event.target.value.length === 0)\r\n\t\t\t\t\t\tupdateProperty(\"\");\r\n\t\t\t\t\tif (event.target.value.length <= 255)\r\n\t\t\t\t\t\tupdateProperty(event.target.value);\r\n\t\t\t\t}} />\r\n\t\t\t\r\n\t\t\t\t{t('invalidMessages.required')}\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default PaymentType;","import { ChangeEvent } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Form } from 'react-bootstrap';\r\nimport { setPaymentTypeTextEng } from \"components/forms/pricing-item/PricingItemStore\";\r\nimport { selectPaymentTypeTextEng, selectShowInvalids } from \"components/forms/pricing-item/PricingItemSelectors\";\r\n\r\n\r\nconst PaymentTypeEng = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\t\r\n\tconst property = useSelector(selectPaymentTypeTextEng);\r\n\tconst showInvalids = useSelector(selectShowInvalids);\r\n\tconst dispatch = useDispatch();\r\n\tconst updateProperty = (value: string) => dispatch(setPaymentTypeTextEng(value));\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{t('labels.paymentTypeEng')} *\r\n\t\t\t\r\n\t\t\t) => {\r\n\t\t\t\t\tif (event.target.value.length === 0)\r\n\t\t\t\t\t\tupdateProperty(\"\");\r\n\t\t\t\t\tif (event.target.value.length <= 255)\r\n\t\t\t\t\t\tupdateProperty(event.target.value);\r\n\t\t\t\t}} />\r\n\t\t\t\r\n\t\t\t\t{t('invalidMessages.required')}\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default PaymentTypeEng;","import { useRef } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport DatePicker from 'react-datepicker';\r\nimport { Form, InputGroup } from 'react-bootstrap';\r\nimport { getLocaleObject, getDateFormat } from 'translations/index';\r\nimport parseISO from 'date-fns/parseISO';\r\nimport { setValidFrom } from 'components/forms/pricing-item/PricingItemStore';\r\nimport { selectValidFrom, selectShowInvalids } from 'components/forms/pricing-item/PricingItemSelectors';\r\nimport formatISO from 'date-fns/formatISO';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faCalendarDay } from \"@fortawesome/free-solid-svg-icons/faCalendarDay\";\r\nimport { newDateWithoutTime } from 'components/global/utils';\r\n\r\n\r\nconst ValidFrom = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\r\n\tconst property = useSelector(selectValidFrom);\r\n\tconst showInvalids = useSelector(selectShowInvalids);\r\n\tconst dispatch = useDispatch();\r\n\tconst updateProperty = (value: string) => dispatch(setValidFrom(value));\r\n\tconst formRef = useRef(null);\r\n\tconst isInvalid = showInvalids && (!property || property === \"\");\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{t('labels.validFrom')} *\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t {\r\n\t\t\t\t\t\tif (date === null)\r\n\t\t\t\t\t\t\tupdateProperty(\"\");\r\n\t\t\t\t\t\tif (date instanceof Date && !Number.isNaN(date.valueOf())) {\r\n\t\t\t\t\t\t\tlet dateWithoutTime = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0);\r\n\t\t\t\t\t\t\tupdateProperty(formatISO(dateWithoutTime));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tautoComplete='off'\r\n\t\t\t\t\tlocale={getLocaleObject()}\r\n\t\t\t\t\tdateFormat={getDateFormat()}\r\n\t\t\t\t\tminDate={new Date()}/>\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{t('invalidMessages.required')}\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t formRef.current?.setOpen(true)}>\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default ValidFrom;","import { useRef, useEffect } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport DatePicker from 'react-datepicker';\r\nimport { Form, InputGroup } from 'react-bootstrap';\r\nimport { getLocaleObject, getDateFormat } from 'translations/index';\r\nimport parseISO from 'date-fns/parseISO';\r\nimport { isMaxDate } from 'components/global/utils';\r\nimport { setValidTo } from 'components/forms/pricing-item/PricingItemStore';\r\nimport { selectValidTo, selectValidFrom } from 'components/forms/pricing-item/PricingItemSelectors';\r\nimport formatISO from 'date-fns/formatISO';\r\nimport isAfter from 'date-fns/isAfter';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faCalendarDay } from \"@fortawesome/free-solid-svg-icons/faCalendarDay\";\r\n\r\n\r\nconst ValidTo = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\r\n\tconst property = useSelector(selectValidTo);\r\n\tconst validFrom = useSelector(selectValidFrom);\r\n\tconst dispatch = useDispatch();\r\n\tconst updateProperty = (value: string | null) => dispatch(setValidTo(value));\r\n\tconst formRef = useRef(null);\r\n\r\n\t\r\n\tuseEffect(() => {\r\n\t\tif (property && isAfter(parseISO(validFrom), parseISO(property)))\r\n\t\t\tupdateProperty(\"\");\r\n\t}, [ validFrom, property ]);\r\n\r\n\t\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{t('labels.validTo')}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t {\r\n\t\t\t\t\t\tif (date === null)\r\n\t\t\t\t\t\t\tupdateProperty(null);\r\n\t\t\t\t\t\tif (date instanceof Date && !Number.isNaN(date.valueOf())) {\r\n\t\t\t\t\t\t\tlet dateWithoutTime = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0);\r\n\t\t\t\t\t\t\tupdateProperty(formatISO(dateWithoutTime));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tautoComplete='off'\r\n\t\t\t\t\tlocale={getLocaleObject()}\r\n\t\t\t\t\tdateFormat={getDateFormat()}\r\n\t\t\t\t\tminDate={(validFrom && validFrom !== \"\") ? parseISO(validFrom) : new Date()}/>\r\n\t\t\t\t\r\n\t\t\t\t formRef.current?.setOpen(true)}>\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default ValidTo;","import { ChangeEvent } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Form } from 'react-bootstrap';\r\nimport { checkDecimalInputAndMaxValue } from 'components/global/utils';\r\nimport { setLocalPrice } from \"components/forms/pricing-item/PricingItemStore\";\r\nimport { selectLocalPrice, selectShowInvalids, selectLocalCurrency } from \"components/forms/pricing-item/PricingItemSelectors\";\r\nimport { getLocaleNumberSeparator } from 'translations/index';\r\n\r\n\r\nconst getCurrencyValues = (currency: string) => {\r\n\tif (currency === \"CZK\") return ({ label: \"CZK\", value: 50 });\r\n\tif (currency === \"EUR\") return ({ label: \"EUR\", value: 2 });\r\n\treturn ({ label: \"\", value: 0 });\r\n};\r\n\r\n\r\nconst LocalPrice = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\t\r\n\tconst property = useSelector(selectLocalPrice);\r\n\tconst currency = useSelector(selectLocalCurrency);\r\n\tconst showInvalids = useSelector(selectShowInvalids);\r\n\tconst dispatch = useDispatch();\r\n\tconst updateProperty = (value: string) => dispatch(setLocalPrice(value));\r\n\tconst currencyValues = getCurrencyValues(currency);\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{t('labels.priceWithTax')} * {\r\n\t\t\t\t\t`(${ /* (allowed 0 EUR or 2 EUR and above) */ \r\n\t\t\t\t\t\tt('pricingItem.priceInfo1')} 0 ${currencyValues.label} ${\r\n\t\t\t\t\t\tt('pricingItem.priceInfo2')} ${currencyValues.value} ${currencyValues.label} ${\r\n\t\t\t\t\t\tt('pricingItem.priceInfo3')\r\n\t\t\t\t\t})`\r\n\t\t\t\t}\r\n\t\t\t\r\n\t\t\t 0 && parseFloat(property) < currencyValues.value))}\r\n\t\t\t\tonChange={(event: ChangeEvent) => {\r\n\t\t\t\t\tif (event.target.value.length === 0)\r\n\t\t\t\t\t\treturn updateProperty('');\r\n\t\t\t\t\tif (event.target.value === '0')\r\n\t\t\t\t\t\treturn updateProperty('0');\r\n\t\t\t\t\tconst parsedObject = checkDecimalInputAndMaxValue(event.target.value, 10);\r\n\t\t\t\t\tif (parsedObject.success)\r\n\t\t\t\t\t\tupdateProperty(parsedObject.parsedValue);\r\n\t\t\t\t}} />\r\n\t\t\t\r\n\t\t\t\t{property === '0'\r\n\t\t\t\t\t? t('invalidMessages.required') /* Value cannot be between 0 - 2 */\r\n\t\t\t\t\t: `${t('pricingItem.priceInvalid')} 0 - ${currencyValues.value}`}\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default LocalPrice;","import { ChangeEvent } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Form } from 'react-bootstrap';\r\nimport { checkDecimalInputAndMaxValue } from 'components/global/utils';\r\nimport { setPriceWithoutTax } from \"components/forms/pricing-item/PricingItemStore\";\r\nimport { selectPriceWithoutTax, selectShowInvalids } from \"components/forms/pricing-item/PricingItemSelectors\";\r\nimport { getLocaleNumberSeparator } from 'translations/index';\r\n\r\n\r\nconst PriceWithoutTax = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\t\r\n\tconst property = useSelector(selectPriceWithoutTax);\r\n\tconst showInvalids = useSelector(selectShowInvalids);\r\n\tconst dispatch = useDispatch();\r\n\tconst updateProperty = (value: string) => dispatch(setPriceWithoutTax(value));\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{t('labels.priceWithoutTax')} *\r\n\t\t\t\r\n\t\t\t) => {\r\n\t\t\t\t\tif (event.target.value.length === 0)\r\n\t\t\t\t\t\treturn updateProperty('');\r\n\t\t\t\t\tif (event.target.value === '0')\r\n\t\t\t\t\t\treturn updateProperty('0');\r\n\t\t\t\t\tconst parsedObject = checkDecimalInputAndMaxValue(event.target.value, 10);\r\n\t\t\t\t\tif (parsedObject.success)\r\n\t\t\t\t\t\tupdateProperty(parsedObject.parsedValue);\r\n\t\t\t\t}} />\r\n\t\t\t\r\n\t\t\t\t{t('invalidMessages.required')}\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default PriceWithoutTax;","import { ChangeEvent } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Form } from 'react-bootstrap';\r\nimport { setTax } from \"components/forms/pricing-item/PricingItemStore\";\r\nimport { selectTax, selectShowInvalids } from \"components/forms/pricing-item/PricingItemSelectors\";\r\nimport { checkDecimalInputAndMaxValue } from 'components/global/utils';\r\nimport { getLocaleNumberSeparator } from 'translations/index';\r\n\r\n\r\nconst Tax = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\t\r\n\tconst property = useSelector(selectTax);\r\n\tconst showInvalids = useSelector(selectShowInvalids);\r\n\tconst dispatch = useDispatch();\r\n\tconst updateProperty = (value: string) => dispatch(setTax(value));\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{t('labels.tax')} *\r\n\t\t\t\r\n\t\t\t) => {\r\n\t\t\t\t\tif (event.target.value.length === 0)\r\n\t\t\t\t\t\treturn updateProperty('');\r\n\t\t\t\t\tif (event.target.value === '0')\r\n\t\t\t\t\t\treturn updateProperty('0');\r\n\t\t\t\t\tconst parsedObject = checkDecimalInputAndMaxValue(event.target.value, 5, 100);\r\n\t\t\t\t\tif (parsedObject.success)\r\n\t\t\t\t\t\tupdateProperty(parsedObject.parsedValue);\r\n\t\t\t\t}} />\r\n\t\t\t\r\n\t\t\t\t{t('invalidMessages.required')}\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default Tax;","import { useEffect } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Form } from 'react-bootstrap';\r\nimport { setLocalCurrency } from \"components/forms/pricing-item/PricingItemStore\";\r\nimport { selectLocalCurrency, selectShowInvalids, selectAirportIcao } from \"components/forms/pricing-item/PricingItemSelectors\";\r\nimport { useGetAllAirportsQuery } from 'utils/api/airports';\r\n\r\n\r\nconst LocalCurrency = (): JSX.Element => {\r\n\tconst { t } = useTranslation([ 'formPages', 'global']);\r\n\t\r\n\tconst property = useSelector(selectLocalCurrency);\r\n\tconst showInvalids = useSelector(selectShowInvalids);\r\n\tconst icao = useSelector(selectAirportIcao);\r\n\tconst dispatch = useDispatch();\r\n\tconst updateProperty = (value: string) => dispatch(setLocalCurrency(value));\r\n\r\n\t\r\n\tconst { isError, airportCurrency } = useGetAllAirportsQuery(undefined, {\r\n\t\tselectFromResult: ({ isError, data }) => ({\r\n\t\t\tisError: isError,\r\n\t\t\tairportCurrency: data?.find(x => x.icao === icao)?.currency\r\n\t\t})\r\n\t});\r\n\r\n\t\r\n\tuseEffect(() => {\r\n\t\tif (airportCurrency && airportCurrency !== \"\")\r\n\t\t\tupdateProperty(airportCurrency);\r\n\t}, [ airportCurrency ]);\r\n\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{t('labels.currency')}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t{isError ? t('global:errorMessageShort') : t('invalidMessages.required')}\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default LocalCurrency;","import { ChangeEvent } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Form } from 'react-bootstrap';\r\nimport { setResidentDiscount } from \"components/forms/pricing-item/PricingItemStore\";\r\nimport { selectResidentDiscount, selectShowInvalids } from \"components/forms/pricing-item/PricingItemSelectors\";\r\nimport { checkDecimalInputAndMaxValue } from 'components/global/utils';\r\nimport { getLocaleNumberSeparator } from 'translations/index';\r\n\r\n\r\nconst ResidentDiscount = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\t\r\n\tconst property = useSelector(selectResidentDiscount);\r\n\tconst showInvalids = useSelector(selectShowInvalids);\r\n\tconst dispatch = useDispatch();\r\n\tconst updateProperty = (value: string) => dispatch(setResidentDiscount(value));\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{t('labels.residentDiscount')} *\r\n\t\t\t\r\n\t\t\t) => {\r\n\t\t\t\t\tif (event.target.value.length === 0)\r\n\t\t\t\t\t\treturn updateProperty('');\r\n\t\t\t\t\tif (event.target.value === '0')\r\n\t\t\t\t\t\treturn updateProperty('0');\r\n\t\t\t\t\tconst parsedObject = checkDecimalInputAndMaxValue(event.target.value, 5, 100);\r\n\t\t\t\t\tif (parsedObject.success)\r\n\t\t\t\t\t\tupdateProperty(parsedObject.parsedValue);\r\n\t\t\t\t}} />\r\n\t\t\t\r\n\t\t\t\t{t('invalidMessages.required')}\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default ResidentDiscount;","import { useEffect } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Form } from 'react-bootstrap';\r\nimport { setCommission } from \"components/forms/pricing-item/PricingItemStore\";\r\nimport { selectCommission, selectAirportIcao } from \"components/forms/pricing-item/PricingItemSelectors\";\r\nimport { useGetCommissionQuery } from 'utils/api/airports';\r\nimport { getLocaleNumberSeparator } from 'translations/index';\r\n\r\n\r\nconst Commission = (): JSX.Element => {\r\n\tconst { t } = useTranslation([ 'formPages', 'global']);\r\n\r\n\tconst property = useSelector(selectCommission);\r\n\tconst airportIcao = useSelector(selectAirportIcao);\r\n\tconst dispatch = useDispatch();\r\n\tconst updateProperty = (value: string) => dispatch(setCommission(value));\r\n\tconst { isSuccess, data, isError } = useGetCommissionQuery(airportIcao);\r\n\r\n\t\r\n\tuseEffect(() => {\r\n\t\tif (isSuccess && data)\r\n\t\t\tupdateProperty(`${data}`);\r\n\t}, [ isSuccess, data ]);\r\n\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{t('labels.commission')}\r\n\t\t\t\r\n\t\t\t {}} />\r\n\t\t\t\r\n\t\t\t\t{t('global:errorMessageShort')}\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default Commission;","import { useCallback } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport Select from 'react-select';\r\nimport { useGetApprovedBusinessEntitiesQuery } from 'utils/api/airports';\r\nimport { setBusinessEntityId } from \"components/forms/pricing-item/PricingItemStore\";\r\nimport { selectBusinessEntityId, selectAirportIcao, selectShowInvalids } from \"components/forms/pricing-item/PricingItemSelectors\";\r\n\r\n\r\nconst BusinessEntity = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\r\n\tconst property = useSelector(selectBusinessEntityId);\r\n\tconst showInvalids = useSelector(selectShowInvalids);\r\n\tconst airportIcao = useSelector(selectAirportIcao);\r\n\tconst dispatch = useDispatch();\r\n\tconst updateProperty = (value: number) => dispatch(setBusinessEntityId(value));\r\n\tconst { data, isError, isSuccess, isLoading, isFetching } = useGetApprovedBusinessEntitiesQuery(airportIcao);\r\n\r\n\r\n\tconst selectedValue = useCallback(() => {\r\n\t\tif (property && data) {\r\n\t\t\tlet entity = data.find(x => x.id === property);\r\n\t\t\tif (entity)\r\n\t\t\t\treturn ({ value: property, label: `${entity.name}` });\r\n\t\t};\r\n\t\treturn undefined;\r\n\t},[ property, data ]);\r\n\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t{t('labels.businessEntity')} *\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t\tname=\"businessEntity\"\r\n\t\t\t\taria-invalid={showInvalids && property === 0}\r\n\t\t\t\tclassName={`app-form-style app-form-react-select${showInvalids && property === 0 ? ' invalid-select' : ''}`}\r\n\t\t\t\tclassNamePrefix=\"app-select\"\r\n\t\t\t\tvalue={selectedValue()}\r\n\t\t\t\tplaceholder={t('hiddenOptions.businessEntity')}\r\n\t\t\t\tnoOptionsMessage={() => {\r\n\t\t\t\t\tif (isError) return t('invalidMessages.businessEntity');\r\n\t\t\t\t\tif (isLoading || isFetching) t('loadingMessages.businessEntity');\r\n\t\t\t\t\treturn '-';\r\n\t\t\t\t}}\r\n\t\t\t\tonChange={newValue => newValue ? updateProperty(newValue.value) : {}}\r\n\t\t\t\toptions={isSuccess && data\r\n\t\t\t\t\t? data.map(x => ({ value: x.id, label: `${x.name}` }))\r\n\t\t\t\t\t: undefined}\r\n\t\t\t\t />\r\n\t\t
\r\n\t)\r\n};\r\n\r\nexport default BusinessEntity;","import { memo } from \"react\";\r\nimport { Form } from 'react-bootstrap';\r\n\r\n\r\ninterface CheckBoxItemProps {\r\n\tlabel: string,\r\n\tvalue: boolean,\r\n\tonCheckChange: (value: boolean) => void\r\n}\r\n\r\n\r\nconst CheckBoxItem = (props: CheckBoxItemProps): JSX.Element => {\r\n\tconst { label, value, onCheckChange } = props;\r\n\r\n\treturn (\t\r\n\t\t
\r\n\t\t\t

{label}

\r\n\t\t\t onCheckChange(!value)} />\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default memo(CheckBoxItem);","import { useCallback } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { LanguageEnum } from 'types/enums';\r\nimport { DaysValidityConfig } from 'types/ValidityConfig';\r\nimport { selectLanguage } from \"store/globalSelectors\";\r\nimport { getDaysEnum } from 'translations/index';\r\nimport { capitalizeShortDay } from 'components/global/utils';\r\nimport { updateValidityDaysProperty } from 'components/forms/pricing-item/PricingItemStore';\r\nimport { selectValidityDays } from 'components/forms/pricing-item/PricingItemSelectors';\r\nimport CheckBoxItem from 'components/forms/pricing-item/pricing-form/validity-config/CheckBoxItem';\r\n\r\n\r\nconst DaysRow = (): JSX.Element => {\r\n\r\n\tconst language = useSelector(selectLanguage);\r\n\tconst config = useSelector(selectValidityDays);\r\n\tconst daysEnum = getDaysEnum();\r\n\t\r\n\tconst dispatch = useDispatch();\r\n\tconst updateConfigProperty = (property: keyof DaysValidityConfig, value: boolean) => dispatch(updateValidityDaysProperty({ property, value }));\r\n\r\n\tconst checkMonday = useCallback((value: boolean) => updateConfigProperty('monday', value), []);\r\n\tconst checkTuesday = useCallback((value: boolean) => updateConfigProperty('tuesday', value), []);\r\n\tconst checkWednesday = useCallback((value: boolean) => updateConfigProperty('wednesday', value), []);\r\n\tconst checkThursday = useCallback((value: boolean) => updateConfigProperty('thursday', value), []);\r\n\tconst checkFriday = useCallback((value: boolean) => updateConfigProperty('friday', value), []);\r\n\tconst checkSaturday = useCallback((value: boolean) => updateConfigProperty('saturday', value), []);\r\n\tconst checkSunday = useCallback((value: boolean) => updateConfigProperty('sunday', value), []);\r\n\t\r\n\treturn (\r\n\t\t
\r\n\t\t\t{language === LanguageEnum.en &&\r\n\t\t\t\t}\r\n\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t{language !== LanguageEnum.en &&\r\n\t\t\t\t}\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default DaysRow;","import { useCallback } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { DaysValidityConfig, filledValidityDays, emptyValidityDays } from 'types/ValidityConfig';\r\nimport { setValidityDays } from \"components/forms/pricing-item/PricingItemStore\";\r\nimport { selectValidityDays } from \"components/forms/pricing-item/PricingItemSelectors\";\r\nimport CheckBoxItem from 'components/forms/pricing-item/pricing-form/validity-config/CheckBoxItem';\r\n\r\n\r\nconst SpecialsRow = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\r\n\tconst config = useSelector(selectValidityDays);\r\n\tconst dispatch = useDispatch();\r\n\tconst updateConfig = (value: DaysValidityConfig) => dispatch(setValidityDays(value));\r\n\r\n\t\r\n\tconst handleCheckAll = useCallback((value: boolean) => {\r\n\t\tif (value) updateConfig(filledValidityDays);\r\n\t\tif (!value) updateConfig(emptyValidityDays);\r\n\t},[]);\r\n\r\n\r\n\tconst handleCheckWeekdays = useCallback((value: boolean) => {\r\n\t\tif (Object.values(config).every(x => x === true))\r\n\t\t\tupdateConfig({ ...filledValidityDays, saturday: false, sunday: false });\r\n\t\telse if (value)\r\n\t\t\tupdateConfig({ ...filledValidityDays, saturday: false, sunday: false });\r\n\t\telse if (!value)\r\n\t\t\tupdateConfig(emptyValidityDays);\r\n\t},[ config ]);\r\n\r\n\r\n\tconst handleCheckWeekend = useCallback((value: boolean) => {\r\n\t\tif (Object.values(config).every(x => x === true))\r\n\t\t\tupdateConfig({ ...emptyValidityDays, saturday: true, sunday: true });\r\n\t\telse if (value)\r\n\t\t\tupdateConfig({ ...emptyValidityDays, saturday: true, sunday: true });\r\n\t\telse if (!value)\r\n\t\t\tupdateConfig(emptyValidityDays);\r\n\t},[ config ]);\r\n\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t x === true)}\r\n\t\t\t\tonCheckChange={handleCheckAll} />\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default SpecialsRow;","import { useRef } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Form, InputGroup } from 'react-bootstrap';\r\nimport DatePicker from 'react-datepicker';\r\nimport { getLocaleObject } from 'translations/index';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faClock } from \"@fortawesome/free-solid-svg-icons/faClock\";\r\nimport formatISO from 'date-fns/formatISO';\r\nimport parseISO from 'date-fns/parseISO';\r\nimport { setValidityTimeFrom } from \"components/forms/pricing-item/PricingItemStore\";\r\nimport { selectValidityTimeTo, selectValidityTimeFrom, selectShowInvalids } from \"components/forms/pricing-item/PricingItemSelectors\";\r\n\r\n\r\nconst TimeFrom = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\r\n\tconst timeFrom = useSelector(selectValidityTimeFrom);\r\n\tconst timeTo = useSelector(selectValidityTimeTo);\r\n\tconst showInvalids = useSelector(selectShowInvalids);\r\n\tconst parsedTimeFrom = timeFrom && timeFrom !== \"\" ? parseISO(timeFrom) : null;\r\n\tconst isInvalid = showInvalids && timeTo !== null && timeTo !== undefined && (timeFrom === null || timeFrom === undefined);\r\n\r\n\tconst dispatch = useDispatch();\r\n\tconst updateProperty = (value: string | null) => dispatch(setValidityTimeFrom(value));\r\n\tconst formRef = useRef(null);\r\n\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{t('labels.timeFrom')}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t {\r\n\t\t\t\t\t\tif (date === null)\r\n\t\t\t\t\t\t\tupdateProperty(null);\r\n\t\t\t\t\t\tif (date instanceof Date && !Number.isNaN(date.valueOf())) {\r\n\t\t\t\t\t\t\tlet timeWithoutDate = new Date(2000, 1, 1, date.getHours(), date.getMinutes());\r\n\t\t\t\t\t\t\tupdateProperty(formatISO(timeWithoutDate));\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tautoComplete='off'\r\n\t\t\t\t\tlocale={getLocaleObject()}\r\n\t\t\t\t\tshowTimeSelect\r\n\t\t\t\t\tshowTimeSelectOnly\r\n\t\t\t\t\ttimeIntervals={15}\r\n\t\t\t\t\ttimeCaption={t('labels.time')}\r\n\t\t\t\t\tdateFormat={\"HH:mm\"}\r\n\t\t\t\t\ttimeFormat={\"HH:mm\"} />\r\n\r\n\t\t\t\t\r\n\t\t\t\t\t{t('invalidMessages.timeRequired')}\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t formRef.current?.setOpen(true)}>\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default TimeFrom;","import { useRef, useEffect } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Form, InputGroup } from 'react-bootstrap';\r\nimport DatePicker from 'react-datepicker';\r\nimport { getLocaleObject } from 'translations/index';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faClock } from \"@fortawesome/free-solid-svg-icons/faClock\";\r\nimport formatISO from 'date-fns/formatISO';\r\nimport isAfter from 'date-fns/isAfter';\r\nimport parseISO from 'date-fns/parseISO';\r\nimport { setValidityTimeTo } from \"components/forms/pricing-item/PricingItemStore\";\r\nimport { selectValidityTimeTo, selectValidityTimeFrom } from \"components/forms/pricing-item/PricingItemSelectors\";\r\n\r\n\r\nconst TimeTo = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\r\n\tconst timeFrom = useSelector(selectValidityTimeFrom);\r\n\tconst timeTo = useSelector(selectValidityTimeTo);\r\n\tconst parsedTimeFrom = timeFrom && timeFrom !== \"\" ? parseISO(timeFrom) : null;\r\n\tconst parsedTimeTo = timeTo && timeTo !== \"\" ? parseISO(timeTo) : null;\r\n\t\r\n\tconst dispatch = useDispatch();\r\n\tconst updateProperty = (value: string | null) => dispatch(setValidityTimeTo(value));\r\n\tconst formRef = useRef(null);\r\n\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!parsedTimeFrom || !parsedTimeTo) return;\r\n\t\t\r\n\t\tif (isAfter(parsedTimeFrom, parsedTimeTo)) updateProperty(\"\");\r\n\t}, [ parsedTimeFrom, parsedTimeTo ]);\r\n\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{t('labels.timeTo')}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t {\r\n\t\t\t\t\t\tif (date === null)\r\n\t\t\t\t\t\t\tupdateProperty(null);\r\n\t\t\t\t\t\tif (date instanceof Date && !Number.isNaN(date.valueOf())) {\r\n\t\t\t\t\t\t\tlet timeWithoutDate = new Date(2000, 1, 1, date.getHours(), date.getMinutes());\r\n\t\t\t\t\t\t\tupdateProperty(formatISO(timeWithoutDate));\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tautoComplete='off'\r\n\t\t\t\t\tlocale={getLocaleObject()}\r\n\t\t\t\t\tshowTimeSelect\r\n\t\t\t\t\tshowTimeSelectOnly\r\n\t\t\t\t\ttimeIntervals={15}\r\n\t\t\t\t\ttimeCaption={t('labels.time')}\r\n\t\t\t\t\tdateFormat={\"HH:mm\"}\r\n\t\t\t\t\ttimeFormat={\"HH:mm\"} />\r\n\t\t\t\t\r\n\t\t\t\t formRef.current?.setOpen(true)}>\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default TimeTo;","import { useTranslation } from 'react-i18next';\r\nimport { Form } from 'react-bootstrap';\r\nimport DaysRow from 'components/forms/pricing-item/pricing-form/validity-config/DaysRow';\r\nimport SpecialsRow from 'components/forms/pricing-item/pricing-form/validity-config/SpecialsRow';\r\nimport TimeFrom from 'components/forms/pricing-item/pricing-form/validity-config/TimeFrom';\r\nimport TimeTo from 'components/forms/pricing-item/pricing-form/validity-config/TimeTo';\r\n\r\n\r\nconst ValidityConfig = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{t('labels.validIn')} *\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\r\n\t\t\t
\r\n\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default ValidityConfig;","import { useTranslation } from 'react-i18next';\r\n\r\n\r\nconst GridHeader = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t
\r\n\t\t\t\t{t('pricingItem.headers.attribute')}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{t('pricingItem.headers.operator')}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{t('pricingItem.headers.value')}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default GridHeader;","import { ChangeEvent } from 'react';\r\nimport { Form } from 'react-bootstrap';\r\nimport { PricingItemConfiguration } from 'types/PricingItemConfiguration';\r\n\r\n\r\ninterface AttributeCellProps {\r\n\tattribute: string,\r\n\tconfigs: PricingItemConfiguration[],\r\n\tupdateAttribute: (attribute: string) => void\r\n}\r\n\r\n\r\nconst AttributeCell = (props: AttributeCellProps) => {\r\n\tconst { attribute, configs, updateAttribute } = props;\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t) => {\r\n\t\t\t\t\tupdateAttribute(event.target.value);\r\n\t\t\t\t}}>\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t{configs && configs.map(x =>\r\n\t\t\t\t\t)}\r\n\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n}\r\n\r\nexport default AttributeCell;","import { ChangeEvent, useEffect } from 'react';\r\nimport { Form } from 'react-bootstrap';\r\nimport { PaymentTypeOperatorEnum } from 'types/PaymentType';\r\n\r\n\r\ninterface OperatorCellProps {\r\n\tattribute: string,\r\n\toperator: PaymentTypeOperatorEnum,\r\n\tupdateOperator: (operator: PaymentTypeOperatorEnum) => void\r\n}\r\n\r\n\r\nconst OperatorCell = (props: OperatorCellProps) => {\r\n\tconst { attribute, operator, updateOperator } = props;\r\n\r\n\r\n\tuseEffect(() => {\r\n\t\tif (attribute === 'PlaneType')\r\n\t\t\tupdateOperator(PaymentTypeOperatorEnum.equal)\r\n\t},[ attribute ]);\r\n\r\n\r\n\t\r\n\tif (attribute !== \"\" && attribute === 'PlaneType') return (\r\n\t\t
\r\n\t\t\t {}}>\r\n\t\t\t\t\r\n\t\t\t\t\r\n\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n\r\n\r\n\tif (attribute !== \"\") return (\r\n\t\t
\r\n\t\t\t) => {\r\n\t\t\t\t\tupdateOperator(event.target.value as PaymentTypeOperatorEnum)\r\n\t\t\t\t}}>\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n\r\n\t\r\n\treturn (\r\n\t\t
\r\n\t);\r\n}\r\n\r\nexport default OperatorCell;","import { ChangeEvent } from 'react';\r\nimport { Form } from 'react-bootstrap';\r\nimport { PlaneTypeEnum } from 'types/enums';\r\nimport { checkIntegerInputAndMaxValue } from 'components/global/utils';\r\n\r\n\r\ninterface ValueCellProps {\r\n\tattribute: string,\r\n\tvalue: string,\r\n\tupdateValue: (value: string) => void\r\n}\r\n\r\n\r\nconst ValueCell = (props: ValueCellProps) => {\r\n\tconst { attribute, value, updateValue } = props;\r\n\r\n\t\r\n\tif (attribute !== \"\" && attribute === 'PlaneType') return (\r\n\t\t
\r\n\t\t\t) => {\r\n\t\t\t\t\tupdateValue(event.target.value);\r\n\t\t\t\t}}>\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n\r\n\r\n\tif (attribute !== \"\" && attribute === 'MTOW') return (\r\n\t\t
\r\n\t\t\t) => {\r\n\t\t\t\t\tif (event.target.value.length === 0 || event.target.value === '0')\r\n\t\t\t\t\t\treturn updateValue(\"\");\r\n\t\t\t\t\tconst parsedObject = checkIntegerInputAndMaxValue(event.target.value, 999999);\r\n\t\t\t\t\tif (parsedObject.success)\r\n\t\t\t\t\t\tupdateValue(event.target.value);\r\n\t\t\t\t}} />\r\n\t\t
\r\n\t);\r\n\r\n\r\n\tif (attribute !== \"\") return (\r\n\t\t
\r\n\t\t\t) => {\r\n\t\t\t\t\tupdateValue(event.target.value);\r\n\t\t\t\t}} />\r\n\t\t
\r\n\t);\r\n\r\n\t\r\n\treturn (\r\n\t\t
\r\n\t);\r\n}\r\n\r\nexport default ValueCell;","import { memo } from 'react';\r\nimport { useDispatch } from \"react-redux\";\r\nimport { PaymentType, PaymentTypeOperatorEnum } from 'types/PaymentType';\r\nimport { PricingItemConfiguration } from 'types/PricingItemConfiguration';\r\nimport { updateExistPaymentTypeJson, removeExistPaymentTypeJson } from \"components/forms/pricing-item/PricingItemStore\";\r\nimport { GridRejectButton } from 'components/global/GridButtons';\r\nimport AttributeCell from 'components/forms/pricing-item/pricing-form/filters-grid/AttributeCell';\r\nimport OperatorCell from 'components/forms/pricing-item/pricing-form/filters-grid/OperatorCell';\r\nimport ValueCell from 'components/forms/pricing-item/pricing-form/filters-grid/ValueCell';\r\n\r\n\r\ninterface GridRowProps {\r\n\tfilter: Required,\r\n\tconfigs: PricingItemConfiguration[]\r\n}\r\n\r\n\r\nconst GridRow = (props: GridRowProps) => {\r\n\tconst { filter, configs } = props;\r\n\t\r\n\tconst dispatch = useDispatch();\r\n\tconst updateFilter = (value: Required) => dispatch(updateExistPaymentTypeJson(value));\r\n\tconst removeFilter = (value: Required) => dispatch(removeExistPaymentTypeJson(value));\r\n\r\n\t\r\n\treturn (\r\n\t\t<>\r\n\t\t\t updateFilter({ ...filter, attribute: attribute })} />\r\n\r\n\t\t\t updateFilter({ ...filter, operator: operator })} />\r\n\r\n\t\t\t updateFilter({ ...filter, value: value })} />\r\n\r\n\t\t\t
\r\n\t\t\t\t removeFilter(filter)} />\r\n\t\t\t
\r\n\t\t\r\n\t);\r\n}\r\n\r\nexport default memo(GridRow);","import { useTranslation } from 'react-i18next';\r\nimport { useSelector, useDispatch } from \"react-redux\";\r\nimport { useGetPricingConfigurationQuery } from 'utils/api/pricings';\r\nimport { addEmptyPaymentTypeJson } from \"components/forms/pricing-item/PricingItemStore\";\r\nimport { selectPaymentTypeJson } from \"components/forms/pricing-item/PricingItemSelectors\";\r\nimport { GridLoading, GridError } from 'components/global/GridElements';\r\nimport { GridNewRecord } from 'components/global/GridButtons';\r\nimport GridHeader from 'components/forms/pricing-item/pricing-form/filters-grid/GridHeader';\r\nimport GridRow from 'components/forms/pricing-item/pricing-form/filters-grid/GridRow';\r\n\r\n\r\nconst Grid = (): JSX.Element => {\r\n\tconst { t } = useTranslation('formPages');\r\n\r\n\tconst filters = useSelector(selectPaymentTypeJson);\r\n\tconst dispatch = useDispatch();\r\n\tconst { isLoading, isSuccess, isError, data } = useGetPricingConfigurationQuery();\r\n\r\n\t\r\n\tif (isLoading) return (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n\r\n\tif (isError) return (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n\r\n\treturn (\r\n\t\t
\r\n\r\n\t\t\t\r\n\r\n\t\t\t{isSuccess && filters && filters.map(x => \r\n\t\t\t\t)}\r\n\r\n\t\t\t{isSuccess && (!filters || filters.length < 4) &&\r\n\t\t\t\t dispatch(addEmptyPaymentTypeJson())} />}\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default Grid;","import { useCallback, useRef, useEffect } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { useNavigate } from \"react-router-dom\";\r\nimport { useLazyCancelEditPricingItemQuery, useLazySaveEditPricingItemQuery, useSavePricingItemRequestMutation } from 'utils/api/pricings';\r\nimport { AppRoutesEnum } from 'components/global/routing/routesEnum';\r\nimport { GridLabel } from 'components/global/GridElements';\r\nimport { setShowInvalids } from \"components/forms/pricing-item/PricingItemStore\";\r\nimport { selectPricingItemId, selectPricingIsInvalid, selectIsSamePricing, selectModifiedPricing } from \"components/forms/pricing-item/PricingItemSelectors\";\r\nimport { FormConfirmButton, FormCancelButton } from 'components/global/FormButtons';\r\nimport PaymentType from 'components/forms/pricing-item/pricing-form/PaymentType';\r\nimport PaymentTypeEng from 'components/forms/pricing-item/pricing-form/PaymentTypeEng';\r\nimport ValidFrom from 'components/forms/pricing-item/pricing-form/ValidFrom';\r\nimport ValidTo from 'components/forms/pricing-item/pricing-form/ValidTo';\r\nimport LocalPrice from 'components/forms/pricing-item/pricing-form/LocalPrice';\r\nimport PriceWithoutTax from 'components/forms/pricing-item/pricing-form/PriceWithoutTax';\r\nimport Tax from 'components/forms/pricing-item/pricing-form/Tax';\r\nimport LocalCurrency from 'components/forms/pricing-item/pricing-form/LocalCurrency';\r\nimport ResidentDiscount from 'components/forms/pricing-item/pricing-form/ResidentDiscount';\r\nimport Commission from 'components/forms/pricing-item/pricing-form/Commission';\r\nimport BusinessEntity from 'components/forms/pricing-item/pricing-form/BusinessEntity';\r\nimport ValidityConfig from 'components/forms/pricing-item/pricing-form/validity-config/ValidityConfig';\r\nimport Grid from 'components/forms/pricing-item/pricing-form/filters-grid/Grid';\r\n\r\n\r\nconst PricingForm = (): JSX.Element => {\r\n\tconst { t } = useTranslation([ 'formPages', 'global' ]);\r\n\r\n\tconst pricingItemId = useSelector(selectPricingItemId);\r\n\tconst isInvalid = useSelector(selectPricingIsInvalid);\r\n\tconst isSame = useSelector(selectIsSamePricing);\r\n\tconst pricingItem = useSelector(selectModifiedPricing);\r\n\tconst savedRef = useRef(false);\r\n\t\r\n\tconst navigate = useNavigate();\r\n\tconst dispatch = useDispatch();\r\n\tconst showInvalids = (show: boolean) => dispatch(setShowInvalids(show));\r\n\tconst [ cancelEdit ] = useLazyCancelEditPricingItemQuery();\r\n\tconst [ saveEdit ] = useLazySaveEditPricingItemQuery();\r\n\tconst [ savePricingItem, { isLoading, isError, isSuccess, data } ] = useSavePricingItemRequestMutation();\r\n\r\n\r\n\tuseEffect(() => {\r\n\t\treturn () => {\r\n\t\t\tif (!savedRef && pricingItemId !== 0) cancelEdit(pricingItemId);\r\n\t\t}\r\n\t}, []);\r\n\r\n\r\n\tconst handleCancel = useCallback(() => {\r\n\t\tif (pricingItemId !== 0) cancelEdit(pricingItemId);\r\n\t\tnavigate(`/${AppRoutesEnum.pricings}`);\r\n\t},[ pricingItemId ]);\r\n\r\n\r\n\tconst handleSave = useCallback(async() => {\r\n\t\tif (isInvalid || !pricingItem) {\r\n\t\t\tshowInvalids(true);\r\n\t\t\tsetTimeout(() => window.scrollTo(0, 0), 5);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tlet response = await savePricingItem(pricingItem).unwrap();\r\n\t\tif (response.success === true) {\r\n\t\t\tsavedRef.current = true;\r\n\t\t\tif (pricingItemId !== 0) saveEdit(pricingItemId);\r\n\t\t\tnavigate(`/${AppRoutesEnum.pricings}`);\r\n\t\t};\r\n\t},[ isInvalid, pricingItem, pricingItemId ]);\r\n\t\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t\t\r\n\r\n\r\n\t\t\t{isSuccess && data && data.success === false &&\r\n\t\t\t\t

{data.message ?? t('global:errorMessage')}

}\r\n\r\n\t\t\t\r\n\t\t\t{isError &&\r\n\t\t\t\t

{t('global:errorMessage')}

}\r\n\r\n\r\n\t\t\t
\r\n\t\t\t\t isLoading ? {} : handleSave()} />\r\n\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default PricingForm;","import { useEffect } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { useNavigate } from \"react-router-dom\";\r\nimport { useLazyStartEditPricingItemQuery } from 'utils/api/pricings';\r\nimport { AppRoutesEnum } from 'components/global/routing/routesEnum';\r\nimport { resetStore } from \"components/forms/pricing-item/PricingItemStore\";\r\nimport { selectPricingItemId, selectAirportIcao } from 'components/forms/pricing-item/PricingItemSelectors';\r\nimport { PageLoading, PageError } from 'components/global/PageElements';\r\nimport PricingForm from 'components/forms/pricing-item/pricing-form/PricingForm';\r\n\r\n\r\nconst PricingItemPage = (): JSX.Element => {\r\n\tconst { t } = useTranslation([ 'formPages', 'global' ]);\r\n\r\n\tconst pricingItemId = useSelector(selectPricingItemId);\r\n\tconst airportIcao = useSelector(selectAirportIcao);\r\n\tconst dispatch = useDispatch();\r\n\tconst navigate = useNavigate();\r\n\tconst [ startEdit, { isLoading, data, isError, isSuccess } ] = useLazyStartEditPricingItemQuery({ pollingInterval: 60 * 1000 });\r\n\r\n\t\r\n\tuseEffect(() => {\r\n\t\tif (pricingItemId !== 0)\r\n\t\t\tstartEdit(pricingItemId);\r\n\t}, [ pricingItemId ]);\r\n\r\n\t\r\n\tuseEffect(() => {\r\n\t\tif (airportIcao === '')\r\n\t\t\tnavigate(`/${AppRoutesEnum.pricings}`);\r\n\t}, [ airportIcao ]);\r\n\r\n\r\n\tuseEffect(() => {\r\n\t\treturn () => {\r\n\t\t\tdispatch(resetStore());\r\n\t\t}\r\n\t}, []);\r\n\t\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t\t\t\r\n\t\t\t

{t('pricingItem.header')}

\r\n\r\n\t\t\t{isLoading &&\r\n\t\t\t\t}\r\n\r\n\t\t\t{isError &&\r\n\t\t\t\t navigate(`/${AppRoutesEnum.pricings}`)} />}\r\n\r\n\t\t\t{isSuccess && data && data.success === false &&\r\n\t\t\t\t navigate(`/${AppRoutesEnum.pricings}`)} />}\r\n\r\n\t\t\t{pricingItemId === 0 &&\r\n\t\t\t\t}\r\n\r\n\t\t\t{pricingItemId !== 0 && isSuccess && data && data.success === true &&\r\n\t\t\t\t}\r\n\r\n\t\t
\r\n\t)\r\n};\r\n\r\nexport default PricingItemPage;","import { baseApi } from 'utils/api/baseApi';\r\nimport { PaymentRequest } from 'types/PaymentRequest';\r\nimport { PaymentOverview, GroupedPaymentOverview } from 'types/PaymentOverview';\r\n\r\n\r\nconst transactionApi = baseApi.injectEndpoints({\r\n\toverrideExisting: false,\r\n\tendpoints: (builder) => ({\r\n\r\n\t\tgetAirportPayments: builder.query({\r\n\t\t\tquery: (icao) => ({\r\n\t\t\t\turl: 'Transaction/GetAirportsPayments',\r\n\t\t\t\tparams: { icao },\r\n\t\t\t}),\r\n\t\t\ttransformResponse: (response: PaymentOverview[], meta, arg) => separatePaymentsResult(response),\r\n\t\t\tprovidesTags: ['AirportPayments']\r\n\t\t}),\r\n\r\n\t\tgetUserPayments: builder.query({\r\n\t\t\tquery: () => 'Transaction/GetUserPayments',\r\n\t\t\ttransformResponse: (response: PaymentOverview[], meta, arg) => separatePaymentsResult(response),\r\n\t\t\tprovidesTags: ['UserPayments']\r\n\t\t}),\r\n\r\n\t\tsaveTransaction: builder.mutation({\r\n\t\t\tquery: (request) => ({\r\n\t\t\t\turl: 'Transaction/Save',\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\tbody: request,\r\n\t\t\t}),\r\n\t\t}),\r\n\t}),\r\n});\r\n\r\n\r\nexport const {\r\n\tuseLazyGetAirportPaymentsQuery,\r\n\tuseGetUserPaymentsQuery,\r\n\tuseSaveTransactionMutation } = transactionApi;\r\n\r\n\t\r\n\r\nconst separatePaymentsResult = (payments: PaymentOverview[]) => {\r\n\t\r\n\tlet groupedPayments: GroupedPaymentOverview[] = [];\r\n\t\r\n\tif (!payments) return null;\r\n\tif (payments.length === 0) return groupedPayments;\r\n\t\r\n\treturn payments.reduce((acc, value) => {\r\n\t\tif (!value.paymentTypes || value.paymentTypes.length === 0) return acc;\r\n\t\t\r\n\t\tvalue.paymentTypes.forEach(paymentDetail => {\r\n\t\t\tacc.push({\r\n\t\t\t\ttransactionId: value.transactionId,\r\n\t\t\t\tcomGateTransactionId: value.comGateTransactionId,\r\n\t\t\t\ttransactionDate: value.transactionDate,\r\n\t\t\t\tcurrency: value.currency,\r\n\t\t\t\ticao: value.icao,\r\n\t\t\t\tuserId: value.userId,\r\n\t\t\t\timatriculation: value.imatriculation,\r\n\t\t\t\tpilotBusinessEntityName: value.pilotBusinessEntityName,\r\n\t\t\t\ttitle: paymentDetail.title,\r\n\t\t\t\tairportBusinessEntityName: paymentDetail.airportBusinessEntityName,\r\n\t\t\t\tquantity: paymentDetail.quantity,\r\n\t\t\t\tprice: paymentDetail.price\r\n\t\t\t});\r\n\t\t});\r\n\t\treturn acc;\r\n\t}, groupedPayments);\r\n}","import { useTranslation } from 'react-i18next';\r\nimport format from 'date-fns/format';\r\nimport { CSVLink } from 'react-csv';\r\nimport { useGetUserPaymentsQuery } from 'utils/api/transaction';\r\n\r\n\r\nconst ReportToolbarUser = (): JSX.Element => {\r\n\tconst { t } = useTranslation(['formPages', 'global', 'transactionsPage']);\r\n\r\n\tconst { data } = useGetUserPaymentsQuery();\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t 0 ? '' : ' disabled'}`}\r\n\t\t\t\tonClick={() => data && data.length > 0 ? true : false}\r\n\t\t\t\ttarget=\"_blank\">\r\n\t\t\t\t{t('global:appButtons.saveToExcel')}\r\n\t\t\t\r\n\t\t
\r\n\t)\r\n};\r\n\r\nexport default ReportToolbarUser;","import { useEffect } from 'react';\r\nimport { useSelector } from \"react-redux\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport format from 'date-fns/format';\r\nimport { CSVLink } from 'react-csv';\r\nimport { selectGlobalAirport } from \"store/persistSelectors\";\r\nimport { useLazyGetAirportPaymentsQuery } from 'utils/api/transaction';\r\n\r\n\r\nconst ReportToolbarAirport = (): JSX.Element => {\r\n\tconst { t } = useTranslation(['formPages', 'global', 'transactionsPage']);\r\n\r\n\tconst airport = useSelector(selectGlobalAirport);\r\n\tconst [getPayments, { isLoading, isSuccess, data, isError }] = useLazyGetAirportPaymentsQuery();\r\n\r\n\t\r\n\tuseEffect(() => {\r\n\t\tif (airport !== null)\r\n\t\t\tgetPayments(airport.icao);\r\n\t}, [ airport ]);\r\n\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t 0 ? '' : ' disabled'}`}\r\n\t\t\t\tonClick={() => data && data.length > 0 ? true : false}\r\n\t\t\t\ttarget=\"_blank\">\r\n\t\t\t\t{t('global:appButtons.saveToExcel')}\r\n\t\t\t\r\n\t\t
\r\n\t)\r\n};\r\n\r\nexport default ReportToolbarAirport;","import { useTranslation } from 'react-i18next';\r\n\r\n\r\nconst GridHeader = (): JSX.Element => {\r\n\tconst { t } = useTranslation(['formPages', 'transactionsPage']);\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t
\r\n\t\t\t\t{t('transactionsPage:headers.landingDate')}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{t('labels.imatriculation')}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{t('labels.icao')}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{t('labels.paymentType')}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{t('transactionsPage:headers.airportBusinessEntityName')}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{t('transactionsPage:headers.quantity')}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{t('labels.price')}\r\n\t\t\t
\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default GridHeader;","import { memo } from 'react';\r\nimport format from 'date-fns/format';\r\nimport parseISO from 'date-fns/parseISO';\r\nimport { GroupedPaymentOverview } from 'types/PaymentOverview';\r\nimport { getDateFormat } from 'translations/index';\r\n\r\n\r\ninterface GridRowProps {\r\n\tpayment: GroupedPaymentOverview\r\n}\r\n \r\n\r\nconst GridRow = (props: GridRowProps): JSX.Element => {\r\n\tconst { icao, imatriculation, transactionDate, currency, price, title, airportBusinessEntityName, quantity } = props.payment;\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t
\r\n\t\t\t\t

{format(parseISO(transactionDate), getDateFormat())}

\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t

{imatriculation}

\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t

{icao}

\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{title}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{airportBusinessEntityName}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{quantity}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t

{`${price} ${currency}`}

\r\n\t\t\t
\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default memo(GridRow);","import { memo } from 'react';\r\nimport { useGetUserPaymentsQuery } from 'utils/api/transaction';\r\nimport { GridLoading, GridError, GridEmpty } from 'components/global/GridElements';\r\nimport GridHeader from 'components/transactions-page/user-transactions-grid/GridHeader';\r\nimport GridRow from 'components/transactions-page/user-transactions-grid/GridRow';\r\n\r\n\r\n\r\ninterface GridProps {\r\n\tadminLoading: boolean,\r\n\tadminError: boolean\r\n}\r\n\r\n\r\nconst Grid = (props: GridProps): JSX.Element => {\r\n\tconst { adminLoading, adminError } = props;\r\n\tconst { isLoading, isSuccess, data, isError, isFetching } = useGetUserPaymentsQuery();\r\n\t\r\n\r\n\tif (adminLoading || isLoading || isFetching) return (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n\r\n\tif (adminError || isError) return (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n\r\n\tif (isSuccess && data && data.length === 0) return (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t{isSuccess && data && data.map(x =>\r\n\t\t\t\t)}\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default memo(Grid);","import { useTranslation } from 'react-i18next';\r\n\r\n\r\nconst GridHeader = (): JSX.Element => {\r\n\tconst { t } = useTranslation(['formPages', 'transactionsPage']);\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t
\r\n\t\t\t\t{t('transactionsPage:headers.landingDate')}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{t('labels.imatriculation')}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{t('labels.paymentType')}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{t('transactionsPage:headers.airportBusinessEntityName')}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{t('transactionsPage:headers.quantity')}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{t('labels.price')}\r\n\t\t\t
\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default GridHeader;","import { memo } from 'react';\r\nimport format from 'date-fns/format';\r\nimport parseISO from 'date-fns/parseISO';\r\nimport { GroupedPaymentOverview } from 'types/PaymentOverview';\r\nimport { getDateFormat } from 'translations/index';\r\n\r\n\r\ninterface GridRowProps {\r\n\tpayment: GroupedPaymentOverview\r\n}\r\n \r\n\r\nconst GridRow = (props: GridRowProps): JSX.Element => {\r\n\tconst { imatriculation, transactionDate, currency, price, title, airportBusinessEntityName, quantity } = props.payment;\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t
\r\n\t\t\t\t

{format(parseISO(transactionDate), getDateFormat())}

\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t

{imatriculation}

\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{title}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{airportBusinessEntityName}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{quantity}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t

{`${price} ${currency}`}

\r\n\t\t\t
\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default memo(GridRow);","import { useEffect } from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { selectGlobalAirport } from \"store/persistSelectors\";\r\nimport { useLazyGetAirportPaymentsQuery } from 'utils/api/transaction';\r\nimport { GridLoading, GridError, GridNoAirport, GridEmpty } from 'components/global/GridElements';\r\nimport GridHeader from 'components/transactions-page/airport-transactions-grid/GridHeader';\r\nimport GridRow from 'components/transactions-page/airport-transactions-grid/GridRow';\r\n//import { fakePaymentsOverview } from 'utils/fake-data/paymentsOverview';\r\n\r\n\r\nconst Grid = (): JSX.Element => {\r\n\r\n\tconst airport = useSelector(selectGlobalAirport);\r\n\tconst [ getPayments, { isLoading, isSuccess, data, isError, isFetching }] = useLazyGetAirportPaymentsQuery();\r\n\r\n\r\n\tuseEffect(() => {\r\n\t\tif (airport !== null)\r\n\t\t\tgetPayments(airport.icao);\r\n\t}, [ airport ]);\r\n\r\n\t\r\n\tif (!airport) return (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n\r\n\tif (isLoading || isFetching) return (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n\r\n\tif (isError) return (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n\r\n\tif (isSuccess && data && data.length === 0) return ( /*if(false) return (*/\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t{isSuccess && data && data.map(x => /*fakePaymentsOverview.map(x =>*/\r\n\t\t\t\t)}\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default Grid;","import { useState, useEffect } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useSelector } from \"react-redux\";\r\nimport { selectGlobalAirport } from \"store/persistSelectors\";\r\nimport { useLazyGetIsAdminOrResidentOnAirportQuery } from 'utils/api/airports';\r\nimport ReportToolbarUser from 'components/transactions-page/ReportToolbarUser';\r\nimport ReportToolbarAirport from 'components/transactions-page/ReportToolbarAirport';\r\nimport UserGrid from 'components/transactions-page/user-transactions-grid/Grid';\r\nimport AirportGrid from 'components/transactions-page/airport-transactions-grid/Grid';\r\n\r\n\r\nconst TransactionsPage = (): JSX.Element => {\r\n\tconst { t } = useTranslation('transactionsPage');\r\n\r\n\tconst airport = useSelector(selectGlobalAirport);\r\n\tconst [ mode, setMode ] = useState<'userPayments' | 'airportPayments'>('userPayments');\r\n\tconst [ isAdminOrResidentOnAirport, { isLoading, isSuccess, data, isError, isFetching } ] = useLazyGetIsAdminOrResidentOnAirportQuery();\r\n\r\n\t\r\n\tuseEffect(() => {\r\n\t\tif (airport !== null) {\r\n\t\t\tisAdminOrResidentOnAirport(airport.icao);\r\n\t\t\tsetMode('userPayments');\r\n\t\t};\r\n\t}, [ airport ]);\r\n\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t\t\t\r\n\t\t\t

{t('header')}

\r\n\r\n\t\t\t
\r\n\t\t\t\t

setMode('userPayments')}>\r\n\t\t\t\t\t{t('userPaymentsLabel')}\r\n\t\t\t\t

\r\n\r\n\t\t\t\t{isSuccess && data === true &&\r\n\t\t\t\t\t

setMode('airportPayments')}>\r\n\t\t\t\t\t\t{t('airportPaymentsLabel')}\r\n\t\t\t\t\t

}\r\n\t\t\t
\r\n\r\n\r\n\t\t\t{mode === 'userPayments' &&\r\n\t\t\t\t}\r\n\t\t\t{mode === 'userPayments' &&\r\n\t\t\t\t}\t\r\n\r\n\t\t\t{mode === 'airportPayments' &&\r\n\t\t\t\t}\r\n\t\t\t{mode === 'airportPayments' &&\r\n\t\t\t\t}\t\r\n\t\t
\r\n\t)\r\n};\r\n\r\nexport default TransactionsPage;","import { createSelector } from '@reduxjs/toolkit';\r\nimport { RootState } from 'store';\r\nimport { PricingItem } from 'types/PricingItem';\r\nimport { PaymentRequest } from 'types/PaymentRequest';\r\nimport { Airport } from 'types/Airport';\r\n\r\n\r\nexport const selectSelectedAirport = (state: RootState) => state.cartPage.selectedAirport;\r\nexport const selectImatriculation = (state: RootState) => state.cartPage.imatriculation;\r\nexport const selectBusinessEntityId = (state: RootState) => state.cartPage.businessEntityId;\r\nexport const selectRequestedDate = (state: RootState) => state.cartPage.requestedDate;\r\nexport const selectAllPricings = (state: RootState) => state.cartPage.allPricings;\r\n\r\n\r\nexport const selectExistPurchased = createSelector(\r\n\t\tselectAllPricings,\r\n\t(\r\n\t\tallPricings: PricingItem[]\r\n\t) => {\r\n\t\treturn allPricings.some(x => typeof x.cartQuantity === 'number' && x.cartQuantity > 0);\r\n});\r\n\r\n\r\nexport const selectPurchasedItems = createSelector(\r\n\t\tselectAllPricings,\r\n\t(\r\n\t\tallPricings: PricingItem[]\r\n\t) => {\r\n\t\treturn allPricings.filter(x => typeof x.cartQuantity === 'number' && x.cartQuantity > 0);\r\n});\r\n\r\n\r\nexport const selectTotalPrice = createSelector(\r\n\t\tselectAllPricings,\r\n\t(\r\n\t\tallPricings: PricingItem[]\r\n\t) => {\r\n\t\tlet priceObject = { totalPrice: 0, currency: \"\" };\r\n\r\n\t\tlet fullPriceObject = allPricings.reduce((acc, pricingItem) => {\r\n\t\t\tif (typeof pricingItem.cartQuantity !== 'number' || pricingItem.cartQuantity <= 0)\r\n\t\t\t\treturn acc;\r\n\t\t\t\t\r\n\t\t\tacc.totalPrice = acc.totalPrice + (pricingItem.localPrice * pricingItem.cartQuantity);\r\n\t\t\tif (acc.currency === \"\")\r\n\t\t\t\tacc.currency = pricingItem.localCurrency;\r\n\t\t\t\r\n\t\t\treturn acc;\r\n\t\t}, priceObject);\r\n\r\n\t\treturn `${fullPriceObject.totalPrice.toFixed(2)} ${fullPriceObject.currency}`;\r\n});\r\n\r\n\r\nexport const selectDataForSendPayment = createSelector(\r\n\t[\r\n\t\tselectSelectedAirport,\r\n\t\tselectImatriculation,\r\n\t\tselectBusinessEntityId,\r\n\t\tselectRequestedDate,\r\n\t\tselectAllPricings\r\n\t],(\r\n\t\tairport: Airport | null,\r\n\t\timatriculation: string,\r\n\t\tbusinessEntityId: number,\r\n\t\tdate: string,\r\n\t\tallPricings: PricingItem[]\r\n\t) => {\r\n\t\tif (!airport) return null;\r\n\t\tif (imatriculation === '' || date === '') return null;\r\n\r\n\t\tconst filteredPricings = allPricings.filter(x =>\r\n\t\t\tx.cartQuantity !== null\r\n\t\t\t&& x.cartQuantity !== undefined\r\n\t\t\t&& x.cartQuantity > 0);\r\n\r\n\t\tconst newPaymentRequest: PaymentRequest = {\r\n\t\t\ttransactionId: null,\r\n\t\t\tpilotBusinessEntity: businessEntityId,\r\n\t\t\ticao: airport.icao,\r\n\t\t\timatriculation: imatriculation,\r\n\t\t\tcomGateUrl: null,\r\n\t\t\trequestedDate: date,\r\n\t\t\titems: filteredPricings.map(x => ({ pricingItemId: x.id, quantity: x.cartQuantity ?? 0, price: x.localPrice }))\r\n\t\t};\r\n\t\treturn newPaymentRequest;\r\n});","import { useTranslation } from 'react-i18next';\r\n\r\n\r\nconst GridHeader = (): JSX.Element => {\r\n\tconst { t } = useTranslation('cartPage');\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t
\r\n\t\t\t\t{t('select.headers.type')}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{t('select.headers.price')}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{t('select.headers.quantity')}\r\n\t\t\t
\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default GridHeader;","import { ChangeEvent, useRef } from \"react\";\r\nimport { Form } from 'react-bootstrap';\r\nimport { checkIntegerInputAndMaxValue } from 'components/global/utils';\r\n\r\n\r\ninterface QuantityProps {\r\n\tpricingItemId: number,\r\n\tquantity: number,\r\n\tupdateQuantity: (pricingItemId: number, quantity: number) => void\r\n}\r\n\r\n\r\nconst Quantity = (props: QuantityProps): JSX.Element => {\r\n\tconst { pricingItemId, quantity, updateQuantity } = props;\r\n\tconst formRef = useRef(null);\r\n\r\n\treturn (\r\n\t\t formRef?.current?.select()}\r\n\t\t\tonChange={(event: ChangeEvent) => {\r\n\t\t\t\tif (event.target.value.length === 0 || event.target.value === '0')\r\n\t\t\t\t\tupdateQuantity(pricingItemId, 0);\r\n\t\t\t\tconst parsedObject = checkIntegerInputAndMaxValue(event.target.value, 99);\r\n\t\t\t\tif (parsedObject.success)\r\n\t\t\t\t\tupdateQuantity(pricingItemId, parsedObject.parsedValue);\r\n\t\t\t}} />\r\n\t)\r\n}\r\n\r\nexport default Quantity;","import { memo } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { PricingItem } from 'types/PricingItem';\r\nimport Quantity from 'components/cart/select-page/Quantity';\r\nimport { FormConfirmButton, FormCancelButton } from 'components/global/FormButtons';\r\n\r\n\r\ninterface GridRowProps {\r\n\titem: PricingItem,\r\n\tupdateQuantity: (pricingItemId: number, quantity: number) => void,\r\n\tincreaseQuantity: (pricingItemId: number) => void,\r\n\tdecreaseQuantity: (pricingItemId: number) => void\r\n}\r\n\r\n\r\nconst GridRow = (props: GridRowProps): JSX.Element => {\r\n\tconst { updateQuantity, increaseQuantity, decreaseQuantity } = props;\r\n\tconst { id, paymentTypeText, localPrice, cartQuantity, localCurrency, residentDiscount, priceBeforeDiscount } = props.item;\r\n\tconst { t } = useTranslation('cartPage');\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t
0 ? \" selected-cell\" : \"\"}`}>\r\n\t\t\t\t

{paymentTypeText}

\r\n\t\t\t
\r\n\r\n\t\t\t
0 ? \" selected-cell\" : \"\"}`}>\r\n\t\t\t\t{ residentDiscount && residentDiscount > 0 && priceBeforeDiscount\r\n\t\t\t\t?

{priceBeforeDiscount}{` ${localPrice} ${localCurrency}`}

\r\n\t\t\t\t:

{`${localPrice} ${localCurrency}`}

}\r\n\t\t\t
\r\n\r\n\t\t\t
0 ? \" selected-cell\" : \"\"}`}>\r\n\t\t\t\t decreaseQuantity(id)} />\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t increaseQuantity(id)} />\r\n\t\t\t
\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default memo(GridRow);","import { useCallback } from 'react';\r\nimport { useSelector, useDispatch } from \"react-redux\";\r\nimport { updateQuantity, increaseQuantity, decreaseQuantity } from \"components/cart/CartStore\";\r\nimport { selectAllPricings } from \"components/cart/CartSelectors\";\r\nimport GridHeader from 'components/cart/select-page/GridHeader';\r\nimport GridRow from 'components/cart/select-page/GridRow';\r\nimport { GridEmpty } from 'components/global/GridElements';\r\n\r\n\r\nconst Grid = (): JSX.Element => {\r\n\r\n\tconst allPricings = useSelector(selectAllPricings);\r\n\tconst dispatch = useDispatch();\r\n\tconst handleUpdate = useCallback((pricingItemId: number, quantity: number) => dispatch(updateQuantity({ pricingItemId, quantity })), []);\r\n\tconst handleIncrease = useCallback((pricingItemId: number) => dispatch(increaseQuantity(pricingItemId)), []);\r\n\tconst handleDecrease = useCallback((pricingItemId: number) => dispatch(decreaseQuantity(pricingItemId)), []);\r\n\t\r\n\r\n\tif (!allPricings || allPricings.length === 0) return (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n\r\n\treturn (\r\n\t\t
\r\n\r\n\t\t\t\r\n\r\n\t\t\t{allPricings && allPricings.map(x => \t\r\n\t\t\t\t)}\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default Grid;","import { useTranslation } from 'react-i18next';\r\nimport { useSelector } from \"react-redux\";\r\nimport { useNavigate } from \"react-router-dom\";\r\nimport { AppRoutesEnum } from 'components/global/routing/routesEnum';\r\nimport { selectExistPurchased, selectSelectedAirport } from \"components/cart/CartSelectors\";\r\nimport { FormConfirmButton, FormCancelButton } from 'components/global/FormButtons';\r\nimport Grid from 'components/cart/select-page/Grid';\r\n\r\n\r\ninterface SelectPageProps {\r\n\thandleShowSummary: () => void\r\n}\r\n\r\n\r\nconst SelectPage = (props: SelectPageProps): JSX.Element => {\r\n\tconst { handleShowSummary } = props;\r\n\tconst { t } = useTranslation([ 'cartPage', 'global' ]);\r\n\t\r\n\tconst anyPurchased = useSelector(selectExistPurchased);\r\n\tconst selectedAirport = useSelector(selectSelectedAirport);\r\n\tconst navigate = useNavigate();\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t

{t('select.header')}

\r\n\r\n\t\t\t

{`${t('select.airportInfo')}: `}\r\n\t\t\t\t{selectedAirport ? `${selectedAirport.icao} - ${selectedAirport.name}` : \"\"}\r\n\t\t\t

\r\n\r\n\t\t\t\r\n\r\n\t\t\t
\r\n\t\t\t\t\r\n\r\n\t\t\t\t navigate(AppRoutesEnum.basePath)} />\r\n\t\t\t
\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default SelectPage;","import { useTranslation } from 'react-i18next';\r\n\r\n\r\nconst GridHeader = (): JSX.Element => {\r\n\tconst { t } = useTranslation('cartPage');\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t
\r\n\t\t\t\t{t('summary.headers.item')}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{t('summary.headers.quantity')}\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\t{t('summary.headers.pricePerUnit')}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{t('summary.headers.priceWithVat')}\r\n\t\t\t
\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default GridHeader;","import { memo } from 'react';\r\nimport { PricingItem } from 'types/PricingItem';\r\n\r\n\r\ninterface GridRowProps {\r\n\titem: PricingItem\r\n}\r\n\r\n\r\nconst GridRow = (props: GridRowProps): JSX.Element => {\r\n\tconst { paymentTypeText, localPrice, cartQuantity, localCurrency } = props.item;\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t
\r\n\t\t\t\t

{paymentTypeText}

\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t

{cartQuantity}x

\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t

{`${localPrice} ${localCurrency}`}

\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{typeof cartQuantity === 'number' &&\r\n\t\t\t\t\t

{`${localPrice * cartQuantity} ${localCurrency}`}

}\r\n\t\t\t
\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default memo(GridRow);","import { useSelector } from \"react-redux\";\r\nimport { selectPurchasedItems } from \"components/cart/CartSelectors\";\r\nimport GridHeader from 'components/cart/summary-page/GridHeader';\r\nimport GridRow from 'components/cart/summary-page/GridRow';\r\n\r\n\r\nconst Grid = (): JSX.Element => {\r\n\r\n\tconst purchasedItems = useSelector(selectPurchasedItems);\r\n\r\n\treturn (\r\n\t\t
\r\n\r\n\t\t\t\r\n\r\n\t\t\t{purchasedItems && purchasedItems.map(x => \t\r\n\t\t\t\t)}\r\n\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default Grid;","import { useCallback, useState, useEffect } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useNavigate } from \"react-router-dom\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { AppRoutesEnum } from 'components/global/routing/routesEnum';\r\nimport { selectExistPurchased, selectSelectedAirport, selectTotalPrice, selectDataForSendPayment } from \"components/cart/CartSelectors\";\r\nimport { useSaveTransactionMutation } from 'utils/api/transaction';\r\nimport Grid from 'components/cart/summary-page/Grid';\r\nimport { FormConfirmButton, FormCancelButton } from 'components/global/FormButtons';\r\n\r\n\r\ninterface SummaryPageProps {\r\n\thandleShowSelect: () => void\r\n}\r\n\r\n\r\nconst SummaryPage = (props: SummaryPageProps): JSX.Element => {\r\n\tconst { handleShowSelect } = props;\r\n\tconst { t } = useTranslation([ 'cartPage', 'global' ]);\r\n\r\n\tconst navigate = useNavigate();\r\n\tconst anyPurchased = useSelector(selectExistPurchased);\r\n\tconst selectedAirport = useSelector(selectSelectedAirport);\r\n\tconst totalPrice = useSelector(selectTotalPrice);\r\n\tconst dataForSendPayment = useSelector(selectDataForSendPayment);\r\n\r\n\tconst [ componentLoading, setComponentLoading ] = useState(false);\r\n\tconst [ saveTransaction, { isLoading, isError, data } ] = useSaveTransactionMutation();\r\n\r\n\r\n\tuseEffect(() => {\r\n\t\tif (isLoading) setComponentLoading(true);\r\n\t}, [ isLoading ]);\r\n\t\r\n\t\r\n\tconst handleConfirm = useCallback(async() => {\r\n\t\tif (!dataForSendPayment) return;\r\n\t\tconst request = await saveTransaction(dataForSendPayment).unwrap();\r\n\t\tif (request.comGateUrl && request.comGateUrl.length > 0) {\r\n\t\t\twindow.location.replace(request.comGateUrl);\r\n\t\t}\r\n\t\telse if (request && request.success) {\r\n\t\t\tnavigate(AppRoutesEnum.basePath);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tsetComponentLoading(false);\r\n\t\t}\r\n\t},[ dataForSendPayment ]);\r\n\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t

{t('summary.header')}

\r\n\r\n\t\t\t\r\n\t\t\t

\r\n\t\t\t\t{`${t('summary.airportInfo')}: `}\r\n\t\t\t\t{selectedAirport ? `${selectedAirport.icao} - ${selectedAirport.name}` : ''}\r\n\t\t\t

\r\n\r\n\t\t\t\r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t\t

\r\n\t\t\t\t{`${t('summary.priceInfo')}: `}\r\n\t\t\t\t{totalPrice}\r\n\t\t\t

\r\n\r\n\t\t\t{isError &&\r\n\t\t\t\t

{t('global:errorMessage')}

}\r\n\r\n\t\t\t{data && data.success === false && data.message &&\r\n\t\t\t\t

{data.message ?? t('global:errorMessage')}

}\r\n\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\t isLoading ? {} : handleConfirm()} />\r\n\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default SummaryPage;","import { useState, useEffect } from 'react';\r\nimport { useSelector, useDispatch } from \"react-redux\";\r\nimport { useNavigate } from \"react-router-dom\";\r\nimport { AppRoutesEnum } from 'components/global/routing/routesEnum';\r\nimport { selectSelectedAirport } from \"components/cart/CartSelectors\";\r\nimport { resetStore } from \"components/cart/CartStore\";\r\nimport SelectPage from 'components/cart/select-page/SelectPage';\r\nimport SummaryPage from 'components/cart/summary-page/SummaryPage';\r\n\r\n\r\nconst CartPage = (): JSX.Element => {\r\n\r\n\tconst navigate = useNavigate();\r\n\tconst selectedAirport = useSelector(selectSelectedAirport);\r\n\tconst dispatch = useDispatch();\r\n\tconst [ showSummary, setShowSummary ] = useState(false);\r\n\t\r\n\r\n\tuseEffect(() => {\r\n\t\treturn () => {\r\n\t\t\tdispatch(resetStore());\r\n\t\t}\r\n\t}, []);\r\n\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!selectedAirport) navigate(AppRoutesEnum.basePath);\r\n\t}, [ selectedAirport ]);\r\n\r\n\r\n\treturn (\r\n\t\t
\r\n\r\n\t\t\t{!showSummary &&\r\n\t\t\t\t setShowSummary(true)}/>}\r\n\r\n\t\t\t{showSummary &&\r\n\t\t\t\t setShowSummary(false)}/>}\r\n\t\t\t\t\t\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default CartPage;","import { useSelector } from 'react-redux';\r\nimport { useRoutes, RouteObject } from 'react-router-dom';\r\nimport { selectIsAuthenticated, selectUserMode } from 'store/globalSelectors';\r\nimport { AppRoutesEnum } from 'components/global/routing/routesEnum';\r\nimport { checkAuth, checkIndex, checkUnregAdminPilot, checkAdminPilot, checkPilot } from 'components/global/routing/routesChecks';\r\nimport NotFoundPage from 'components/global/base-pages/NotFoundPage';\r\nimport AppLayout from 'components/global/AppLayout';\r\nimport PilotPage from 'components/forms/pilot-page/PilotPage';\r\nimport PilotCompanyPage from 'components/forms/pilot-company/PilotCompanyPage';\r\nimport PlanePage from 'components/forms/plane-page/PlanePage';\r\nimport AssignAirportPage from 'components/forms/assign-airport/AssignAirportPage';\r\nimport AirportPage from 'components/forms/airport-page/AirportPage';\r\nimport AirportCompany from 'components/forms/airport-company/AirportCompanyPage';\r\nimport RolesPage from 'components/roles-page/RolesPage';\r\nimport PricingsPage from 'components/pricings-page/PricingsPage';\r\nimport PricingItemPage from 'components/forms/pricing-item/PricingItemPage';\r\nimport TransactionsPage from 'components/transactions-page/TransactionsPage';\r\nimport CartPage from 'components/cart/CartPage';\r\nimport AdminPage from 'components/admin-page/AdminPage';\r\n\r\n\r\nconst useAppRoutes = () => {\r\n\r\n\tconst isAuth = useSelector(selectIsAuthenticated);\r\n\tconst userMode = useSelector(selectUserMode);\r\n\r\n\tconst routes: RouteObject[] = [\r\n\t\t{\r\n\t\t\tpath: \"*\",\r\n\t\t\telement: \r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: AppRoutesEnum.basePath,\r\n\t\t\telement: checkAuth(isAuth, ),\r\n\t\t\tchildren: [\r\n\t\t\t\t{\r\n\t\t\t\t\tindex: true,\r\n\t\t\t\t\telement: checkIndex(isAuth, userMode)\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tpath: AppRoutesEnum.pilot,\r\n\t\t\t\t\telement: checkUnregAdminPilot(isAuth, userMode, )\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tpath: AppRoutesEnum.pilotCompany,\r\n\t\t\t\t\telement: checkUnregAdminPilot(isAuth, userMode, )\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tpath: AppRoutesEnum.plane,\r\n\t\t\t\t\telement: checkAdminPilot(isAuth, userMode, )\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tpath: AppRoutesEnum.assignAirport,\r\n\t\t\t\t\telement: checkAdminPilot(isAuth, userMode, )\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tpath: AppRoutesEnum.airport,\r\n\t\t\t\t\telement: checkAdminPilot(isAuth, userMode, )\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tpath: AppRoutesEnum.airportCompany,\r\n\t\t\t\t\telement: checkAdminPilot(isAuth, userMode, )\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tpath: AppRoutesEnum.roles,\r\n\t\t\t\t\telement: checkAdminPilot(isAuth, userMode, )\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tpath: AppRoutesEnum.pricings,\r\n\t\t\t\t\telement: checkAdminPilot(isAuth, userMode, )\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tpath: AppRoutesEnum.pricingItem,\r\n\t\t\t\t\telement: checkAdminPilot(isAuth, userMode, )\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tpath: AppRoutesEnum.payments,\r\n\t\t\t\t\telement: checkAdminPilot(isAuth, userMode, )\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tpath: AppRoutesEnum.cart,\r\n\t\t\t\t\telement: checkPilot(isAuth, userMode, )\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tpath: AppRoutesEnum.profile,\r\n\t\t\t\t\telement: checkPilot(isAuth, userMode, )\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t}\r\n\t];\r\n\r\n\treturn useRoutes(routes);\r\n};\r\n\r\nexport default useAppRoutes;","import { useSelector } from \"react-redux\";\r\nimport { selectUserId } from \"store/globalSelectors\";\r\nimport { ApiError } from 'types/ApiError';\r\n\r\n\r\ninterface ErrorElementProps {\r\n\terror: ApiError\r\n};\r\n\r\n\r\nconst ErrorElement = (props: ErrorElementProps): JSX.Element => {\r\n\tconst { timestamp, actionPayload, meta, request } = props.error;\r\n\tconst userId = useSelector(selectUserId);\r\n\r\n\treturn (\r\n\t\t
\t\r\n\r\n\t\t\t

Api Error

\r\n\t\t\t\r\n\t\t\t

{`error - ${actionPayload ? actionPayload.error : '-'}`}

\r\n\t\t\t

{`status - ${actionPayload ? actionPayload.status : '-'}`}

\r\n\t\t\t\r\n\t\t\t

{`endpoint - ${meta ? meta.endpoint : '-'}`}

\r\n\t\t\t

{`args - ${meta ? JSON.stringify(meta.originalArgs, null, 2) : '-'}`}

\r\n\t\t\t\r\n\t\t\t

{`method - ${request ? request.method : '-'}`}

\r\n\t\t\t

{`url - ${request ? request.url : '-'}`}

\r\n\t\t\t\r\n\t\t\t

{`user - ${userId}`}

\r\n\t\t\t

{`time - ${timestamp}`}

\r\n\t\t
\r\n\t)\r\n};\r\n\r\nexport default ErrorElement;","import { memo } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { FormCancelButton } from 'components/global/FormButtons';\r\nimport { clearApiErrors, showErrorModal, selectShowErrorModal, selectApiErrors } from 'components/global/error-modal/ErrorModalStore';\r\nimport ErrorElement from 'components/global/error-modal/ErrorElement';\r\n\r\n\r\nconst ErrorModal = (): JSX.Element => {\r\n\tconst { t } = useTranslation('global');\r\n\r\n\tconst show = useSelector(selectShowErrorModal);\r\n\tconst errors = useSelector(selectApiErrors);\r\n\tconst dispatch = useDispatch();\r\n\tconst handleClose = () => {\r\n\t\tdispatch(showErrorModal(false));\r\n\t\tdispatch(clearApiErrors());\r\n\t};\r\n\t\r\n\treturn (\r\n\t\t\r\n\r\n\t\t\t\r\n\r\n\t\t\t\t
\r\n\r\n\t\t\t\t\t{errors.map(x =>\r\n\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default memo(ErrorModal);","import { useEffect, useCallback } from \"react\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { useSearchParams } from 'react-router-dom';\r\nimport { setUserMode, setLanguage } from \"store/globalStore\";\r\nimport { UserModeEnum, LanguageEnum } from 'types/enums';\r\nimport { Pilot } from 'types/Pilot';\r\nimport { useLazyGetPilotQuery, useSavePilotMutation } from 'utils/api/user';\r\nimport { useLazyGetAllUserPlanesQuery } from 'utils/api/planes';\r\nimport { selectIsAuthenticated, selectLanguage } from \"store/globalSelectors\";\r\nimport { isEmpty } from 'components/global/utils';\r\nimport ErrorBoundary from \"components/global/base-pages/ErrorBoundary\";\r\nimport AuthComponent from 'components/global/authentication/AuthComponent';\r\nimport useAppRoutes from 'components/global/routing/useAppRoutes';\r\nimport ErrorModal from 'components/global/error-modal/ErrorModal';\r\n/* deactivated terms */\r\n\r\n\r\nconst App = (): JSX.Element => {\r\n\r\n\tconst isAuth = useSelector(selectIsAuthenticated);\r\n\tconst language = useSelector(selectLanguage);\r\n\tconst appRoutes = useAppRoutes();\r\n\tlet [ searchParams, setSearchParams ] = useSearchParams();\r\n\tconst langParam = searchParams.get('lang');\r\n\r\n\tconst dispatch = useDispatch();\r\n\tconst changeUserMode = (mode: UserModeEnum) => dispatch(setUserMode(mode));\r\n\tconst changeLanguage = (language: LanguageEnum) => dispatch(setLanguage(language));\r\n\tconst [ getPilot, { isError: pilotError, data: pilotData } ] = useLazyGetPilotQuery();\r\n\tconst [ getPlanes, { isError: planesError, data: planesData } ] = useLazyGetAllUserPlanesQuery();\r\n\tconst [ updatePilot, { isError: updatePilotError } ] = useSavePilotMutation();\r\n\r\n\r\n\tuseEffect(() => {\r\n\t\tif (isAuth) getPilot();\r\n\t}, [ isAuth ]);\r\n\r\n\t\r\n\tuseEffect(() => {\r\n\t\tif (pilotData) {\r\n\t\t\tcheckLanguage(pilotData)\r\n\t\t\tgetPlanes();\r\n\t\t}\r\n\t}, [ pilotData ]);\r\n\r\n\t\r\n\tuseEffect(() => {\r\n\t\tif (pilotError || planesError || updatePilotError)\r\n\t\t\tchangeUserMode(UserModeEnum.error);\r\n\t}, [ pilotError, planesError ]);\r\n\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!pilotData || !planesData) return;\r\n\t\tif (isPilot()) {\r\n\t\t\tchangeUserMode(UserModeEnum.pilot);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (isAdministrator()) {\r\n\t\t\tchangeUserMode(UserModeEnum.administrator);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (isAuth) {\r\n\t\t\tchangeUserMode(UserModeEnum.unregistered);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tchangeUserMode(UserModeEnum.error);\r\n\t}, [ pilotData, planesData, isAuth ]);\r\n\r\n\r\n\tconst isPilot = useCallback(() => {\r\n\t\tif (!pilotData) return false;\r\n\t\tif (!pilotData.termsBussiness) return false;\r\n\t\tif (!pilotData.termsContract) return false;\r\n\t\t//if (!pilotData.termsService) return false;\r\n\t\tif (isEmpty(pilotData.street)) return false;\r\n\t\tif (isEmpty(pilotData.city)) return false;\r\n\t\tif (isEmpty(pilotData.postalCode)) return false;\r\n\t\tif (isEmpty(pilotData.country)) return false;\r\n\t\tif (isEmpty(pilotData.pilotLicenceNumber)) return false;\r\n\t\tif (!planesData || planesData.length === 0) return false;\r\n\t\treturn true;\r\n\t}, [ pilotData, planesData ]);\r\n\r\n\r\n\tconst isAdministrator = useCallback(() => {\r\n\t\tif (!pilotData) return false;\r\n\t\tif (!pilotData.termsBussiness) return false;\r\n\t\tif (!pilotData.termsContract) return false;\r\n\t\t//if (!pilot.termsService) return false;\r\n\t\tif (isEmpty(pilotData.street)) return false;\r\n\t\tif (isEmpty(pilotData.city)) return false;\r\n\t\tif (isEmpty(pilotData.postalCode)) return false;\r\n\t\tif (isEmpty(pilotData.country)) return false;\r\n\t\treturn true;\r\n\t}, [ pilotData, planesData ]);\r\n\r\n\r\n\tconst checkLanguage = useCallback((pilot: Pilot) => {\r\n\t\tif (pilot && langParam && langParam.length > 0) {\r\n\t\t\tconst enumIndex = Object.keys(LanguageEnum).indexOf(langParam);\r\n\t\t\tif (enumIndex !== -1) {\r\n\t\t\t\tconst newLanguage = Object.values(LanguageEnum)[enumIndex];\r\n\t\t\t\tif (newLanguage !== pilot.language)\r\n\t\t\t\tchangeLanguage(newLanguage);\r\n\t\t\t\tupdatePilot({ ...pilot, language: newLanguage });\r\n\t\t\t\tsearchParams.delete('lang');\r\n\t\t\t\tsetSearchParams(searchParams);\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (pilot && pilot.language && pilot.language !== language) {\r\n\t\t\tchangeLanguage(pilot.language);\r\n\t\t}\r\n\t}, [ langParam, language, searchParams ]);\r\n\t\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{process.env.SHOW_ADVANCED_ERRORS === 'TRUE' &&\r\n\t\t\t\t}\r\n\t\t\t\r\n\t\t\t{appRoutes}\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default App;","import { createRoot } from 'react-dom/client';\r\nimport { BrowserRouter } from 'react-router-dom';\r\nimport { MsalProvider } from '@azure/msal-react';\r\nimport { msalInstance, initMsalInstance } from 'components/global/authentication/msalInstance';\r\nimport { Provider } from 'react-redux';\r\nimport { store } from 'store';\r\nimport i18next from 'i18next';\r\nimport { I18nextProvider } from 'react-i18next';\r\nimport loadTranslations from 'translations/index';\r\nimport 'styles/main.scss';\r\nimport App from 'components/global/App';\r\n\r\n\r\ninitMsalInstance();\r\n\r\n\r\nconst Root = (): JSX.Element => {\r\n\tloadTranslations();\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nconst root = createRoot(document.getElementById('appRoot')!);\r\nroot.render();"],"sourceRoot":""}