187 lines
5.2 KiB
Go
187 lines
5.2 KiB
Go
package domain
|
|
|
|
import (
|
|
"time"
|
|
|
|
dbgen "github.com/SamuelTariku/FortuneBet-Backend/gen/db"
|
|
)
|
|
|
|
type ReferralCode struct {
|
|
ID int64
|
|
ReferrerID int64
|
|
ReferralCode string
|
|
CompanyID int64
|
|
NumberOfReferrals int64
|
|
RewardAmount Currency
|
|
CreatedAt time.Time
|
|
UpdatedAt time.Time
|
|
}
|
|
|
|
type ReferralCodeRes struct {
|
|
ID int64 `json:"id"`
|
|
ReferrerID int64 `json:"referrer_id"`
|
|
ReferralCode string `json:"referral_code"`
|
|
CompanyID int64 `json:"company_id"`
|
|
NumberOfReferrals int64 `json:"number_of_referrals"`
|
|
RewardAmount float32 `json:"reward_amount"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
}
|
|
|
|
type CreateReferralCode struct {
|
|
ReferrerID int64
|
|
ReferralCode string
|
|
CompanyID int64
|
|
NumberOfReferrals int64
|
|
RewardAmount Currency
|
|
}
|
|
|
|
type UserReferral struct {
|
|
ReferredID int64
|
|
ReferralCodeID int64
|
|
}
|
|
|
|
type CreateUserReferrals struct {
|
|
ReferredID int64
|
|
ReferralCodeID int64
|
|
}
|
|
|
|
type UpdateReferralCode struct {
|
|
ID int64
|
|
IsActive bool
|
|
ReferralCode string
|
|
RewardAmount Currency
|
|
NumberOfReferrals int64
|
|
}
|
|
|
|
type ReferralStats struct {
|
|
TotalReferrals int64
|
|
TotalRewardEarned Currency
|
|
}
|
|
|
|
type ReferralStatsRes struct {
|
|
TotalReferrals int64 `json:"total_referrals"`
|
|
TotalRewardEarned float32 `json:"total_reward_earned"`
|
|
}
|
|
|
|
// type ReferralSettings struct {
|
|
// ID int64
|
|
// ReferralRewardAmount float64
|
|
// CashbackPercentage float64
|
|
// BetReferralBonusPercentage float64
|
|
// MaxReferrals int32
|
|
// ExpiresAfterDays int32
|
|
// UpdatedBy string
|
|
// CreatedAt time.Time
|
|
// UpdatedAt time.Time
|
|
// Version int32
|
|
// }
|
|
|
|
// type ReferralSettingsReq struct {
|
|
// ReferralRewardAmount float64 `json:"referral_reward_amount" validate:"required"`
|
|
// CashbackPercentage float64 `json:"cashback_percentage" validate:"required"`
|
|
// MaxReferrals int32 `json:"max_referrals" validate:"required"`
|
|
// UpdatedBy string `json:"updated_by" validate:"required"`
|
|
// }
|
|
|
|
func ConvertCreateReferralCode(code CreateReferralCode) dbgen.CreateReferralCodeParams {
|
|
return dbgen.CreateReferralCodeParams{
|
|
ReferralCode: code.ReferralCode,
|
|
ReferrerID: code.ReferrerID,
|
|
CompanyID: code.CompanyID,
|
|
NumberOfReferrals: code.NumberOfReferrals,
|
|
RewardAmount: int64(code.RewardAmount),
|
|
}
|
|
}
|
|
|
|
func ConvertDBReferralCode(code dbgen.ReferralCode) ReferralCode {
|
|
return ReferralCode{
|
|
ID: code.ID,
|
|
ReferrerID: code.ReferrerID,
|
|
ReferralCode: code.ReferralCode,
|
|
NumberOfReferrals: code.NumberOfReferrals,
|
|
RewardAmount: Currency(code.RewardAmount),
|
|
CompanyID: code.CompanyID,
|
|
CreatedAt: code.CreatedAt.Time,
|
|
UpdatedAt: code.UpdatedAt.Time,
|
|
}
|
|
}
|
|
|
|
func ConvertDBReferralCodes(codes []dbgen.ReferralCode) []ReferralCode {
|
|
result := make([]ReferralCode, len(codes))
|
|
for i, code := range codes {
|
|
result[i] = ConvertDBReferralCode(code)
|
|
}
|
|
return result
|
|
}
|
|
|
|
func ConvertCreateUserReferral(referral CreateUserReferrals) dbgen.CreateUserReferralParams {
|
|
return dbgen.CreateUserReferralParams{
|
|
ReferredID: referral.ReferredID,
|
|
ReferralCodeID: referral.ReferralCodeID,
|
|
}
|
|
}
|
|
|
|
func ConvertDBUserReferral(referral dbgen.UserReferral) UserReferral {
|
|
return UserReferral{
|
|
ReferredID: referral.ReferredID,
|
|
ReferralCodeID: referral.ReferralCodeID,
|
|
}
|
|
}
|
|
|
|
func ConvertDBUserReferrals(referrals []dbgen.UserReferral) []UserReferral {
|
|
result := make([]UserReferral, len(referrals))
|
|
for i, referral := range referrals {
|
|
result[i] = ConvertDBUserReferral(referral)
|
|
}
|
|
|
|
return result
|
|
}
|
|
|
|
func ConvertUpdateReferralCode(referralCode UpdateReferralCode) dbgen.UpdateReferralCodeParams {
|
|
return dbgen.UpdateReferralCodeParams{
|
|
ID: referralCode.ID,
|
|
IsActive: referralCode.IsActive,
|
|
ReferralCode: referralCode.ReferralCode,
|
|
NumberOfReferrals: referralCode.NumberOfReferrals,
|
|
RewardAmount: int64(referralCode.RewardAmount),
|
|
}
|
|
}
|
|
|
|
func ConvertDBReferralStats(stats dbgen.GetReferralStatsRow) ReferralStats {
|
|
return ReferralStats{
|
|
TotalReferrals: stats.TotalReferrals,
|
|
TotalRewardEarned: Currency(stats.TotalRewardEarned),
|
|
}
|
|
}
|
|
|
|
func ConvertReferralCodeRes(referral ReferralCode) ReferralCodeRes {
|
|
return ReferralCodeRes{
|
|
ID: referral.ID,
|
|
ReferrerID: referral.ReferrerID,
|
|
ReferralCode: referral.ReferralCode,
|
|
CompanyID: referral.CompanyID,
|
|
NumberOfReferrals: referral.NumberOfReferrals,
|
|
RewardAmount: referral.RewardAmount.Float32(),
|
|
CreatedAt: referral.CreatedAt,
|
|
UpdatedAt: referral.UpdatedAt,
|
|
}
|
|
}
|
|
|
|
func ConvertReferralCodeResList(referrals []ReferralCode) []ReferralCodeRes {
|
|
result := make([]ReferralCodeRes, len(referrals))
|
|
|
|
for i, referral := range referrals {
|
|
result[i] = ConvertReferralCodeRes(referral)
|
|
}
|
|
|
|
return result
|
|
}
|
|
|
|
func ConvertReferralStatsRes(stats ReferralStats) ReferralStatsRes {
|
|
return ReferralStatsRes{
|
|
TotalReferrals: stats.TotalReferrals,
|
|
TotalRewardEarned: stats.TotalRewardEarned.Float32(),
|
|
}
|
|
}
|