fix: analytics avg_daily_expense uses selected month/year instead of current
All checks were successful
CI / ci (push) Successful in 13s
All checks were successful
CI / ci (push) Successful in 13s
This commit is contained in:
@@ -317,7 +317,7 @@ func (r *FinanceRepository) GetSummary(userID int64, month, year int) (*model.Fi
|
||||
return summary, nil
|
||||
}
|
||||
|
||||
func (r *FinanceRepository) GetAnalytics(userID int64, months int) (*model.FinanceAnalytics, error) {
|
||||
func (r *FinanceRepository) GetAnalytics(userID int64, months, month, year int) (*model.FinanceAnalytics, error) {
|
||||
analytics := &model.FinanceAnalytics{}
|
||||
|
||||
// Monthly trend
|
||||
@@ -342,27 +342,27 @@ func (r *FinanceRepository) GetAnalytics(userID int64, months int) (*model.Finan
|
||||
analytics.MonthlyTrend = []model.MonthlyTrend{}
|
||||
}
|
||||
|
||||
// Avg daily expense for current month
|
||||
now := time.Now()
|
||||
// Avg daily expense for selected month
|
||||
var totalExpense float64
|
||||
var dayCount int
|
||||
r.db.QueryRow(`SELECT COALESCE(SUM(amount),0), COUNT(DISTINCT date)
|
||||
FROM finance_transactions WHERE user_id=$1 AND type='expense'
|
||||
AND EXTRACT(MONTH FROM date)=$2 AND EXTRACT(YEAR FROM date)=$3`,
|
||||
userID, int(now.Month()), now.Year()).Scan(&totalExpense, &dayCount)
|
||||
userID, month, year).Scan(&totalExpense, &dayCount)
|
||||
if dayCount > 0 {
|
||||
analytics.AvgDailyExpense = totalExpense / float64(dayCount)
|
||||
}
|
||||
|
||||
// Comparison with previous month
|
||||
prevMonth := now.AddDate(0, -1, 0)
|
||||
selectedMonth := time.Date(year, time.Month(month), 1, 0, 0, 0, 0, time.UTC)
|
||||
prevMonthTime := selectedMonth.AddDate(0, -1, 0)
|
||||
var currentMonthExp, prevMonthExp float64
|
||||
r.db.QueryRow(`SELECT COALESCE(SUM(amount),0) FROM finance_transactions WHERE user_id=$1 AND type='expense'
|
||||
AND EXTRACT(MONTH FROM date)=$2 AND EXTRACT(YEAR FROM date)=$3`,
|
||||
userID, int(now.Month()), now.Year()).Scan(¤tMonthExp)
|
||||
userID, month, year).Scan(¤tMonthExp)
|
||||
r.db.QueryRow(`SELECT COALESCE(SUM(amount),0) FROM finance_transactions WHERE user_id=$1 AND type='expense'
|
||||
AND EXTRACT(MONTH FROM date)=$2 AND EXTRACT(YEAR FROM date)=$3`,
|
||||
userID, int(prevMonth.Month()), prevMonth.Year()).Scan(&prevMonthExp)
|
||||
userID, int(prevMonthTime.Month()), prevMonthTime.Year()).Scan(&prevMonthExp)
|
||||
|
||||
analytics.ComparisonPrevMonth = model.Comparison{
|
||||
Current: currentMonthExp,
|
||||
|
||||
Reference in New Issue
Block a user