package com.example.data import androidx.room.Entity import androidx.room.PrimaryKey @Entity(tableName = "user_wallet") data class UserWallet( @PrimaryKey val userId: String = "client_default", val name: String = "James Mercer", val email: String = "james@example.com", val passwordHash: String = "password123", val availableBalance: Double = 1500.0, val totalBalance: Double = 2000.0, val membershipStatus: String = "Free Membership", // "Free Membership", "VIP Membership", "Premium Membership" val isLoggedIn: Boolean = false, val emailVerified: Boolean = false, val phoneVerified: Boolean = false, val verificationStatus: String = "unverified", // "unverified", "pending", "verified", "rejected" val phone: String = "", val nidNumber: String = "", val selfieUrl: String = "", val kycStatus: String = "unverified", // "unverified", "pending", "verified", "rejected" val isAgent: Boolean = false, val agentApplicationStatus: String = "none", // "none", "pending", "approved", "rejected" val agentPhone: String = "", val agentNid: String = "", val agentLocation: String = "", val agentBalance: Double = 0.0, val agentCommissionEarned: Double = 0.0, val agentTotalCashCollected: Double = 0.0, val country: String = "Bangladesh", val city: String = "Dhaka" ) @Entity(tableName = "model_profile") data class ModelProfile( @PrimaryKey(autoGenerate = true) val id: Int = 0, val name: String, val username: String, val email: String, val passwordHash: String = "password123", val location: String = "Sheraton Hotel", // "Hotel Ritz", "Luxury Lounge", "Vapor Safehouse", etc. val hourlyRate: Double = 150.0, val photoName: String = "photo_1", // identifier for drawing gradient avatars val isOnline: Boolean = true, val isVerified: Boolean = false, // verification status badge val membershipStatus: String = "Free Plan", // "Free Plan", "VIP Plan", "Premium Plan" val isApproved: Boolean = true, // Admin approval status val isSuspended: Boolean = false, // Admin suspension status val bio: String = "Professional fashion model and branding ambassador.", val gender: String = "Female", val rating: Double = 4.8, val totalEarnings: Double = 0.0, val pendingEarnings: Double = 0.0, val isLoggedIn: Boolean = false, val emailVerified: Boolean = false, val phoneVerified: Boolean = false, val verificationStatus: String = "unverified", // "unverified", "pending", "verified", "rejected" val phone: String = "", val nidNumber: String = "", val selfieUrl: String = "", val kycStatus: String = "unverified", // "unverified", "pending", "verified", "rejected" val country: String = "Bangladesh", val city: String = "Dhaka", val category: String = "Fashion", val agency: String = "XYZ Agency", val fullName: String = "", val dob: String = "2000-01-01", val nationality: String = "Bangladeshi", val nidPhotoUrl: String = "", val selfiePhotoUrl: String = "", val areaDistrict: String = "Gulshan", val professionalStatus: String = "Professional Model", val price2Hours: Double = 250.0, val priceHalfDay: Double = 500.0, val priceFullDay: Double = 900.0, val customPriceAvailable: Boolean = false, val servicesProvided: String = "Runway, Fashion, Commercial", val languagesSpoken: String = "English, Bengali", val availabilitySchedule: String = "Weekend, Weekdays", val travelAvailable: Boolean = true, val preferredPlatform: String = "WhatsApp", val coverPhotoUrl: String = "", val galleryPhotos: String = "", val introVideoUrl: String = "" ) @Entity(tableName = "booking") data class BookingEntity( @PrimaryKey(autoGenerate = true) val id: Int = 0, val userId: String, val userName: String, val modelId: Int, val modelName: String, val location: String, val dateString: String, val durationHours: Int, val totalPrice: Double, val status: String, // "PENDING", "ACCEPTED", "PAID", "ACTIVE", "COMPLETED", "CANCELLED" val service: String = "Photoshoot", val bookingTime: String = "12:00 PM", val timeZone: String = "GMT+6 (BDT)", val timestamp: Long = System.currentTimeMillis() ) @Entity(tableName = "proof") data class ProofEntity( @PrimaryKey(autoGenerate = true) val id: Int = 0, val bookingId: Int, val modelId: Int, val imageUrl: String, val status: String, // "PENDING", "APPROVED", "REJECTED" val timestamp: Long = System.currentTimeMillis() ) @Entity(tableName = "admin_wallet") data class AdminWalletEntity( @PrimaryKey val id: String = "admin_default", val balance: Double = 0.0, val totalEarnings: Double = 0.0 ) @Entity(tableName = "transaction_log") data class TransactionLog( @PrimaryKey(autoGenerate = true) val id: Int = 0, val accountId: String, //userId or modelId as String val amount: Double, val type: String, // "DEPOSIT", "WITHDRAWAL", "PAYMENT_SENT", "PAYMENT_RCVD", "MEMBERSHIP_UPGRADE" val description: String, val timestamp: Long = System.currentTimeMillis() ) @Entity(tableName = "cash_deposit_request") data class CashDepositRequest( @PrimaryKey(autoGenerate = true) val id: Int = 0, val userId: String, val userName: String, val agentId: String, val agentName: String, val amount: Double, val commission: Double, val walletNumber: String = "", val trxLast4: String = "", val screenshot: String = "", val status: String, // "PENDING", "CONFIRMED", "APPROVED", "REJECTED" val timestamp: Long = System.currentTimeMillis() ) @Entity(tableName = "withdrawals") data class WithdrawalEntity( @PrimaryKey(autoGenerate = true) val id: Int = 0, val modelId: Int, val modelName: String = "", val amount: Double, val name: String, val walletNumber: String, val agentId: String = "", val agentName: String = "", val screenshot: String = "", val status: String = "PENDING", // "PENDING", "SENT", "CONFIRMED", "REJECTED" val timestamp: Long = System.currentTimeMillis() ) @Entity(tableName = "live_stream") data class LiveStreamEntity( @PrimaryKey(autoGenerate = true) val id: Int = 0, val modelId: Int, val modelName: String, val modelGender: String = "Female", val title: String, val status: String = "LIVE", // "LIVE", "ENDED" val viewerCount: Int = 1, val startedAt: Long = System.currentTimeMillis(), val endedAt: Long = 0L, val totalEarnings: Double = 0.0, val coinEarnings: Int = 0 ) @Entity(tableName = "live_chat") data class LiveChatEntity( @PrimaryKey(autoGenerate = true) val id: Int = 0, val streamId: Int, val senderId: String, val senderName: String, val senderType: String, // "USER", "MODEL", "SYSTEM", "BOT" val message: String, val isGift: Boolean = false, val giftName: String = "", val giftPrice: Double = 0.0, val timestamp: Long = System.currentTimeMillis() )