Skip to content

Commit 31d9e1e

Browse files
authored
feat: previous week kitchen data (#43)
* feat: previous week kitchen data * chore: show column * fix: eslint
1 parent 0fb64ff commit 31d9e1e

3 files changed

Lines changed: 31 additions & 3 deletions

File tree

apps/web-app/app/pages/kitchen/index.vue

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,9 @@
106106
{{ row.getValue('address') }}, {{ row.getValue('city') }}
107107
</div>
108108
</template>
109+
<template #revenueForPreviousWeek-cell="{ row }">
110+
<div>{{ row.getValue('revenueForPreviousWeek') }} руб</div>
111+
</template>
109112
<template #revenueForThisWeek-cell="{ row }">
110113
<div>{{ row.getValue('revenueForThisWeek') }} руб</div>
111114
</template>
@@ -232,6 +235,21 @@ const columns: Ref<TableColumn<KitchenWithData>[]> = ref([{
232235
}, {
233236
accessorKey: 'city',
234237
header: 'Населенный пункт',
238+
}, {
239+
accessorKey: 'revenueForPreviousWeek',
240+
header: ({ column }) => {
241+
const isSorted = column.getIsSorted()
242+
const icon = isSorted === 'asc' ? 'i-lucide-arrow-up-narrow-wide' : 'i-lucide-arrow-down-wide-narrow'
243+
244+
return h(UButton, {
245+
color: 'neutral',
246+
variant: 'ghost',
247+
label: 'Выручка за прошлую неделю',
248+
icon: isSorted ? icon : 'i-lucide-arrow-up-down',
249+
class: '-mx-2.5',
250+
onClick: () => column.toggleSorting(column.getIsSorted() === 'asc'),
251+
})
252+
},
235253
}, {
236254
accessorKey: 'revenueForThisWeek',
237255
header: ({ column }) => {

apps/web-app/server/tasks/kitchen/revenue-update.ts

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,25 @@ export default defineTask({
1717
const thisMonday = startOfWeek(utcNow, { weekStartsOn: 1 })
1818
const thisSunday = endOfWeek(utcNow, { weekStartsOn: 1 })
1919

20+
// Previous week
21+
const utcWeekAgo = new Date(utcNow.getTime() - 7 * 24 * 60 * 60 * 1000)
22+
const prevMonday = startOfWeek(utcWeekAgo, { weekStartsOn: 1 })
23+
const prevSunday = endOfWeek(utcWeekAgo, { weekStartsOn: 1 })
24+
2025
for (const kitchen of kitchens) {
21-
const revenues = await repository.kitchen.listRevenuesByKitchenForPeriod(kitchen.id, thisMonday, thisSunday)
26+
const revenuesThisWeek = await repository.kitchen.listRevenuesByKitchenForPeriod(kitchen.id, thisMonday, thisSunday)
27+
const revenuesPrevWeek = await repository.kitchen.listRevenuesByKitchenForPeriod(kitchen.id, prevMonday, prevSunday)
28+
29+
const revenueForThisWeek = Math.round(revenuesThisWeek.reduce((acc, curr) => acc + curr.total, 0))
30+
const revenueForPreviousWeek = Math.round(revenuesPrevWeek.reduce((acc, curr) => acc + curr.total, 0))
2231

23-
const revenueForThisWeek = Math.round(revenues.reduce((acc, curr) => acc + curr.total, 0))
24-
if (revenueForThisWeek === kitchen.revenueForThisWeek) {
32+
if (revenueForThisWeek === kitchen.revenueForThisWeek && revenueForPreviousWeek === kitchen.revenueForPreviousWeek) {
2533
continue
2634
}
2735

2836
await repository.kitchen.update(kitchen.id, {
2937
revenueForThisWeek,
38+
revenueForPreviousWeek,
3039
})
3140

3241
// logger.log(`Kitchen ${kitchen.id}: Revenue updated from ${kitchen.revenueForThisWeek} to ${revenueForThisWeek}`)

packages/database/src/tables.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -409,6 +409,7 @@ export const kitchens = pgTable('kitchens', {
409409
isPickupAvailable: boolean('is_pickup_available').notNull().default(true),
410410
rating: numeric('rating', { mode: 'number' }).notNull().default(0),
411411
revenueForThisWeek: numeric('revenue_for_this_week', { mode: 'number' }).notNull().default(0),
412+
revenueForPreviousWeek: numeric('revenue_for_previous_week', { mode: 'number' }).notNull().default(0),
412413
iikoAlias: varchar('iiko_alias').unique(),
413414
partnerId: cuid2('partner_id').references(() => partners.id),
414415
})

0 commit comments

Comments
 (0)