Merge pull request 'efril' (#3) from efril into main

Reviewed-on: #3
This commit was merged in pull request #3.
This commit is contained in:
2025-08-13 20:19:50 +00:00
5 changed files with 601 additions and 75 deletions
+79 -1
View File
@@ -1,5 +1,13 @@
import { useQuery } from '@tanstack/react-query'
import { DashboardReport, PaymentReport, ProductSalesReport, ProfitLossReport, SalesReport } from '../../types/services/analytic'
import {
CategoryReport,
DashboardReport,
InventoryReport,
PaymentReport,
ProductSalesReport,
ProfitLossReport,
SalesReport
} from '../../types/services/analytic'
import { api } from '../api'
import { formatDateDDMMYYYY } from '../../utils/transform'
@@ -157,3 +165,73 @@ export function useProfitLossAnalytics(params: AnalyticQueryParams = {}) {
}
})
}
export function useCategoryAnalytics(params: AnalyticQueryParams = {}) {
const today = new Date()
const monthAgo = new Date()
monthAgo.setDate(today.getDate() - 30)
const defaultDateTo = formatDateDDMMYYYY(today)
const defaultDateFrom = formatDateDDMMYYYY(monthAgo)
const { date_from = defaultDateFrom, date_to = defaultDateTo, ...filters } = params
return useQuery<CategoryReport>({
queryKey: ['analytics-categories', { date_from, date_to, ...filters }],
queryFn: async () => {
const queryParams = new URLSearchParams()
queryParams.append('date_from', date_from)
queryParams.append('date_to', date_to)
Object.entries(filters).forEach(([key, value]) => {
if (value !== undefined && value !== null && value !== '') {
queryParams.append(key, value.toString())
}
})
const res = await api.get(`/analytics/categories?${queryParams.toString()}`)
return res.data.data
}
})
}
export function useInventoryAnalytics(params: AnalyticQueryParams = {}) {
const today = new Date()
const monthAgo = new Date()
monthAgo.setDate(today.getDate() - 30)
const defaultDateTo = formatDateDDMMYYYY(today)
const defaultDateFrom = formatDateDDMMYYYY(monthAgo)
const { date_from = defaultDateFrom, date_to = defaultDateTo, ...filters } = params
const user = (() => {
try {
return JSON.parse(localStorage.getItem('user') || '{}')
} catch {
return {}
}
})()
const outletId = user?.outlet_id //
return useQuery<InventoryReport>({
queryKey: ['analytics-inventory', { date_from, date_to, ...filters }],
queryFn: async () => {
const queryParams = new URLSearchParams()
queryParams.append('date_from', date_from)
queryParams.append('date_to', date_to)
Object.entries(filters).forEach(([key, value]) => {
if (value !== undefined && value !== null && value !== '') {
queryParams.append(key, value.toString())
}
})
const res = await api.get(`/inventory/report/details/${outletId}?${queryParams.toString()}`)
return res.data.data
}
})
}