import '../../domain/entities/shop_entities.dart'; /// نگاشتِ JSON کاتالوگ فروشگاه به موجودیت‌ها. class ShopMapper { static CoinPackage coin(Map j) => CoinPackage( id: j['id'] as String, title: j['title'] as String, coins: (j['coins'] ?? 0) as int, vipDays: (j['vip_days'] ?? 0) as int, priceToman: (j['price_toman'] ?? 0) as int, bonusPct: (j['bonus_pct'] ?? 0) as int, ); static TicketPackage ticket(Map j) => TicketPackage( id: j['id'] as String, title: j['title'] as String, tickets: (j['tickets'] ?? 0) as int, priceToman: (j['price_toman'] ?? 0) as int, ); static CardSkin card(Map j) => CardSkin( id: j['id'] as String, title: j['title'] as String, priceCoins: (j['price_coins'] ?? 0) as int, ); static Booster booster(Map j) => Booster( id: j['id'] as String, title: j['title'] as String, multiplier: (j['multiplier'] ?? 1) as int, hours: (j['hours'] ?? 0) as int, priceToman: (j['price_toman'] ?? 0) as int, ); static VipPackage vip(Map j) => VipPackage( id: j['id'] as String, title: j['title'] as String, months: (j['months'] ?? 1) as int, priceToman: (j['price_toman'] ?? 0) as int, ); static ShopData shopData(Map j) { final cat = Map.from(j['catalog'] as Map); List parse(String key, T Function(Map) f) => ((cat[key] as List?) ?? []) .map((e) => f(Map.from(e as Map))) .toList(); return ShopData( coinPackages: parse('coin_packages', coin), ticketPackages: parse('ticket_packages', ticket), cardSkins: parse('card_skins', card), boosters: parse('boosters', booster), vipPackages: parse('vip_packages', vip), ownedCards: ((j['owned_cards'] as List?) ?? []).map((e) => e as String).toList(), selectedCard: (j['selected_card'] ?? 'simple') as String, ); } }