import Foundation
import CoreLocation
import BlueStackSDK

@objc(BSURequestOptions)
public class BSURequestOptions: NSObject {
    @objc public var age: NSNumber?
    @objc public var gender: Gender = .unknown
    @objc public var location: CLLocation?
    @objc public var keyword: String?
    @objc public var contentUrl: String?
    @objc public var consentFlag: Int = 0
//    @objc public private(set) var BSU_referenceKey: String
    
    @objc public override init() {
//        self.BSU_referenceKey = UUID().uuidString
        super.init()
    }
    
    @objc public func toSDKRequestOptions() -> RequestOptions {
        let requestOptions = RequestOptions(age: age,
                                      location: location,
                                      gender: gender,
                                      keyword: keyword,
                                      contentUrl: contentUrl)
        requestOptions.consentFlag = consentFlag
        
        if BSUInitializer.sharedInstance.isDebugModeEnabled
        {
            debugPrintSDKRequestOptions(requestOptions: requestOptions)
        }
            
        return requestOptions
    }
    
    @objc public func debugPrint() {
        print("=== BSURequestOptions Properties ===")
        print("Age: \(age?.intValue ?? -1)")
        print("Gender: \(gender)")
        print("Location: \(location?.coordinate.latitude ?? 0), \(location?.coordinate.longitude ?? 0)")
        print("Keyword: \(keyword ?? "nil")")
        print("Content URL: \(contentUrl ?? "nil")")
        print("Consent Flag: \(consentFlag)")
        print("=================================")
    }
    
    @objc public func debugPrintSDKRequestOptions(requestOptions: RequestOptions) {
        print("=== BlueStackSDK RequestOptions Properties ===")
        print("Age: \(requestOptions.age ?? -1)")
        print("Gender: \(requestOptions.gender ?? .unknown)")
        print("Location: \(requestOptions.location?.coordinate.latitude ?? 0), \(requestOptions.location?.coordinate.longitude ?? 0)")
        print("Keyword: \(requestOptions.keyword ?? "nil")")
        print("Content URL: \(requestOptions.contentUrl ?? "nil")")
        print("Consent Flag: \(requestOptions.consentFlag)")
        print("============================================")
    }
} 
