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 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 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, 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), } }