81 lines
1.9 KiB
Dart
81 lines
1.9 KiB
Dart
import 'package:json_annotation/json_annotation.dart';
|
|
import 'package:yimaru_app/models/course_module.dart';
|
|
|
|
part 'course_unit.g.dart';
|
|
|
|
@JsonSerializable()
|
|
class CourseUnit {
|
|
final int? id;
|
|
|
|
final String? name;
|
|
|
|
final String? thumbnail;
|
|
|
|
final String? description;
|
|
|
|
final List<CourseModule>? modules;
|
|
|
|
@JsonKey(name: 'sort_order')
|
|
final int? sortOrder;
|
|
|
|
@JsonKey(name: 'has_practice')
|
|
final bool? hasPractice;
|
|
|
|
@JsonKey(name: 'lessons_count')
|
|
final int? lessonsCount;
|
|
|
|
@JsonKey(name: 'modules_count')
|
|
final int? modulesCount;
|
|
|
|
@JsonKey(name: 'practices_count')
|
|
final int? practice;
|
|
|
|
@JsonKey(name: 'catalog_course_id')
|
|
final int? catalogCourseId;
|
|
|
|
const CourseUnit(
|
|
{this.id,
|
|
this.name,
|
|
this.modules,
|
|
this.practice,
|
|
this.thumbnail,
|
|
this.sortOrder,
|
|
this.hasPractice,
|
|
this.description,
|
|
this.modulesCount,
|
|
this.lessonsCount,
|
|
this.catalogCourseId});
|
|
|
|
factory CourseUnit.fromJson(Map<String, dynamic> json) =>
|
|
_$CourseUnitFromJson(json);
|
|
|
|
Map<String, dynamic> toJson() => _$CourseUnitToJson(this);
|
|
|
|
CourseUnit copyWith({
|
|
int? id,
|
|
String? name,
|
|
int? practice,
|
|
int? sortOrder,
|
|
bool? hasPractice,
|
|
int? lessonsCount,
|
|
int? modulesCount,
|
|
String? thumbnail,
|
|
String? description,
|
|
int? catalogCourseId,
|
|
List<CourseModule>? modules,
|
|
}) =>
|
|
CourseUnit(
|
|
id: id ?? this.id,
|
|
name: name ?? this.name,
|
|
modules: modules ?? this.modules,
|
|
practice: practice ?? this.practice,
|
|
thumbnail: thumbnail ?? this.thumbnail,
|
|
sortOrder: sortOrder ?? this.sortOrder,
|
|
hasPractice: hasPractice ?? this.hasPractice,
|
|
description: description ?? this.description,
|
|
lessonsCount: lessonsCount ?? this.lessonsCount,
|
|
modulesCount: modulesCount ?? this.modulesCount,
|
|
catalogCourseId: catalogCourseId ?? this.catalogCourseId,
|
|
);
|
|
}
|