npm-pkg-hook 1.12.4 → 1.12.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +20089 -0
- package/dist/index.js +19854 -0
- package/dist/index.mjs +19854 -0
- package/package.json +28 -6
- package/.babelrc +0 -0
- package/.env +0 -5
- package/.eslintrc.js +0 -38
- package/.eslintrc.json +0 -127
- package/.github/pull_request_template.md +0 -18
- package/.github/workflows/pepeline.yaml +0 -30
- package/expire.json +0 -1
- package/jsconfig.json +0 -28
- package/script.txt +0 -7
- package/src/config/client/errors.js +0 -26
- package/src/config/client/index.js +0 -1
- package/src/config/content/en.json +0 -5
- package/src/config/content/es.json +0 -5
- package/src/config/content/index.js +0 -16
- package/src/cookies/index.js +0 -3
- package/src/hooks/addTenMinutes/index.js +0 -14
- package/src/hooks/calculateLogLatHaversine/index.js +0 -30
- package/src/hooks/completeSchedules/index.js +0 -22
- package/src/hooks/convertToMilitaryTime/index.js +0 -14
- package/src/hooks/generateStoreURL/index.js +0 -38
- package/src/hooks/generateTemplate/index.js +0 -62
- package/src/hooks/getCardType/index.js +0 -24
- package/src/hooks/getCategoriesWithProduct/helpers/index.js +0 -7
- package/src/hooks/getCategoriesWithProduct/index.js +0 -62
- package/src/hooks/getGlobalSession/index.js +0 -49
- package/src/hooks/getSession/index.js +0 -18
- package/src/hooks/getTodayTimestamps/index.js +0 -64
- package/src/hooks/getTotalHours/index.js +0 -48
- package/src/hooks/handleLogin/index.js +0 -10
- package/src/hooks/index.ts +0 -147
- package/src/hooks/isTokenExpired/index.js +0 -17
- package/src/hooks/newMessageSubscription/index.js +0 -28
- package/src/hooks/newStoreOrderSubscription/index.js +0 -26
- package/src/hooks/statusOpenStores/helpers/index.js +0 -101
- package/src/hooks/statusOpenStores/index.js +0 -156
- package/src/hooks/updateExtProductFoodsOptional/index.js +0 -40
- package/src/hooks/useAcumulateDate/index.js +0 -16
- package/src/hooks/useAllStoresPendingToRegister/index.js +0 -34
- package/src/hooks/useAmountInput/index.ts +0 -117
- package/src/hooks/useAnimationFrame/index.js +0 -45
- package/src/hooks/useAnimationText/index.jsx +0 -31
- package/src/hooks/useAsideCart/helpers/index.js +0 -22
- package/src/hooks/useAsideCart/index.js +0 -214
- package/src/hooks/useAsideCart/queries.js +0 -10
- package/src/hooks/useBanner/index.js +0 -19
- package/src/hooks/useCart/index.js +0 -2
- package/src/hooks/useCart/queries.js +0 -174
- package/src/hooks/useCart/useCart/helpers/index.js +0 -75
- package/src/hooks/useCart/useCart/index.js +0 -412
- package/src/hooks/useCart/useGetCart/index.js +0 -33
- package/src/hooks/useCatWithProduct/index.js +0 -48
- package/src/hooks/useCatWithProduct/queries.js +0 -200
- package/src/hooks/useCatWithProductClient/index.js +0 -56
- package/src/hooks/useCatWithProductClient/queries.js +0 -56
- package/src/hooks/useCategoriesProduct/index.js +0 -13
- package/src/hooks/useCategoriesProduct/queries.js +0 -16
- package/src/hooks/useCategoryInStore/index.js +0 -100
- package/src/hooks/useCategoryInStore/queries.js +0 -78
- package/src/hooks/useCategoryStore/index.js +0 -7
- package/src/hooks/useCategoryStore/queries.js +0 -16
- package/src/hooks/useChartData/index.js +0 -170
- package/src/hooks/useChartData/useChartData/index.js +0 -199
- package/src/hooks/useChartData/useChartDataAllOrders/index.js +0 -94
- package/src/hooks/useChatRoomSubscription/index.js +0 -28
- package/src/hooks/useCheckbox/index.js +0 -115
- package/src/hooks/useCities/index.js +0 -13
- package/src/hooks/useCities/queries.js +0 -12
- package/src/hooks/useClients/index.js +0 -96
- package/src/hooks/useClients/queries.js +0 -212
- package/src/hooks/useColorByLetters/helpers/alea.js +0 -54
- package/src/hooks/useColorByLetters/helpers/colors.js +0 -45
- package/src/hooks/useColorByLetters/helpers/index.js +0 -18
- package/src/hooks/useColorByLetters/helpers/mersenne_twister.js +0 -118
- package/src/hooks/useColorByLetters/index.js +0 -27
- package/src/hooks/useConnection/index.js +0 -24
- package/src/hooks/useCountries/index.js +0 -19
- package/src/hooks/useCountries/queries.js +0 -12
- package/src/hooks/useCreateDeliveryTime/index.js +0 -51
- package/src/hooks/useCreateOrderStatusType/index.ts +0 -132
- package/src/hooks/useCreateProduct/helpers/index.js +0 -23
- package/src/hooks/useCreateProduct/helpers/manageCacheDataCatProduct/index.js +0 -52
- package/src/hooks/useCreateProduct/helpers/useEditImageProduct/index.js +0 -176
- package/src/hooks/useCreateProduct/index.js +0 -334
- package/src/hooks/useCreateStorePendingToRegister/index.js +0 -13
- package/src/hooks/useCreateStorePendingToRegister/queries.js +0 -10
- package/src/hooks/useDashboardComponents/index.js +0 -50
- package/src/hooks/useDeleteExtraProductFoods/index.js +0 -12
- package/src/hooks/useDeleteSubProductOptional/index.js +0 -30
- package/src/hooks/useDeleteSubProductOptional/queries.js +0 -10
- package/src/hooks/useDeliveryTime/index.js +0 -27
- package/src/hooks/useDepartments/index.js +0 -13
- package/src/hooks/useDepartments/queries.js +0 -13
- package/src/hooks/useDessert/helpers/index.js +0 -51
- package/src/hooks/useDessert/index.js +0 -525
- package/src/hooks/useDessertWithPrice/helpers/index.js +0 -76
- package/src/hooks/useDessertWithPrice/index.js +0 -373
- package/src/hooks/useDessertWithPrice/queries.js +0 -18
- package/src/hooks/useDevWS/index.ts +0 -53
- package/src/hooks/useDevices/index.js +0 -2
- package/src/hooks/useDevices/queries.js +0 -28
- package/src/hooks/useDevices/useGetDevices.js +0 -28
- package/src/hooks/useDevices/useRegisterDevices.js +0 -75
- package/src/hooks/useDownloadReports/helpers/downloadFileFromResponse.ts +0 -21
- package/src/hooks/useDownloadReports/index.ts +0 -2
- package/src/hooks/useDownloadReports/useDownloadReportByDay/index.ts +0 -103
- package/src/hooks/useDownloadReports/useGetReportByDateRange/index.ts +0 -115
- package/src/hooks/useDrag/index.js +0 -63
- package/src/hooks/useDropzone/index.js +0 -94
- package/src/hooks/useDynamicAuth/index.js +0 -13
- package/src/hooks/useDynamicAuth/queries.js +0 -24
- package/src/hooks/useEditCategory/index.js +0 -41
- package/src/hooks/useEditOneExtProductFoodOptional/index.js +0 -28
- package/src/hooks/useEditOneExtProductFoodOptional/queries.js +0 -16
- package/src/hooks/useEditSubProductOptional/index.js +0 -11
- package/src/hooks/useEditSubProductOptional/queries.js +0 -10
- package/src/hooks/useEmployee/index.js +0 -17
- package/src/hooks/useEmployee/queries.js +0 -85
- package/src/hooks/useEmployee/useCreateEmployee.js +0 -86
- package/src/hooks/useEvent/index.js +0 -34
- package/src/hooks/useFavoriteStores/index.js +0 -29
- package/src/hooks/useFavoriteStores/queries.js +0 -54
- package/src/hooks/useFetchJson/index.js +0 -25
- package/src/hooks/useFetchMoreInteractions/index.jsx +0 -39
- package/src/hooks/useFingerprintjs/index.js +0 -172
- package/src/hooks/useFormTools/index.js +0 -116
- package/src/hooks/useFormatDate/index.js +0 -86
- package/src/hooks/useFormatNumberPhone/index.js +0 -23
- package/src/hooks/useFullScreenMode/index.js +0 -65
- package/src/hooks/useGenerateNumberArray/index.js +0 -17
- package/src/hooks/useGetAllLocationUser/index.js +0 -12
- package/src/hooks/useGetAllLocationUser/queries.js +0 -44
- package/src/hooks/useGetCookies/index.js +0 -43
- package/src/hooks/useGetExtProductFoodsSubOptionalAll/index.js +0 -14
- package/src/hooks/useGetFoodRecomended/index.js +0 -32
- package/src/hooks/useGetFoodRecomended/queries.js +0 -47
- package/src/hooks/useGetMessagesToRoom/index.js +0 -23
- package/src/hooks/useGetMinPrice/index.js +0 -12
- package/src/hooks/useGetMinPrice/queries.js +0 -7
- package/src/hooks/useGetOneStoreRating/index.js +0 -40
- package/src/hooks/useGetOneStoreRating/queries.js +0 -18
- package/src/hooks/useGetSalesAmountToday/index.js +0 -31
- package/src/hooks/useGetStoreCookie/index.js +0 -21
- package/src/hooks/useGoogleLogin/index.js +0 -160
- package/src/hooks/useGoogleLogin/loadScript.js +0 -15
- package/src/hooks/useGoogleLogin/removeScript.js +0 -7
- package/src/hooks/useHover/index.js +0 -29
- package/src/hooks/useImageOptimization/index.js +0 -28
- package/src/hooks/useImageUploaderProduct/helper/canvasUtils.ts +0 -130
- package/src/hooks/useImageUploaderProduct/helper/getOrientation.ts +0 -53
- package/src/hooks/useImageUploaderProduct/helper/index.ts +0 -5
- package/src/hooks/useImageUploaderProduct/index.ts +0 -292
- package/src/hooks/useImageWeight/index.js +0 -51
- package/src/hooks/useImagesStore/index.js +0 -225
- package/src/hooks/useImagesStore/queries.js +0 -193
- package/src/hooks/useImagesStore/utils/index.js +0 -4
- package/src/hooks/useIncomingOrders/index.js +0 -10
- package/src/hooks/useIncomingOrders/queries.js +0 -87
- package/src/hooks/useInnerHtml/index.js +0 -39
- package/src/hooks/useIntersection/index.js +0 -84
- package/src/hooks/useInventory/index.js +0 -2
- package/src/hooks/useInventory/queries.js +0 -58
- package/src/hooks/useInventory/useGetProductsInStock.js +0 -15
- package/src/hooks/useInventory/useUpdateManageStock.js +0 -41
- package/src/hooks/useKeypress/index.js +0 -28
- package/src/hooks/useLazyScript/index.js +0 -71
- package/src/hooks/useLocalBackendIp/index.js +0 -34
- package/src/hooks/useLocalSorage/index.js +0 -36
- package/src/hooks/useLocationManager/index.js +0 -63
- package/src/hooks/useLocationNavigate/index.js +0 -54
- package/src/hooks/useLoginEmployeeInStore/index.js +0 -38
- package/src/hooks/useLogout/helpers/BroadcastChannel.js +0 -31
- package/src/hooks/useLogout/helpers/apiBaseUrl.js +0 -8
- package/src/hooks/useLogout/helpers/fetchData.js +0 -28
- package/src/hooks/useLogout/helpers/getCsrfToken.js +0 -30
- package/src/hooks/useLogout/helpers/index.js +0 -57
- package/src/hooks/useLogout/helpers/logger.js +0 -70
- package/src/hooks/useLogout/helpers/parseUrl.js +0 -36
- package/src/hooks/useLogout/index.js +0 -96
- package/src/hooks/useManageNewOrder/helpers/index.js +0 -45
- package/src/hooks/useManageNewOrder/helpers/mock.js +0 -0
- package/src/hooks/useManageNewOrder/index.js +0 -102
- package/src/hooks/useManageQueryParams/index.js +0 -40
- package/src/hooks/useMobile/index.js +0 -65
- package/src/hooks/useModules/helpers/index.js +0 -1
- package/src/hooks/useModules/helpers/validateModules.js +0 -29
- package/src/hooks/useModules/index.js +0 -58
- package/src/hooks/useMouse/index.ts +0 -50
- package/src/hooks/useMutateHeight/index.js +0 -36
- package/src/hooks/useOrderClient/index.js +0 -5
- package/src/hooks/useOrderStatusTypes/index.ts +0 -2
- package/src/hooks/useOrderStatusTypes/useOrderStatusTypes/index.ts +0 -133
- package/src/hooks/useOrderStatusTypes/useUpdateOrderStatusPriorities/index.ts +0 -97
- package/src/hooks/useOrders/index.js +0 -3
- package/src/hooks/useOrders/queries.js +0 -89
- package/src/hooks/useOrders/useChangeOrderState/index.ts +0 -125
- package/src/hooks/useOrders/useOrdersFromStore/index.ts +0 -77
- package/src/hooks/usePWAInstall/index.js +0 -38
- package/src/hooks/usePortFetcher/index.ts +0 -33
- package/src/hooks/usePrintSaleTicket/index.ts +0 -64
- package/src/hooks/useProductsFood/index.js +0 -253
- package/src/hooks/useProductsFood/queriesStore.js +0 -964
- package/src/hooks/useProductsFood/useEditProduct.js +0 -48
- package/src/hooks/useProductsFood/usetagsProducts.js +0 -98
- package/src/hooks/useProviders/index.js +0 -3
- package/src/hooks/useProviders/queries.js +0 -31
- package/src/hooks/useProviders/useProvidersCreateStore/index.js +0 -12
- package/src/hooks/useProviders/useProvidersDataStore/index.js +0 -24
- package/src/hooks/useProvidersStore/index.js +0 -24
- package/src/hooks/useProvidersStore/queries.js +0 -31
- package/src/hooks/usePushNotificationOrder/index.js +0 -52
- package/src/hooks/usePushNotifications/helpers/index.js +0 -114
- package/src/hooks/usePushNotifications/index.js +0 -149
- package/src/hooks/useQueryLocationsMap/index.js +0 -19
- package/src/hooks/useQueryLocationsMap/queries.js +0 -40
- package/src/hooks/useRatingArrayData/index.js +0 -54
- package/src/hooks/useRatingArrayData/queries.js +0 -19
- package/src/hooks/useReactToPrint/index.js +0 -1223
- package/src/hooks/useRemoveExtraProductFoodsOptional/index.js +0 -23
- package/src/hooks/useRemoveExtraProductFoodsOptional/queries.js +0 -48
- package/src/hooks/useReport/index.js +0 -47
- package/src/hooks/useReport/queries.js +0 -123
- package/src/hooks/useRestaurant/helpers/index.js +0 -24
- package/src/hooks/useRestaurant/helpers/manageStatusOpen.js +0 -26
- package/src/hooks/useRestaurant/index.js +0 -69
- package/src/hooks/useRestaurant/queries.js +0 -81
- package/src/hooks/useRoads/index.js +0 -19
- package/src/hooks/useRoads/queries.js +0 -13
- package/src/hooks/useRoles/index.js +0 -4
- package/src/hooks/useRoles/queries.js +0 -70
- package/src/hooks/useRoles/useCreateRole.js +0 -37
- package/src/hooks/useRoles/useGetRoles.js +0 -36
- package/src/hooks/useRoles/useRemoveRoles.js +0 -40
- package/src/hooks/useRoles/useUpdateRolesPriority.js +0 -44
- package/src/hooks/useSales/helpers/index.js +0 -55
- package/src/hooks/useSales/index.js +0 -1381
- package/src/hooks/useSales/queries.js +0 -424
- package/src/hooks/useSales/useGetAllSales/index.js +0 -25
- package/src/hooks/useSales/useGetSale.js +0 -13
- package/src/hooks/useSales/useTotalSales.js +0 -23
- package/src/hooks/useSaveAvailableProduct/helpers/index.js +0 -38
- package/src/hooks/useSaveAvailableProduct/index.js +0 -31
- package/src/hooks/useSaveAvailableProduct/queries.js +0 -10
- package/src/hooks/useSaveLocation/index.js +0 -16
- package/src/hooks/useSaveLocation/queries.js +0 -19
- package/src/hooks/useSchedule/index.js +0 -78
- package/src/hooks/useSchedule/index.jsx +0 -22
- package/src/hooks/useSchedule/queries.js +0 -43
- package/src/hooks/useScheduleData/index.js +0 -123
- package/src/hooks/useScroll/index.js +0 -56
- package/src/hooks/useScrollRotate/index.js +0 -16
- package/src/hooks/useSetImageProducts/index.js +0 -57
- package/src/hooks/useSetImageProducts/queries.js +0 -18
- package/src/hooks/useSetSession/index.js +0 -44
- package/src/hooks/useSetState/index.js +0 -24
- package/src/hooks/useSetupSchedule/helpers/index.js +0 -85
- package/src/hooks/useSetupSchedule/index.js +0 -272
- package/src/hooks/useStatusOpenStore/helpers/index.js +0 -101
- package/src/hooks/useStatusOpenStore/index.js +0 -179
- package/src/hooks/useStatusOrdersClient/helpers/index.js +0 -14
- package/src/hooks/useStatusOrdersClient/index.js +0 -17
- package/src/hooks/useStatusOrdersClient/queries.js +0 -80
- package/src/hooks/useStockMovements/helpers/index.js +0 -16
- package/src/hooks/useStockMovements/index.js +0 -38
- package/src/hooks/useStore/index.js +0 -80
- package/src/hooks/useStore/queries.js +0 -163
- package/src/hooks/useStoreCalendar/index.js +0 -5
- package/src/hooks/useStoreContacts/index.js +0 -47
- package/src/hooks/useStoreContacts/queries.js +0 -48
- package/src/hooks/useStoreTable/index.js +0 -2
- package/src/hooks/useStoreTable/queries.js +0 -47
- package/src/hooks/useStoreTable/useStoreTableCreate.js +0 -76
- package/src/hooks/useStoreTable/useStoreTables.js +0 -14
- package/src/hooks/useSubscriptionValidation/index.js +0 -41
- package/src/hooks/useTagProducts/index.ts +0 -3
- package/src/hooks/useTagProducts/useDeleteOneTag.ts +0 -106
- package/src/hooks/useTagProducts/useGetAllTags.ts +0 -68
- package/src/hooks/useTagProducts/useRegisterMultipleTags.ts +0 -156
- package/src/hooks/useTimeAgo/useTimeAgo.js +0 -39
- package/src/hooks/useTokenCards/index.js +0 -41
- package/src/hooks/useTopProductsMovements/index.js +0 -27
- package/src/hooks/useTotalAllSales/index.js +0 -25
- package/src/hooks/useTotalProductsInStock/index.js +0 -23
- package/src/hooks/useTotalProductsSold/index.js +0 -23
- package/src/hooks/useTotalProductsSolded/index.js +0 -20
- package/src/hooks/useUpdateCart/index.js +0 -130
- package/src/hooks/useUpdateCartCookie/index.js +0 -43
- package/src/hooks/useUpdateDashboardComponent/index.ts +0 -91
- package/src/hooks/useUpdateExistingOrders/index.js +0 -85
- package/src/hooks/useUpdateExtProductFoodsSubOptional/index.js +0 -60
- package/src/hooks/useUpdateModuleOrder/index.js +0 -37
- package/src/hooks/useUpdateMultipleExtProduct/index.js +0 -33
- package/src/hooks/useUpdateMultipleExtProduct/queries.js +0 -33
- package/src/hooks/useUpdateMultipleProducts/index.js +0 -80
- package/src/hooks/useUpdateMultipleProducts/queries.js +0 -51
- package/src/hooks/useUploadProducts/helpers/index.js +0 -1
- package/src/hooks/useUploadProducts/helpers/parseNumber.js +0 -37
- package/src/hooks/useUploadProducts/helpers/validateProductDataExcel.js +0 -73
- package/src/hooks/useUploadProducts/index.js +0 -422
- package/src/hooks/useUpsertGoal/index.js +0 -68
- package/src/hooks/useUser/index.js +0 -23
- package/src/hooks/useUser/queries.js +0 -131
- package/src/hooks/useWeeklyStockMovement/helpers/index.js +0 -32
- package/src/hooks/useWeeklyStockMovement/index.js +0 -51
- package/src/hooks/useWindowSize/index.js +0 -38
- package/src/index.jsx +0 -9
- package/src/mock/dessert/index.js +0 -16
- package/src/mock/index.js +0 -1
- package/src/security/index.js +0 -1
- package/src/services/index.js +0 -0
- package/src/utils/UtilDateRange.js +0 -31
- package/src/utils/index.js +0 -306
- package/tsconfig.json +0 -5
|
@@ -1,373 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
useCallback,
|
|
3
|
-
useEffect,
|
|
4
|
-
useMemo,
|
|
5
|
-
useRef,
|
|
6
|
-
useState,
|
|
7
|
-
createRef
|
|
8
|
-
} from 'react'
|
|
9
|
-
import { useUpdateMultipleExtProduct } from '../useUpdateMultipleExtProduct'
|
|
10
|
-
import { useMutation } from '@apollo/client'
|
|
11
|
-
import { EDIT_EXTRA_PRODUCT_FOODS } from './queries'
|
|
12
|
-
import { findNumbersExceedingRange, transformData, updateErrorFieldByIndex } from './helpers'
|
|
13
|
-
import { useDeleteExtraProductFoods } from '../useDeleteExtraProductFoods'
|
|
14
|
-
|
|
15
|
-
export const useDessertWithPrice = ({
|
|
16
|
-
dataExtra = [],
|
|
17
|
-
sendNotification = ({
|
|
18
|
-
title,
|
|
19
|
-
description,
|
|
20
|
-
backgroundColor
|
|
21
|
-
}) => {
|
|
22
|
-
return {
|
|
23
|
-
title,
|
|
24
|
-
description,
|
|
25
|
-
backgroundColor
|
|
26
|
-
}
|
|
27
|
-
},
|
|
28
|
-
setAlertBox = ({ message, duration = 10000, success = true }) => { return { message, duration, success } }
|
|
29
|
-
} = {}) => {
|
|
30
|
-
const [selected, setSelected] = useState({
|
|
31
|
-
loading: false,
|
|
32
|
-
exPid: null
|
|
33
|
-
})
|
|
34
|
-
const [editExtraProductFoods] = useMutation(EDIT_EXTRA_PRODUCT_FOODS)
|
|
35
|
-
|
|
36
|
-
const initialLine = useMemo(() => {
|
|
37
|
-
return {
|
|
38
|
-
extraName: '',
|
|
39
|
-
extraPrice: '',
|
|
40
|
-
exState: false
|
|
41
|
-
}
|
|
42
|
-
}, [])
|
|
43
|
-
|
|
44
|
-
const initialLineItems = useMemo(() => {
|
|
45
|
-
return {
|
|
46
|
-
Lines: [
|
|
47
|
-
{
|
|
48
|
-
extraName: '',
|
|
49
|
-
extraPrice: '',
|
|
50
|
-
exState: false
|
|
51
|
-
},
|
|
52
|
-
(initialLine)
|
|
53
|
-
]
|
|
54
|
-
}
|
|
55
|
-
}, [initialLine])
|
|
56
|
-
const transformedData = transformData(dataExtra)
|
|
57
|
-
|
|
58
|
-
const [LineItems, setLine] = useState(
|
|
59
|
-
Array.isArray(dataExtra) && dataExtra.length > 0 ? { Lines: transformedData } : initialLineItems
|
|
60
|
-
)
|
|
61
|
-
|
|
62
|
-
const inputRefs = useRef(LineItems.Lines.map(() => createRef()))
|
|
63
|
-
|
|
64
|
-
const handleSelect = (item, index) => {
|
|
65
|
-
try {
|
|
66
|
-
const { exPid } = item || {}
|
|
67
|
-
setSelected({ exPid, loading: false })
|
|
68
|
-
if (inputRefs?.current[index]) {
|
|
69
|
-
inputRefs.current[index].current.focus()
|
|
70
|
-
}
|
|
71
|
-
} catch (error) {
|
|
72
|
-
return null
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
useEffect(() => {
|
|
77
|
-
// Asegurándote de que las referencias se actualicen si LineItems cambia
|
|
78
|
-
inputRefs.current = LineItems.Lines.map((_, i) => inputRefs.current[i] || createRef())
|
|
79
|
-
}, [LineItems])
|
|
80
|
-
|
|
81
|
-
const handleCleanLines = useCallback(() => {
|
|
82
|
-
setLine(Array.isArray(dataExtra) && dataExtra.length > 0 ? { Lines: transformedData } : initialLineItems)
|
|
83
|
-
}, [initialLineItems])
|
|
84
|
-
|
|
85
|
-
const [updateMultipleExtProduct, { loading }] = useUpdateMultipleExtProduct({
|
|
86
|
-
handleCleanLines: () => { },
|
|
87
|
-
sendNotification
|
|
88
|
-
})
|
|
89
|
-
/**
|
|
90
|
-
* Handles the addition of two new lines to the Lines array in LineItems state.
|
|
91
|
-
*/
|
|
92
|
-
const handleAdd = useCallback(() => {
|
|
93
|
-
try {
|
|
94
|
-
// Ensure that LineItems and initialLine are not null or undefined
|
|
95
|
-
if (!LineItems || !initialLine) {
|
|
96
|
-
throw new Error('Han ocurrido un error.')
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
// Ensure that LineItems.Lines is an array
|
|
100
|
-
if (!Array.isArray(LineItems.Lines)) {
|
|
101
|
-
throw new Error('Han ocurrido un error.')
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
// Clone the existing Lines array and add two new objects (clones of initialLine) to it
|
|
105
|
-
const Lines = [...LineItems.Lines, { ...initialLine }]
|
|
106
|
-
|
|
107
|
-
// Update the LineItems state with the new Lines array
|
|
108
|
-
setLine((prevLineItems) => { return { ...prevLineItems, Lines } })
|
|
109
|
-
} catch (error) {
|
|
110
|
-
sendNotification({
|
|
111
|
-
title: error.message,
|
|
112
|
-
description: 'Error',
|
|
113
|
-
backgroundColor: 'error'
|
|
114
|
-
})
|
|
115
|
-
}
|
|
116
|
-
}, [LineItems, initialLine, setLine])
|
|
117
|
-
|
|
118
|
-
const handleFocusChange = (index) => {
|
|
119
|
-
const lastItem = LineItems.Lines.length - 1
|
|
120
|
-
if (lastItem === index) {
|
|
121
|
-
handleAdd()
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
/**
|
|
126
|
-
* Handles changes in line items, updating the state accordingly.
|
|
127
|
-
* @param {number} index - The index of the line item being updated.
|
|
128
|
-
* @param {string} name - The name of the attribute being changed.
|
|
129
|
-
* @param {any} value - The new value of the attribute.
|
|
130
|
-
*/
|
|
131
|
-
const handleLineChange = (index, name, value) => {
|
|
132
|
-
const newLines = LineItems.Lines.map((line, i) => {
|
|
133
|
-
if (i !== index) return { ...line }
|
|
134
|
-
|
|
135
|
-
const newLine = { ...line }
|
|
136
|
-
|
|
137
|
-
if (name === 'extraName' || name === 'extraPrice') {
|
|
138
|
-
newLine[name] = value
|
|
139
|
-
} else if (name === 'exState') {
|
|
140
|
-
newLine[name] = value.target.checked
|
|
141
|
-
} else {
|
|
142
|
-
newLine[name] = value
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
return newLine
|
|
146
|
-
})
|
|
147
|
-
|
|
148
|
-
setLine({ ...LineItems, Lines: newLines })
|
|
149
|
-
}
|
|
150
|
-
const { deleteExtraProductFoods } = useDeleteExtraProductFoods()
|
|
151
|
-
|
|
152
|
-
/**
|
|
153
|
-
* Filter out a specific line from the LineItems array.
|
|
154
|
-
* @param {number} index - Index of the line to be filtered out.
|
|
155
|
-
*/
|
|
156
|
-
const filterOneLine = (index) => {
|
|
157
|
-
// Use optional chaining to safely access nested properties.
|
|
158
|
-
const Lines = LineItems?.Lines?.filter((_, i) => { return i !== index })
|
|
159
|
-
// Use spread operator to create a new object with the filtered Lines array.
|
|
160
|
-
return setLine({ ...LineItems, Lines })
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
/**
|
|
164
|
-
* Removes a product extra by index or external product ID.
|
|
165
|
-
*
|
|
166
|
-
* @param {number} i - Index of the item in the list.
|
|
167
|
-
* @param {string} [exPid] - External product ID to remove (optional).
|
|
168
|
-
* @returns {Promise<void>}
|
|
169
|
-
*/
|
|
170
|
-
const handleRemove = async (i, exPid) => {
|
|
171
|
-
try {
|
|
172
|
-
if (!exPid) {
|
|
173
|
-
return filterOneLine(i)
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
const findDataExtra = dataExtra?.find(x => x?.exPid === exPid)
|
|
177
|
-
if (!findDataExtra) return
|
|
178
|
-
|
|
179
|
-
await deleteExtraProductFoods({
|
|
180
|
-
variables: {
|
|
181
|
-
state: 1,
|
|
182
|
-
id: exPid
|
|
183
|
-
},
|
|
184
|
-
update: (cache, { data }) => {
|
|
185
|
-
const res = data?.deleteExtraProduct
|
|
186
|
-
const success = res?.success
|
|
187
|
-
const message = res?.message || ''
|
|
188
|
-
|
|
189
|
-
if (!success) {
|
|
190
|
-
return sendNotification({
|
|
191
|
-
title: 'Error',
|
|
192
|
-
description: message,
|
|
193
|
-
backgroundColor: 'error'
|
|
194
|
-
})
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
sendNotification({
|
|
198
|
-
title: 'Producto eliminado',
|
|
199
|
-
description: message,
|
|
200
|
-
backgroundColor: 'success'
|
|
201
|
-
})
|
|
202
|
-
|
|
203
|
-
cache.modify({
|
|
204
|
-
fields: {
|
|
205
|
-
ExtProductFoodsAll: (dataOld = []) => {
|
|
206
|
-
if (!Array.isArray(dataOld)) return dataOld
|
|
207
|
-
|
|
208
|
-
const transformedData = transformData(dataOld)
|
|
209
|
-
const Lines = transformedData.filter((_, index) => index !== i)
|
|
210
|
-
const newCache = dataOld.filter((_, index) => index !== i)
|
|
211
|
-
|
|
212
|
-
setLine(prev => ({
|
|
213
|
-
...prev,
|
|
214
|
-
Lines
|
|
215
|
-
}))
|
|
216
|
-
|
|
217
|
-
return newCache
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
})
|
|
221
|
-
}
|
|
222
|
-
})
|
|
223
|
-
} catch (error) {
|
|
224
|
-
console.log('🚀 ~ handleRemove ~ error:', error)
|
|
225
|
-
sendNotification({
|
|
226
|
-
title: 'Error',
|
|
227
|
-
description: 'Ocurrió un error al eliminar el producto',
|
|
228
|
-
backgroundColor: 'error'
|
|
229
|
-
})
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
useEffect(() => {
|
|
234
|
-
setLine(Array.isArray(dataExtra) && dataExtra.length > 0 ? { Lines: transformedData } : initialLineItems)
|
|
235
|
-
}, [dataExtra.length])
|
|
236
|
-
|
|
237
|
-
const prepareAndValidateData = useCallback((pId) => {
|
|
238
|
-
const dataArr = LineItems?.Lines?.map(({ extraPrice, exState, extraName }) => ({
|
|
239
|
-
extraPrice,
|
|
240
|
-
exState: exState === true ? 1 : 0,
|
|
241
|
-
extraName,
|
|
242
|
-
pId
|
|
243
|
-
}))
|
|
244
|
-
console.log(dataArr)
|
|
245
|
-
const message = 'Complete los campos vacíos'
|
|
246
|
-
const findInputEmpty = dataArr?.find(({ extraName }) => extraName === '')
|
|
247
|
-
const findInputEmptyPrice = dataArr?.find(({ extraPrice }) => isNaN(extraPrice) || extraPrice === '')
|
|
248
|
-
|
|
249
|
-
if (findInputEmpty || findInputEmptyPrice) {
|
|
250
|
-
setAlertBox({ message })
|
|
251
|
-
return null
|
|
252
|
-
}
|
|
253
|
-
return dataArr
|
|
254
|
-
}, [LineItems])
|
|
255
|
-
|
|
256
|
-
const handleEdit = async (i, exPid) => {
|
|
257
|
-
setSelected({ exPid: null, loading: true })
|
|
258
|
-
const findOneExtra = LineItems?.Lines?.find((x, i) => { return x?.exPid === exPid })
|
|
259
|
-
const { extraName, extraPrice: price } = findOneExtra || {}
|
|
260
|
-
const extraPrice = price
|
|
261
|
-
const { data } = await editExtraProductFoods({
|
|
262
|
-
variables: {
|
|
263
|
-
exPid,
|
|
264
|
-
extraName,
|
|
265
|
-
extraPrice
|
|
266
|
-
},
|
|
267
|
-
update: (cache) => {
|
|
268
|
-
cache.modify({
|
|
269
|
-
fields: {
|
|
270
|
-
ExtProductFoodsAll: () => {
|
|
271
|
-
return LineItems?.Lines || []
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
})
|
|
275
|
-
}
|
|
276
|
-
})
|
|
277
|
-
if (!data?.editExtraProductFoods?.success) {
|
|
278
|
-
return sendNotification({
|
|
279
|
-
title: 'Error',
|
|
280
|
-
description: data?.editExtraProductFoods?.message || '',
|
|
281
|
-
backgroundColor: 'error'
|
|
282
|
-
})
|
|
283
|
-
}
|
|
284
|
-
|
|
285
|
-
if (data?.editExtraProductFoods?.success) {
|
|
286
|
-
return sendNotification({
|
|
287
|
-
title: 'Producto actualizado',
|
|
288
|
-
description: data?.editExtraProductFoods?.message || '',
|
|
289
|
-
backgroundColor: 'success'
|
|
290
|
-
})
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
function filterItemsWithValidExPid (items, pId) {
|
|
295
|
-
// Primero, filtrar los elementos basados en exPid
|
|
296
|
-
const filteredItems = items.filter(({ exPid }) => {
|
|
297
|
-
const isExPidValid = !exPid
|
|
298
|
-
return isExPidValid
|
|
299
|
-
})
|
|
300
|
-
|
|
301
|
-
// Luego, transformar los elementos filtrados
|
|
302
|
-
return filteredItems.map(({ exPid, extraPrice, exState, extraName }) => ({
|
|
303
|
-
exPid,
|
|
304
|
-
extraPrice,
|
|
305
|
-
exState: exState === true ? 1 : 0,
|
|
306
|
-
extraName,
|
|
307
|
-
pId
|
|
308
|
-
}))
|
|
309
|
-
}
|
|
310
|
-
|
|
311
|
-
const handleSubmit = ({ pId }) => {
|
|
312
|
-
try {
|
|
313
|
-
const checkNumberRange = findNumbersExceedingRange(LineItems?.Lines)
|
|
314
|
-
updateErrorFieldByIndex({ checkNumberRange, setLine })
|
|
315
|
-
if (checkNumberRange?.length > 0) {
|
|
316
|
-
return setAlertBox({ message: 'El precio no puede ser tan alto', duration: 10000 })
|
|
317
|
-
}
|
|
318
|
-
|
|
319
|
-
if (!prepareAndValidateData(pId)) return
|
|
320
|
-
const dataArr = LineItems?.Lines?.map(x => {
|
|
321
|
-
const extraPrice = x.extraPrice
|
|
322
|
-
const extraName = x.extraName
|
|
323
|
-
return {
|
|
324
|
-
extraPrice,
|
|
325
|
-
exState: x.exState === true ? 1 : 0,
|
|
326
|
-
extraName,
|
|
327
|
-
pId
|
|
328
|
-
}
|
|
329
|
-
})
|
|
330
|
-
const filteredItems = filterItemsWithValidExPid(LineItems?.Lines, pId)
|
|
331
|
-
|
|
332
|
-
return updateMultipleExtProduct({
|
|
333
|
-
variables: {
|
|
334
|
-
inputLineItems: {
|
|
335
|
-
setData: filteredItems
|
|
336
|
-
}
|
|
337
|
-
},
|
|
338
|
-
update: (cache) => {
|
|
339
|
-
cache.modify({
|
|
340
|
-
fields: {
|
|
341
|
-
ExtProductFoodsAll: () => {
|
|
342
|
-
return dataArr
|
|
343
|
-
}
|
|
344
|
-
}
|
|
345
|
-
})
|
|
346
|
-
}
|
|
347
|
-
}).then((res) => {
|
|
348
|
-
setAlertBox({ message: 'Se ha creado correctamente', duration: 7000, success: true })
|
|
349
|
-
})
|
|
350
|
-
} catch (error) {
|
|
351
|
-
setAlertBox({ message: `${error}`, duration: 7000 })
|
|
352
|
-
}
|
|
353
|
-
}
|
|
354
|
-
const isLoading = loading
|
|
355
|
-
|
|
356
|
-
return {
|
|
357
|
-
initialLine,
|
|
358
|
-
inputRefs,
|
|
359
|
-
selected,
|
|
360
|
-
loading: isLoading,
|
|
361
|
-
initialLineItems,
|
|
362
|
-
LineItems,
|
|
363
|
-
handleCleanLines,
|
|
364
|
-
handleLineChange,
|
|
365
|
-
handleSelect,
|
|
366
|
-
handleFocusChange,
|
|
367
|
-
setLine,
|
|
368
|
-
handleEdit,
|
|
369
|
-
handleRemove,
|
|
370
|
-
handleAdd,
|
|
371
|
-
handleSubmit
|
|
372
|
-
}
|
|
373
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { gql } from '@apollo/client'
|
|
2
|
-
|
|
3
|
-
export const DELETE_EXTRA_PRODUCTS = gql`
|
|
4
|
-
mutation deleteExtraProduct($id: ID, $state: Int){
|
|
5
|
-
deleteExtraProduct(id: $id, state: $state){
|
|
6
|
-
success,
|
|
7
|
-
message
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
`
|
|
11
|
-
export const EDIT_EXTRA_PRODUCT_FOODS = gql`
|
|
12
|
-
mutation EditExtraProductFoods($exPid: ID, $state: Int, $extraName: String, $extraPrice: Float) {
|
|
13
|
-
editExtraProductFoods(exPid: $exPid, state: $state, extraName: $extraName, extraPrice: $extraPrice) {
|
|
14
|
-
success
|
|
15
|
-
message
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
`
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
'use client'
|
|
2
|
-
import { useEffect, useRef, useState } from 'react'
|
|
3
|
-
|
|
4
|
-
export const useDevWS = () => {
|
|
5
|
-
const [status, setStatus] = useState("loading")
|
|
6
|
-
const wsRef = useRef<WebSocket | null>(null)
|
|
7
|
-
|
|
8
|
-
useEffect(() => {
|
|
9
|
-
let reconnectTimer: any
|
|
10
|
-
|
|
11
|
-
const connect = async () => {
|
|
12
|
-
try {
|
|
13
|
-
const r = await fetch('/api/ws-port')
|
|
14
|
-
const { port } = await r.json()
|
|
15
|
-
|
|
16
|
-
if (!port) {
|
|
17
|
-
setStatus("down")
|
|
18
|
-
reconnectTimer = setTimeout(connect, 2000)
|
|
19
|
-
return
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
const ws = new WebSocket(`ws://localhost:${port}`)
|
|
23
|
-
wsRef.current = ws
|
|
24
|
-
|
|
25
|
-
ws.onopen = () => {
|
|
26
|
-
setStatus("up")
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
ws.onerror = () => {
|
|
30
|
-
setStatus("down")
|
|
31
|
-
ws.close()
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
ws.onclose = () => {
|
|
35
|
-
setStatus("down")
|
|
36
|
-
reconnectTimer = setTimeout(connect, 2000)
|
|
37
|
-
}
|
|
38
|
-
} catch {
|
|
39
|
-
setStatus("down")
|
|
40
|
-
reconnectTimer = setTimeout(connect, 2000)
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
connect()
|
|
45
|
-
|
|
46
|
-
return () => {
|
|
47
|
-
wsRef.current?.close()
|
|
48
|
-
clearTimeout(reconnectTimer)
|
|
49
|
-
}
|
|
50
|
-
}, [])
|
|
51
|
-
|
|
52
|
-
return status
|
|
53
|
-
}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { gql } from '@apollo/client'
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Query to fetch all device users with extended fields
|
|
5
|
-
*/
|
|
6
|
-
export const GET_ALL_DEVICES = gql`
|
|
7
|
-
query getDeviceUsers {
|
|
8
|
-
getDeviceUsers {
|
|
9
|
-
dId
|
|
10
|
-
id
|
|
11
|
-
deviceId
|
|
12
|
-
deviceName
|
|
13
|
-
locationFormat
|
|
14
|
-
type
|
|
15
|
-
shortName
|
|
16
|
-
platform
|
|
17
|
-
version
|
|
18
|
-
family
|
|
19
|
-
os
|
|
20
|
-
model
|
|
21
|
-
ip
|
|
22
|
-
isBot
|
|
23
|
-
dState
|
|
24
|
-
createdAt
|
|
25
|
-
updatedAt
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
`
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { useQuery } from '@apollo/client'
|
|
2
|
-
import { GET_ALL_DEVICES } from './queries'
|
|
3
|
-
import { useFormatDate } from '../useFormatDate'
|
|
4
|
-
|
|
5
|
-
export const useDevices = () => {
|
|
6
|
-
const { data, loading } = useQuery(GET_ALL_DEVICES, {
|
|
7
|
-
onError: (error) => {
|
|
8
|
-
console.error(error)
|
|
9
|
-
}
|
|
10
|
-
})
|
|
11
|
-
|
|
12
|
-
// Función para formatear la fecha
|
|
13
|
-
const { formatDateInTimeZone } = useFormatDate({})
|
|
14
|
-
|
|
15
|
-
const listDevices = Array.isArray(data?.getDeviceUsers)
|
|
16
|
-
? data?.getDeviceUsers.map((device) => {
|
|
17
|
-
// const formattedDate = formatDateInTimeZone(device.createdAt)
|
|
18
|
-
return {
|
|
19
|
-
...device
|
|
20
|
-
// createdAt: formattedDate
|
|
21
|
-
}
|
|
22
|
-
})
|
|
23
|
-
: []
|
|
24
|
-
return {
|
|
25
|
-
data: listDevices,
|
|
26
|
-
loading
|
|
27
|
-
}
|
|
28
|
-
}
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import { useMutation, gql } from '@apollo/client'
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* GraphQL mutation para registrar un nuevo dispositivo
|
|
5
|
-
*/
|
|
6
|
-
const REGISTER_DEVICE_USER = gql`
|
|
7
|
-
mutation RegisterDeviceUser($input: DeviceUserInput!) {
|
|
8
|
-
newRegisterDeviceUser(input: $input) {
|
|
9
|
-
success
|
|
10
|
-
message
|
|
11
|
-
data {
|
|
12
|
-
dId
|
|
13
|
-
id
|
|
14
|
-
deviceId
|
|
15
|
-
deviceName
|
|
16
|
-
locationFormat
|
|
17
|
-
type
|
|
18
|
-
shortName
|
|
19
|
-
platform
|
|
20
|
-
version
|
|
21
|
-
dState
|
|
22
|
-
createdAt
|
|
23
|
-
dState
|
|
24
|
-
}
|
|
25
|
-
errors {
|
|
26
|
-
path
|
|
27
|
-
message
|
|
28
|
-
type
|
|
29
|
-
context {
|
|
30
|
-
limit
|
|
31
|
-
value
|
|
32
|
-
label
|
|
33
|
-
key
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
`
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Custom hook para la mutación RegisterDeviceUser
|
|
42
|
-
* @returns {Object} - Función para registrar el dispositivo y el estado de la operación
|
|
43
|
-
*/
|
|
44
|
-
export const useRegisterDeviceUser = () => {
|
|
45
|
-
const [registerDeviceUser, { loading, error, data }] = useMutation(REGISTER_DEVICE_USER)
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* Función para manejar la mutación
|
|
49
|
-
* @param {Object} input - Datos del dispositivo a registrar
|
|
50
|
-
* @returns {Promise<Object>} - Resultado de la operación
|
|
51
|
-
*/
|
|
52
|
-
const handleRegisterDeviceUser = async (input) => {
|
|
53
|
-
try {
|
|
54
|
-
const result = await registerDeviceUser({ variables: { input } })
|
|
55
|
-
|
|
56
|
-
if (result.data?.newRegisterDeviceUser?.success) {
|
|
57
|
-
return { success: true, data: result.data.newRegisterDeviceUser.data }
|
|
58
|
-
} else {
|
|
59
|
-
return {
|
|
60
|
-
success: false,
|
|
61
|
-
errors: result.data?.newRegisterDeviceUser?.errors || []
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
} catch (err) {
|
|
65
|
-
console.error('Error while registering device user:', err)
|
|
66
|
-
return { success: false, errors: [{ message: err.message }] }
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
return [handleRegisterDeviceUser, {
|
|
71
|
-
loading,
|
|
72
|
-
error,
|
|
73
|
-
data
|
|
74
|
-
}]
|
|
75
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
export const downloadFileFromResponse = async (response, fileName) => {
|
|
2
|
-
try {
|
|
3
|
-
if (!response.ok) {
|
|
4
|
-
throw new Error(`Failed to download file: ${response.statusText}`)
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
const blob = await response.blob()
|
|
8
|
-
const url = window.URL.createObjectURL(blob)
|
|
9
|
-
const link = document.createElement('a')
|
|
10
|
-
link.href = url
|
|
11
|
-
link.setAttribute('download', fileName)
|
|
12
|
-
document.body.appendChild(link)
|
|
13
|
-
link.click()
|
|
14
|
-
document.body.removeChild(link)
|
|
15
|
-
window.URL.revokeObjectURL(url)
|
|
16
|
-
} catch (error) {
|
|
17
|
-
console.error('Error downloading file:', error)
|
|
18
|
-
throw error
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
}
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
import { useLazyQuery } from '@apollo/client'
|
|
2
|
-
import { gql } from '@apollo/client'
|
|
3
|
-
import { useState } from 'react'
|
|
4
|
-
import { downloadFileFromResponse } from '../helpers/downloadFileFromResponse'
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* GraphQL query to get the report for a specific day.
|
|
10
|
-
*/
|
|
11
|
-
const GET_REPORT_DAY_NUMBER = gql`
|
|
12
|
-
query getReportDayNumber($day: Int!) {
|
|
13
|
-
getReportDayNumber(day: $day) {
|
|
14
|
-
success
|
|
15
|
-
message
|
|
16
|
-
errors {
|
|
17
|
-
path
|
|
18
|
-
message
|
|
19
|
-
type
|
|
20
|
-
}
|
|
21
|
-
data {
|
|
22
|
-
id
|
|
23
|
-
name
|
|
24
|
-
description
|
|
25
|
-
url
|
|
26
|
-
createdAt
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
`
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Custom hook to trigger the report download when the GraphQL query resolves.
|
|
34
|
-
*
|
|
35
|
-
* @returns {{
|
|
36
|
-
* downloadReport: (day: number) => void,
|
|
37
|
-
* loading: boolean,
|
|
38
|
-
* error: Error | undefined
|
|
39
|
-
* }} Object containing the trigger function, loading state and error.
|
|
40
|
-
*/
|
|
41
|
-
export const useDownloadReportByDay = ({
|
|
42
|
-
sendNotification = (
|
|
43
|
-
{ description = '', title = '', backgroundColor = 'info' } = {}
|
|
44
|
-
) => {
|
|
45
|
-
return {
|
|
46
|
-
description,
|
|
47
|
-
title,
|
|
48
|
-
backgroundColor
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
} = {}) => {
|
|
52
|
-
const [finished, setFinished] = useState(false)
|
|
53
|
-
const [fetchReport, { loading, error }] = useLazyQuery(GET_REPORT_DAY_NUMBER, {
|
|
54
|
-
fetchPolicy: 'network-only',
|
|
55
|
-
onCompleted: async ({ getReportDayNumber }) => {
|
|
56
|
-
setFinished(false)
|
|
57
|
-
try {
|
|
58
|
-
const {
|
|
59
|
-
success,
|
|
60
|
-
data,
|
|
61
|
-
message
|
|
62
|
-
} = getReportDayNumber || {}
|
|
63
|
-
if (!success || !data) {
|
|
64
|
-
setFinished(true)
|
|
65
|
-
return sendNotification({
|
|
66
|
-
description: message,
|
|
67
|
-
title: 'Error al descargar reporte',
|
|
68
|
-
backgroundColor: 'error'
|
|
69
|
-
})
|
|
70
|
-
}
|
|
71
|
-
const { url = '', name = '' } = data
|
|
72
|
-
const response = await fetch(`/api/files/${encodeURIComponent(url)}`)
|
|
73
|
-
await downloadFileFromResponse(response, name)
|
|
74
|
-
setFinished(true)
|
|
75
|
-
return sendNotification({
|
|
76
|
-
description: message ?? 'Reporte descargado exitosamente',
|
|
77
|
-
title: 'Reporte descargado',
|
|
78
|
-
backgroundColor: 'success'
|
|
79
|
-
})
|
|
80
|
-
} catch (e) {
|
|
81
|
-
setFinished(false)
|
|
82
|
-
}
|
|
83
|
-
},
|
|
84
|
-
onError: () => {
|
|
85
|
-
setFinished(true)
|
|
86
|
-
}
|
|
87
|
-
})
|
|
88
|
-
|
|
89
|
-
/**
|
|
90
|
-
* Triggers the report download process.
|
|
91
|
-
* @param {number} day - The report day number to fetch.
|
|
92
|
-
*/
|
|
93
|
-
const downloadReport = (day: number) => {
|
|
94
|
-
setFinished(false)
|
|
95
|
-
if (!day || typeof day !== 'number') {
|
|
96
|
-
console.warn('Invalid day for report download')
|
|
97
|
-
return
|
|
98
|
-
}
|
|
99
|
-
fetchReport({ variables: { day } })
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
return [downloadReport, { loading, error, finished }] as const
|
|
103
|
-
}
|