import '../config/constants/date_utils.dart'; enum CouponStatus { DRAFT, PENDING, ACTIVE, EXPIRED } // extend as needed CouponStatus _couponStatusFromString(String s) => CouponStatus.values .firstWhere((e) => e.name == s, orElse: () => CouponStatus.ACTIVE); String _couponStatusToString(CouponStatus e) => e.name; class CouponDto { final int id; final String name; final String description; final String code; final DateTime? startDate; final DateTime? endDate; final CouponStatus couponStatus; final double percentage; final bool archive; final DateTime? timestamp; final String? createdByName; final int? createdById; final int totalUseTimeCount; CouponDto({ required this.id, required this.name, required this.description, required this.code, required this.startDate, required this.endDate, required this.couponStatus, required this.percentage, required this.archive, required this.timestamp, required this.createdByName, required this.createdById, required this.totalUseTimeCount, }); factory CouponDto.fromJson(Map json) => CouponDto( id: json['id'] as int, name: json['name'] as String, description: json['description'] as String, code: json['code'] as String, startDate: parseDate(json['startdate']), endDate: parseDate(json['enddate']), couponStatus: _couponStatusFromString(json['couponStatus'] ?? 'ACTIVE'), percentage: (json['percentage'] as num).toDouble(), archive: json['archive'] as bool? ?? false, timestamp: parseDate(json['timestamp']), createdByName: json['createdByName'] as String?, createdById: json['createdById'] as int?, totalUseTimeCount: json['totalusetimecount'] as int? ?? 0, ); Map toJson() => { 'id': id, 'name': name, 'description': description, 'code': code, 'startdate': formatDate(startDate), 'enddate': formatDate(endDate), 'couponStatus': _couponStatusToString(couponStatus), 'percentage': percentage, 'archive': archive, 'timestamp': formatDate(timestamp), 'createdByName': createdByName, 'createdById': createdById, 'totalusetimecount': totalUseTimeCount, }; }