/* * This file is part of wger Workout Manager . * Copyright (C) 2020, 2021 wger Team * * wger Workout Manager is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ import 'dart:developer'; import 'package:collection/collection.dart'; import 'package:equatable/equatable.dart'; import 'package:json_annotation/json_annotation.dart'; import 'package:logging/logging.dart'; import 'package:wger/helpers/consts.dart'; import 'package:wger/models/exercises/category.dart'; import 'package:wger/models/exercises/equipment.dart'; import 'package:wger/models/exercises/exercise_api.dart'; import 'package:wger/models/exercises/image.dart'; import 'package:wger/models/exercises/language.dart'; import 'package:wger/models/exercises/muscle.dart'; import 'package:wger/models/exercises/translation.dart'; import 'package:wger/models/exercises/video.dart'; part 'exercise.g.dart'; @JsonSerializable(explicitToJson: true) class Exercise extends Equatable { final _logger = Logger('ExerciseModel'); @JsonKey(required: true) late final int? id; @JsonKey(required: true) late final String? uuid; @JsonKey(required: true, name: 'variations') late final int? variationId; @JsonKey(required: true, name: 'created') late final DateTime? created; @JsonKey(required: true, name: 'last_update') late final DateTime? lastUpdate; @JsonKey(required: true, name: 'last_update_global') late final DateTime? lastUpdateGlobal; @JsonKey(required: true, name: 'category') late int categoryId; @JsonKey(includeFromJson: true, includeToJson: true, name: 'categories') ExerciseCategory? category; @JsonKey(required: true, name: 'muscles') List musclesIds = []; @JsonKey(includeFromJson: false, includeToJson: false) List muscles = []; @JsonKey(required: true, name: 'muscles_secondary') List musclesSecondaryIds = []; @JsonKey(includeFromJson: false, includeToJson: true) List musclesSecondary = []; @JsonKey(required: true, name: 'equipment') List equipmentIds = []; @JsonKey(includeFromJson: false, includeToJson: false) List equipment = []; @JsonKey(includeFromJson: false, includeToJson: false) List images = []; @JsonKey(includeFromJson: true, includeToJson: false) List translations = []; @JsonKey(includeFromJson: false, includeToJson: false) List