From 329c69ec3de3b8f1e30a782f7372957127358402 Mon Sep 17 00:00:00 2001 From: Methapon2001 <61303214+Methapon2001@users.noreply.github.com> Date: Thu, 6 Mar 2025 16:22:09 +0700 Subject: [PATCH] feat: add series --- src/controllers/00-stats-controller.ts | 32 ++++++++++++++++++-------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/src/controllers/00-stats-controller.ts b/src/controllers/00-stats-controller.ts index 8cabae2..9bb6955 100644 --- a/src/controllers/00-stats-controller.ts +++ b/src/controllers/00-stats-controller.ts @@ -503,6 +503,7 @@ export class StatsController extends Controller { select: { agentPrice: true, creditNote: true, + createdAt: true, }, }, }, @@ -546,6 +547,8 @@ export class StatsController extends Controller { const netProfit = creditNote ? 0 : precisionRound(finalPrice - expenses); return { + month: v.quotation.createdAt.getMonth() + 1, + year: v.quotation.createdAt.getFullYear(), income, expenses, netProfit, @@ -553,15 +556,26 @@ export class StatsController extends Controller { }); }); - return data.flat().reduce( - (a, c) => { - a.income += c.income; - a.expenses += c.expenses; - a.netProfit += c.netProfit; - return a; - }, - { income: 0, expenses: 0, netProfit: 0 }, - ); + return data + .flat() + .reduce<{ income: number; expenses: 0; netProfit: 0; dataset: (typeof data)[number] }>( + (a, c) => { + const current = a.dataset.find((v) => v.month === c.month && v.year === c.year); + + if (current) { + current.income += c.income; + current.expenses += c.expenses; + current.netProfit += c.netProfit; + } + + a.income += c.income; + a.expenses += c.expenses; + a.netProfit += c.netProfit; + + return a; + }, + { income: 0, expenses: 0, netProfit: 0, dataset: [] }, + ); } @Get("payment")