{"version":3,"file":"react/js/main-6b882012.4c6aaac1a8748f6c5a7a.js","mappings":"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","sources":["webpack:///./src/reportWebVitals.ts","webpack:///./src/routing/RouteLinks.tsx","webpack:///./src/stores/slices/ThemingSlice.tsx","webpack:///./src/stores/slices/SimpleSlice.tsx","webpack:///./src/stores/ServiceStore.tsx","webpack:///./src/stores/api/Generated/Endpoints/RestApiCart.tsx","webpack:///./src/stores/api/Generated/Endpoints/RestApiImages.tsx","webpack:///./src/stores/api/Generated/Endpoints/RestApiOrders.tsx","webpack:///./src/stores/api/Generated/Endpoints/RestApiProductCategories.tsx","webpack:///./src/stores/api/Generated/Endpoints/RestApiProducts.tsx","webpack:///./src/stores/api/Generated/Endpoints/RestApiUSStates.tsx","webpack:///./src/stores/api/Generated/Endpoints/RestApiUserAccount.tsx","webpack:///./src/stores/api/Generated/Endpoints/RestApiUserOperations.tsx","webpack:///./src/stores/api/Generated/Entities/RestApiMultipleIdsDTO.tsx","webpack:///./src/stores/api/Generated/Entities/RestApiProductCategoryMinimalDTO.tsx","webpack:///./src/stores/api/Generated/Entities/RestApiUserAddressDTO.tsx","webpack:///./src/stores/api/Generated/RestApiEnhanced.tsx","webpack:///./src/stores/api/Generated/useRestApiInvalidateTags.tsx","webpack:///./src/types/extensions/fetchExtensions.tsx","webpack:///./src/stores/api/foundation/BaseApiQueryUtils.tsx","webpack:///./src/stores/api/foundation/BaseApi.tsx","webpack:///./src/stores/api/foundation/BaseApiQuery.tsx","webpack:///./src/stores/slices/CartSlice.tsx","webpack:///./src/stores/slices/ConfigurationSlice.tsx","webpack:///./src/stores/slices/LoadingControlSlice.tsx","webpack:///./src/theming/AvatarUtilities.tsx","webpack:///./src/theming/ThemeDefaults.tsx","webpack:///./src/theming/ThemeManager.tsx","webpack:///./src/theming/ThemeUtilities.tsx","webpack:///./src/types/authenticationTypes.tsx"],"sourcesContent":["import { ReportHandler } from 'web-vitals';\r\n\r\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\r\n if (onPerfEntry && onPerfEntry instanceof Function) {\r\n import('web-vitals').then(\r\n ({\r\n getCLS,\r\n getFID,\r\n getFCP,\r\n getLCP,\r\n getTTFB,\r\n }) => {\r\n getCLS(onPerfEntry);\r\n getFID(onPerfEntry);\r\n getFCP(onPerfEntry);\r\n getLCP(onPerfEntry);\r\n getTTFB(onPerfEntry);\r\n },\r\n );\r\n }\r\n};\r\n\r\nexport default reportWebVitals;\r\n","import { ReactElement, ReactNode } from 'react';\r\nimport { To } from 'react-router-dom';\r\n\r\nimport { IconDefinition } from '@fortawesome/fontawesome-svg-core';\r\nimport {\r\n faHouse,\r\n faUsersGear,\r\n faCircleQuestion,\r\n faCircleInfo,\r\n faFileSignature,\r\n faGifts,\r\n faList,\r\n faFolderTree\r\n} from '@fortawesome/free-solid-svg-icons';\r\n\r\nimport UserLoginPage from '../pages/sections/login/UserLoginPage';\r\nimport UserLogoutPage from '../pages/sections/login/UserLogoutPage';\r\nimport ApplicationUsers from '../pages/sections/applicationUsers/ApplicationUsers';\r\nimport { UserRole } from '../types/authenticationTypes';\r\n\r\nimport PrivacyPolicy from '../pages/sections/markdownPages/PrivacyPolicy';\r\nimport Imprint from '../pages/sections/markdownPages/Imprint';\r\nimport TermsAndConditions from '../pages/sections/markdownPages/TermsAndConditions';\r\nimport ProductCategoriesPage from '../pages/sections/productCategories/ProductCategoriesPage';\r\nimport Product from '../pages/sections/products/Product';\r\nimport ProductCategory from '../pages/sections/productCategories/ProductCategory';\r\n//import ExampleEntity from '../pages/sections/exampleEntities/ExampleEntity';\r\nimport ProductCategoriesAdministration from '../pages/sections/administration/productCategories/ProductCategoriesAdministration';\r\nimport ProductsAdministration from '../pages/sections/administration/products/ProductsAdministration';\r\nimport CartPage from '../pages/sections/cart/CartPage';\r\nimport CheckOutPage from '../pages/sections/cart/checkout/CheckOutPage';\r\nimport UserChangePassword from '../pages/sections/applicationUsers/account/UserChangePassword';\r\nimport UserProfile from '../pages/sections/applicationUsers/account/UserProfile';\r\nimport UserResetPassword from '../pages/sections/applicationUsers/account/UserResetPassword';\r\nimport OrderHistoryUserMain from '../pages/sections/applicationUsers/orders/OrderHistoryUserMain';\r\nimport UserRegister from '../pages/sections/applicationUsers/account/UserRegister';\r\nimport UserConfirmEmail from '../pages/sections/applicationUsers/account/UserConfirmEmail';\r\nimport OrderHistoryAllMain from '../pages/sections/applicationUsers/orders/OrderHistoryAllMain';\r\n\r\nexport type LinkComponent =\r\n | number\r\n | string\r\n | ReactElement\r\n | ReactNode[];\r\n\r\nexport interface IRouteLink {\r\n order: number;\r\n key: string;\r\n icon: IconDefinition;\r\n elementTo: To;\r\n component?: any | null;\r\n display?: string;\r\n included?: boolean;\r\n showInSideMenu?: boolean;\r\n showInBottomMenu?: boolean;\r\n showInToolbar?: boolean;\r\n requiredRole?: UserRole;\r\n}\r\n\r\nexport const GetLinkFromKey = (\r\n key: string,\r\n): IRouteLink | undefined => {\r\n return RouteLinks.find((itm) => itm.key === key);\r\n};\r\n\r\nconst RouteLinks: IRouteLink[] = [\r\n { order: 0, key: 'productCategoriesLink', icon: faHouse, elementTo: '/', component: , display: 'Home', included: true, showInSideMenu: false, showInToolbar: true },\r\n // { order: 3000, key: 'helpLink', icon: faCircleQuestion, elementTo: '/help', component: , display: 'Help', included: true, showInSideMenu: false, showInToolbar: true },\r\n\r\n // { order: 6000, key: 'sandboxLink', icon: faFlaskVial, elementTo: '/sandbox', component: , display: 'Sandbox', included: true, showInSideMenu: true },\r\n { order: 7000, key: 'loginLink', icon: faFileSignature, elementTo: '/login', component: , display: 'Log In', included: true, showInSideMenu: false },\r\n { order: 8000, key: 'logoutLink', icon: faFileSignature, elementTo: '/logout', component: , display: 'Log Out', included: true, showInSideMenu: false },\r\n { order: 9000, key: 'appUsersLink', icon: faUsersGear, elementTo: '/appUsers', component: , display: 'Application Users', included: true, showInSideMenu: false, requiredRole: UserRole.SuperUser },\r\n\r\n { order: 9100, key: 'appUsersOrderHistoryLink', icon: faFolderTree, elementTo: '/appUsers/orderHistory', component: , display: 'My Orders', requiredRole: UserRole.User },\r\n { order: 9200, key: 'appUsersChangePasswordLink', icon: faUsersGear, elementTo: '/appUsers/changepassword', component: , display: 'Change Password', requiredRole: UserRole.User },\r\n { order: 9300, key: 'appUsersProfileLink', icon: faUsersGear, elementTo: '/appUsers/profile', component: , display: 'User Profile', requiredRole: UserRole.User },\r\n { order: 9400, key: 'appUsersProfileLink', icon: faUsersGear, elementTo: '/appUsers/resetpassword', component: , display: 'Reset Password' },\r\n { order: 9500, key: 'appUserRegisterLink', icon: faUsersGear, elementTo: '/appUsers/register', component: , display: 'Register' },\r\n { order: 9600, key: 'appUsersConfirmLink', icon: faUsersGear, elementTo: '/appUsers/confirmemail', component: , display: 'Confirm Email' },\r\n\r\n // { order: 10000, key: 'exampleEntitiesLink', icon: faUsersGear, elementTo: '/exampleEntities', component: , display: 'Example Entities', included: true, showInSideMenu: true, requiredRole: UserRole.User },\r\n // { order: 10100, key: 'exampleEntityLink', icon: faUsersGear, elementTo: '/exampleEntities/:entityName', component: , display: 'Example Entity', included: false, showInSideMenu: false, requiredRole: UserRole.User },\r\n\r\n { order: 11000, key: 'privacyPolicyLink', icon: faUsersGear, elementTo: '/privacyPolicy', component: , display: 'Example Entities', included: false, showInSideMenu: false, showInBottomMenu: true },\r\n { order: 12000, key: 'imprintLink', icon: faUsersGear, elementTo: '/imprint', component: , display: 'Example Entities', included: false, showInSideMenu: false, showInBottomMenu: true },\r\n { order: 13000, key: 'termsAndConditionsLink', icon: faUsersGear, elementTo: '/termsAndConditions', component: , display: 'Example Entities', included: false, showInSideMenu: false, showInBottomMenu: true },\r\n\r\n { order: 1100, key: 'categoryPageLink', icon: faGifts, elementTo: '/categories/:categoryName', component: },\r\n { order: 1200, key: 'productPageLink', icon: faGifts, elementTo: '/products/:productName', component: },\r\n\r\n { order: 20000, key: 'editProductCategoriesLink', icon: faList, elementTo: '/administration/editProductCategories', component: , display: 'Edit Product Categories', included: true, showInSideMenu: true, requiredRole: UserRole.PowerUser },\r\n { order: 21000, key: 'editProductsLink', icon: faList, elementTo: '/administration/editProducts', component: , display: 'Edit Products', included: true, showInSideMenu: true, requiredRole: UserRole.PowerUser },\r\n { order: 22000, key: 'viewOrdersLink', icon: faList, elementTo: '/administration/viewOrders', component: , display: 'Orders', included: true, showInSideMenu: true, requiredRole: UserRole.PowerUser },\r\n\r\n\r\n { order: 30000, key: 'addToCartLink', icon: faList, elementTo: '/cart/showCart', component: , display: 'Cart', included: true, showInToolbar: true },\r\n { order: 30100, key: 'checkOutCartLink', icon: faList, elementTo: '/cart/checkOut', component: , display: 'Check Out' },\r\n];\r\n\r\n\r\nexport default RouteLinks;\r\n","import {\r\n createSlice,\r\n PayloadAction,\r\n} from '@reduxjs/toolkit';\r\nimport {\r\n IThemeSettings,\r\n ThemeMode,\r\n} from '../../theming/ThemeTypes';\r\nimport { DefaultThemeSettings } from '../../theming/ThemeDefaults';\r\n\r\nexport interface IThemeState {\r\n mode: ThemeMode;\r\n settings?: IThemeSettings;\r\n}\r\n\r\nconst initialState: IThemeState = {\r\n mode: DefaultThemeSettings.mode as ThemeMode,\r\n settings: DefaultThemeSettings as IThemeSettings,\r\n};\r\n\r\nexport const ThemingSlice = createSlice({\r\n name: 'theming',\r\n initialState: initialState,\r\n reducers: {\r\n setThemeMode: (\r\n state,\r\n action: PayloadAction,\r\n ) => {\r\n return {\r\n ...state,\r\n mode: action.payload,\r\n settings: {\r\n ...state.settings,\r\n mode: action.payload,\r\n },\r\n };\r\n },\r\n setThemePrimaryColor: (\r\n state,\r\n action: PayloadAction,\r\n ) => {\r\n return {\r\n ...state,\r\n settings: {\r\n ...state.settings,\r\n primaryColor: action.payload,\r\n },\r\n };\r\n // let newState: IThemeState = {\r\n // mode: action.payload\r\n // }\r\n\r\n // return newState;\r\n },\r\n setThemeSecondaryColor: (\r\n state,\r\n action: PayloadAction,\r\n ) => {\r\n return {\r\n ...state,\r\n settings: {\r\n ...state.settings,\r\n secondaryColor:\r\n action.payload,\r\n },\r\n };\r\n },\r\n setThemeSettings: (\r\n state,\r\n action: PayloadAction,\r\n ) => {\r\n return {\r\n ...state,\r\n settings: action.payload,\r\n };\r\n },\r\n },\r\n});\r\n\r\nexport const {\r\n setThemeMode,\r\n setThemePrimaryColor,\r\n setThemeSecondaryColor,\r\n setThemeSettings,\r\n} = ThemingSlice.actions;\r\nexport default ThemingSlice.reducer;\r\n","import {\r\n createSlice,\r\n PayloadAction,\r\n} from '@reduxjs/toolkit';\r\n\r\nimport { createTheme, Theme } from '@mui/material/styles';\r\n\r\nexport interface ISimpleState {\r\n boolValue: boolean;\r\n intValue: number;\r\n}\r\n\r\nconst initialState: ISimpleState = {\r\n boolValue: false,\r\n intValue: 0,\r\n};\r\n\r\nexport const SimpleSlice = createSlice({\r\n name: 'simple',\r\n initialState: initialState,\r\n reducers: {\r\n add: (state) => {\r\n state.intValue++;\r\n },\r\n subtract: (state) => {\r\n state.intValue--;\r\n },\r\n setSimpleState: (\r\n state,\r\n action: PayloadAction,\r\n ) => {\r\n const newState = {\r\n boolValue: action.payload.boolValue,\r\n intValue: action.payload.intValue,\r\n };\r\n\r\n return newState;\r\n },\r\n setSimpleStateBool: (\r\n state,\r\n action: PayloadAction,\r\n ) => {\r\n const newState = {\r\n boolValue: action.payload,\r\n intValue: state.intValue,\r\n };\r\n\r\n return newState;\r\n },\r\n setSimpleStateInt: (\r\n state,\r\n action: PayloadAction,\r\n ) => {\r\n const newState = {\r\n boolValue: state.boolValue,\r\n intValue: action.payload,\r\n };\r\n\r\n return newState;\r\n },\r\n },\r\n});\r\nexport const {\r\n add,\r\n subtract,\r\n setSimpleState,\r\n setSimpleStateBool,\r\n setSimpleStateInt,\r\n} = SimpleSlice.actions;\r\nexport default SimpleSlice.reducer;\r\n","import\r\n{\r\n configureStore,\r\n ConfigureStoreOptions,\r\n} from '@reduxjs/toolkit';\r\nimport { setupListeners } from '@reduxjs/toolkit/query';\r\n\r\nimport ConfigurationReducer from './slices/ConfigurationSlice';\r\nimport ThemingSliceReducer from './slices/ThemingSlice';\r\nimport SimpleSliceReducer from './slices/SimpleSlice';\r\nimport LoadingSliceReducer from './slices/LoadingControlSlice';\r\nimport CartSliceReducer from './slices/CartSlice';\r\n\r\nimport { baseRestApi } from './api/foundation/BaseApi';\r\n\r\nexport const createStore = (\r\n options?:\r\n | ConfigureStoreOptions[ 'preloadedState' ]\r\n | undefined,\r\n) =>\r\n configureStore({\r\n reducer: {\r\n // Back-End Configuration\r\n config: ConfigurationReducer,\r\n\r\n // Loading Control\r\n loading: LoadingSliceReducer,\r\n\r\n // General States\r\n theming: ThemingSliceReducer,\r\n simple: SimpleSliceReducer,\r\n\r\n // Cart State\r\n cart: CartSliceReducer, // Add this line\r\n\r\n // API States \r\n [ baseRestApi.reducerPath ]: baseRestApi.reducer,\r\n },\r\n middleware: (getDefaultMiddleware) =>\r\n getDefaultMiddleware({\r\n serializableCheck: false,\r\n })\r\n .concat(baseRestApi.middleware),\r\n ...options,\r\n });\r\nconst ServiceStore = createStore();\r\n\r\nexport default ServiceStore;\r\n\r\nexport type ServiceStoreState = ReturnType<\r\n typeof ServiceStore.getState\r\n>;\r\nexport type ServiceStoreDispatch =\r\n typeof ServiceStore.dispatch;\r\n\r\nsetupListeners(ServiceStore.dispatch);\r\n","// Creates all api endpoint(s) for the controller 'Cart'\r\n\r\n\r\n// Entity Imports\r\nimport { IRestApiCartOrderRequestDTO } from '../Entities/RestApiCartOrderRequestDTO';\r\nimport { IRestApiCartOrderResponseDTO } from '../Entities/RestApiCartOrderResponseDTO';\r\n\r\n// API Import\r\nimport Api from '../RestApiEnhanced';\r\nimport { IJwtBaseQueryOptions } from \"../../foundation/BaseTypes\";\r\n\r\n\r\n// Endpoint Request Arguments\r\nexport type RestApiOperationsPostCartCreateOrderArguments =\r\n {\r\n cartOrderRequestDTO: IRestApiCartOrderRequestDTO;\r\n };\r\n\r\n\r\n// Endpoint Response Types\r\nexport type RestApiOperationsPostCartCreateOrderResponse = IRestApiCartOrderResponseDTO;\r\n\r\n// API Endpoint Injection \r\nconst injectedRestApiCart = Api\r\n .injectEndpoints({\r\n endpoints: (build) => \r\n ({\r\n RestApiOperationsPostCartCreateOrder: build.mutation<\r\n RestApiOperationsPostCartCreateOrderResponse,\r\n RestApiOperationsPostCartCreateOrderArguments>\r\n ({\r\n query: (queryArg) => ({\r\n url: `/api/operations/Cart/CreateOrder`,\r\n method: 'POST',\r\n body: queryArg[\"cartOrderRequestDTO\"]\r\n }),\r\n extraOptions: {\r\n controller: 'Cart',\r\n action: 'CreateOrder',\r\n notificationType: 'Dialog',\r\n },\r\n transformResponse: (response: any) => \r\n { \r\n return response as RestApiOperationsPostCartCreateOrderResponse; \r\n },\r\n invalidatesTags: [\r\n \"Cart\"],\r\n }) \r\n }),\r\n\r\n overrideExisting: false,\r\n });\r\n\r\n// Export the Injected RestApiCartRtkApi Hooks\r\nexport const {\r\n useRestApiOperationsPostCartCreateOrderMutation,\r\n} = injectedRestApiCart;\r\n\r\nconst localEndpoints = injectedRestApiCart.endpoints;\r\n\r\nexport const restApiCart = {\r\n endpoints:\r\n {\r\n createOrder: localEndpoints.RestApiOperationsPostCartCreateOrder,\r\n },\r\n hooks:\r\n {\r\n mutations: \r\n {\r\n createOrder: useRestApiOperationsPostCartCreateOrderMutation,\r\n },\r\n }\r\n};\r\n\r\nexport default injectedRestApiCart;","// Creates all api endpoint(s) for the controller 'Images'\r\n\r\n\r\n// Entity Imports\r\nimport { RestApiImageResizeType } from '../Entities/RestApiImageResizeType';\r\n\r\n// API Import\r\nimport Api from '../RestApiEnhanced';\r\nimport { IJwtBaseQueryOptions } from \"../../foundation/BaseTypes\";\r\n\r\n\r\n// Endpoint Request Arguments\r\nexport type RestApiOperationsGetImagesGetImageArguments =\r\n {\r\n imageId: string;\r\n width?: number;\r\n height?: number;\r\n resizeType?: RestApiImageResizeType;\r\n };\r\n\r\n\r\n// Endpoint Response Types\r\nexport type RestApiOperationsGetImagesGetImageResponse = string;\r\n\r\n// API Endpoint Injection \r\nconst injectedRestApiImages = Api\r\n .injectEndpoints({\r\n endpoints: (build) => \r\n ({\r\n RestApiOperationsGetImagesGetImage: build.query<\r\n RestApiOperationsGetImagesGetImageResponse,\r\n RestApiOperationsGetImagesGetImageArguments>\r\n ({\r\n query: (queryArg) => ({\r\n url: `/api/operations/Images/GetImage/${queryArg.imageId}`,\r\n params: {\r\n width: queryArg[\"width\"],\r\n height: queryArg[\"height\"],\r\n resizeType: queryArg[\"resizeType\"]\r\n },\r\n }),\r\n extraOptions: {\r\n controller: 'Images',\r\n action: 'GetImage',\r\n notificationType: 'Dialog',\r\n },\r\n transformResponse: (response: any) => \r\n { \r\n return response as RestApiOperationsGetImagesGetImageResponse; \r\n },\r\n providesTags: [\r\n \"Images\"],\r\n keepUnusedDataFor: 3600,\r\n }) \r\n }),\r\n\r\n overrideExisting: false,\r\n });\r\n\r\n// Export the Injected RestApiImagesRtkApi Hooks\r\nexport const {\r\n useRestApiOperationsGetImagesGetImageQuery,\r\n useLazyRestApiOperationsGetImagesGetImageQuery,\r\n} = injectedRestApiImages;\r\n\r\nconst localEndpoints = injectedRestApiImages.endpoints;\r\n\r\nexport const restApiImages = {\r\n endpoints:\r\n {\r\n getImage: localEndpoints.RestApiOperationsGetImagesGetImage,\r\n },\r\n hooks:\r\n {\r\n queries: \r\n {\r\n getImage: useRestApiOperationsGetImagesGetImageQuery,\r\n },\r\n lazyQueries: \r\n {\r\n getImage: useLazyRestApiOperationsGetImagesGetImageQuery,\r\n },\r\n }\r\n};\r\n\r\nexport default injectedRestApiImages;","// Creates all api endpoint(s) for the controller 'Orders'\r\n\r\n\r\n// Entity Imports\r\nimport { IRestApiOrderDTO } from '../Entities/RestApiOrderDTO';\r\n\r\n// API Import\r\nimport Api from '../RestApiEnhanced';\r\nimport { IJwtBaseQueryOptions } from \"../../foundation/BaseTypes\";\r\n\r\n\r\n// Endpoint Request Arguments\r\nexport type RestApiOperationsGetOrdersGetAllArguments = void;\r\n\r\nexport type RestApiOperationsGetOrdersGetByIdArguments =\r\n {\r\n id: string;\r\n };\r\n\r\nexport type RestApiOperationsGetOrdersGetForUserArguments =\r\n {\r\n userId: string;\r\n };\r\n\r\nexport type RestApiOperationsGetOrdersGetInvoiceForOrderArguments =\r\n {\r\n orderId: string;\r\n };\r\n\r\n\r\n// Endpoint Response Types\r\nexport type RestApiOperationsGetOrdersGetAllResponse = IRestApiOrderDTO[];\r\nexport type RestApiOperationsGetOrdersGetByIdResponse = IRestApiOrderDTO;\r\nexport type RestApiOperationsGetOrdersGetForUserResponse = IRestApiOrderDTO[];\r\nexport type RestApiOperationsGetOrdersGetInvoiceForOrderResponse = unknown;\r\n\r\n// API Endpoint Injection \r\nconst injectedRestApiOrders = Api\r\n .injectEndpoints({\r\n endpoints: (build) => \r\n ({\r\n RestApiOperationsGetOrdersGetAll: build.query<\r\n RestApiOperationsGetOrdersGetAllResponse,\r\n RestApiOperationsGetOrdersGetAllArguments>\r\n ({\r\n query: () => ({\r\n url: `/api/operations/Orders/GetAll`,\r\n }),\r\n extraOptions: {\r\n controller: 'Orders',\r\n action: 'GetAll',\r\n userRole: 'PowerUser',\r\n tokenType: 'RefreshToken',\r\n notificationType: 'Dialog',\r\n },\r\n transformResponse: (response: any) => \r\n { \r\n return response as RestApiOperationsGetOrdersGetAllResponse; \r\n },\r\n providesTags: [\r\n \"Orders\"],\r\n keepUnusedDataFor: 3600,\r\n }),\r\n \r\n RestApiOperationsGetOrdersGetById: build.query<\r\n RestApiOperationsGetOrdersGetByIdResponse,\r\n RestApiOperationsGetOrdersGetByIdArguments>\r\n ({\r\n query: (queryArg) => ({\r\n url: `/api/operations/Orders/GetById/${queryArg.id}`,\r\n }),\r\n extraOptions: {\r\n controller: 'Orders',\r\n action: 'GetById',\r\n userRole: 'User',\r\n tokenType: 'RefreshToken',\r\n notificationType: 'Dialog',\r\n },\r\n transformResponse: (response: any) => \r\n { \r\n return response as RestApiOperationsGetOrdersGetByIdResponse; \r\n },\r\n providesTags: [\r\n \"Orders\"],\r\n keepUnusedDataFor: 3600,\r\n }),\r\n \r\n RestApiOperationsGetOrdersGetForUser: build.query<\r\n RestApiOperationsGetOrdersGetForUserResponse,\r\n RestApiOperationsGetOrdersGetForUserArguments>\r\n ({\r\n query: (queryArg) => ({\r\n url: `/api/operations/Orders/GetForUser/${queryArg.userId}`,\r\n }),\r\n extraOptions: {\r\n controller: 'Orders',\r\n action: 'GetForUser',\r\n userRole: 'User',\r\n tokenType: 'RefreshToken',\r\n notificationType: 'Dialog',\r\n },\r\n transformResponse: (response: any) => \r\n { \r\n return response as RestApiOperationsGetOrdersGetForUserResponse; \r\n },\r\n providesTags: [\r\n \"Orders\"],\r\n keepUnusedDataFor: 3600,\r\n }),\r\n \r\n RestApiOperationsGetOrdersGetInvoiceForOrder: build.query<\r\n RestApiOperationsGetOrdersGetInvoiceForOrderResponse,\r\n RestApiOperationsGetOrdersGetInvoiceForOrderArguments>\r\n ({\r\n query: (queryArg) => ({\r\n url: `/api/operations/Orders/GetInvoiceForOrder/${queryArg.orderId}`,\r\n }),\r\n extraOptions: {\r\n controller: 'Orders',\r\n action: 'GetInvoiceForOrder',\r\n userRole: 'User',\r\n tokenType: 'RefreshToken',\r\n notificationType: 'Dialog',\r\n },\r\n transformResponse: (response: any) => \r\n { \r\n return response as RestApiOperationsGetOrdersGetInvoiceForOrderResponse; \r\n },\r\n providesTags: [\r\n \"Orders\"],\r\n keepUnusedDataFor: 3600,\r\n }) \r\n }),\r\n\r\n overrideExisting: false,\r\n });\r\n\r\n// Export the Injected RestApiOrdersRtkApi Hooks\r\nexport const {\r\n useRestApiOperationsGetOrdersGetAllQuery,\r\n useLazyRestApiOperationsGetOrdersGetAllQuery,\r\n useRestApiOperationsGetOrdersGetByIdQuery,\r\n useLazyRestApiOperationsGetOrdersGetByIdQuery,\r\n useRestApiOperationsGetOrdersGetForUserQuery,\r\n useLazyRestApiOperationsGetOrdersGetForUserQuery,\r\n useRestApiOperationsGetOrdersGetInvoiceForOrderQuery,\r\n useLazyRestApiOperationsGetOrdersGetInvoiceForOrderQuery,\r\n} = injectedRestApiOrders;\r\n\r\nconst localEndpoints = injectedRestApiOrders.endpoints;\r\n\r\nexport const restApiOrders = {\r\n endpoints:\r\n {\r\n getAll: localEndpoints.RestApiOperationsGetOrdersGetAll,\r\n getById: localEndpoints.RestApiOperationsGetOrdersGetById,\r\n getForUser: localEndpoints.RestApiOperationsGetOrdersGetForUser,\r\n getInvoiceForOrder: localEndpoints.RestApiOperationsGetOrdersGetInvoiceForOrder,\r\n },\r\n hooks:\r\n {\r\n queries: \r\n {\r\n getAll: useRestApiOperationsGetOrdersGetAllQuery,\r\n getById: useRestApiOperationsGetOrdersGetByIdQuery,\r\n getForUser: useRestApiOperationsGetOrdersGetForUserQuery,\r\n getInvoiceForOrder: useRestApiOperationsGetOrdersGetInvoiceForOrderQuery,\r\n },\r\n lazyQueries: \r\n {\r\n getAll: useLazyRestApiOperationsGetOrdersGetAllQuery,\r\n getById: useLazyRestApiOperationsGetOrdersGetByIdQuery,\r\n getForUser: useLazyRestApiOperationsGetOrdersGetForUserQuery,\r\n getInvoiceForOrder: useLazyRestApiOperationsGetOrdersGetInvoiceForOrderQuery,\r\n },\r\n }\r\n};\r\n\r\nexport default injectedRestApiOrders;","// Creates all api endpoint(s) for the controller 'ProductCategories'\r\n\r\n\r\n// Entity Imports\r\nimport { IRestApiMultipleIdsDTO } from '../Entities/RestApiMultipleIdsDTO';\r\nimport { IRestApiProductCategory } from '../Entities/RestApiProductCategory';\r\nimport { IRestApiProductCategoryDTO } from '../Entities/RestApiProductCategoryDTO';\r\nimport { IRestApiProductCategoryMinimalDTO } from '../Entities/RestApiProductCategoryMinimalDTO';\r\nimport { IRestApiProductCategoryNamesDTO } from '../Entities/RestApiProductCategoryNamesDTO';\r\nimport { IRestApiProductCategoryWithImagesDTO } from '../Entities/RestApiProductCategoryWithImagesDTO';\r\n\r\n// API Import\r\nimport Api from '../RestApiEnhanced';\r\nimport { IJwtBaseQueryOptions } from \"../../foundation/BaseTypes\";\r\n\r\n\r\n// Endpoint Request Arguments\r\nexport type RestApiOperationsGetProductCategoriesGetAllArguments = void;\r\n\r\nexport type RestApiOperationsGetProductCategoriesGetAllMinimalTopArguments = void;\r\n\r\nexport type RestApiOperationsGetProductCategoriesGetAllMinimalArguments = void;\r\n\r\nexport type RestApiOperationsGetProductCategoriesGetAllNamesArguments = void;\r\n\r\nexport type RestApiOperationsGetProductCategoriesGetByIdArguments =\r\n {\r\n id: string;\r\n };\r\n\r\nexport type RestApiOperationsGetProductCategoriesGetWithImagesByIdArguments =\r\n {\r\n id: string;\r\n };\r\n\r\nexport type RestApiOperationsPostProductCategoriesCreateArguments =\r\n {\r\n productCategoryWithImagesDTO: IRestApiProductCategoryWithImagesDTO;\r\n };\r\n\r\nexport type RestApiOperationsPatchProductCategoriesUpdateArguments =\r\n {\r\n productCategoryWithImagesDTO: IRestApiProductCategoryWithImagesDTO;\r\n };\r\n\r\nexport type RestApiOperationsDeleteProductCategoriesDeleteByIdArguments =\r\n {\r\n id: string;\r\n };\r\n\r\nexport type RestApiOperationsDeleteProductCategoriesDeleteMultipleByIdArguments =\r\n {\r\n multipleIdsDTO: IRestApiMultipleIdsDTO;\r\n };\r\n\r\n\r\n// Endpoint Response Types\r\nexport type RestApiOperationsGetProductCategoriesGetAllResponse = IRestApiProductCategoryDTO[];\r\nexport type RestApiOperationsGetProductCategoriesGetAllMinimalTopResponse = IRestApiProductCategoryMinimalDTO[];\r\nexport type RestApiOperationsGetProductCategoriesGetAllMinimalResponse = IRestApiProductCategoryMinimalDTO[];\r\nexport type RestApiOperationsGetProductCategoriesGetAllNamesResponse = IRestApiProductCategoryNamesDTO[];\r\nexport type RestApiOperationsGetProductCategoriesGetByIdResponse = IRestApiProductCategoryDTO;\r\nexport type RestApiOperationsGetProductCategoriesGetWithImagesByIdResponse = IRestApiProductCategoryWithImagesDTO;\r\nexport type RestApiOperationsPostProductCategoriesCreateResponse = IRestApiProductCategoryWithImagesDTO;\r\nexport type RestApiOperationsPatchProductCategoriesUpdateResponse = IRestApiProductCategoryWithImagesDTO;\r\nexport type RestApiOperationsDeleteProductCategoriesDeleteByIdResponse = IRestApiProductCategory;\r\nexport type RestApiOperationsDeleteProductCategoriesDeleteMultipleByIdResponse = IRestApiProductCategory;\r\n\r\n// API Endpoint Injection \r\nconst injectedRestApiProductCategories = Api\r\n .injectEndpoints({\r\n endpoints: (build) => \r\n ({\r\n RestApiOperationsGetProductCategoriesGetAll: build.query<\r\n RestApiOperationsGetProductCategoriesGetAllResponse,\r\n RestApiOperationsGetProductCategoriesGetAllArguments>\r\n ({\r\n query: () => ({\r\n url: `/api/operations/ProductCategories/GetAll`,\r\n }),\r\n extraOptions: {\r\n controller: 'ProductCategories',\r\n action: 'GetAll',\r\n notificationType: 'Dialog',\r\n },\r\n transformResponse: (response: any) => \r\n { \r\n return response as RestApiOperationsGetProductCategoriesGetAllResponse; \r\n },\r\n providesTags: [\r\n \"ProductCategories\"],\r\n keepUnusedDataFor: 3600,\r\n }),\r\n \r\n RestApiOperationsGetProductCategoriesGetAllMinimalTop: build.query<\r\n RestApiOperationsGetProductCategoriesGetAllMinimalTopResponse,\r\n RestApiOperationsGetProductCategoriesGetAllMinimalTopArguments>\r\n ({\r\n query: () => ({\r\n url: `/api/operations/ProductCategories/GetAllMinimalTop`,\r\n }),\r\n extraOptions: {\r\n controller: 'ProductCategories',\r\n action: 'GetAllMinimalTop',\r\n notificationType: 'Dialog',\r\n },\r\n transformResponse: (response: any) => \r\n { \r\n return response as RestApiOperationsGetProductCategoriesGetAllMinimalTopResponse; \r\n },\r\n providesTags: [\r\n \"ProductCategories\"],\r\n keepUnusedDataFor: 3600,\r\n }),\r\n \r\n RestApiOperationsGetProductCategoriesGetAllMinimal: build.query<\r\n RestApiOperationsGetProductCategoriesGetAllMinimalResponse,\r\n RestApiOperationsGetProductCategoriesGetAllMinimalArguments>\r\n ({\r\n query: () => ({\r\n url: `/api/operations/ProductCategories/GetAllMinimal`,\r\n }),\r\n extraOptions: {\r\n controller: 'ProductCategories',\r\n action: 'GetAllMinimal',\r\n notificationType: 'Dialog',\r\n },\r\n transformResponse: (response: any) => \r\n { \r\n return response as RestApiOperationsGetProductCategoriesGetAllMinimalResponse; \r\n },\r\n providesTags: [\r\n \"ProductCategories\"],\r\n keepUnusedDataFor: 3600,\r\n }),\r\n \r\n RestApiOperationsGetProductCategoriesGetAllNames: build.query<\r\n RestApiOperationsGetProductCategoriesGetAllNamesResponse,\r\n RestApiOperationsGetProductCategoriesGetAllNamesArguments>\r\n ({\r\n query: () => ({\r\n url: `/api/operations/ProductCategories/GetAllNames`,\r\n }),\r\n extraOptions: {\r\n controller: 'ProductCategories',\r\n action: 'GetAllNames',\r\n notificationType: 'Dialog',\r\n },\r\n transformResponse: (response: any) => \r\n { \r\n return response as RestApiOperationsGetProductCategoriesGetAllNamesResponse; \r\n },\r\n providesTags: [\r\n \"ProductCategories\"],\r\n keepUnusedDataFor: 3600,\r\n }),\r\n \r\n RestApiOperationsGetProductCategoriesGetById: build.query<\r\n RestApiOperationsGetProductCategoriesGetByIdResponse,\r\n RestApiOperationsGetProductCategoriesGetByIdArguments>\r\n ({\r\n query: (queryArg) => ({\r\n url: `/api/operations/ProductCategories/GetById/${queryArg.id}`,\r\n }),\r\n extraOptions: {\r\n controller: 'ProductCategories',\r\n action: 'GetById',\r\n notificationType: 'Dialog',\r\n },\r\n transformResponse: (response: any) => \r\n { \r\n return response as RestApiOperationsGetProductCategoriesGetByIdResponse; \r\n },\r\n providesTags: [\r\n \"ProductCategories\"],\r\n keepUnusedDataFor: 3600,\r\n }),\r\n \r\n RestApiOperationsGetProductCategoriesGetWithImagesById: build.query<\r\n RestApiOperationsGetProductCategoriesGetWithImagesByIdResponse,\r\n RestApiOperationsGetProductCategoriesGetWithImagesByIdArguments>\r\n ({\r\n query: (queryArg) => ({\r\n url: `/api/operations/ProductCategories/GetWithImagesById/${queryArg.id}`,\r\n }),\r\n extraOptions: {\r\n controller: 'ProductCategories',\r\n action: 'GetWithImagesById',\r\n notificationType: 'Dialog',\r\n },\r\n transformResponse: (response: any) => \r\n { \r\n return response as RestApiOperationsGetProductCategoriesGetWithImagesByIdResponse; \r\n },\r\n providesTags: [\r\n \"ProductCategories\"],\r\n keepUnusedDataFor: 3600,\r\n }),\r\n \r\n RestApiOperationsPostProductCategoriesCreate: build.mutation<\r\n RestApiOperationsPostProductCategoriesCreateResponse,\r\n RestApiOperationsPostProductCategoriesCreateArguments>\r\n ({\r\n query: (queryArg) => ({\r\n url: `/api/operations/ProductCategories/Create`,\r\n method: 'POST',\r\n body: queryArg[\"productCategoryWithImagesDTO\"]\r\n }),\r\n extraOptions: {\r\n controller: 'ProductCategories',\r\n action: 'Create',\r\n userRole: 'PowerUser',\r\n tokenType: 'RefreshToken',\r\n notificationType: 'Dialog',\r\n },\r\n transformResponse: (response: any) => \r\n { \r\n return response as RestApiOperationsPostProductCategoriesCreateResponse; \r\n },\r\n invalidatesTags: [\r\n \"ProductCategories\"],\r\n }),\r\n \r\n RestApiOperationsPatchProductCategoriesUpdate: build.mutation<\r\n RestApiOperationsPatchProductCategoriesUpdateResponse,\r\n RestApiOperationsPatchProductCategoriesUpdateArguments>\r\n ({\r\n query: (queryArg) => ({\r\n url: `/api/operations/ProductCategories/Update`,\r\n method: 'PATCH',\r\n body: queryArg[\"productCategoryWithImagesDTO\"]\r\n }),\r\n extraOptions: {\r\n controller: 'ProductCategories',\r\n action: 'Update',\r\n userRole: 'PowerUser',\r\n tokenType: 'RefreshToken',\r\n notificationType: 'Dialog',\r\n },\r\n transformResponse: (response: any) => \r\n { \r\n return response as RestApiOperationsPatchProductCategoriesUpdateResponse; \r\n },\r\n invalidatesTags: [\r\n \"ProductCategories\"],\r\n }),\r\n \r\n RestApiOperationsDeleteProductCategoriesDeleteById: build.mutation<\r\n RestApiOperationsDeleteProductCategoriesDeleteByIdResponse,\r\n RestApiOperationsDeleteProductCategoriesDeleteByIdArguments>\r\n ({\r\n query: (queryArg) => ({\r\n url: `/api/operations/ProductCategories/DeleteById/${queryArg.id}`,\r\n method: 'DELETE',\r\n }),\r\n extraOptions: {\r\n controller: 'ProductCategories',\r\n action: 'DeleteById',\r\n userRole: 'PowerUser',\r\n tokenType: 'RefreshToken',\r\n notificationType: 'Dialog',\r\n },\r\n transformResponse: (response: any) => \r\n { \r\n return response as RestApiOperationsDeleteProductCategoriesDeleteByIdResponse; \r\n },\r\n invalidatesTags: [\r\n \"ProductCategories\"],\r\n }),\r\n \r\n RestApiOperationsDeleteProductCategoriesDeleteMultipleById: build.mutation<\r\n RestApiOperationsDeleteProductCategoriesDeleteMultipleByIdResponse,\r\n RestApiOperationsDeleteProductCategoriesDeleteMultipleByIdArguments>\r\n ({\r\n query: (queryArg) => ({\r\n url: `/api/operations/ProductCategories/DeleteMultipleById`,\r\n method: 'DELETE',\r\n body: queryArg[\"multipleIdsDTO\"]\r\n }),\r\n extraOptions: {\r\n controller: 'ProductCategories',\r\n action: 'DeleteMultipleById',\r\n userRole: 'PowerUser',\r\n tokenType: 'RefreshToken',\r\n notificationType: 'Dialog',\r\n },\r\n transformResponse: (response: any) => \r\n { \r\n return response as RestApiOperationsDeleteProductCategoriesDeleteMultipleByIdResponse; \r\n },\r\n invalidatesTags: [\r\n \"ProductCategories\"],\r\n }) \r\n }),\r\n\r\n overrideExisting: false,\r\n });\r\n\r\n// Export the Injected RestApiProductCategoriesRtkApi Hooks\r\nexport const {\r\n useRestApiOperationsGetProductCategoriesGetAllQuery,\r\n useLazyRestApiOperationsGetProductCategoriesGetAllQuery,\r\n useRestApiOperationsGetProductCategoriesGetAllMinimalTopQuery,\r\n useLazyRestApiOperationsGetProductCategoriesGetAllMinimalTopQuery,\r\n useRestApiOperationsGetProductCategoriesGetAllMinimalQuery,\r\n useLazyRestApiOperationsGetProductCategoriesGetAllMinimalQuery,\r\n useRestApiOperationsGetProductCategoriesGetAllNamesQuery,\r\n useLazyRestApiOperationsGetProductCategoriesGetAllNamesQuery,\r\n useRestApiOperationsGetProductCategoriesGetByIdQuery,\r\n useLazyRestApiOperationsGetProductCategoriesGetByIdQuery,\r\n useRestApiOperationsGetProductCategoriesGetWithImagesByIdQuery,\r\n useLazyRestApiOperationsGetProductCategoriesGetWithImagesByIdQuery,\r\n useRestApiOperationsPostProductCategoriesCreateMutation,\r\n useRestApiOperationsPatchProductCategoriesUpdateMutation,\r\n useRestApiOperationsDeleteProductCategoriesDeleteByIdMutation,\r\n useRestApiOperationsDeleteProductCategoriesDeleteMultipleByIdMutation,\r\n} = injectedRestApiProductCategories;\r\n\r\nconst localEndpoints = injectedRestApiProductCategories.endpoints;\r\n\r\nexport const restApiProductCategories = {\r\n endpoints:\r\n {\r\n getAll: localEndpoints.RestApiOperationsGetProductCategoriesGetAll,\r\n getAllMinimalTop: localEndpoints.RestApiOperationsGetProductCategoriesGetAllMinimalTop,\r\n getAllMinimal: localEndpoints.RestApiOperationsGetProductCategoriesGetAllMinimal,\r\n getAllNames: localEndpoints.RestApiOperationsGetProductCategoriesGetAllNames,\r\n getById: localEndpoints.RestApiOperationsGetProductCategoriesGetById,\r\n getWithImagesById: localEndpoints.RestApiOperationsGetProductCategoriesGetWithImagesById,\r\n create: localEndpoints.RestApiOperationsPostProductCategoriesCreate,\r\n update: localEndpoints.RestApiOperationsPatchProductCategoriesUpdate,\r\n deleteById: localEndpoints.RestApiOperationsDeleteProductCategoriesDeleteById,\r\n deleteMultipleById: localEndpoints.RestApiOperationsDeleteProductCategoriesDeleteMultipleById,\r\n },\r\n hooks:\r\n {\r\n queries: \r\n {\r\n getAll: useRestApiOperationsGetProductCategoriesGetAllQuery,\r\n getAllMinimalTop: useRestApiOperationsGetProductCategoriesGetAllMinimalTopQuery,\r\n getAllMinimal: useRestApiOperationsGetProductCategoriesGetAllMinimalQuery,\r\n getAllNames: useRestApiOperationsGetProductCategoriesGetAllNamesQuery,\r\n getById: useRestApiOperationsGetProductCategoriesGetByIdQuery,\r\n getWithImagesById: useRestApiOperationsGetProductCategoriesGetWithImagesByIdQuery,\r\n },\r\n lazyQueries: \r\n {\r\n getAll: useLazyRestApiOperationsGetProductCategoriesGetAllQuery,\r\n getAllMinimalTop: useLazyRestApiOperationsGetProductCategoriesGetAllMinimalTopQuery,\r\n getAllMinimal: useLazyRestApiOperationsGetProductCategoriesGetAllMinimalQuery,\r\n getAllNames: useLazyRestApiOperationsGetProductCategoriesGetAllNamesQuery,\r\n getById: useLazyRestApiOperationsGetProductCategoriesGetByIdQuery,\r\n getWithImagesById: useLazyRestApiOperationsGetProductCategoriesGetWithImagesByIdQuery,\r\n },\r\n mutations: \r\n {\r\n create: useRestApiOperationsPostProductCategoriesCreateMutation,\r\n update: useRestApiOperationsPatchProductCategoriesUpdateMutation,\r\n deleteById: useRestApiOperationsDeleteProductCategoriesDeleteByIdMutation,\r\n deleteMultipleById: useRestApiOperationsDeleteProductCategoriesDeleteMultipleByIdMutation,\r\n },\r\n }\r\n};\r\n\r\nexport default injectedRestApiProductCategories;","// Creates all api endpoint(s) for the controller 'Products'\r\n\r\n\r\n// Entity Imports\r\nimport { IRestApiMultipleIdsDTO } from '../Entities/RestApiMultipleIdsDTO';\r\nimport { IRestApiProduct } from '../Entities/RestApiProduct';\r\nimport { IRestApiProductColorDTO } from '../Entities/RestApiProductColorDTO';\r\nimport { IRestApiProductDTO } from '../Entities/RestApiProductDTO';\r\nimport { IRestApiProductSizeDTO } from '../Entities/RestApiProductSizeDTO';\r\nimport { IRestApiProductWithImagesDTO } from '../Entities/RestApiProductWithImagesDTO';\r\n\r\n// API Import\r\nimport Api from '../RestApiEnhanced';\r\nimport { IJwtBaseQueryOptions } from \"../../foundation/BaseTypes\";\r\n\r\n\r\n// Endpoint Request Arguments\r\nexport type RestApiOperationsGetProductsGetAllArguments = void;\r\n\r\nexport type RestApiOperationsGetProductsGetFeaturedOrRandomArguments = void;\r\n\r\nexport type RestApiOperationsGetProductsGetByIdArguments =\r\n {\r\n id: string;\r\n };\r\n\r\nexport type RestApiOperationsGetProductsGetByIdWithImagesArguments =\r\n {\r\n id: string;\r\n };\r\n\r\nexport type RestApiOperationsGetProductsGetIdFromNameArguments =\r\n {\r\n name: string;\r\n };\r\n\r\nexport type RestApiOperationsPostProductsCreateArguments =\r\n {\r\n productWithImagesDTO: IRestApiProductWithImagesDTO;\r\n };\r\n\r\nexport type RestApiOperationsPatchProductsUpdateArguments =\r\n {\r\n productWithImagesDTO: IRestApiProductWithImagesDTO;\r\n };\r\n\r\nexport type RestApiOperationsDeleteProductsDeleteByIdArguments =\r\n {\r\n id: string;\r\n };\r\n\r\nexport type RestApiOperationsDeleteProductsDeleteMultipleByIdArguments =\r\n {\r\n multipleIdsDTO: IRestApiMultipleIdsDTO;\r\n };\r\n\r\nexport type RestApiOperationsGetProductsGetExistingProductColorsArguments = void;\r\n\r\nexport type RestApiOperationsGetProductsGetExistingProductSizesArguments = void;\r\n\r\n\r\n// Endpoint Response Types\r\nexport type RestApiOperationsGetProductsGetAllResponse = IRestApiProductDTO[];\r\nexport type RestApiOperationsGetProductsGetFeaturedOrRandomResponse = IRestApiProductDTO[];\r\nexport type RestApiOperationsGetProductsGetByIdResponse = IRestApiProductDTO;\r\nexport type RestApiOperationsGetProductsGetByIdWithImagesResponse = IRestApiProductWithImagesDTO;\r\nexport type RestApiOperationsGetProductsGetIdFromNameResponse = string;\r\nexport type RestApiOperationsPostProductsCreateResponse = IRestApiProductWithImagesDTO;\r\nexport type RestApiOperationsPatchProductsUpdateResponse = IRestApiProductWithImagesDTO;\r\nexport type RestApiOperationsDeleteProductsDeleteByIdResponse = IRestApiProduct;\r\nexport type RestApiOperationsDeleteProductsDeleteMultipleByIdResponse = IRestApiProduct;\r\nexport type RestApiOperationsGetProductsGetExistingProductColorsResponse = IRestApiProductColorDTO[];\r\nexport type RestApiOperationsGetProductsGetExistingProductSizesResponse = IRestApiProductSizeDTO[];\r\n\r\n// API Endpoint Injection \r\nconst injectedRestApiProducts = Api\r\n .injectEndpoints({\r\n endpoints: (build) => \r\n ({\r\n RestApiOperationsGetProductsGetAll: build.query<\r\n RestApiOperationsGetProductsGetAllResponse,\r\n RestApiOperationsGetProductsGetAllArguments>\r\n ({\r\n query: () => ({\r\n url: `/api/operations/Products/GetAll`,\r\n }),\r\n extraOptions: {\r\n controller: 'Products',\r\n action: 'GetAll',\r\n notificationType: 'Dialog',\r\n },\r\n transformResponse: (response: any) => \r\n { \r\n return response as RestApiOperationsGetProductsGetAllResponse; \r\n },\r\n providesTags: [\r\n \"Products\"],\r\n keepUnusedDataFor: 3600,\r\n }),\r\n \r\n RestApiOperationsGetProductsGetFeaturedOrRandom: build.query<\r\n RestApiOperationsGetProductsGetFeaturedOrRandomResponse,\r\n RestApiOperationsGetProductsGetFeaturedOrRandomArguments>\r\n ({\r\n query: () => ({\r\n url: `/api/operations/Products/GetFeaturedOrRandom`,\r\n }),\r\n extraOptions: {\r\n controller: 'Products',\r\n action: 'GetFeaturedOrRandom',\r\n notificationType: 'Dialog',\r\n },\r\n transformResponse: (response: any) => \r\n { \r\n return response as RestApiOperationsGetProductsGetFeaturedOrRandomResponse; \r\n },\r\n providesTags: [\r\n \"Products\"],\r\n keepUnusedDataFor: 3600,\r\n }),\r\n \r\n RestApiOperationsGetProductsGetById: build.query<\r\n RestApiOperationsGetProductsGetByIdResponse,\r\n RestApiOperationsGetProductsGetByIdArguments>\r\n ({\r\n query: (queryArg) => ({\r\n url: `/api/operations/Products/GetById/${queryArg.id}`,\r\n }),\r\n extraOptions: {\r\n controller: 'Products',\r\n action: 'GetById',\r\n notificationType: 'Dialog',\r\n },\r\n transformResponse: (response: any) => \r\n { \r\n return response as RestApiOperationsGetProductsGetByIdResponse; \r\n },\r\n providesTags: [\r\n \"Products\"],\r\n keepUnusedDataFor: 3600,\r\n }),\r\n \r\n RestApiOperationsGetProductsGetByIdWithImages: build.query<\r\n RestApiOperationsGetProductsGetByIdWithImagesResponse,\r\n RestApiOperationsGetProductsGetByIdWithImagesArguments>\r\n ({\r\n query: (queryArg) => ({\r\n url: `/api/operations/Products/GetByIdWithImages/${queryArg.id}`,\r\n }),\r\n extraOptions: {\r\n controller: 'Products',\r\n action: 'GetByIdWithImages',\r\n notificationType: 'Dialog',\r\n },\r\n transformResponse: (response: any) => \r\n { \r\n return response as RestApiOperationsGetProductsGetByIdWithImagesResponse; \r\n },\r\n providesTags: [\r\n \"Products\"],\r\n keepUnusedDataFor: 3600,\r\n }),\r\n \r\n RestApiOperationsGetProductsGetIdFromName: build.query<\r\n RestApiOperationsGetProductsGetIdFromNameResponse,\r\n RestApiOperationsGetProductsGetIdFromNameArguments>\r\n ({\r\n query: (queryArg) => ({\r\n url: `/api/operations/Products/GetIdFromName/${queryArg.name}`,\r\n }),\r\n extraOptions: {\r\n controller: 'Products',\r\n action: 'GetIdFromName',\r\n notificationType: 'Dialog',\r\n },\r\n transformResponse: (response: any) => \r\n { \r\n return response as RestApiOperationsGetProductsGetIdFromNameResponse; \r\n },\r\n providesTags: [\r\n \"Products\"],\r\n keepUnusedDataFor: 3600,\r\n }),\r\n \r\n RestApiOperationsPostProductsCreate: build.mutation<\r\n RestApiOperationsPostProductsCreateResponse,\r\n RestApiOperationsPostProductsCreateArguments>\r\n ({\r\n query: (queryArg) => ({\r\n url: `/api/operations/Products/Create`,\r\n method: 'POST',\r\n body: queryArg[\"productWithImagesDTO\"]\r\n }),\r\n extraOptions: {\r\n controller: 'Products',\r\n action: 'Create',\r\n userRole: 'PowerUser',\r\n tokenType: 'RefreshToken',\r\n notificationType: 'Dialog',\r\n },\r\n transformResponse: (response: any) => \r\n { \r\n return response as RestApiOperationsPostProductsCreateResponse; \r\n },\r\n invalidatesTags: [\r\n \"Products\"],\r\n }),\r\n \r\n RestApiOperationsPatchProductsUpdate: build.mutation<\r\n RestApiOperationsPatchProductsUpdateResponse,\r\n RestApiOperationsPatchProductsUpdateArguments>\r\n ({\r\n query: (queryArg) => ({\r\n url: `/api/operations/Products/Update`,\r\n method: 'PATCH',\r\n body: queryArg[\"productWithImagesDTO\"]\r\n }),\r\n extraOptions: {\r\n controller: 'Products',\r\n action: 'Update',\r\n userRole: 'PowerUser',\r\n tokenType: 'RefreshToken',\r\n notificationType: 'Dialog',\r\n },\r\n transformResponse: (response: any) => \r\n { \r\n return response as RestApiOperationsPatchProductsUpdateResponse; \r\n },\r\n invalidatesTags: [\r\n \"Products\"],\r\n }),\r\n \r\n RestApiOperationsDeleteProductsDeleteById: build.mutation<\r\n RestApiOperationsDeleteProductsDeleteByIdResponse,\r\n RestApiOperationsDeleteProductsDeleteByIdArguments>\r\n ({\r\n query: (queryArg) => ({\r\n url: `/api/operations/Products/DeleteById/${queryArg.id}`,\r\n method: 'DELETE',\r\n }),\r\n extraOptions: {\r\n controller: 'Products',\r\n action: 'DeleteById',\r\n userRole: 'PowerUser',\r\n tokenType: 'RefreshToken',\r\n notificationType: 'Dialog',\r\n },\r\n transformResponse: (response: any) => \r\n { \r\n return response as RestApiOperationsDeleteProductsDeleteByIdResponse; \r\n },\r\n invalidatesTags: [\r\n \"Products\"],\r\n }),\r\n \r\n RestApiOperationsDeleteProductsDeleteMultipleById: build.mutation<\r\n RestApiOperationsDeleteProductsDeleteMultipleByIdResponse,\r\n RestApiOperationsDeleteProductsDeleteMultipleByIdArguments>\r\n ({\r\n query: (queryArg) => ({\r\n url: `/api/operations/Products/DeleteMultipleById`,\r\n method: 'DELETE',\r\n body: queryArg[\"multipleIdsDTO\"]\r\n }),\r\n extraOptions: {\r\n controller: 'Products',\r\n action: 'DeleteMultipleById',\r\n userRole: 'PowerUser',\r\n tokenType: 'RefreshToken',\r\n notificationType: 'Dialog',\r\n },\r\n transformResponse: (response: any) => \r\n { \r\n return response as RestApiOperationsDeleteProductsDeleteMultipleByIdResponse; \r\n },\r\n invalidatesTags: [\r\n \"Products\"],\r\n }),\r\n \r\n RestApiOperationsGetProductsGetExistingProductColors: build.query<\r\n RestApiOperationsGetProductsGetExistingProductColorsResponse,\r\n RestApiOperationsGetProductsGetExistingProductColorsArguments>\r\n ({\r\n query: () => ({\r\n url: `/api/operations/Products/GetExistingProductColors`,\r\n }),\r\n extraOptions: {\r\n controller: 'Products',\r\n action: 'GetExistingProductColors',\r\n notificationType: 'Dialog',\r\n },\r\n transformResponse: (response: any) => \r\n { \r\n return response as RestApiOperationsGetProductsGetExistingProductColorsResponse; \r\n },\r\n providesTags: [\r\n \"Products\"],\r\n keepUnusedDataFor: 3600,\r\n }),\r\n \r\n RestApiOperationsGetProductsGetExistingProductSizes: build.query<\r\n RestApiOperationsGetProductsGetExistingProductSizesResponse,\r\n RestApiOperationsGetProductsGetExistingProductSizesArguments>\r\n ({\r\n query: () => ({\r\n url: `/api/operations/Products/GetExistingProductSizes`,\r\n }),\r\n extraOptions: {\r\n controller: 'Products',\r\n action: 'GetExistingProductSizes',\r\n notificationType: 'Dialog',\r\n },\r\n transformResponse: (response: any) => \r\n { \r\n return response as RestApiOperationsGetProductsGetExistingProductSizesResponse; \r\n },\r\n providesTags: [\r\n \"Products\"],\r\n keepUnusedDataFor: 3600,\r\n }) \r\n }),\r\n\r\n overrideExisting: false,\r\n });\r\n\r\n// Export the Injected RestApiProductsRtkApi Hooks\r\nexport const {\r\n useRestApiOperationsGetProductsGetAllQuery,\r\n useLazyRestApiOperationsGetProductsGetAllQuery,\r\n useRestApiOperationsGetProductsGetFeaturedOrRandomQuery,\r\n useLazyRestApiOperationsGetProductsGetFeaturedOrRandomQuery,\r\n useRestApiOperationsGetProductsGetByIdQuery,\r\n useLazyRestApiOperationsGetProductsGetByIdQuery,\r\n useRestApiOperationsGetProductsGetByIdWithImagesQuery,\r\n useLazyRestApiOperationsGetProductsGetByIdWithImagesQuery,\r\n useRestApiOperationsGetProductsGetIdFromNameQuery,\r\n useLazyRestApiOperationsGetProductsGetIdFromNameQuery,\r\n useRestApiOperationsPostProductsCreateMutation,\r\n useRestApiOperationsPatchProductsUpdateMutation,\r\n useRestApiOperationsDeleteProductsDeleteByIdMutation,\r\n useRestApiOperationsDeleteProductsDeleteMultipleByIdMutation,\r\n useRestApiOperationsGetProductsGetExistingProductColorsQuery,\r\n useLazyRestApiOperationsGetProductsGetExistingProductColorsQuery,\r\n useRestApiOperationsGetProductsGetExistingProductSizesQuery,\r\n useLazyRestApiOperationsGetProductsGetExistingProductSizesQuery,\r\n} = injectedRestApiProducts;\r\n\r\nconst localEndpoints = injectedRestApiProducts.endpoints;\r\n\r\nexport const restApiProducts = {\r\n endpoints:\r\n {\r\n getAll: localEndpoints.RestApiOperationsGetProductsGetAll,\r\n getFeaturedOrRandom: localEndpoints.RestApiOperationsGetProductsGetFeaturedOrRandom,\r\n getById: localEndpoints.RestApiOperationsGetProductsGetById,\r\n getByIdWithImages: localEndpoints.RestApiOperationsGetProductsGetByIdWithImages,\r\n getIdFromName: localEndpoints.RestApiOperationsGetProductsGetIdFromName,\r\n create: localEndpoints.RestApiOperationsPostProductsCreate,\r\n update: localEndpoints.RestApiOperationsPatchProductsUpdate,\r\n deleteById: localEndpoints.RestApiOperationsDeleteProductsDeleteById,\r\n deleteMultipleById: localEndpoints.RestApiOperationsDeleteProductsDeleteMultipleById,\r\n getExistingProductColors: localEndpoints.RestApiOperationsGetProductsGetExistingProductColors,\r\n getExistingProductSizes: localEndpoints.RestApiOperationsGetProductsGetExistingProductSizes,\r\n },\r\n hooks:\r\n {\r\n queries: \r\n {\r\n getAll: useRestApiOperationsGetProductsGetAllQuery,\r\n getFeaturedOrRandom: useRestApiOperationsGetProductsGetFeaturedOrRandomQuery,\r\n getById: useRestApiOperationsGetProductsGetByIdQuery,\r\n getByIdWithImages: useRestApiOperationsGetProductsGetByIdWithImagesQuery,\r\n getIdFromName: useRestApiOperationsGetProductsGetIdFromNameQuery,\r\n getExistingProductColors: useRestApiOperationsGetProductsGetExistingProductColorsQuery,\r\n getExistingProductSizes: useRestApiOperationsGetProductsGetExistingProductSizesQuery,\r\n },\r\n lazyQueries: \r\n {\r\n getAll: useLazyRestApiOperationsGetProductsGetAllQuery,\r\n getFeaturedOrRandom: useLazyRestApiOperationsGetProductsGetFeaturedOrRandomQuery,\r\n getById: useLazyRestApiOperationsGetProductsGetByIdQuery,\r\n getByIdWithImages: useLazyRestApiOperationsGetProductsGetByIdWithImagesQuery,\r\n getIdFromName: useLazyRestApiOperationsGetProductsGetIdFromNameQuery,\r\n getExistingProductColors: useLazyRestApiOperationsGetProductsGetExistingProductColorsQuery,\r\n getExistingProductSizes: useLazyRestApiOperationsGetProductsGetExistingProductSizesQuery,\r\n },\r\n mutations: \r\n {\r\n create: useRestApiOperationsPostProductsCreateMutation,\r\n update: useRestApiOperationsPatchProductsUpdateMutation,\r\n deleteById: useRestApiOperationsDeleteProductsDeleteByIdMutation,\r\n deleteMultipleById: useRestApiOperationsDeleteProductsDeleteMultipleByIdMutation,\r\n },\r\n }\r\n};\r\n\r\nexport default injectedRestApiProducts;","// Creates all api endpoint(s) for the controller 'USStates'\r\n\r\n\r\n// Entity Imports\r\nimport { IRestApiShippingCalculationDTO } from '../Entities/RestApiShippingCalculationDTO';\r\nimport { IRestApiShippingRateDTO } from '../Entities/RestApiShippingRateDTO';\r\nimport { IRestApiUSStateDTO } from '../Entities/RestApiUSStateDTO';\r\n\r\n// API Import\r\nimport Api from '../RestApiEnhanced';\r\nimport { IJwtBaseQueryOptions } from \"../../foundation/BaseTypes\";\r\n\r\n\r\n// Endpoint Request Arguments\r\nexport type RestApiOperationsGetUSStatesGetAllStatesWithRatesArguments = void;\r\n\r\nexport type RestApiOperationsGetUSStatesGetAllStatesArguments = void;\r\n\r\nexport type RestApiOperationsGetUSStatesGetStateFromCodeArguments =\r\n {\r\n stateCode: string;\r\n };\r\n\r\nexport type RestApiOperationsGetUSStatesGetStatesFromCodesArguments =\r\n {\r\n stateCodes?: Array;\r\n };\r\n\r\nexport type RestApiOperationsGetUSStatesGetShippingRateForStateArguments =\r\n {\r\n stateAbbreviation?: string;\r\n };\r\n\r\nexport type RestApiOperationsPostUSStatesCalculateShippingRateForStateArguments =\r\n {\r\n shippingCalculationDTO: IRestApiShippingCalculationDTO;\r\n };\r\n\r\n\r\n// Endpoint Response Types\r\nexport type RestApiOperationsGetUSStatesGetAllStatesWithRatesResponse = IRestApiUSStateDTO[];\r\nexport type RestApiOperationsGetUSStatesGetAllStatesResponse = IRestApiUSStateDTO[];\r\nexport type RestApiOperationsGetUSStatesGetStateFromCodeResponse = IRestApiUSStateDTO;\r\nexport type RestApiOperationsGetUSStatesGetStatesFromCodesResponse = IRestApiUSStateDTO[];\r\nexport type RestApiOperationsGetUSStatesGetShippingRateForStateResponse = IRestApiShippingRateDTO[];\r\nexport type RestApiOperationsPostUSStatesCalculateShippingRateForStateResponse = IRestApiShippingRateDTO;\r\n\r\n// API Endpoint Injection \r\nconst injectedRestApiUSStates = Api\r\n .injectEndpoints({\r\n endpoints: (build) => \r\n ({\r\n RestApiOperationsGetUSStatesGetAllStatesWithRates: build.query<\r\n RestApiOperationsGetUSStatesGetAllStatesWithRatesResponse,\r\n RestApiOperationsGetUSStatesGetAllStatesWithRatesArguments>\r\n ({\r\n query: () => ({\r\n url: `/api/operations/USStates/GetAllStatesWithRates`,\r\n }),\r\n extraOptions: {\r\n controller: 'USStates',\r\n action: 'GetAllStatesWithRates',\r\n notificationType: 'Dialog',\r\n },\r\n transformResponse: (response: any) => \r\n { \r\n return response as RestApiOperationsGetUSStatesGetAllStatesWithRatesResponse; \r\n },\r\n providesTags: [\r\n \"USStates\"],\r\n keepUnusedDataFor: 3600,\r\n }),\r\n \r\n RestApiOperationsGetUSStatesGetAllStates: build.query<\r\n RestApiOperationsGetUSStatesGetAllStatesResponse,\r\n RestApiOperationsGetUSStatesGetAllStatesArguments>\r\n ({\r\n query: () => ({\r\n url: `/api/operations/USStates/GetAllStates`,\r\n }),\r\n extraOptions: {\r\n controller: 'USStates',\r\n action: 'GetAllStates',\r\n notificationType: 'Dialog',\r\n },\r\n transformResponse: (response: any) => \r\n { \r\n return response as RestApiOperationsGetUSStatesGetAllStatesResponse; \r\n },\r\n providesTags: [\r\n \"USStates\"],\r\n keepUnusedDataFor: 3600,\r\n }),\r\n \r\n RestApiOperationsGetUSStatesGetStateFromCode: build.query<\r\n RestApiOperationsGetUSStatesGetStateFromCodeResponse,\r\n RestApiOperationsGetUSStatesGetStateFromCodeArguments>\r\n ({\r\n query: (queryArg) => ({\r\n url: `/api/operations/USStates/GetStateFromCode/${queryArg.stateCode}`,\r\n }),\r\n extraOptions: {\r\n controller: 'USStates',\r\n action: 'GetStateFromCode',\r\n notificationType: 'Dialog',\r\n },\r\n transformResponse: (response: any) => \r\n { \r\n return response as RestApiOperationsGetUSStatesGetStateFromCodeResponse; \r\n },\r\n providesTags: [\r\n \"USStates\"],\r\n keepUnusedDataFor: 3600,\r\n }),\r\n \r\n RestApiOperationsGetUSStatesGetStatesFromCodes: build.query<\r\n RestApiOperationsGetUSStatesGetStatesFromCodesResponse,\r\n RestApiOperationsGetUSStatesGetStatesFromCodesArguments>\r\n ({\r\n query: (queryArg) => ({\r\n url: `/api/operations/USStates/GetStatesFromCodes`,\r\n params: {\r\n stateCodes: queryArg[\"stateCodes\"]\r\n },\r\n }),\r\n extraOptions: {\r\n controller: 'USStates',\r\n action: 'GetStatesFromCodes',\r\n notificationType: 'Dialog',\r\n },\r\n transformResponse: (response: any) => \r\n { \r\n return response as RestApiOperationsGetUSStatesGetStatesFromCodesResponse; \r\n },\r\n providesTags: [\r\n \"USStates\"],\r\n keepUnusedDataFor: 3600,\r\n }),\r\n \r\n RestApiOperationsGetUSStatesGetShippingRateForState: build.query<\r\n RestApiOperationsGetUSStatesGetShippingRateForStateResponse,\r\n RestApiOperationsGetUSStatesGetShippingRateForStateArguments>\r\n ({\r\n query: (queryArg) => ({\r\n url: `/api/operations/USStates/GetShippingRateForState`,\r\n params: {\r\n stateAbbreviation: queryArg[\"stateAbbreviation\"]\r\n },\r\n }),\r\n extraOptions: {\r\n controller: 'USStates',\r\n action: 'GetShippingRateForState',\r\n notificationType: 'Dialog',\r\n },\r\n transformResponse: (response: any) => \r\n { \r\n return response as RestApiOperationsGetUSStatesGetShippingRateForStateResponse; \r\n },\r\n providesTags: [\r\n \"USStates\"],\r\n keepUnusedDataFor: 3600,\r\n }),\r\n \r\n RestApiOperationsPostUSStatesCalculateShippingRateForState: build.mutation<\r\n RestApiOperationsPostUSStatesCalculateShippingRateForStateResponse,\r\n RestApiOperationsPostUSStatesCalculateShippingRateForStateArguments>\r\n ({\r\n query: (queryArg) => ({\r\n url: `/api/operations/USStates/CalculateShippingRateForState`,\r\n method: 'POST',\r\n body: queryArg[\"shippingCalculationDTO\"]\r\n }),\r\n extraOptions: {\r\n controller: 'USStates',\r\n action: 'CalculateShippingRateForState',\r\n notificationType: 'Dialog',\r\n },\r\n transformResponse: (response: any) => \r\n { \r\n return response as RestApiOperationsPostUSStatesCalculateShippingRateForStateResponse; \r\n },\r\n invalidatesTags: [\r\n \"USStates\"],\r\n }) \r\n }),\r\n\r\n overrideExisting: false,\r\n });\r\n\r\n// Export the Injected RestApiUSStatesRtkApi Hooks\r\nexport const {\r\n useRestApiOperationsGetUSStatesGetAllStatesWithRatesQuery,\r\n useLazyRestApiOperationsGetUSStatesGetAllStatesWithRatesQuery,\r\n useRestApiOperationsGetUSStatesGetAllStatesQuery,\r\n useLazyRestApiOperationsGetUSStatesGetAllStatesQuery,\r\n useRestApiOperationsGetUSStatesGetStateFromCodeQuery,\r\n useLazyRestApiOperationsGetUSStatesGetStateFromCodeQuery,\r\n useRestApiOperationsGetUSStatesGetStatesFromCodesQuery,\r\n useLazyRestApiOperationsGetUSStatesGetStatesFromCodesQuery,\r\n useRestApiOperationsGetUSStatesGetShippingRateForStateQuery,\r\n useLazyRestApiOperationsGetUSStatesGetShippingRateForStateQuery,\r\n useRestApiOperationsPostUSStatesCalculateShippingRateForStateMutation,\r\n} = injectedRestApiUSStates;\r\n\r\nconst localEndpoints = injectedRestApiUSStates.endpoints;\r\n\r\nexport const restApiUSStates = {\r\n endpoints:\r\n {\r\n getAllStatesWithRates: localEndpoints.RestApiOperationsGetUSStatesGetAllStatesWithRates,\r\n getAllStates: localEndpoints.RestApiOperationsGetUSStatesGetAllStates,\r\n getStateFromCode: localEndpoints.RestApiOperationsGetUSStatesGetStateFromCode,\r\n getStatesFromCodes: localEndpoints.RestApiOperationsGetUSStatesGetStatesFromCodes,\r\n getShippingRateForState: localEndpoints.RestApiOperationsGetUSStatesGetShippingRateForState,\r\n calculateShippingRateForState: localEndpoints.RestApiOperationsPostUSStatesCalculateShippingRateForState,\r\n },\r\n hooks:\r\n {\r\n queries: \r\n {\r\n getAllStatesWithRates: useRestApiOperationsGetUSStatesGetAllStatesWithRatesQuery,\r\n getAllStates: useRestApiOperationsGetUSStatesGetAllStatesQuery,\r\n getStateFromCode: useRestApiOperationsGetUSStatesGetStateFromCodeQuery,\r\n getStatesFromCodes: useRestApiOperationsGetUSStatesGetStatesFromCodesQuery,\r\n getShippingRateForState: useRestApiOperationsGetUSStatesGetShippingRateForStateQuery,\r\n },\r\n lazyQueries: \r\n {\r\n getAllStatesWithRates: useLazyRestApiOperationsGetUSStatesGetAllStatesWithRatesQuery,\r\n getAllStates: useLazyRestApiOperationsGetUSStatesGetAllStatesQuery,\r\n getStateFromCode: useLazyRestApiOperationsGetUSStatesGetStateFromCodeQuery,\r\n getStatesFromCodes: useLazyRestApiOperationsGetUSStatesGetStatesFromCodesQuery,\r\n getShippingRateForState: useLazyRestApiOperationsGetUSStatesGetShippingRateForStateQuery,\r\n },\r\n mutations: \r\n {\r\n calculateShippingRateForState: useRestApiOperationsPostUSStatesCalculateShippingRateForStateMutation,\r\n },\r\n }\r\n};\r\n\r\nexport default injectedRestApiUSStates;","// Creates all api endpoint(s) for the controller 'UserAccount'\r\n\r\n\r\n// Entity Imports\r\nimport { IRestApiConfirmEmailRequestDTO } from '../Entities/RestApiConfirmEmailRequestDTO';\r\nimport { IRestApiGuidOk } from '../Entities/RestApiGuidOk';\r\nimport { IRestApiRegisterUserDTO } from '../Entities/RestApiRegisterUserDTO';\r\nimport { IRestApiRequestResetPasswordRequestDTO } from '../Entities/RestApiRequestResetPasswordRequestDTO';\r\nimport { IRestApiResetPasswordRequestDTO } from '../Entities/RestApiResetPasswordRequestDTO';\r\nimport { IRestApiStringOk } from '../Entities/RestApiStringOk';\r\nimport { IRestApiUpdatePasswordRequestDTO } from '../Entities/RestApiUpdatePasswordRequestDTO';\r\nimport { IRestApiUpdatePasswordResponseDTO } from '../Entities/RestApiUpdatePasswordResponseDTO';\r\nimport { IRestApiUpdateUserProfileRequestDTO } from '../Entities/RestApiUpdateUserProfileRequestDTO';\r\n\r\n// API Import\r\nimport Api from '../RestApiEnhanced';\r\nimport { IJwtBaseQueryOptions } from \"../../foundation/BaseTypes\";\r\n\r\n\r\n// Endpoint Request Arguments\r\nexport type RestApiOperationsPatchUserAccountUpdatePasswordArguments =\r\n {\r\n updatePasswordRequestDTO: IRestApiUpdatePasswordRequestDTO;\r\n };\r\n\r\nexport type RestApiOperationsPostUserAccountRequestPasswordResetArguments =\r\n {\r\n requestResetPasswordRequestDTO: IRestApiRequestResetPasswordRequestDTO;\r\n };\r\n\r\nexport type RestApiOperationsPostUserAccountResetPasswordArguments =\r\n {\r\n resetPasswordRequestDTO: IRestApiResetPasswordRequestDTO;\r\n };\r\n\r\nexport type RestApiOperationsPatchUserAccountUpdateUserProfileArguments =\r\n {\r\n updateUserProfileRequestDTO: IRestApiUpdateUserProfileRequestDTO;\r\n };\r\n\r\nexport type RestApiOperationsPostUserAccountRegisterUserArguments =\r\n {\r\n registerUserDTO: IRestApiRegisterUserDTO;\r\n };\r\n\r\nexport type RestApiOperationsPostUserAccountConfirmEmailArguments =\r\n {\r\n confirmEmailRequestDTO: IRestApiConfirmEmailRequestDTO;\r\n };\r\n\r\n\r\n// Endpoint Response Types\r\nexport type RestApiOperationsPatchUserAccountUpdatePasswordResponse = IRestApiUpdatePasswordResponseDTO;\r\nexport type RestApiOperationsPostUserAccountRequestPasswordResetResponse = unknown;\r\nexport type RestApiOperationsPostUserAccountResetPasswordResponse = unknown;\r\nexport type RestApiOperationsPatchUserAccountUpdateUserProfileResponse = IRestApiStringOk;\r\nexport type RestApiOperationsPostUserAccountRegisterUserResponse = IRestApiGuidOk;\r\nexport type RestApiOperationsPostUserAccountConfirmEmailResponse = unknown;\r\n\r\n// API Endpoint Injection \r\nconst injectedRestApiUserAccount = Api\r\n .injectEndpoints({\r\n endpoints: (build) => \r\n ({\r\n RestApiOperationsPatchUserAccountUpdatePassword: build.mutation<\r\n RestApiOperationsPatchUserAccountUpdatePasswordResponse,\r\n RestApiOperationsPatchUserAccountUpdatePasswordArguments>\r\n ({\r\n query: (queryArg) => ({\r\n url: `/api/operations/UserAccount/UpdatePassword`,\r\n method: 'PATCH',\r\n body: queryArg[\"updatePasswordRequestDTO\"]\r\n }),\r\n extraOptions: {\r\n controller: 'UserAccount',\r\n action: 'UpdatePassword',\r\n userRole: 'User',\r\n tokenType: 'RefreshToken',\r\n notificationType: 'Dialog',\r\n },\r\n transformResponse: (response: any) => \r\n { \r\n return response as RestApiOperationsPatchUserAccountUpdatePasswordResponse; \r\n },\r\n invalidatesTags: [\r\n \"UserAccount\"],\r\n }),\r\n \r\n RestApiOperationsPostUserAccountRequestPasswordReset: build.mutation<\r\n RestApiOperationsPostUserAccountRequestPasswordResetResponse,\r\n RestApiOperationsPostUserAccountRequestPasswordResetArguments>\r\n ({\r\n query: (queryArg) => ({\r\n url: `/api/operations/UserAccount/RequestPasswordReset`,\r\n method: 'POST',\r\n body: queryArg[\"requestResetPasswordRequestDTO\"]\r\n }),\r\n extraOptions: {\r\n controller: 'UserAccount',\r\n action: 'RequestPasswordReset',\r\n notificationType: 'Dialog',\r\n },\r\n transformResponse: (response: any) => \r\n { \r\n return response as RestApiOperationsPostUserAccountRequestPasswordResetResponse; \r\n },\r\n invalidatesTags: [\r\n \"UserAccount\"],\r\n }),\r\n \r\n RestApiOperationsPostUserAccountResetPassword: build.mutation<\r\n RestApiOperationsPostUserAccountResetPasswordResponse,\r\n RestApiOperationsPostUserAccountResetPasswordArguments>\r\n ({\r\n query: (queryArg) => ({\r\n url: `/api/operations/UserAccount/ResetPassword`,\r\n method: 'POST',\r\n body: queryArg[\"resetPasswordRequestDTO\"]\r\n }),\r\n extraOptions: {\r\n controller: 'UserAccount',\r\n action: 'ResetPassword',\r\n notificationType: 'Dialog',\r\n },\r\n transformResponse: (response: any) => \r\n { \r\n return response as RestApiOperationsPostUserAccountResetPasswordResponse; \r\n },\r\n invalidatesTags: [\r\n \"UserAccount\"],\r\n }),\r\n \r\n RestApiOperationsPatchUserAccountUpdateUserProfile: build.mutation<\r\n RestApiOperationsPatchUserAccountUpdateUserProfileResponse,\r\n RestApiOperationsPatchUserAccountUpdateUserProfileArguments>\r\n ({\r\n query: (queryArg) => ({\r\n url: `/api/operations/UserAccount/UpdateUserProfile`,\r\n method: 'PATCH',\r\n body: queryArg[\"updateUserProfileRequestDTO\"]\r\n }),\r\n extraOptions: {\r\n controller: 'UserAccount',\r\n action: 'UpdateUserProfile',\r\n userRole: 'User',\r\n tokenType: 'RefreshToken',\r\n notificationType: 'Dialog',\r\n },\r\n transformResponse: (response: any) => \r\n { \r\n return response as RestApiOperationsPatchUserAccountUpdateUserProfileResponse; \r\n },\r\n invalidatesTags: [\r\n \"UserAccount\"],\r\n }),\r\n \r\n RestApiOperationsPostUserAccountRegisterUser: build.mutation<\r\n RestApiOperationsPostUserAccountRegisterUserResponse,\r\n RestApiOperationsPostUserAccountRegisterUserArguments>\r\n ({\r\n query: (queryArg) => ({\r\n url: `/api/operations/UserAccount/RegisterUser`,\r\n method: 'POST',\r\n body: queryArg[\"registerUserDTO\"]\r\n }),\r\n extraOptions: {\r\n controller: 'UserAccount',\r\n action: 'RegisterUser',\r\n notificationType: 'Dialog',\r\n },\r\n transformResponse: (response: any) => \r\n { \r\n return response as RestApiOperationsPostUserAccountRegisterUserResponse; \r\n },\r\n invalidatesTags: [\r\n \"UserAccount\"],\r\n }),\r\n \r\n RestApiOperationsPostUserAccountConfirmEmail: build.mutation<\r\n RestApiOperationsPostUserAccountConfirmEmailResponse,\r\n RestApiOperationsPostUserAccountConfirmEmailArguments>\r\n ({\r\n query: (queryArg) => ({\r\n url: `/api/operations/UserAccount/ConfirmEmail`,\r\n method: 'POST',\r\n body: queryArg[\"confirmEmailRequestDTO\"]\r\n }),\r\n extraOptions: {\r\n controller: 'UserAccount',\r\n action: 'ConfirmEmail',\r\n notificationType: 'Dialog',\r\n },\r\n transformResponse: (response: any) => \r\n { \r\n return response as RestApiOperationsPostUserAccountConfirmEmailResponse; \r\n },\r\n invalidatesTags: [\r\n \"UserAccount\"],\r\n }) \r\n }),\r\n\r\n overrideExisting: false,\r\n });\r\n\r\n// Export the Injected RestApiUserAccountRtkApi Hooks\r\nexport const {\r\n useRestApiOperationsPatchUserAccountUpdatePasswordMutation,\r\n useRestApiOperationsPostUserAccountRequestPasswordResetMutation,\r\n useRestApiOperationsPostUserAccountResetPasswordMutation,\r\n useRestApiOperationsPatchUserAccountUpdateUserProfileMutation,\r\n useRestApiOperationsPostUserAccountRegisterUserMutation,\r\n useRestApiOperationsPostUserAccountConfirmEmailMutation,\r\n} = injectedRestApiUserAccount;\r\n\r\nconst localEndpoints = injectedRestApiUserAccount.endpoints;\r\n\r\nexport const restApiUserAccount = {\r\n endpoints:\r\n {\r\n updatePassword: localEndpoints.RestApiOperationsPatchUserAccountUpdatePassword,\r\n requestPasswordReset: localEndpoints.RestApiOperationsPostUserAccountRequestPasswordReset,\r\n resetPassword: localEndpoints.RestApiOperationsPostUserAccountResetPassword,\r\n updateUserProfile: localEndpoints.RestApiOperationsPatchUserAccountUpdateUserProfile,\r\n registerUser: localEndpoints.RestApiOperationsPostUserAccountRegisterUser,\r\n confirmEmail: localEndpoints.RestApiOperationsPostUserAccountConfirmEmail,\r\n },\r\n hooks:\r\n {\r\n mutations: \r\n {\r\n updatePassword: useRestApiOperationsPatchUserAccountUpdatePasswordMutation,\r\n requestPasswordReset: useRestApiOperationsPostUserAccountRequestPasswordResetMutation,\r\n resetPassword: useRestApiOperationsPostUserAccountResetPasswordMutation,\r\n updateUserProfile: useRestApiOperationsPatchUserAccountUpdateUserProfileMutation,\r\n registerUser: useRestApiOperationsPostUserAccountRegisterUserMutation,\r\n confirmEmail: useRestApiOperationsPostUserAccountConfirmEmailMutation,\r\n },\r\n }\r\n};\r\n\r\nexport default injectedRestApiUserAccount;","// Creates all api endpoint(s) for the controller 'UserOperations'\r\n\r\n\r\n// Entity Imports\r\nimport { IRestApiApplicationUser } from '../Entities/RestApiApplicationUser';\r\n\r\n// API Import\r\nimport Api from '../RestApiEnhanced';\r\nimport { IJwtBaseQueryOptions } from \"../../foundation/BaseTypes\";\r\n\r\n\r\n// Endpoint Request Arguments\r\nexport type RestApiOperationsGetUserOperationsGetAllUsersArguments = void;\r\n\r\nexport type RestApiOperationsGetUserOperationsGetUserArguments =\r\n {\r\n userEmail: string;\r\n };\r\n\r\nexport type RestApiOperationsGetUserOperationsGetUserInformationArguments =\r\n {\r\n userId: string;\r\n };\r\n\r\nexport type RestApiOperationsGetUserOperationsGetNewRefreshTokenArguments =\r\n {\r\n userEmail?: string;\r\n };\r\n\r\nexport type RestApiOperationsGetUserOperationsIsUserLockedArguments =\r\n {\r\n userEmail: string;\r\n };\r\n\r\nexport type RestApiOperationsGetUserOperationsLockUserArguments =\r\n {\r\n userEmail: string;\r\n };\r\n\r\nexport type RestApiOperationsGetUserOperationsUnlockUserArguments =\r\n {\r\n userEmail: string;\r\n };\r\n\r\nexport type RestApiOperationsGetUserOperationsTestAccessTokenArguments = void;\r\n\r\nexport type RestApiOperationsGetUserOperationsTestRefreshTokenArguments = void;\r\n\r\n\r\n// Endpoint Response Types\r\nexport type RestApiOperationsGetUserOperationsGetAllUsersResponse = IRestApiApplicationUser[];\r\nexport type RestApiOperationsGetUserOperationsGetUserResponse = IRestApiApplicationUser;\r\nexport type RestApiOperationsGetUserOperationsGetUserInformationResponse = IRestApiApplicationUser;\r\nexport type RestApiOperationsGetUserOperationsGetNewRefreshTokenResponse = string;\r\nexport type RestApiOperationsGetUserOperationsIsUserLockedResponse = boolean;\r\nexport type RestApiOperationsGetUserOperationsLockUserResponse = boolean;\r\nexport type RestApiOperationsGetUserOperationsUnlockUserResponse = boolean;\r\nexport type RestApiOperationsGetUserOperationsTestAccessTokenResponse = boolean;\r\nexport type RestApiOperationsGetUserOperationsTestRefreshTokenResponse = boolean;\r\n\r\n// API Endpoint Injection \r\nconst injectedRestApiUserOperations = Api\r\n .injectEndpoints({\r\n endpoints: (build) => \r\n ({\r\n RestApiOperationsGetUserOperationsGetAllUsers: build.query<\r\n RestApiOperationsGetUserOperationsGetAllUsersResponse,\r\n RestApiOperationsGetUserOperationsGetAllUsersArguments>\r\n ({\r\n query: () => ({\r\n url: `/api/operations/UserOperations/GetAllUsers`,\r\n }),\r\n extraOptions: {\r\n controller: 'UserOperations',\r\n action: 'GetAllUsers',\r\n userRole: 'PowerUser',\r\n tokenType: 'RefreshToken',\r\n notificationType: 'Dialog',\r\n },\r\n transformResponse: (response: any) => \r\n { \r\n return response as RestApiOperationsGetUserOperationsGetAllUsersResponse; \r\n },\r\n providesTags: [\r\n \"UserOperations\"],\r\n keepUnusedDataFor: 3600,\r\n }),\r\n \r\n RestApiOperationsGetUserOperationsGetUser: build.query<\r\n RestApiOperationsGetUserOperationsGetUserResponse,\r\n RestApiOperationsGetUserOperationsGetUserArguments>\r\n ({\r\n query: (queryArg) => ({\r\n url: `/api/operations/UserOperations/GetUser/${queryArg.userEmail}`,\r\n }),\r\n extraOptions: {\r\n controller: 'UserOperations',\r\n action: 'GetUser',\r\n userRole: 'User',\r\n tokenType: 'RefreshToken',\r\n notificationType: 'Dialog',\r\n },\r\n transformResponse: (response: any) => \r\n { \r\n return response as RestApiOperationsGetUserOperationsGetUserResponse; \r\n },\r\n providesTags: [\r\n \"UserOperations\"],\r\n keepUnusedDataFor: 3600,\r\n }),\r\n \r\n RestApiOperationsGetUserOperationsGetUserInformation: build.query<\r\n RestApiOperationsGetUserOperationsGetUserInformationResponse,\r\n RestApiOperationsGetUserOperationsGetUserInformationArguments>\r\n ({\r\n query: (queryArg) => ({\r\n url: `/api/operations/UserOperations/GetUserInformation/${queryArg.userId}`,\r\n }),\r\n extraOptions: {\r\n controller: 'UserOperations',\r\n action: 'GetUserInformation',\r\n notificationType: 'Dialog',\r\n },\r\n transformResponse: (response: any) => \r\n { \r\n return response as RestApiOperationsGetUserOperationsGetUserInformationResponse; \r\n },\r\n providesTags: [\r\n \"UserOperations\"],\r\n keepUnusedDataFor: 3600,\r\n }),\r\n \r\n RestApiOperationsGetUserOperationsGetNewRefreshToken: build.query<\r\n RestApiOperationsGetUserOperationsGetNewRefreshTokenResponse,\r\n RestApiOperationsGetUserOperationsGetNewRefreshTokenArguments>\r\n ({\r\n query: (queryArg) => ({\r\n url: `/api/operations/UserOperations/GetNewRefreshToken`,\r\n params: {\r\n userEmail: queryArg[\"userEmail\"]\r\n },\r\n }),\r\n extraOptions: {\r\n controller: 'UserOperations',\r\n action: 'GetNewRefreshToken',\r\n userRole: 'Anonymous',\r\n tokenType: 'AccessToken',\r\n notificationType: 'Dialog',\r\n },\r\n transformResponse: (response: any) => \r\n { \r\n return response as RestApiOperationsGetUserOperationsGetNewRefreshTokenResponse; \r\n },\r\n providesTags: [\r\n \"UserOperations\"],\r\n keepUnusedDataFor: 3600,\r\n }),\r\n \r\n RestApiOperationsGetUserOperationsIsUserLocked: build.query<\r\n RestApiOperationsGetUserOperationsIsUserLockedResponse,\r\n RestApiOperationsGetUserOperationsIsUserLockedArguments>\r\n ({\r\n query: (queryArg) => ({\r\n url: `/api/operations/UserOperations/IsUserLocked/${queryArg.userEmail}`,\r\n }),\r\n extraOptions: {\r\n controller: 'UserOperations',\r\n action: 'IsUserLocked',\r\n userRole: 'User',\r\n tokenType: 'RefreshToken',\r\n notificationType: 'Dialog',\r\n },\r\n transformResponse: (response: any) => \r\n { \r\n return response as RestApiOperationsGetUserOperationsIsUserLockedResponse; \r\n },\r\n providesTags: [\r\n \"UserOperations\"],\r\n keepUnusedDataFor: 3600,\r\n }),\r\n \r\n RestApiOperationsGetUserOperationsLockUser: build.query<\r\n RestApiOperationsGetUserOperationsLockUserResponse,\r\n RestApiOperationsGetUserOperationsLockUserArguments>\r\n ({\r\n query: (queryArg) => ({\r\n url: `/api/operations/UserOperations/LockUser/${queryArg.userEmail}`,\r\n }),\r\n extraOptions: {\r\n controller: 'UserOperations',\r\n action: 'LockUser',\r\n userRole: 'PowerUser',\r\n tokenType: 'AccessToken',\r\n notificationType: 'Dialog',\r\n },\r\n transformResponse: (response: any) => \r\n { \r\n return response as RestApiOperationsGetUserOperationsLockUserResponse; \r\n },\r\n providesTags: [\r\n \"UserOperations\"],\r\n keepUnusedDataFor: 3600,\r\n }),\r\n \r\n RestApiOperationsGetUserOperationsUnlockUser: build.query<\r\n RestApiOperationsGetUserOperationsUnlockUserResponse,\r\n RestApiOperationsGetUserOperationsUnlockUserArguments>\r\n ({\r\n query: (queryArg) => ({\r\n url: `/api/operations/UserOperations/UnlockUser/${queryArg.userEmail}`,\r\n }),\r\n extraOptions: {\r\n controller: 'UserOperations',\r\n action: 'UnlockUser',\r\n userRole: 'PowerUser',\r\n tokenType: 'AccessToken',\r\n notificationType: 'Dialog',\r\n },\r\n transformResponse: (response: any) => \r\n { \r\n return response as RestApiOperationsGetUserOperationsUnlockUserResponse; \r\n },\r\n providesTags: [\r\n \"UserOperations\"],\r\n keepUnusedDataFor: 3600,\r\n }),\r\n \r\n RestApiOperationsGetUserOperationsTestAccessToken: build.query<\r\n RestApiOperationsGetUserOperationsTestAccessTokenResponse,\r\n RestApiOperationsGetUserOperationsTestAccessTokenArguments>\r\n ({\r\n query: () => ({\r\n url: `/api/operations/UserOperations/TestAccessToken`,\r\n }),\r\n extraOptions: {\r\n controller: 'UserOperations',\r\n action: 'TestAccessToken',\r\n userRole: 'User',\r\n tokenType: 'AccessToken',\r\n notificationType: 'Dialog',\r\n },\r\n transformResponse: (response: any) => \r\n { \r\n return response as RestApiOperationsGetUserOperationsTestAccessTokenResponse; \r\n },\r\n providesTags: [\r\n \"UserOperations\"],\r\n keepUnusedDataFor: 3600,\r\n }),\r\n \r\n RestApiOperationsGetUserOperationsTestRefreshToken: build.query<\r\n RestApiOperationsGetUserOperationsTestRefreshTokenResponse,\r\n RestApiOperationsGetUserOperationsTestRefreshTokenArguments>\r\n ({\r\n query: () => ({\r\n url: `/api/operations/UserOperations/TestRefreshToken`,\r\n }),\r\n extraOptions: {\r\n controller: 'UserOperations',\r\n action: 'TestRefreshToken',\r\n userRole: 'User',\r\n tokenType: 'RefreshToken',\r\n notificationType: 'Dialog',\r\n },\r\n transformResponse: (response: any) => \r\n { \r\n return response as RestApiOperationsGetUserOperationsTestRefreshTokenResponse; \r\n },\r\n providesTags: [\r\n \"UserOperations\"],\r\n keepUnusedDataFor: 3600,\r\n }) \r\n }),\r\n\r\n overrideExisting: false,\r\n });\r\n\r\n// Export the Injected RestApiUserOperationsRtkApi Hooks\r\nexport const {\r\n useRestApiOperationsGetUserOperationsGetAllUsersQuery,\r\n useLazyRestApiOperationsGetUserOperationsGetAllUsersQuery,\r\n useRestApiOperationsGetUserOperationsGetUserQuery,\r\n useLazyRestApiOperationsGetUserOperationsGetUserQuery,\r\n useRestApiOperationsGetUserOperationsGetUserInformationQuery,\r\n useLazyRestApiOperationsGetUserOperationsGetUserInformationQuery,\r\n useRestApiOperationsGetUserOperationsGetNewRefreshTokenQuery,\r\n useLazyRestApiOperationsGetUserOperationsGetNewRefreshTokenQuery,\r\n useRestApiOperationsGetUserOperationsIsUserLockedQuery,\r\n useLazyRestApiOperationsGetUserOperationsIsUserLockedQuery,\r\n useRestApiOperationsGetUserOperationsLockUserQuery,\r\n useLazyRestApiOperationsGetUserOperationsLockUserQuery,\r\n useRestApiOperationsGetUserOperationsUnlockUserQuery,\r\n useLazyRestApiOperationsGetUserOperationsUnlockUserQuery,\r\n useRestApiOperationsGetUserOperationsTestAccessTokenQuery,\r\n useLazyRestApiOperationsGetUserOperationsTestAccessTokenQuery,\r\n useRestApiOperationsGetUserOperationsTestRefreshTokenQuery,\r\n useLazyRestApiOperationsGetUserOperationsTestRefreshTokenQuery,\r\n} = injectedRestApiUserOperations;\r\n\r\nconst localEndpoints = injectedRestApiUserOperations.endpoints;\r\n\r\nexport const restApiUserOperations = {\r\n endpoints:\r\n {\r\n getAllUsers: localEndpoints.RestApiOperationsGetUserOperationsGetAllUsers,\r\n getUser: localEndpoints.RestApiOperationsGetUserOperationsGetUser,\r\n getUserInformation: localEndpoints.RestApiOperationsGetUserOperationsGetUserInformation,\r\n getNewRefreshToken: localEndpoints.RestApiOperationsGetUserOperationsGetNewRefreshToken,\r\n isUserLocked: localEndpoints.RestApiOperationsGetUserOperationsIsUserLocked,\r\n lockUser: localEndpoints.RestApiOperationsGetUserOperationsLockUser,\r\n unlockUser: localEndpoints.RestApiOperationsGetUserOperationsUnlockUser,\r\n testAccessToken: localEndpoints.RestApiOperationsGetUserOperationsTestAccessToken,\r\n testRefreshToken: localEndpoints.RestApiOperationsGetUserOperationsTestRefreshToken,\r\n },\r\n hooks:\r\n {\r\n queries: \r\n {\r\n getAllUsers: useRestApiOperationsGetUserOperationsGetAllUsersQuery,\r\n getUser: useRestApiOperationsGetUserOperationsGetUserQuery,\r\n getUserInformation: useRestApiOperationsGetUserOperationsGetUserInformationQuery,\r\n getNewRefreshToken: useRestApiOperationsGetUserOperationsGetNewRefreshTokenQuery,\r\n isUserLocked: useRestApiOperationsGetUserOperationsIsUserLockedQuery,\r\n lockUser: useRestApiOperationsGetUserOperationsLockUserQuery,\r\n unlockUser: useRestApiOperationsGetUserOperationsUnlockUserQuery,\r\n testAccessToken: useRestApiOperationsGetUserOperationsTestAccessTokenQuery,\r\n testRefreshToken: useRestApiOperationsGetUserOperationsTestRefreshTokenQuery,\r\n },\r\n lazyQueries: \r\n {\r\n getAllUsers: useLazyRestApiOperationsGetUserOperationsGetAllUsersQuery,\r\n getUser: useLazyRestApiOperationsGetUserOperationsGetUserQuery,\r\n getUserInformation: useLazyRestApiOperationsGetUserOperationsGetUserInformationQuery,\r\n getNewRefreshToken: useLazyRestApiOperationsGetUserOperationsGetNewRefreshTokenQuery,\r\n isUserLocked: useLazyRestApiOperationsGetUserOperationsIsUserLockedQuery,\r\n lockUser: useLazyRestApiOperationsGetUserOperationsLockUserQuery,\r\n unlockUser: useLazyRestApiOperationsGetUserOperationsUnlockUserQuery,\r\n testAccessToken: useLazyRestApiOperationsGetUserOperationsTestAccessTokenQuery,\r\n testRefreshToken: useLazyRestApiOperationsGetUserOperationsTestRefreshTokenQuery,\r\n },\r\n }\r\n};\r\n\r\nexport default injectedRestApiUserOperations;","// Auto-Generated: 'MultipleIdsDTO' (Object -> IRestApiMultipleIdsDTO)\r\n\r\n\r\nexport interface IRestApiMultipleIdsDTO \r\n{\r\n ids?: Array | null;\r\n}\r\n\r\n\r\nexport class RestApiMultipleIdsDTO implements IRestApiMultipleIdsDTO \r\n{ \r\n // Class Properties \r\n ids?: Array | null;\r\n \r\n // Constructor\r\n constructor(data?: IRestApiMultipleIdsDTO) \r\n {\r\n if (data) \r\n {\r\n for (var property in data) \r\n {\r\n if (data.hasOwnProperty(property))\r\n {\r\n (this as any)[property] = (data as any)[property];\r\n }\r\n }\r\n }\r\n }\r\n \r\n\r\n // Initialize the entity from a JSON object\r\n init(_data?: IRestApiMultipleIdsDTO) \r\n {\r\n if (_data) {\r\n \r\n this.ids = _data[\"ids\"];\r\n }\r\n }\r\n \r\n\r\n // Retrieve the entity from a JSON object\r\n static fromJS(data: any): RestApiMultipleIdsDTO \r\n {\r\n data = typeof data === 'object' ? data : {};\r\n \r\n let result = new RestApiMultipleIdsDTO();\r\n \r\n result.init(data);\r\n\r\n return result;\r\n } \r\n\r\n // Convert the entity to a JSON object\r\n public toJSON(): any\r\n {\r\n return {\r\n ids: this.ids\r\n }; \r\n }\r\n} ","// Auto-Generated: 'ProductCategoryMinimalDTO' (Object -> IRestApiProductCategoryMinimalDTO)\r\n\r\n\r\nexport interface IRestApiProductCategoryMinimalDTO \r\n{\r\n id?: string;\r\n sortOrder?: number;\r\n parentCategoryId?: string;\r\n name?: string | null;\r\n title?: string | null;\r\n subtitle?: string | null;\r\n description?: string | null;\r\n bannerImageId?: string | null;\r\n thumbnailImageId?: string | null;\r\n childCategories?: IRestApiProductCategoryMinimalDTO[] | null;\r\n}\r\n\r\n\r\nexport class RestApiProductCategoryMinimalDTO implements IRestApiProductCategoryMinimalDTO \r\n{ \r\n // Class Properties \r\n id?: string;\r\n sortOrder?: number;\r\n parentCategoryId?: string;\r\n name?: string | null;\r\n title?: string | null;\r\n subtitle?: string | null;\r\n description?: string | null;\r\n bannerImageId?: string | null;\r\n thumbnailImageId?: string | null;\r\n childCategories?: IRestApiProductCategoryMinimalDTO[] | null;\r\n \r\n // Constructor\r\n constructor(data?: IRestApiProductCategoryMinimalDTO) \r\n {\r\n if (data) \r\n {\r\n for (var property in data) \r\n {\r\n if (data.hasOwnProperty(property))\r\n {\r\n (this as any)[property] = (data as any)[property];\r\n }\r\n }\r\n }\r\n }\r\n \r\n\r\n // Initialize the entity from a JSON object\r\n init(_data?: IRestApiProductCategoryMinimalDTO) \r\n {\r\n if (_data) {\r\n \r\n this.id = _data[\"id\"];\r\n this.sortOrder = _data[\"sortOrder\"];\r\n this.parentCategoryId = _data[\"parentCategoryId\"];\r\n this.name = _data[\"name\"];\r\n this.title = _data[\"title\"];\r\n this.subtitle = _data[\"subtitle\"];\r\n this.description = _data[\"description\"];\r\n this.bannerImageId = _data[\"bannerImageId\"];\r\n this.thumbnailImageId = _data[\"thumbnailImageId\"];\r\n this.childCategories = _data[\"childCategories\"];\r\n }\r\n }\r\n \r\n\r\n // Retrieve the entity from a JSON object\r\n static fromJS(data: any): RestApiProductCategoryMinimalDTO \r\n {\r\n data = typeof data === 'object' ? data : {};\r\n \r\n let result = new RestApiProductCategoryMinimalDTO();\r\n \r\n result.init(data);\r\n\r\n return result;\r\n } \r\n\r\n // Convert the entity to a JSON object\r\n public toJSON(): any\r\n {\r\n return {\r\n id: this.id, \r\n sortOrder: this.sortOrder, \r\n parentCategoryId: this.parentCategoryId, \r\n name: this.name, \r\n title: this.title, \r\n subtitle: this.subtitle, \r\n description: this.description, \r\n bannerImageId: this.bannerImageId, \r\n thumbnailImageId: this.thumbnailImageId, \r\n childCategories: this.childCategories\r\n }; \r\n }\r\n} ","// Auto-Generated: 'UserAddressDTO' (Object -> IRestApiUserAddressDTO)\r\nimport { RestApiUserAddressType } from './RestApiUserAddressType';\r\n\r\n\r\nexport interface IRestApiUserAddressDTO \r\n{\r\n type?: RestApiUserAddressType;\r\n addressLine1?: string | null;\r\n addressLine2?: string | null;\r\n addressLine3?: string | null;\r\n city?: string | null;\r\n state?: string | null;\r\n stateAbbreviation?: string | null;\r\n postalCode?: string | null;\r\n country?: string | null;\r\n}\r\n\r\n\r\nexport class RestApiUserAddressDTO implements IRestApiUserAddressDTO \r\n{ \r\n // Class Properties \r\n type?: RestApiUserAddressType;\r\n addressLine1?: string | null;\r\n addressLine2?: string | null;\r\n addressLine3?: string | null;\r\n city?: string | null;\r\n state?: string | null;\r\n stateAbbreviation?: string | null;\r\n postalCode?: string | null;\r\n country?: string | null;\r\n \r\n // Constructor\r\n constructor(data?: IRestApiUserAddressDTO) \r\n {\r\n if (data) \r\n {\r\n for (var property in data) \r\n {\r\n if (data.hasOwnProperty(property))\r\n {\r\n (this as any)[property] = (data as any)[property];\r\n }\r\n }\r\n }\r\n }\r\n \r\n\r\n // Initialize the entity from a JSON object\r\n init(_data?: IRestApiUserAddressDTO) \r\n {\r\n if (_data) {\r\n \r\n this.type = _data[\"type\"];\r\n this.addressLine1 = _data[\"addressLine1\"];\r\n this.addressLine2 = _data[\"addressLine2\"];\r\n this.addressLine3 = _data[\"addressLine3\"];\r\n this.city = _data[\"city\"];\r\n this.state = _data[\"state\"];\r\n this.stateAbbreviation = _data[\"stateAbbreviation\"];\r\n this.postalCode = _data[\"postalCode\"];\r\n this.country = _data[\"country\"];\r\n }\r\n }\r\n \r\n\r\n // Retrieve the entity from a JSON object\r\n static fromJS(data: any): RestApiUserAddressDTO \r\n {\r\n data = typeof data === 'object' ? data : {};\r\n \r\n let result = new RestApiUserAddressDTO();\r\n \r\n result.init(data);\r\n\r\n return result;\r\n } \r\n\r\n // Convert the entity to a JSON object\r\n public toJSON(): any\r\n {\r\n return {\r\n type: this.type, \r\n addressLine1: this.addressLine1, \r\n addressLine2: this.addressLine2, \r\n addressLine3: this.addressLine3, \r\n city: this.city, \r\n state: this.state, \r\n stateAbbreviation: this.stateAbbreviation, \r\n postalCode: this.postalCode, \r\n country: this.country\r\n }; \r\n }\r\n} ","// Auto-Generated: '' \r\n// Creates all api endpoint tags, as well as a function to invalidate them\r\nimport { TagDescription } from \"@reduxjs/toolkit/query\";\r\nimport { baseRestApi as api } from \"../foundation/BaseApi\";\r\nimport ServiceStore from \"../../ServiceStore\";\r\n\r\nconst addTagTypes = [\r\n \"Cart\", \r\n \"ExampleEntities\", \r\n \"SuperComplex\", \r\n \"ComplexTag\", \r\n \"AnOptionalTag\", \r\n \"TheFirstTag\", \r\n \"TheSecondTag\", \r\n \"YetAnotherTag\", \r\n \"YetAnotherDifferentTag\", \r\n \"Images\", \r\n \"Orders\", \r\n \"ProductCategories\", \r\n \"Products\", \r\n \"UserAccount\", \r\n \"UserOperations\", \r\n \"USStates\"\r\n] as const;\r\n\r\n// Enhance the api with the tags\r\nconst enhancedRestApi = api\r\n .enhanceEndpoints({\r\n addTagTypes,\r\n });\r\n\r\n// Tags are now available on the api, and can be invalidated, using the functions below\r\n// Firstly, let's define some strongly typed keys for that purpose\r\nexport type TagTypesParameter =\r\n 'Cart' | \r\n 'ExampleEntities' | \r\n 'SuperComplex' | \r\n 'ComplexTag' | \r\n 'AnOptionalTag' | \r\n 'TheFirstTag' | \r\n 'TheSecondTag' | \r\n 'YetAnotherTag' | \r\n 'YetAnotherDifferentTag' | \r\n 'Images' | \r\n 'Orders' | \r\n 'ProductCategories' | \r\n 'Products' | \r\n 'UserAccount' | \r\n 'UserOperations' | \r\n 'USStates';\r\n\r\nexport type TagTypePayload = TagDescription<\r\n 'Cart' | \r\n 'ExampleEntities' | \r\n 'SuperComplex' | \r\n 'ComplexTag' | \r\n 'AnOptionalTag' | \r\n 'TheFirstTag' | \r\n 'TheSecondTag' | \r\n 'YetAnotherTag' | \r\n 'YetAnotherDifferentTag' | \r\n 'Images' | \r\n 'Orders' | \r\n 'ProductCategories' | \r\n 'Products' | \r\n 'UserAccount' | \r\n 'UserOperations' | \r\n 'USStates'>[];\r\n\r\n// Function to get tag type from string\r\nexport function getTagTypeFromString(tagName: string): TagTypesParameter | undefined\r\n{\r\n const tagTypes: TagTypesParameter[] = [\r\n 'Cart', \r\n 'ExampleEntities', \r\n 'SuperComplex', \r\n 'ComplexTag', \r\n 'AnOptionalTag', \r\n 'TheFirstTag', \r\n 'TheSecondTag', \r\n 'YetAnotherTag', \r\n 'YetAnotherDifferentTag', \r\n 'Images', \r\n 'Orders', \r\n 'ProductCategories', \r\n 'Products', \r\n 'UserAccount', \r\n 'UserOperations', \r\n 'USStates'\r\n ];\r\n\r\n if (tagTypes.includes(tagName as TagTypesParameter))\r\n {\r\n return tagName as TagTypesParameter;\r\n }\r\n\r\n return undefined;\r\n} \r\n\r\n// function to invalidate a tag from a string\r\nexport function invalidateTagFromString(tagName: string): void\r\n{\r\n const tagType = getTagTypeFromString(tagName);\r\n\r\n if (tagType)\r\n {\r\n InvalidateTag(tagType);\r\n }\r\n}\r\n\r\n// Invalidate a single or multiple tags\r\n const InvalidateTags = (tagKeys: TagTypesParameter | TagTypesParameter[]): void =>\r\n{\r\n if (Array.isArray(tagKeys) && tagKeys.length > 0) \r\n {\r\n tagKeys.forEach(tagKeyItm => InvalidateTag(tagKeyItm));\r\n\r\n return;\r\n }\r\n\r\n if (typeof tagKeys === 'string') \r\n {\r\n InvalidateTag(tagKeys as TagTypesParameter);\r\n\r\n return;\r\n }\r\n\r\n throw new Error(`Invalid argument type: ${typeof tagKeys}`);\r\n};\r\n\r\n// Invalidate a single tag\r\nconst InvalidateTag = (tagKey: TagTypesParameter): void =>\r\n{\r\n switch (tagKey)\r\n {\r\n case 'Cart':\r\n ServiceStore.dispatch(enhancedRestApi.util.invalidateTags([\"Cart\"] as const));\r\n return;\r\n\r\n case 'ExampleEntities':\r\n ServiceStore.dispatch(enhancedRestApi.util.invalidateTags([\"ExampleEntities\"] as const));\r\n return;\r\n\r\n case 'SuperComplex':\r\n ServiceStore.dispatch(enhancedRestApi.util.invalidateTags([\"SuperComplex\"] as const));\r\n return;\r\n\r\n case 'ComplexTag':\r\n ServiceStore.dispatch(enhancedRestApi.util.invalidateTags([\"ComplexTag\"] as const));\r\n return;\r\n\r\n case 'AnOptionalTag':\r\n ServiceStore.dispatch(enhancedRestApi.util.invalidateTags([\"AnOptionalTag\"] as const));\r\n return;\r\n\r\n case 'TheFirstTag':\r\n ServiceStore.dispatch(enhancedRestApi.util.invalidateTags([\"TheFirstTag\"] as const));\r\n return;\r\n\r\n case 'TheSecondTag':\r\n ServiceStore.dispatch(enhancedRestApi.util.invalidateTags([\"TheSecondTag\"] as const));\r\n return;\r\n\r\n case 'YetAnotherTag':\r\n ServiceStore.dispatch(enhancedRestApi.util.invalidateTags([\"YetAnotherTag\"] as const));\r\n return;\r\n\r\n case 'YetAnotherDifferentTag':\r\n ServiceStore.dispatch(enhancedRestApi.util.invalidateTags([\"YetAnotherDifferentTag\"] as const));\r\n return;\r\n\r\n case 'Images':\r\n ServiceStore.dispatch(enhancedRestApi.util.invalidateTags([\"Images\"] as const));\r\n return;\r\n\r\n case 'Orders':\r\n ServiceStore.dispatch(enhancedRestApi.util.invalidateTags([\"Orders\"] as const));\r\n return;\r\n\r\n case 'ProductCategories':\r\n ServiceStore.dispatch(enhancedRestApi.util.invalidateTags([\"ProductCategories\"] as const));\r\n return;\r\n\r\n case 'Products':\r\n ServiceStore.dispatch(enhancedRestApi.util.invalidateTags([\"Products\"] as const));\r\n return;\r\n\r\n case 'UserAccount':\r\n ServiceStore.dispatch(enhancedRestApi.util.invalidateTags([\"UserAccount\"] as const));\r\n return;\r\n\r\n case 'UserOperations':\r\n ServiceStore.dispatch(enhancedRestApi.util.invalidateTags([\"UserOperations\"] as const));\r\n return;\r\n\r\n case 'USStates':\r\n ServiceStore.dispatch(enhancedRestApi.util.invalidateTags([\"USStates\"] as const));\r\n return; \r\n }\r\n};\r\n\r\n// Invalidate all tags, effectively clearing the cache\r\nconst InvalidateAllTags = (): void =>\r\n{\r\n const allTags: TagTypesParameter[] =\r\n [\r\n \"Cart\", \r\n \"ExampleEntities\", \r\n \"SuperComplex\", \r\n \"ComplexTag\", \r\n \"AnOptionalTag\", \r\n \"TheFirstTag\", \r\n \"TheSecondTag\", \r\n \"YetAnotherTag\", \r\n \"YetAnotherDifferentTag\", \r\n \"Images\", \r\n \"Orders\", \r\n \"ProductCategories\", \r\n \"Products\", \r\n \"UserAccount\", \r\n \"UserOperations\", \r\n \"USStates\"\r\n ];\r\n\r\n InvalidateTags(allTags);\r\n};\r\n\r\n// Encapsulate individual invalidation functions in the RestApiInvalidator object\r\nexport const RestApiCacheInvalidator = \r\n{\r\n GetTagFromString: getTagTypeFromString,\r\n InvalidateTagFromString: invalidateTagFromString,\r\n \r\n InvalidateRestApiTags: InvalidateTags,\r\n InvalidateRestApiTag: InvalidateTag,\r\n ClearRestApiCache: InvalidateAllTags, \r\n \r\n InvalidateRestApiCartCache: () => InvalidateTag(\"Cart\"),\r\n InvalidateRestApiExampleEntitiesCache: () => InvalidateTag(\"ExampleEntities\"),\r\n InvalidateRestApiSuperComplexCache: () => InvalidateTag(\"SuperComplex\"),\r\n InvalidateRestApiComplexTagCache: () => InvalidateTag(\"ComplexTag\"),\r\n InvalidateRestApiAnOptionalTagCache: () => InvalidateTag(\"AnOptionalTag\"),\r\n InvalidateRestApiTheFirstTagCache: () => InvalidateTag(\"TheFirstTag\"),\r\n InvalidateRestApiTheSecondTagCache: () => InvalidateTag(\"TheSecondTag\"),\r\n InvalidateRestApiYetAnotherTagCache: () => InvalidateTag(\"YetAnotherTag\"),\r\n InvalidateRestApiYetAnotherDifferentTagCache: () => InvalidateTag(\"YetAnotherDifferentTag\"),\r\n InvalidateRestApiImagesCache: () => InvalidateTag(\"Images\"),\r\n InvalidateRestApiOrdersCache: () => InvalidateTag(\"Orders\"),\r\n InvalidateRestApiProductCategoriesCache: () => InvalidateTag(\"ProductCategories\"),\r\n InvalidateRestApiProductsCache: () => InvalidateTag(\"Products\"),\r\n InvalidateRestApiUserAccountCache: () => InvalidateTag(\"UserAccount\"),\r\n InvalidateRestApiUserOperationsCache: () => InvalidateTag(\"UserOperations\"),\r\n InvalidateRestApiUSStatesCache: () => InvalidateTag(\"USStates\") \r\n};\r\n\r\nconst EnhancedRestApi = enhancedRestApi;\r\n\r\n// Export the enhanced 'RestApi' api\r\nexport default EnhancedRestApi;","// Auto-Generated: '' \r\nimport * as React from 'react';\r\nimport { useCallback } from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\n// API and Tag imports\r\nimport Api from './RestApiEnhanced';\r\nimport { TagTypesParameter, TagTypePayload } from './RestApiEnhanced';\r\n\r\n// Define the custom hook\r\nconst useRestApiInvalidateTags = () =>\r\n{\r\n const dispatch = useDispatch();\r\n\r\n const getInvalidateTagPayload = (tagKey: TagTypesParameter): TagTypePayload =>\r\n {\r\n switch (tagKey)\r\n {\r\n case 'Cart':\r\n return Api.util.invalidateTags([\"Cart\"] as const).payload;\r\n case 'ExampleEntities':\r\n return Api.util.invalidateTags([\"ExampleEntities\"] as const).payload;\r\n case 'SuperComplex':\r\n return Api.util.invalidateTags([\"SuperComplex\"] as const).payload;\r\n case 'ComplexTag':\r\n return Api.util.invalidateTags([\"ComplexTag\"] as const).payload;\r\n case 'AnOptionalTag':\r\n return Api.util.invalidateTags([\"AnOptionalTag\"] as const).payload;\r\n case 'TheFirstTag':\r\n return Api.util.invalidateTags([\"TheFirstTag\"] as const).payload;\r\n case 'TheSecondTag':\r\n return Api.util.invalidateTags([\"TheSecondTag\"] as const).payload;\r\n case 'YetAnotherTag':\r\n return Api.util.invalidateTags([\"YetAnotherTag\"] as const).payload;\r\n case 'YetAnotherDifferentTag':\r\n return Api.util.invalidateTags([\"YetAnotherDifferentTag\"] as const).payload;\r\n case 'Images':\r\n return Api.util.invalidateTags([\"Images\"] as const).payload;\r\n case 'Orders':\r\n return Api.util.invalidateTags([\"Orders\"] as const).payload;\r\n case 'ProductCategories':\r\n return Api.util.invalidateTags([\"ProductCategories\"] as const).payload;\r\n case 'Products':\r\n return Api.util.invalidateTags([\"Products\"] as const).payload;\r\n case 'UserAccount':\r\n return Api.util.invalidateTags([\"UserAccount\"] as const).payload;\r\n case 'UserOperations':\r\n return Api.util.invalidateTags([\"UserOperations\"] as const).payload;\r\n case 'USStates':\r\n return Api.util.invalidateTags([\"USStates\"] as const).payload; \r\n }\r\n };\r\n\r\n // Function to invalidate a tag\r\n const invalidateTags = useCallback((tagKey: TagTypesParameter) =>\r\n {\r\n // Dispatch the action to invalidate the tag\r\n dispatch(Api.util.invalidateTags(getInvalidateTagPayload(tagKey)));\r\n }, []);\r\n\r\n return {\r\n invalidateTags,\r\n };\r\n};\r\n\r\n// Export the 'useRestApiInvalidateTags' hook\r\nexport default useRestApiInvalidateTags;","import { notNullOrUndefined } from '../../utilities/Utils';\r\nimport { HttpMethod } from '../httpTypes';\r\n\r\nexport const fetchData = async (\r\n url: string,\r\n method: HttpMethod,\r\n jwtToken: string | null = null,\r\n body: BodyInit | null = null,\r\n): Promise => {\r\n const headers: HeadersInit = {\r\n 'Content-Type': 'application/json',\r\n };\r\n\r\n // Add the Authorization header if a token is provided\r\n if (notNullOrUndefined(jwtToken)) {\r\n headers['Authorization'] = `Bearer ${jwtToken}`;\r\n }\r\n\r\n const fetchOptions = {\r\n method: method,\r\n headers: headers,\r\n body: body ? JSON.stringify(body) : null,\r\n };\r\n\r\n try {\r\n return await fetch(url, fetchOptions);\r\n }\r\n catch (error) {\r\n console.error('Fetch error:', error);\r\n\r\n throw error; // Re-throw the error for further handling if necessary\r\n }\r\n};\r\n\r\nexport const fetchDataFor = (\r\n url: string,\r\n method: HttpMethod,\r\n data: T,\r\n jwtToken: string | null = null,\r\n): Promise => {\r\n const jsonBody = JSON.stringify(data);\r\n\r\n return fetchData(url, method, jwtToken, jsonBody);\r\n};\r\n","import dayjs from \"dayjs\";\r\nimport { IAuthUser, IJwtToken, ILoginResponse, IUserTokens, JwtTokenType } from \"../../../types/authenticationTypes\";\r\nimport { SessionStorage } from \"../../../types/storage/SessionStorage\";\r\nimport { isNullOrUndefined, notNullOrUndefined } from \"../../../utilities/Utils\";\r\nimport { QueryTokenType } from \"./BaseTypes\";\r\nimport { fetchData } from \"../../../types/extensions/fetchExtensions\";\r\nimport { jwtDecode } from \"jwt-decode\";\r\nimport { useAuth } from \"../../../providers/AuthProvider\";\r\n\r\nconst parseTokenLocal = async (data: any): Promise =>\r\n{\r\n if (\r\n notNullOrUndefined(data?.type) &&\r\n notNullOrUndefined(data?.expiration) &&\r\n notNullOrUndefined(data?.value)\r\n )\r\n {\r\n return {\r\n type: 'RefreshToken',\r\n expiration: dayjs(data.expiration,).toDate(),\r\n value: data.value,\r\n header: jwtDecode(data.value, {\r\n header: true,\r\n }),\r\n payload: jwtDecode(data.value),\r\n };\r\n }\r\n\r\n return null;\r\n};\r\n\r\nconst hasConfiguration = (): boolean =>\r\n{\r\n if (\r\n window.AppConfiguration &&\r\n window.AppConfiguration.data &&\r\n (window.AppConfiguration.data as any)?.endpoints\r\n )\r\n {\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\nconst getAPIMethodEndpoint = (\r\n controller: string,\r\n action: string,\r\n): string =>\r\n{\r\n if (hasConfiguration())\r\n {\r\n const config: any =\r\n window.AppConfiguration?.data;\r\n\r\n try\r\n {\r\n return config.endpoints[ controller ]\r\n .methods[ action ].endpointUrl;\r\n }\r\n catch (error)\r\n {\r\n console.error(\r\n `Error retrieving API endpoint for controller '${controller}' and action '${action}'. Maybe the method was not exposed in the server?`,\r\n error,\r\n );\r\n }\r\n }\r\n return '';\r\n};\r\n\r\nconst attemptToRefreshToken = async (data: ILoginResponse | null): Promise =>\r\n{\r\n if (!data?.user?.email || isNullOrUndefined(data?.user.email))\r\n {\r\n return 'NotAvailable';\r\n }\r\n\r\n if (!data?.tokens?.accessToken?.value || isNullOrUndefined(data.tokens.accessToken.value))\r\n {\r\n return 'NotAvailable';\r\n }\r\n\r\n if (dayjs().isAfter(dayjs(data.tokens.accessToken.expiration).add(-1, \"day\"))) //(token!.isExpired())\r\n {\r\n console.error(`Refreshing the request token bearer, requires a valid, current access token, but the retrieved token is expired. Try to re-login.`);\r\n\r\n return 'Expired';\r\n }\r\n\r\n const refreshTokenUrl = getAPIMethodEndpoint(\"UserOperations\", \"GetNewRefreshToken\");\r\n\r\n const response = await fetchData(`${refreshTokenUrl}?userEmail=${data.user.email}`, 'GET', data.tokens.accessToken.value);\r\n\r\n if (response.status === 200)\r\n {\r\n const newTokenJson: any = await response.json();\r\n const newToken: IJwtToken | null = await parseTokenLocal(newTokenJson);\r\n const testValue = newTokenJson.value;\r\n\r\n if (notNullOrUndefined(newToken?.value))\r\n {\r\n const storage = new SessionStorage('UserLogin');\r\n\r\n data.tokens.refreshToken = newToken;\r\n\r\n storage.update(data)\r\n\r\n return newToken!.value;\r\n }\r\n }\r\n\r\n return 'NotAvailable';\r\n};\r\n\r\nexport const assertQueryToken = async (tokenType: QueryTokenType | undefined | null): Promise =>\r\n{\r\n const storage = new SessionStorage('UserLogin');\r\n const tokensStorage = new SessionStorage('UserTokens');\r\n const storedData = storage.retrieve();\r\n\r\n if (isNullOrUndefined(tokenType) || tokenType === 'None')\r\n {\r\n return '';\r\n }\r\n\r\n let token = tokenType === 'AccessToken'\r\n ? storedData?.tokens?.accessToken\r\n : storedData?.tokens?.refreshToken;\r\n\r\n if (!token || isNullOrUndefined(token?.value))\r\n {\r\n const storedTokens = tokensStorage.retrieve();\r\n\r\n token = tokenType === 'AccessToken'\r\n ? storedTokens?.accessToken\r\n : storedTokens?.refreshToken;\r\n }\r\n\r\n if (!token || isNullOrUndefined(token?.value))\r\n {\r\n console.error(`request requires token of type: '${tokenType}' but the token was null or undefined.`);\r\n\r\n return 'NotAvailable';\r\n }\r\n\r\n const isExpired: boolean = dayjs().isAfter(dayjs(token.expiration).add(-15, \"minute\"));\r\n\r\n //if (isExpired || true) //\r\n if (isExpired)\r\n {\r\n try\r\n {\r\n const newToken = await attemptToRefreshToken(storedData);\r\n\r\n if (newToken !== 'NotAvailable' && newToken !== 'Expired')\r\n {\r\n return newToken;\r\n }\r\n }\r\n catch (error)\r\n {\r\n console.error(`Error while trying to refresh token: ${error}`);\r\n }\r\n\r\n console.error(`request requires a valid, current token of type: '${tokenType}' but the retrieved token is expired.`);\r\n\r\n return 'Expired';\r\n }\r\n\r\n return token!.value;\r\n};","import { BaseQueryFn, FetchArgs, createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react';\r\n\r\nimport { BaseQueryErrorType, IJwtBaseQueryOptions, IJwtBaseQueryMeta } from './BaseTypes';\r\nimport { JwtBaseQuery } from './BaseApiQuery';\r\n\r\n// export const baseGenApi = createApi({\r\n// reducerPath: 'baseGenApi',\r\n// baseQuery: fetchBaseQuery({ baseUrl: 'https://localhost:5520/' }),\r\n// endpoints: () => ({}), // No endpoints initially\r\n// });\r\n\r\n//Define the base API slice\r\n// export const baseRestApi = createApi({\r\n// reducerPath: 'baseRestApi',\r\n// baseQuery: BaseApiQuery,\r\n// endpoints: () => ({}), // No endpoints initially\r\n// });\r\n\r\nexport const baseRestApi = createApi({\r\n reducerPath: 'baseRestApi',\r\n baseQuery: JwtBaseQuery, //fetchBaseQuery({ baseUrl: 'https://localhost:5520/' }),\r\n endpoints: () => ({}), // No endpoints initially\r\n});\r\n\r\n\r\n","import { BaseQueryApi, FetchArgs, FetchBaseQueryError, FetchBaseQueryMeta } from \"@reduxjs/toolkit/query\";\r\nimport { ILoginResponse } from \"../../../types/authenticationTypes\";\r\nimport { fetchData } from \"../../../types/extensions/fetchExtensions\";\r\nimport { HttpMethod } from \"../../../types/httpTypes\";\r\nimport { SessionStorage } from \"../../../types/storage/SessionStorage\";\r\nimport { isNullOrUndefined, notNullOrUndefined } from \"../../../utilities/Utils\";\r\nimport { BaseQueryErrorType, IJwtBaseQueryOptions, IJwtBaseQueryMeta, QueryNotificationType } from \"./BaseTypes\";\r\nimport { assertQueryToken } from \"./BaseApiQueryUtils\";\r\nimport { getFullUrl } from \"../../../providers/ConfigurationProvider\";\r\nimport { BaseQueryFn, QueryReturnValue } from \"@reduxjs/toolkit/dist/query/baseQueryTypes\";\r\nimport { MaybePromise } from \"@reduxjs/toolkit/dist/query/tsHelpers\";\r\n\r\nconst showNotification = (notificationType?: QueryNotificationType | null) =>\r\n{\r\n if (isNullOrUndefined(notificationType) || notificationType === 'None')\r\n {\r\n return;\r\n }\r\n}\r\n\r\nconst hideNotification = (notificationType?: QueryNotificationType | null) =>\r\n{\r\n if (isNullOrUndefined(notificationType) || notificationType === 'None')\r\n {\r\n return;\r\n }\r\n}\r\n\r\nexport const JwtBaseQuery: BaseQueryFn<\r\n FetchArgs, // Args\r\n unknown, // Result\r\n BaseQueryErrorType, // Error\r\n IJwtBaseQueryOptions, // Custom Query Type\r\n IJwtBaseQueryMeta // Meta\r\n> = async (arg, api, extraOptions) =>\r\n {\r\n const endpointUrl = arg.url;\r\n const meta = { timestamp: Date.now() };\r\n\r\n //console.log(`Attempting to execute JWT Base Query: ${endpointUrl}`);\r\n\r\n try\r\n {\r\n const token = await assertQueryToken(extraOptions.tokenType);\r\n\r\n if (token === 'NotAvailable')\r\n {\r\n return {\r\n error: { inner: `Token ${token}; Cannot Execute Fetch`, reason: `JWT Token was required, but couldn't be found` },\r\n meta\r\n };\r\n }\r\n\r\n if (token === 'Expired')\r\n {\r\n return {\r\n error: { inner: `Token ${token}; Cannot Execute Fetch`, reason: `A valid JWT Token was required, but the one available was expired` },\r\n meta\r\n };\r\n }\r\n\r\n const fetchMethod: HttpMethod = notNullOrUndefined(arg.method) ? arg.method?.toUpperCase() as HttpMethod : 'GET';\r\n const bodyRequest = notNullOrUndefined(arg.body) ? arg.body : undefined;\r\n\r\n const response = await fetchData(endpointUrl, fetchMethod, token, bodyRequest);\r\n\r\n const data = await response.json();\r\n\r\n if (!response.ok)\r\n {\r\n console.error(`JWT Base Query HTTP error: ${response.status}, '${response.statusText}'`, response);\r\n\r\n throw new Error(`HTTP error, status = ${response.status}`);\r\n }\r\n\r\n return { data, meta };\r\n }\r\n catch (fetchError)\r\n {\r\n console.error(`JWT Base Query Error: ${fetchError}`);\r\n\r\n return {\r\n error: { inner: fetchError, reason: `Error in RTK Fetch Query. Controller: '${extraOptions.controller}', Action: '${extraOptions.action}', TokenType: '${extraOptions.tokenType}'` },\r\n meta // Include meta also in error case\r\n };\r\n }\r\n };\r\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\r\nimport { IRestApiProductDTO } from '../api/Generated/Entities/RestApiProductDTO';\r\nimport { ServiceStoreState } from '../ServiceStore';\r\nimport { SessionStorage } from '../../types/storage/SessionStorage';\r\nimport { IRestApiProductColorDTO } from '../api/Generated/Entities/RestApiProductColorDTO';\r\n\r\nexport interface ICartItemId\r\n{\r\n productId: string;\r\n colorId: string;\r\n}\r\n\r\nexport interface ICartItem\r\n{\r\n id: ICartItemId;\r\n selectedProduct: IRestApiProductDTO;\r\n selectedColor: IRestApiProductColorDTO;\r\n quantity: number;\r\n checked: boolean;\r\n}\r\n\r\nexport interface ICartState\r\n{\r\n items: ICartItem[];\r\n}\r\n\r\nconst sessionStorage = new SessionStorage('CartItems');\r\n\r\nconst getItemsFromStorage = (): ICartItem[] =>\r\n{\r\n const items = sessionStorage.retrieve();\r\n return items ? items : [];\r\n}\r\n\r\nconst saveItemsToStorage = (items: ICartItem[]) =>\r\n{\r\n sessionStorage.update(items);\r\n}\r\n\r\nconst initialState: ICartState = {\r\n items: getItemsFromStorage()\r\n};\r\n\r\nconst saveStateToSessionStorage = (state: ICartState) =>\r\n{\r\n saveItemsToStorage(state.items);\r\n};\r\n\r\nexport const CartSlice = createSlice({\r\n name: 'cart',\r\n initialState,\r\n reducers: {\r\n addItemToCart: (state, action: PayloadAction) =>\r\n {\r\n const item = state.items.find(i =>\r\n i.id.productId === action.payload.id.productId &&\r\n i.id.colorId === action.payload.id.colorId\r\n );\r\n\r\n if (item)\r\n {\r\n item.quantity += action.payload.quantity;\r\n }\r\n else\r\n {\r\n state.items.push(action.payload);\r\n }\r\n\r\n saveStateToSessionStorage(state);\r\n },\r\n\r\n removeItemFromCart: (state, action: PayloadAction) =>\r\n {\r\n state.items = state.items.filter(i =>\r\n i.id.productId !== action.payload.productId ||\r\n i.id.colorId !== action.payload.colorId\r\n );\r\n\r\n saveStateToSessionStorage(state);\r\n },\r\n\r\n increaseItemQuantity: (state, action: PayloadAction) =>\r\n {\r\n const item = state.items.find(i =>\r\n i.id.productId === action.payload.productId &&\r\n i.id.colorId === action.payload.colorId\r\n );\r\n\r\n if (item)\r\n {\r\n item.quantity += 1;\r\n }\r\n\r\n saveStateToSessionStorage(state);\r\n },\r\n\r\n decreaseItemQuantity: (state, action: PayloadAction) =>\r\n {\r\n const item = state.items.find(i =>\r\n i.id.productId === action.payload.productId &&\r\n i.id.colorId === action.payload.colorId\r\n );\r\n\r\n if (item && item.quantity > 1)\r\n {\r\n item.quantity -= 1;\r\n }\r\n\r\n saveStateToSessionStorage(state);\r\n },\r\n\r\n markItem: (state, action: PayloadAction) =>\r\n {\r\n const item = state.items.find(i =>\r\n i.id.productId === action.payload.productId &&\r\n i.id.colorId === action.payload.colorId\r\n );\r\n\r\n if (item && !item.checked)\r\n {\r\n item.checked = true;\r\n }\r\n\r\n saveStateToSessionStorage(state);\r\n },\r\n\r\n unmarkItem: (state, action: PayloadAction) =>\r\n {\r\n const item = state.items.find(i =>\r\n i.id.productId === action.payload.productId &&\r\n i.id.colorId === action.payload.colorId\r\n );\r\n\r\n if (item && item.checked)\r\n {\r\n item.checked = false;\r\n }\r\n\r\n saveStateToSessionStorage(state);\r\n },\r\n\r\n setItemQuantity: (state, action: PayloadAction<{ id: ICartItemId, quantity: number }>) =>\r\n {\r\n const item = state.items.find(i =>\r\n i.id.productId === action.payload.id.productId &&\r\n i.id.colorId === action.payload.id.colorId\r\n );\r\n\r\n if (item)\r\n {\r\n const newQuantity = Math.max(1, Math.min(action.payload.quantity, item.selectedProduct.stockQuantity!));\r\n item.quantity = newQuantity;\r\n }\r\n\r\n saveStateToSessionStorage(state);\r\n },\r\n\r\n clearCart: (state) =>\r\n {\r\n state.items = [];\r\n\r\n saveStateToSessionStorage(state);\r\n },\r\n },\r\n});\r\n\r\nexport const {\r\n addItemToCart,\r\n removeItemFromCart,\r\n increaseItemQuantity,\r\n decreaseItemQuantity,\r\n setItemQuantity,\r\n markItem,\r\n unmarkItem,\r\n clearCart,\r\n} = CartSlice.actions;\r\n\r\nexport const selectCartItems = (state: ServiceStoreState): ICartItem[] => state.cart.items;\r\nexport const selectCartQuantity = (state: ServiceStoreState): number =>\r\n state.cart.items.reduce((total: number, item: ICartItem) => total + item.quantity, 0);\r\n\r\nexport default CartSlice.reducer;\r\n","import {\r\n createSlice,\r\n PayloadAction,\r\n} from '@reduxjs/toolkit';\r\n\r\nexport interface IConfigurationData {\r\n data: null | JSON;\r\n valid: boolean;\r\n error?: string;\r\n}\r\n\r\nexport class ConfigurationData\r\nimplements IConfigurationData {\r\n data: null | JSON = null;\r\n valid: boolean = false;\r\n error?: string = '';\r\n}\r\n\r\nexport const ConfigurationSlice = createSlice({\r\n name: 'configuration',\r\n initialState: new ConfigurationData(),\r\n reducers: {\r\n loadConfiguration: (\r\n state: IConfigurationData,\r\n action: PayloadAction,\r\n ) => {\r\n const newState = new ConfigurationData();\r\n\r\n newState.data = action.payload.data;\r\n newState.error = action.payload.error;\r\n newState.valid = action.payload.valid;\r\n\r\n window.AppConfiguration = newState;\r\n\r\n return newState;\r\n },\r\n },\r\n});\r\n\r\nexport const { loadConfiguration } =\r\n ConfigurationSlice.actions;\r\n\r\nexport default ConfigurationSlice.reducer;\r\n","import {\r\n createSlice,\r\n PayloadAction,\r\n} from '@reduxjs/toolkit';\r\n\r\ninterface ILoadingControlState {\r\n isVisible: boolean;\r\n message: string | null;\r\n}\r\n\r\nconst initialState: ILoadingControlState = {\r\n isVisible: false,\r\n message: null,\r\n};\r\n\r\nexport const LoadingControlSlice = createSlice({\r\n name: 'loadingControl',\r\n initialState: initialState,\r\n reducers: {\r\n showDialog: (\r\n state,\r\n action: PayloadAction,\r\n ) => {\r\n return {\r\n isVisible: true,\r\n message: action.payload,\r\n };\r\n },\r\n hideDialog: (state) => {\r\n return {\r\n isVisible: false,\r\n message: state.message,\r\n };\r\n },\r\n setMessage: (\r\n state,\r\n action: PayloadAction,\r\n ) => {\r\n return {\r\n isVisible: state.isVisible,\r\n message: action.payload,\r\n };\r\n },\r\n clearMessage: (state) => {\r\n return {\r\n isVisible: state.isVisible,\r\n message: null,\r\n };\r\n },\r\n },\r\n});\r\n\r\nexport const {\r\n showDialog,\r\n hideDialog,\r\n setMessage,\r\n clearMessage,\r\n} = LoadingControlSlice.actions;\r\nexport default LoadingControlSlice.reducer;\r\n","import md5 from 'md5';\r\nimport {\r\n isNullOrUndefinedOrEmpty,\r\n notNullOrUndefined,\r\n} from '../utilities/Utils';\r\nimport { getContrastingColor } from '@uiw/react-color';\r\n\r\nexport const getAvatar = (\r\n source: string[] | string | undefined | null,\r\n) => {\r\n const stringHash = getStringFromParts(source);\r\n const bgColour = convertMD5ToColor(stringHash);\r\n const txtColour = getContrastingColor(bgColour);\r\n\r\n return {\r\n sx: {\r\n color: txtColour,\r\n bgcolor: bgColour,\r\n },\r\n children: getAvatarStyleParts(source),\r\n };\r\n};\r\n\r\n// Main function combining all steps\r\nconst getAvatarStyleParts = (\r\n source: string[] | string | undefined | null,\r\n): string[] => {\r\n let result: string[] = [];\r\n\r\n if (Array.isArray(source)) {\r\n // return 'array';\r\n result = handleArray(\r\n (result = source as string[]),\r\n );\r\n }\r\n\r\n if (typeof source === 'string') {\r\n const stringResult = handleString(\r\n source as string,\r\n );\r\n\r\n result = pushIfNotNull(result, stringResult);\r\n }\r\n\r\n // check result, return it if it has at least one element. If it has more than one, return the top most two\r\n // if it doesn't have any elements, return ['U']\r\n if (result.length === 0) {\r\n return ['U'];\r\n }\r\n\r\n return result.slice(0, 2);\r\n};\r\n\r\nconst handleArray = (source: string[]): string[] => {\r\n let result: string[] = [];\r\n\r\n for (const str of source) {\r\n const extractedChars = handleString(str);\r\n\r\n result = pushIfNotNull(result, extractedChars);\r\n }\r\n\r\n return result;\r\n};\r\n\r\nconst handleString = (parts: string): string[] | null => {\r\n if (isNullOrUndefinedOrEmpty(parts)) {\r\n return null;\r\n }\r\n\r\n const firstChar = parts.trim()[0].toUpperCase();\r\n\r\n if (firstChar.match(/[A-Za-z0-9]/)) {\r\n return [firstChar];\r\n }\r\n\r\n return null;\r\n};\r\n\r\nconst pushIfNotNull = (\r\n sourceArray: string[],\r\n target: string[] | null,\r\n): string[] => {\r\n if (!sourceArray || !target) {\r\n return sourceArray;\r\n }\r\n\r\n return sourceArray\r\n .concat(target)\r\n .filter((element) => element !== null);\r\n};\r\n\r\n// function convertStringToColor(string: string)\r\n// {\r\n// let hash = 0;\r\n// let i;\r\n\r\n// /* eslint-disable no-bitwise */\r\n// for (i = 0; i < string.length; i += 1)\r\n// {\r\n// hash = string.charCodeAt(i) + ((hash << 5) - hash);\r\n// }\r\n\r\n// let color = '#';\r\n\r\n// for (i = 0; i < 3; i += 1)\r\n// {\r\n// const value = (hash >> (i * 8)) & 0xff;\r\n// color += `00${value.toString(16)}`.slice(-2);\r\n// }\r\n// /* eslint-enable no-bitwise */\r\n\r\n// return color;\r\n// }\r\n\r\nfunction convertMD5ToColor(md5Hash: string): string {\r\n // Ensure the MD5 hash has a consistent length\r\n md5Hash = md5Hash.padEnd(32, '0');\r\n\r\n // Convert the first 6 characters of the MD5 hash to RGB values\r\n const r = parseInt(md5Hash.substring(0, 2), 16);\r\n const g = parseInt(md5Hash.substring(2, 4), 16);\r\n const b = parseInt(md5Hash.substring(4, 6), 16);\r\n\r\n // Convert RGB values to a hexadecimal color code\r\n const color = `#${((r << 16) | (g << 8) | b).toString(16).padStart(6, '0')}`;\r\n\r\n return color;\r\n}\r\n\r\nconst getStringFromParts = (\r\n source: string[] | string | undefined | null,\r\n): string => {\r\n let result = '';\r\n\r\n if (Array.isArray(source)) {\r\n for (const str of source) {\r\n const extractedChars = handleString(str);\r\n\r\n if (notNullOrUndefined(extractedChars)) {\r\n result = `${result}${extractedChars}`;\r\n }\r\n }\r\n }\r\n\r\n if (typeof source === 'string') {\r\n const stringResult = handleString(source);\r\n\r\n if (notNullOrUndefined(stringResult)) {\r\n result = `${result}${stringResult}`;\r\n }\r\n }\r\n\r\n if (isNullOrUndefinedOrEmpty(result)) {\r\n result = 'U';\r\n }\r\n\r\n return md5(result);\r\n};\r\n","import { ThemeMode, IThemeSettings } from './ThemeTypes';\r\n\r\nexport const DEFAULT_MODE: ThemeMode = 'Light';\r\n\r\nexport const DEFAULT_PRIMARY_COLOR: string = '#2D4963';\r\nexport const DEFAULT_SECONDARY_COLOR: string = '#D4AF37';\r\nexport const DEFAULT_TERTIARY_COLOR: string = '#800080';\r\n\r\nexport const DefaultThemeSettings: IThemeSettings = {\r\n mode: DEFAULT_MODE,\r\n primaryColor: DEFAULT_PRIMARY_COLOR,\r\n secondaryColor: DEFAULT_SECONDARY_COLOR,\r\n tertiaryColor: DEFAULT_TERTIARY_COLOR,\r\n};\r\n","import * as React from 'react';\r\nimport { useState, useEffect } from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\n\r\nimport { ThemeProvider, Theme } from '@mui/material/styles';\r\n\r\nimport CssBaseline from '@mui/material/CssBaseline';\r\n\r\nimport { ServiceStoreState } from '../stores/ServiceStore';\r\nimport * as ThemeUtils from './ThemeUtilities';\r\nimport { useCookies } from 'react-cookie';\r\nimport { IThemeSettings } from './ThemeTypes';\r\nimport { DefaultThemeSettings } from './ThemeDefaults';\r\n\r\ninterface IThemeManagerProps\r\n{\r\n children:\r\n | React.JSX.Element\r\n | React.JSX.Element[]\r\n | null;\r\n}\r\n\r\nconst ThemeManager: React.FC = (\r\n props: IThemeManagerProps = { children: null },\r\n) =>\r\n{\r\n const themeState = useSelector(\r\n (state: ServiceStoreState) => state.theming,\r\n );\r\n const [ themeSettings, setThemeSettings ] =\r\n useState(DefaultThemeSettings);\r\n const [ currentTheme, setCurrentTheme ] =\r\n useState(\r\n ThemeUtils.GetThemeFromSettingsOrDefaults(\r\n themeSettings,\r\n ),\r\n );\r\n const [\r\n themeCookie,\r\n setThemeCookie,\r\n removeThemeCookie,\r\n ] = useCookies([ 'cookie-theme' ]);\r\n\r\n useEffect(() =>\r\n {\r\n const newSettings =\r\n ThemeUtils.GetSettingsOrDefaults(\r\n themeState.settings,\r\n );\r\n const newThemeState =\r\n ThemeUtils.GetThemeFromSettingsOrDefaults(\r\n newSettings,\r\n );\r\n\r\n setCurrentTheme(newThemeState);\r\n\r\n }, [ themeState ]);\r\n\r\n useEffect(() =>\r\n {\r\n // monitor cookie\r\n }, [ themeCookie ]);\r\n\r\n return (\r\n \r\n \r\n { props.children }\r\n \r\n );\r\n};\r\nexport default ThemeManager;\r\n","import\r\n{\r\n PaletteColor,\r\n PaletteMode,\r\n ThemeOptions,\r\n Theme,\r\n} from '@mui/material';\r\nimport {createTheme} from '@mui/material/styles';\r\n\r\nimport {blue, green, grey, purple, red, yellow} from '@mui/material/colors';\r\n\r\nimport {isNullOrUndefined} from '../utilities/Utils';\r\nimport\r\n{\r\n DEFAULT_MODE,\r\n DEFAULT_PRIMARY_COLOR,\r\n DEFAULT_SECONDARY_COLOR,\r\n DEFAULT_TERTIARY_COLOR,\r\n DefaultThemeSettings,\r\n} from './ThemeDefaults';\r\nimport\r\n{\r\n IPaletteColorGraduationHues,\r\n IThemeSettings,\r\n ThemeMode,\r\n} from './ThemeTypes';\r\nimport {Margin, Padding} from '@mui/icons-material';\r\n\r\nconst emptyTheme: Theme = createTheme();\r\n\r\nexport const GetThemeFromSettingsOrDefaults = (\r\n settings: IThemeSettings | null,\r\n): Theme =>\r\n{\r\n const retVal =\r\n settings == null\r\n ? DefaultThemeSettings\r\n : settings;\r\n\r\n const paletteMode: PaletteMode =\r\n getThemeModeOrDefault(\r\n retVal.mode,\r\n DEFAULT_MODE,\r\n ) as PaletteMode;\r\n\r\n const primaryColor = augmentColor(\r\n 'primary',\r\n DEFAULT_PRIMARY_COLOR,\r\n );\r\n const secondaryColor = augmentColor(\r\n 'secondary',\r\n DEFAULT_SECONDARY_COLOR,\r\n );\r\n const tertiaryColor = augmentColor(\r\n 'tertiary',\r\n DEFAULT_TERTIARY_COLOR,\r\n false,\r\n );\r\n\r\n const defaultTheme: Theme = createTheme({\r\n palette: {\r\n mode: paletteMode,\r\n primary: primaryColor,\r\n secondary: secondaryColor,\r\n tertiary: tertiaryColor,\r\n primaryLightVariant: augmentColor(\r\n 'primaryLightVariant',\r\n primaryColor.light,\r\n ),\r\n primaryDarkVariant: augmentColor(\r\n 'primaryDarkVariant',\r\n primaryColor.dark,\r\n ),\r\n secondaryLightVariant: augmentColor(\r\n 'secondaryLightVariant',\r\n secondaryColor.light,\r\n ),\r\n secondaryDarkVariant: augmentColor(\r\n 'secondaryDarkVariant',\r\n secondaryColor.dark,\r\n ),\r\n tertiaryLightVariant: augmentColor(\r\n 'tertiaryLightVariant',\r\n tertiaryColor.light,\r\n ),\r\n tertiaryDarkVariant: augmentColor(\r\n 'tertiaryDarkVariant',\r\n tertiaryColor.dark,\r\n ),\r\n background: {\r\n default: paletteMode === 'light' ? grey[200] : grey[800],\r\n },\r\n commonColors: {\r\n Gray: generateColorGraduations(grey, paletteMode),\r\n Blue: generateColorGraduations(blue, paletteMode),\r\n Red: generateColorGraduations(red, paletteMode),\r\n Green: generateColorGraduations(green, paletteMode),\r\n Purple: generateColorGraduations(purple, paletteMode),\r\n Yellow: generateColorGraduations(yellow, paletteMode),\r\n // Add more color groups as needed \r\n },\r\n },\r\n typography: {\r\n fontFamily: `VAGRoundedStd,'Helvetica Neue', Helvetica, Arial, sans-serif`,\r\n },\r\n components: {\r\n MuiButton: {\r\n styleOverrides: {\r\n root: {\r\n Padding: 0,\r\n Margin: 0,\r\n borderRadius: 0,\r\n textTransform: 'none',\r\n },\r\n },\r\n },\r\n MuiPaper: {\r\n styleOverrides: {\r\n root: {\r\n backgroundColor:\r\n paletteMode === 'light' ? grey[100] : grey[900],\r\n padding: '16px',\r\n borderRadius: '1px',\r\n },\r\n },\r\n },\r\n MuiLink: {\r\n styleOverrides: {\r\n root: {\r\n color: paletteMode === 'light' ? blue[500] : blue[200],\r\n textDecoration: 'none', // Remove underline by default\r\n '&:hover': {\r\n textDecoration:\r\n 'underline', // Underline on hover\r\n color: secondaryColor.light, // Change color on hover\r\n },\r\n },\r\n },\r\n },\r\n },\r\n });\r\n\r\n return defaultTheme;\r\n};\r\n\r\nexport const GetSettingsOrDefaults = (\r\n settings: IThemeSettings | null | undefined,\r\n): IThemeSettings =>\r\n{\r\n return settings == null\r\n ? DefaultThemeSettings\r\n : settings;\r\n};\r\n\r\nexport const getThemeModeOrDefault = (\r\n mode: ThemeMode | undefined,\r\n defaultValue: ThemeMode,\r\n): PaletteMode =>\r\n{\r\n if (isNullOrUndefined(mode))\r\n {\r\n return GetPaletteModeFromThemeMode(\r\n defaultValue,\r\n );\r\n }\r\n\r\n if (mode === 'Dark')\r\n {\r\n return 'dark';\r\n }\r\n\r\n return 'light';\r\n};\r\n\r\nexport const getThemeColorOrDefault = (\r\n color: string | undefined,\r\n defaultValue: string,\r\n): string =>\r\n{\r\n if (isNullOrUndefined(color))\r\n {\r\n return defaultValue;\r\n }\r\n\r\n return color as string;\r\n};\r\n\r\nexport const UpdateThemeMode = (\r\n settings: IThemeSettings,\r\n mode: ThemeMode,\r\n): IThemeSettings =>\r\n{\r\n const retVal =\r\n settings == null\r\n ? DefaultThemeSettings\r\n : settings;\r\n\r\n retVal.mode = mode;\r\n\r\n return retVal;\r\n};\r\n\r\nexport const GetPaletteModeFromThemeMode = (\r\n mode: ThemeMode,\r\n): PaletteMode =>\r\n{\r\n return mode === 'Light' ? 'light' : 'dark';\r\n};\r\n\r\nexport const GetThemeModeFromPaletteMode = (\r\n mode: PaletteMode,\r\n): ThemeMode =>\r\n{\r\n return mode === 'light' ? 'Light' : 'Dark';\r\n};\r\n\r\nconst HUE_MAPPING: Record<\r\n keyof IPaletteColorGraduationHues,\r\n string\r\n> = {\r\n H100: '100',\r\n H200: '200',\r\n H300: '300',\r\n H400: '400',\r\n H500: '500',\r\n H600: '600',\r\n H700: '700',\r\n H800: '800',\r\n H900: '900',\r\n};\r\n\r\nconst REVERSE_HUE_MAPPING: Record<\r\n keyof IPaletteColorGraduationHues,\r\n string\r\n> = {\r\n H100: '900',\r\n H200: '800',\r\n H300: '700',\r\n H400: '600',\r\n H500: '500',\r\n H600: '400',\r\n H700: '300',\r\n H800: '200',\r\n H900: '100',\r\n};\r\n\r\nconst generateColorGraduations = (\r\n colorSet: {[key: string]: string;},\r\n paletteMode: PaletteMode = 'light'): IPaletteColorGraduationHues =>\r\n{\r\n const hueMapping: Record<\r\n keyof IPaletteColorGraduationHues,\r\n string\r\n > = paletteMode === 'light' ? HUE_MAPPING : REVERSE_HUE_MAPPING;\r\n\r\n return (\r\n Object.keys(\r\n hueMapping,\r\n ) as (keyof IPaletteColorGraduationHues)[]\r\n ).reduce((acc, key) =>\r\n {\r\n const colorKey = hueMapping[key];\r\n const mainColor = colorSet[colorKey];\r\n const contrastText =\r\n emptyTheme.palette.getContrastText(\r\n mainColor,\r\n );\r\n\r\n acc[key] = augmentColor(\r\n key,\r\n mainColor,\r\n );\r\n\r\n return acc;\r\n }, {} as IPaletteColorGraduationHues);\r\n};\r\n\r\nexport const getContrastText = (\r\n background: string,\r\n): string | undefined =>\r\n{\r\n return emptyTheme.palette.getContrastText(background);\r\n};\r\n\r\nexport const augmentColor = (\r\n name: string,\r\n color: string,\r\n augmentName: boolean = true,\r\n): PaletteColor =>\r\n{\r\n return emptyTheme.palette.augmentColor({\r\n color: {main: color},\r\n name: augmentName\r\n ? `augmented_${name}`\r\n : `${name}`,\r\n });\r\n};\r\n\r\n\r\nexport const isHexColor = (color: string): boolean => /^#([0-9A-F]{3}){1,2}$/i.test(color);\r\nexport const isRgbColor = (color: string): boolean => /^rgb(a)?\\(\\s*\\d+\\s*,\\s*\\d+\\s*,\\s*\\d+(\\s*,\\s*(0|1|0?\\.\\d+))?\\s*\\)$/i.test(color);\r\n\r\nexport const parseHexColor = (hex: string): {r: number, g: number, b: number;} =>\r\n{\r\n hex = hex.replace(/^#/, '');\r\n\r\n let r: number, g: number, b: number;\r\n\r\n if (hex.length === 3)\r\n {\r\n r = parseInt(hex[0] + hex[0], 16);\r\n g = parseInt(hex[1] + hex[1], 16);\r\n b = parseInt(hex[2] + hex[2], 16);\r\n\r\n return {r, g, b};\r\n }\r\n\r\n if (hex.length === 6)\r\n {\r\n r = parseInt(hex.substring(0, 2), 16);\r\n g = parseInt(hex.substring(2, 4), 16);\r\n b = parseInt(hex.substring(4, 6), 16);\r\n\r\n return {r, g, b};\r\n }\r\n\r\n throw new Error('Invalid hex color format');\r\n};\r\n\r\nexport const parseRgbColor = (rgb: string): {r: number, g: number, b: number, a?: number;} =>\r\n{\r\n const match = rgb.match(/^rgb(a)?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(,\\s*(0|1|0?\\.\\d+))?\\)$/i);\r\n\r\n if (!match) throw new Error('Invalid RGB(A) color format');\r\n\r\n const r = parseInt(match[2], 10);\r\n const g = parseInt(match[3], 10);\r\n const b = parseInt(match[4], 10);\r\n\r\n const a = match[6] !== undefined\r\n ? parseFloat(match[6])\r\n : undefined;\r\n\r\n return {r, g, b, a};\r\n};\r\n\r\nexport const colorToRgba = (color: string, alpha: number): string =>\r\n{\r\n // Ensure the alpha value is between 0 and 1\r\n if (alpha < 0) alpha = 0;\r\n if (alpha > 1) alpha = 1;\r\n\r\n let r: number, g: number, b: number;\r\n let finalAlpha = alpha;\r\n\r\n if (isHexColor(color))\r\n {\r\n ({r, g, b} = parseHexColor(color));\r\n\r\n return `rgba(${r}, ${g}, ${b}, ${finalAlpha})`;\r\n }\r\n\r\n if (isRgbColor(color))\r\n {\r\n const parsedColor = parseRgbColor(color);\r\n r = parsedColor.r;\r\n g = parsedColor.g;\r\n b = parsedColor.b;\r\n\r\n if (parsedColor.a !== undefined)\r\n {\r\n finalAlpha = (alpha + parsedColor.a) / 2;\r\n }\r\n\r\n return `rgba(${r}, ${g}, ${b}, ${finalAlpha})`;\r\n }\r\n\r\n throw new Error('Invalid color format');\r\n};\r\n\r\nexport const createBoxShadow = (\r\n angle: number,\r\n distance: number,\r\n blurRadius: number,\r\n color: string,\r\n alpha: number\r\n): string => createBoxShadowWithAngle(angle, distance, blurRadius, color, alpha);\r\n\r\nexport const createBoxShadowWithOffsets = (\r\n hOffset: number,\r\n vOffset: number,\r\n blurRadius: number,\r\n color: string,\r\n alpha: number\r\n): string =>\r\n{\r\n // Convert the hex color to rgba\r\n const rgbaColor = colorToRgba(color, alpha);\r\n\r\n // Construct and return the box shadow string\r\n const result = `${hOffset}px ${vOffset}px ${blurRadius}px ${rgbaColor}`;\r\n\r\n return result;\r\n};\r\n\r\nexport const createBoxShadowWithAngle = (\r\n angle: number,\r\n distance: number,\r\n blurRadius: number,\r\n color: string,\r\n alpha: number\r\n): string =>\r\n{\r\n // Calculate the offsets\r\n const {hOffset, vOffset} = calculateOffsets(angle, distance);\r\n\r\n // Convert the hex color to rgba\r\n const rgbaColor = colorToRgba(color, alpha);\r\n\r\n // Construct and return the box shadow string\r\n const result = `${hOffset}px ${vOffset}px ${blurRadius}px ${rgbaColor}`;\r\n\r\n return result;\r\n};\r\n\r\nconst calculateOffsets = (angle: number, distance: number): {hOffset: number, vOffset: number;} => \r\n{\r\n const radians = (normalizeAngle(angle) * Math.PI) / 180;\r\n\r\n const hOffset = Math.round(Math.cos(radians) * distance);\r\n const vOffset = Math.round(Math.sin(radians) * distance);\r\n\r\n return {hOffset, vOffset};\r\n};\r\n\r\nexport const normalizeAngle = (angle: number): number =>\r\n{\r\n // Normalize the angle to be within 0 to 359 degrees\r\n return ((angle % 360) + 360) % 360;\r\n};","import React, { useState, useEffect } from 'react';\r\nimport\r\n{\r\n JwtHeader,\r\n JwtPayload,\r\n jwtDecode,\r\n} from 'jwt-decode';\r\nimport dayjs from 'dayjs';\r\n\r\nimport { useAuth } from '../providers/AuthProvider';\r\nimport\r\n{\r\n isNullOrUndefined,\r\n notNullOrUndefined,\r\n} from '../utilities/Utils';\r\nimport { LocalStorage } from './storage/LocalStorage';\r\nimport ErrorCard from '../components/notifications/ErrorCard';\r\nimport { Typography } from '@mui/material';\r\n\r\nexport function withSecurity

(\r\n Component: React.ComponentType

,\r\n requiredRole: UserRole,\r\n): React.FC

\r\n{\r\n return function SecuredComponent(props: P)\r\n {\r\n const { loggedIn, user } = useAuth();\r\n\r\n const [ isLoggedIn, setIsLoggedIn ] =\r\n useState(false);\r\n const [ currentUser, setCurrentUser ] =\r\n useState(null);\r\n\r\n useEffect(() =>\r\n {\r\n setIsLoggedIn(loggedIn);\r\n setCurrentUser(user);\r\n }, [ user, loggedIn ]);\r\n\r\n // Check if the user's role matches the required role\r\n // userRole >= requiredRole\r\n if (\r\n isLoggedIn &&\r\n currentUser &&\r\n notNullOrUndefined(currentUser.email) &&\r\n notNullOrUndefined(currentUser.role) &&\r\n currentUser.role <= requiredRole\r\n )\r\n {\r\n return ;\r\n }\r\n else\r\n {\r\n return (\r\n \r\n \r\n You don't have the\r\n necessary privileges to\r\n access this content or\r\n resource.\r\n \r\n \r\n );\r\n }\r\n };\r\n}\r\n\r\nexport type JwtTokenType = 'AccessToken' | 'RefreshToken';\r\n\r\nexport enum UserRole\r\n{\r\n Root = -2147483648,\r\n Admin = 1000,\r\n SuperUser = 2000,\r\n PowerUser = 3000,\r\n Manager = 4000,\r\n User = 5000,\r\n Guest = 6000,\r\n Anonymous = 2147483647, // Using the maximum 32-bit integer value for TypeScript\r\n}\r\n\r\nexport type LoginResultType =\r\n | 'succeeded'\r\n | 'isLockedOut'\r\n | 'isNotAllowed'\r\n | 'requiresTwoFactor'\r\n | 'failed';\r\n\r\nexport interface ILoginRequest\r\n{\r\n email: string;\r\n password: string;\r\n twoFactorCode?: string;\r\n twoFactorRecoveryCode?: string;\r\n}\r\n\r\nexport interface ILoginInformation\r\n{\r\n user: IAuthUser | null;\r\n tokens: IUserTokens | null;\r\n}\r\n\r\nexport interface ILoginResponse extends ILoginInformation\r\n{\r\n result: LoginResultType;\r\n}\r\n\r\nexport interface IUserLoginFormData\r\n{\r\n userEmail: string;\r\n rememberMe: string;\r\n}\r\n\r\nexport interface IAuthUser\r\n{\r\n id: string,\r\n email: string;\r\n firstName: string | null;\r\n lastName: string | null;\r\n role: UserRole;\r\n roleName: string | null;\r\n lastLogin: Date | null;\r\n}\r\n\r\nexport interface IUserTokens\r\n{\r\n accessToken: IJwtToken | null;\r\n refreshToken: IJwtToken | null;\r\n}\r\n\r\nexport interface IJwtToken\r\n{\r\n type: JwtTokenType;\r\n expiration: Date;\r\n value: string;\r\n header: JwtHeader | null;\r\n payload: JwtPayload | null;\r\n}\r\n\r\nexport function getRoleByValue(\r\n roleNumber: number,\r\n): UserRole\r\n{\r\n if (Object.values(UserRole).includes(roleNumber))\r\n {\r\n return roleNumber as UserRole;\r\n }\r\n\r\n return UserRole.Anonymous;\r\n}\r\n\r\nexport function getRoleByName(roleName: string): UserRole\r\n{\r\n roleName =\r\n roleName.charAt(0).toUpperCase() +\r\n roleName.slice(1).toLowerCase();\r\n\r\n if (roleName in UserRole)\r\n {\r\n return UserRole[\r\n roleName as keyof typeof UserRole\r\n ];\r\n }\r\n\r\n return UserRole.Anonymous;\r\n}\r\n\r\nexport function getRoleName(role: UserRole): string\r\n{\r\n return `${UserRole[ role ]}`;\r\n}\r\n\r\nexport const parseLoginResponse = (\r\n data: any,\r\n): ILoginResponse | null =>\r\n{\r\n if (\r\n isNullOrUndefined(data?.email) ||\r\n isNullOrUndefined(data.result)\r\n )\r\n {\r\n return null;\r\n }\r\n\r\n const loginRes = parseLoginResult(data.result);\r\n\r\n if (loginRes !== 'succeeded')\r\n {\r\n return {\r\n result: loginRes,\r\n tokens: null,\r\n user: null,\r\n };\r\n }\r\n\r\n const userInfo = parseUserInformation(data);\r\n const loginTokens = parseTokens(data);\r\n\r\n if (\r\n isNullOrUndefined(userInfo) ||\r\n isNullOrUndefined(loginTokens)\r\n )\r\n {\r\n return null;\r\n }\r\n\r\n return {\r\n user: userInfo,\r\n tokens: loginTokens,\r\n result: loginRes,\r\n };\r\n};\r\n\r\nexport const parseLoginResult = (\r\n data: any,\r\n): LoginResultType =>\r\n{\r\n if (\r\n notNullOrUndefined(data?.isLockedOut) &&\r\n data?.isLockedOut === true\r\n )\r\n {\r\n return 'isLockedOut';\r\n }\r\n\r\n if (\r\n notNullOrUndefined(data?.requiresTwoFactor) &&\r\n data?.requiresTwoFactor === true\r\n )\r\n {\r\n return 'requiresTwoFactor';\r\n }\r\n\r\n if (\r\n notNullOrUndefined(data?.NotAllowed) &&\r\n data?.NotAllowed === true\r\n )\r\n {\r\n return 'isNotAllowed';\r\n }\r\n\r\n if (\r\n notNullOrUndefined(data?.succeeded) &&\r\n data?.succeeded === true\r\n )\r\n {\r\n return 'succeeded';\r\n }\r\n\r\n return 'failed';\r\n};\r\n\r\nexport const parseUserInformation = (\r\n data: any,\r\n): IAuthUser | null =>\r\n{\r\n if (\r\n notNullOrUndefined(data?.email) &&\r\n notNullOrUndefined(data.firstName) &&\r\n notNullOrUndefined(data.lastName) &&\r\n notNullOrUndefined(data.role)\r\n )\r\n {\r\n const currRole = parseUserRole(data.role);\r\n\r\n if (notNullOrUndefined(currRole))\r\n {\r\n return {\r\n id: data.userId,\r\n email: data.email,\r\n firstName: data.firstName,\r\n lastName: data.lastName,\r\n role: currRole as UserRole,\r\n roleName: getRoleName(currRole!),\r\n lastLogin: notNullOrUndefined(\r\n data.lastLogin,\r\n )\r\n ? dayjs(\r\n data.lastLogin,\r\n ).toDate()\r\n : null,\r\n };\r\n }\r\n }\r\n\r\n return null;\r\n};\r\n\r\nexport const parseUserRole = (\r\n value: number,\r\n): UserRole | null =>\r\n{\r\n return Object.values(UserRole).includes(value)\r\n ? (value as UserRole)\r\n : null;\r\n};\r\n\r\nexport const parseTokens = (\r\n data: any,\r\n): IUserTokens | null =>\r\n{\r\n if (\r\n notNullOrUndefined(data?.tokens) &&\r\n notNullOrUndefined(data?.tokens.accessToken) &&\r\n notNullOrUndefined(data?.tokens.refreshToken)\r\n )\r\n {\r\n return {\r\n accessToken: parseToken(\r\n data.tokens.accessToken,\r\n ),\r\n refreshToken: parseToken(\r\n data.tokens.refreshToken,\r\n ),\r\n };\r\n }\r\n\r\n return null;\r\n};\r\n\r\nexport const parseToken = (data: any): IJwtToken | null =>\r\n{\r\n if (\r\n notNullOrUndefined(data?.type) &&\r\n notNullOrUndefined(data?.expiration) &&\r\n notNullOrUndefined(data?.value)\r\n )\r\n {\r\n const tokenType: JwtTokenType =\r\n data.type === 0\r\n ? 'AccessToken'\r\n : 'RefreshToken';\r\n const expiration: Date = dayjs(\r\n data.expiration,\r\n ).toDate();\r\n const value: string = data.value;\r\n\r\n return {\r\n type: tokenType,\r\n expiration: expiration,\r\n // isExpired: () => dayjs().isAfter(dayjs(expiration)),\r\n value: value,\r\n header: jwtDecode(data.value, {\r\n header: true,\r\n }),\r\n payload: jwtDecode(data.value),\r\n };\r\n }\r\n\r\n return null;\r\n};\r\n\r\nexport const parseTokenFromStorage = (): string | null =>\r\n{\r\n const loginLocalStorage =\r\n new LocalStorage('UserLogin');\r\n\r\n const accessToken: string | undefined =\r\n loginLocalStorage.contains()\r\n ? loginLocalStorage.retrieve()?.tokens\r\n ?.accessToken?.value\r\n : undefined;\r\n\r\n if (notNullOrUndefined(accessToken))\r\n {\r\n const tokenPayload: JwtPayload = jwtDecode(\r\n accessToken!,\r\n );\r\n\r\n if (checkJwtTokenExpiry(tokenPayload.exp))\r\n {\r\n return null;\r\n }\r\n }\r\n\r\n return null;\r\n};\r\n\r\nexport const isJwtTokenExpired = (\r\n tokenValue: string | null | undefined,\r\n): boolean =>\r\n{\r\n if (isNullOrUndefined(tokenValue))\r\n {\r\n return true; // Consider null or undefined token as expired.\r\n }\r\n\r\n try\r\n {\r\n const tokenPayload: JwtPayload = jwtDecode(\r\n tokenValue!,\r\n );\r\n\r\n if (isNullOrUndefined(tokenPayload))\r\n {\r\n return true; // No payload could mean an issue with decoding, treat as expired.\r\n }\r\n\r\n return checkJwtTokenExpiry(tokenPayload.exp);\r\n }\r\n catch (error)\r\n {\r\n console.error('Failed to decode token:', error);\r\n\r\n return true; // Any error in decoding should be treated as expired/invalid token.\r\n }\r\n};\r\n\r\nconst checkJwtTokenExpiry = (\r\n tokenExp: number | undefined,\r\n): boolean =>\r\n{\r\n if (\r\n isNullOrUndefined(tokenExp) ||\r\n typeof tokenExp !== 'number'\r\n )\r\n {\r\n return true; // If exp is not a number or undefined, consider the token as expired.\r\n }\r\n\r\n return new Date().getTime() > tokenExp * 1000; // Convert exp to milliseconds and compare\r\n};\r\n"],"names":["onPerfEntry","Function","then","getCLS","getFID","getFCP","getLCP","getTTFB","GetLinkFromKey","key","RouteLinks","find","itm","order","icon","elementTo","component","display","included","showInSideMenu","showInToolbar","A","requiredRole","SuperUser","User","showInBottomMenu","PowerUser","initialState","mode","settings","ThemingSlice","name","reducers","setThemeMode","state","action","payload","setThemePrimaryColor","primaryColor","setThemeSecondaryColor","secondaryColor","setThemeSettings","actions","SimpleSlice","boolValue","intValue","add","subtract","setSimpleState","setSimpleStateBool","setSimpleStateInt","ServiceStore","reducer","config","loading","theming","simple","cart","CartSlice","reducerPath","middleware","getDefaultMiddleware","serializableCheck","concat","options","dispatch","injectedRestApiCart","injectEndpoints","endpoints","build","RestApiOperationsPostCartCreateOrder","mutation","query","queryArg","url","method","body","extraOptions","controller","notificationType","transformResponse","response","invalidatesTags","overrideExisting","useRestApiOperationsPostCartCreateOrderMutation","restApiCart","createOrder","hooks","mutations","injectedRestApiImages","RestApiOperationsGetImagesGetImage","imageId","params","width","height","resizeType","providesTags","keepUnusedDataFor","useRestApiOperationsGetImagesGetImageQuery","useLazyRestApiOperationsGetImagesGetImageQuery","restApiImages","getImage","queries","lazyQueries","injectedRestApiOrders","RestApiOperationsGetOrdersGetAll","userRole","tokenType","RestApiOperationsGetOrdersGetById","id","RestApiOperationsGetOrdersGetForUser","userId","RestApiOperationsGetOrdersGetInvoiceForOrder","orderId","useRestApiOperationsGetOrdersGetAllQuery","useLazyRestApiOperationsGetOrdersGetAllQuery","useRestApiOperationsGetOrdersGetByIdQuery","useLazyRestApiOperationsGetOrdersGetByIdQuery","useRestApiOperationsGetOrdersGetForUserQuery","useLazyRestApiOperationsGetOrdersGetForUserQuery","useRestApiOperationsGetOrdersGetInvoiceForOrderQuery","useLazyRestApiOperationsGetOrdersGetInvoiceForOrderQuery","localEndpoints","restApiOrders","getAll","getById","getForUser","getInvoiceForOrder","injectedRestApiProductCategories","RestApiOperationsGetProductCategoriesGetAll","RestApiOperationsGetProductCategoriesGetAllMinimalTop","RestApiOperationsGetProductCategoriesGetAllMinimal","RestApiOperationsGetProductCategoriesGetAllNames","RestApiOperationsGetProductCategoriesGetById","RestApiOperationsGetProductCategoriesGetWithImagesById","RestApiOperationsPostProductCategoriesCreate","RestApiOperationsPatchProductCategoriesUpdate","RestApiOperationsDeleteProductCategoriesDeleteById","RestApiOperationsDeleteProductCategoriesDeleteMultipleById","useRestApiOperationsGetProductCategoriesGetAllQuery","useLazyRestApiOperationsGetProductCategoriesGetAllQuery","useRestApiOperationsGetProductCategoriesGetAllMinimalTopQuery","useLazyRestApiOperationsGetProductCategoriesGetAllMinimalTopQuery","useRestApiOperationsGetProductCategoriesGetAllMinimalQuery","useLazyRestApiOperationsGetProductCategoriesGetAllMinimalQuery","useRestApiOperationsGetProductCategoriesGetAllNamesQuery","useLazyRestApiOperationsGetProductCategoriesGetAllNamesQuery","useRestApiOperationsGetProductCategoriesGetByIdQuery","useLazyRestApiOperationsGetProductCategoriesGetByIdQuery","useRestApiOperationsGetProductCategoriesGetWithImagesByIdQuery","useLazyRestApiOperationsGetProductCategoriesGetWithImagesByIdQuery","useRestApiOperationsPostProductCategoriesCreateMutation","useRestApiOperationsPatchProductCategoriesUpdateMutation","useRestApiOperationsDeleteProductCategoriesDeleteByIdMutation","useRestApiOperationsDeleteProductCategoriesDeleteMultipleByIdMutation","restApiProductCategories","getAllMinimalTop","getAllMinimal","getAllNames","getWithImagesById","create","update","deleteById","deleteMultipleById","injectedRestApiProducts","RestApiOperationsGetProductsGetAll","RestApiOperationsGetProductsGetFeaturedOrRandom","RestApiOperationsGetProductsGetById","RestApiOperationsGetProductsGetByIdWithImages","RestApiOperationsGetProductsGetIdFromName","RestApiOperationsPostProductsCreate","RestApiOperationsPatchProductsUpdate","RestApiOperationsDeleteProductsDeleteById","RestApiOperationsDeleteProductsDeleteMultipleById","RestApiOperationsGetProductsGetExistingProductColors","RestApiOperationsGetProductsGetExistingProductSizes","useRestApiOperationsGetProductsGetAllQuery","useLazyRestApiOperationsGetProductsGetAllQuery","useRestApiOperationsGetProductsGetFeaturedOrRandomQuery","useLazyRestApiOperationsGetProductsGetFeaturedOrRandomQuery","useRestApiOperationsGetProductsGetByIdQuery","useLazyRestApiOperationsGetProductsGetByIdQuery","useRestApiOperationsGetProductsGetByIdWithImagesQuery","useLazyRestApiOperationsGetProductsGetByIdWithImagesQuery","useRestApiOperationsGetProductsGetIdFromNameQuery","useLazyRestApiOperationsGetProductsGetIdFromNameQuery","useRestApiOperationsPostProductsCreateMutation","useRestApiOperationsPatchProductsUpdateMutation","useRestApiOperationsDeleteProductsDeleteByIdMutation","useRestApiOperationsDeleteProductsDeleteMultipleByIdMutation","useRestApiOperationsGetProductsGetExistingProductColorsQuery","useLazyRestApiOperationsGetProductsGetExistingProductColorsQuery","useRestApiOperationsGetProductsGetExistingProductSizesQuery","useLazyRestApiOperationsGetProductsGetExistingProductSizesQuery","restApiProducts","getFeaturedOrRandom","getByIdWithImages","getIdFromName","getExistingProductColors","getExistingProductSizes","injectedRestApiUSStates","RestApiOperationsGetUSStatesGetAllStatesWithRates","RestApiOperationsGetUSStatesGetAllStates","RestApiOperationsGetUSStatesGetStateFromCode","stateCode","RestApiOperationsGetUSStatesGetStatesFromCodes","stateCodes","RestApiOperationsGetUSStatesGetShippingRateForState","stateAbbreviation","RestApiOperationsPostUSStatesCalculateShippingRateForState","useRestApiOperationsGetUSStatesGetAllStatesWithRatesQuery","useLazyRestApiOperationsGetUSStatesGetAllStatesWithRatesQuery","useRestApiOperationsGetUSStatesGetAllStatesQuery","useLazyRestApiOperationsGetUSStatesGetAllStatesQuery","useRestApiOperationsGetUSStatesGetStateFromCodeQuery","useLazyRestApiOperationsGetUSStatesGetStateFromCodeQuery","useRestApiOperationsGetUSStatesGetStatesFromCodesQuery","useLazyRestApiOperationsGetUSStatesGetStatesFromCodesQuery","useRestApiOperationsGetUSStatesGetShippingRateForStateQuery","useLazyRestApiOperationsGetUSStatesGetShippingRateForStateQuery","useRestApiOperationsPostUSStatesCalculateShippingRateForStateMutation","restApiUSStates","getAllStatesWithRates","getAllStates","getStateFromCode","getStatesFromCodes","getShippingRateForState","calculateShippingRateForState","injectedRestApiUserAccount","RestApiOperationsPatchUserAccountUpdatePassword","RestApiOperationsPostUserAccountRequestPasswordReset","RestApiOperationsPostUserAccountResetPassword","RestApiOperationsPatchUserAccountUpdateUserProfile","RestApiOperationsPostUserAccountRegisterUser","RestApiOperationsPostUserAccountConfirmEmail","useRestApiOperationsPatchUserAccountUpdatePasswordMutation","useRestApiOperationsPostUserAccountRequestPasswordResetMutation","useRestApiOperationsPostUserAccountResetPasswordMutation","useRestApiOperationsPatchUserAccountUpdateUserProfileMutation","useRestApiOperationsPostUserAccountRegisterUserMutation","useRestApiOperationsPostUserAccountConfirmEmailMutation","restApiUserAccount","updatePassword","requestPasswordReset","resetPassword","updateUserProfile","registerUser","confirmEmail","injectedRestApiUserOperations","RestApiOperationsGetUserOperationsGetAllUsers","RestApiOperationsGetUserOperationsGetUser","userEmail","RestApiOperationsGetUserOperationsGetUserInformation","RestApiOperationsGetUserOperationsGetNewRefreshToken","RestApiOperationsGetUserOperationsIsUserLocked","RestApiOperationsGetUserOperationsLockUser","RestApiOperationsGetUserOperationsUnlockUser","RestApiOperationsGetUserOperationsTestAccessToken","RestApiOperationsGetUserOperationsTestRefreshToken","useRestApiOperationsGetUserOperationsGetAllUsersQuery","useLazyRestApiOperationsGetUserOperationsGetAllUsersQuery","useRestApiOperationsGetUserOperationsGetUserQuery","useLazyRestApiOperationsGetUserOperationsGetUserQuery","useRestApiOperationsGetUserOperationsGetUserInformationQuery","useLazyRestApiOperationsGetUserOperationsGetUserInformationQuery","useRestApiOperationsGetUserOperationsGetNewRefreshTokenQuery","useLazyRestApiOperationsGetUserOperationsGetNewRefreshTokenQuery","useRestApiOperationsGetUserOperationsIsUserLockedQuery","useLazyRestApiOperationsGetUserOperationsIsUserLockedQuery","useRestApiOperationsGetUserOperationsLockUserQuery","useLazyRestApiOperationsGetUserOperationsLockUserQuery","useRestApiOperationsGetUserOperationsUnlockUserQuery","useLazyRestApiOperationsGetUserOperationsUnlockUserQuery","useRestApiOperationsGetUserOperationsTestAccessTokenQuery","useLazyRestApiOperationsGetUserOperationsTestAccessTokenQuery","useRestApiOperationsGetUserOperationsTestRefreshTokenQuery","useLazyRestApiOperationsGetUserOperationsTestRefreshTokenQuery","restApiUserOperations","getAllUsers","getUser","getUserInformation","getNewRefreshToken","isUserLocked","lockUser","unlockUser","testAccessToken","testRefreshToken","RestApiMultipleIdsDTO","ids","constructor","data","property","hasOwnProperty","this","init","_data","fromJS","result","toJSON","RestApiProductCategoryMinimalDTO","sortOrder","parentCategoryId","title","subtitle","description","bannerImageId","thumbnailImageId","childCategories","RestApiUserAddressDTO","type","addressLine1","addressLine2","addressLine3","city","postalCode","country","enhancedRestApi","enhanceEndpoints","addTagTypes","getTagTypeFromString","tagName","includes","InvalidateTags","tagKeys","Array","isArray","length","forEach","tagKeyItm","InvalidateTag","Error","tagKey","util","invalidateTags","RestApiCacheInvalidator","GetTagFromString","InvalidateTagFromString","tagType","InvalidateRestApiTags","InvalidateRestApiTag","ClearRestApiCache","InvalidateRestApiCartCache","InvalidateRestApiExampleEntitiesCache","InvalidateRestApiSuperComplexCache","InvalidateRestApiComplexTagCache","InvalidateRestApiAnOptionalTagCache","InvalidateRestApiTheFirstTagCache","InvalidateRestApiTheSecondTagCache","InvalidateRestApiYetAnotherTagCache","InvalidateRestApiYetAnotherDifferentTagCache","InvalidateRestApiImagesCache","InvalidateRestApiOrdersCache","InvalidateRestApiProductCategoriesCache","InvalidateRestApiProductsCache","InvalidateRestApiUserAccountCache","InvalidateRestApiUserOperationsCache","InvalidateRestApiUSStatesCache","useCallback","getInvalidateTagPayload","fetchData","async","jwtToken","headers","fetchOptions","JSON","stringify","fetch","error","getAPIMethodEndpoint","window","AppConfiguration","methods","endpointUrl","attemptToRefreshToken","user","email","tokens","accessToken","value","isAfter","expiration","refreshTokenUrl","status","newTokenJson","json","newToken","toDate","header","parseTokenLocal","storage","SessionStorage","refreshToken","baseRestApi","baseQuery","arg","api","meta","timestamp","Date","now","token","tokensStorage","storedData","retrieve","storedTokens","assertQueryToken","inner","reason","fetchMethod","toUpperCase","bodyRequest","undefined","ok","fetchError","sessionStorage","items","getItemsFromStorage","saveStateToSessionStorage","addItemToCart","item","i","productId","colorId","quantity","push","removeItemFromCart","filter","increaseItemQuantity","decreaseItemQuantity","markItem","checked","unmarkItem","setItemQuantity","newQuantity","Math","max","min","selectedProduct","stockQuantity","clearCart","selectCartItems","selectCartQuantity","reduce","total","ConfigurationData","valid","ConfigurationSlice","loadConfiguration","newState","LoadingControlSlice","isVisible","message","showDialog","hideDialog","setMessage","clearMessage","getAvatar","source","bgColour","md5Hash","padEnd","r","parseInt","substring","g","b","toString","padStart","convertMD5ToColor","getStringFromParts","sx","color","bgcolor","children","getAvatarStyleParts","handleArray","stringResult","handleString","pushIfNotNull","slice","str","extractedChars","parts","firstChar","trim","match","sourceArray","target","element","DEFAULT_MODE","DEFAULT_PRIMARY_COLOR","DEFAULT_SECONDARY_COLOR","DEFAULT_TERTIARY_COLOR","DefaultThemeSettings","tertiaryColor","props","themeState","themeSettings","useState","currentTheme","setCurrentTheme","themeCookie","setThemeCookie","removeThemeCookie","useEffect","newSettings","newThemeState","theme","emptyTheme","GetThemeFromSettingsOrDefaults","retVal","paletteMode","getThemeModeOrDefault","augmentColor","palette","primary","secondary","tertiary","primaryLightVariant","light","primaryDarkVariant","dark","secondaryLightVariant","secondaryDarkVariant","tertiaryLightVariant","tertiaryDarkVariant","background","default","commonColors","Gray","generateColorGraduations","Blue","Red","Green","Purple","Yellow","typography","fontFamily","components","MuiButton","styleOverrides","root","Padding","Margin","borderRadius","textTransform","MuiPaper","backgroundColor","padding","MuiLink","textDecoration","GetSettingsOrDefaults","defaultValue","GetPaletteModeFromThemeMode","HUE_MAPPING","H100","H200","H300","H400","H500","H600","H700","H800","H900","REVERSE_HUE_MAPPING","colorSet","hueMapping","Object","keys","acc","mainColor","getContrastText","augmentName","main","colorToRgba","alpha","finalAlpha","test","isHexColor","hex","replace","parseHexColor","isRgbColor","parsedColor","rgb","a","parseFloat","parseRgbColor","createBoxShadow","angle","distance","blurRadius","createBoxShadowWithAngle","hOffset","vOffset","calculateOffsets","radians","normalizeAngle","PI","round","cos","sin","UserRole","withSecurity","Component","loggedIn","isLoggedIn","setIsLoggedIn","currentUser","setCurrentUser","role","errorCode","showContactAdminButton","variant","parseLoginResponse","loginRes","parseLoginResult","userInfo","parseUserInformation","loginTokens","parseTokens","isLockedOut","requiresTwoFactor","NotAllowed","succeeded","firstName","lastName","currRole","parseUserRole","roleName","lastLogin","values","parseToken"],"sourceRoot":""}