package dto import "time" // RequestOTPRequest بدنه‌ی درخواست ارسال کد تایید type RequestOTPRequest struct { Phone string `json:"phone" binding:"required"` } // VerifyOTPRequest بدنه‌ی درخواست تایید کد type VerifyOTPRequest struct { Phone string `json:"phone" binding:"required"` OTP string `json:"otp" binding:"required"` } // RefreshTokenRequest بدنه‌ی درخواست رفرش توکن type RefreshTokenRequest struct { RefreshToken string `json:"refresh_token" binding:"required"` } // TokenPair جفت توکن access/refresh type TokenPair struct { AccessToken string `json:"access_token"` RefreshToken string `json:"refresh_token"` } // AuthResponse پاسخ استاندارد بعد از ورود موفق type AuthResponse struct { Tokens TokenPair `json:"tokens"` User UserProfile `json:"user"` IsNewUser bool `json:"is_new_user"` OnboardingDone bool `json:"onboarding_done"` } // UserProfile نمایش خلاصه‌ی پروفایل کاربر (بدون داده‌های حساس) type UserProfile struct { ID uint `json:"id"` Phone string `json:"phone"` FirstName string `json:"first_name,omitempty"` Gender *string `json:"gender,omitempty"` BirthDate *string `json:"birth_date,omitempty"` HeightCM *int `json:"height_cm,omitempty"` WeightKG *int `json:"weight_kg,omitempty"` CurrentStep int `json:"current_step"` IsOnboarded bool `json:"is_onboarded"` ApprovalStatus string `json:"approval_status"` RejectionReason *string `json:"rejection_reason,omitempty"` IsAdmin bool `json:"is_admin"` State string `json:"state"` BlockedReason *string `json:"blocked_reason,omitempty"` BlockedAt *time.Time `json:"blocked_at,omitempty"` Bio *string `json:"bio,omitempty"` StreakCount int `json:"streak_count"` NotifyMatches bool `json:"notify_matches"` NotifyMessages bool `json:"notify_messages"` NotifyLikes bool `json:"notify_likes"` } // UserProfileWithPhotos برای لیست‌های ادمینی که علاوه بر خلاصه‌ی پروفایل، عکس // کاربر رو هم نشون می‌دن (مثلاً کاربران در انتظار تایید). type UserProfileWithPhotos struct { UserProfile Photos []string `json:"photos"` }