Files
TubeCards/lib/data/models/offer.dart
friebetill 80f218097d Initial commit
Add Space version 2.0.1
2022-03-28 14:56:00 +02:00

83 lines
2.0 KiB
Dart

import 'package:built_collection/built_collection.dart';
import 'package:copy_with_extension/copy_with_extension.dart';
import 'package:json_annotation/json_annotation.dart';
import 'base_model.dart';
import 'card.dart';
import 'connection.dart';
import 'deck.dart';
import 'offer_review.dart';
import 'review_summary.dart';
import 'user.dart';
part 'offer.g.dart';
@JsonSerializable()
@CopyWith()
class Offer extends BaseModel {
/// Constructs a new [Offer] instance from the given parameters.
const Offer({
String? id,
this.subscriberCount,
this.hasViewerBought,
this.viewerReview,
this.reviewSummary,
this.reviewConnection,
this.cardSamples,
this.deck,
this.creator,
DateTime? createdAt,
DateTime? updatedAt,
}) : super(
id: id,
createdAt: createdAt,
updatedAt: updatedAt,
);
/// Constructs a new [Offer] from the given [json].
///
/// A conversion from JSON is especially useful in order to handle results
/// from a server request.
factory Offer.fromJson(Map<String, dynamic> json) => _$OfferFromJson(json);
/// The number of subscriber this offer has.
final int? subscriberCount;
final bool? hasViewerBought;
final OfferReview? viewerReview;
/// The review summary of the offer.
final ReviewSummary? reviewSummary;
/// The reviews of the offer.
final Connection<OfferReview>? reviewConnection;
/// The card samples of the offer.
final BuiltList<Card>? cardSamples;
/// The deck to which this offer refers.
final Deck? deck;
/// The creator of the offer.
final User? creator;
/// Constructs a new json map from this [Offer].
///
/// A conversion to JSON is useful in order to send data to a server.
Map<String, dynamic> toJson() => _$OfferToJson(this);
@override
List<Object?> get props => super.props
..addAll([
subscriberCount,
hasViewerBought,
viewerReview,
reviewSummary,
reviewConnection,
cardSamples,
deck,
creator,
]);
}