- Removed detailed event routes from the API. - Added new report request routes for creating and fetching report requests. - Introduced new domain models for report requests, including metadata and status handling. - Implemented report request processing logic, including CSV generation for event interval reports. - Enhanced company statistics handling with new domain models and service methods. - Updated repository interfaces and implementations to support new report functionalities. - Added error handling and logging for report file operations and notifications.
106 lines
3.7 KiB
Go
106 lines
3.7 KiB
Go
package domain
|
|
|
|
import (
|
|
dbgen "github.com/SamuelTariku/FortuneBet-Backend/gen/db"
|
|
"time"
|
|
)
|
|
|
|
type CompanyStat struct {
|
|
CompanyID int64
|
|
IntervalStart time.Time
|
|
TotalBets int64
|
|
TotalStake Currency
|
|
DeductedStake Currency
|
|
TotalCashOut Currency
|
|
TotalCashBacks Currency
|
|
NumberOfUnsettled int64
|
|
TotalUnsettledAmount Currency
|
|
TotalAdmins int64
|
|
TotalManagers int64
|
|
TotalCashiers int64
|
|
TotalCustomers int64
|
|
TotalApprovers int64
|
|
TotalBranches int64
|
|
UpdatedAt time.Time
|
|
}
|
|
type CompanyStatRes struct {
|
|
CompanyID int64 `json:"company_id"`
|
|
IntervalStart time.Time `json:"interval_start"`
|
|
TotalBets int64 `json:"total_bets"`
|
|
TotalStake float32 `json:"total_stake"`
|
|
DeductedStake float32 `json:"deducted_stake"`
|
|
TotalCashOut float32 `json:"total_cash_out"`
|
|
TotalCashBacks float32 `json:"total_cash_backs"`
|
|
NumberOfUnsettled int64 `json:"number_of_unsettled"`
|
|
TotalUnsettledAmount float32 `json:"total_unsettled_amount"`
|
|
TotalAdmins int64 `json:"total_admins"`
|
|
TotalManagers int64 `json:"total_managers"`
|
|
TotalCashiers int64 `json:"total_cashiers"`
|
|
TotalCustomers int64 `json:"total_customers"`
|
|
TotalApprovers int64 `json:"total_approvers"`
|
|
TotalBranches int64 `json:"total_branches"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
}
|
|
|
|
type CompanyStatFilter struct {
|
|
Interval ValidDateInterval
|
|
CompanyID ValidInt64
|
|
}
|
|
|
|
func ConvertDBCompanyStats(company dbgen.CompanyStat) CompanyStat {
|
|
return CompanyStat{
|
|
CompanyID: company.CompanyID,
|
|
TotalBets: company.TotalBets,
|
|
TotalStake: Currency(company.TotalStake),
|
|
DeductedStake: Currency(company.DeductedStake),
|
|
TotalCashOut: Currency(company.TotalCashOut),
|
|
TotalCashBacks: Currency(company.TotalCashBacks),
|
|
NumberOfUnsettled: company.NumberOfUnsettled,
|
|
TotalUnsettledAmount: Currency(company.TotalUnsettledAmount),
|
|
TotalAdmins: company.TotalAdmins,
|
|
TotalManagers: company.TotalManagers,
|
|
TotalCashiers: company.TotalCashiers,
|
|
TotalCustomers: company.TotalCustomers,
|
|
TotalApprovers: company.TotalApprovers,
|
|
TotalBranches: company.TotalBranches,
|
|
UpdatedAt: company.UpdatedAt.Time,
|
|
}
|
|
}
|
|
|
|
func ConvertDBCompanyStatsList(stats []dbgen.CompanyStat) []CompanyStat {
|
|
result := make([]CompanyStat, len(stats))
|
|
for i, stat := range stats {
|
|
result[i] = ConvertDBCompanyStats(stat)
|
|
}
|
|
return result
|
|
}
|
|
|
|
func ConvertDBCompanyStatsByInterval(company dbgen.GetCompanyStatsRow) CompanyStat {
|
|
return CompanyStat{
|
|
CompanyID: company.CompanyID,
|
|
IntervalStart: company.IntervalStart.Time,
|
|
TotalBets: company.TotalBets,
|
|
TotalStake: Currency(company.TotalStake),
|
|
DeductedStake: Currency(company.DeductedStake),
|
|
TotalCashOut: Currency(company.TotalCashOut),
|
|
TotalCashBacks: Currency(company.TotalCashBacks),
|
|
NumberOfUnsettled: company.NumberOfUnsettled,
|
|
TotalUnsettledAmount: Currency(company.TotalUnsettledAmount),
|
|
TotalAdmins: company.TotalAdmins,
|
|
TotalManagers: company.TotalManagers,
|
|
TotalCashiers: company.TotalCashiers,
|
|
TotalCustomers: company.TotalCustomers,
|
|
TotalApprovers: company.TotalApprovers,
|
|
TotalBranches: company.TotalBranches,
|
|
UpdatedAt: company.UpdatedAt.Time,
|
|
}
|
|
}
|
|
|
|
func ConvertDBCompanyStatsByIntervalList(stats []dbgen.GetCompanyStatsRow) []CompanyStat {
|
|
result := make([]CompanyStat, len(stats))
|
|
for i, stat := range stats {
|
|
result[i] = ConvertDBCompanyStatsByInterval(stat)
|
|
}
|
|
return result
|
|
}
|