package com.example.data.model import androidx.room.Entity import androidx.room.PrimaryKey enum class AppLanguage { EN, BN } enum class Screen { SPLASH, ONBOARDING, AUTH, HOME, SEARCH, COMPANY_PROFILE, REPORT_FORM, PROOF_UPLOAD, TRACKING, PUBLIC_WARNINGS, ADMIN_PANEL, NOTIFICATIONS, PROFILE } enum class BottomTab { HOME, SEARCH, REPORT, ALERTS, PROFILE } enum class VerificationStatus { VERIFIED_SAFE, // Green check, RJSC & Trade license verified UNDER_REVIEW, // Amber, pending background checks or recent complaints HIGH_RISK, // Orange/Red, multiple unverified claims or suspicious activity BLACKLISTED_SCAM // Red, confirmed fraud / legal action by BD Police/CID } enum class ReportStatus { PENDING_REVIEW, UNDER_INVESTIGATION, VERIFIED_WARNING_ISSUED, LEGAL_ESCALATION, RESOLVED, REJECTED } enum class AlertSeverity { CRITICAL_RED, HIGH_AMBER, ADVISORY_BLUE } data class EvidenceItem( val id: String, val title: String, val type: String, // "bKash SMS", "Messenger Chat", "Fake Contract", "Bank Slip", "Voice Recording" val fileUri: String = "", val timestamp: String = "", val note: String = "" ) @Entity(tableName = "companies") data class Company( @PrimaryKey val id: String, val nameEn: String, val nameBn: String, val category: String, val rjscRegNo: String, val tradeLicenseNo: String, val tinNo: String, val binNo: String, val status: VerificationStatus, val riskScore: Int, // 0 to 100 (0=Safe, 100=Extreme Scam) val city: String, val address: String, val phone: String, val email: String, val website: String, val facebookPage: String, val bkashMerchantNo: String = "", val managingDirector: String, val directorNidVerified: Boolean, val incorporationDate: String, val complaintCount: Int, val verifiedBadgeTitle: String, val summaryEn: String, val summaryBn: String, val warningNoticeEn: String? = null, val warningNoticeBn: String? = null, val evidenceListJson: String = "" ) @Entity(tableName = "scam_reports") data class ScamReport( @PrimaryKey val id: String, // e.g. "BD-SCAM-9120" val targetEntityName: String, val contactInfo: String, val scamCategory: String, val city: String, val incidentDescription: String, val moneyLostBdt: Double, val dateReported: String, val incidentDate: String, val status: ReportStatus, val evidenceListJson: String = "", val isAnonymous: Boolean = false, val reporterName: String = "", val reporterPhone: String = "", val duplicateMatchId: String? = null, val adminNotes: String? = null, val isPublicAlertIssued: Boolean = false ) @Entity(tableName = "public_warnings") data class PublicWarning( @PrimaryKey val id: String, val titleEn: String, val titleBn: String, val category: String, val severity: AlertSeverity, val targetName: String, val date: String, val division: String, val victimsCount: Int, val estimatedLossBdt: String, val summaryEn: String, val summaryBn: String, val modusOperandiEn: String, val modusOperandiBn: String, val officialNoticeRef: String? = null, val isPinned: Boolean = false ) @Entity(tableName = "notifications") data class AppNotification( @PrimaryKey val id: String, val titleEn: String, val titleBn: String, val messageEn: String, val messageBn: String, val timestamp: String, val type: String, // "ALERT", "STATUS_UPDATE", "HELPLINE", "VERIFICATION" val isRead: Boolean = false, val relatedEntityId: String? = null, val actionRoute: String? = null )