forked from eatvio/eatvio_app
75 lines
2.8 KiB
Dart
75 lines
2.8 KiB
Dart
import 'package:eatvio_app/core/models/pagination_model.dart';
|
|
import 'package:eatvio_app/features/feed/models/diets_pagination_model.dart';
|
|
import 'package:freezed_annotation/freezed_annotation.dart';
|
|
|
|
part 'plan_pagination_model.freezed.dart';
|
|
|
|
part 'plan_pagination_model.g.dart';
|
|
|
|
@freezed
|
|
class PlanPaginationModel with _$PlanPaginationModel {
|
|
const factory PlanPaginationModel({
|
|
@JsonKey(name: "data") required List<PlanModel> data,
|
|
@JsonKey(name: "links") required Links links,
|
|
@JsonKey(name: "meta") required Meta meta,
|
|
}) = _PlanPaginationModel;
|
|
|
|
factory PlanPaginationModel.fromJson(Map<String, dynamic> json) => _$PlanPaginationModelFromJson(json);
|
|
}
|
|
|
|
@freezed
|
|
class PlanModel with _$PlanModel {
|
|
const factory PlanModel({
|
|
@JsonKey(name: "id") required int id,
|
|
@JsonKey(name: "slug") required String slug,
|
|
@JsonKey(name: "name") required String name,
|
|
@JsonKey(name: "image") required String image,
|
|
@JsonKey(name: "duration") required int duration,
|
|
@JsonKey(name: "state") required String state,
|
|
@JsonKey(name: "type") required PlanType type,
|
|
@JsonKey(name: "details") required String details,
|
|
@JsonKey(name: "packets_count") required int packetsCount,
|
|
@JsonKey(name: "packet1_options") PacketOptions? packet1Options,
|
|
@JsonKey(name: "packet2_options") PacketOptions? packet2Options,
|
|
@JsonKey(name: "packet3_options") PacketOptions? packet3Options,
|
|
@JsonKey(name: "author") required Author author,
|
|
@JsonKey(name: "total_likes") required int totalLikes,
|
|
@JsonKey(name: "total_views") required int totalViews,
|
|
@JsonKey(name: "total_comments") required int totalComments,
|
|
@JsonKey(name: "is_favorite") required bool isFavorite,
|
|
}) = _PlanModel;
|
|
|
|
factory PlanModel.fromJson(Map<String, dynamic> json) => _$PlanModelFromJson(json);
|
|
}
|
|
|
|
@freezed
|
|
class PacketOptions with _$PacketOptions {
|
|
const factory PacketOptions({
|
|
@JsonKey(name: "items") required List<String> items,
|
|
@JsonKey(name: "price") required dynamic price,
|
|
@JsonKey(name: "short") required String short,
|
|
@JsonKey(name: "description") required String description,
|
|
}) = _PacketOptions;
|
|
|
|
factory PacketOptions.fromJson(Map<String, dynamic> json) => _$PacketOptionsFromJson(json);
|
|
|
|
factory PacketOptions.empty() => PacketOptions(items: [], price: 1200, short: '', description: '');
|
|
}
|
|
|
|
@freezed
|
|
class PlanType with _$PlanType {
|
|
const PlanType._();
|
|
const factory PlanType({
|
|
@JsonKey(name: "fit") required bool? fit,
|
|
@JsonKey(name: "slim") required bool? slim,
|
|
@JsonKey(name: "behavior") required bool? behavior,
|
|
@JsonKey(name: "wellness") required bool? wellness,
|
|
}) = _PlanType;
|
|
|
|
factory PlanType.fromJson(Map<String, dynamic> json) => _$PlanTypeFromJson(json);
|
|
|
|
bool hasAtLeastOneType() {
|
|
return (fit ?? false) || (slim ?? false) || (behavior ?? false) || (wellness ?? false);
|
|
}
|
|
}
|