add dashboard to phone app
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
class CompanyOffer {
|
||||
final String id;
|
||||
final String title;
|
||||
final String? description;
|
||||
final String type; // PERCENTAGE | FIXED_AMOUNT | FREE_DAY | SPECIAL_RATE
|
||||
final int discountValue;
|
||||
final String? promoCode;
|
||||
final bool isActive;
|
||||
final bool isPublic;
|
||||
final bool isFeatured;
|
||||
final DateTime validFrom;
|
||||
final DateTime validUntil;
|
||||
final int? maxRedemptions;
|
||||
final int redemptionCount;
|
||||
final List<String> categories;
|
||||
|
||||
const CompanyOffer({
|
||||
required this.id,
|
||||
required this.title,
|
||||
this.description,
|
||||
required this.type,
|
||||
required this.discountValue,
|
||||
this.promoCode,
|
||||
required this.isActive,
|
||||
required this.isPublic,
|
||||
required this.isFeatured,
|
||||
required this.validFrom,
|
||||
required this.validUntil,
|
||||
this.maxRedemptions,
|
||||
required this.redemptionCount,
|
||||
required this.categories,
|
||||
});
|
||||
|
||||
String get discountLabel {
|
||||
switch (type) {
|
||||
case 'PERCENTAGE':
|
||||
return '$discountValue% off';
|
||||
case 'FIXED_AMOUNT':
|
||||
return '\$${(discountValue / 100).toStringAsFixed(0)} off';
|
||||
case 'FREE_DAY':
|
||||
return '$discountValue free day${discountValue == 1 ? '' : 's'}';
|
||||
case 'SPECIAL_RATE':
|
||||
return 'Special rate';
|
||||
default:
|
||||
return 'Offer';
|
||||
}
|
||||
}
|
||||
|
||||
factory CompanyOffer.fromJson(Map<String, dynamic> json) => CompanyOffer(
|
||||
id: json['id'] as String,
|
||||
title: json['title'] as String,
|
||||
description: json['description'] as String?,
|
||||
type: json['type'] as String? ?? 'PERCENTAGE',
|
||||
discountValue: json['discountValue'] as int? ?? 0,
|
||||
promoCode: json['promoCode'] as String?,
|
||||
isActive: json['isActive'] as bool? ?? true,
|
||||
isPublic: json['isPublic'] as bool? ?? false,
|
||||
isFeatured: json['isFeatured'] as bool? ?? false,
|
||||
validFrom: DateTime.parse(json['validFrom'] as String),
|
||||
validUntil: DateTime.parse(json['validUntil'] as String),
|
||||
maxRedemptions: json['maxRedemptions'] as int?,
|
||||
redemptionCount: json['redemptionCount'] as int? ?? 0,
|
||||
categories: (json['categories'] as List<dynamic>?)
|
||||
?.map((e) => e as String)
|
||||
.toList() ??
|
||||
[],
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user