import 'package:json_annotation/json_annotation.dart';
import 'package:collection/collection.dart';
import 'hra_repository_enums.dart' as enums;

part 'hra_repository_models.g.dart';

@JsonSerializable(explicitToJson: true)
class AcademicYearEntity {
  AcademicYearEntity({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.schoolId,
    this.startPeriod1,
    this.startPeriod2,
    this.end,
    this.name,
  });

  factory AcademicYearEntity.fromJson(Map<String, dynamic> json) =>
      _$AcademicYearEntityFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'schoolId', includeIfNull: true)
  int? schoolId;
  @JsonKey(name: 'startPeriod1', includeIfNull: true)
  DateTime? startPeriod1;
  @JsonKey(name: 'startPeriod2', includeIfNull: true)
  DateTime? startPeriod2;
  @JsonKey(name: 'end', includeIfNull: true)
  DateTime? end;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  static const fromJsonFactory = _$AcademicYearEntityFromJson;
  static const toJsonFactory = _$AcademicYearEntityToJson;
  Map<String, dynamic> toJson() => _$AcademicYearEntityToJson(this);
}

@JsonSerializable(explicitToJson: true)
class AcademicYearEntityApiResponse {
  AcademicYearEntityApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory AcademicYearEntityApiResponse.fromJson(Map<String, dynamic> json) =>
      _$AcademicYearEntityApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  AcademicYearEntity? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$AcademicYearEntityApiResponseFromJson;
  static const toJsonFactory = _$AcademicYearEntityApiResponseToJson;
  Map<String, dynamic> toJson() => _$AcademicYearEntityApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class AcademicYearEntityListApiResponse {
  AcademicYearEntityListApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory AcademicYearEntityListApiResponse.fromJson(
          Map<String, dynamic> json) =>
      _$AcademicYearEntityListApiResponseFromJson(json);

  @JsonKey(
      name: 'data', includeIfNull: true, defaultValue: <AcademicYearEntity>[])
  List<AcademicYearEntity>? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$AcademicYearEntityListApiResponseFromJson;
  static const toJsonFactory = _$AcademicYearEntityListApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$AcademicYearEntityListApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ActivityEntity {
  ActivityEntity({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.title,
    this.description,
    this.videoUrl,
    this.tag,
    this.type,
    this.imageUrl,
    this.status,
    this.displayOrder,
  });

  factory ActivityEntity.fromJson(Map<String, dynamic> json) =>
      _$ActivityEntityFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'title', includeIfNull: true)
  String? title;
  @JsonKey(name: 'description', includeIfNull: true)
  String? description;
  @JsonKey(name: 'videoUrl', includeIfNull: true)
  String? videoUrl;
  @JsonKey(name: 'tag', includeIfNull: true)
  String? tag;
  @JsonKey(name: 'type', includeIfNull: true)
  String? type;
  @JsonKey(name: 'imageUrl', includeIfNull: true)
  String? imageUrl;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: commonStatusEnumToJson,
      fromJson: commonStatusEnumFromJson)
  enums.CommonStatusEnum? status;
  @JsonKey(name: 'displayOrder', includeIfNull: true)
  int? displayOrder;
  static const fromJsonFactory = _$ActivityEntityFromJson;
  static const toJsonFactory = _$ActivityEntityToJson;
  Map<String, dynamic> toJson() => _$ActivityEntityToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ActivityEntityApiResponse {
  ActivityEntityApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory ActivityEntityApiResponse.fromJson(Map<String, dynamic> json) =>
      _$ActivityEntityApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  ActivityEntity? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$ActivityEntityApiResponseFromJson;
  static const toJsonFactory = _$ActivityEntityApiResponseToJson;
  Map<String, dynamic> toJson() => _$ActivityEntityApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ActivityGetListQuery {
  ActivityGetListQuery({
    this.sortExpression,
    this.pageSize,
    this.pageIndex,
    this.skip,
    this.notSkip,
    this.propertyIncludes,
    this.keyword,
    this.status,
    this.tag,
    this.type,
  });

  factory ActivityGetListQuery.fromJson(Map<String, dynamic> json) =>
      _$ActivityGetListQueryFromJson(json);

  @JsonKey(name: 'sortExpression', includeIfNull: true)
  String? sortExpression;
  @JsonKey(name: 'pageSize', includeIfNull: true)
  int? pageSize;
  @JsonKey(name: 'pageIndex', includeIfNull: true)
  int? pageIndex;
  @JsonKey(name: 'skip', includeIfNull: true)
  int? skip;
  @JsonKey(name: 'notSkip', includeIfNull: true)
  int? notSkip;
  @JsonKey(
      name: 'propertyIncludes', includeIfNull: true, defaultValue: <String>[])
  List<String>? propertyIncludes;
  @JsonKey(name: 'keyword', includeIfNull: true)
  String? keyword;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: commonStatusEnumToJson,
      fromJson: commonStatusEnumFromJson)
  enums.CommonStatusEnum? status;
  @JsonKey(name: 'tag', includeIfNull: true)
  String? tag;
  @JsonKey(name: 'type', includeIfNull: true)
  String? type;
  static const fromJsonFactory = _$ActivityGetListQueryFromJson;
  static const toJsonFactory = _$ActivityGetListQueryToJson;
  Map<String, dynamic> toJson() => _$ActivityGetListQueryToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ActivityListDto {
  ActivityListDto({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.title,
    this.description,
    this.videoUrl,
    this.tag,
    this.type,
    this.imageUrl,
    this.status,
    this.displayOrder,
  });

  factory ActivityListDto.fromJson(Map<String, dynamic> json) =>
      _$ActivityListDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'title', includeIfNull: true)
  String? title;
  @JsonKey(name: 'description', includeIfNull: true)
  String? description;
  @JsonKey(name: 'videoUrl', includeIfNull: true)
  String? videoUrl;
  @JsonKey(name: 'tag', includeIfNull: true)
  String? tag;
  @JsonKey(name: 'type', includeIfNull: true)
  String? type;
  @JsonKey(name: 'imageUrl', includeIfNull: true)
  String? imageUrl;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: commonStatusEnumToJson,
      fromJson: commonStatusEnumFromJson)
  enums.CommonStatusEnum? status;
  @JsonKey(name: 'displayOrder', includeIfNull: true)
  int? displayOrder;
  static const fromJsonFactory = _$ActivityListDtoFromJson;
  static const toJsonFactory = _$ActivityListDtoToJson;
  Map<String, dynamic> toJson() => _$ActivityListDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ActivityListDtoFilterResult {
  ActivityListDtoFilterResult({
    this.totalRows,
    this.data,
  });

  factory ActivityListDtoFilterResult.fromJson(Map<String, dynamic> json) =>
      _$ActivityListDtoFilterResultFromJson(json);

  @JsonKey(name: 'totalRows', includeIfNull: true)
  int? totalRows;
  @JsonKey(name: 'data', includeIfNull: true, defaultValue: <ActivityListDto>[])
  List<ActivityListDto>? data;
  static const fromJsonFactory = _$ActivityListDtoFilterResultFromJson;
  static const toJsonFactory = _$ActivityListDtoFilterResultToJson;
  Map<String, dynamic> toJson() => _$ActivityListDtoFilterResultToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ActivityListDtoFilterResultApiResponse {
  ActivityListDtoFilterResultApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory ActivityListDtoFilterResultApiResponse.fromJson(
          Map<String, dynamic> json) =>
      _$ActivityListDtoFilterResultApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  ActivityListDtoFilterResult? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory =
      _$ActivityListDtoFilterResultApiResponseFromJson;
  static const toJsonFactory = _$ActivityListDtoFilterResultApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$ActivityListDtoFilterResultApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ActivityLogEntity {
  ActivityLogEntity({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.title,
    this.data,
    this.objectType,
    this.ip,
  });

  factory ActivityLogEntity.fromJson(Map<String, dynamic> json) =>
      _$ActivityLogEntityFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'title', includeIfNull: true)
  String? title;
  @JsonKey(name: 'data', includeIfNull: true)
  String? data;
  @JsonKey(name: 'objectType', includeIfNull: true)
  String? objectType;
  @JsonKey(name: 'ip', includeIfNull: true)
  String? ip;
  static const fromJsonFactory = _$ActivityLogEntityFromJson;
  static const toJsonFactory = _$ActivityLogEntityToJson;
  Map<String, dynamic> toJson() => _$ActivityLogEntityToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ActivityLogEntityApiResponse {
  ActivityLogEntityApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory ActivityLogEntityApiResponse.fromJson(Map<String, dynamic> json) =>
      _$ActivityLogEntityApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  ActivityLogEntity? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$ActivityLogEntityApiResponseFromJson;
  static const toJsonFactory = _$ActivityLogEntityApiResponseToJson;
  Map<String, dynamic> toJson() => _$ActivityLogEntityApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ActivitySaveDto {
  ActivitySaveDto({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.title,
    this.description,
    this.videoUrl,
    this.tag,
    this.type,
    this.imageUrl,
    this.status,
    this.displayOrder,
  });

  factory ActivitySaveDto.fromJson(Map<String, dynamic> json) =>
      _$ActivitySaveDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'title', includeIfNull: true)
  String? title;
  @JsonKey(name: 'description', includeIfNull: true)
  String? description;
  @JsonKey(name: 'videoUrl', includeIfNull: true)
  String? videoUrl;
  @JsonKey(name: 'tag', includeIfNull: true)
  String? tag;
  @JsonKey(name: 'type', includeIfNull: true)
  String? type;
  @JsonKey(name: 'imageUrl', includeIfNull: true)
  String? imageUrl;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: commonStatusEnumToJson,
      fromJson: commonStatusEnumFromJson)
  enums.CommonStatusEnum? status;
  @JsonKey(name: 'displayOrder', includeIfNull: true)
  int? displayOrder;
  static const fromJsonFactory = _$ActivitySaveDtoFromJson;
  static const toJsonFactory = _$ActivitySaveDtoToJson;
  Map<String, dynamic> toJson() => _$ActivitySaveDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ActivitySaveDtoApiResponse {
  ActivitySaveDtoApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory ActivitySaveDtoApiResponse.fromJson(Map<String, dynamic> json) =>
      _$ActivitySaveDtoApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  ActivitySaveDto? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$ActivitySaveDtoApiResponseFromJson;
  static const toJsonFactory = _$ActivitySaveDtoApiResponseToJson;
  Map<String, dynamic> toJson() => _$ActivitySaveDtoApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class AiChatRequest {
  AiChatRequest({
    this.systemPrompt,
    this.userMessage,
    this.userMessageContent,
    this.model,
    this.temperature,
    this.maxTokens,
  });

  factory AiChatRequest.fromJson(Map<String, dynamic> json) =>
      _$AiChatRequestFromJson(json);

  @JsonKey(name: 'systemPrompt', includeIfNull: true)
  String? systemPrompt;
  @JsonKey(name: 'userMessage', includeIfNull: true)
  String? userMessage;
  @JsonKey(
      name: 'userMessageContent',
      includeIfNull: true,
      defaultValue: <AiMessageContent>[])
  List<AiMessageContent>? userMessageContent;
  @JsonKey(name: 'model', includeIfNull: true)
  String? model;
  @JsonKey(name: 'temperature', includeIfNull: true)
  double? temperature;
  @JsonKey(name: 'maxTokens', includeIfNull: true)
  int? maxTokens;
  static const fromJsonFactory = _$AiChatRequestFromJson;
  static const toJsonFactory = _$AiChatRequestToJson;
  Map<String, dynamic> toJson() => _$AiChatRequestToJson(this);
}

@JsonSerializable(explicitToJson: true)
class AiMessageContent {
  AiMessageContent({
    this.type,
  });

  factory AiMessageContent.fromJson(Map<String, dynamic> json) =>
      _$AiMessageContentFromJson(json);

  @JsonKey(name: 'type', includeIfNull: true)
  String? type;
  static const fromJsonFactory = _$AiMessageContentFromJson;
  static const toJsonFactory = _$AiMessageContentToJson;
  Map<String, dynamic> toJson() => _$AiMessageContentToJson(this);
}

@JsonSerializable(explicitToJson: true)
class AiPromptEntity {
  AiPromptEntity({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.grade,
    this.categoryId,
    this.code,
    this.name,
    this.description,
    this.prompt,
    this.category,
  });

  factory AiPromptEntity.fromJson(Map<String, dynamic> json) =>
      _$AiPromptEntityFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'grade', includeIfNull: true)
  int? grade;
  @JsonKey(name: 'categoryId', includeIfNull: true)
  int? categoryId;
  @JsonKey(name: 'code', includeIfNull: true)
  String? code;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(name: 'description', includeIfNull: true)
  String? description;
  @JsonKey(name: 'prompt', includeIfNull: true)
  String? prompt;
  @JsonKey(name: 'category', includeIfNull: true)
  CategoryEntity? category;
  static const fromJsonFactory = _$AiPromptEntityFromJson;
  static const toJsonFactory = _$AiPromptEntityToJson;
  Map<String, dynamic> toJson() => _$AiPromptEntityToJson(this);
}

@JsonSerializable(explicitToJson: true)
class AiPromptEntityApiResponse {
  AiPromptEntityApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory AiPromptEntityApiResponse.fromJson(Map<String, dynamic> json) =>
      _$AiPromptEntityApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  AiPromptEntity? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$AiPromptEntityApiResponseFromJson;
  static const toJsonFactory = _$AiPromptEntityApiResponseToJson;
  Map<String, dynamic> toJson() => _$AiPromptEntityApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class AiPromptGetListQuery {
  AiPromptGetListQuery({
    this.sortExpression,
    this.pageSize,
    this.pageIndex,
    this.skip,
    this.notSkip,
    this.propertyIncludes,
    this.keyword,
    this.code,
    this.grade,
    this.categoryId,
  });

  factory AiPromptGetListQuery.fromJson(Map<String, dynamic> json) =>
      _$AiPromptGetListQueryFromJson(json);

  @JsonKey(name: 'sortExpression', includeIfNull: true)
  String? sortExpression;
  @JsonKey(name: 'pageSize', includeIfNull: true)
  int? pageSize;
  @JsonKey(name: 'pageIndex', includeIfNull: true)
  int? pageIndex;
  @JsonKey(name: 'skip', includeIfNull: true)
  int? skip;
  @JsonKey(name: 'notSkip', includeIfNull: true)
  int? notSkip;
  @JsonKey(
      name: 'propertyIncludes', includeIfNull: true, defaultValue: <String>[])
  List<String>? propertyIncludes;
  @JsonKey(name: 'keyword', includeIfNull: true)
  String? keyword;
  @JsonKey(name: 'code', includeIfNull: true)
  String? code;
  @JsonKey(name: 'grade', includeIfNull: true)
  int? grade;
  @JsonKey(name: 'categoryId', includeIfNull: true)
  int? categoryId;
  static const fromJsonFactory = _$AiPromptGetListQueryFromJson;
  static const toJsonFactory = _$AiPromptGetListQueryToJson;
  Map<String, dynamic> toJson() => _$AiPromptGetListQueryToJson(this);
}

@JsonSerializable(explicitToJson: true)
class AiPromptListDto {
  AiPromptListDto({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.grade,
    this.categoryId,
    this.code,
    this.name,
    this.description,
    this.prompt,
    this.category,
    this.categoryName,
  });

  factory AiPromptListDto.fromJson(Map<String, dynamic> json) =>
      _$AiPromptListDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'grade', includeIfNull: true)
  int? grade;
  @JsonKey(name: 'categoryId', includeIfNull: true)
  int? categoryId;
  @JsonKey(name: 'code', includeIfNull: true)
  String? code;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(name: 'description', includeIfNull: true)
  String? description;
  @JsonKey(name: 'prompt', includeIfNull: true)
  String? prompt;
  @JsonKey(name: 'category', includeIfNull: true)
  CategoryEntity? category;
  @JsonKey(name: 'categoryName', includeIfNull: true)
  String? categoryName;
  static const fromJsonFactory = _$AiPromptListDtoFromJson;
  static const toJsonFactory = _$AiPromptListDtoToJson;
  Map<String, dynamic> toJson() => _$AiPromptListDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class AiPromptListDtoFilterResult {
  AiPromptListDtoFilterResult({
    this.totalRows,
    this.data,
  });

  factory AiPromptListDtoFilterResult.fromJson(Map<String, dynamic> json) =>
      _$AiPromptListDtoFilterResultFromJson(json);

  @JsonKey(name: 'totalRows', includeIfNull: true)
  int? totalRows;
  @JsonKey(name: 'data', includeIfNull: true, defaultValue: <AiPromptListDto>[])
  List<AiPromptListDto>? data;
  static const fromJsonFactory = _$AiPromptListDtoFilterResultFromJson;
  static const toJsonFactory = _$AiPromptListDtoFilterResultToJson;
  Map<String, dynamic> toJson() => _$AiPromptListDtoFilterResultToJson(this);
}

@JsonSerializable(explicitToJson: true)
class AiPromptListDtoFilterResultApiResponse {
  AiPromptListDtoFilterResultApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory AiPromptListDtoFilterResultApiResponse.fromJson(
          Map<String, dynamic> json) =>
      _$AiPromptListDtoFilterResultApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  AiPromptListDtoFilterResult? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory =
      _$AiPromptListDtoFilterResultApiResponseFromJson;
  static const toJsonFactory = _$AiPromptListDtoFilterResultApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$AiPromptListDtoFilterResultApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class AiPromptRequest {
  AiPromptRequest({
    this.promptCode,
    this.grade,
    this.categoryId,
    this.variables,
    this.userMessage,
    this.userMessageContent,
    this.model,
    this.temperature,
    this.maxTokens,
  });

  factory AiPromptRequest.fromJson(Map<String, dynamic> json) =>
      _$AiPromptRequestFromJson(json);

  @JsonKey(name: 'promptCode', includeIfNull: true)
  String? promptCode;
  @JsonKey(name: 'grade', includeIfNull: true)
  int? grade;
  @JsonKey(name: 'categoryId', includeIfNull: true)
  int? categoryId;
  @JsonKey(name: 'variables', includeIfNull: true)
  Object? variables;
  @JsonKey(name: 'userMessage', includeIfNull: true)
  String? userMessage;
  @JsonKey(
      name: 'userMessageContent',
      includeIfNull: true,
      defaultValue: <AiMessageContent>[])
  List<AiMessageContent>? userMessageContent;
  @JsonKey(name: 'model', includeIfNull: true)
  String? model;
  @JsonKey(name: 'temperature', includeIfNull: true)
  double? temperature;
  @JsonKey(name: 'maxTokens', includeIfNull: true)
  int? maxTokens;
  static const fromJsonFactory = _$AiPromptRequestFromJson;
  static const toJsonFactory = _$AiPromptRequestToJson;
  Map<String, dynamic> toJson() => _$AiPromptRequestToJson(this);
}

@JsonSerializable(explicitToJson: true)
class AiResponse {
  AiResponse({
    this.success,
    this.content,
    this.error,
    this.model,
    this.promptTokens,
    this.completionTokens,
    this.totalTokens,
  });

  factory AiResponse.fromJson(Map<String, dynamic> json) =>
      _$AiResponseFromJson(json);

  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(name: 'content', includeIfNull: true)
  String? content;
  @JsonKey(name: 'error', includeIfNull: true)
  String? error;
  @JsonKey(name: 'model', includeIfNull: true)
  String? model;
  @JsonKey(name: 'promptTokens', includeIfNull: true)
  int? promptTokens;
  @JsonKey(name: 'completionTokens', includeIfNull: true)
  int? completionTokens;
  @JsonKey(name: 'totalTokens', includeIfNull: true)
  int? totalTokens;
  static const fromJsonFactory = _$AiResponseFromJson;
  static const toJsonFactory = _$AiResponseToJson;
  Map<String, dynamic> toJson() => _$AiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class AiResponseApiResponse {
  AiResponseApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory AiResponseApiResponse.fromJson(Map<String, dynamic> json) =>
      _$AiResponseApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  AiResponse? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$AiResponseApiResponseFromJson;
  static const toJsonFactory = _$AiResponseApiResponseToJson;
  Map<String, dynamic> toJson() => _$AiResponseApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class AssignExamAddDto {
  AssignExamAddDto({
    this.id,
    this.classId,
    this.title,
    this.examId,
    this.fromDate,
    this.toDate,
    this.allowDeadline,
    this.status,
    this.type,
    this.allowViewAnswer,
    this.duration,
  });

  factory AssignExamAddDto.fromJson(Map<String, dynamic> json) =>
      _$AssignExamAddDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'classId', includeIfNull: true)
  int? classId;
  @JsonKey(name: 'title', includeIfNull: true)
  String? title;
  @JsonKey(name: 'examId', includeIfNull: true)
  int? examId;
  @JsonKey(name: 'fromDate', includeIfNull: true)
  DateTime? fromDate;
  @JsonKey(name: 'toDate', includeIfNull: true)
  DateTime? toDate;
  @JsonKey(name: 'allowDeadline', includeIfNull: true)
  bool? allowDeadline;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: assignExamStatusEnumToJson,
      fromJson: assignExamStatusEnumFromJson)
  enums.AssignExamStatusEnum? status;
  @JsonKey(
      name: 'type',
      includeIfNull: true,
      toJson: assignExamTypeEnumToJson,
      fromJson: assignExamTypeEnumFromJson)
  enums.AssignExamTypeEnum? type;
  @JsonKey(name: 'allowViewAnswer', includeIfNull: true)
  bool? allowViewAnswer;
  @JsonKey(name: 'duration', includeIfNull: true)
  int? duration;
  static const fromJsonFactory = _$AssignExamAddDtoFromJson;
  static const toJsonFactory = _$AssignExamAddDtoToJson;
  Map<String, dynamic> toJson() => _$AssignExamAddDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class AssignExamAddMultipleDto {
  AssignExamAddMultipleDto({
    this.classes,
    this.assignExam,
  });

  factory AssignExamAddMultipleDto.fromJson(Map<String, dynamic> json) =>
      _$AssignExamAddMultipleDtoFromJson(json);

  @JsonKey(
      name: 'classes', includeIfNull: true, defaultValue: <ClassShortDto>[])
  List<ClassShortDto>? classes;
  @JsonKey(name: 'assignExam', includeIfNull: true)
  AssignExamAddDto? assignExam;
  static const fromJsonFactory = _$AssignExamAddMultipleDtoFromJson;
  static const toJsonFactory = _$AssignExamAddMultipleDtoToJson;
  Map<String, dynamic> toJson() => _$AssignExamAddMultipleDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class AssignExamCheckDoExamDto {
  AssignExamCheckDoExamDto({
    this.message,
    this.isCanViewResult,
    this.classId,
  });

  factory AssignExamCheckDoExamDto.fromJson(Map<String, dynamic> json) =>
      _$AssignExamCheckDoExamDtoFromJson(json);

  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'isCanViewResult', includeIfNull: true)
  bool? isCanViewResult;
  @JsonKey(name: 'classId', includeIfNull: true)
  int? classId;
  static const fromJsonFactory = _$AssignExamCheckDoExamDtoFromJson;
  static const toJsonFactory = _$AssignExamCheckDoExamDtoToJson;
  Map<String, dynamic> toJson() => _$AssignExamCheckDoExamDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class AssignExamCheckDoExamDtoApiResponse {
  AssignExamCheckDoExamDtoApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory AssignExamCheckDoExamDtoApiResponse.fromJson(
          Map<String, dynamic> json) =>
      _$AssignExamCheckDoExamDtoApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  AssignExamCheckDoExamDto? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$AssignExamCheckDoExamDtoApiResponseFromJson;
  static const toJsonFactory = _$AssignExamCheckDoExamDtoApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$AssignExamCheckDoExamDtoApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class AssignExamCountDto {
  AssignExamCountDto({
    this.countExam,
    this.countTest,
    this.countExercise,
  });

  factory AssignExamCountDto.fromJson(Map<String, dynamic> json) =>
      _$AssignExamCountDtoFromJson(json);

  @JsonKey(name: 'countExam', includeIfNull: true)
  int? countExam;
  @JsonKey(name: 'countTest', includeIfNull: true)
  int? countTest;
  @JsonKey(name: 'countExercise', includeIfNull: true)
  int? countExercise;
  static const fromJsonFactory = _$AssignExamCountDtoFromJson;
  static const toJsonFactory = _$AssignExamCountDtoToJson;
  Map<String, dynamic> toJson() => _$AssignExamCountDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class AssignExamCountDtoApiResponse {
  AssignExamCountDtoApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory AssignExamCountDtoApiResponse.fromJson(Map<String, dynamic> json) =>
      _$AssignExamCountDtoApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  AssignExamCountDto? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$AssignExamCountDtoApiResponseFromJson;
  static const toJsonFactory = _$AssignExamCountDtoApiResponseToJson;
  Map<String, dynamic> toJson() => _$AssignExamCountDtoApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class AssignExamDetailDto {
  AssignExamDetailDto({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.title,
    this.classId,
    this.examId,
    this.fromDate,
    this.toDate,
    this.allowDeadline,
    this.allowViewAnswer,
    this.duration,
    this.status,
    this.type,
    this.assignExamUsers,
    this.subject,
    this.questionCount,
    this.canEdit,
  });

  factory AssignExamDetailDto.fromJson(Map<String, dynamic> json) =>
      _$AssignExamDetailDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'title', includeIfNull: true)
  String? title;
  @JsonKey(name: 'classId', includeIfNull: true)
  int? classId;
  @JsonKey(name: 'examId', includeIfNull: true)
  int? examId;
  @JsonKey(name: 'fromDate', includeIfNull: true)
  DateTime? fromDate;
  @JsonKey(name: 'toDate', includeIfNull: true)
  DateTime? toDate;
  @JsonKey(name: 'allowDeadline', includeIfNull: true)
  bool? allowDeadline;
  @JsonKey(name: 'allowViewAnswer', includeIfNull: true)
  bool? allowViewAnswer;
  @JsonKey(name: 'duration', includeIfNull: true)
  int? duration;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: assignExamStatusEnumToJson,
      fromJson: assignExamStatusEnumFromJson)
  enums.AssignExamStatusEnum? status;
  @JsonKey(
      name: 'type',
      includeIfNull: true,
      toJson: assignExamTypeEnumToJson,
      fromJson: assignExamTypeEnumFromJson)
  enums.AssignExamTypeEnum? type;
  @JsonKey(
      name: 'assignExamUsers',
      includeIfNull: true,
      defaultValue: <AssignExamUserEntity>[])
  List<AssignExamUserEntity>? assignExamUsers;
  @JsonKey(name: 'subject', includeIfNull: true)
  String? subject;
  @JsonKey(name: 'questionCount', includeIfNull: true)
  int? questionCount;
  @JsonKey(name: 'canEdit', includeIfNull: true)
  bool? canEdit;
  static const fromJsonFactory = _$AssignExamDetailDtoFromJson;
  static const toJsonFactory = _$AssignExamDetailDtoToJson;
  Map<String, dynamic> toJson() => _$AssignExamDetailDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class AssignExamDoneDto {
  AssignExamDoneDto({
    this.id,
    this.title,
    this.endDate,
    this.mark,
    this.totalMark,
    this.examId,
    this.examResultId,
    this.status,
  });

  factory AssignExamDoneDto.fromJson(Map<String, dynamic> json) =>
      _$AssignExamDoneDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'title', includeIfNull: true)
  String? title;
  @JsonKey(name: 'endDate', includeIfNull: true)
  DateTime? endDate;
  @JsonKey(name: 'mark', includeIfNull: true)
  double? mark;
  @JsonKey(name: 'totalMark', includeIfNull: true)
  double? totalMark;
  @JsonKey(name: 'examId', includeIfNull: true)
  int? examId;
  @JsonKey(name: 'examResultId', includeIfNull: true)
  int? examResultId;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: assignExamUserStatusEnumToJson,
      fromJson: assignExamUserStatusEnumFromJson)
  enums.AssignExamUserStatusEnum? status;
  static const fromJsonFactory = _$AssignExamDoneDtoFromJson;
  static const toJsonFactory = _$AssignExamDoneDtoToJson;
  Map<String, dynamic> toJson() => _$AssignExamDoneDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class AssignExamDoneDtoListApiResponse {
  AssignExamDoneDtoListApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory AssignExamDoneDtoListApiResponse.fromJson(
          Map<String, dynamic> json) =>
      _$AssignExamDoneDtoListApiResponseFromJson(json);

  @JsonKey(
      name: 'data', includeIfNull: true, defaultValue: <AssignExamDoneDto>[])
  List<AssignExamDoneDto>? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$AssignExamDoneDtoListApiResponseFromJson;
  static const toJsonFactory = _$AssignExamDoneDtoListApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$AssignExamDoneDtoListApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class AssignExamEditDto {
  AssignExamEditDto({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.title,
    this.classId,
    this.examId,
    this.fromDate,
    this.toDate,
    this.allowDeadline,
    this.allowViewAnswer,
    this.duration,
    this.status,
    this.type,
    this.assignExamUsers,
    this.assignUsers,
  });

  factory AssignExamEditDto.fromJson(Map<String, dynamic> json) =>
      _$AssignExamEditDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'title', includeIfNull: true)
  String? title;
  @JsonKey(name: 'classId', includeIfNull: true)
  int? classId;
  @JsonKey(name: 'examId', includeIfNull: true)
  int? examId;
  @JsonKey(name: 'fromDate', includeIfNull: true)
  DateTime? fromDate;
  @JsonKey(name: 'toDate', includeIfNull: true)
  DateTime? toDate;
  @JsonKey(name: 'allowDeadline', includeIfNull: true)
  bool? allowDeadline;
  @JsonKey(name: 'allowViewAnswer', includeIfNull: true)
  bool? allowViewAnswer;
  @JsonKey(name: 'duration', includeIfNull: true)
  int? duration;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: assignExamStatusEnumToJson,
      fromJson: assignExamStatusEnumFromJson)
  enums.AssignExamStatusEnum? status;
  @JsonKey(
      name: 'type',
      includeIfNull: true,
      toJson: assignExamTypeEnumToJson,
      fromJson: assignExamTypeEnumFromJson)
  enums.AssignExamTypeEnum? type;
  @JsonKey(
      name: 'assignExamUsers',
      includeIfNull: true,
      defaultValue: <AssignExamUserEntity>[])
  List<AssignExamUserEntity>? assignExamUsers;
  @JsonKey(
      name: 'assignUsers',
      includeIfNull: true,
      defaultValue: <AssignExamUserEditDto>[])
  List<AssignExamUserEditDto>? assignUsers;
  static const fromJsonFactory = _$AssignExamEditDtoFromJson;
  static const toJsonFactory = _$AssignExamEditDtoToJson;
  Map<String, dynamic> toJson() => _$AssignExamEditDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class AssignExamEntity {
  AssignExamEntity({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.title,
    this.classId,
    this.examId,
    this.fromDate,
    this.toDate,
    this.allowDeadline,
    this.allowViewAnswer,
    this.duration,
    this.status,
    this.type,
    this.assignExamUsers,
  });

  factory AssignExamEntity.fromJson(Map<String, dynamic> json) =>
      _$AssignExamEntityFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'title', includeIfNull: true)
  String? title;
  @JsonKey(name: 'classId', includeIfNull: true)
  int? classId;
  @JsonKey(name: 'examId', includeIfNull: true)
  int? examId;
  @JsonKey(name: 'fromDate', includeIfNull: true)
  DateTime? fromDate;
  @JsonKey(name: 'toDate', includeIfNull: true)
  DateTime? toDate;
  @JsonKey(name: 'allowDeadline', includeIfNull: true)
  bool? allowDeadline;
  @JsonKey(name: 'allowViewAnswer', includeIfNull: true)
  bool? allowViewAnswer;
  @JsonKey(name: 'duration', includeIfNull: true)
  int? duration;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: assignExamStatusEnumToJson,
      fromJson: assignExamStatusEnumFromJson)
  enums.AssignExamStatusEnum? status;
  @JsonKey(
      name: 'type',
      includeIfNull: true,
      toJson: assignExamTypeEnumToJson,
      fromJson: assignExamTypeEnumFromJson)
  enums.AssignExamTypeEnum? type;
  @JsonKey(
      name: 'assignExamUsers',
      includeIfNull: true,
      defaultValue: <AssignExamUserEntity>[])
  List<AssignExamUserEntity>? assignExamUsers;
  static const fromJsonFactory = _$AssignExamEntityFromJson;
  static const toJsonFactory = _$AssignExamEntityToJson;
  Map<String, dynamic> toJson() => _$AssignExamEntityToJson(this);
}

@JsonSerializable(explicitToJson: true)
class AssignExamListByClassQuery {
  AssignExamListByClassQuery({
    this.sortExpression,
    this.pageSize,
    this.pageIndex,
    this.skip,
    this.notSkip,
    this.propertyIncludes,
    this.keyword,
    this.subjectId,
    this.fromDate,
    this.toDate,
    this.classId,
    this.type,
    this.userId,
    this.isGetAll,
    this.status,
  });

  factory AssignExamListByClassQuery.fromJson(Map<String, dynamic> json) =>
      _$AssignExamListByClassQueryFromJson(json);

  @JsonKey(name: 'sortExpression', includeIfNull: true)
  String? sortExpression;
  @JsonKey(name: 'pageSize', includeIfNull: true)
  int? pageSize;
  @JsonKey(name: 'pageIndex', includeIfNull: true)
  int? pageIndex;
  @JsonKey(name: 'skip', includeIfNull: true)
  int? skip;
  @JsonKey(name: 'notSkip', includeIfNull: true)
  int? notSkip;
  @JsonKey(
      name: 'propertyIncludes', includeIfNull: true, defaultValue: <String>[])
  List<String>? propertyIncludes;
  @JsonKey(name: 'keyword', includeIfNull: true)
  String? keyword;
  @JsonKey(name: 'subjectId', includeIfNull: true)
  int? subjectId;
  @JsonKey(name: 'fromDate', includeIfNull: true)
  DateTime? fromDate;
  @JsonKey(name: 'toDate', includeIfNull: true)
  DateTime? toDate;
  @JsonKey(name: 'classId', includeIfNull: true)
  int? classId;
  @JsonKey(
      name: 'type',
      includeIfNull: true,
      toJson: assignExamTypeEnumToJson,
      fromJson: assignExamTypeEnumFromJson)
  enums.AssignExamTypeEnum? type;
  @JsonKey(name: 'userId', includeIfNull: true)
  int? userId;
  @JsonKey(name: 'isGetAll', includeIfNull: true)
  bool? isGetAll;
  @JsonKey(name: 'status', includeIfNull: true)
  int? status;
  static const fromJsonFactory = _$AssignExamListByClassQueryFromJson;
  static const toJsonFactory = _$AssignExamListByClassQueryToJson;
  Map<String, dynamic> toJson() => _$AssignExamListByClassQueryToJson(this);
}

@JsonSerializable(explicitToJson: true)
class AssignExamListByExamIdDto {
  AssignExamListByExamIdDto({
    this.id,
    this.examId,
    this.className,
    this.type,
    this.fromDate,
    this.countPupilDone,
    this.countPupil,
    this.countNeedMark,
    this.classId,
    this.createdBy,
  });

  factory AssignExamListByExamIdDto.fromJson(Map<String, dynamic> json) =>
      _$AssignExamListByExamIdDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'examId', includeIfNull: true)
  int? examId;
  @JsonKey(name: 'className', includeIfNull: true)
  String? className;
  @JsonKey(
      name: 'type',
      includeIfNull: true,
      toJson: assignExamTypeEnumToJson,
      fromJson: assignExamTypeEnumFromJson)
  enums.AssignExamTypeEnum? type;
  @JsonKey(name: 'fromDate', includeIfNull: true)
  DateTime? fromDate;
  @JsonKey(name: 'countPupilDone', includeIfNull: true)
  int? countPupilDone;
  @JsonKey(name: 'countPupil', includeIfNull: true)
  int? countPupil;
  @JsonKey(name: 'countNeedMark', includeIfNull: true)
  int? countNeedMark;
  @JsonKey(name: 'classId', includeIfNull: true)
  int? classId;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  static const fromJsonFactory = _$AssignExamListByExamIdDtoFromJson;
  static const toJsonFactory = _$AssignExamListByExamIdDtoToJson;
  Map<String, dynamic> toJson() => _$AssignExamListByExamIdDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class AssignExamListByExamIdDtoFilterResult {
  AssignExamListByExamIdDtoFilterResult({
    this.totalRows,
    this.data,
  });

  factory AssignExamListByExamIdDtoFilterResult.fromJson(
          Map<String, dynamic> json) =>
      _$AssignExamListByExamIdDtoFilterResultFromJson(json);

  @JsonKey(name: 'totalRows', includeIfNull: true)
  int? totalRows;
  @JsonKey(
      name: 'data',
      includeIfNull: true,
      defaultValue: <AssignExamListByExamIdDto>[])
  List<AssignExamListByExamIdDto>? data;
  static const fromJsonFactory =
      _$AssignExamListByExamIdDtoFilterResultFromJson;
  static const toJsonFactory = _$AssignExamListByExamIdDtoFilterResultToJson;
  Map<String, dynamic> toJson() =>
      _$AssignExamListByExamIdDtoFilterResultToJson(this);
}

@JsonSerializable(explicitToJson: true)
class AssignExamListByExamIdFilterDto {
  AssignExamListByExamIdFilterDto({
    this.sortExpression,
    this.pageSize,
    this.pageIndex,
    this.skip,
    this.notSkip,
    this.propertyIncludes,
    this.examId,
    this.fromDate,
    this.toDate,
    this.type,
    this.classId,
  });

  factory AssignExamListByExamIdFilterDto.fromJson(Map<String, dynamic> json) =>
      _$AssignExamListByExamIdFilterDtoFromJson(json);

  @JsonKey(name: 'sortExpression', includeIfNull: true)
  String? sortExpression;
  @JsonKey(name: 'pageSize', includeIfNull: true)
  int? pageSize;
  @JsonKey(name: 'pageIndex', includeIfNull: true)
  int? pageIndex;
  @JsonKey(name: 'skip', includeIfNull: true)
  int? skip;
  @JsonKey(name: 'notSkip', includeIfNull: true)
  int? notSkip;
  @JsonKey(
      name: 'propertyIncludes', includeIfNull: true, defaultValue: <String>[])
  List<String>? propertyIncludes;
  @JsonKey(name: 'examId', includeIfNull: true)
  int? examId;
  @JsonKey(name: 'fromDate', includeIfNull: true)
  DateTime? fromDate;
  @JsonKey(name: 'toDate', includeIfNull: true)
  DateTime? toDate;
  @JsonKey(
      name: 'type',
      includeIfNull: true,
      toJson: assignExamTypeEnumToJson,
      fromJson: assignExamTypeEnumFromJson)
  enums.AssignExamTypeEnum? type;
  @JsonKey(name: 'classId', includeIfNull: true)
  int? classId;
  static const fromJsonFactory = _$AssignExamListByExamIdFilterDtoFromJson;
  static const toJsonFactory = _$AssignExamListByExamIdFilterDtoToJson;
  Map<String, dynamic> toJson() =>
      _$AssignExamListByExamIdFilterDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class AssignExamListDto {
  AssignExamListDto({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.classId,
    this.title,
    this.subjectId,
    this.subject,
    this.fromDate,
    this.isHot,
    this.toDate,
    this.status,
    this.countPupil,
    this.countPupilDone,
    this.isOwner,
    this.isTeacher,
    this.examId,
    this.mark,
    this.userStatus,
    this.examResultId,
    this.allowViewAnswer,
    this.pupilSubmissionTime,
    this.countNeedMark,
    this.duration,
  });

  factory AssignExamListDto.fromJson(Map<String, dynamic> json) =>
      _$AssignExamListDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'classId', includeIfNull: true)
  int? classId;
  @JsonKey(name: 'title', includeIfNull: true)
  String? title;
  @JsonKey(name: 'subjectId', includeIfNull: true)
  int? subjectId;
  @JsonKey(name: 'subject', includeIfNull: true)
  String? subject;
  @JsonKey(name: 'fromDate', includeIfNull: true)
  DateTime? fromDate;
  @JsonKey(name: 'isHot', includeIfNull: true)
  bool? isHot;
  @JsonKey(name: 'toDate', includeIfNull: true)
  DateTime? toDate;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: assignExamStatusEnumToJson,
      fromJson: assignExamStatusEnumFromJson)
  enums.AssignExamStatusEnum? status;
  @JsonKey(name: 'countPupil', includeIfNull: true)
  int? countPupil;
  @JsonKey(name: 'countPupilDone', includeIfNull: true)
  int? countPupilDone;
  @JsonKey(name: 'isOwner', includeIfNull: true)
  bool? isOwner;
  @JsonKey(name: 'isTeacher', includeIfNull: true)
  bool? isTeacher;
  @JsonKey(name: 'examId', includeIfNull: true)
  int? examId;
  @JsonKey(name: 'mark', includeIfNull: true)
  double? mark;
  @JsonKey(
      name: 'userStatus',
      includeIfNull: true,
      toJson: assignExamUserStatusEnumToJson,
      fromJson: assignExamUserStatusEnumFromJson)
  enums.AssignExamUserStatusEnum? userStatus;
  @JsonKey(name: 'examResultId', includeIfNull: true)
  int? examResultId;
  @JsonKey(name: 'allowViewAnswer', includeIfNull: true)
  bool? allowViewAnswer;
  @JsonKey(name: 'pupilSubmissionTime', includeIfNull: true)
  DateTime? pupilSubmissionTime;
  @JsonKey(name: 'countNeedMark', includeIfNull: true)
  int? countNeedMark;
  @JsonKey(name: 'duration', includeIfNull: true)
  int? duration;
  static const fromJsonFactory = _$AssignExamListDtoFromJson;
  static const toJsonFactory = _$AssignExamListDtoToJson;
  Map<String, dynamic> toJson() => _$AssignExamListDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class AssignExamListDtoFilterResult {
  AssignExamListDtoFilterResult({
    this.totalRows,
    this.data,
  });

  factory AssignExamListDtoFilterResult.fromJson(Map<String, dynamic> json) =>
      _$AssignExamListDtoFilterResultFromJson(json);

  @JsonKey(name: 'totalRows', includeIfNull: true)
  int? totalRows;
  @JsonKey(
      name: 'data', includeIfNull: true, defaultValue: <AssignExamListDto>[])
  List<AssignExamListDto>? data;
  static const fromJsonFactory = _$AssignExamListDtoFilterResultFromJson;
  static const toJsonFactory = _$AssignExamListDtoFilterResultToJson;
  Map<String, dynamic> toJson() => _$AssignExamListDtoFilterResultToJson(this);
}

@JsonSerializable(explicitToJson: true)
class AssignExamListExamDto {
  AssignExamListExamDto({
    this.id,
    this.title,
    this.subject,
    this.fromDate,
    this.toDate,
    this.status,
    this.type,
  });

  factory AssignExamListExamDto.fromJson(Map<String, dynamic> json) =>
      _$AssignExamListExamDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'title', includeIfNull: true)
  String? title;
  @JsonKey(name: 'subject', includeIfNull: true)
  String? subject;
  @JsonKey(name: 'fromDate', includeIfNull: true)
  DateTime? fromDate;
  @JsonKey(name: 'toDate', includeIfNull: true)
  DateTime? toDate;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: assignExamStatusEnumToJson,
      fromJson: assignExamStatusEnumFromJson)
  enums.AssignExamStatusEnum? status;
  @JsonKey(
      name: 'type',
      includeIfNull: true,
      toJson: assignExamTypeEnumToJson,
      fromJson: assignExamTypeEnumFromJson)
  enums.AssignExamTypeEnum? type;
  static const fromJsonFactory = _$AssignExamListExamDtoFromJson;
  static const toJsonFactory = _$AssignExamListExamDtoToJson;
  Map<String, dynamic> toJson() => _$AssignExamListExamDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class AssignExamListExamDtoFilterResult {
  AssignExamListExamDtoFilterResult({
    this.totalRows,
    this.data,
  });

  factory AssignExamListExamDtoFilterResult.fromJson(
          Map<String, dynamic> json) =>
      _$AssignExamListExamDtoFilterResultFromJson(json);

  @JsonKey(name: 'totalRows', includeIfNull: true)
  int? totalRows;
  @JsonKey(
      name: 'data',
      includeIfNull: true,
      defaultValue: <AssignExamListExamDto>[])
  List<AssignExamListExamDto>? data;
  static const fromJsonFactory = _$AssignExamListExamDtoFilterResultFromJson;
  static const toJsonFactory = _$AssignExamListExamDtoFilterResultToJson;
  Map<String, dynamic> toJson() =>
      _$AssignExamListExamDtoFilterResultToJson(this);
}

@JsonSerializable(explicitToJson: true)
class AssignExamListExamDtoFilterResultApiResponse {
  AssignExamListExamDtoFilterResultApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory AssignExamListExamDtoFilterResultApiResponse.fromJson(
          Map<String, dynamic> json) =>
      _$AssignExamListExamDtoFilterResultApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  AssignExamListExamDtoFilterResult? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory =
      _$AssignExamListExamDtoFilterResultApiResponseFromJson;
  static const toJsonFactory =
      _$AssignExamListExamDtoFilterResultApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$AssignExamListExamDtoFilterResultApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class AssignExamListExamFilterDto {
  AssignExamListExamFilterDto({
    this.sortExpression,
    this.pageSize,
    this.pageIndex,
    this.skip,
    this.notSkip,
    this.propertyIncludes,
    this.keyword,
    this.userId,
    this.userStatus,
  });

  factory AssignExamListExamFilterDto.fromJson(Map<String, dynamic> json) =>
      _$AssignExamListExamFilterDtoFromJson(json);

  @JsonKey(name: 'sortExpression', includeIfNull: true)
  String? sortExpression;
  @JsonKey(name: 'pageSize', includeIfNull: true)
  int? pageSize;
  @JsonKey(name: 'pageIndex', includeIfNull: true)
  int? pageIndex;
  @JsonKey(name: 'skip', includeIfNull: true)
  int? skip;
  @JsonKey(name: 'notSkip', includeIfNull: true)
  int? notSkip;
  @JsonKey(
      name: 'propertyIncludes', includeIfNull: true, defaultValue: <String>[])
  List<String>? propertyIncludes;
  @JsonKey(name: 'keyword', includeIfNull: true)
  String? keyword;
  @JsonKey(name: 'userId', includeIfNull: true)
  int? userId;
  @JsonKey(
      name: 'userStatus',
      includeIfNull: true,
      toJson: assignExamUserStatusEnumToJson,
      fromJson: assignExamUserStatusEnumFromJson)
  enums.AssignExamUserStatusEnum? userStatus;
  static const fromJsonFactory = _$AssignExamListExamFilterDtoFromJson;
  static const toJsonFactory = _$AssignExamListExamFilterDtoToJson;
  Map<String, dynamic> toJson() => _$AssignExamListExamFilterDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class AssignExamListUserDto {
  AssignExamListUserDto({
    this.assignExamId,
    this.userId,
    this.status,
    this.examResultId,
    this.startDate,
    this.mark,
    this.duration,
    this.endDate,
    this.note,
    this.avatar,
    this.fullName,
    this.overdue,
    this.timeMarking,
  });

  factory AssignExamListUserDto.fromJson(Map<String, dynamic> json) =>
      _$AssignExamListUserDtoFromJson(json);

  @JsonKey(name: 'assignExamId', includeIfNull: true)
  int? assignExamId;
  @JsonKey(name: 'userId', includeIfNull: true)
  int? userId;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: assignExamUserStatusEnumToJson,
      fromJson: assignExamUserStatusEnumFromJson)
  enums.AssignExamUserStatusEnum? status;
  @JsonKey(name: 'examResultId', includeIfNull: true)
  int? examResultId;
  @JsonKey(name: 'startDate', includeIfNull: true)
  DateTime? startDate;
  @JsonKey(name: 'mark', includeIfNull: true)
  double? mark;
  @JsonKey(name: 'duration', includeIfNull: true)
  int? duration;
  @JsonKey(name: 'endDate', includeIfNull: true)
  DateTime? endDate;
  @JsonKey(name: 'note', includeIfNull: true)
  String? note;
  @JsonKey(name: 'avatar', includeIfNull: true)
  String? avatar;
  @JsonKey(name: 'fullName', includeIfNull: true)
  String? fullName;
  @JsonKey(name: 'overdue', includeIfNull: true)
  bool? overdue;
  @JsonKey(name: 'timeMarking', includeIfNull: true)
  DateTime? timeMarking;
  static const fromJsonFactory = _$AssignExamListUserDtoFromJson;
  static const toJsonFactory = _$AssignExamListUserDtoToJson;
  Map<String, dynamic> toJson() => _$AssignExamListUserDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class AssignExamListUserFilterDto {
  AssignExamListUserFilterDto({
    this.keyword,
    this.id,
    this.fromDate,
    this.toDate,
    this.status,
    this.sortExpression,
  });

  factory AssignExamListUserFilterDto.fromJson(Map<String, dynamic> json) =>
      _$AssignExamListUserFilterDtoFromJson(json);

  @JsonKey(name: 'keyword', includeIfNull: true)
  String? keyword;
  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'fromDate', includeIfNull: true)
  DateTime? fromDate;
  @JsonKey(name: 'toDate', includeIfNull: true)
  DateTime? toDate;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: assignExamUserStatusEnumToJson,
      fromJson: assignExamUserStatusEnumFromJson)
  enums.AssignExamUserStatusEnum? status;
  @JsonKey(name: 'sortExpression', includeIfNull: true)
  String? sortExpression;
  static const fromJsonFactory = _$AssignExamListUserFilterDtoFromJson;
  static const toJsonFactory = _$AssignExamListUserFilterDtoToJson;
  Map<String, dynamic> toJson() => _$AssignExamListUserFilterDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class AssignExamNeedDoDto {
  AssignExamNeedDoDto({
    this.examId,
    this.id,
    this.title,
    this.subjectId,
    this.subject,
    this.toDate,
    this.type,
    this.duration,
  });

  factory AssignExamNeedDoDto.fromJson(Map<String, dynamic> json) =>
      _$AssignExamNeedDoDtoFromJson(json);

  @JsonKey(name: 'examId', includeIfNull: true)
  int? examId;
  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'title', includeIfNull: true)
  String? title;
  @JsonKey(name: 'subjectId', includeIfNull: true)
  int? subjectId;
  @JsonKey(name: 'subject', includeIfNull: true)
  String? subject;
  @JsonKey(name: 'toDate', includeIfNull: true)
  DateTime? toDate;
  @JsonKey(
      name: 'type',
      includeIfNull: true,
      toJson: assignExamTypeEnumToJson,
      fromJson: assignExamTypeEnumFromJson)
  enums.AssignExamTypeEnum? type;
  @JsonKey(name: 'duration', includeIfNull: true)
  int? duration;
  static const fromJsonFactory = _$AssignExamNeedDoDtoFromJson;
  static const toJsonFactory = _$AssignExamNeedDoDtoToJson;
  Map<String, dynamic> toJson() => _$AssignExamNeedDoDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class AssignExamNeedDoDtoListApiResponse {
  AssignExamNeedDoDtoListApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory AssignExamNeedDoDtoListApiResponse.fromJson(
          Map<String, dynamic> json) =>
      _$AssignExamNeedDoDtoListApiResponseFromJson(json);

  @JsonKey(
      name: 'data', includeIfNull: true, defaultValue: <AssignExamNeedDoDto>[])
  List<AssignExamNeedDoDto>? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$AssignExamNeedDoDtoListApiResponseFromJson;
  static const toJsonFactory = _$AssignExamNeedDoDtoListApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$AssignExamNeedDoDtoListApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class AssignExamScoreDistributionDto {
  AssignExamScoreDistributionDto({
    this.scoreName,
    this.count,
  });

  factory AssignExamScoreDistributionDto.fromJson(Map<String, dynamic> json) =>
      _$AssignExamScoreDistributionDtoFromJson(json);

  @JsonKey(name: 'scoreName', includeIfNull: true)
  String? scoreName;
  @JsonKey(name: 'count', includeIfNull: true)
  int? count;
  static const fromJsonFactory = _$AssignExamScoreDistributionDtoFromJson;
  static const toJsonFactory = _$AssignExamScoreDistributionDtoToJson;
  Map<String, dynamic> toJson() => _$AssignExamScoreDistributionDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class AssignExamScoreDistributionDtoListApiResponse {
  AssignExamScoreDistributionDtoListApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory AssignExamScoreDistributionDtoListApiResponse.fromJson(
          Map<String, dynamic> json) =>
      _$AssignExamScoreDistributionDtoListApiResponseFromJson(json);

  @JsonKey(
      name: 'data',
      includeIfNull: true,
      defaultValue: <AssignExamScoreDistributionDto>[])
  List<AssignExamScoreDistributionDto>? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory =
      _$AssignExamScoreDistributionDtoListApiResponseFromJson;
  static const toJsonFactory =
      _$AssignExamScoreDistributionDtoListApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$AssignExamScoreDistributionDtoListApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class AssignExamTopDifficultQuestionDto {
  AssignExamTopDifficultQuestionDto({
    this.questionId,
    this.question,
    this.count,
  });

  factory AssignExamTopDifficultQuestionDto.fromJson(
          Map<String, dynamic> json) =>
      _$AssignExamTopDifficultQuestionDtoFromJson(json);

  @JsonKey(name: 'questionId', includeIfNull: true)
  int? questionId;
  @JsonKey(name: 'question', includeIfNull: true)
  String? question;
  @JsonKey(name: 'count', includeIfNull: true)
  int? count;
  static const fromJsonFactory = _$AssignExamTopDifficultQuestionDtoFromJson;
  static const toJsonFactory = _$AssignExamTopDifficultQuestionDtoToJson;
  Map<String, dynamic> toJson() =>
      _$AssignExamTopDifficultQuestionDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class AssignExamTopDifficultQuestionDtoListApiResponse {
  AssignExamTopDifficultQuestionDtoListApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory AssignExamTopDifficultQuestionDtoListApiResponse.fromJson(
          Map<String, dynamic> json) =>
      _$AssignExamTopDifficultQuestionDtoListApiResponseFromJson(json);

  @JsonKey(
      name: 'data',
      includeIfNull: true,
      defaultValue: <AssignExamTopDifficultQuestionDto>[])
  List<AssignExamTopDifficultQuestionDto>? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory =
      _$AssignExamTopDifficultQuestionDtoListApiResponseFromJson;
  static const toJsonFactory =
      _$AssignExamTopDifficultQuestionDtoListApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$AssignExamTopDifficultQuestionDtoListApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class AssignExamUpdateNoteDto {
  AssignExamUpdateNoteDto({
    this.id,
    this.userId,
    this.note,
  });

  factory AssignExamUpdateNoteDto.fromJson(Map<String, dynamic> json) =>
      _$AssignExamUpdateNoteDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'userId', includeIfNull: true)
  int? userId;
  @JsonKey(name: 'note', includeIfNull: true)
  String? note;
  static const fromJsonFactory = _$AssignExamUpdateNoteDtoFromJson;
  static const toJsonFactory = _$AssignExamUpdateNoteDtoToJson;
  Map<String, dynamic> toJson() => _$AssignExamUpdateNoteDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class AssignExamUpdateTimeDto {
  AssignExamUpdateTimeDto({
    this.id,
    this.time,
  });

  factory AssignExamUpdateTimeDto.fromJson(Map<String, dynamic> json) =>
      _$AssignExamUpdateTimeDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'time', includeIfNull: true)
  DateTime? time;
  static const fromJsonFactory = _$AssignExamUpdateTimeDtoFromJson;
  static const toJsonFactory = _$AssignExamUpdateTimeDtoToJson;
  Map<String, dynamic> toJson() => _$AssignExamUpdateTimeDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class AssignExamUserEditDto {
  AssignExamUserEditDto({
    this.assignExamId,
    this.userId,
    this.status,
    this.examResultId,
    this.startDate,
    this.mark,
    this.duration,
    this.endDate,
    this.note,
    this.classUserId,
  });

  factory AssignExamUserEditDto.fromJson(Map<String, dynamic> json) =>
      _$AssignExamUserEditDtoFromJson(json);

  @JsonKey(name: 'assignExamId', includeIfNull: true)
  int? assignExamId;
  @JsonKey(name: 'userId', includeIfNull: true)
  int? userId;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: assignExamUserStatusEnumToJson,
      fromJson: assignExamUserStatusEnumFromJson)
  enums.AssignExamUserStatusEnum? status;
  @JsonKey(name: 'examResultId', includeIfNull: true)
  int? examResultId;
  @JsonKey(name: 'startDate', includeIfNull: true)
  DateTime? startDate;
  @JsonKey(name: 'mark', includeIfNull: true)
  double? mark;
  @JsonKey(name: 'duration', includeIfNull: true)
  int? duration;
  @JsonKey(name: 'endDate', includeIfNull: true)
  DateTime? endDate;
  @JsonKey(name: 'note', includeIfNull: true)
  String? note;
  @JsonKey(name: 'classUserId', includeIfNull: true)
  int? classUserId;
  static const fromJsonFactory = _$AssignExamUserEditDtoFromJson;
  static const toJsonFactory = _$AssignExamUserEditDtoToJson;
  Map<String, dynamic> toJson() => _$AssignExamUserEditDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class AssignExamUserEntity {
  AssignExamUserEntity({
    this.assignExamId,
    this.userId,
    this.status,
    this.examResultId,
    this.startDate,
    this.mark,
    this.duration,
    this.endDate,
    this.note,
  });

  factory AssignExamUserEntity.fromJson(Map<String, dynamic> json) =>
      _$AssignExamUserEntityFromJson(json);

  @JsonKey(name: 'assignExamId', includeIfNull: true)
  int? assignExamId;
  @JsonKey(name: 'userId', includeIfNull: true)
  int? userId;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: assignExamUserStatusEnumToJson,
      fromJson: assignExamUserStatusEnumFromJson)
  enums.AssignExamUserStatusEnum? status;
  @JsonKey(name: 'examResultId', includeIfNull: true)
  int? examResultId;
  @JsonKey(name: 'startDate', includeIfNull: true)
  DateTime? startDate;
  @JsonKey(name: 'mark', includeIfNull: true)
  double? mark;
  @JsonKey(name: 'duration', includeIfNull: true)
  int? duration;
  @JsonKey(name: 'endDate', includeIfNull: true)
  DateTime? endDate;
  @JsonKey(name: 'note', includeIfNull: true)
  String? note;
  static const fromJsonFactory = _$AssignExamUserEntityFromJson;
  static const toJsonFactory = _$AssignExamUserEntityToJson;
  Map<String, dynamic> toJson() => _$AssignExamUserEntityToJson(this);
}

@JsonSerializable(explicitToJson: true)
class AssignExistingTeacherDto {
  AssignExistingTeacherDto({
    this.schoolId,
    this.userId,
    this.subject,
    this.classManage,
    this.classList,
  });

  factory AssignExistingTeacherDto.fromJson(Map<String, dynamic> json) =>
      _$AssignExistingTeacherDtoFromJson(json);

  @JsonKey(name: 'schoolId', includeIfNull: true)
  int? schoolId;
  @JsonKey(name: 'userId', includeIfNull: true)
  int? userId;
  @JsonKey(name: 'subject', includeIfNull: true, defaultValue: <int>[])
  List<int>? subject;
  @JsonKey(name: 'classManage', includeIfNull: true, defaultValue: <int>[])
  List<int>? classManage;
  @JsonKey(name: 'classList', includeIfNull: true, defaultValue: <int>[])
  List<int>? classList;
  static const fromJsonFactory = _$AssignExistingTeacherDtoFromJson;
  static const toJsonFactory = _$AssignExistingTeacherDtoToJson;
  Map<String, dynamic> toJson() => _$AssignExistingTeacherDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class BooleanApiResponse {
  BooleanApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory BooleanApiResponse.fromJson(Map<String, dynamic> json) =>
      _$BooleanApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  bool? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$BooleanApiResponseFromJson;
  static const toJsonFactory = _$BooleanApiResponseToJson;
  Map<String, dynamic> toJson() => _$BooleanApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class CartAddItemDto {
  CartAddItemDto({
    this.productId,
    this.quantity,
  });

  factory CartAddItemDto.fromJson(Map<String, dynamic> json) =>
      _$CartAddItemDtoFromJson(json);

  @JsonKey(name: 'productId', includeIfNull: true)
  int? productId;
  @JsonKey(name: 'quantity', includeIfNull: true)
  int? quantity;
  static const fromJsonFactory = _$CartAddItemDtoFromJson;
  static const toJsonFactory = _$CartAddItemDtoToJson;
  Map<String, dynamic> toJson() => _$CartAddItemDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class CartDto {
  CartDto({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.userId,
    this.notes,
    this.items,
  });

  factory CartDto.fromJson(Map<String, dynamic> json) =>
      _$CartDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'userId', includeIfNull: true)
  int? userId;
  @JsonKey(name: 'notes', includeIfNull: true)
  String? notes;
  @JsonKey(name: 'items', includeIfNull: true, defaultValue: <CartItemDto>[])
  List<CartItemDto>? items;
  static const fromJsonFactory = _$CartDtoFromJson;
  static const toJsonFactory = _$CartDtoToJson;
  Map<String, dynamic> toJson() => _$CartDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class CartDtoApiResponse {
  CartDtoApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory CartDtoApiResponse.fromJson(Map<String, dynamic> json) =>
      _$CartDtoApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  CartDto? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$CartDtoApiResponseFromJson;
  static const toJsonFactory = _$CartDtoApiResponseToJson;
  Map<String, dynamic> toJson() => _$CartDtoApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class CartEntity {
  CartEntity({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.userId,
    this.notes,
    this.items,
  });

  factory CartEntity.fromJson(Map<String, dynamic> json) =>
      _$CartEntityFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'userId', includeIfNull: true)
  int? userId;
  @JsonKey(name: 'notes', includeIfNull: true)
  String? notes;
  @JsonKey(name: 'items', includeIfNull: true, defaultValue: <CartItemEntity>[])
  List<CartItemEntity>? items;
  static const fromJsonFactory = _$CartEntityFromJson;
  static const toJsonFactory = _$CartEntityToJson;
  Map<String, dynamic> toJson() => _$CartEntityToJson(this);
}

@JsonSerializable(explicitToJson: true)
class CartItemDto {
  CartItemDto({
    this.id,
    this.cartId,
    this.productId,
    this.quantity,
    this.product,
  });

  factory CartItemDto.fromJson(Map<String, dynamic> json) =>
      _$CartItemDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'cartId', includeIfNull: true)
  int? cartId;
  @JsonKey(name: 'productId', includeIfNull: true)
  int? productId;
  @JsonKey(name: 'quantity', includeIfNull: true)
  int? quantity;
  @JsonKey(name: 'product', includeIfNull: true)
  ProductListDto? product;
  static const fromJsonFactory = _$CartItemDtoFromJson;
  static const toJsonFactory = _$CartItemDtoToJson;
  Map<String, dynamic> toJson() => _$CartItemDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class CartItemEntity {
  CartItemEntity({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.cartId,
    this.productId,
    this.quantity,
    this.cart,
    this.product,
  });

  factory CartItemEntity.fromJson(Map<String, dynamic> json) =>
      _$CartItemEntityFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'cartId', includeIfNull: true)
  int? cartId;
  @JsonKey(name: 'productId', includeIfNull: true)
  int? productId;
  @JsonKey(name: 'quantity', includeIfNull: true)
  int? quantity;
  @JsonKey(name: 'cart', includeIfNull: true)
  CartEntity? cart;
  @JsonKey(name: 'product', includeIfNull: true)
  ProductEntity? product;
  static const fromJsonFactory = _$CartItemEntityFromJson;
  static const toJsonFactory = _$CartItemEntityToJson;
  Map<String, dynamic> toJson() => _$CartItemEntityToJson(this);
}

@JsonSerializable(explicitToJson: true)
class CartUpdateItemDto {
  CartUpdateItemDto({
    this.cartItemId,
    this.quantity,
  });

  factory CartUpdateItemDto.fromJson(Map<String, dynamic> json) =>
      _$CartUpdateItemDtoFromJson(json);

  @JsonKey(name: 'cartItemId', includeIfNull: true)
  int? cartItemId;
  @JsonKey(name: 'quantity', includeIfNull: true)
  int? quantity;
  static const fromJsonFactory = _$CartUpdateItemDtoFromJson;
  static const toJsonFactory = _$CartUpdateItemDtoToJson;
  Map<String, dynamic> toJson() => _$CartUpdateItemDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class CategoryClassLevelEntity {
  CategoryClassLevelEntity({
    this.categoryId,
    this.classLevel,
    this.category,
  });

  factory CategoryClassLevelEntity.fromJson(Map<String, dynamic> json) =>
      _$CategoryClassLevelEntityFromJson(json);

  @JsonKey(name: 'categoryId', includeIfNull: true)
  int? categoryId;
  @JsonKey(name: 'classLevel', includeIfNull: true)
  int? classLevel;
  @JsonKey(name: 'category', includeIfNull: true)
  CategoryEntity? category;
  static const fromJsonFactory = _$CategoryClassLevelEntityFromJson;
  static const toJsonFactory = _$CategoryClassLevelEntityToJson;
  Map<String, dynamic> toJson() => _$CategoryClassLevelEntityToJson(this);
}

@JsonSerializable(explicitToJson: true)
class CategoryEntity {
  CategoryEntity({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.name,
    this.description,
    this.url,
    this.code,
    this.parentId,
    this.level,
    this.path,
    this.icon,
    this.status,
    this.categoryClassLevels,
  });

  factory CategoryEntity.fromJson(Map<String, dynamic> json) =>
      _$CategoryEntityFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(name: 'description', includeIfNull: true)
  String? description;
  @JsonKey(name: 'url', includeIfNull: true)
  String? url;
  @JsonKey(name: 'code', includeIfNull: true)
  String? code;
  @JsonKey(name: 'parentId', includeIfNull: true)
  int? parentId;
  @JsonKey(name: 'level', includeIfNull: true)
  int? level;
  @JsonKey(name: 'path', includeIfNull: true)
  String? path;
  @JsonKey(name: 'icon', includeIfNull: true)
  String? icon;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: commonStatusEnumToJson,
      fromJson: commonStatusEnumFromJson)
  enums.CommonStatusEnum? status;
  @JsonKey(
      name: 'categoryClassLevels',
      includeIfNull: true,
      defaultValue: <CategoryClassLevelEntity>[])
  List<CategoryClassLevelEntity>? categoryClassLevels;
  static const fromJsonFactory = _$CategoryEntityFromJson;
  static const toJsonFactory = _$CategoryEntityToJson;
  Map<String, dynamic> toJson() => _$CategoryEntityToJson(this);
}

@JsonSerializable(explicitToJson: true)
class CategoryEntityApiResponse {
  CategoryEntityApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory CategoryEntityApiResponse.fromJson(Map<String, dynamic> json) =>
      _$CategoryEntityApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  CategoryEntity? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$CategoryEntityApiResponseFromJson;
  static const toJsonFactory = _$CategoryEntityApiResponseToJson;
  Map<String, dynamic> toJson() => _$CategoryEntityApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class CategoryGetListQuery {
  CategoryGetListQuery({
    this.sortExpression,
    this.pageSize,
    this.pageIndex,
    this.skip,
    this.notSkip,
    this.propertyIncludes,
    this.keyword,
    this.zoneId,
    this.code,
  });

  factory CategoryGetListQuery.fromJson(Map<String, dynamic> json) =>
      _$CategoryGetListQueryFromJson(json);

  @JsonKey(name: 'sortExpression', includeIfNull: true)
  String? sortExpression;
  @JsonKey(name: 'pageSize', includeIfNull: true)
  int? pageSize;
  @JsonKey(name: 'pageIndex', includeIfNull: true)
  int? pageIndex;
  @JsonKey(name: 'skip', includeIfNull: true)
  int? skip;
  @JsonKey(name: 'notSkip', includeIfNull: true)
  int? notSkip;
  @JsonKey(
      name: 'propertyIncludes', includeIfNull: true, defaultValue: <String>[])
  List<String>? propertyIncludes;
  @JsonKey(name: 'keyword', includeIfNull: true)
  String? keyword;
  @JsonKey(name: 'zoneId', includeIfNull: true)
  int? zoneId;
  @JsonKey(name: 'code', includeIfNull: true)
  String? code;
  static const fromJsonFactory = _$CategoryGetListQueryFromJson;
  static const toJsonFactory = _$CategoryGetListQueryToJson;
  Map<String, dynamic> toJson() => _$CategoryGetListQueryToJson(this);
}

@JsonSerializable(explicitToJson: true)
class CategoryGetListWithGalleryCountQuery {
  CategoryGetListWithGalleryCountQuery({
    this.code,
    this.includeTotal,
  });

  factory CategoryGetListWithGalleryCountQuery.fromJson(
          Map<String, dynamic> json) =>
      _$CategoryGetListWithGalleryCountQueryFromJson(json);

  @JsonKey(name: 'code', includeIfNull: true)
  String? code;
  @JsonKey(name: 'includeTotal', includeIfNull: true)
  bool? includeTotal;
  static const fromJsonFactory = _$CategoryGetListWithGalleryCountQueryFromJson;
  static const toJsonFactory = _$CategoryGetListWithGalleryCountQueryToJson;
  Map<String, dynamic> toJson() =>
      _$CategoryGetListWithGalleryCountQueryToJson(this);
}

@JsonSerializable(explicitToJson: true)
class CategoryGetListWithNewsCountQuery {
  CategoryGetListWithNewsCountQuery({
    this.code,
    this.includeTotal,
  });

  factory CategoryGetListWithNewsCountQuery.fromJson(
          Map<String, dynamic> json) =>
      _$CategoryGetListWithNewsCountQueryFromJson(json);

  @JsonKey(name: 'code', includeIfNull: true)
  String? code;
  @JsonKey(name: 'includeTotal', includeIfNull: true)
  bool? includeTotal;
  static const fromJsonFactory = _$CategoryGetListWithNewsCountQueryFromJson;
  static const toJsonFactory = _$CategoryGetListWithNewsCountQueryToJson;
  Map<String, dynamic> toJson() =>
      _$CategoryGetListWithNewsCountQueryToJson(this);
}

@JsonSerializable(explicitToJson: true)
class CategoryListDto {
  CategoryListDto({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.name,
    this.description,
    this.url,
    this.code,
    this.parentId,
    this.level,
    this.path,
    this.icon,
    this.status,
    this.categoryClassLevels,
  });

  factory CategoryListDto.fromJson(Map<String, dynamic> json) =>
      _$CategoryListDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(name: 'description', includeIfNull: true)
  String? description;
  @JsonKey(name: 'url', includeIfNull: true)
  String? url;
  @JsonKey(name: 'code', includeIfNull: true)
  String? code;
  @JsonKey(name: 'parentId', includeIfNull: true)
  int? parentId;
  @JsonKey(name: 'level', includeIfNull: true)
  int? level;
  @JsonKey(name: 'path', includeIfNull: true)
  String? path;
  @JsonKey(name: 'icon', includeIfNull: true)
  String? icon;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: commonStatusEnumToJson,
      fromJson: commonStatusEnumFromJson)
  enums.CommonStatusEnum? status;
  @JsonKey(
      name: 'categoryClassLevels',
      includeIfNull: true,
      defaultValue: <CategoryClassLevelEntity>[])
  List<CategoryClassLevelEntity>? categoryClassLevels;
  static const fromJsonFactory = _$CategoryListDtoFromJson;
  static const toJsonFactory = _$CategoryListDtoToJson;
  Map<String, dynamic> toJson() => _$CategoryListDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class CategoryListDtoFilterResult {
  CategoryListDtoFilterResult({
    this.totalRows,
    this.data,
  });

  factory CategoryListDtoFilterResult.fromJson(Map<String, dynamic> json) =>
      _$CategoryListDtoFilterResultFromJson(json);

  @JsonKey(name: 'totalRows', includeIfNull: true)
  int? totalRows;
  @JsonKey(name: 'data', includeIfNull: true, defaultValue: <CategoryListDto>[])
  List<CategoryListDto>? data;
  static const fromJsonFactory = _$CategoryListDtoFilterResultFromJson;
  static const toJsonFactory = _$CategoryListDtoFilterResultToJson;
  Map<String, dynamic> toJson() => _$CategoryListDtoFilterResultToJson(this);
}

@JsonSerializable(explicitToJson: true)
class CategoryListDtoFilterResultApiResponse {
  CategoryListDtoFilterResultApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory CategoryListDtoFilterResultApiResponse.fromJson(
          Map<String, dynamic> json) =>
      _$CategoryListDtoFilterResultApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  CategoryListDtoFilterResult? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory =
      _$CategoryListDtoFilterResultApiResponseFromJson;
  static const toJsonFactory = _$CategoryListDtoFilterResultApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$CategoryListDtoFilterResultApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class CategoryWithGalleryCountDto {
  CategoryWithGalleryCountDto({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.name,
    this.description,
    this.url,
    this.code,
    this.parentId,
    this.level,
    this.path,
    this.icon,
    this.status,
    this.categoryClassLevels,
    this.galleryCount,
  });

  factory CategoryWithGalleryCountDto.fromJson(Map<String, dynamic> json) =>
      _$CategoryWithGalleryCountDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(name: 'description', includeIfNull: true)
  String? description;
  @JsonKey(name: 'url', includeIfNull: true)
  String? url;
  @JsonKey(name: 'code', includeIfNull: true)
  String? code;
  @JsonKey(name: 'parentId', includeIfNull: true)
  int? parentId;
  @JsonKey(name: 'level', includeIfNull: true)
  int? level;
  @JsonKey(name: 'path', includeIfNull: true)
  String? path;
  @JsonKey(name: 'icon', includeIfNull: true)
  String? icon;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: commonStatusEnumToJson,
      fromJson: commonStatusEnumFromJson)
  enums.CommonStatusEnum? status;
  @JsonKey(
      name: 'categoryClassLevels',
      includeIfNull: true,
      defaultValue: <CategoryClassLevelEntity>[])
  List<CategoryClassLevelEntity>? categoryClassLevels;
  @JsonKey(name: 'galleryCount', includeIfNull: true)
  int? galleryCount;
  static const fromJsonFactory = _$CategoryWithGalleryCountDtoFromJson;
  static const toJsonFactory = _$CategoryWithGalleryCountDtoToJson;
  Map<String, dynamic> toJson() => _$CategoryWithGalleryCountDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class CategoryWithGalleryCountDtoListApiResponse {
  CategoryWithGalleryCountDtoListApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory CategoryWithGalleryCountDtoListApiResponse.fromJson(
          Map<String, dynamic> json) =>
      _$CategoryWithGalleryCountDtoListApiResponseFromJson(json);

  @JsonKey(
      name: 'data',
      includeIfNull: true,
      defaultValue: <CategoryWithGalleryCountDto>[])
  List<CategoryWithGalleryCountDto>? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory =
      _$CategoryWithGalleryCountDtoListApiResponseFromJson;
  static const toJsonFactory =
      _$CategoryWithGalleryCountDtoListApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$CategoryWithGalleryCountDtoListApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class CategoryWithNewsCountDto {
  CategoryWithNewsCountDto({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.name,
    this.description,
    this.url,
    this.code,
    this.parentId,
    this.level,
    this.path,
    this.icon,
    this.status,
    this.categoryClassLevels,
    this.newsCount,
  });

  factory CategoryWithNewsCountDto.fromJson(Map<String, dynamic> json) =>
      _$CategoryWithNewsCountDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(name: 'description', includeIfNull: true)
  String? description;
  @JsonKey(name: 'url', includeIfNull: true)
  String? url;
  @JsonKey(name: 'code', includeIfNull: true)
  String? code;
  @JsonKey(name: 'parentId', includeIfNull: true)
  int? parentId;
  @JsonKey(name: 'level', includeIfNull: true)
  int? level;
  @JsonKey(name: 'path', includeIfNull: true)
  String? path;
  @JsonKey(name: 'icon', includeIfNull: true)
  String? icon;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: commonStatusEnumToJson,
      fromJson: commonStatusEnumFromJson)
  enums.CommonStatusEnum? status;
  @JsonKey(
      name: 'categoryClassLevels',
      includeIfNull: true,
      defaultValue: <CategoryClassLevelEntity>[])
  List<CategoryClassLevelEntity>? categoryClassLevels;
  @JsonKey(name: 'newsCount', includeIfNull: true)
  int? newsCount;
  static const fromJsonFactory = _$CategoryWithNewsCountDtoFromJson;
  static const toJsonFactory = _$CategoryWithNewsCountDtoToJson;
  Map<String, dynamic> toJson() => _$CategoryWithNewsCountDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class CategoryWithNewsCountDtoListApiResponse {
  CategoryWithNewsCountDtoListApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory CategoryWithNewsCountDtoListApiResponse.fromJson(
          Map<String, dynamic> json) =>
      _$CategoryWithNewsCountDtoListApiResponseFromJson(json);

  @JsonKey(
      name: 'data',
      includeIfNull: true,
      defaultValue: <CategoryWithNewsCountDto>[])
  List<CategoryWithNewsCountDto>? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory =
      _$CategoryWithNewsCountDtoListApiResponseFromJson;
  static const toJsonFactory = _$CategoryWithNewsCountDtoListApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$CategoryWithNewsCountDtoListApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ChangeEmailDto {
  ChangeEmailDto({
    this.id,
    this.password,
    this.email,
  });

  factory ChangeEmailDto.fromJson(Map<String, dynamic> json) =>
      _$ChangeEmailDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'password', includeIfNull: true)
  String? password;
  @JsonKey(name: 'email', includeIfNull: true)
  String? email;
  static const fromJsonFactory = _$ChangeEmailDtoFromJson;
  static const toJsonFactory = _$ChangeEmailDtoToJson;
  Map<String, dynamic> toJson() => _$ChangeEmailDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ChangePasswordDto {
  ChangePasswordDto({
    this.oldPassword,
    this.newPassword,
    this.reNewPassword,
  });

  factory ChangePasswordDto.fromJson(Map<String, dynamic> json) =>
      _$ChangePasswordDtoFromJson(json);

  @JsonKey(name: 'oldPassword', includeIfNull: true)
  String? oldPassword;
  @JsonKey(name: 'newPassword', includeIfNull: true)
  String? newPassword;
  @JsonKey(name: 'reNewPassword', includeIfNull: true)
  String? reNewPassword;
  static const fromJsonFactory = _$ChangePasswordDtoFromJson;
  static const toJsonFactory = _$ChangePasswordDtoToJson;
  Map<String, dynamic> toJson() => _$ChangePasswordDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ChatGroupDetailDto {
  ChatGroupDetailDto({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.name,
    this.avatar,
    this.status,
    this.type,
    this.documentId,
    this.listUserOfGroup,
    this.isOnline,
  });

  factory ChatGroupDetailDto.fromJson(Map<String, dynamic> json) =>
      _$ChatGroupDetailDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(name: 'avatar', includeIfNull: true)
  String? avatar;
  @JsonKey(name: 'status', includeIfNull: true)
  int? status;
  @JsonKey(name: 'type', includeIfNull: true)
  int? type;
  @JsonKey(name: 'documentId', includeIfNull: true)
  int? documentId;
  @JsonKey(
      name: 'listUserOfGroup',
      includeIfNull: true,
      defaultValue: <UserWithSimpleInfoDto>[])
  List<UserWithSimpleInfoDto>? listUserOfGroup;
  @JsonKey(name: 'isOnline', includeIfNull: true)
  bool? isOnline;
  static const fromJsonFactory = _$ChatGroupDetailDtoFromJson;
  static const toJsonFactory = _$ChatGroupDetailDtoToJson;
  Map<String, dynamic> toJson() => _$ChatGroupDetailDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ChatGroupDetailDtoApiResponse {
  ChatGroupDetailDtoApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory ChatGroupDetailDtoApiResponse.fromJson(Map<String, dynamic> json) =>
      _$ChatGroupDetailDtoApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  ChatGroupDetailDto? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$ChatGroupDetailDtoApiResponseFromJson;
  static const toJsonFactory = _$ChatGroupDetailDtoApiResponseToJson;
  Map<String, dynamic> toJson() => _$ChatGroupDetailDtoApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ChatGroupEntity {
  ChatGroupEntity({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.name,
    this.avatar,
    this.status,
    this.type,
    this.documentId,
  });

  factory ChatGroupEntity.fromJson(Map<String, dynamic> json) =>
      _$ChatGroupEntityFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(name: 'avatar', includeIfNull: true)
  String? avatar;
  @JsonKey(name: 'status', includeIfNull: true)
  int? status;
  @JsonKey(name: 'type', includeIfNull: true)
  int? type;
  @JsonKey(name: 'documentId', includeIfNull: true)
  int? documentId;
  static const fromJsonFactory = _$ChatGroupEntityFromJson;
  static const toJsonFactory = _$ChatGroupEntityToJson;
  Map<String, dynamic> toJson() => _$ChatGroupEntityToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ChatGroupEntityApiResponse {
  ChatGroupEntityApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory ChatGroupEntityApiResponse.fromJson(Map<String, dynamic> json) =>
      _$ChatGroupEntityApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  ChatGroupEntity? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$ChatGroupEntityApiResponseFromJson;
  static const toJsonFactory = _$ChatGroupEntityApiResponseToJson;
  Map<String, dynamic> toJson() => _$ChatGroupEntityApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ClassAddListUserCommand {
  ClassAddListUserCommand({
    this.userIds,
    this.classId,
    this.role,
  });

  factory ClassAddListUserCommand.fromJson(Map<String, dynamic> json) =>
      _$ClassAddListUserCommandFromJson(json);

  @JsonKey(name: 'userIds', includeIfNull: true, defaultValue: <int>[])
  List<int>? userIds;
  @JsonKey(name: 'classId', includeIfNull: true)
  int? classId;
  @JsonKey(
      name: 'role',
      includeIfNull: true,
      toJson: classUserRoleEnumToJson,
      fromJson: classUserRoleEnumFromJson)
  enums.ClassUserRoleEnum? role;
  static const fromJsonFactory = _$ClassAddListUserCommandFromJson;
  static const toJsonFactory = _$ClassAddListUserCommandToJson;
  Map<String, dynamic> toJson() => _$ClassAddListUserCommandToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ClassByUserDto {
  ClassByUserDto({
    this.id,
    this.name,
  });

  factory ClassByUserDto.fromJson(Map<String, dynamic> json) =>
      _$ClassByUserDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  static const fromJsonFactory = _$ClassByUserDtoFromJson;
  static const toJsonFactory = _$ClassByUserDtoToJson;
  Map<String, dynamic> toJson() => _$ClassByUserDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ClassChangeClassCommand {
  ClassChangeClassCommand({
    this.userIds,
    this.oldClassId,
    this.newClassId,
    this.status,
  });

  factory ClassChangeClassCommand.fromJson(Map<String, dynamic> json) =>
      _$ClassChangeClassCommandFromJson(json);

  @JsonKey(name: 'userIds', includeIfNull: true, defaultValue: <int>[])
  List<int>? userIds;
  @JsonKey(name: 'oldClassId', includeIfNull: true)
  int? oldClassId;
  @JsonKey(name: 'newClassId', includeIfNull: true)
  int? newClassId;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: classUserStatusEnumToJson,
      fromJson: classUserStatusEnumFromJson)
  enums.ClassUserStatusEnum? status;
  static const fromJsonFactory = _$ClassChangeClassCommandFromJson;
  static const toJsonFactory = _$ClassChangeClassCommandToJson;
  Map<String, dynamic> toJson() => _$ClassChangeClassCommandToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ClassDetailDto {
  ClassDetailDto({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.name,
    this.schoolId,
    this.academicYearId,
    this.status,
    this.grade,
    this.classProgramTypeId,
    this.classProgramType,
    this.classType,
    this.productId,
    this.maxStudents,
    this.startDate,
    this.endDate,
    this.zoomMeetingId,
    this.zoomPassword,
    this.description,
    this.zoomHostVideo,
    this.zoomParticipantVideo,
    this.zoomJoinBeforeHost,
    this.zoomMuteUponEntry,
    this.zoomAutoRecording,
    this.classUsers,
    this.assignExams,
    this.classSessions,
    this.currentRole,
  });

  factory ClassDetailDto.fromJson(Map<String, dynamic> json) =>
      _$ClassDetailDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(name: 'schoolId', includeIfNull: true)
  int? schoolId;
  @JsonKey(name: 'academicYearId', includeIfNull: true)
  int? academicYearId;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: classStatusEnumToJson,
      fromJson: classStatusEnumFromJson)
  enums.ClassStatusEnum? status;
  @JsonKey(name: 'grade', includeIfNull: true)
  int? grade;
  @JsonKey(name: 'classProgramTypeId', includeIfNull: true)
  int? classProgramTypeId;
  @JsonKey(name: 'classProgramType', includeIfNull: true)
  ClassProgramTypeEntity? classProgramType;
  @JsonKey(
      name: 'classType',
      includeIfNull: true,
      toJson: classTypeEnumToJson,
      fromJson: classTypeEnumFromJson)
  enums.ClassTypeEnum? classType;
  @JsonKey(name: 'productId', includeIfNull: true)
  int? productId;
  @JsonKey(name: 'maxStudents', includeIfNull: true)
  int? maxStudents;
  @JsonKey(name: 'startDate', includeIfNull: true)
  DateTime? startDate;
  @JsonKey(name: 'endDate', includeIfNull: true)
  DateTime? endDate;
  @JsonKey(name: 'zoomMeetingId', includeIfNull: true)
  String? zoomMeetingId;
  @JsonKey(name: 'zoomPassword', includeIfNull: true)
  String? zoomPassword;
  @JsonKey(name: 'description', includeIfNull: true)
  String? description;
  @JsonKey(name: 'zoomHostVideo', includeIfNull: true)
  bool? zoomHostVideo;
  @JsonKey(name: 'zoomParticipantVideo', includeIfNull: true)
  bool? zoomParticipantVideo;
  @JsonKey(name: 'zoomJoinBeforeHost', includeIfNull: true)
  bool? zoomJoinBeforeHost;
  @JsonKey(name: 'zoomMuteUponEntry', includeIfNull: true)
  bool? zoomMuteUponEntry;
  @JsonKey(name: 'zoomAutoRecording', includeIfNull: true)
  String? zoomAutoRecording;
  @JsonKey(
      name: 'classUsers',
      includeIfNull: true,
      defaultValue: <ClassUserEntity>[])
  List<ClassUserEntity>? classUsers;
  @JsonKey(
      name: 'assignExams',
      includeIfNull: true,
      defaultValue: <AssignExamEntity>[])
  List<AssignExamEntity>? assignExams;
  @JsonKey(
      name: 'classSessions',
      includeIfNull: true,
      defaultValue: <ClassSessionEntity>[])
  List<ClassSessionEntity>? classSessions;
  @JsonKey(
      name: 'currentRole',
      includeIfNull: true,
      toJson: classUserRoleEnumToJson,
      fromJson: classUserRoleEnumFromJson)
  enums.ClassUserRoleEnum? currentRole;
  static const fromJsonFactory = _$ClassDetailDtoFromJson;
  static const toJsonFactory = _$ClassDetailDtoToJson;
  Map<String, dynamic> toJson() => _$ClassDetailDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ClassEntity {
  ClassEntity({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.name,
    this.schoolId,
    this.academicYearId,
    this.status,
    this.grade,
    this.classProgramTypeId,
    this.classProgramType,
    this.classType,
    this.productId,
    this.maxStudents,
    this.startDate,
    this.endDate,
    this.zoomMeetingId,
    this.zoomPassword,
    this.description,
    this.zoomHostVideo,
    this.zoomParticipantVideo,
    this.zoomJoinBeforeHost,
    this.zoomMuteUponEntry,
    this.zoomAutoRecording,
    this.classUsers,
    this.assignExams,
    this.classSessions,
  });

  factory ClassEntity.fromJson(Map<String, dynamic> json) =>
      _$ClassEntityFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(name: 'schoolId', includeIfNull: true)
  int? schoolId;
  @JsonKey(name: 'academicYearId', includeIfNull: true)
  int? academicYearId;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: classStatusEnumToJson,
      fromJson: classStatusEnumFromJson)
  enums.ClassStatusEnum? status;
  @JsonKey(name: 'grade', includeIfNull: true)
  int? grade;
  @JsonKey(name: 'classProgramTypeId', includeIfNull: true)
  int? classProgramTypeId;
  @JsonKey(name: 'classProgramType', includeIfNull: true)
  ClassProgramTypeEntity? classProgramType;
  @JsonKey(
      name: 'classType',
      includeIfNull: true,
      toJson: classTypeEnumToJson,
      fromJson: classTypeEnumFromJson)
  enums.ClassTypeEnum? classType;
  @JsonKey(name: 'productId', includeIfNull: true)
  int? productId;
  @JsonKey(name: 'maxStudents', includeIfNull: true)
  int? maxStudents;
  @JsonKey(name: 'startDate', includeIfNull: true)
  DateTime? startDate;
  @JsonKey(name: 'endDate', includeIfNull: true)
  DateTime? endDate;
  @JsonKey(name: 'zoomMeetingId', includeIfNull: true)
  String? zoomMeetingId;
  @JsonKey(name: 'zoomPassword', includeIfNull: true)
  String? zoomPassword;
  @JsonKey(name: 'description', includeIfNull: true)
  String? description;
  @JsonKey(name: 'zoomHostVideo', includeIfNull: true)
  bool? zoomHostVideo;
  @JsonKey(name: 'zoomParticipantVideo', includeIfNull: true)
  bool? zoomParticipantVideo;
  @JsonKey(name: 'zoomJoinBeforeHost', includeIfNull: true)
  bool? zoomJoinBeforeHost;
  @JsonKey(name: 'zoomMuteUponEntry', includeIfNull: true)
  bool? zoomMuteUponEntry;
  @JsonKey(name: 'zoomAutoRecording', includeIfNull: true)
  String? zoomAutoRecording;
  @JsonKey(
      name: 'classUsers',
      includeIfNull: true,
      defaultValue: <ClassUserEntity>[])
  List<ClassUserEntity>? classUsers;
  @JsonKey(
      name: 'assignExams',
      includeIfNull: true,
      defaultValue: <AssignExamEntity>[])
  List<AssignExamEntity>? assignExams;
  @JsonKey(
      name: 'classSessions',
      includeIfNull: true,
      defaultValue: <ClassSessionEntity>[])
  List<ClassSessionEntity>? classSessions;
  static const fromJsonFactory = _$ClassEntityFromJson;
  static const toJsonFactory = _$ClassEntityToJson;
  Map<String, dynamic> toJson() => _$ClassEntityToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ClassGetListFilter {
  ClassGetListFilter({
    this.sortExpression,
    this.pageSize,
    this.pageIndex,
    this.skip,
    this.notSkip,
    this.propertyIncludes,
    this.keyword,
    this.schoolId,
    this.academicYearId,
    this.status,
    this.isGetAll,
    this.userId,
    this.grade,
    this.searchType,
  });

  factory ClassGetListFilter.fromJson(Map<String, dynamic> json) =>
      _$ClassGetListFilterFromJson(json);

  @JsonKey(name: 'sortExpression', includeIfNull: true)
  String? sortExpression;
  @JsonKey(name: 'pageSize', includeIfNull: true)
  int? pageSize;
  @JsonKey(name: 'pageIndex', includeIfNull: true)
  int? pageIndex;
  @JsonKey(name: 'skip', includeIfNull: true)
  int? skip;
  @JsonKey(name: 'notSkip', includeIfNull: true)
  int? notSkip;
  @JsonKey(
      name: 'propertyIncludes', includeIfNull: true, defaultValue: <String>[])
  List<String>? propertyIncludes;
  @JsonKey(name: 'keyword', includeIfNull: true)
  String? keyword;
  @JsonKey(name: 'schoolId', includeIfNull: true)
  int? schoolId;
  @JsonKey(name: 'academicYearId', includeIfNull: true)
  int? academicYearId;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: classStatusEnumToJson,
      fromJson: classStatusEnumFromJson)
  enums.ClassStatusEnum? status;
  @JsonKey(name: 'isGetAll', includeIfNull: true)
  bool? isGetAll;
  @JsonKey(name: 'userId', includeIfNull: true)
  int? userId;
  @JsonKey(name: 'grade', includeIfNull: true)
  int? grade;
  @JsonKey(
      name: 'searchType',
      includeIfNull: true,
      toJson: classListSearchTypeEnumToJson,
      fromJson: classListSearchTypeEnumFromJson)
  enums.ClassListSearchTypeEnum? searchType;
  static const fromJsonFactory = _$ClassGetListFilterFromJson;
  static const toJsonFactory = _$ClassGetListFilterToJson;
  Map<String, dynamic> toJson() => _$ClassGetListFilterToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ClassLevel {
  ClassLevel({
    this.id,
    this.grade,
    this.name,
    this.subjects,
  });

  factory ClassLevel.fromJson(Map<String, dynamic> json) =>
      _$ClassLevelFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'grade', includeIfNull: true)
  int? grade;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(name: 'subjects', includeIfNull: true, defaultValue: <Subject>[])
  List<Subject>? subjects;
  static const fromJsonFactory = _$ClassLevelFromJson;
  static const toJsonFactory = _$ClassLevelToJson;
  Map<String, dynamic> toJson() => _$ClassLevelToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ClassListDto {
  ClassListDto({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.name,
    this.schoolId,
    this.academicYearId,
    this.status,
    this.grade,
    this.classProgramTypeId,
    this.classProgramType,
    this.classType,
    this.productId,
    this.maxStudents,
    this.startDate,
    this.endDate,
    this.zoomMeetingId,
    this.zoomPassword,
    this.description,
    this.zoomHostVideo,
    this.zoomParticipantVideo,
    this.zoomJoinBeforeHost,
    this.zoomMuteUponEntry,
    this.zoomAutoRecording,
    this.classUsers,
    this.assignExams,
    this.classSessions,
    this.countPupil,
    this.countExercise,
    this.countTest,
    this.countNeedMark,
    this.testAverageScore,
    this.studentCountTest,
    this.studentCountTestDone,
    this.currentRole,
    this.isManager,
    this.schoolName,
    this.subject,
  });

  factory ClassListDto.fromJson(Map<String, dynamic> json) =>
      _$ClassListDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(name: 'schoolId', includeIfNull: true)
  int? schoolId;
  @JsonKey(name: 'academicYearId', includeIfNull: true)
  int? academicYearId;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: classStatusEnumToJson,
      fromJson: classStatusEnumFromJson)
  enums.ClassStatusEnum? status;
  @JsonKey(name: 'grade', includeIfNull: true)
  int? grade;
  @JsonKey(name: 'classProgramTypeId', includeIfNull: true)
  int? classProgramTypeId;
  @JsonKey(name: 'classProgramType', includeIfNull: true)
  ClassProgramTypeEntity? classProgramType;
  @JsonKey(
      name: 'classType',
      includeIfNull: true,
      toJson: classTypeEnumToJson,
      fromJson: classTypeEnumFromJson)
  enums.ClassTypeEnum? classType;
  @JsonKey(name: 'productId', includeIfNull: true)
  int? productId;
  @JsonKey(name: 'maxStudents', includeIfNull: true)
  int? maxStudents;
  @JsonKey(name: 'startDate', includeIfNull: true)
  DateTime? startDate;
  @JsonKey(name: 'endDate', includeIfNull: true)
  DateTime? endDate;
  @JsonKey(name: 'zoomMeetingId', includeIfNull: true)
  String? zoomMeetingId;
  @JsonKey(name: 'zoomPassword', includeIfNull: true)
  String? zoomPassword;
  @JsonKey(name: 'description', includeIfNull: true)
  String? description;
  @JsonKey(name: 'zoomHostVideo', includeIfNull: true)
  bool? zoomHostVideo;
  @JsonKey(name: 'zoomParticipantVideo', includeIfNull: true)
  bool? zoomParticipantVideo;
  @JsonKey(name: 'zoomJoinBeforeHost', includeIfNull: true)
  bool? zoomJoinBeforeHost;
  @JsonKey(name: 'zoomMuteUponEntry', includeIfNull: true)
  bool? zoomMuteUponEntry;
  @JsonKey(name: 'zoomAutoRecording', includeIfNull: true)
  String? zoomAutoRecording;
  @JsonKey(
      name: 'classUsers',
      includeIfNull: true,
      defaultValue: <ClassUserEntity>[])
  List<ClassUserEntity>? classUsers;
  @JsonKey(
      name: 'assignExams',
      includeIfNull: true,
      defaultValue: <AssignExamEntity>[])
  List<AssignExamEntity>? assignExams;
  @JsonKey(
      name: 'classSessions',
      includeIfNull: true,
      defaultValue: <ClassSessionEntity>[])
  List<ClassSessionEntity>? classSessions;
  @JsonKey(name: 'countPupil', includeIfNull: true)
  int? countPupil;
  @JsonKey(name: 'countExercise', includeIfNull: true)
  int? countExercise;
  @JsonKey(name: 'countTest', includeIfNull: true)
  int? countTest;
  @JsonKey(name: 'countNeedMark', includeIfNull: true)
  int? countNeedMark;
  @JsonKey(name: 'testAverageScore', includeIfNull: true)
  double? testAverageScore;
  @JsonKey(name: 'studentCountTest', includeIfNull: true)
  int? studentCountTest;
  @JsonKey(name: 'studentCountTestDone', includeIfNull: true)
  int? studentCountTestDone;
  @JsonKey(
      name: 'currentRole',
      includeIfNull: true,
      toJson: classUserRoleEnumToJson,
      fromJson: classUserRoleEnumFromJson)
  enums.ClassUserRoleEnum? currentRole;
  @JsonKey(name: 'isManager', includeIfNull: true)
  bool? isManager;
  @JsonKey(name: 'schoolName', includeIfNull: true)
  String? schoolName;
  @JsonKey(name: 'subject', includeIfNull: true)
  String? subject;
  static const fromJsonFactory = _$ClassListDtoFromJson;
  static const toJsonFactory = _$ClassListDtoToJson;
  Map<String, dynamic> toJson() => _$ClassListDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ClassListDtoFilterResult {
  ClassListDtoFilterResult({
    this.totalRows,
    this.data,
  });

  factory ClassListDtoFilterResult.fromJson(Map<String, dynamic> json) =>
      _$ClassListDtoFilterResultFromJson(json);

  @JsonKey(name: 'totalRows', includeIfNull: true)
  int? totalRows;
  @JsonKey(name: 'data', includeIfNull: true, defaultValue: <ClassListDto>[])
  List<ClassListDto>? data;
  static const fromJsonFactory = _$ClassListDtoFilterResultFromJson;
  static const toJsonFactory = _$ClassListDtoFilterResultToJson;
  Map<String, dynamic> toJson() => _$ClassListDtoFilterResultToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ClassListOfSchoolDto {
  ClassListOfSchoolDto({
    this.id,
    this.name,
    this.grade,
    this.countPupil,
    this.countTeacher,
    this.countExam,
    this.countNeedMark,
    this.testAverageScore,
  });

  factory ClassListOfSchoolDto.fromJson(Map<String, dynamic> json) =>
      _$ClassListOfSchoolDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(name: 'grade', includeIfNull: true)
  int? grade;
  @JsonKey(name: 'countPupil', includeIfNull: true)
  int? countPupil;
  @JsonKey(name: 'countTeacher', includeIfNull: true)
  int? countTeacher;
  @JsonKey(name: 'countExam', includeIfNull: true)
  int? countExam;
  @JsonKey(name: 'countNeedMark', includeIfNull: true)
  int? countNeedMark;
  @JsonKey(name: 'testAverageScore', includeIfNull: true)
  double? testAverageScore;
  static const fromJsonFactory = _$ClassListOfSchoolDtoFromJson;
  static const toJsonFactory = _$ClassListOfSchoolDtoToJson;
  Map<String, dynamic> toJson() => _$ClassListOfSchoolDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ClassListOfSchoolDtoFilterResult {
  ClassListOfSchoolDtoFilterResult({
    this.totalRows,
    this.data,
  });

  factory ClassListOfSchoolDtoFilterResult.fromJson(
          Map<String, dynamic> json) =>
      _$ClassListOfSchoolDtoFilterResultFromJson(json);

  @JsonKey(name: 'totalRows', includeIfNull: true)
  int? totalRows;
  @JsonKey(
      name: 'data', includeIfNull: true, defaultValue: <ClassListOfSchoolDto>[])
  List<ClassListOfSchoolDto>? data;
  static const fromJsonFactory = _$ClassListOfSchoolDtoFilterResultFromJson;
  static const toJsonFactory = _$ClassListOfSchoolDtoFilterResultToJson;
  Map<String, dynamic> toJson() =>
      _$ClassListOfSchoolDtoFilterResultToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ClassListOfSchoolFilter {
  ClassListOfSchoolFilter({
    this.sortExpression,
    this.pageSize,
    this.pageIndex,
    this.skip,
    this.notSkip,
    this.propertyIncludes,
    this.schoolId,
    this.keyword,
    this.grade,
  });

  factory ClassListOfSchoolFilter.fromJson(Map<String, dynamic> json) =>
      _$ClassListOfSchoolFilterFromJson(json);

  @JsonKey(name: 'sortExpression', includeIfNull: true)
  String? sortExpression;
  @JsonKey(name: 'pageSize', includeIfNull: true)
  int? pageSize;
  @JsonKey(name: 'pageIndex', includeIfNull: true)
  int? pageIndex;
  @JsonKey(name: 'skip', includeIfNull: true)
  int? skip;
  @JsonKey(name: 'notSkip', includeIfNull: true)
  int? notSkip;
  @JsonKey(
      name: 'propertyIncludes', includeIfNull: true, defaultValue: <String>[])
  List<String>? propertyIncludes;
  @JsonKey(name: 'schoolId', includeIfNull: true)
  int? schoolId;
  @JsonKey(name: 'keyword', includeIfNull: true)
  String? keyword;
  @JsonKey(name: 'grade', includeIfNull: true)
  int? grade;
  static const fromJsonFactory = _$ClassListOfSchoolFilterFromJson;
  static const toJsonFactory = _$ClassListOfSchoolFilterToJson;
  Map<String, dynamic> toJson() => _$ClassListOfSchoolFilterToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ClassProgramTypeEntity {
  ClassProgramTypeEntity({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.name,
    this.schoolId,
    this.description,
  });

  factory ClassProgramTypeEntity.fromJson(Map<String, dynamic> json) =>
      _$ClassProgramTypeEntityFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(name: 'schoolId', includeIfNull: true)
  int? schoolId;
  @JsonKey(name: 'description', includeIfNull: true)
  String? description;
  static const fromJsonFactory = _$ClassProgramTypeEntityFromJson;
  static const toJsonFactory = _$ClassProgramTypeEntityToJson;
  Map<String, dynamic> toJson() => _$ClassProgramTypeEntityToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ClassProgramTypeEntityApiResponse {
  ClassProgramTypeEntityApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory ClassProgramTypeEntityApiResponse.fromJson(
          Map<String, dynamic> json) =>
      _$ClassProgramTypeEntityApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  ClassProgramTypeEntity? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$ClassProgramTypeEntityApiResponseFromJson;
  static const toJsonFactory = _$ClassProgramTypeEntityApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$ClassProgramTypeEntityApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ClassProgramTypeEntityListApiResponse {
  ClassProgramTypeEntityListApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory ClassProgramTypeEntityListApiResponse.fromJson(
          Map<String, dynamic> json) =>
      _$ClassProgramTypeEntityListApiResponseFromJson(json);

  @JsonKey(
      name: 'data',
      includeIfNull: true,
      defaultValue: <ClassProgramTypeEntity>[])
  List<ClassProgramTypeEntity>? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory =
      _$ClassProgramTypeEntityListApiResponseFromJson;
  static const toJsonFactory = _$ClassProgramTypeEntityListApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$ClassProgramTypeEntityListApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ClassPupilDto {
  ClassPupilDto({
    this.id,
    this.name,
    this.countExamNeedDo,
    this.countUser,
  });

  factory ClassPupilDto.fromJson(Map<String, dynamic> json) =>
      _$ClassPupilDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(name: 'countExamNeedDo', includeIfNull: true)
  int? countExamNeedDo;
  @JsonKey(name: 'countUser', includeIfNull: true)
  int? countUser;
  static const fromJsonFactory = _$ClassPupilDtoFromJson;
  static const toJsonFactory = _$ClassPupilDtoToJson;
  Map<String, dynamic> toJson() => _$ClassPupilDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ClassPupilStatisticalDto {
  ClassPupilStatisticalDto({
    this.userId,
    this.avatar,
    this.fullName,
    this.fullNameNonAccent,
    this.joinDate,
    this.percentHomeWorkDone,
    this.countExam,
    this.averageScoreExam,
    this.averageScoreTest,
  });

  factory ClassPupilStatisticalDto.fromJson(Map<String, dynamic> json) =>
      _$ClassPupilStatisticalDtoFromJson(json);

  @JsonKey(name: 'userId', includeIfNull: true)
  int? userId;
  @JsonKey(name: 'avatar', includeIfNull: true)
  String? avatar;
  @JsonKey(name: 'fullName', includeIfNull: true)
  String? fullName;
  @JsonKey(name: 'fullNameNonAccent', includeIfNull: true)
  String? fullNameNonAccent;
  @JsonKey(name: 'joinDate', includeIfNull: true)
  DateTime? joinDate;
  @JsonKey(name: 'percentHomeWorkDone', includeIfNull: true)
  double? percentHomeWorkDone;
  @JsonKey(name: 'countExam', includeIfNull: true)
  int? countExam;
  @JsonKey(name: 'averageScoreExam', includeIfNull: true)
  double? averageScoreExam;
  @JsonKey(name: 'averageScoreTest', includeIfNull: true)
  double? averageScoreTest;
  static const fromJsonFactory = _$ClassPupilStatisticalDtoFromJson;
  static const toJsonFactory = _$ClassPupilStatisticalDtoToJson;
  Map<String, dynamic> toJson() => _$ClassPupilStatisticalDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ClassPupilStatisticalDtoFilterResult {
  ClassPupilStatisticalDtoFilterResult({
    this.totalRows,
    this.data,
  });

  factory ClassPupilStatisticalDtoFilterResult.fromJson(
          Map<String, dynamic> json) =>
      _$ClassPupilStatisticalDtoFilterResultFromJson(json);

  @JsonKey(name: 'totalRows', includeIfNull: true)
  int? totalRows;
  @JsonKey(
      name: 'data',
      includeIfNull: true,
      defaultValue: <ClassPupilStatisticalDto>[])
  List<ClassPupilStatisticalDto>? data;
  static const fromJsonFactory = _$ClassPupilStatisticalDtoFilterResultFromJson;
  static const toJsonFactory = _$ClassPupilStatisticalDtoFilterResultToJson;
  Map<String, dynamic> toJson() =>
      _$ClassPupilStatisticalDtoFilterResultToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ClassPupilStatisticalFilter {
  ClassPupilStatisticalFilter({
    this.sortExpression,
    this.pageSize,
    this.pageIndex,
    this.skip,
    this.notSkip,
    this.propertyIncludes,
    this.classId,
    this.keyword,
    this.subjectId,
  });

  factory ClassPupilStatisticalFilter.fromJson(Map<String, dynamic> json) =>
      _$ClassPupilStatisticalFilterFromJson(json);

  @JsonKey(name: 'sortExpression', includeIfNull: true)
  String? sortExpression;
  @JsonKey(name: 'pageSize', includeIfNull: true)
  int? pageSize;
  @JsonKey(name: 'pageIndex', includeIfNull: true)
  int? pageIndex;
  @JsonKey(name: 'skip', includeIfNull: true)
  int? skip;
  @JsonKey(name: 'notSkip', includeIfNull: true)
  int? notSkip;
  @JsonKey(
      name: 'propertyIncludes', includeIfNull: true, defaultValue: <String>[])
  List<String>? propertyIncludes;
  @JsonKey(name: 'classId', includeIfNull: true)
  int? classId;
  @JsonKey(name: 'keyword', includeIfNull: true)
  String? keyword;
  @JsonKey(name: 'subjectId', includeIfNull: true)
  int? subjectId;
  static const fromJsonFactory = _$ClassPupilStatisticalFilterFromJson;
  static const toJsonFactory = _$ClassPupilStatisticalFilterToJson;
  Map<String, dynamic> toJson() => _$ClassPupilStatisticalFilterToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ClassRemoveUserCommand {
  ClassRemoveUserCommand({
    this.userId,
    this.classId,
  });

  factory ClassRemoveUserCommand.fromJson(Map<String, dynamic> json) =>
      _$ClassRemoveUserCommandFromJson(json);

  @JsonKey(name: 'userId', includeIfNull: true)
  int? userId;
  @JsonKey(name: 'classId', includeIfNull: true)
  int? classId;
  static const fromJsonFactory = _$ClassRemoveUserCommandFromJson;
  static const toJsonFactory = _$ClassRemoveUserCommandToJson;
  Map<String, dynamic> toJson() => _$ClassRemoveUserCommandToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ClassSessionEntity {
  ClassSessionEntity({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.classId,
    this.productLessonId,
    this.sessionNumber,
    this.sessionName,
    this.description,
    this.startTime,
    this.endTime,
    this.zoomMeetingId,
    this.zoomJoinLink,
    this.zoomStartLink,
    this.zoomPassword,
    this.recordingUrl,
    this.zoomAccountIndex,
    this.actualDurationMinutes,
    this.status,
    this.notes,
    this.$class,
    this.productLesson,
    this.attendances,
  });

  factory ClassSessionEntity.fromJson(Map<String, dynamic> json) =>
      _$ClassSessionEntityFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'classId', includeIfNull: true)
  int? classId;
  @JsonKey(name: 'productLessonId', includeIfNull: true)
  int? productLessonId;
  @JsonKey(name: 'sessionNumber', includeIfNull: true)
  int? sessionNumber;
  @JsonKey(name: 'sessionName', includeIfNull: true)
  String? sessionName;
  @JsonKey(name: 'description', includeIfNull: true)
  String? description;
  @JsonKey(name: 'startTime', includeIfNull: true)
  DateTime? startTime;
  @JsonKey(name: 'endTime', includeIfNull: true)
  DateTime? endTime;
  @JsonKey(name: 'zoomMeetingId', includeIfNull: true)
  String? zoomMeetingId;
  @JsonKey(name: 'zoomJoinLink', includeIfNull: true)
  String? zoomJoinLink;
  @JsonKey(name: 'zoomStartLink', includeIfNull: true)
  String? zoomStartLink;
  @JsonKey(name: 'zoomPassword', includeIfNull: true)
  String? zoomPassword;
  @JsonKey(name: 'recordingUrl', includeIfNull: true)
  String? recordingUrl;
  @JsonKey(name: 'zoomAccountIndex', includeIfNull: true)
  int? zoomAccountIndex;
  @JsonKey(name: 'actualDurationMinutes', includeIfNull: true)
  int? actualDurationMinutes;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: sessionStatusEnumToJson,
      fromJson: sessionStatusEnumFromJson)
  enums.SessionStatusEnum? status;
  @JsonKey(name: 'notes', includeIfNull: true)
  String? notes;
  @JsonKey(name: 'class', includeIfNull: true)
  ClassEntity? $class;
  @JsonKey(name: 'productLesson', includeIfNull: true)
  ProductLessonEntity? productLesson;
  @JsonKey(
      name: 'attendances',
      includeIfNull: true,
      defaultValue: <SessionAttendanceEntity>[])
  List<SessionAttendanceEntity>? attendances;
  static const fromJsonFactory = _$ClassSessionEntityFromJson;
  static const toJsonFactory = _$ClassSessionEntityToJson;
  Map<String, dynamic> toJson() => _$ClassSessionEntityToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ClassShortDto {
  ClassShortDto({
    this.id,
    this.name,
    this.grade,
    this.schoolId,
    this.classUsers,
  });

  factory ClassShortDto.fromJson(Map<String, dynamic> json) =>
      _$ClassShortDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(name: 'grade', includeIfNull: true)
  String? grade;
  @JsonKey(name: 'schoolId', includeIfNull: true)
  int? schoolId;
  @JsonKey(
      name: 'classUsers',
      includeIfNull: true,
      defaultValue: <ClassUserShortDto>[])
  List<ClassUserShortDto>? classUsers;
  static const fromJsonFactory = _$ClassShortDtoFromJson;
  static const toJsonFactory = _$ClassShortDtoToJson;
  Map<String, dynamic> toJson() => _$ClassShortDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ClassStatisticalDto {
  ClassStatisticalDto({
    this.waitingGrading,
    this.countTeacher,
    this.countPupil,
    this.countExam,
  });

  factory ClassStatisticalDto.fromJson(Map<String, dynamic> json) =>
      _$ClassStatisticalDtoFromJson(json);

  @JsonKey(name: 'waitingGrading', includeIfNull: true)
  int? waitingGrading;
  @JsonKey(name: 'countTeacher', includeIfNull: true)
  int? countTeacher;
  @JsonKey(name: 'countPupil', includeIfNull: true)
  int? countPupil;
  @JsonKey(name: 'countExam', includeIfNull: true)
  int? countExam;
  static const fromJsonFactory = _$ClassStatisticalDtoFromJson;
  static const toJsonFactory = _$ClassStatisticalDtoToJson;
  Map<String, dynamic> toJson() => _$ClassStatisticalDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ClassUserEntity {
  ClassUserEntity({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.userId,
    this.classId,
    this.role,
    this.status,
    this.note,
    this.subjectIds,
    this.isManager,
  });

  factory ClassUserEntity.fromJson(Map<String, dynamic> json) =>
      _$ClassUserEntityFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'userId', includeIfNull: true)
  int? userId;
  @JsonKey(name: 'classId', includeIfNull: true)
  int? classId;
  @JsonKey(
      name: 'role',
      includeIfNull: true,
      toJson: classUserRoleEnumToJson,
      fromJson: classUserRoleEnumFromJson)
  enums.ClassUserRoleEnum? role;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: classUserStatusEnumToJson,
      fromJson: classUserStatusEnumFromJson)
  enums.ClassUserStatusEnum? status;
  @JsonKey(name: 'note', includeIfNull: true)
  String? note;
  @JsonKey(name: 'subjectIds', includeIfNull: true, defaultValue: <int>[])
  List<int>? subjectIds;
  @JsonKey(name: 'isManager', includeIfNull: true)
  bool? isManager;
  static const fromJsonFactory = _$ClassUserEntityFromJson;
  static const toJsonFactory = _$ClassUserEntityToJson;
  Map<String, dynamic> toJson() => _$ClassUserEntityToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ClassUserShortDto {
  ClassUserShortDto({
    this.id,
    this.fullName,
    this.avatar,
  });

  factory ClassUserShortDto.fromJson(Map<String, dynamic> json) =>
      _$ClassUserShortDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'fullName', includeIfNull: true)
  String? fullName;
  @JsonKey(name: 'avatar', includeIfNull: true)
  String? avatar;
  static const fromJsonFactory = _$ClassUserShortDtoFromJson;
  static const toJsonFactory = _$ClassUserShortDtoToJson;
  Map<String, dynamic> toJson() => _$ClassUserShortDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ConsultationRegistrationEntity {
  ConsultationRegistrationEntity({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.name,
    this.phone,
    this.email,
    this.message,
    this.planType,
    this.productId,
    this.status,
    this.adminNote,
    this.contactedDate,
    this.contactedBy,
  });

  factory ConsultationRegistrationEntity.fromJson(Map<String, dynamic> json) =>
      _$ConsultationRegistrationEntityFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(name: 'phone', includeIfNull: true)
  String? phone;
  @JsonKey(name: 'email', includeIfNull: true)
  String? email;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'planType', includeIfNull: true)
  String? planType;
  @JsonKey(name: 'productId', includeIfNull: true)
  int? productId;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: consultationStatusEnumToJson,
      fromJson: consultationStatusEnumFromJson)
  enums.ConsultationStatusEnum? status;
  @JsonKey(name: 'adminNote', includeIfNull: true)
  String? adminNote;
  @JsonKey(name: 'contactedDate', includeIfNull: true)
  DateTime? contactedDate;
  @JsonKey(name: 'contactedBy', includeIfNull: true)
  int? contactedBy;
  static const fromJsonFactory = _$ConsultationRegistrationEntityFromJson;
  static const toJsonFactory = _$ConsultationRegistrationEntityToJson;
  Map<String, dynamic> toJson() => _$ConsultationRegistrationEntityToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ConsultationRegistrationEntityApiResponse {
  ConsultationRegistrationEntityApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory ConsultationRegistrationEntityApiResponse.fromJson(
          Map<String, dynamic> json) =>
      _$ConsultationRegistrationEntityApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  ConsultationRegistrationEntity? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory =
      _$ConsultationRegistrationEntityApiResponseFromJson;
  static const toJsonFactory =
      _$ConsultationRegistrationEntityApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$ConsultationRegistrationEntityApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ConsultationRegistrationGetListQuery {
  ConsultationRegistrationGetListQuery({
    this.sortExpression,
    this.pageSize,
    this.pageIndex,
    this.skip,
    this.notSkip,
    this.propertyIncludes,
    this.keyword,
    this.status,
    this.planType,
    this.fromDate,
    this.toDate,
  });

  factory ConsultationRegistrationGetListQuery.fromJson(
          Map<String, dynamic> json) =>
      _$ConsultationRegistrationGetListQueryFromJson(json);

  @JsonKey(name: 'sortExpression', includeIfNull: true)
  String? sortExpression;
  @JsonKey(name: 'pageSize', includeIfNull: true)
  int? pageSize;
  @JsonKey(name: 'pageIndex', includeIfNull: true)
  int? pageIndex;
  @JsonKey(name: 'skip', includeIfNull: true)
  int? skip;
  @JsonKey(name: 'notSkip', includeIfNull: true)
  int? notSkip;
  @JsonKey(
      name: 'propertyIncludes', includeIfNull: true, defaultValue: <String>[])
  List<String>? propertyIncludes;
  @JsonKey(name: 'keyword', includeIfNull: true)
  String? keyword;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: consultationStatusEnumToJson,
      fromJson: consultationStatusEnumFromJson)
  enums.ConsultationStatusEnum? status;
  @JsonKey(name: 'planType', includeIfNull: true)
  String? planType;
  @JsonKey(name: 'fromDate', includeIfNull: true)
  DateTime? fromDate;
  @JsonKey(name: 'toDate', includeIfNull: true)
  DateTime? toDate;
  static const fromJsonFactory = _$ConsultationRegistrationGetListQueryFromJson;
  static const toJsonFactory = _$ConsultationRegistrationGetListQueryToJson;
  Map<String, dynamic> toJson() =>
      _$ConsultationRegistrationGetListQueryToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ConsultationRegistrationListDto {
  ConsultationRegistrationListDto({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.name,
    this.phone,
    this.email,
    this.message,
    this.planType,
    this.productId,
    this.status,
    this.adminNote,
    this.contactedDate,
    this.contactedBy,
    this.productName,
    this.contactedByName,
  });

  factory ConsultationRegistrationListDto.fromJson(Map<String, dynamic> json) =>
      _$ConsultationRegistrationListDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(name: 'phone', includeIfNull: true)
  String? phone;
  @JsonKey(name: 'email', includeIfNull: true)
  String? email;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'planType', includeIfNull: true)
  String? planType;
  @JsonKey(name: 'productId', includeIfNull: true)
  int? productId;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: consultationStatusEnumToJson,
      fromJson: consultationStatusEnumFromJson)
  enums.ConsultationStatusEnum? status;
  @JsonKey(name: 'adminNote', includeIfNull: true)
  String? adminNote;
  @JsonKey(name: 'contactedDate', includeIfNull: true)
  DateTime? contactedDate;
  @JsonKey(name: 'contactedBy', includeIfNull: true)
  int? contactedBy;
  @JsonKey(name: 'productName', includeIfNull: true)
  String? productName;
  @JsonKey(name: 'contactedByName', includeIfNull: true)
  String? contactedByName;
  static const fromJsonFactory = _$ConsultationRegistrationListDtoFromJson;
  static const toJsonFactory = _$ConsultationRegistrationListDtoToJson;
  Map<String, dynamic> toJson() =>
      _$ConsultationRegistrationListDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ConsultationRegistrationListDtoFilterResult {
  ConsultationRegistrationListDtoFilterResult({
    this.totalRows,
    this.data,
  });

  factory ConsultationRegistrationListDtoFilterResult.fromJson(
          Map<String, dynamic> json) =>
      _$ConsultationRegistrationListDtoFilterResultFromJson(json);

  @JsonKey(name: 'totalRows', includeIfNull: true)
  int? totalRows;
  @JsonKey(
      name: 'data',
      includeIfNull: true,
      defaultValue: <ConsultationRegistrationListDto>[])
  List<ConsultationRegistrationListDto>? data;
  static const fromJsonFactory =
      _$ConsultationRegistrationListDtoFilterResultFromJson;
  static const toJsonFactory =
      _$ConsultationRegistrationListDtoFilterResultToJson;
  Map<String, dynamic> toJson() =>
      _$ConsultationRegistrationListDtoFilterResultToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ConsultationRegistrationListDtoFilterResultApiResponse {
  ConsultationRegistrationListDtoFilterResultApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory ConsultationRegistrationListDtoFilterResultApiResponse.fromJson(
          Map<String, dynamic> json) =>
      _$ConsultationRegistrationListDtoFilterResultApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  ConsultationRegistrationListDtoFilterResult? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory =
      _$ConsultationRegistrationListDtoFilterResultApiResponseFromJson;
  static const toJsonFactory =
      _$ConsultationRegistrationListDtoFilterResultApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$ConsultationRegistrationListDtoFilterResultApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ConsultationRegistrationSaveDto {
  ConsultationRegistrationSaveDto({
    this.name,
    this.phone,
    this.email,
    this.message,
    this.planType,
    this.productId,
  });

  factory ConsultationRegistrationSaveDto.fromJson(Map<String, dynamic> json) =>
      _$ConsultationRegistrationSaveDtoFromJson(json);

  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(name: 'phone', includeIfNull: true)
  String? phone;
  @JsonKey(name: 'email', includeIfNull: true)
  String? email;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'planType', includeIfNull: true)
  String? planType;
  @JsonKey(name: 'productId', includeIfNull: true)
  int? productId;
  static const fromJsonFactory = _$ConsultationRegistrationSaveDtoFromJson;
  static const toJsonFactory = _$ConsultationRegistrationSaveDtoToJson;
  Map<String, dynamic> toJson() =>
      _$ConsultationRegistrationSaveDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ConsultationRegistrationUpdateStatusRequest {
  ConsultationRegistrationUpdateStatusRequest({
    this.status,
    this.adminNote,
  });

  factory ConsultationRegistrationUpdateStatusRequest.fromJson(
          Map<String, dynamic> json) =>
      _$ConsultationRegistrationUpdateStatusRequestFromJson(json);

  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: consultationStatusEnumToJson,
      fromJson: consultationStatusEnumFromJson)
  enums.ConsultationStatusEnum? status;
  @JsonKey(name: 'adminNote', includeIfNull: true)
  String? adminNote;
  static const fromJsonFactory =
      _$ConsultationRegistrationUpdateStatusRequestFromJson;
  static const toJsonFactory =
      _$ConsultationRegistrationUpdateStatusRequestToJson;
  Map<String, dynamic> toJson() =>
      _$ConsultationRegistrationUpdateStatusRequestToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ContactEntity {
  ContactEntity({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.fullName,
    this.phone,
    this.message,
    this.status,
    this.adminNote,
    this.contactedDate,
    this.contactedBy,
  });

  factory ContactEntity.fromJson(Map<String, dynamic> json) =>
      _$ContactEntityFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'fullName', includeIfNull: true)
  String? fullName;
  @JsonKey(name: 'phone', includeIfNull: true)
  String? phone;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: contactStatusEnumToJson,
      fromJson: contactStatusEnumFromJson)
  enums.ContactStatusEnum? status;
  @JsonKey(name: 'adminNote', includeIfNull: true)
  String? adminNote;
  @JsonKey(name: 'contactedDate', includeIfNull: true)
  DateTime? contactedDate;
  @JsonKey(name: 'contactedBy', includeIfNull: true)
  int? contactedBy;
  static const fromJsonFactory = _$ContactEntityFromJson;
  static const toJsonFactory = _$ContactEntityToJson;
  Map<String, dynamic> toJson() => _$ContactEntityToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ContactEntityApiResponse {
  ContactEntityApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory ContactEntityApiResponse.fromJson(Map<String, dynamic> json) =>
      _$ContactEntityApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  ContactEntity? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$ContactEntityApiResponseFromJson;
  static const toJsonFactory = _$ContactEntityApiResponseToJson;
  Map<String, dynamic> toJson() => _$ContactEntityApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ContactGetListQuery {
  ContactGetListQuery({
    this.sortExpression,
    this.pageSize,
    this.pageIndex,
    this.skip,
    this.notSkip,
    this.propertyIncludes,
    this.keyword,
    this.status,
    this.fromDate,
    this.toDate,
  });

  factory ContactGetListQuery.fromJson(Map<String, dynamic> json) =>
      _$ContactGetListQueryFromJson(json);

  @JsonKey(name: 'sortExpression', includeIfNull: true)
  String? sortExpression;
  @JsonKey(name: 'pageSize', includeIfNull: true)
  int? pageSize;
  @JsonKey(name: 'pageIndex', includeIfNull: true)
  int? pageIndex;
  @JsonKey(name: 'skip', includeIfNull: true)
  int? skip;
  @JsonKey(name: 'notSkip', includeIfNull: true)
  int? notSkip;
  @JsonKey(
      name: 'propertyIncludes', includeIfNull: true, defaultValue: <String>[])
  List<String>? propertyIncludes;
  @JsonKey(name: 'keyword', includeIfNull: true)
  String? keyword;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: contactStatusEnumToJson,
      fromJson: contactStatusEnumFromJson)
  enums.ContactStatusEnum? status;
  @JsonKey(name: 'fromDate', includeIfNull: true)
  DateTime? fromDate;
  @JsonKey(name: 'toDate', includeIfNull: true)
  DateTime? toDate;
  static const fromJsonFactory = _$ContactGetListQueryFromJson;
  static const toJsonFactory = _$ContactGetListQueryToJson;
  Map<String, dynamic> toJson() => _$ContactGetListQueryToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ContactListDto {
  ContactListDto({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.fullName,
    this.phone,
    this.message,
    this.status,
    this.adminNote,
    this.contactedDate,
    this.contactedBy,
    this.contactedByName,
  });

  factory ContactListDto.fromJson(Map<String, dynamic> json) =>
      _$ContactListDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'fullName', includeIfNull: true)
  String? fullName;
  @JsonKey(name: 'phone', includeIfNull: true)
  String? phone;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: contactStatusEnumToJson,
      fromJson: contactStatusEnumFromJson)
  enums.ContactStatusEnum? status;
  @JsonKey(name: 'adminNote', includeIfNull: true)
  String? adminNote;
  @JsonKey(name: 'contactedDate', includeIfNull: true)
  DateTime? contactedDate;
  @JsonKey(name: 'contactedBy', includeIfNull: true)
  int? contactedBy;
  @JsonKey(name: 'contactedByName', includeIfNull: true)
  String? contactedByName;
  static const fromJsonFactory = _$ContactListDtoFromJson;
  static const toJsonFactory = _$ContactListDtoToJson;
  Map<String, dynamic> toJson() => _$ContactListDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ContactListDtoFilterResult {
  ContactListDtoFilterResult({
    this.totalRows,
    this.data,
  });

  factory ContactListDtoFilterResult.fromJson(Map<String, dynamic> json) =>
      _$ContactListDtoFilterResultFromJson(json);

  @JsonKey(name: 'totalRows', includeIfNull: true)
  int? totalRows;
  @JsonKey(name: 'data', includeIfNull: true, defaultValue: <ContactListDto>[])
  List<ContactListDto>? data;
  static const fromJsonFactory = _$ContactListDtoFilterResultFromJson;
  static const toJsonFactory = _$ContactListDtoFilterResultToJson;
  Map<String, dynamic> toJson() => _$ContactListDtoFilterResultToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ContactListDtoFilterResultApiResponse {
  ContactListDtoFilterResultApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory ContactListDtoFilterResultApiResponse.fromJson(
          Map<String, dynamic> json) =>
      _$ContactListDtoFilterResultApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  ContactListDtoFilterResult? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory =
      _$ContactListDtoFilterResultApiResponseFromJson;
  static const toJsonFactory = _$ContactListDtoFilterResultApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$ContactListDtoFilterResultApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ContactSaveDto {
  ContactSaveDto({
    this.fullName,
    this.phone,
    this.message,
  });

  factory ContactSaveDto.fromJson(Map<String, dynamic> json) =>
      _$ContactSaveDtoFromJson(json);

  @JsonKey(name: 'fullName', includeIfNull: true)
  String? fullName;
  @JsonKey(name: 'phone', includeIfNull: true)
  String? phone;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  static const fromJsonFactory = _$ContactSaveDtoFromJson;
  static const toJsonFactory = _$ContactSaveDtoToJson;
  Map<String, dynamic> toJson() => _$ContactSaveDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ContactUpdateStatusRequest {
  ContactUpdateStatusRequest({
    this.status,
    this.adminNote,
  });

  factory ContactUpdateStatusRequest.fromJson(Map<String, dynamic> json) =>
      _$ContactUpdateStatusRequestFromJson(json);

  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: contactStatusEnumToJson,
      fromJson: contactStatusEnumFromJson)
  enums.ContactStatusEnum? status;
  @JsonKey(name: 'adminNote', includeIfNull: true)
  String? adminNote;
  static const fromJsonFactory = _$ContactUpdateStatusRequestFromJson;
  static const toJsonFactory = _$ContactUpdateStatusRequestToJson;
  Map<String, dynamic> toJson() => _$ContactUpdateStatusRequestToJson(this);
}

@JsonSerializable(explicitToJson: true)
class CreateChatGroupDto {
  CreateChatGroupDto({
    this.userIds,
    this.name,
    this.type,
    this.documentId,
  });

  factory CreateChatGroupDto.fromJson(Map<String, dynamic> json) =>
      _$CreateChatGroupDtoFromJson(json);

  @JsonKey(name: 'userIds', includeIfNull: true, defaultValue: <int>[])
  List<int>? userIds;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(name: 'type', includeIfNull: true)
  int? type;
  @JsonKey(name: 'documentId', includeIfNull: true)
  int? documentId;
  static const fromJsonFactory = _$CreateChatGroupDtoFromJson;
  static const toJsonFactory = _$CreateChatGroupDtoToJson;
  Map<String, dynamic> toJson() => _$CreateChatGroupDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class CurrentObjectDto {
  CurrentObjectDto({
    this.id,
    this.type,
    this.name,
  });

  factory CurrentObjectDto.fromJson(Map<String, dynamic> json) =>
      _$CurrentObjectDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(
      name: 'type',
      includeIfNull: true,
      toJson: userTypeEnumToJson,
      fromJson: userTypeEnumFromJson)
  enums.UserTypeEnum? type;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  static const fromJsonFactory = _$CurrentObjectDtoFromJson;
  static const toJsonFactory = _$CurrentObjectDtoToJson;
  Map<String, dynamic> toJson() => _$CurrentObjectDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class CurrentObjectDtoApiResponse {
  CurrentObjectDtoApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory CurrentObjectDtoApiResponse.fromJson(Map<String, dynamic> json) =>
      _$CurrentObjectDtoApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  CurrentObjectDto? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$CurrentObjectDtoApiResponseFromJson;
  static const toJsonFactory = _$CurrentObjectDtoApiResponseToJson;
  Map<String, dynamic> toJson() => _$CurrentObjectDtoApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class DNTCaptchaApiResponse {
  DNTCaptchaApiResponse({
    this.dntCaptchaImgUrl,
    this.dntCaptchaId,
    this.dntCaptchaTextValue,
    this.dntCaptchaTokenValue,
  });

  factory DNTCaptchaApiResponse.fromJson(Map<String, dynamic> json) =>
      _$DNTCaptchaApiResponseFromJson(json);

  @JsonKey(name: 'dntCaptchaImgUrl', includeIfNull: true)
  String? dntCaptchaImgUrl;
  @JsonKey(name: 'dntCaptchaId', includeIfNull: true)
  String? dntCaptchaId;
  @JsonKey(name: 'dntCaptchaTextValue', includeIfNull: true)
  String? dntCaptchaTextValue;
  @JsonKey(name: 'dntCaptchaTokenValue', includeIfNull: true)
  String? dntCaptchaTokenValue;
  static const fromJsonFactory = _$DNTCaptchaApiResponseFromJson;
  static const toJsonFactory = _$DNTCaptchaApiResponseToJson;
  Map<String, dynamic> toJson() => _$DNTCaptchaApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class DashBoardClassStatisticalDto {
  DashBoardClassStatisticalDto({
    this.id,
    this.name,
    this.totalStudent,
    this.totalExamNeedMark,
  });

  factory DashBoardClassStatisticalDto.fromJson(Map<String, dynamic> json) =>
      _$DashBoardClassStatisticalDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(name: 'totalStudent', includeIfNull: true)
  int? totalStudent;
  @JsonKey(name: 'totalExamNeedMark', includeIfNull: true)
  int? totalExamNeedMark;
  static const fromJsonFactory = _$DashBoardClassStatisticalDtoFromJson;
  static const toJsonFactory = _$DashBoardClassStatisticalDtoToJson;
  Map<String, dynamic> toJson() => _$DashBoardClassStatisticalDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class DashBoardClassStatisticalDtoListApiResponse {
  DashBoardClassStatisticalDtoListApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory DashBoardClassStatisticalDtoListApiResponse.fromJson(
          Map<String, dynamic> json) =>
      _$DashBoardClassStatisticalDtoListApiResponseFromJson(json);

  @JsonKey(
      name: 'data',
      includeIfNull: true,
      defaultValue: <DashBoardClassStatisticalDto>[])
  List<DashBoardClassStatisticalDto>? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory =
      _$DashBoardClassStatisticalDtoListApiResponseFromJson;
  static const toJsonFactory =
      _$DashBoardClassStatisticalDtoListApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$DashBoardClassStatisticalDtoListApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class DashBoardExamListDto {
  DashBoardExamListDto({
    this.id,
    this.title,
    this.status,
    this.createdDate,
  });

  factory DashBoardExamListDto.fromJson(Map<String, dynamic> json) =>
      _$DashBoardExamListDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'title', includeIfNull: true)
  String? title;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: examStatusEnumToJson,
      fromJson: examStatusEnumFromJson)
  enums.ExamStatusEnum? status;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  static const fromJsonFactory = _$DashBoardExamListDtoFromJson;
  static const toJsonFactory = _$DashBoardExamListDtoToJson;
  Map<String, dynamic> toJson() => _$DashBoardExamListDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class DashBoardExamListDtoListApiResponse {
  DashBoardExamListDtoListApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory DashBoardExamListDtoListApiResponse.fromJson(
          Map<String, dynamic> json) =>
      _$DashBoardExamListDtoListApiResponseFromJson(json);

  @JsonKey(
      name: 'data', includeIfNull: true, defaultValue: <DashBoardExamListDto>[])
  List<DashBoardExamListDto>? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$DashBoardExamListDtoListApiResponseFromJson;
  static const toJsonFactory = _$DashBoardExamListDtoListApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$DashBoardExamListDtoListApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class DashBoardPupilListDto {
  DashBoardPupilListDto({
    this.userId,
    this.avatar,
    this.fullName,
    this.countExam,
    this.countExamDone,
    this.classId,
    this.className,
    this.percentDone,
  });

  factory DashBoardPupilListDto.fromJson(Map<String, dynamic> json) =>
      _$DashBoardPupilListDtoFromJson(json);

  @JsonKey(name: 'userId', includeIfNull: true)
  int? userId;
  @JsonKey(name: 'avatar', includeIfNull: true)
  String? avatar;
  @JsonKey(name: 'fullName', includeIfNull: true)
  String? fullName;
  @JsonKey(name: 'countExam', includeIfNull: true)
  int? countExam;
  @JsonKey(name: 'countExamDone', includeIfNull: true)
  int? countExamDone;
  @JsonKey(name: 'classId', includeIfNull: true)
  int? classId;
  @JsonKey(name: 'className', includeIfNull: true)
  String? className;
  @JsonKey(name: 'percentDone', includeIfNull: true)
  double? percentDone;
  static const fromJsonFactory = _$DashBoardPupilListDtoFromJson;
  static const toJsonFactory = _$DashBoardPupilListDtoToJson;
  Map<String, dynamic> toJson() => _$DashBoardPupilListDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class DashBoardPupilListDtoListApiResponse {
  DashBoardPupilListDtoListApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory DashBoardPupilListDtoListApiResponse.fromJson(
          Map<String, dynamic> json) =>
      _$DashBoardPupilListDtoListApiResponseFromJson(json);

  @JsonKey(
      name: 'data',
      includeIfNull: true,
      defaultValue: <DashBoardPupilListDto>[])
  List<DashBoardPupilListDto>? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$DashBoardPupilListDtoListApiResponseFromJson;
  static const toJsonFactory = _$DashBoardPupilListDtoListApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$DashBoardPupilListDtoListApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class DashBoardQuestionListDto {
  DashBoardQuestionListDto({
    this.id,
    this.type,
    this.classLevel,
    this.subjectId,
    this.level,
  });

  factory DashBoardQuestionListDto.fromJson(Map<String, dynamic> json) =>
      _$DashBoardQuestionListDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'type', includeIfNull: true)
  String? type;
  @JsonKey(name: 'classLevel', includeIfNull: true)
  int? classLevel;
  @JsonKey(name: 'subjectId', includeIfNull: true)
  int? subjectId;
  @JsonKey(
      name: 'level',
      includeIfNull: true,
      toJson: questionLevelEnumToJson,
      fromJson: questionLevelEnumFromJson)
  enums.QuestionLevelEnum? level;
  static const fromJsonFactory = _$DashBoardQuestionListDtoFromJson;
  static const toJsonFactory = _$DashBoardQuestionListDtoToJson;
  Map<String, dynamic> toJson() => _$DashBoardQuestionListDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class DashBoardQuestionListDtoListApiResponse {
  DashBoardQuestionListDtoListApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory DashBoardQuestionListDtoListApiResponse.fromJson(
          Map<String, dynamic> json) =>
      _$DashBoardQuestionListDtoListApiResponseFromJson(json);

  @JsonKey(
      name: 'data',
      includeIfNull: true,
      defaultValue: <DashBoardQuestionListDto>[])
  List<DashBoardQuestionListDto>? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory =
      _$DashBoardQuestionListDtoListApiResponseFromJson;
  static const toJsonFactory = _$DashBoardQuestionListDtoListApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$DashBoardQuestionListDtoListApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class DeparmentGetManagerPositionDto {
  DeparmentGetManagerPositionDto({
    this.name,
    this.provinceId,
  });

  factory DeparmentGetManagerPositionDto.fromJson(Map<String, dynamic> json) =>
      _$DeparmentGetManagerPositionDtoFromJson(json);

  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(name: 'provinceId', includeIfNull: true)
  int? provinceId;
  static const fromJsonFactory = _$DeparmentGetManagerPositionDtoFromJson;
  static const toJsonFactory = _$DeparmentGetManagerPositionDtoToJson;
  Map<String, dynamic> toJson() => _$DeparmentGetManagerPositionDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class DepartmentCountDto {
  DepartmentCountDto({
    this.schoolCount,
    this.teacherCount,
    this.studentCount,
    this.classCount,
  });

  factory DepartmentCountDto.fromJson(Map<String, dynamic> json) =>
      _$DepartmentCountDtoFromJson(json);

  @JsonKey(name: 'schoolCount', includeIfNull: true)
  int? schoolCount;
  @JsonKey(name: 'teacherCount', includeIfNull: true)
  int? teacherCount;
  @JsonKey(name: 'studentCount', includeIfNull: true)
  int? studentCount;
  @JsonKey(name: 'classCount', includeIfNull: true)
  int? classCount;
  static const fromJsonFactory = _$DepartmentCountDtoFromJson;
  static const toJsonFactory = _$DepartmentCountDtoToJson;
  Map<String, dynamic> toJson() => _$DepartmentCountDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class DepartmentCountDtoApiResponse {
  DepartmentCountDtoApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory DepartmentCountDtoApiResponse.fromJson(Map<String, dynamic> json) =>
      _$DepartmentCountDtoApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  DepartmentCountDto? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$DepartmentCountDtoApiResponseFromJson;
  static const toJsonFactory = _$DepartmentCountDtoApiResponseToJson;
  Map<String, dynamic> toJson() => _$DepartmentCountDtoApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class DepartmentCountQuery {
  DepartmentCountQuery({
    this.fromDate,
    this.toDate,
  });

  factory DepartmentCountQuery.fromJson(Map<String, dynamic> json) =>
      _$DepartmentCountQueryFromJson(json);

  @JsonKey(name: 'fromDate', includeIfNull: true)
  DateTime? fromDate;
  @JsonKey(name: 'toDate', includeIfNull: true)
  DateTime? toDate;
  static const fromJsonFactory = _$DepartmentCountQueryFromJson;
  static const toJsonFactory = _$DepartmentCountQueryToJson;
  Map<String, dynamic> toJson() => _$DepartmentCountQueryToJson(this);
}

@JsonSerializable(explicitToJson: true)
class DepartmentDto {
  DepartmentDto({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.code,
    this.name,
    this.fullName,
    this.otherName,
    this.url,
    this.unitType,
    this.parentId,
    this.priority,
    this.type,
    this.status,
    this.officeCount,
    this.schoolCount,
    this.schoolActiveCount,
  });

  factory DepartmentDto.fromJson(Map<String, dynamic> json) =>
      _$DepartmentDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'code', includeIfNull: true)
  String? code;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(name: 'fullName', includeIfNull: true)
  String? fullName;
  @JsonKey(name: 'otherName', includeIfNull: true)
  String? otherName;
  @JsonKey(name: 'url', includeIfNull: true)
  String? url;
  @JsonKey(name: 'unitType', includeIfNull: true)
  String? unitType;
  @JsonKey(name: 'parentId', includeIfNull: true)
  int? parentId;
  @JsonKey(name: 'priority', includeIfNull: true)
  int? priority;
  @JsonKey(
      name: 'type',
      includeIfNull: true,
      toJson: localityTypeEnumToJson,
      fromJson: localityTypeEnumFromJson)
  enums.LocalityTypeEnum? type;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: localityStatusEnumToJson,
      fromJson: localityStatusEnumFromJson)
  enums.LocalityStatusEnum? status;
  @JsonKey(name: 'officeCount', includeIfNull: true)
  int? officeCount;
  @JsonKey(name: 'schoolCount', includeIfNull: true)
  int? schoolCount;
  @JsonKey(name: 'schoolActiveCount', includeIfNull: true)
  int? schoolActiveCount;
  static const fromJsonFactory = _$DepartmentDtoFromJson;
  static const toJsonFactory = _$DepartmentDtoToJson;
  Map<String, dynamic> toJson() => _$DepartmentDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class DepartmentDtoFilterResult {
  DepartmentDtoFilterResult({
    this.totalRows,
    this.data,
  });

  factory DepartmentDtoFilterResult.fromJson(Map<String, dynamic> json) =>
      _$DepartmentDtoFilterResultFromJson(json);

  @JsonKey(name: 'totalRows', includeIfNull: true)
  int? totalRows;
  @JsonKey(name: 'data', includeIfNull: true, defaultValue: <DepartmentDto>[])
  List<DepartmentDto>? data;
  static const fromJsonFactory = _$DepartmentDtoFilterResultFromJson;
  static const toJsonFactory = _$DepartmentDtoFilterResultToJson;
  Map<String, dynamic> toJson() => _$DepartmentDtoFilterResultToJson(this);
}

@JsonSerializable(explicitToJson: true)
class DepartmentDtoFilterResultApiResponse {
  DepartmentDtoFilterResultApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory DepartmentDtoFilterResultApiResponse.fromJson(
          Map<String, dynamic> json) =>
      _$DepartmentDtoFilterResultApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  DepartmentDtoFilterResult? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$DepartmentDtoFilterResultApiResponseFromJson;
  static const toJsonFactory = _$DepartmentDtoFilterResultApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$DepartmentDtoFilterResultApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class DepartmentGetListQuery {
  DepartmentGetListQuery({
    this.sortExpression,
    this.pageSize,
    this.pageIndex,
    this.skip,
    this.notSkip,
    this.propertyIncludes,
    this.keyword,
  });

  factory DepartmentGetListQuery.fromJson(Map<String, dynamic> json) =>
      _$DepartmentGetListQueryFromJson(json);

  @JsonKey(name: 'sortExpression', includeIfNull: true)
  String? sortExpression;
  @JsonKey(name: 'pageSize', includeIfNull: true)
  int? pageSize;
  @JsonKey(name: 'pageIndex', includeIfNull: true)
  int? pageIndex;
  @JsonKey(name: 'skip', includeIfNull: true)
  int? skip;
  @JsonKey(name: 'notSkip', includeIfNull: true)
  int? notSkip;
  @JsonKey(
      name: 'propertyIncludes', includeIfNull: true, defaultValue: <String>[])
  List<String>? propertyIncludes;
  @JsonKey(name: 'keyword', includeIfNull: true)
  String? keyword;
  static const fromJsonFactory = _$DepartmentGetListQueryFromJson;
  static const toJsonFactory = _$DepartmentGetListQueryToJson;
  Map<String, dynamic> toJson() => _$DepartmentGetListQueryToJson(this);
}

@JsonSerializable(explicitToJson: true)
class DepartmentSchoolFilterDto {
  DepartmentSchoolFilterDto({
    this.sortExpression,
    this.pageSize,
    this.pageIndex,
    this.skip,
    this.notSkip,
    this.propertyIncludes,
    this.fromDate,
    this.toDate,
    this.keyword,
    this.type,
    this.provinceId,
    this.districtId,
    this.status,
  });

  factory DepartmentSchoolFilterDto.fromJson(Map<String, dynamic> json) =>
      _$DepartmentSchoolFilterDtoFromJson(json);

  @JsonKey(name: 'sortExpression', includeIfNull: true)
  String? sortExpression;
  @JsonKey(name: 'pageSize', includeIfNull: true)
  int? pageSize;
  @JsonKey(name: 'pageIndex', includeIfNull: true)
  int? pageIndex;
  @JsonKey(name: 'skip', includeIfNull: true)
  int? skip;
  @JsonKey(name: 'notSkip', includeIfNull: true)
  int? notSkip;
  @JsonKey(
      name: 'propertyIncludes', includeIfNull: true, defaultValue: <String>[])
  List<String>? propertyIncludes;
  @JsonKey(name: 'fromDate', includeIfNull: true)
  DateTime? fromDate;
  @JsonKey(name: 'toDate', includeIfNull: true)
  DateTime? toDate;
  @JsonKey(name: 'keyword', includeIfNull: true)
  String? keyword;
  @JsonKey(name: 'type', includeIfNull: true)
  int? type;
  @JsonKey(name: 'provinceId', includeIfNull: true)
  int? provinceId;
  @JsonKey(name: 'districtId', includeIfNull: true)
  int? districtId;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: schoolStatusEnumToJson,
      fromJson: schoolStatusEnumFromJson)
  enums.SchoolStatusEnum? status;
  static const fromJsonFactory = _$DepartmentSchoolFilterDtoFromJson;
  static const toJsonFactory = _$DepartmentSchoolFilterDtoToJson;
  Map<String, dynamic> toJson() => _$DepartmentSchoolFilterDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class DepartmentSchoolListDto {
  DepartmentSchoolListDto({
    this.id,
    this.name,
    this.type,
    this.provinceId,
    this.averageAssignmentsPerTeacher,
    this.averageAssignmentsPerStudent,
    this.provinceName,
    this.districtId,
    this.districtName,
    this.status,
  });

  factory DepartmentSchoolListDto.fromJson(Map<String, dynamic> json) =>
      _$DepartmentSchoolListDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(name: 'type', includeIfNull: true)
  String? type;
  @JsonKey(name: 'provinceId', includeIfNull: true)
  int? provinceId;
  @JsonKey(name: 'averageAssignmentsPerTeacher', includeIfNull: true)
  double? averageAssignmentsPerTeacher;
  @JsonKey(name: 'averageAssignmentsPerStudent', includeIfNull: true)
  double? averageAssignmentsPerStudent;
  @JsonKey(name: 'provinceName', includeIfNull: true)
  String? provinceName;
  @JsonKey(name: 'districtId', includeIfNull: true)
  int? districtId;
  @JsonKey(name: 'districtName', includeIfNull: true)
  String? districtName;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: schoolStatusEnumToJson,
      fromJson: schoolStatusEnumFromJson)
  enums.SchoolStatusEnum? status;
  static const fromJsonFactory = _$DepartmentSchoolListDtoFromJson;
  static const toJsonFactory = _$DepartmentSchoolListDtoToJson;
  Map<String, dynamic> toJson() => _$DepartmentSchoolListDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class DepartmentSchoolListDtoFilterResult {
  DepartmentSchoolListDtoFilterResult({
    this.totalRows,
    this.data,
  });

  factory DepartmentSchoolListDtoFilterResult.fromJson(
          Map<String, dynamic> json) =>
      _$DepartmentSchoolListDtoFilterResultFromJson(json);

  @JsonKey(name: 'totalRows', includeIfNull: true)
  int? totalRows;
  @JsonKey(
      name: 'data',
      includeIfNull: true,
      defaultValue: <DepartmentSchoolListDto>[])
  List<DepartmentSchoolListDto>? data;
  static const fromJsonFactory = _$DepartmentSchoolListDtoFilterResultFromJson;
  static const toJsonFactory = _$DepartmentSchoolListDtoFilterResultToJson;
  Map<String, dynamic> toJson() =>
      _$DepartmentSchoolListDtoFilterResultToJson(this);
}

@JsonSerializable(explicitToJson: true)
class DepartmentSchoolListDtoFilterResultApiResponse {
  DepartmentSchoolListDtoFilterResultApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory DepartmentSchoolListDtoFilterResultApiResponse.fromJson(
          Map<String, dynamic> json) =>
      _$DepartmentSchoolListDtoFilterResultApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  DepartmentSchoolListDtoFilterResult? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory =
      _$DepartmentSchoolListDtoFilterResultApiResponseFromJson;
  static const toJsonFactory =
      _$DepartmentSchoolListDtoFilterResultApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$DepartmentSchoolListDtoFilterResultApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class Disable2FADto {
  Disable2FADto({
    this.code,
  });

  factory Disable2FADto.fromJson(Map<String, dynamic> json) =>
      _$Disable2FADtoFromJson(json);

  @JsonKey(name: 'code', includeIfNull: true)
  String? code;
  static const fromJsonFactory = _$Disable2FADtoFromJson;
  static const toJsonFactory = _$Disable2FADtoToJson;
  Map<String, dynamic> toJson() => _$Disable2FADtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class DocumentFileInfo {
  DocumentFileInfo({
    this.fileName,
    this.displayName,
    this.size,
    this.lineCount,
    this.lastModified,
    this.exists,
  });

  factory DocumentFileInfo.fromJson(Map<String, dynamic> json) =>
      _$DocumentFileInfoFromJson(json);

  @JsonKey(name: 'fileName', includeIfNull: true)
  String? fileName;
  @JsonKey(name: 'displayName', includeIfNull: true)
  String? displayName;
  @JsonKey(name: 'size', includeIfNull: true)
  int? size;
  @JsonKey(name: 'lineCount', includeIfNull: true)
  int? lineCount;
  @JsonKey(name: 'lastModified', includeIfNull: true)
  DateTime? lastModified;
  @JsonKey(name: 'exists', includeIfNull: true)
  bool? exists;
  static const fromJsonFactory = _$DocumentFileInfoFromJson;
  static const toJsonFactory = _$DocumentFileInfoToJson;
  Map<String, dynamic> toJson() => _$DocumentFileInfoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class DocumentInfo {
  DocumentInfo({
    this.files,
    this.totalFiles,
    this.existingFiles,
    this.totalSize,
    this.lastUpdated,
  });

  factory DocumentInfo.fromJson(Map<String, dynamic> json) =>
      _$DocumentInfoFromJson(json);

  @JsonKey(
      name: 'files', includeIfNull: true, defaultValue: <DocumentFileInfo>[])
  List<DocumentFileInfo>? files;
  @JsonKey(name: 'totalFiles', includeIfNull: true)
  int? totalFiles;
  @JsonKey(name: 'existingFiles', includeIfNull: true)
  int? existingFiles;
  @JsonKey(name: 'totalSize', includeIfNull: true)
  int? totalSize;
  @JsonKey(name: 'lastUpdated', includeIfNull: true)
  DateTime? lastUpdated;
  static const fromJsonFactory = _$DocumentInfoFromJson;
  static const toJsonFactory = _$DocumentInfoToJson;
  Map<String, dynamic> toJson() => _$DocumentInfoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class DocumentInfoApiResponse {
  DocumentInfoApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory DocumentInfoApiResponse.fromJson(Map<String, dynamic> json) =>
      _$DocumentInfoApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  DocumentInfo? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$DocumentInfoApiResponseFromJson;
  static const toJsonFactory = _$DocumentInfoApiResponseToJson;
  Map<String, dynamic> toJson() => _$DocumentInfoApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class DocumentPreviewResponse {
  DocumentPreviewResponse({
    this.fileName,
    this.displayName,
    this.previewContent,
    this.totalLines,
    this.previewLines,
    this.hasMore,
    this.fileSize,
  });

  factory DocumentPreviewResponse.fromJson(Map<String, dynamic> json) =>
      _$DocumentPreviewResponseFromJson(json);

  @JsonKey(name: 'fileName', includeIfNull: true)
  String? fileName;
  @JsonKey(name: 'displayName', includeIfNull: true)
  String? displayName;
  @JsonKey(name: 'previewContent', includeIfNull: true)
  String? previewContent;
  @JsonKey(name: 'totalLines', includeIfNull: true)
  int? totalLines;
  @JsonKey(name: 'previewLines', includeIfNull: true)
  int? previewLines;
  @JsonKey(name: 'hasMore', includeIfNull: true)
  bool? hasMore;
  @JsonKey(name: 'fileSize', includeIfNull: true)
  int? fileSize;
  static const fromJsonFactory = _$DocumentPreviewResponseFromJson;
  static const toJsonFactory = _$DocumentPreviewResponseToJson;
  Map<String, dynamic> toJson() => _$DocumentPreviewResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class DocumentPreviewResponseApiResponse {
  DocumentPreviewResponseApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory DocumentPreviewResponseApiResponse.fromJson(
          Map<String, dynamic> json) =>
      _$DocumentPreviewResponseApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  DocumentPreviewResponse? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$DocumentPreviewResponseApiResponseFromJson;
  static const toJsonFactory = _$DocumentPreviewResponseApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$DocumentPreviewResponseApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class Enable2FADto {
  Enable2FADto({
    this.code,
  });

  factory Enable2FADto.fromJson(Map<String, dynamic> json) =>
      _$Enable2FADtoFromJson(json);

  @JsonKey(name: 'code', includeIfNull: true)
  String? code;
  static const fromJsonFactory = _$Enable2FADtoFromJson;
  static const toJsonFactory = _$Enable2FADtoToJson;
  Map<String, dynamic> toJson() => _$Enable2FADtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class Enum {
  Enum();

  factory Enum.fromJson(Map<String, dynamic> json) => _$EnumFromJson(json);

  static const fromJsonFactory = _$EnumFromJson;
  static const toJsonFactory = _$EnumToJson;
  Map<String, dynamic> toJson() => _$EnumToJson(this);
}

@JsonSerializable(explicitToJson: true)
class EnumItemEntity {
  EnumItemEntity({
    this.id,
    this.name,
    this.code,
  });

  factory EnumItemEntity.fromJson(Map<String, dynamic> json) =>
      _$EnumItemEntityFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(name: 'code', includeIfNull: true)
  String? code;
  static const fromJsonFactory = _$EnumItemEntityFromJson;
  static const toJsonFactory = _$EnumItemEntityToJson;
  Map<String, dynamic> toJson() => _$EnumItemEntityToJson(this);
}

@JsonSerializable(explicitToJson: true)
class EnumListEntity {
  EnumListEntity({
    this.value,
    this.code,
    this.name,
    this.isZone,
    this.permissions,
  });

  factory EnumListEntity.fromJson(Map<String, dynamic> json) =>
      _$EnumListEntityFromJson(json);

  @JsonKey(name: 'value', includeIfNull: true)
  int? value;
  @JsonKey(name: 'code', includeIfNull: true)
  String? code;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(name: 'isZone', includeIfNull: true)
  bool? isZone;
  @JsonKey(
      name: 'permissions',
      includeIfNull: true,
      defaultValue: <EnumListEntity>[])
  List<EnumListEntity>? permissions;
  static const fromJsonFactory = _$EnumListEntityFromJson;
  static const toJsonFactory = _$EnumListEntityToJson;
  Map<String, dynamic> toJson() => _$EnumListEntityToJson(this);
}

@JsonSerializable(explicitToJson: true)
class EnumListEntityListApiResponse {
  EnumListEntityListApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory EnumListEntityListApiResponse.fromJson(Map<String, dynamic> json) =>
      _$EnumListEntityListApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true, defaultValue: <EnumListEntity>[])
  List<EnumListEntity>? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$EnumListEntityListApiResponseFromJson;
  static const toJsonFactory = _$EnumListEntityListApiResponseToJson;
  Map<String, dynamic> toJson() => _$EnumListEntityListApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class EssaySuggestionMarkDto {
  EssaySuggestionMarkDto({
    this.categoryId,
    this.grade,
    this.result,
    this.content,
    this.mark,
    this.images,
  });

  factory EssaySuggestionMarkDto.fromJson(Map<String, dynamic> json) =>
      _$EssaySuggestionMarkDtoFromJson(json);

  @JsonKey(name: 'categoryId', includeIfNull: true)
  int? categoryId;
  @JsonKey(name: 'grade', includeIfNull: true)
  int? grade;
  @JsonKey(name: 'result', includeIfNull: true)
  String? result;
  @JsonKey(name: 'content', includeIfNull: true)
  String? content;
  @JsonKey(name: 'mark', includeIfNull: true)
  double? mark;
  @JsonKey(name: 'images', includeIfNull: true, defaultValue: <String>[])
  List<String>? images;
  static const fromJsonFactory = _$EssaySuggestionMarkDtoFromJson;
  static const toJsonFactory = _$EssaySuggestionMarkDtoToJson;
  Map<String, dynamic> toJson() => _$EssaySuggestionMarkDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ExamDataBeforeDeleteDto {
  ExamDataBeforeDeleteDto({
    this.countPupil,
    this.countPupilDone,
  });

  factory ExamDataBeforeDeleteDto.fromJson(Map<String, dynamic> json) =>
      _$ExamDataBeforeDeleteDtoFromJson(json);

  @JsonKey(name: 'countPupil', includeIfNull: true)
  int? countPupil;
  @JsonKey(name: 'countPupilDone', includeIfNull: true)
  int? countPupilDone;
  static const fromJsonFactory = _$ExamDataBeforeDeleteDtoFromJson;
  static const toJsonFactory = _$ExamDataBeforeDeleteDtoToJson;
  Map<String, dynamic> toJson() => _$ExamDataBeforeDeleteDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ExamDataBeforeDeleteDtoApiResponse {
  ExamDataBeforeDeleteDtoApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory ExamDataBeforeDeleteDtoApiResponse.fromJson(
          Map<String, dynamic> json) =>
      _$ExamDataBeforeDeleteDtoApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  ExamDataBeforeDeleteDto? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$ExamDataBeforeDeleteDtoApiResponseFromJson;
  static const toJsonFactory = _$ExamDataBeforeDeleteDtoApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$ExamDataBeforeDeleteDtoApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ExamDataDto {
  ExamDataDto({
    this.parts,
  });

  factory ExamDataDto.fromJson(Map<String, dynamic> json) =>
      _$ExamDataDtoFromJson(json);

  @JsonKey(name: 'parts', includeIfNull: true, defaultValue: <ExamPartDto>[])
  List<ExamPartDto>? parts;
  static const fromJsonFactory = _$ExamDataDtoFromJson;
  static const toJsonFactory = _$ExamDataDtoToJson;
  Map<String, dynamic> toJson() => _$ExamDataDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ExamDataSaveDto {
  ExamDataSaveDto({
    this.parts,
  });

  factory ExamDataSaveDto.fromJson(Map<String, dynamic> json) =>
      _$ExamDataSaveDtoFromJson(json);

  @JsonKey(
      name: 'parts', includeIfNull: true, defaultValue: <ExamPartSaveDto>[])
  List<ExamPartSaveDto>? parts;
  static const fromJsonFactory = _$ExamDataSaveDtoFromJson;
  static const toJsonFactory = _$ExamDataSaveDtoToJson;
  Map<String, dynamic> toJson() => _$ExamDataSaveDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ExamDto {
  ExamDto({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.title,
    this.avatar,
    this.duration,
    this.type,
    this.status,
    this.totalMark,
    this.totalQuestion,
    this.schoolId,
    this.classLevel,
    this.subjectId,
    this.format,
    this.fileUrl,
    this.data,
    this.categoryId,
    this.isSystem,
    this.isAutoScoring,
    this.fileChoiceType,
    this.questions,
    this.assignExams,
    this.tagIds,
    this.tags,
    this.canEdit,
  });

  factory ExamDto.fromJson(Map<String, dynamic> json) =>
      _$ExamDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'title', includeIfNull: true)
  String? title;
  @JsonKey(name: 'avatar', includeIfNull: true)
  String? avatar;
  @JsonKey(name: 'duration', includeIfNull: true)
  int? duration;
  @JsonKey(
      name: 'type',
      includeIfNull: true,
      toJson: examTypeEnumToJson,
      fromJson: examTypeEnumFromJson)
  enums.ExamTypeEnum? type;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: examStatusEnumToJson,
      fromJson: examStatusEnumFromJson)
  enums.ExamStatusEnum? status;
  @JsonKey(name: 'totalMark', includeIfNull: true)
  double? totalMark;
  @JsonKey(name: 'totalQuestion', includeIfNull: true)
  int? totalQuestion;
  @JsonKey(name: 'schoolId', includeIfNull: true)
  int? schoolId;
  @JsonKey(name: 'classLevel', includeIfNull: true)
  int? classLevel;
  @JsonKey(name: 'subjectId', includeIfNull: true)
  int? subjectId;
  @JsonKey(
      name: 'format',
      includeIfNull: true,
      toJson: examFormatEnumToJson,
      fromJson: examFormatEnumFromJson)
  enums.ExamFormatEnum? format;
  @JsonKey(name: 'fileUrl', includeIfNull: true)
  String? fileUrl;
  @JsonKey(name: 'data', includeIfNull: true)
  ExamDataDto? data;
  @JsonKey(name: 'categoryId', includeIfNull: true)
  int? categoryId;
  @JsonKey(name: 'isSystem', includeIfNull: true)
  bool? isSystem;
  @JsonKey(name: 'isAutoScoring', includeIfNull: true)
  bool? isAutoScoring;
  @JsonKey(
      name: 'fileChoiceType',
      includeIfNull: true,
      toJson: examFileChoiceTypeEnumToJson,
      fromJson: examFileChoiceTypeEnumFromJson)
  enums.ExamFileChoiceTypeEnum? fileChoiceType;
  @JsonKey(
      name: 'questions',
      includeIfNull: true,
      defaultValue: <ExamQuestionEntity>[])
  List<ExamQuestionEntity>? questions;
  @JsonKey(
      name: 'assignExams',
      includeIfNull: true,
      defaultValue: <AssignExamEntity>[])
  List<AssignExamEntity>? assignExams;
  @JsonKey(name: 'tagIds', includeIfNull: true, defaultValue: <int>[])
  List<int>? tagIds;
  @JsonKey(name: 'tags', includeIfNull: true, defaultValue: <TagDto>[])
  List<TagDto>? tags;
  @JsonKey(name: 'canEdit', includeIfNull: true)
  bool? canEdit;
  static const fromJsonFactory = _$ExamDtoFromJson;
  static const toJsonFactory = _$ExamDtoToJson;
  Map<String, dynamic> toJson() => _$ExamDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ExamDtoApiResponse {
  ExamDtoApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory ExamDtoApiResponse.fromJson(Map<String, dynamic> json) =>
      _$ExamDtoApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  ExamDto? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$ExamDtoApiResponseFromJson;
  static const toJsonFactory = _$ExamDtoApiResponseToJson;
  Map<String, dynamic> toJson() => _$ExamDtoApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ExamFileSaveDto {
  ExamFileSaveDto({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.title,
    this.avatar,
    this.duration,
    this.type,
    this.status,
    this.totalMark,
    this.totalQuestion,
    this.schoolId,
    this.classLevel,
    this.subjectId,
    this.format,
    this.fileUrl,
    this.data,
    this.categoryId,
    this.isSystem,
    this.isAutoScoring,
    this.fileChoiceType,
    this.questions,
    this.assignExams,
  });

  factory ExamFileSaveDto.fromJson(Map<String, dynamic> json) =>
      _$ExamFileSaveDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'title', includeIfNull: true)
  String? title;
  @JsonKey(name: 'avatar', includeIfNull: true)
  String? avatar;
  @JsonKey(name: 'duration', includeIfNull: true)
  int? duration;
  @JsonKey(
      name: 'type',
      includeIfNull: true,
      toJson: examTypeEnumToJson,
      fromJson: examTypeEnumFromJson)
  enums.ExamTypeEnum? type;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: examStatusEnumToJson,
      fromJson: examStatusEnumFromJson)
  enums.ExamStatusEnum? status;
  @JsonKey(name: 'totalMark', includeIfNull: true)
  double? totalMark;
  @JsonKey(name: 'totalQuestion', includeIfNull: true)
  int? totalQuestion;
  @JsonKey(name: 'schoolId', includeIfNull: true)
  int? schoolId;
  @JsonKey(name: 'classLevel', includeIfNull: true)
  int? classLevel;
  @JsonKey(name: 'subjectId', includeIfNull: true)
  int? subjectId;
  @JsonKey(
      name: 'format',
      includeIfNull: true,
      toJson: examFormatEnumToJson,
      fromJson: examFormatEnumFromJson)
  enums.ExamFormatEnum? format;
  @JsonKey(name: 'fileUrl', includeIfNull: true)
  String? fileUrl;
  @JsonKey(name: 'data', includeIfNull: true)
  String? data;
  @JsonKey(name: 'categoryId', includeIfNull: true)
  int? categoryId;
  @JsonKey(name: 'isSystem', includeIfNull: true)
  bool? isSystem;
  @JsonKey(name: 'isAutoScoring', includeIfNull: true)
  bool? isAutoScoring;
  @JsonKey(
      name: 'fileChoiceType',
      includeIfNull: true,
      toJson: examFileChoiceTypeEnumToJson,
      fromJson: examFileChoiceTypeEnumFromJson)
  enums.ExamFileChoiceTypeEnum? fileChoiceType;
  @JsonKey(
      name: 'questions', includeIfNull: true, defaultValue: <QuestionDto>[])
  List<QuestionDto>? questions;
  @JsonKey(
      name: 'assignExams',
      includeIfNull: true,
      defaultValue: <AssignExamEntity>[])
  List<AssignExamEntity>? assignExams;
  static const fromJsonFactory = _$ExamFileSaveDtoFromJson;
  static const toJsonFactory = _$ExamFileSaveDtoToJson;
  Map<String, dynamic> toJson() => _$ExamFileSaveDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ExamGetListQuery {
  ExamGetListQuery({
    this.sortExpression,
    this.pageSize,
    this.pageIndex,
    this.skip,
    this.notSkip,
    this.propertyIncludes,
    this.keyword,
    this.schoolId,
    this.userId,
    this.classLevel,
    this.type,
    this.status,
    this.format,
    this.subjectId,
    this.filterType,
    this.ids,
  });

  factory ExamGetListQuery.fromJson(Map<String, dynamic> json) =>
      _$ExamGetListQueryFromJson(json);

  @JsonKey(name: 'sortExpression', includeIfNull: true)
  String? sortExpression;
  @JsonKey(name: 'pageSize', includeIfNull: true)
  int? pageSize;
  @JsonKey(name: 'pageIndex', includeIfNull: true)
  int? pageIndex;
  @JsonKey(name: 'skip', includeIfNull: true)
  int? skip;
  @JsonKey(name: 'notSkip', includeIfNull: true)
  int? notSkip;
  @JsonKey(
      name: 'propertyIncludes', includeIfNull: true, defaultValue: <String>[])
  List<String>? propertyIncludes;
  @JsonKey(name: 'keyword', includeIfNull: true)
  String? keyword;
  @JsonKey(name: 'schoolId', includeIfNull: true)
  int? schoolId;
  @JsonKey(name: 'userId', includeIfNull: true)
  int? userId;
  @JsonKey(name: 'classLevel', includeIfNull: true)
  int? classLevel;
  @JsonKey(
      name: 'type',
      includeIfNull: true,
      toJson: examTypeEnumToJson,
      fromJson: examTypeEnumFromJson)
  enums.ExamTypeEnum? type;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: examStatusEnumToJson,
      fromJson: examStatusEnumFromJson)
  enums.ExamStatusEnum? status;
  @JsonKey(
      name: 'format',
      includeIfNull: true,
      toJson: examFormatEnumToJson,
      fromJson: examFormatEnumFromJson)
  enums.ExamFormatEnum? format;
  @JsonKey(name: 'subjectId', includeIfNull: true)
  int? subjectId;
  @JsonKey(name: 'filterType', includeIfNull: true)
  int? filterType;
  @JsonKey(name: 'ids', includeIfNull: true, defaultValue: <int>[])
  List<int>? ids;
  static const fromJsonFactory = _$ExamGetListQueryFromJson;
  static const toJsonFactory = _$ExamGetListQueryToJson;
  Map<String, dynamic> toJson() => _$ExamGetListQueryToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ExamLearnDto {
  ExamLearnDto({
    this.id,
    this.title,
    this.avatar,
    this.duration,
    this.type,
    this.status,
    this.totalMark,
    this.totalQuestion,
    this.schoolId,
    this.classLevel,
    this.subjectId,
    this.format,
    this.fileUrl,
    this.categoryId,
    this.fileChoiceType,
    this.data,
  });

  factory ExamLearnDto.fromJson(Map<String, dynamic> json) =>
      _$ExamLearnDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'title', includeIfNull: true)
  String? title;
  @JsonKey(name: 'avatar', includeIfNull: true)
  String? avatar;
  @JsonKey(name: 'duration', includeIfNull: true)
  int? duration;
  @JsonKey(
      name: 'type',
      includeIfNull: true,
      toJson: examTypeEnumToJson,
      fromJson: examTypeEnumFromJson)
  enums.ExamTypeEnum? type;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: examStatusEnumToJson,
      fromJson: examStatusEnumFromJson)
  enums.ExamStatusEnum? status;
  @JsonKey(name: 'totalMark', includeIfNull: true)
  double? totalMark;
  @JsonKey(name: 'totalQuestion', includeIfNull: true)
  int? totalQuestion;
  @JsonKey(name: 'schoolId', includeIfNull: true)
  int? schoolId;
  @JsonKey(name: 'classLevel', includeIfNull: true)
  int? classLevel;
  @JsonKey(name: 'subjectId', includeIfNull: true)
  int? subjectId;
  @JsonKey(
      name: 'format',
      includeIfNull: true,
      toJson: examFormatEnumToJson,
      fromJson: examFormatEnumFromJson)
  enums.ExamFormatEnum? format;
  @JsonKey(name: 'fileUrl', includeIfNull: true)
  String? fileUrl;
  @JsonKey(name: 'categoryId', includeIfNull: true)
  int? categoryId;
  @JsonKey(
      name: 'fileChoiceType',
      includeIfNull: true,
      toJson: examFileChoiceTypeEnumToJson,
      fromJson: examFileChoiceTypeEnumFromJson)
  enums.ExamFileChoiceTypeEnum? fileChoiceType;
  @JsonKey(name: 'data', includeIfNull: true)
  ExamDataDto? data;
  static const fromJsonFactory = _$ExamLearnDtoFromJson;
  static const toJsonFactory = _$ExamLearnDtoToJson;
  Map<String, dynamic> toJson() => _$ExamLearnDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ExamListDto {
  ExamListDto({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.title,
    this.duration,
    this.avatar,
    this.type,
    this.status,
    this.totalMark,
    this.totalQuestion,
    this.schoolId,
    this.classLevel,
    this.subjectId,
    this.format,
    this.fileUrl,
    this.categoryId,
    this.isLike,
    this.isSystem,
    this.canEdit,
    this.isAutoScoring,
    this.tags,
    this.assignExamCount,
  });

  factory ExamListDto.fromJson(Map<String, dynamic> json) =>
      _$ExamListDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'title', includeIfNull: true)
  String? title;
  @JsonKey(name: 'duration', includeIfNull: true)
  int? duration;
  @JsonKey(name: 'avatar', includeIfNull: true)
  String? avatar;
  @JsonKey(
      name: 'type',
      includeIfNull: true,
      toJson: examTypeEnumToJson,
      fromJson: examTypeEnumFromJson)
  enums.ExamTypeEnum? type;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: examStatusEnumToJson,
      fromJson: examStatusEnumFromJson)
  enums.ExamStatusEnum? status;
  @JsonKey(name: 'totalMark', includeIfNull: true)
  double? totalMark;
  @JsonKey(name: 'totalQuestion', includeIfNull: true)
  int? totalQuestion;
  @JsonKey(name: 'schoolId', includeIfNull: true)
  int? schoolId;
  @JsonKey(name: 'classLevel', includeIfNull: true)
  int? classLevel;
  @JsonKey(name: 'subjectId', includeIfNull: true)
  int? subjectId;
  @JsonKey(
      name: 'format',
      includeIfNull: true,
      toJson: examFormatEnumToJson,
      fromJson: examFormatEnumFromJson)
  enums.ExamFormatEnum? format;
  @JsonKey(name: 'fileUrl', includeIfNull: true)
  String? fileUrl;
  @JsonKey(name: 'categoryId', includeIfNull: true)
  int? categoryId;
  @JsonKey(name: 'isLike', includeIfNull: true)
  bool? isLike;
  @JsonKey(name: 'isSystem', includeIfNull: true)
  bool? isSystem;
  @JsonKey(name: 'canEdit', includeIfNull: true)
  bool? canEdit;
  @JsonKey(name: 'isAutoScoring', includeIfNull: true)
  bool? isAutoScoring;
  @JsonKey(name: 'tags', includeIfNull: true, defaultValue: <TagDto>[])
  List<TagDto>? tags;
  @JsonKey(name: 'assignExamCount', includeIfNull: true)
  int? assignExamCount;
  static const fromJsonFactory = _$ExamListDtoFromJson;
  static const toJsonFactory = _$ExamListDtoToJson;
  Map<String, dynamic> toJson() => _$ExamListDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ExamListDtoFilterResult {
  ExamListDtoFilterResult({
    this.totalRows,
    this.data,
  });

  factory ExamListDtoFilterResult.fromJson(Map<String, dynamic> json) =>
      _$ExamListDtoFilterResultFromJson(json);

  @JsonKey(name: 'totalRows', includeIfNull: true)
  int? totalRows;
  @JsonKey(name: 'data', includeIfNull: true, defaultValue: <ExamListDto>[])
  List<ExamListDto>? data;
  static const fromJsonFactory = _$ExamListDtoFilterResultFromJson;
  static const toJsonFactory = _$ExamListDtoFilterResultToJson;
  Map<String, dynamic> toJson() => _$ExamListDtoFilterResultToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ExamListDtoFilterResultApiResponse {
  ExamListDtoFilterResultApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory ExamListDtoFilterResultApiResponse.fromJson(
          Map<String, dynamic> json) =>
      _$ExamListDtoFilterResultApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  ExamListDtoFilterResult? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$ExamListDtoFilterResultApiResponseFromJson;
  static const toJsonFactory = _$ExamListDtoFilterResultApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$ExamListDtoFilterResultApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ExamPartDto {
  ExamPartDto({
    this.id,
    this.title,
    this.description,
    this.partTime,
    this.totalMark,
    this.numberOfQuestion,
    this.questions,
  });

  factory ExamPartDto.fromJson(Map<String, dynamic> json) =>
      _$ExamPartDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  String? id;
  @JsonKey(name: 'title', includeIfNull: true)
  String? title;
  @JsonKey(name: 'description', includeIfNull: true)
  String? description;
  @JsonKey(name: 'partTime', includeIfNull: true)
  int? partTime;
  @JsonKey(name: 'totalMark', includeIfNull: true)
  double? totalMark;
  @JsonKey(name: 'numberOfQuestion', includeIfNull: true)
  int? numberOfQuestion;
  @JsonKey(
      name: 'questions', includeIfNull: true, defaultValue: <QuestionDto>[])
  List<QuestionDto>? questions;
  static const fromJsonFactory = _$ExamPartDtoFromJson;
  static const toJsonFactory = _$ExamPartDtoToJson;
  Map<String, dynamic> toJson() => _$ExamPartDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ExamPartQuestionSaveDto {
  ExamPartQuestionSaveDto({
    this.id,
    this.mark,
    this.parentId,
  });

  factory ExamPartQuestionSaveDto.fromJson(Map<String, dynamic> json) =>
      _$ExamPartQuestionSaveDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'mark', includeIfNull: true)
  double? mark;
  @JsonKey(name: 'parentId', includeIfNull: true)
  int? parentId;
  static const fromJsonFactory = _$ExamPartQuestionSaveDtoFromJson;
  static const toJsonFactory = _$ExamPartQuestionSaveDtoToJson;
  Map<String, dynamic> toJson() => _$ExamPartQuestionSaveDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ExamPartSaveDto {
  ExamPartSaveDto({
    this.id,
    this.title,
    this.partTime,
    this.totalMark,
    this.description,
    this.numberOfQuestion,
    this.questions,
  });

  factory ExamPartSaveDto.fromJson(Map<String, dynamic> json) =>
      _$ExamPartSaveDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  String? id;
  @JsonKey(name: 'title', includeIfNull: true)
  String? title;
  @JsonKey(name: 'partTime', includeIfNull: true)
  int? partTime;
  @JsonKey(name: 'totalMark', includeIfNull: true)
  double? totalMark;
  @JsonKey(name: 'description', includeIfNull: true)
  String? description;
  @JsonKey(name: 'numberOfQuestion', includeIfNull: true)
  int? numberOfQuestion;
  @JsonKey(
      name: 'questions',
      includeIfNull: true,
      defaultValue: <ExamPartQuestionSaveDto>[])
  List<ExamPartQuestionSaveDto>? questions;
  static const fromJsonFactory = _$ExamPartSaveDtoFromJson;
  static const toJsonFactory = _$ExamPartSaveDtoToJson;
  Map<String, dynamic> toJson() => _$ExamPartSaveDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ExamQuestionEntity {
  ExamQuestionEntity({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.examId,
    this.questionId,
    this.mark,
    this.parentId,
  });

  factory ExamQuestionEntity.fromJson(Map<String, dynamic> json) =>
      _$ExamQuestionEntityFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'examId', includeIfNull: true)
  int? examId;
  @JsonKey(name: 'questionId', includeIfNull: true)
  int? questionId;
  @JsonKey(name: 'mark', includeIfNull: true)
  double? mark;
  @JsonKey(name: 'parentId', includeIfNull: true)
  int? parentId;
  static const fromJsonFactory = _$ExamQuestionEntityFromJson;
  static const toJsonFactory = _$ExamQuestionEntityToJson;
  Map<String, dynamic> toJson() => _$ExamQuestionEntityToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ExamResultDto {
  ExamResultDto({
    this.userId,
    this.avatar,
    this.fullName,
    this.totalExam,
    this.totalExamDone,
    this.countTest,
    this.countTestDone,
    this.averageScoreTest,
  });

  factory ExamResultDto.fromJson(Map<String, dynamic> json) =>
      _$ExamResultDtoFromJson(json);

  @JsonKey(name: 'userId', includeIfNull: true)
  int? userId;
  @JsonKey(name: 'avatar', includeIfNull: true)
  String? avatar;
  @JsonKey(name: 'fullName', includeIfNull: true)
  String? fullName;
  @JsonKey(name: 'totalExam', includeIfNull: true)
  int? totalExam;
  @JsonKey(name: 'totalExamDone', includeIfNull: true)
  int? totalExamDone;
  @JsonKey(name: 'countTest', includeIfNull: true)
  int? countTest;
  @JsonKey(name: 'countTestDone', includeIfNull: true)
  int? countTestDone;
  @JsonKey(name: 'averageScoreTest', includeIfNull: true)
  double? averageScoreTest;
  static const fromJsonFactory = _$ExamResultDtoFromJson;
  static const toJsonFactory = _$ExamResultDtoToJson;
  Map<String, dynamic> toJson() => _$ExamResultDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ExamResultDtoFilterResult {
  ExamResultDtoFilterResult({
    this.totalRows,
    this.data,
  });

  factory ExamResultDtoFilterResult.fromJson(Map<String, dynamic> json) =>
      _$ExamResultDtoFilterResultFromJson(json);

  @JsonKey(name: 'totalRows', includeIfNull: true)
  int? totalRows;
  @JsonKey(name: 'data', includeIfNull: true, defaultValue: <ExamResultDto>[])
  List<ExamResultDto>? data;
  static const fromJsonFactory = _$ExamResultDtoFilterResultFromJson;
  static const toJsonFactory = _$ExamResultDtoFilterResultToJson;
  Map<String, dynamic> toJson() => _$ExamResultDtoFilterResultToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ExamResultFilterDto {
  ExamResultFilterDto({
    this.sortExpression,
    this.pageSize,
    this.pageIndex,
    this.skip,
    this.notSkip,
    this.propertyIncludes,
    this.keyword,
    this.classId,
  });

  factory ExamResultFilterDto.fromJson(Map<String, dynamic> json) =>
      _$ExamResultFilterDtoFromJson(json);

  @JsonKey(name: 'sortExpression', includeIfNull: true)
  String? sortExpression;
  @JsonKey(name: 'pageSize', includeIfNull: true)
  int? pageSize;
  @JsonKey(name: 'pageIndex', includeIfNull: true)
  int? pageIndex;
  @JsonKey(name: 'skip', includeIfNull: true)
  int? skip;
  @JsonKey(name: 'notSkip', includeIfNull: true)
  int? notSkip;
  @JsonKey(
      name: 'propertyIncludes', includeIfNull: true, defaultValue: <String>[])
  List<String>? propertyIncludes;
  @JsonKey(name: 'keyword', includeIfNull: true)
  String? keyword;
  @JsonKey(name: 'classId', includeIfNull: true)
  int? classId;
  static const fromJsonFactory = _$ExamResultFilterDtoFromJson;
  static const toJsonFactory = _$ExamResultFilterDtoToJson;
  Map<String, dynamic> toJson() => _$ExamResultFilterDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ExamSaveDto {
  ExamSaveDto({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.title,
    this.avatar,
    this.duration,
    this.type,
    this.status,
    this.totalMark,
    this.totalQuestion,
    this.schoolId,
    this.classLevel,
    this.subjectId,
    this.format,
    this.fileUrl,
    this.data,
    this.categoryId,
    this.isSystem,
    this.isAutoScoring,
    this.fileChoiceType,
    this.questions,
    this.assignExams,
    this.tagIds,
  });

  factory ExamSaveDto.fromJson(Map<String, dynamic> json) =>
      _$ExamSaveDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'title', includeIfNull: true)
  String? title;
  @JsonKey(name: 'avatar', includeIfNull: true)
  String? avatar;
  @JsonKey(name: 'duration', includeIfNull: true)
  int? duration;
  @JsonKey(
      name: 'type',
      includeIfNull: true,
      toJson: examTypeEnumToJson,
      fromJson: examTypeEnumFromJson)
  enums.ExamTypeEnum? type;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: examStatusEnumToJson,
      fromJson: examStatusEnumFromJson)
  enums.ExamStatusEnum? status;
  @JsonKey(name: 'totalMark', includeIfNull: true)
  double? totalMark;
  @JsonKey(name: 'totalQuestion', includeIfNull: true)
  int? totalQuestion;
  @JsonKey(name: 'schoolId', includeIfNull: true)
  int? schoolId;
  @JsonKey(name: 'classLevel', includeIfNull: true)
  int? classLevel;
  @JsonKey(name: 'subjectId', includeIfNull: true)
  int? subjectId;
  @JsonKey(
      name: 'format',
      includeIfNull: true,
      toJson: examFormatEnumToJson,
      fromJson: examFormatEnumFromJson)
  enums.ExamFormatEnum? format;
  @JsonKey(name: 'fileUrl', includeIfNull: true)
  String? fileUrl;
  @JsonKey(name: 'data', includeIfNull: true)
  ExamDataSaveDto? data;
  @JsonKey(name: 'categoryId', includeIfNull: true)
  int? categoryId;
  @JsonKey(name: 'isSystem', includeIfNull: true)
  bool? isSystem;
  @JsonKey(name: 'isAutoScoring', includeIfNull: true)
  bool? isAutoScoring;
  @JsonKey(
      name: 'fileChoiceType',
      includeIfNull: true,
      toJson: examFileChoiceTypeEnumToJson,
      fromJson: examFileChoiceTypeEnumFromJson)
  enums.ExamFileChoiceTypeEnum? fileChoiceType;
  @JsonKey(
      name: 'questions',
      includeIfNull: true,
      defaultValue: <ExamQuestionEntity>[])
  List<ExamQuestionEntity>? questions;
  @JsonKey(
      name: 'assignExams',
      includeIfNull: true,
      defaultValue: <AssignExamEntity>[])
  List<AssignExamEntity>? assignExams;
  @JsonKey(name: 'tagIds', includeIfNull: true, defaultValue: <int>[])
  List<int>? tagIds;
  static const fromJsonFactory = _$ExamSaveDtoFromJson;
  static const toJsonFactory = _$ExamSaveDtoToJson;
  Map<String, dynamic> toJson() => _$ExamSaveDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ExamSaveDtoApiResponse {
  ExamSaveDtoApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory ExamSaveDtoApiResponse.fromJson(Map<String, dynamic> json) =>
      _$ExamSaveDtoApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  ExamSaveDto? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$ExamSaveDtoApiResponseFromJson;
  static const toJsonFactory = _$ExamSaveDtoApiResponseToJson;
  Map<String, dynamic> toJson() => _$ExamSaveDtoApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class FacebookLoginDto {
  FacebookLoginDto({
    this.code,
    this.accessToken,
  });

  factory FacebookLoginDto.fromJson(Map<String, dynamic> json) =>
      _$FacebookLoginDtoFromJson(json);

  @JsonKey(name: 'code', includeIfNull: true)
  String? code;
  @JsonKey(name: 'accessToken', includeIfNull: true)
  String? accessToken;
  static const fromJsonFactory = _$FacebookLoginDtoFromJson;
  static const toJsonFactory = _$FacebookLoginDtoToJson;
  Map<String, dynamic> toJson() => _$FacebookLoginDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class FileEntity {
  FileEntity({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.name,
    this.path,
    this.contentType,
    this.width,
    this.height,
    this.size,
    this.extension,
    this.folderId,
    this.status,
    this.avatar,
    this.thumbnails,
    this.streamUrl,
    this.duration,
    this.fileType,
    this.objectType,
    this.parentId,
    this.metaDatas,
  });

  factory FileEntity.fromJson(Map<String, dynamic> json) =>
      _$FileEntityFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(name: 'path', includeIfNull: true)
  String? path;
  @JsonKey(name: 'contentType', includeIfNull: true)
  String? contentType;
  @JsonKey(name: 'width', includeIfNull: true)
  int? width;
  @JsonKey(name: 'height', includeIfNull: true)
  int? height;
  @JsonKey(name: 'size', includeIfNull: true)
  int? size;
  @JsonKey(name: 'extension', includeIfNull: true)
  String? extension;
  @JsonKey(name: 'folderId', includeIfNull: true)
  int? folderId;
  @JsonKey(name: 'status', includeIfNull: true)
  int? status;
  @JsonKey(name: 'avatar', includeIfNull: true)
  String? avatar;
  @JsonKey(name: 'thumbnails', includeIfNull: true)
  String? thumbnails;
  @JsonKey(name: 'streamUrl', includeIfNull: true)
  String? streamUrl;
  @JsonKey(name: 'duration', includeIfNull: true)
  double? duration;
  @JsonKey(name: 'fileType', includeIfNull: true)
  String? fileType;
  @JsonKey(name: 'objectType', includeIfNull: true)
  int? objectType;
  @JsonKey(name: 'parentId', includeIfNull: true)
  int? parentId;
  @JsonKey(
      name: 'metaDatas',
      includeIfNull: true,
      defaultValue: <FileMetaDataEntity>[])
  List<FileMetaDataEntity>? metaDatas;
  static const fromJsonFactory = _$FileEntityFromJson;
  static const toJsonFactory = _$FileEntityToJson;
  Map<String, dynamic> toJson() => _$FileEntityToJson(this);
}

@JsonSerializable(explicitToJson: true)
class FileEntityFilterResult {
  FileEntityFilterResult({
    this.totalRows,
    this.data,
  });

  factory FileEntityFilterResult.fromJson(Map<String, dynamic> json) =>
      _$FileEntityFilterResultFromJson(json);

  @JsonKey(name: 'totalRows', includeIfNull: true)
  int? totalRows;
  @JsonKey(name: 'data', includeIfNull: true, defaultValue: <FileEntity>[])
  List<FileEntity>? data;
  static const fromJsonFactory = _$FileEntityFilterResultFromJson;
  static const toJsonFactory = _$FileEntityFilterResultToJson;
  Map<String, dynamic> toJson() => _$FileEntityFilterResultToJson(this);
}

@JsonSerializable(explicitToJson: true)
class FileEntityFilterResultApiResponse {
  FileEntityFilterResultApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory FileEntityFilterResultApiResponse.fromJson(
          Map<String, dynamic> json) =>
      _$FileEntityFilterResultApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  FileEntityFilterResult? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$FileEntityFilterResultApiResponseFromJson;
  static const toJsonFactory = _$FileEntityFilterResultApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$FileEntityFilterResultApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class FileGetListQuery {
  FileGetListQuery({
    this.userId,
    this.keyword,
    this.folderId,
    this.extensions,
    this.isGetAll,
    this.status,
    this.sortBy,
    this.sortDirection,
    this.pageIndex,
    this.pageSize,
  });

  factory FileGetListQuery.fromJson(Map<String, dynamic> json) =>
      _$FileGetListQueryFromJson(json);

  @JsonKey(name: 'userId', includeIfNull: true)
  int? userId;
  @JsonKey(name: 'keyword', includeIfNull: true)
  String? keyword;
  @JsonKey(name: 'folderId', includeIfNull: true)
  int? folderId;
  @JsonKey(name: 'extensions', includeIfNull: true)
  String? extensions;
  @JsonKey(name: 'isGetAll', includeIfNull: true)
  bool? isGetAll;
  @JsonKey(name: 'status', includeIfNull: true)
  int? status;
  @JsonKey(name: 'sortBy', includeIfNull: true)
  String? sortBy;
  @JsonKey(name: 'sortDirection', includeIfNull: true)
  String? sortDirection;
  @JsonKey(name: 'pageIndex', includeIfNull: true)
  int? pageIndex;
  @JsonKey(name: 'pageSize', includeIfNull: true)
  int? pageSize;
  static const fromJsonFactory = _$FileGetListQueryFromJson;
  static const toJsonFactory = _$FileGetListQueryToJson;
  Map<String, dynamic> toJson() => _$FileGetListQueryToJson(this);
}

@JsonSerializable(explicitToJson: true)
class FileMetaDataEntity {
  FileMetaDataEntity({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.fileId,
    this.metaDirectory,
    this.metaKey,
    this.metaValue,
  });

  factory FileMetaDataEntity.fromJson(Map<String, dynamic> json) =>
      _$FileMetaDataEntityFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'fileId', includeIfNull: true)
  int? fileId;
  @JsonKey(name: 'metaDirectory', includeIfNull: true)
  String? metaDirectory;
  @JsonKey(name: 'metaKey', includeIfNull: true)
  String? metaKey;
  @JsonKey(name: 'metaValue', includeIfNull: true)
  String? metaValue;
  static const fromJsonFactory = _$FileMetaDataEntityFromJson;
  static const toJsonFactory = _$FileMetaDataEntityToJson;
  Map<String, dynamic> toJson() => _$FileMetaDataEntityToJson(this);
}

@JsonSerializable(explicitToJson: true)
class FileMetaDataEntityListApiResponse {
  FileMetaDataEntityListApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory FileMetaDataEntityListApiResponse.fromJson(
          Map<String, dynamic> json) =>
      _$FileMetaDataEntityListApiResponseFromJson(json);

  @JsonKey(
      name: 'data', includeIfNull: true, defaultValue: <FileMetaDataEntity>[])
  List<FileMetaDataEntity>? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$FileMetaDataEntityListApiResponseFromJson;
  static const toJsonFactory = _$FileMetaDataEntityListApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$FileMetaDataEntityListApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class FileUpdateAvatarCommand {
  FileUpdateAvatarCommand({
    this.id,
    this.avatar,
  });

  factory FileUpdateAvatarCommand.fromJson(Map<String, dynamic> json) =>
      _$FileUpdateAvatarCommandFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'avatar', includeIfNull: true)
  String? avatar;
  static const fromJsonFactory = _$FileUpdateAvatarCommandFromJson;
  static const toJsonFactory = _$FileUpdateAvatarCommandToJson;
  Map<String, dynamic> toJson() => _$FileUpdateAvatarCommandToJson(this);
}

@JsonSerializable(explicitToJson: true)
class FileUpdateCommand {
  FileUpdateCommand({
    this.file,
  });

  factory FileUpdateCommand.fromJson(Map<String, dynamic> json) =>
      _$FileUpdateCommandFromJson(json);

  @JsonKey(name: 'file', includeIfNull: true)
  FileEntity? file;
  static const fromJsonFactory = _$FileUpdateCommandFromJson;
  static const toJsonFactory = _$FileUpdateCommandToJson;
  Map<String, dynamic> toJson() => _$FileUpdateCommandToJson(this);
}

@JsonSerializable(explicitToJson: true)
class FileUpdateNameCommand {
  FileUpdateNameCommand({
    this.id,
    this.name,
  });

  factory FileUpdateNameCommand.fromJson(Map<String, dynamic> json) =>
      _$FileUpdateNameCommandFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  static const fromJsonFactory = _$FileUpdateNameCommandFromJson;
  static const toJsonFactory = _$FileUpdateNameCommandToJson;
  Map<String, dynamic> toJson() => _$FileUpdateNameCommandToJson(this);
}

@JsonSerializable(explicitToJson: true)
class FileUpdateStatusCommand {
  FileUpdateStatusCommand({
    this.id,
    this.status,
  });

  factory FileUpdateStatusCommand.fromJson(Map<String, dynamic> json) =>
      _$FileUpdateStatusCommandFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: fileStatusEnumToJson,
      fromJson: fileStatusEnumFromJson)
  enums.FileStatusEnum? status;
  static const fromJsonFactory = _$FileUpdateStatusCommandFromJson;
  static const toJsonFactory = _$FileUpdateStatusCommandToJson;
  Map<String, dynamic> toJson() => _$FileUpdateStatusCommandToJson(this);
}

@JsonSerializable(explicitToJson: true)
class FileUploadByUrlResponseDto {
  FileUploadByUrlResponseDto({
    this.path,
  });

  factory FileUploadByUrlResponseDto.fromJson(Map<String, dynamic> json) =>
      _$FileUploadByUrlResponseDtoFromJson(json);

  @JsonKey(name: 'path', includeIfNull: true)
  String? path;
  static const fromJsonFactory = _$FileUploadByUrlResponseDtoFromJson;
  static const toJsonFactory = _$FileUploadByUrlResponseDtoToJson;
  Map<String, dynamic> toJson() => _$FileUploadByUrlResponseDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class FileUploadByUrlResponseDtoApiResponse {
  FileUploadByUrlResponseDtoApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory FileUploadByUrlResponseDtoApiResponse.fromJson(
          Map<String, dynamic> json) =>
      _$FileUploadByUrlResponseDtoApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  FileUploadByUrlResponseDto? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory =
      _$FileUploadByUrlResponseDtoApiResponseFromJson;
  static const toJsonFactory = _$FileUploadByUrlResponseDtoApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$FileUploadByUrlResponseDtoApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class FolderDeleteCommand {
  FolderDeleteCommand({
    this.id,
    this.moveFileToFolderId,
  });

  factory FolderDeleteCommand.fromJson(Map<String, dynamic> json) =>
      _$FolderDeleteCommandFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'moveFileToFolderId', includeIfNull: true)
  int? moveFileToFolderId;
  static const fromJsonFactory = _$FolderDeleteCommandFromJson;
  static const toJsonFactory = _$FolderDeleteCommandToJson;
  Map<String, dynamic> toJson() => _$FolderDeleteCommandToJson(this);
}

@JsonSerializable(explicitToJson: true)
class FolderEntity {
  FolderEntity({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.name,
    this.parentId,
  });

  factory FolderEntity.fromJson(Map<String, dynamic> json) =>
      _$FolderEntityFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(name: 'parentId', includeIfNull: true)
  int? parentId;
  static const fromJsonFactory = _$FolderEntityFromJson;
  static const toJsonFactory = _$FolderEntityToJson;
  Map<String, dynamic> toJson() => _$FolderEntityToJson(this);
}

@JsonSerializable(explicitToJson: true)
class FolderEntityApiResponse {
  FolderEntityApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory FolderEntityApiResponse.fromJson(Map<String, dynamic> json) =>
      _$FolderEntityApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  FolderEntity? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$FolderEntityApiResponseFromJson;
  static const toJsonFactory = _$FolderEntityApiResponseToJson;
  Map<String, dynamic> toJson() => _$FolderEntityApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class FolderGetAllQuery {
  FolderGetAllQuery();

  factory FolderGetAllQuery.fromJson(Map<String, dynamic> json) =>
      _$FolderGetAllQueryFromJson(json);

  static const fromJsonFactory = _$FolderGetAllQueryFromJson;
  static const toJsonFactory = _$FolderGetAllQueryToJson;
  Map<String, dynamic> toJson() => _$FolderGetAllQueryToJson(this);
}

@JsonSerializable(explicitToJson: true)
class FolderGetListQuery {
  FolderGetListQuery({
    this.keyword,
    this.isGetAll,
  });

  factory FolderGetListQuery.fromJson(Map<String, dynamic> json) =>
      _$FolderGetListQueryFromJson(json);

  @JsonKey(name: 'keyword', includeIfNull: true)
  String? keyword;
  @JsonKey(name: 'isGetAll', includeIfNull: true)
  bool? isGetAll;
  static const fromJsonFactory = _$FolderGetListQueryFromJson;
  static const toJsonFactory = _$FolderGetListQueryToJson;
  Map<String, dynamic> toJson() => _$FolderGetListQueryToJson(this);
}

@JsonSerializable(explicitToJson: true)
class FolderNodeDataDto {
  FolderNodeDataDto({
    this.id,
    this.parentId,
    this.fileCount,
    this.createdBy,
  });

  factory FolderNodeDataDto.fromJson(Map<String, dynamic> json) =>
      _$FolderNodeDataDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'parentId', includeIfNull: true)
  int? parentId;
  @JsonKey(name: 'fileCount', includeIfNull: true)
  int? fileCount;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  static const fromJsonFactory = _$FolderNodeDataDtoFromJson;
  static const toJsonFactory = _$FolderNodeDataDtoToJson;
  Map<String, dynamic> toJson() => _$FolderNodeDataDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class FolderNodeDto {
  FolderNodeDto({
    this.id,
    this.text,
    this.data,
    this.children,
    this.state,
  });

  factory FolderNodeDto.fromJson(Map<String, dynamic> json) =>
      _$FolderNodeDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  String? id;
  @JsonKey(name: 'text', includeIfNull: true)
  String? text;
  @JsonKey(name: 'data', includeIfNull: true)
  FolderNodeDataDto? data;
  @JsonKey(
      name: 'children', includeIfNull: true, defaultValue: <FolderNodeDto>[])
  List<FolderNodeDto>? children;
  @JsonKey(name: 'state', includeIfNull: true)
  FolderNodeStateDto? state;
  static const fromJsonFactory = _$FolderNodeDtoFromJson;
  static const toJsonFactory = _$FolderNodeDtoToJson;
  Map<String, dynamic> toJson() => _$FolderNodeDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class FolderNodeDtoListApiResponse {
  FolderNodeDtoListApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory FolderNodeDtoListApiResponse.fromJson(Map<String, dynamic> json) =>
      _$FolderNodeDtoListApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true, defaultValue: <FolderNodeDto>[])
  List<FolderNodeDto>? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$FolderNodeDtoListApiResponseFromJson;
  static const toJsonFactory = _$FolderNodeDtoListApiResponseToJson;
  Map<String, dynamic> toJson() => _$FolderNodeDtoListApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class FolderNodeStateDto {
  FolderNodeStateDto({
    this.selected,
    this.opened,
    this.disabled,
  });

  factory FolderNodeStateDto.fromJson(Map<String, dynamic> json) =>
      _$FolderNodeStateDtoFromJson(json);

  @JsonKey(name: 'selected', includeIfNull: true)
  bool? selected;
  @JsonKey(name: 'opened', includeIfNull: true)
  bool? opened;
  @JsonKey(name: 'disabled', includeIfNull: true)
  bool? disabled;
  static const fromJsonFactory = _$FolderNodeStateDtoFromJson;
  static const toJsonFactory = _$FolderNodeStateDtoToJson;
  Map<String, dynamic> toJson() => _$FolderNodeStateDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class FolderUpdateCommand {
  FolderUpdateCommand({
    this.folder,
  });

  factory FolderUpdateCommand.fromJson(Map<String, dynamic> json) =>
      _$FolderUpdateCommandFromJson(json);

  @JsonKey(name: 'folder', includeIfNull: true)
  FolderUpdateDto? folder;
  static const fromJsonFactory = _$FolderUpdateCommandFromJson;
  static const toJsonFactory = _$FolderUpdateCommandToJson;
  Map<String, dynamic> toJson() => _$FolderUpdateCommandToJson(this);
}

@JsonSerializable(explicitToJson: true)
class FolderUpdateDto {
  FolderUpdateDto({
    this.id,
    this.name,
    this.parentId,
  });

  factory FolderUpdateDto.fromJson(Map<String, dynamic> json) =>
      _$FolderUpdateDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(name: 'parentId', includeIfNull: true)
  int? parentId;
  static const fromJsonFactory = _$FolderUpdateDtoFromJson;
  static const toJsonFactory = _$FolderUpdateDtoToJson;
  Map<String, dynamic> toJson() => _$FolderUpdateDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ForgotPasswordCheckOTPResource {
  ForgotPasswordCheckOTPResource({
    this.username,
    this.otp,
  });

  factory ForgotPasswordCheckOTPResource.fromJson(Map<String, dynamic> json) =>
      _$ForgotPasswordCheckOTPResourceFromJson(json);

  @JsonKey(name: 'username', includeIfNull: true)
  String? username;
  @JsonKey(name: 'otp', includeIfNull: true)
  String? otp;
  static const fromJsonFactory = _$ForgotPasswordCheckOTPResourceFromJson;
  static const toJsonFactory = _$ForgotPasswordCheckOTPResourceToJson;
  Map<String, dynamic> toJson() => _$ForgotPasswordCheckOTPResourceToJson(this);
}

@JsonSerializable(explicitToJson: true)
class GalleryEntity {
  GalleryEntity({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.name,
    this.description,
    this.media,
    this.categoryId,
    this.status,
    this.metaTitle,
    this.metaDescription,
    this.metaKeywords,
    this.slug,
  });

  factory GalleryEntity.fromJson(Map<String, dynamic> json) =>
      _$GalleryEntityFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(name: 'description', includeIfNull: true)
  String? description;
  @JsonKey(name: 'media', includeIfNull: true)
  String? media;
  @JsonKey(name: 'categoryId', includeIfNull: true)
  int? categoryId;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: commonStatusEnumToJson,
      fromJson: commonStatusEnumFromJson)
  enums.CommonStatusEnum? status;
  @JsonKey(name: 'metaTitle', includeIfNull: true)
  String? metaTitle;
  @JsonKey(name: 'metaDescription', includeIfNull: true)
  String? metaDescription;
  @JsonKey(name: 'metaKeywords', includeIfNull: true)
  String? metaKeywords;
  @JsonKey(name: 'slug', includeIfNull: true)
  String? slug;
  static const fromJsonFactory = _$GalleryEntityFromJson;
  static const toJsonFactory = _$GalleryEntityToJson;
  Map<String, dynamic> toJson() => _$GalleryEntityToJson(this);
}

@JsonSerializable(explicitToJson: true)
class GalleryEntityApiResponse {
  GalleryEntityApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory GalleryEntityApiResponse.fromJson(Map<String, dynamic> json) =>
      _$GalleryEntityApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  GalleryEntity? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$GalleryEntityApiResponseFromJson;
  static const toJsonFactory = _$GalleryEntityApiResponseToJson;
  Map<String, dynamic> toJson() => _$GalleryEntityApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class GalleryGetListQuery {
  GalleryGetListQuery({
    this.sortExpression,
    this.pageSize,
    this.pageIndex,
    this.skip,
    this.notSkip,
    this.propertyIncludes,
    this.keyword,
    this.categoryId,
    this.categoryUrl,
    this.status,
  });

  factory GalleryGetListQuery.fromJson(Map<String, dynamic> json) =>
      _$GalleryGetListQueryFromJson(json);

  @JsonKey(name: 'sortExpression', includeIfNull: true)
  String? sortExpression;
  @JsonKey(name: 'pageSize', includeIfNull: true)
  int? pageSize;
  @JsonKey(name: 'pageIndex', includeIfNull: true)
  int? pageIndex;
  @JsonKey(name: 'skip', includeIfNull: true)
  int? skip;
  @JsonKey(name: 'notSkip', includeIfNull: true)
  int? notSkip;
  @JsonKey(
      name: 'propertyIncludes', includeIfNull: true, defaultValue: <String>[])
  List<String>? propertyIncludes;
  @JsonKey(name: 'keyword', includeIfNull: true)
  String? keyword;
  @JsonKey(name: 'categoryId', includeIfNull: true)
  int? categoryId;
  @JsonKey(name: 'categoryUrl', includeIfNull: true)
  String? categoryUrl;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: commonStatusEnumToJson,
      fromJson: commonStatusEnumFromJson)
  enums.CommonStatusEnum? status;
  static const fromJsonFactory = _$GalleryGetListQueryFromJson;
  static const toJsonFactory = _$GalleryGetListQueryToJson;
  Map<String, dynamic> toJson() => _$GalleryGetListQueryToJson(this);
}

@JsonSerializable(explicitToJson: true)
class GalleryListDto {
  GalleryListDto({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.name,
    this.description,
    this.media,
    this.categoryId,
    this.status,
    this.metaTitle,
    this.metaDescription,
    this.metaKeywords,
    this.slug,
    this.tagIds,
  });

  factory GalleryListDto.fromJson(Map<String, dynamic> json) =>
      _$GalleryListDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(name: 'description', includeIfNull: true)
  String? description;
  @JsonKey(name: 'media', includeIfNull: true)
  String? media;
  @JsonKey(name: 'categoryId', includeIfNull: true)
  int? categoryId;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: commonStatusEnumToJson,
      fromJson: commonStatusEnumFromJson)
  enums.CommonStatusEnum? status;
  @JsonKey(name: 'metaTitle', includeIfNull: true)
  String? metaTitle;
  @JsonKey(name: 'metaDescription', includeIfNull: true)
  String? metaDescription;
  @JsonKey(name: 'metaKeywords', includeIfNull: true)
  String? metaKeywords;
  @JsonKey(name: 'slug', includeIfNull: true)
  String? slug;
  @JsonKey(name: 'tagIds', includeIfNull: true, defaultValue: <int>[])
  List<int>? tagIds;
  static const fromJsonFactory = _$GalleryListDtoFromJson;
  static const toJsonFactory = _$GalleryListDtoToJson;
  Map<String, dynamic> toJson() => _$GalleryListDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class GalleryListDtoFilterResult {
  GalleryListDtoFilterResult({
    this.totalRows,
    this.data,
  });

  factory GalleryListDtoFilterResult.fromJson(Map<String, dynamic> json) =>
      _$GalleryListDtoFilterResultFromJson(json);

  @JsonKey(name: 'totalRows', includeIfNull: true)
  int? totalRows;
  @JsonKey(name: 'data', includeIfNull: true, defaultValue: <GalleryListDto>[])
  List<GalleryListDto>? data;
  static const fromJsonFactory = _$GalleryListDtoFilterResultFromJson;
  static const toJsonFactory = _$GalleryListDtoFilterResultToJson;
  Map<String, dynamic> toJson() => _$GalleryListDtoFilterResultToJson(this);
}

@JsonSerializable(explicitToJson: true)
class GalleryListDtoFilterResultApiResponse {
  GalleryListDtoFilterResultApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory GalleryListDtoFilterResultApiResponse.fromJson(
          Map<String, dynamic> json) =>
      _$GalleryListDtoFilterResultApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  GalleryListDtoFilterResult? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory =
      _$GalleryListDtoFilterResultApiResponseFromJson;
  static const toJsonFactory = _$GalleryListDtoFilterResultApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$GalleryListDtoFilterResultApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class GallerySaveDto {
  GallerySaveDto({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.name,
    this.description,
    this.media,
    this.categoryId,
    this.status,
    this.metaTitle,
    this.metaDescription,
    this.metaKeywords,
    this.slug,
    this.tagIds,
  });

  factory GallerySaveDto.fromJson(Map<String, dynamic> json) =>
      _$GallerySaveDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(name: 'description', includeIfNull: true)
  String? description;
  @JsonKey(name: 'media', includeIfNull: true)
  String? media;
  @JsonKey(name: 'categoryId', includeIfNull: true)
  int? categoryId;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: commonStatusEnumToJson,
      fromJson: commonStatusEnumFromJson)
  enums.CommonStatusEnum? status;
  @JsonKey(name: 'metaTitle', includeIfNull: true)
  String? metaTitle;
  @JsonKey(name: 'metaDescription', includeIfNull: true)
  String? metaDescription;
  @JsonKey(name: 'metaKeywords', includeIfNull: true)
  String? metaKeywords;
  @JsonKey(name: 'slug', includeIfNull: true)
  String? slug;
  @JsonKey(name: 'tagIds', includeIfNull: true, defaultValue: <int>[])
  List<int>? tagIds;
  static const fromJsonFactory = _$GallerySaveDtoFromJson;
  static const toJsonFactory = _$GallerySaveDtoToJson;
  Map<String, dynamic> toJson() => _$GallerySaveDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class GallerySaveDtoApiResponse {
  GallerySaveDtoApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory GallerySaveDtoApiResponse.fromJson(Map<String, dynamic> json) =>
      _$GallerySaveDtoApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  GallerySaveDto? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$GallerySaveDtoApiResponseFromJson;
  static const toJsonFactory = _$GallerySaveDtoApiResponseToJson;
  Map<String, dynamic> toJson() => _$GallerySaveDtoApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class GetListLogQuery {
  GetListLogQuery({
    this.keyword,
    this.objectType,
    this.pageIndex,
    this.pageSize,
  });

  factory GetListLogQuery.fromJson(Map<String, dynamic> json) =>
      _$GetListLogQueryFromJson(json);

  @JsonKey(name: 'keyword', includeIfNull: true)
  String? keyword;
  @JsonKey(name: 'objectType', includeIfNull: true)
  String? objectType;
  @JsonKey(name: 'pageIndex', includeIfNull: true)
  int? pageIndex;
  @JsonKey(name: 'pageSize', includeIfNull: true)
  int? pageSize;
  static const fromJsonFactory = _$GetListLogQueryFromJson;
  static const toJsonFactory = _$GetListLogQueryToJson;
  Map<String, dynamic> toJson() => _$GetListLogQueryToJson(this);
}

@JsonSerializable(explicitToJson: true)
class GetListUserForCreateChatGroupQuery {
  GetListUserForCreateChatGroupQuery({
    this.sortExpression,
    this.pageSize,
    this.pageIndex,
    this.skip,
    this.notSkip,
    this.propertyIncludes,
    this.status,
    this.chatGroupType,
    this.keyword,
    this.roleIds,
    this.type,
    this.objectId,
  });

  factory GetListUserForCreateChatGroupQuery.fromJson(
          Map<String, dynamic> json) =>
      _$GetListUserForCreateChatGroupQueryFromJson(json);

  @JsonKey(name: 'sortExpression', includeIfNull: true)
  String? sortExpression;
  @JsonKey(name: 'pageSize', includeIfNull: true)
  int? pageSize;
  @JsonKey(name: 'pageIndex', includeIfNull: true)
  int? pageIndex;
  @JsonKey(name: 'skip', includeIfNull: true)
  int? skip;
  @JsonKey(name: 'notSkip', includeIfNull: true)
  int? notSkip;
  @JsonKey(
      name: 'propertyIncludes', includeIfNull: true, defaultValue: <String>[])
  List<String>? propertyIncludes;
  @JsonKey(name: 'status', includeIfNull: true)
  int? status;
  @JsonKey(name: 'chatGroupType', includeIfNull: true)
  int? chatGroupType;
  @JsonKey(name: 'keyword', includeIfNull: true)
  String? keyword;
  @JsonKey(name: 'roleIds', includeIfNull: true, defaultValue: <int>[])
  List<int>? roleIds;
  @JsonKey(
      name: 'type',
      includeIfNull: true,
      toJson: userTypeEnumToJson,
      fromJson: userTypeEnumFromJson)
  enums.UserTypeEnum? type;
  @JsonKey(name: 'objectId', includeIfNull: true)
  int? objectId;
  static const fromJsonFactory = _$GetListUserForCreateChatGroupQueryFromJson;
  static const toJsonFactory = _$GetListUserForCreateChatGroupQueryToJson;
  Map<String, dynamic> toJson() =>
      _$GetListUserForCreateChatGroupQueryToJson(this);
}

@JsonSerializable(explicitToJson: true)
class GoogleLoginDto {
  GoogleLoginDto({
    this.code,
    this.accessToken,
  });

  factory GoogleLoginDto.fromJson(Map<String, dynamic> json) =>
      _$GoogleLoginDtoFromJson(json);

  @JsonKey(name: 'code', includeIfNull: true)
  String? code;
  @JsonKey(name: 'accessToken', includeIfNull: true)
  String? accessToken;
  static const fromJsonFactory = _$GoogleLoginDtoFromJson;
  static const toJsonFactory = _$GoogleLoginDtoToJson;
  Map<String, dynamic> toJson() => _$GoogleLoginDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class Int64ApiResponse {
  Int64ApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory Int64ApiResponse.fromJson(Map<String, dynamic> json) =>
      _$Int64ApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  int? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$Int64ApiResponseFromJson;
  static const toJsonFactory = _$Int64ApiResponseToJson;
  Map<String, dynamic> toJson() => _$Int64ApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ListActivityLogDto {
  ListActivityLogDto({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.title,
    this.data,
    this.objectType,
    this.ip,
    this.createdName,
    this.createdAvatar,
  });

  factory ListActivityLogDto.fromJson(Map<String, dynamic> json) =>
      _$ListActivityLogDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'title', includeIfNull: true)
  String? title;
  @JsonKey(name: 'data', includeIfNull: true)
  String? data;
  @JsonKey(name: 'objectType', includeIfNull: true)
  String? objectType;
  @JsonKey(name: 'ip', includeIfNull: true)
  String? ip;
  @JsonKey(name: 'createdName', includeIfNull: true)
  String? createdName;
  @JsonKey(name: 'createdAvatar', includeIfNull: true)
  String? createdAvatar;
  static const fromJsonFactory = _$ListActivityLogDtoFromJson;
  static const toJsonFactory = _$ListActivityLogDtoToJson;
  Map<String, dynamic> toJson() => _$ListActivityLogDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ListActivityLogDtoFilterResult {
  ListActivityLogDtoFilterResult({
    this.totalRows,
    this.data,
  });

  factory ListActivityLogDtoFilterResult.fromJson(Map<String, dynamic> json) =>
      _$ListActivityLogDtoFilterResultFromJson(json);

  @JsonKey(name: 'totalRows', includeIfNull: true)
  int? totalRows;
  @JsonKey(
      name: 'data', includeIfNull: true, defaultValue: <ListActivityLogDto>[])
  List<ListActivityLogDto>? data;
  static const fromJsonFactory = _$ListActivityLogDtoFilterResultFromJson;
  static const toJsonFactory = _$ListActivityLogDtoFilterResultToJson;
  Map<String, dynamic> toJson() => _$ListActivityLogDtoFilterResultToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ListActivityLogDtoFilterResultApiResponse {
  ListActivityLogDtoFilterResultApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory ListActivityLogDtoFilterResultApiResponse.fromJson(
          Map<String, dynamic> json) =>
      _$ListActivityLogDtoFilterResultApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  ListActivityLogDtoFilterResult? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory =
      _$ListActivityLogDtoFilterResultApiResponseFromJson;
  static const toJsonFactory =
      _$ListActivityLogDtoFilterResultApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$ListActivityLogDtoFilterResultApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ListChatGroupDto {
  ListChatGroupDto({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.name,
    this.avatar,
    this.status,
    this.type,
    this.documentId,
    this.lastMessage,
    this.lastMessageDate,
    this.isOnline,
    this.lastMessageType,
    this.friendId,
    this.lastMessageId,
    this.lastMessageIsRead,
  });

  factory ListChatGroupDto.fromJson(Map<String, dynamic> json) =>
      _$ListChatGroupDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(name: 'avatar', includeIfNull: true)
  String? avatar;
  @JsonKey(name: 'status', includeIfNull: true)
  int? status;
  @JsonKey(name: 'type', includeIfNull: true)
  int? type;
  @JsonKey(name: 'documentId', includeIfNull: true)
  int? documentId;
  @JsonKey(name: 'lastMessage', includeIfNull: true)
  String? lastMessage;
  @JsonKey(name: 'lastMessageDate', includeIfNull: true)
  DateTime? lastMessageDate;
  @JsonKey(name: 'isOnline', includeIfNull: true)
  bool? isOnline;
  @JsonKey(name: 'lastMessageType', includeIfNull: true)
  int? lastMessageType;
  @JsonKey(name: 'friendId', includeIfNull: true)
  int? friendId;
  @JsonKey(name: 'lastMessageId', includeIfNull: true)
  int? lastMessageId;
  @JsonKey(name: 'lastMessageIsRead', includeIfNull: true)
  bool? lastMessageIsRead;
  static const fromJsonFactory = _$ListChatGroupDtoFromJson;
  static const toJsonFactory = _$ListChatGroupDtoToJson;
  Map<String, dynamic> toJson() => _$ListChatGroupDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ListChatGroupDtoFilterResult {
  ListChatGroupDtoFilterResult({
    this.totalRows,
    this.data,
  });

  factory ListChatGroupDtoFilterResult.fromJson(Map<String, dynamic> json) =>
      _$ListChatGroupDtoFilterResultFromJson(json);

  @JsonKey(name: 'totalRows', includeIfNull: true)
  int? totalRows;
  @JsonKey(
      name: 'data', includeIfNull: true, defaultValue: <ListChatGroupDto>[])
  List<ListChatGroupDto>? data;
  static const fromJsonFactory = _$ListChatGroupDtoFilterResultFromJson;
  static const toJsonFactory = _$ListChatGroupDtoFilterResultToJson;
  Map<String, dynamic> toJson() => _$ListChatGroupDtoFilterResultToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ListChatGroupDtoFilterResultApiResponse {
  ListChatGroupDtoFilterResultApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory ListChatGroupDtoFilterResultApiResponse.fromJson(
          Map<String, dynamic> json) =>
      _$ListChatGroupDtoFilterResultApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  ListChatGroupDtoFilterResult? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory =
      _$ListChatGroupDtoFilterResultApiResponseFromJson;
  static const toJsonFactory = _$ListChatGroupDtoFilterResultApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$ListChatGroupDtoFilterResultApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ListChatMessageByGroupDto {
  ListChatMessageByGroupDto({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.senderId,
    this.chatGroupId,
    this.content,
    this.type,
    this.senderName,
    this.senderAvatar,
    this.chatGroupName,
    this.chatGroupAvatar,
    this.listFilePath,
    this.isOnline,
    this.chatGroupType,
    this.isRead,
  });

  factory ListChatMessageByGroupDto.fromJson(Map<String, dynamic> json) =>
      _$ListChatMessageByGroupDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'senderId', includeIfNull: true)
  int? senderId;
  @JsonKey(name: 'chatGroupId', includeIfNull: true)
  int? chatGroupId;
  @JsonKey(name: 'content', includeIfNull: true)
  String? content;
  @JsonKey(name: 'type', includeIfNull: true)
  int? type;
  @JsonKey(name: 'senderName', includeIfNull: true)
  String? senderName;
  @JsonKey(name: 'senderAvatar', includeIfNull: true)
  String? senderAvatar;
  @JsonKey(name: 'chatGroupName', includeIfNull: true)
  String? chatGroupName;
  @JsonKey(name: 'chatGroupAvatar', includeIfNull: true)
  String? chatGroupAvatar;
  @JsonKey(name: 'listFilePath', includeIfNull: true, defaultValue: <String>[])
  List<String>? listFilePath;
  @JsonKey(name: 'isOnline', includeIfNull: true)
  bool? isOnline;
  @JsonKey(name: 'chatGroupType', includeIfNull: true)
  int? chatGroupType;
  @JsonKey(name: 'isRead', includeIfNull: true)
  bool? isRead;
  static const fromJsonFactory = _$ListChatMessageByGroupDtoFromJson;
  static const toJsonFactory = _$ListChatMessageByGroupDtoToJson;
  Map<String, dynamic> toJson() => _$ListChatMessageByGroupDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ListChatMessageByGroupDtoFilterResult {
  ListChatMessageByGroupDtoFilterResult({
    this.totalRows,
    this.data,
  });

  factory ListChatMessageByGroupDtoFilterResult.fromJson(
          Map<String, dynamic> json) =>
      _$ListChatMessageByGroupDtoFilterResultFromJson(json);

  @JsonKey(name: 'totalRows', includeIfNull: true)
  int? totalRows;
  @JsonKey(
      name: 'data',
      includeIfNull: true,
      defaultValue: <ListChatMessageByGroupDto>[])
  List<ListChatMessageByGroupDto>? data;
  static const fromJsonFactory =
      _$ListChatMessageByGroupDtoFilterResultFromJson;
  static const toJsonFactory = _$ListChatMessageByGroupDtoFilterResultToJson;
  Map<String, dynamic> toJson() =>
      _$ListChatMessageByGroupDtoFilterResultToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ListChatMessageByGroupDtoFilterResultApiResponse {
  ListChatMessageByGroupDtoFilterResultApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory ListChatMessageByGroupDtoFilterResultApiResponse.fromJson(
          Map<String, dynamic> json) =>
      _$ListChatMessageByGroupDtoFilterResultApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  ListChatMessageByGroupDtoFilterResult? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory =
      _$ListChatMessageByGroupDtoFilterResultApiResponseFromJson;
  static const toJsonFactory =
      _$ListChatMessageByGroupDtoFilterResultApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$ListChatMessageByGroupDtoFilterResultApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class LocalityEntity {
  LocalityEntity({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.code,
    this.name,
    this.fullName,
    this.otherName,
    this.url,
    this.unitType,
    this.parentId,
    this.priority,
    this.type,
    this.status,
  });

  factory LocalityEntity.fromJson(Map<String, dynamic> json) =>
      _$LocalityEntityFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'code', includeIfNull: true)
  String? code;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(name: 'fullName', includeIfNull: true)
  String? fullName;
  @JsonKey(name: 'otherName', includeIfNull: true)
  String? otherName;
  @JsonKey(name: 'url', includeIfNull: true)
  String? url;
  @JsonKey(name: 'unitType', includeIfNull: true)
  String? unitType;
  @JsonKey(name: 'parentId', includeIfNull: true)
  int? parentId;
  @JsonKey(name: 'priority', includeIfNull: true)
  int? priority;
  @JsonKey(
      name: 'type',
      includeIfNull: true,
      toJson: localityTypeEnumToJson,
      fromJson: localityTypeEnumFromJson)
  enums.LocalityTypeEnum? type;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: localityStatusEnumToJson,
      fromJson: localityStatusEnumFromJson)
  enums.LocalityStatusEnum? status;
  static const fromJsonFactory = _$LocalityEntityFromJson;
  static const toJsonFactory = _$LocalityEntityToJson;
  Map<String, dynamic> toJson() => _$LocalityEntityToJson(this);
}

@JsonSerializable(explicitToJson: true)
class LocalityEntityFilterResult {
  LocalityEntityFilterResult({
    this.totalRows,
    this.data,
  });

  factory LocalityEntityFilterResult.fromJson(Map<String, dynamic> json) =>
      _$LocalityEntityFilterResultFromJson(json);

  @JsonKey(name: 'totalRows', includeIfNull: true)
  int? totalRows;
  @JsonKey(name: 'data', includeIfNull: true, defaultValue: <LocalityEntity>[])
  List<LocalityEntity>? data;
  static const fromJsonFactory = _$LocalityEntityFilterResultFromJson;
  static const toJsonFactory = _$LocalityEntityFilterResultToJson;
  Map<String, dynamic> toJson() => _$LocalityEntityFilterResultToJson(this);
}

@JsonSerializable(explicitToJson: true)
class LocalityEntityFilterResultApiResponse {
  LocalityEntityFilterResultApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory LocalityEntityFilterResultApiResponse.fromJson(
          Map<String, dynamic> json) =>
      _$LocalityEntityFilterResultApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  LocalityEntityFilterResult? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory =
      _$LocalityEntityFilterResultApiResponseFromJson;
  static const toJsonFactory = _$LocalityEntityFilterResultApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$LocalityEntityFilterResultApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class LocalityEntityListApiResponse {
  LocalityEntityListApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory LocalityEntityListApiResponse.fromJson(Map<String, dynamic> json) =>
      _$LocalityEntityListApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true, defaultValue: <LocalityEntity>[])
  List<LocalityEntity>? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$LocalityEntityListApiResponseFromJson;
  static const toJsonFactory = _$LocalityEntityListApiResponseToJson;
  Map<String, dynamic> toJson() => _$LocalityEntityListApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class LocalityGetListQuery {
  LocalityGetListQuery({
    this.sortExpression,
    this.pageSize,
    this.pageIndex,
    this.skip,
    this.notSkip,
    this.propertyIncludes,
    this.keyword,
    this.type,
    this.parentId,
  });

  factory LocalityGetListQuery.fromJson(Map<String, dynamic> json) =>
      _$LocalityGetListQueryFromJson(json);

  @JsonKey(name: 'sortExpression', includeIfNull: true)
  String? sortExpression;
  @JsonKey(name: 'pageSize', includeIfNull: true)
  int? pageSize;
  @JsonKey(name: 'pageIndex', includeIfNull: true)
  int? pageIndex;
  @JsonKey(name: 'skip', includeIfNull: true)
  int? skip;
  @JsonKey(name: 'notSkip', includeIfNull: true)
  int? notSkip;
  @JsonKey(
      name: 'propertyIncludes', includeIfNull: true, defaultValue: <String>[])
  List<String>? propertyIncludes;
  @JsonKey(name: 'keyword', includeIfNull: true)
  String? keyword;
  @JsonKey(
      name: 'type',
      includeIfNull: true,
      toJson: localityTypeEnumToJson,
      fromJson: localityTypeEnumFromJson)
  enums.LocalityTypeEnum? type;
  @JsonKey(name: 'parentId', includeIfNull: true)
  int? parentId;
  static const fromJsonFactory = _$LocalityGetListQueryFromJson;
  static const toJsonFactory = _$LocalityGetListQueryToJson;
  Map<String, dynamic> toJson() => _$LocalityGetListQueryToJson(this);
}

@JsonSerializable(explicitToJson: true)
class LoginDto {
  LoginDto({
    this.userName,
    this.password,
    this.rememberMe,
    this.captchaText,
    this.captchaToken,
    this.captchaInputText,
  });

  factory LoginDto.fromJson(Map<String, dynamic> json) =>
      _$LoginDtoFromJson(json);

  @JsonKey(name: 'userName', includeIfNull: true)
  String? userName;
  @JsonKey(name: 'password', includeIfNull: true)
  String? password;
  @JsonKey(name: 'rememberMe', includeIfNull: true)
  bool? rememberMe;
  @JsonKey(name: 'captchaText', includeIfNull: true)
  String? captchaText;
  @JsonKey(name: 'captchaToken', includeIfNull: true)
  String? captchaToken;
  @JsonKey(name: 'captchaInputText', includeIfNull: true)
  String? captchaInputText;
  static const fromJsonFactory = _$LoginDtoFromJson;
  static const toJsonFactory = _$LoginDtoToJson;
  Map<String, dynamic> toJson() => _$LoginDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class LoginResponseDto {
  LoginResponseDto({
    this.require2Fa,
    this.token,
    this.refreshToken,
    this.userInfo,
  });

  factory LoginResponseDto.fromJson(Map<String, dynamic> json) =>
      _$LoginResponseDtoFromJson(json);

  @JsonKey(name: 'require2Fa', includeIfNull: true)
  bool? require2Fa;
  @JsonKey(name: 'token', includeIfNull: true)
  String? token;
  @JsonKey(name: 'refreshToken', includeIfNull: true)
  String? refreshToken;
  @JsonKey(name: 'userInfo', includeIfNull: true)
  UserInfoDto? userInfo;
  static const fromJsonFactory = _$LoginResponseDtoFromJson;
  static const toJsonFactory = _$LoginResponseDtoToJson;
  Map<String, dynamic> toJson() => _$LoginResponseDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class LoginResponseDtoApiResponse {
  LoginResponseDtoApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory LoginResponseDtoApiResponse.fromJson(Map<String, dynamic> json) =>
      _$LoginResponseDtoApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  LoginResponseDto? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$LoginResponseDtoApiResponseFromJson;
  static const toJsonFactory = _$LoginResponseDtoApiResponseToJson;
  Map<String, dynamic> toJson() => _$LoginResponseDtoApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class LoginWith2FADto {
  LoginWith2FADto({
    this.userName,
    this.code,
  });

  factory LoginWith2FADto.fromJson(Map<String, dynamic> json) =>
      _$LoginWith2FADtoFromJson(json);

  @JsonKey(name: 'userName', includeIfNull: true)
  String? userName;
  @JsonKey(name: 'code', includeIfNull: true)
  String? code;
  static const fromJsonFactory = _$LoginWith2FADtoFromJson;
  static const toJsonFactory = _$LoginWith2FADtoToJson;
  Map<String, dynamic> toJson() => _$LoginWith2FADtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class NewsDetailDto {
  NewsDetailDto({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.title,
    this.summary,
    this.content,
    this.image,
    this.author,
    this.publishedDate,
    this.viewCount,
    this.status,
    this.metaTitle,
    this.metaDescription,
    this.metaKeywords,
    this.slug,
    this.categoryId,
    this.isFeatured,
    this.relatedNewsIds,
    this.tagIds,
    this.tags,
    this.relatedNews,
    this.category,
  });

  factory NewsDetailDto.fromJson(Map<String, dynamic> json) =>
      _$NewsDetailDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'title', includeIfNull: true)
  String? title;
  @JsonKey(name: 'summary', includeIfNull: true)
  String? summary;
  @JsonKey(name: 'content', includeIfNull: true)
  String? content;
  @JsonKey(name: 'image', includeIfNull: true)
  String? image;
  @JsonKey(name: 'author', includeIfNull: true)
  String? author;
  @JsonKey(name: 'publishedDate', includeIfNull: true)
  DateTime? publishedDate;
  @JsonKey(name: 'viewCount', includeIfNull: true)
  int? viewCount;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: commonStatusEnumToJson,
      fromJson: commonStatusEnumFromJson)
  enums.CommonStatusEnum? status;
  @JsonKey(name: 'metaTitle', includeIfNull: true)
  String? metaTitle;
  @JsonKey(name: 'metaDescription', includeIfNull: true)
  String? metaDescription;
  @JsonKey(name: 'metaKeywords', includeIfNull: true)
  String? metaKeywords;
  @JsonKey(name: 'slug', includeIfNull: true)
  String? slug;
  @JsonKey(name: 'categoryId', includeIfNull: true)
  int? categoryId;
  @JsonKey(name: 'isFeatured', includeIfNull: true)
  bool? isFeatured;
  @JsonKey(name: 'relatedNewsIds', includeIfNull: true, defaultValue: <int>[])
  List<int>? relatedNewsIds;
  @JsonKey(name: 'tagIds', includeIfNull: true, defaultValue: <int>[])
  List<int>? tagIds;
  @JsonKey(name: 'tags', includeIfNull: true, defaultValue: <TagDto>[])
  List<TagDto>? tags;
  @JsonKey(
      name: 'relatedNews', includeIfNull: true, defaultValue: <NewsListDto>[])
  List<NewsListDto>? relatedNews;
  @JsonKey(name: 'category', includeIfNull: true)
  dynamic category;
  static const fromJsonFactory = _$NewsDetailDtoFromJson;
  static const toJsonFactory = _$NewsDetailDtoToJson;
  Map<String, dynamic> toJson() => _$NewsDetailDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class NewsDetailDtoApiResponse {
  NewsDetailDtoApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory NewsDetailDtoApiResponse.fromJson(Map<String, dynamic> json) =>
      _$NewsDetailDtoApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  NewsDetailDto? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$NewsDetailDtoApiResponseFromJson;
  static const toJsonFactory = _$NewsDetailDtoApiResponseToJson;
  Map<String, dynamic> toJson() => _$NewsDetailDtoApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class NewsEntity {
  NewsEntity({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.title,
    this.summary,
    this.content,
    this.image,
    this.author,
    this.publishedDate,
    this.viewCount,
    this.status,
    this.metaTitle,
    this.metaDescription,
    this.metaKeywords,
    this.slug,
    this.categoryId,
    this.isFeatured,
    this.relatedNewsIds,
  });

  factory NewsEntity.fromJson(Map<String, dynamic> json) =>
      _$NewsEntityFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'title', includeIfNull: true)
  String? title;
  @JsonKey(name: 'summary', includeIfNull: true)
  String? summary;
  @JsonKey(name: 'content', includeIfNull: true)
  String? content;
  @JsonKey(name: 'image', includeIfNull: true)
  String? image;
  @JsonKey(name: 'author', includeIfNull: true)
  String? author;
  @JsonKey(name: 'publishedDate', includeIfNull: true)
  DateTime? publishedDate;
  @JsonKey(name: 'viewCount', includeIfNull: true)
  int? viewCount;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: commonStatusEnumToJson,
      fromJson: commonStatusEnumFromJson)
  enums.CommonStatusEnum? status;
  @JsonKey(name: 'metaTitle', includeIfNull: true)
  String? metaTitle;
  @JsonKey(name: 'metaDescription', includeIfNull: true)
  String? metaDescription;
  @JsonKey(name: 'metaKeywords', includeIfNull: true)
  String? metaKeywords;
  @JsonKey(name: 'slug', includeIfNull: true)
  String? slug;
  @JsonKey(name: 'categoryId', includeIfNull: true)
  int? categoryId;
  @JsonKey(name: 'isFeatured', includeIfNull: true)
  bool? isFeatured;
  @JsonKey(name: 'relatedNewsIds', includeIfNull: true)
  String? relatedNewsIds;
  static const fromJsonFactory = _$NewsEntityFromJson;
  static const toJsonFactory = _$NewsEntityToJson;
  Map<String, dynamic> toJson() => _$NewsEntityToJson(this);
}

@JsonSerializable(explicitToJson: true)
class NewsEntityApiResponse {
  NewsEntityApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory NewsEntityApiResponse.fromJson(Map<String, dynamic> json) =>
      _$NewsEntityApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  NewsEntity? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$NewsEntityApiResponseFromJson;
  static const toJsonFactory = _$NewsEntityApiResponseToJson;
  Map<String, dynamic> toJson() => _$NewsEntityApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class NewsGetListQuery {
  NewsGetListQuery({
    this.sortExpression,
    this.pageSize,
    this.pageIndex,
    this.skip,
    this.notSkip,
    this.propertyIncludes,
    this.keyword,
    this.categoryId,
    this.categoryUrl,
    this.tagId,
    this.status,
    this.isFeatured,
    this.excludeIds,
    this.includeIds,
  });

  factory NewsGetListQuery.fromJson(Map<String, dynamic> json) =>
      _$NewsGetListQueryFromJson(json);

  @JsonKey(name: 'sortExpression', includeIfNull: true)
  String? sortExpression;
  @JsonKey(name: 'pageSize', includeIfNull: true)
  int? pageSize;
  @JsonKey(name: 'pageIndex', includeIfNull: true)
  int? pageIndex;
  @JsonKey(name: 'skip', includeIfNull: true)
  int? skip;
  @JsonKey(name: 'notSkip', includeIfNull: true)
  int? notSkip;
  @JsonKey(
      name: 'propertyIncludes', includeIfNull: true, defaultValue: <String>[])
  List<String>? propertyIncludes;
  @JsonKey(name: 'keyword', includeIfNull: true)
  String? keyword;
  @JsonKey(name: 'categoryId', includeIfNull: true)
  int? categoryId;
  @JsonKey(name: 'categoryUrl', includeIfNull: true)
  String? categoryUrl;
  @JsonKey(name: 'tagId', includeIfNull: true)
  int? tagId;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: commonStatusEnumToJson,
      fromJson: commonStatusEnumFromJson)
  enums.CommonStatusEnum? status;
  @JsonKey(name: 'isFeatured', includeIfNull: true)
  bool? isFeatured;
  @JsonKey(name: 'excludeIds', includeIfNull: true, defaultValue: <int>[])
  List<int>? excludeIds;
  @JsonKey(name: 'includeIds', includeIfNull: true, defaultValue: <int>[])
  List<int>? includeIds;
  static const fromJsonFactory = _$NewsGetListQueryFromJson;
  static const toJsonFactory = _$NewsGetListQueryToJson;
  Map<String, dynamic> toJson() => _$NewsGetListQueryToJson(this);
}

@JsonSerializable(explicitToJson: true)
class NewsListDto {
  NewsListDto({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.title,
    this.summary,
    this.content,
    this.image,
    this.author,
    this.publishedDate,
    this.viewCount,
    this.status,
    this.metaTitle,
    this.metaDescription,
    this.metaKeywords,
    this.slug,
    this.categoryId,
    this.isFeatured,
    this.relatedNewsIds,
    this.tagIds,
  });

  factory NewsListDto.fromJson(Map<String, dynamic> json) =>
      _$NewsListDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'title', includeIfNull: true)
  String? title;
  @JsonKey(name: 'summary', includeIfNull: true)
  String? summary;
  @JsonKey(name: 'content', includeIfNull: true)
  String? content;
  @JsonKey(name: 'image', includeIfNull: true)
  String? image;
  @JsonKey(name: 'author', includeIfNull: true)
  String? author;
  @JsonKey(name: 'publishedDate', includeIfNull: true)
  DateTime? publishedDate;
  @JsonKey(name: 'viewCount', includeIfNull: true)
  int? viewCount;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: commonStatusEnumToJson,
      fromJson: commonStatusEnumFromJson)
  enums.CommonStatusEnum? status;
  @JsonKey(name: 'metaTitle', includeIfNull: true)
  String? metaTitle;
  @JsonKey(name: 'metaDescription', includeIfNull: true)
  String? metaDescription;
  @JsonKey(name: 'metaKeywords', includeIfNull: true)
  String? metaKeywords;
  @JsonKey(name: 'slug', includeIfNull: true)
  String? slug;
  @JsonKey(name: 'categoryId', includeIfNull: true)
  int? categoryId;
  @JsonKey(name: 'isFeatured', includeIfNull: true)
  bool? isFeatured;
  @JsonKey(name: 'relatedNewsIds', includeIfNull: true, defaultValue: <int>[])
  List<int>? relatedNewsIds;
  @JsonKey(name: 'tagIds', includeIfNull: true, defaultValue: <int>[])
  List<int>? tagIds;
  static const fromJsonFactory = _$NewsListDtoFromJson;
  static const toJsonFactory = _$NewsListDtoToJson;
  Map<String, dynamic> toJson() => _$NewsListDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class NewsListDtoFilterResult {
  NewsListDtoFilterResult({
    this.totalRows,
    this.data,
  });

  factory NewsListDtoFilterResult.fromJson(Map<String, dynamic> json) =>
      _$NewsListDtoFilterResultFromJson(json);

  @JsonKey(name: 'totalRows', includeIfNull: true)
  int? totalRows;
  @JsonKey(name: 'data', includeIfNull: true, defaultValue: <NewsListDto>[])
  List<NewsListDto>? data;
  static const fromJsonFactory = _$NewsListDtoFilterResultFromJson;
  static const toJsonFactory = _$NewsListDtoFilterResultToJson;
  Map<String, dynamic> toJson() => _$NewsListDtoFilterResultToJson(this);
}

@JsonSerializable(explicitToJson: true)
class NewsListDtoFilterResultApiResponse {
  NewsListDtoFilterResultApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory NewsListDtoFilterResultApiResponse.fromJson(
          Map<String, dynamic> json) =>
      _$NewsListDtoFilterResultApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  NewsListDtoFilterResult? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$NewsListDtoFilterResultApiResponseFromJson;
  static const toJsonFactory = _$NewsListDtoFilterResultApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$NewsListDtoFilterResultApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class NewsSaveDto {
  NewsSaveDto({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.title,
    this.summary,
    this.content,
    this.image,
    this.author,
    this.publishedDate,
    this.viewCount,
    this.status,
    this.metaTitle,
    this.metaDescription,
    this.metaKeywords,
    this.slug,
    this.categoryId,
    this.isFeatured,
    this.relatedNewsIds,
    this.tagIds,
  });

  factory NewsSaveDto.fromJson(Map<String, dynamic> json) =>
      _$NewsSaveDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'title', includeIfNull: true)
  String? title;
  @JsonKey(name: 'summary', includeIfNull: true)
  String? summary;
  @JsonKey(name: 'content', includeIfNull: true)
  String? content;
  @JsonKey(name: 'image', includeIfNull: true)
  String? image;
  @JsonKey(name: 'author', includeIfNull: true)
  String? author;
  @JsonKey(name: 'publishedDate', includeIfNull: true)
  DateTime? publishedDate;
  @JsonKey(name: 'viewCount', includeIfNull: true)
  int? viewCount;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: commonStatusEnumToJson,
      fromJson: commonStatusEnumFromJson)
  enums.CommonStatusEnum? status;
  @JsonKey(name: 'metaTitle', includeIfNull: true)
  String? metaTitle;
  @JsonKey(name: 'metaDescription', includeIfNull: true)
  String? metaDescription;
  @JsonKey(name: 'metaKeywords', includeIfNull: true)
  String? metaKeywords;
  @JsonKey(name: 'slug', includeIfNull: true)
  String? slug;
  @JsonKey(name: 'categoryId', includeIfNull: true)
  int? categoryId;
  @JsonKey(name: 'isFeatured', includeIfNull: true)
  bool? isFeatured;
  @JsonKey(name: 'relatedNewsIds', includeIfNull: true, defaultValue: <int>[])
  List<int>? relatedNewsIds;
  @JsonKey(name: 'tagIds', includeIfNull: true, defaultValue: <int>[])
  List<int>? tagIds;
  static const fromJsonFactory = _$NewsSaveDtoFromJson;
  static const toJsonFactory = _$NewsSaveDtoToJson;
  Map<String, dynamic> toJson() => _$NewsSaveDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class NotificationDto {
  NotificationDto({
    this.id,
    this.title,
    this.content,
    this.type,
    this.createdDate,
    this.isRead,
    this.url,
  });

  factory NotificationDto.fromJson(Map<String, dynamic> json) =>
      _$NotificationDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'title', includeIfNull: true)
  String? title;
  @JsonKey(name: 'content', includeIfNull: true)
  String? content;
  @JsonKey(name: 'type', includeIfNull: true)
  String? type;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'isRead', includeIfNull: true)
  bool? isRead;
  @JsonKey(name: 'url', includeIfNull: true)
  String? url;
  static const fromJsonFactory = _$NotificationDtoFromJson;
  static const toJsonFactory = _$NotificationDtoToJson;
  Map<String, dynamic> toJson() => _$NotificationDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class NotificationDtoFilterResult {
  NotificationDtoFilterResult({
    this.totalRows,
    this.data,
  });

  factory NotificationDtoFilterResult.fromJson(Map<String, dynamic> json) =>
      _$NotificationDtoFilterResultFromJson(json);

  @JsonKey(name: 'totalRows', includeIfNull: true)
  int? totalRows;
  @JsonKey(name: 'data', includeIfNull: true, defaultValue: <NotificationDto>[])
  List<NotificationDto>? data;
  static const fromJsonFactory = _$NotificationDtoFilterResultFromJson;
  static const toJsonFactory = _$NotificationDtoFilterResultToJson;
  Map<String, dynamic> toJson() => _$NotificationDtoFilterResultToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ObjectApiResponse {
  ObjectApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory ObjectApiResponse.fromJson(Map<String, dynamic> json) =>
      _$ObjectApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  dynamic data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$ObjectApiResponseFromJson;
  static const toJsonFactory = _$ObjectApiResponseToJson;
  Map<String, dynamic> toJson() => _$ObjectApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ObjectLikeSaveCommand {
  ObjectLikeSaveCommand({
    this.objectId,
    this.objectType,
  });

  factory ObjectLikeSaveCommand.fromJson(Map<String, dynamic> json) =>
      _$ObjectLikeSaveCommandFromJson(json);

  @JsonKey(name: 'objectId', includeIfNull: true)
  int? objectId;
  @JsonKey(
      name: 'objectType',
      includeIfNull: true,
      toJson: objectTypeEnumToJson,
      fromJson: objectTypeEnumFromJson)
  enums.ObjectTypeEnum? objectType;
  static const fromJsonFactory = _$ObjectLikeSaveCommandFromJson;
  static const toJsonFactory = _$ObjectLikeSaveCommandToJson;
  Map<String, dynamic> toJson() => _$ObjectLikeSaveCommandToJson(this);
}

@JsonSerializable(explicitToJson: true)
class OfficeDto {
  OfficeDto({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.code,
    this.name,
    this.fullName,
    this.otherName,
    this.url,
    this.unitType,
    this.parentId,
    this.priority,
    this.type,
    this.status,
    this.parentName,
    this.schoolCount,
    this.schoolActiveCount,
  });

  factory OfficeDto.fromJson(Map<String, dynamic> json) =>
      _$OfficeDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'code', includeIfNull: true)
  String? code;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(name: 'fullName', includeIfNull: true)
  String? fullName;
  @JsonKey(name: 'otherName', includeIfNull: true)
  String? otherName;
  @JsonKey(name: 'url', includeIfNull: true)
  String? url;
  @JsonKey(name: 'unitType', includeIfNull: true)
  String? unitType;
  @JsonKey(name: 'parentId', includeIfNull: true)
  int? parentId;
  @JsonKey(name: 'priority', includeIfNull: true)
  int? priority;
  @JsonKey(
      name: 'type',
      includeIfNull: true,
      toJson: localityTypeEnumToJson,
      fromJson: localityTypeEnumFromJson)
  enums.LocalityTypeEnum? type;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: localityStatusEnumToJson,
      fromJson: localityStatusEnumFromJson)
  enums.LocalityStatusEnum? status;
  @JsonKey(name: 'parentName', includeIfNull: true)
  String? parentName;
  @JsonKey(name: 'schoolCount', includeIfNull: true)
  int? schoolCount;
  @JsonKey(name: 'schoolActiveCount', includeIfNull: true)
  int? schoolActiveCount;
  static const fromJsonFactory = _$OfficeDtoFromJson;
  static const toJsonFactory = _$OfficeDtoToJson;
  Map<String, dynamic> toJson() => _$OfficeDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class OfficeDtoFilterResult {
  OfficeDtoFilterResult({
    this.totalRows,
    this.data,
  });

  factory OfficeDtoFilterResult.fromJson(Map<String, dynamic> json) =>
      _$OfficeDtoFilterResultFromJson(json);

  @JsonKey(name: 'totalRows', includeIfNull: true)
  int? totalRows;
  @JsonKey(name: 'data', includeIfNull: true, defaultValue: <OfficeDto>[])
  List<OfficeDto>? data;
  static const fromJsonFactory = _$OfficeDtoFilterResultFromJson;
  static const toJsonFactory = _$OfficeDtoFilterResultToJson;
  Map<String, dynamic> toJson() => _$OfficeDtoFilterResultToJson(this);
}

@JsonSerializable(explicitToJson: true)
class OfficeDtoFilterResultApiResponse {
  OfficeDtoFilterResultApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory OfficeDtoFilterResultApiResponse.fromJson(
          Map<String, dynamic> json) =>
      _$OfficeDtoFilterResultApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  OfficeDtoFilterResult? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$OfficeDtoFilterResultApiResponseFromJson;
  static const toJsonFactory = _$OfficeDtoFilterResultApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$OfficeDtoFilterResultApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class OfficeGetListQuery {
  OfficeGetListQuery({
    this.sortExpression,
    this.pageSize,
    this.pageIndex,
    this.skip,
    this.notSkip,
    this.propertyIncludes,
    this.keyword,
    this.parentId,
  });

  factory OfficeGetListQuery.fromJson(Map<String, dynamic> json) =>
      _$OfficeGetListQueryFromJson(json);

  @JsonKey(name: 'sortExpression', includeIfNull: true)
  String? sortExpression;
  @JsonKey(name: 'pageSize', includeIfNull: true)
  int? pageSize;
  @JsonKey(name: 'pageIndex', includeIfNull: true)
  int? pageIndex;
  @JsonKey(name: 'skip', includeIfNull: true)
  int? skip;
  @JsonKey(name: 'notSkip', includeIfNull: true)
  int? notSkip;
  @JsonKey(
      name: 'propertyIncludes', includeIfNull: true, defaultValue: <String>[])
  List<String>? propertyIncludes;
  @JsonKey(name: 'keyword', includeIfNull: true)
  String? keyword;
  @JsonKey(name: 'parentId', includeIfNull: true)
  int? parentId;
  static const fromJsonFactory = _$OfficeGetListQueryFromJson;
  static const toJsonFactory = _$OfficeGetListQueryToJson;
  Map<String, dynamic> toJson() => _$OfficeGetListQueryToJson(this);
}

@JsonSerializable(explicitToJson: true)
class OrderCreateDto {
  OrderCreateDto({
    this.fullName,
    this.phone,
    this.address,
    this.notes,
  });

  factory OrderCreateDto.fromJson(Map<String, dynamic> json) =>
      _$OrderCreateDtoFromJson(json);

  @JsonKey(name: 'fullName', includeIfNull: true)
  String? fullName;
  @JsonKey(name: 'phone', includeIfNull: true)
  String? phone;
  @JsonKey(name: 'address', includeIfNull: true)
  String? address;
  @JsonKey(name: 'notes', includeIfNull: true)
  String? notes;
  static const fromJsonFactory = _$OrderCreateDtoFromJson;
  static const toJsonFactory = _$OrderCreateDtoToJson;
  Map<String, dynamic> toJson() => _$OrderCreateDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class OrderCreateWithClassDto {
  OrderCreateWithClassDto({
    this.productId,
    this.classId,
    this.fullName,
    this.phone,
    this.address,
    this.notes,
  });

  factory OrderCreateWithClassDto.fromJson(Map<String, dynamic> json) =>
      _$OrderCreateWithClassDtoFromJson(json);

  @JsonKey(name: 'productId', includeIfNull: true)
  int? productId;
  @JsonKey(name: 'classId', includeIfNull: true)
  int? classId;
  @JsonKey(name: 'fullName', includeIfNull: true)
  String? fullName;
  @JsonKey(name: 'phone', includeIfNull: true)
  String? phone;
  @JsonKey(name: 'address', includeIfNull: true)
  String? address;
  @JsonKey(name: 'notes', includeIfNull: true)
  String? notes;
  static const fromJsonFactory = _$OrderCreateWithClassDtoFromJson;
  static const toJsonFactory = _$OrderCreateWithClassDtoToJson;
  Map<String, dynamic> toJson() => _$OrderCreateWithClassDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class OrderDto {
  OrderDto({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.userId,
    this.fullName,
    this.phone,
    this.address,
    this.notes,
    this.totalAmount,
    this.status,
    this.items,
  });

  factory OrderDto.fromJson(Map<String, dynamic> json) =>
      _$OrderDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'userId', includeIfNull: true)
  int? userId;
  @JsonKey(name: 'fullName', includeIfNull: true)
  String? fullName;
  @JsonKey(name: 'phone', includeIfNull: true)
  String? phone;
  @JsonKey(name: 'address', includeIfNull: true)
  String? address;
  @JsonKey(name: 'notes', includeIfNull: true)
  String? notes;
  @JsonKey(name: 'totalAmount', includeIfNull: true)
  double? totalAmount;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: orderStatusEnumToJson,
      fromJson: orderStatusEnumFromJson)
  enums.OrderStatusEnum? status;
  @JsonKey(name: 'items', includeIfNull: true, defaultValue: <OrderItemDto>[])
  List<OrderItemDto>? items;
  static const fromJsonFactory = _$OrderDtoFromJson;
  static const toJsonFactory = _$OrderDtoToJson;
  Map<String, dynamic> toJson() => _$OrderDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class OrderDtoApiResponse {
  OrderDtoApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory OrderDtoApiResponse.fromJson(Map<String, dynamic> json) =>
      _$OrderDtoApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  OrderDto? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$OrderDtoApiResponseFromJson;
  static const toJsonFactory = _$OrderDtoApiResponseToJson;
  Map<String, dynamic> toJson() => _$OrderDtoApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class OrderDtoFilterResult {
  OrderDtoFilterResult({
    this.totalRows,
    this.data,
  });

  factory OrderDtoFilterResult.fromJson(Map<String, dynamic> json) =>
      _$OrderDtoFilterResultFromJson(json);

  @JsonKey(name: 'totalRows', includeIfNull: true)
  int? totalRows;
  @JsonKey(name: 'data', includeIfNull: true, defaultValue: <OrderDto>[])
  List<OrderDto>? data;
  static const fromJsonFactory = _$OrderDtoFilterResultFromJson;
  static const toJsonFactory = _$OrderDtoFilterResultToJson;
  Map<String, dynamic> toJson() => _$OrderDtoFilterResultToJson(this);
}

@JsonSerializable(explicitToJson: true)
class OrderDtoFilterResultApiResponse {
  OrderDtoFilterResultApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory OrderDtoFilterResultApiResponse.fromJson(Map<String, dynamic> json) =>
      _$OrderDtoFilterResultApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  OrderDtoFilterResult? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$OrderDtoFilterResultApiResponseFromJson;
  static const toJsonFactory = _$OrderDtoFilterResultApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$OrderDtoFilterResultApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class OrderEntity {
  OrderEntity({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.userId,
    this.fullName,
    this.phone,
    this.address,
    this.notes,
    this.totalAmount,
    this.status,
    this.items,
  });

  factory OrderEntity.fromJson(Map<String, dynamic> json) =>
      _$OrderEntityFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'userId', includeIfNull: true)
  int? userId;
  @JsonKey(name: 'fullName', includeIfNull: true)
  String? fullName;
  @JsonKey(name: 'phone', includeIfNull: true)
  String? phone;
  @JsonKey(name: 'address', includeIfNull: true)
  String? address;
  @JsonKey(name: 'notes', includeIfNull: true)
  String? notes;
  @JsonKey(name: 'totalAmount', includeIfNull: true)
  double? totalAmount;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: orderStatusEnumToJson,
      fromJson: orderStatusEnumFromJson)
  enums.OrderStatusEnum? status;
  @JsonKey(
      name: 'items', includeIfNull: true, defaultValue: <OrderItemEntity>[])
  List<OrderItemEntity>? items;
  static const fromJsonFactory = _$OrderEntityFromJson;
  static const toJsonFactory = _$OrderEntityToJson;
  Map<String, dynamic> toJson() => _$OrderEntityToJson(this);
}

@JsonSerializable(explicitToJson: true)
class OrderEntityApiResponse {
  OrderEntityApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory OrderEntityApiResponse.fromJson(Map<String, dynamic> json) =>
      _$OrderEntityApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  OrderEntity? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$OrderEntityApiResponseFromJson;
  static const toJsonFactory = _$OrderEntityApiResponseToJson;
  Map<String, dynamic> toJson() => _$OrderEntityApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class OrderGetListQuery {
  OrderGetListQuery({
    this.sortExpression,
    this.pageSize,
    this.pageIndex,
    this.skip,
    this.notSkip,
    this.propertyIncludes,
    this.userId,
    this.status,
  });

  factory OrderGetListQuery.fromJson(Map<String, dynamic> json) =>
      _$OrderGetListQueryFromJson(json);

  @JsonKey(name: 'sortExpression', includeIfNull: true)
  String? sortExpression;
  @JsonKey(name: 'pageSize', includeIfNull: true)
  int? pageSize;
  @JsonKey(name: 'pageIndex', includeIfNull: true)
  int? pageIndex;
  @JsonKey(name: 'skip', includeIfNull: true)
  int? skip;
  @JsonKey(name: 'notSkip', includeIfNull: true)
  int? notSkip;
  @JsonKey(
      name: 'propertyIncludes', includeIfNull: true, defaultValue: <String>[])
  List<String>? propertyIncludes;
  @JsonKey(name: 'userId', includeIfNull: true)
  int? userId;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: orderStatusEnumToJson,
      fromJson: orderStatusEnumFromJson)
  enums.OrderStatusEnum? status;
  static const fromJsonFactory = _$OrderGetListQueryFromJson;
  static const toJsonFactory = _$OrderGetListQueryToJson;
  Map<String, dynamic> toJson() => _$OrderGetListQueryToJson(this);
}

@JsonSerializable(explicitToJson: true)
class OrderItemDto {
  OrderItemDto({
    this.id,
    this.orderId,
    this.productId,
    this.quantity,
    this.unitPrice,
    this.salePrice,
    this.totalPrice,
    this.product,
  });

  factory OrderItemDto.fromJson(Map<String, dynamic> json) =>
      _$OrderItemDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'orderId', includeIfNull: true)
  int? orderId;
  @JsonKey(name: 'productId', includeIfNull: true)
  int? productId;
  @JsonKey(name: 'quantity', includeIfNull: true)
  int? quantity;
  @JsonKey(name: 'unitPrice', includeIfNull: true)
  double? unitPrice;
  @JsonKey(name: 'salePrice', includeIfNull: true)
  double? salePrice;
  @JsonKey(name: 'totalPrice', includeIfNull: true)
  double? totalPrice;
  @JsonKey(name: 'product', includeIfNull: true)
  ProductListDto? product;
  static const fromJsonFactory = _$OrderItemDtoFromJson;
  static const toJsonFactory = _$OrderItemDtoToJson;
  Map<String, dynamic> toJson() => _$OrderItemDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class OrderItemEntity {
  OrderItemEntity({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.orderId,
    this.productId,
    this.quantity,
    this.unitPrice,
    this.salePrice,
    this.totalPrice,
    this.order,
    this.product,
  });

  factory OrderItemEntity.fromJson(Map<String, dynamic> json) =>
      _$OrderItemEntityFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'orderId', includeIfNull: true)
  int? orderId;
  @JsonKey(name: 'productId', includeIfNull: true)
  int? productId;
  @JsonKey(name: 'quantity', includeIfNull: true)
  int? quantity;
  @JsonKey(name: 'unitPrice', includeIfNull: true)
  double? unitPrice;
  @JsonKey(name: 'salePrice', includeIfNull: true)
  double? salePrice;
  @JsonKey(name: 'totalPrice', includeIfNull: true)
  double? totalPrice;
  @JsonKey(name: 'order', includeIfNull: true)
  OrderEntity? order;
  @JsonKey(name: 'product', includeIfNull: true)
  ProductEntity? product;
  static const fromJsonFactory = _$OrderItemEntityFromJson;
  static const toJsonFactory = _$OrderItemEntityToJson;
  Map<String, dynamic> toJson() => _$OrderItemEntityToJson(this);
}

@JsonSerializable(explicitToJson: true)
class OrderUpdateDto {
  OrderUpdateDto({
    this.status,
    this.notes,
    this.fullName,
    this.phone,
    this.address,
  });

  factory OrderUpdateDto.fromJson(Map<String, dynamic> json) =>
      _$OrderUpdateDtoFromJson(json);

  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: orderStatusEnumToJson,
      fromJson: orderStatusEnumFromJson)
  enums.OrderStatusEnum? status;
  @JsonKey(name: 'notes', includeIfNull: true)
  String? notes;
  @JsonKey(name: 'fullName', includeIfNull: true)
  String? fullName;
  @JsonKey(name: 'phone', includeIfNull: true)
  String? phone;
  @JsonKey(name: 'address', includeIfNull: true)
  String? address;
  static const fromJsonFactory = _$OrderUpdateDtoFromJson;
  static const toJsonFactory = _$OrderUpdateDtoToJson;
  Map<String, dynamic> toJson() => _$OrderUpdateDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ProductAttributeSaveDto {
  ProductAttributeSaveDto({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.productId,
    this.name,
    this.icon,
    this.sortOrder,
  });

  factory ProductAttributeSaveDto.fromJson(Map<String, dynamic> json) =>
      _$ProductAttributeSaveDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'productId', includeIfNull: true)
  int? productId;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(name: 'icon', includeIfNull: true)
  String? icon;
  @JsonKey(name: 'sortOrder', includeIfNull: true)
  int? sortOrder;
  static const fromJsonFactory = _$ProductAttributeSaveDtoFromJson;
  static const toJsonFactory = _$ProductAttributeSaveDtoToJson;
  Map<String, dynamic> toJson() => _$ProductAttributeSaveDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ProductChapterDetailDto {
  ProductChapterDetailDto({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.productId,
    this.name,
    this.description,
    this.sortOrder,
    this.lessons,
  });

  factory ProductChapterDetailDto.fromJson(Map<String, dynamic> json) =>
      _$ProductChapterDetailDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'productId', includeIfNull: true)
  int? productId;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(name: 'description', includeIfNull: true)
  String? description;
  @JsonKey(name: 'sortOrder', includeIfNull: true)
  int? sortOrder;
  @JsonKey(
      name: 'lessons',
      includeIfNull: true,
      defaultValue: <ProductLessonDetailDto>[])
  List<ProductLessonDetailDto>? lessons;
  static const fromJsonFactory = _$ProductChapterDetailDtoFromJson;
  static const toJsonFactory = _$ProductChapterDetailDtoToJson;
  Map<String, dynamic> toJson() => _$ProductChapterDetailDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ProductChapterSaveDto {
  ProductChapterSaveDto({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.productId,
    this.name,
    this.description,
    this.sortOrder,
    this.lessons,
  });

  factory ProductChapterSaveDto.fromJson(Map<String, dynamic> json) =>
      _$ProductChapterSaveDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'productId', includeIfNull: true)
  int? productId;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(name: 'description', includeIfNull: true)
  String? description;
  @JsonKey(name: 'sortOrder', includeIfNull: true)
  int? sortOrder;
  @JsonKey(
      name: 'lessons',
      includeIfNull: true,
      defaultValue: <ProductLessonSaveDto>[])
  List<ProductLessonSaveDto>? lessons;
  static const fromJsonFactory = _$ProductChapterSaveDtoFromJson;
  static const toJsonFactory = _$ProductChapterSaveDtoToJson;
  Map<String, dynamic> toJson() => _$ProductChapterSaveDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ProductClassDto {
  ProductClassDto({
    this.id,
    this.name,
    this.description,
    this.maxStudents,
    this.currentStudents,
    this.startDate,
    this.endDate,
    this.status,
    this.teacherName,
    this.isFull,
  });

  factory ProductClassDto.fromJson(Map<String, dynamic> json) =>
      _$ProductClassDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(name: 'description', includeIfNull: true)
  String? description;
  @JsonKey(name: 'maxStudents', includeIfNull: true)
  int? maxStudents;
  @JsonKey(name: 'currentStudents', includeIfNull: true)
  int? currentStudents;
  @JsonKey(name: 'startDate', includeIfNull: true)
  DateTime? startDate;
  @JsonKey(name: 'endDate', includeIfNull: true)
  DateTime? endDate;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: classStatusEnumToJson,
      fromJson: classStatusEnumFromJson)
  enums.ClassStatusEnum? status;
  @JsonKey(name: 'teacherName', includeIfNull: true)
  String? teacherName;
  @JsonKey(name: 'isFull', includeIfNull: true)
  bool? isFull;
  static const fromJsonFactory = _$ProductClassDtoFromJson;
  static const toJsonFactory = _$ProductClassDtoToJson;
  Map<String, dynamic> toJson() => _$ProductClassDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ProductClassDtoListApiResponse {
  ProductClassDtoListApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory ProductClassDtoListApiResponse.fromJson(Map<String, dynamic> json) =>
      _$ProductClassDtoListApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true, defaultValue: <ProductClassDto>[])
  List<ProductClassDto>? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$ProductClassDtoListApiResponseFromJson;
  static const toJsonFactory = _$ProductClassDtoListApiResponseToJson;
  Map<String, dynamic> toJson() => _$ProductClassDtoListApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ProductComboItemDto {
  ProductComboItemDto({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.name,
    this.summary,
    this.description,
    this.image,
    this.categoryId,
    this.productType,
    this.status,
    this.metaTitle,
    this.metaDescription,
    this.metaKeywords,
    this.slug,
    this.price,
    this.salePrice,
    this.totalLessons,
    this.totalDurationMinutes,
  });

  factory ProductComboItemDto.fromJson(Map<String, dynamic> json) =>
      _$ProductComboItemDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(name: 'summary', includeIfNull: true)
  String? summary;
  @JsonKey(name: 'description', includeIfNull: true)
  String? description;
  @JsonKey(name: 'image', includeIfNull: true)
  String? image;
  @JsonKey(name: 'categoryId', includeIfNull: true)
  int? categoryId;
  @JsonKey(
      name: 'productType',
      includeIfNull: true,
      toJson: productTypeEnumToJson,
      fromJson: productTypeEnumFromJson)
  enums.ProductTypeEnum? productType;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: commonStatusEnumToJson,
      fromJson: commonStatusEnumFromJson)
  enums.CommonStatusEnum? status;
  @JsonKey(name: 'metaTitle', includeIfNull: true)
  String? metaTitle;
  @JsonKey(name: 'metaDescription', includeIfNull: true)
  String? metaDescription;
  @JsonKey(name: 'metaKeywords', includeIfNull: true)
  String? metaKeywords;
  @JsonKey(name: 'slug', includeIfNull: true)
  String? slug;
  @JsonKey(name: 'price', includeIfNull: true)
  double? price;
  @JsonKey(name: 'salePrice', includeIfNull: true)
  double? salePrice;
  @JsonKey(name: 'totalLessons', includeIfNull: true)
  int? totalLessons;
  @JsonKey(name: 'totalDurationMinutes', includeIfNull: true)
  int? totalDurationMinutes;
  static const fromJsonFactory = _$ProductComboItemDtoFromJson;
  static const toJsonFactory = _$ProductComboItemDtoToJson;
  Map<String, dynamic> toJson() => _$ProductComboItemDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ProductDetailDto {
  ProductDetailDto({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.name,
    this.summary,
    this.description,
    this.image,
    this.categoryId,
    this.productType,
    this.status,
    this.metaTitle,
    this.metaDescription,
    this.metaKeywords,
    this.slug,
    this.price,
    this.salePrice,
    this.chapters,
    this.comboProducts,
    this.attributes,
    this.combos,
  });

  factory ProductDetailDto.fromJson(Map<String, dynamic> json) =>
      _$ProductDetailDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(name: 'summary', includeIfNull: true)
  String? summary;
  @JsonKey(name: 'description', includeIfNull: true)
  String? description;
  @JsonKey(name: 'image', includeIfNull: true)
  String? image;
  @JsonKey(name: 'categoryId', includeIfNull: true)
  int? categoryId;
  @JsonKey(
      name: 'productType',
      includeIfNull: true,
      toJson: productTypeEnumToJson,
      fromJson: productTypeEnumFromJson)
  enums.ProductTypeEnum? productType;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: commonStatusEnumToJson,
      fromJson: commonStatusEnumFromJson)
  enums.CommonStatusEnum? status;
  @JsonKey(name: 'metaTitle', includeIfNull: true)
  String? metaTitle;
  @JsonKey(name: 'metaDescription', includeIfNull: true)
  String? metaDescription;
  @JsonKey(name: 'metaKeywords', includeIfNull: true)
  String? metaKeywords;
  @JsonKey(name: 'slug', includeIfNull: true)
  String? slug;
  @JsonKey(name: 'price', includeIfNull: true)
  double? price;
  @JsonKey(name: 'salePrice', includeIfNull: true)
  double? salePrice;
  @JsonKey(
      name: 'chapters',
      includeIfNull: true,
      defaultValue: <ProductChapterDetailDto>[])
  List<ProductChapterDetailDto>? chapters;
  @JsonKey(
      name: 'comboProducts',
      includeIfNull: true,
      defaultValue: <ProductComboItemDto>[])
  List<ProductComboItemDto>? comboProducts;
  @JsonKey(
      name: 'attributes',
      includeIfNull: true,
      defaultValue: <ProductAttributeSaveDto>[])
  List<ProductAttributeSaveDto>? attributes;
  @JsonKey(name: 'combos', includeIfNull: true, defaultValue: <ProductEntity>[])
  List<ProductEntity>? combos;
  static const fromJsonFactory = _$ProductDetailDtoFromJson;
  static const toJsonFactory = _$ProductDetailDtoToJson;
  Map<String, dynamic> toJson() => _$ProductDetailDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ProductDetailDtoApiResponse {
  ProductDetailDtoApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory ProductDetailDtoApiResponse.fromJson(Map<String, dynamic> json) =>
      _$ProductDetailDtoApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  ProductDetailDto? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$ProductDetailDtoApiResponseFromJson;
  static const toJsonFactory = _$ProductDetailDtoApiResponseToJson;
  Map<String, dynamic> toJson() => _$ProductDetailDtoApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ProductEntity {
  ProductEntity({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.name,
    this.summary,
    this.description,
    this.image,
    this.categoryId,
    this.productType,
    this.status,
    this.metaTitle,
    this.metaDescription,
    this.metaKeywords,
    this.slug,
    this.price,
    this.salePrice,
  });

  factory ProductEntity.fromJson(Map<String, dynamic> json) =>
      _$ProductEntityFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(name: 'summary', includeIfNull: true)
  String? summary;
  @JsonKey(name: 'description', includeIfNull: true)
  String? description;
  @JsonKey(name: 'image', includeIfNull: true)
  String? image;
  @JsonKey(name: 'categoryId', includeIfNull: true)
  int? categoryId;
  @JsonKey(
      name: 'productType',
      includeIfNull: true,
      toJson: productTypeEnumToJson,
      fromJson: productTypeEnumFromJson)
  enums.ProductTypeEnum? productType;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: commonStatusEnumToJson,
      fromJson: commonStatusEnumFromJson)
  enums.CommonStatusEnum? status;
  @JsonKey(name: 'metaTitle', includeIfNull: true)
  String? metaTitle;
  @JsonKey(name: 'metaDescription', includeIfNull: true)
  String? metaDescription;
  @JsonKey(name: 'metaKeywords', includeIfNull: true)
  String? metaKeywords;
  @JsonKey(name: 'slug', includeIfNull: true)
  String? slug;
  @JsonKey(name: 'price', includeIfNull: true)
  double? price;
  @JsonKey(name: 'salePrice', includeIfNull: true)
  double? salePrice;
  static const fromJsonFactory = _$ProductEntityFromJson;
  static const toJsonFactory = _$ProductEntityToJson;
  Map<String, dynamic> toJson() => _$ProductEntityToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ProductEntityApiResponse {
  ProductEntityApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory ProductEntityApiResponse.fromJson(Map<String, dynamic> json) =>
      _$ProductEntityApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  ProductEntity? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$ProductEntityApiResponseFromJson;
  static const toJsonFactory = _$ProductEntityApiResponseToJson;
  Map<String, dynamic> toJson() => _$ProductEntityApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ProductGetByIdsQuery {
  ProductGetByIdsQuery({
    this.ids,
  });

  factory ProductGetByIdsQuery.fromJson(Map<String, dynamic> json) =>
      _$ProductGetByIdsQueryFromJson(json);

  @JsonKey(name: 'ids', includeIfNull: true, defaultValue: <int>[])
  List<int>? ids;
  static const fromJsonFactory = _$ProductGetByIdsQueryFromJson;
  static const toJsonFactory = _$ProductGetByIdsQueryToJson;
  Map<String, dynamic> toJson() => _$ProductGetByIdsQueryToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ProductGetListQuery {
  ProductGetListQuery({
    this.sortExpression,
    this.pageSize,
    this.pageIndex,
    this.skip,
    this.notSkip,
    this.propertyIncludes,
    this.keyword,
    this.categoryId,
    this.productType,
    this.status,
  });

  factory ProductGetListQuery.fromJson(Map<String, dynamic> json) =>
      _$ProductGetListQueryFromJson(json);

  @JsonKey(name: 'sortExpression', includeIfNull: true)
  String? sortExpression;
  @JsonKey(name: 'pageSize', includeIfNull: true)
  int? pageSize;
  @JsonKey(name: 'pageIndex', includeIfNull: true)
  int? pageIndex;
  @JsonKey(name: 'skip', includeIfNull: true)
  int? skip;
  @JsonKey(name: 'notSkip', includeIfNull: true)
  int? notSkip;
  @JsonKey(
      name: 'propertyIncludes', includeIfNull: true, defaultValue: <String>[])
  List<String>? propertyIncludes;
  @JsonKey(name: 'keyword', includeIfNull: true)
  String? keyword;
  @JsonKey(name: 'categoryId', includeIfNull: true)
  int? categoryId;
  @JsonKey(
      name: 'productType',
      includeIfNull: true,
      toJson: productTypeEnumToJson,
      fromJson: productTypeEnumFromJson)
  enums.ProductTypeEnum? productType;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: commonStatusEnumToJson,
      fromJson: commonStatusEnumFromJson)
  enums.CommonStatusEnum? status;
  static const fromJsonFactory = _$ProductGetListQueryFromJson;
  static const toJsonFactory = _$ProductGetListQueryToJson;
  Map<String, dynamic> toJson() => _$ProductGetListQueryToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ProductLessonDetailDto {
  ProductLessonDetailDto({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.chapterId,
    this.name,
    this.description,
    this.lessonType,
    this.content,
    this.sortOrder,
    this.isFree,
  });

  factory ProductLessonDetailDto.fromJson(Map<String, dynamic> json) =>
      _$ProductLessonDetailDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'chapterId', includeIfNull: true)
  int? chapterId;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(name: 'description', includeIfNull: true)
  String? description;
  @JsonKey(
      name: 'lessonType',
      includeIfNull: true,
      toJson: lessonTypeEnumToJson,
      fromJson: lessonTypeEnumFromJson)
  enums.LessonTypeEnum? lessonType;
  @JsonKey(name: 'content', includeIfNull: true)
  String? content;
  @JsonKey(name: 'sortOrder', includeIfNull: true)
  int? sortOrder;
  @JsonKey(name: 'isFree', includeIfNull: true)
  bool? isFree;
  static const fromJsonFactory = _$ProductLessonDetailDtoFromJson;
  static const toJsonFactory = _$ProductLessonDetailDtoToJson;
  Map<String, dynamic> toJson() => _$ProductLessonDetailDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ProductLessonEntity {
  ProductLessonEntity({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.chapterId,
    this.name,
    this.description,
    this.lessonType,
    this.content,
    this.sortOrder,
    this.isFree,
  });

  factory ProductLessonEntity.fromJson(Map<String, dynamic> json) =>
      _$ProductLessonEntityFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'chapterId', includeIfNull: true)
  int? chapterId;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(name: 'description', includeIfNull: true)
  String? description;
  @JsonKey(
      name: 'lessonType',
      includeIfNull: true,
      toJson: lessonTypeEnumToJson,
      fromJson: lessonTypeEnumFromJson)
  enums.LessonTypeEnum? lessonType;
  @JsonKey(name: 'content', includeIfNull: true)
  String? content;
  @JsonKey(name: 'sortOrder', includeIfNull: true)
  int? sortOrder;
  @JsonKey(name: 'isFree', includeIfNull: true)
  bool? isFree;
  static const fromJsonFactory = _$ProductLessonEntityFromJson;
  static const toJsonFactory = _$ProductLessonEntityToJson;
  Map<String, dynamic> toJson() => _$ProductLessonEntityToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ProductLessonSaveDto {
  ProductLessonSaveDto({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.chapterId,
    this.name,
    this.description,
    this.lessonType,
    this.content,
    this.sortOrder,
    this.isFree,
  });

  factory ProductLessonSaveDto.fromJson(Map<String, dynamic> json) =>
      _$ProductLessonSaveDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'chapterId', includeIfNull: true)
  int? chapterId;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(name: 'description', includeIfNull: true)
  String? description;
  @JsonKey(
      name: 'lessonType',
      includeIfNull: true,
      toJson: lessonTypeEnumToJson,
      fromJson: lessonTypeEnumFromJson)
  enums.LessonTypeEnum? lessonType;
  @JsonKey(name: 'content', includeIfNull: true)
  String? content;
  @JsonKey(name: 'sortOrder', includeIfNull: true)
  int? sortOrder;
  @JsonKey(name: 'isFree', includeIfNull: true)
  bool? isFree;
  static const fromJsonFactory = _$ProductLessonSaveDtoFromJson;
  static const toJsonFactory = _$ProductLessonSaveDtoToJson;
  Map<String, dynamic> toJson() => _$ProductLessonSaveDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ProductListDto {
  ProductListDto({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.name,
    this.summary,
    this.description,
    this.image,
    this.categoryId,
    this.productType,
    this.status,
    this.metaTitle,
    this.metaDescription,
    this.metaKeywords,
    this.slug,
    this.price,
    this.salePrice,
    this.averageRating,
    this.reviewCount,
  });

  factory ProductListDto.fromJson(Map<String, dynamic> json) =>
      _$ProductListDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(name: 'summary', includeIfNull: true)
  String? summary;
  @JsonKey(name: 'description', includeIfNull: true)
  String? description;
  @JsonKey(name: 'image', includeIfNull: true)
  String? image;
  @JsonKey(name: 'categoryId', includeIfNull: true)
  int? categoryId;
  @JsonKey(
      name: 'productType',
      includeIfNull: true,
      toJson: productTypeEnumToJson,
      fromJson: productTypeEnumFromJson)
  enums.ProductTypeEnum? productType;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: commonStatusEnumToJson,
      fromJson: commonStatusEnumFromJson)
  enums.CommonStatusEnum? status;
  @JsonKey(name: 'metaTitle', includeIfNull: true)
  String? metaTitle;
  @JsonKey(name: 'metaDescription', includeIfNull: true)
  String? metaDescription;
  @JsonKey(name: 'metaKeywords', includeIfNull: true)
  String? metaKeywords;
  @JsonKey(name: 'slug', includeIfNull: true)
  String? slug;
  @JsonKey(name: 'price', includeIfNull: true)
  double? price;
  @JsonKey(name: 'salePrice', includeIfNull: true)
  double? salePrice;
  @JsonKey(name: 'averageRating', includeIfNull: true)
  double? averageRating;
  @JsonKey(name: 'reviewCount', includeIfNull: true)
  int? reviewCount;
  static const fromJsonFactory = _$ProductListDtoFromJson;
  static const toJsonFactory = _$ProductListDtoToJson;
  Map<String, dynamic> toJson() => _$ProductListDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ProductListDtoFilterResult {
  ProductListDtoFilterResult({
    this.totalRows,
    this.data,
  });

  factory ProductListDtoFilterResult.fromJson(Map<String, dynamic> json) =>
      _$ProductListDtoFilterResultFromJson(json);

  @JsonKey(name: 'totalRows', includeIfNull: true)
  int? totalRows;
  @JsonKey(name: 'data', includeIfNull: true, defaultValue: <ProductListDto>[])
  List<ProductListDto>? data;
  static const fromJsonFactory = _$ProductListDtoFilterResultFromJson;
  static const toJsonFactory = _$ProductListDtoFilterResultToJson;
  Map<String, dynamic> toJson() => _$ProductListDtoFilterResultToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ProductListDtoFilterResultApiResponse {
  ProductListDtoFilterResultApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory ProductListDtoFilterResultApiResponse.fromJson(
          Map<String, dynamic> json) =>
      _$ProductListDtoFilterResultApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  ProductListDtoFilterResult? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory =
      _$ProductListDtoFilterResultApiResponseFromJson;
  static const toJsonFactory = _$ProductListDtoFilterResultApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$ProductListDtoFilterResultApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ProductListDtoListApiResponse {
  ProductListDtoListApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory ProductListDtoListApiResponse.fromJson(Map<String, dynamic> json) =>
      _$ProductListDtoListApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true, defaultValue: <ProductListDto>[])
  List<ProductListDto>? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$ProductListDtoListApiResponseFromJson;
  static const toJsonFactory = _$ProductListDtoListApiResponseToJson;
  Map<String, dynamic> toJson() => _$ProductListDtoListApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ProductReviewApproveCommand {
  ProductReviewApproveCommand({
    this.id,
    this.status,
  });

  factory ProductReviewApproveCommand.fromJson(Map<String, dynamic> json) =>
      _$ProductReviewApproveCommandFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: productReviewStatusEnumToJson,
      fromJson: productReviewStatusEnumFromJson)
  enums.ProductReviewStatusEnum? status;
  static const fromJsonFactory = _$ProductReviewApproveCommandFromJson;
  static const toJsonFactory = _$ProductReviewApproveCommandToJson;
  Map<String, dynamic> toJson() => _$ProductReviewApproveCommandToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ProductReviewCreateDto {
  ProductReviewCreateDto({
    this.productId,
    this.rating,
    this.comment,
    this.createdByName,
  });

  factory ProductReviewCreateDto.fromJson(Map<String, dynamic> json) =>
      _$ProductReviewCreateDtoFromJson(json);

  @JsonKey(name: 'productId', includeIfNull: true)
  int? productId;
  @JsonKey(name: 'rating', includeIfNull: true)
  int? rating;
  @JsonKey(name: 'comment', includeIfNull: true)
  String? comment;
  @JsonKey(name: 'createdByName', includeIfNull: true)
  String? createdByName;
  static const fromJsonFactory = _$ProductReviewCreateDtoFromJson;
  static const toJsonFactory = _$ProductReviewCreateDtoToJson;
  Map<String, dynamic> toJson() => _$ProductReviewCreateDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ProductReviewEntity {
  ProductReviewEntity({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.productId,
    this.userId,
    this.fullName,
    this.avatar,
    this.rating,
    this.comment,
    this.status,
  });

  factory ProductReviewEntity.fromJson(Map<String, dynamic> json) =>
      _$ProductReviewEntityFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'productId', includeIfNull: true)
  int? productId;
  @JsonKey(name: 'userId', includeIfNull: true)
  int? userId;
  @JsonKey(name: 'fullName', includeIfNull: true)
  String? fullName;
  @JsonKey(name: 'avatar', includeIfNull: true)
  String? avatar;
  @JsonKey(name: 'rating', includeIfNull: true)
  int? rating;
  @JsonKey(name: 'comment', includeIfNull: true)
  String? comment;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: productReviewStatusEnumToJson,
      fromJson: productReviewStatusEnumFromJson)
  enums.ProductReviewStatusEnum? status;
  static const fromJsonFactory = _$ProductReviewEntityFromJson;
  static const toJsonFactory = _$ProductReviewEntityToJson;
  Map<String, dynamic> toJson() => _$ProductReviewEntityToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ProductReviewEntityApiResponse {
  ProductReviewEntityApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory ProductReviewEntityApiResponse.fromJson(Map<String, dynamic> json) =>
      _$ProductReviewEntityApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  ProductReviewEntity? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$ProductReviewEntityApiResponseFromJson;
  static const toJsonFactory = _$ProductReviewEntityApiResponseToJson;
  Map<String, dynamic> toJson() => _$ProductReviewEntityApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ProductReviewEntityListApiResponse {
  ProductReviewEntityListApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory ProductReviewEntityListApiResponse.fromJson(
          Map<String, dynamic> json) =>
      _$ProductReviewEntityListApiResponseFromJson(json);

  @JsonKey(
      name: 'data', includeIfNull: true, defaultValue: <ProductReviewEntity>[])
  List<ProductReviewEntity>? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$ProductReviewEntityListApiResponseFromJson;
  static const toJsonFactory = _$ProductReviewEntityListApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$ProductReviewEntityListApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ProductReviewGenerateAiRequest {
  ProductReviewGenerateAiRequest({
    this.count,
  });

  factory ProductReviewGenerateAiRequest.fromJson(Map<String, dynamic> json) =>
      _$ProductReviewGenerateAiRequestFromJson(json);

  @JsonKey(name: 'count', includeIfNull: true)
  int? count;
  static const fromJsonFactory = _$ProductReviewGenerateAiRequestFromJson;
  static const toJsonFactory = _$ProductReviewGenerateAiRequestToJson;
  Map<String, dynamic> toJson() => _$ProductReviewGenerateAiRequestToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ProductReviewGetListQuery {
  ProductReviewGetListQuery({
    this.sortExpression,
    this.pageSize,
    this.pageIndex,
    this.skip,
    this.notSkip,
    this.propertyIncludes,
    this.productId,
    this.status,
  });

  factory ProductReviewGetListQuery.fromJson(Map<String, dynamic> json) =>
      _$ProductReviewGetListQueryFromJson(json);

  @JsonKey(name: 'sortExpression', includeIfNull: true)
  String? sortExpression;
  @JsonKey(name: 'pageSize', includeIfNull: true)
  int? pageSize;
  @JsonKey(name: 'pageIndex', includeIfNull: true)
  int? pageIndex;
  @JsonKey(name: 'skip', includeIfNull: true)
  int? skip;
  @JsonKey(name: 'notSkip', includeIfNull: true)
  int? notSkip;
  @JsonKey(
      name: 'propertyIncludes', includeIfNull: true, defaultValue: <String>[])
  List<String>? propertyIncludes;
  @JsonKey(name: 'productId', includeIfNull: true)
  int? productId;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: productReviewStatusEnumToJson,
      fromJson: productReviewStatusEnumFromJson)
  enums.ProductReviewStatusEnum? status;
  static const fromJsonFactory = _$ProductReviewGetListQueryFromJson;
  static const toJsonFactory = _$ProductReviewGetListQueryToJson;
  Map<String, dynamic> toJson() => _$ProductReviewGetListQueryToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ProductReviewListDto {
  ProductReviewListDto({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.productId,
    this.userId,
    this.fullName,
    this.avatar,
    this.rating,
    this.comment,
    this.status,
  });

  factory ProductReviewListDto.fromJson(Map<String, dynamic> json) =>
      _$ProductReviewListDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'productId', includeIfNull: true)
  int? productId;
  @JsonKey(name: 'userId', includeIfNull: true)
  int? userId;
  @JsonKey(name: 'fullName', includeIfNull: true)
  String? fullName;
  @JsonKey(name: 'avatar', includeIfNull: true)
  String? avatar;
  @JsonKey(name: 'rating', includeIfNull: true)
  int? rating;
  @JsonKey(name: 'comment', includeIfNull: true)
  String? comment;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: productReviewStatusEnumToJson,
      fromJson: productReviewStatusEnumFromJson)
  enums.ProductReviewStatusEnum? status;
  static const fromJsonFactory = _$ProductReviewListDtoFromJson;
  static const toJsonFactory = _$ProductReviewListDtoToJson;
  Map<String, dynamic> toJson() => _$ProductReviewListDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ProductReviewListDtoFilterResult {
  ProductReviewListDtoFilterResult({
    this.totalRows,
    this.data,
  });

  factory ProductReviewListDtoFilterResult.fromJson(
          Map<String, dynamic> json) =>
      _$ProductReviewListDtoFilterResultFromJson(json);

  @JsonKey(name: 'totalRows', includeIfNull: true)
  int? totalRows;
  @JsonKey(
      name: 'data', includeIfNull: true, defaultValue: <ProductReviewListDto>[])
  List<ProductReviewListDto>? data;
  static const fromJsonFactory = _$ProductReviewListDtoFilterResultFromJson;
  static const toJsonFactory = _$ProductReviewListDtoFilterResultToJson;
  Map<String, dynamic> toJson() =>
      _$ProductReviewListDtoFilterResultToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ProductReviewListDtoFilterResultApiResponse {
  ProductReviewListDtoFilterResultApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory ProductReviewListDtoFilterResultApiResponse.fromJson(
          Map<String, dynamic> json) =>
      _$ProductReviewListDtoFilterResultApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  ProductReviewListDtoFilterResult? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory =
      _$ProductReviewListDtoFilterResultApiResponseFromJson;
  static const toJsonFactory =
      _$ProductReviewListDtoFilterResultApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$ProductReviewListDtoFilterResultApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ProductSaveDto {
  ProductSaveDto({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.name,
    this.summary,
    this.description,
    this.image,
    this.categoryId,
    this.productType,
    this.status,
    this.metaTitle,
    this.metaDescription,
    this.metaKeywords,
    this.slug,
    this.price,
    this.salePrice,
    this.tagIds,
    this.chapters,
    this.attributes,
    this.comboProductIds,
  });

  factory ProductSaveDto.fromJson(Map<String, dynamic> json) =>
      _$ProductSaveDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(name: 'summary', includeIfNull: true)
  String? summary;
  @JsonKey(name: 'description', includeIfNull: true)
  String? description;
  @JsonKey(name: 'image', includeIfNull: true)
  String? image;
  @JsonKey(name: 'categoryId', includeIfNull: true)
  int? categoryId;
  @JsonKey(
      name: 'productType',
      includeIfNull: true,
      toJson: productTypeEnumToJson,
      fromJson: productTypeEnumFromJson)
  enums.ProductTypeEnum? productType;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: commonStatusEnumToJson,
      fromJson: commonStatusEnumFromJson)
  enums.CommonStatusEnum? status;
  @JsonKey(name: 'metaTitle', includeIfNull: true)
  String? metaTitle;
  @JsonKey(name: 'metaDescription', includeIfNull: true)
  String? metaDescription;
  @JsonKey(name: 'metaKeywords', includeIfNull: true)
  String? metaKeywords;
  @JsonKey(name: 'slug', includeIfNull: true)
  String? slug;
  @JsonKey(name: 'price', includeIfNull: true)
  double? price;
  @JsonKey(name: 'salePrice', includeIfNull: true)
  double? salePrice;
  @JsonKey(name: 'tagIds', includeIfNull: true, defaultValue: <int>[])
  List<int>? tagIds;
  @JsonKey(
      name: 'chapters',
      includeIfNull: true,
      defaultValue: <ProductChapterSaveDto>[])
  List<ProductChapterSaveDto>? chapters;
  @JsonKey(
      name: 'attributes',
      includeIfNull: true,
      defaultValue: <ProductAttributeSaveDto>[])
  List<ProductAttributeSaveDto>? attributes;
  @JsonKey(name: 'comboProductIds', includeIfNull: true, defaultValue: <int>[])
  List<int>? comboProductIds;
  static const fromJsonFactory = _$ProductSaveDtoFromJson;
  static const toJsonFactory = _$ProductSaveDtoToJson;
  Map<String, dynamic> toJson() => _$ProductSaveDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ProductSaveDtoApiResponse {
  ProductSaveDtoApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory ProductSaveDtoApiResponse.fromJson(Map<String, dynamic> json) =>
      _$ProductSaveDtoApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  ProductSaveDto? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$ProductSaveDtoApiResponseFromJson;
  static const toJsonFactory = _$ProductSaveDtoApiResponseToJson;
  Map<String, dynamic> toJson() => _$ProductSaveDtoApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class PupilAddDto {
  PupilAddDto({
    this.fullName,
    this.email,
    this.phoneNumber,
  });

  factory PupilAddDto.fromJson(Map<String, dynamic> json) =>
      _$PupilAddDtoFromJson(json);

  @JsonKey(name: 'fullName', includeIfNull: true)
  String? fullName;
  @JsonKey(name: 'email', includeIfNull: true)
  String? email;
  @JsonKey(name: 'phoneNumber', includeIfNull: true)
  String? phoneNumber;
  static const fromJsonFactory = _$PupilAddDtoFromJson;
  static const toJsonFactory = _$PupilAddDtoToJson;
  Map<String, dynamic> toJson() => _$PupilAddDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class PupilAddMultiCommand {
  PupilAddMultiCommand({
    this.pupils,
    this.password,
    this.classId,
  });

  factory PupilAddMultiCommand.fromJson(Map<String, dynamic> json) =>
      _$PupilAddMultiCommandFromJson(json);

  @JsonKey(name: 'pupils', includeIfNull: true, defaultValue: <PupilAddDto>[])
  List<PupilAddDto>? pupils;
  @JsonKey(name: 'password', includeIfNull: true)
  String? password;
  @JsonKey(name: 'classId', includeIfNull: true)
  int? classId;
  static const fromJsonFactory = _$PupilAddMultiCommandFromJson;
  static const toJsonFactory = _$PupilAddMultiCommandToJson;
  Map<String, dynamic> toJson() => _$PupilAddMultiCommandToJson(this);
}

@JsonSerializable(explicitToJson: true)
class PupilChangePasswordCommand {
  PupilChangePasswordCommand({
    this.classId,
    this.userId,
    this.password,
  });

  factory PupilChangePasswordCommand.fromJson(Map<String, dynamic> json) =>
      _$PupilChangePasswordCommandFromJson(json);

  @JsonKey(name: 'classId', includeIfNull: true)
  int? classId;
  @JsonKey(name: 'userId', includeIfNull: true)
  int? userId;
  @JsonKey(name: 'password', includeIfNull: true)
  String? password;
  static const fromJsonFactory = _$PupilChangePasswordCommandFromJson;
  static const toJsonFactory = _$PupilChangePasswordCommandToJson;
  Map<String, dynamic> toJson() => _$PupilChangePasswordCommandToJson(this);
}

@JsonSerializable(explicitToJson: true)
class PupilCheckGoToClassDto {
  PupilCheckGoToClassDto({
    this.classId,
    this.className,
    this.academicYearId,
    this.academicYearName,
    this.grade,
  });

  factory PupilCheckGoToClassDto.fromJson(Map<String, dynamic> json) =>
      _$PupilCheckGoToClassDtoFromJson(json);

  @JsonKey(name: 'classId', includeIfNull: true)
  int? classId;
  @JsonKey(name: 'className', includeIfNull: true)
  String? className;
  @JsonKey(name: 'academicYearId', includeIfNull: true)
  int? academicYearId;
  @JsonKey(name: 'academicYearName', includeIfNull: true)
  String? academicYearName;
  @JsonKey(name: 'grade', includeIfNull: true)
  int? grade;
  static const fromJsonFactory = _$PupilCheckGoToClassDtoFromJson;
  static const toJsonFactory = _$PupilCheckGoToClassDtoToJson;
  Map<String, dynamic> toJson() => _$PupilCheckGoToClassDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class PupilCheckGoToClassDtoApiResponse {
  PupilCheckGoToClassDtoApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory PupilCheckGoToClassDtoApiResponse.fromJson(
          Map<String, dynamic> json) =>
      _$PupilCheckGoToClassDtoApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  PupilCheckGoToClassDto? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$PupilCheckGoToClassDtoApiResponseFromJson;
  static const toJsonFactory = _$PupilCheckGoToClassDtoApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$PupilCheckGoToClassDtoApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class PupilCopyFromClassCommand {
  PupilCopyFromClassCommand({
    this.classId,
    this.newClassId,
  });

  factory PupilCopyFromClassCommand.fromJson(Map<String, dynamic> json) =>
      _$PupilCopyFromClassCommandFromJson(json);

  @JsonKey(name: 'classId', includeIfNull: true)
  int? classId;
  @JsonKey(name: 'newClassId', includeIfNull: true)
  int? newClassId;
  static const fromJsonFactory = _$PupilCopyFromClassCommandFromJson;
  static const toJsonFactory = _$PupilCopyFromClassCommandToJson;
  Map<String, dynamic> toJson() => _$PupilCopyFromClassCommandToJson(this);
}

@JsonSerializable(explicitToJson: true)
class PupilFilterDto {
  PupilFilterDto({
    this.sortExpression,
    this.pageSize,
    this.pageIndex,
    this.skip,
    this.notSkip,
    this.propertyIncludes,
    this.classId,
    this.keyword,
    this.status,
  });

  factory PupilFilterDto.fromJson(Map<String, dynamic> json) =>
      _$PupilFilterDtoFromJson(json);

  @JsonKey(name: 'sortExpression', includeIfNull: true)
  String? sortExpression;
  @JsonKey(name: 'pageSize', includeIfNull: true)
  int? pageSize;
  @JsonKey(name: 'pageIndex', includeIfNull: true)
  int? pageIndex;
  @JsonKey(name: 'skip', includeIfNull: true)
  int? skip;
  @JsonKey(name: 'notSkip', includeIfNull: true)
  int? notSkip;
  @JsonKey(
      name: 'propertyIncludes', includeIfNull: true, defaultValue: <String>[])
  List<String>? propertyIncludes;
  @JsonKey(name: 'classId', includeIfNull: true)
  int? classId;
  @JsonKey(name: 'keyword', includeIfNull: true)
  String? keyword;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: classUserStatusEnumToJson,
      fromJson: classUserStatusEnumFromJson)
  enums.ClassUserStatusEnum? status;
  static const fromJsonFactory = _$PupilFilterDtoFromJson;
  static const toJsonFactory = _$PupilFilterDtoToJson;
  Map<String, dynamic> toJson() => _$PupilFilterDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class PupilGoToClassCommand {
  PupilGoToClassCommand({
    this.classId,
    this.checkGoToClass,
  });

  factory PupilGoToClassCommand.fromJson(Map<String, dynamic> json) =>
      _$PupilGoToClassCommandFromJson(json);

  @JsonKey(name: 'classId', includeIfNull: true)
  int? classId;
  @JsonKey(name: 'checkGoToClass', includeIfNull: true)
  PupilCheckGoToClassDto? checkGoToClass;
  static const fromJsonFactory = _$PupilGoToClassCommandFromJson;
  static const toJsonFactory = _$PupilGoToClassCommandToJson;
  Map<String, dynamic> toJson() => _$PupilGoToClassCommandToJson(this);
}

@JsonSerializable(explicitToJson: true)
class PupilHistoryDoExamDto {
  PupilHistoryDoExamDto({
    this.assignExamId,
    this.title,
    this.type,
    this.subject,
    this.submitDate,
    this.score,
    this.status,
    this.createdBy,
    this.canMark,
    this.examId,
    this.examResultId,
  });

  factory PupilHistoryDoExamDto.fromJson(Map<String, dynamic> json) =>
      _$PupilHistoryDoExamDtoFromJson(json);

  @JsonKey(name: 'assignExamId', includeIfNull: true)
  int? assignExamId;
  @JsonKey(name: 'title', includeIfNull: true)
  String? title;
  @JsonKey(
      name: 'type',
      includeIfNull: true,
      toJson: assignExamTypeEnumToJson,
      fromJson: assignExamTypeEnumFromJson)
  enums.AssignExamTypeEnum? type;
  @JsonKey(name: 'subject', includeIfNull: true)
  String? subject;
  @JsonKey(name: 'submitDate', includeIfNull: true)
  DateTime? submitDate;
  @JsonKey(name: 'score', includeIfNull: true)
  double? score;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: assignExamUserStatusEnumToJson,
      fromJson: assignExamUserStatusEnumFromJson)
  enums.AssignExamUserStatusEnum? status;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'canMark', includeIfNull: true)
  bool? canMark;
  @JsonKey(name: 'examId', includeIfNull: true)
  int? examId;
  @JsonKey(name: 'examResultId', includeIfNull: true)
  int? examResultId;
  static const fromJsonFactory = _$PupilHistoryDoExamDtoFromJson;
  static const toJsonFactory = _$PupilHistoryDoExamDtoToJson;
  Map<String, dynamic> toJson() => _$PupilHistoryDoExamDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class PupilHistoryDoExamDtoFilterResult {
  PupilHistoryDoExamDtoFilterResult({
    this.totalRows,
    this.data,
  });

  factory PupilHistoryDoExamDtoFilterResult.fromJson(
          Map<String, dynamic> json) =>
      _$PupilHistoryDoExamDtoFilterResultFromJson(json);

  @JsonKey(name: 'totalRows', includeIfNull: true)
  int? totalRows;
  @JsonKey(
      name: 'data',
      includeIfNull: true,
      defaultValue: <PupilHistoryDoExamDto>[])
  List<PupilHistoryDoExamDto>? data;
  static const fromJsonFactory = _$PupilHistoryDoExamDtoFilterResultFromJson;
  static const toJsonFactory = _$PupilHistoryDoExamDtoFilterResultToJson;
  Map<String, dynamic> toJson() =>
      _$PupilHistoryDoExamDtoFilterResultToJson(this);
}

@JsonSerializable(explicitToJson: true)
class PupilHistoryDoExamDtoFilterResultApiResponse {
  PupilHistoryDoExamDtoFilterResultApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory PupilHistoryDoExamDtoFilterResultApiResponse.fromJson(
          Map<String, dynamic> json) =>
      _$PupilHistoryDoExamDtoFilterResultApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  PupilHistoryDoExamDtoFilterResult? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory =
      _$PupilHistoryDoExamDtoFilterResultApiResponseFromJson;
  static const toJsonFactory =
      _$PupilHistoryDoExamDtoFilterResultApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$PupilHistoryDoExamDtoFilterResultApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class PupilHistoryDoExamFilterDto {
  PupilHistoryDoExamFilterDto({
    this.sortExpression,
    this.pageSize,
    this.pageIndex,
    this.skip,
    this.notSkip,
    this.propertyIncludes,
    this.userId,
    this.classId,
    this.subjectId,
    this.keyword,
    this.submitDate,
    this.type,
  });

  factory PupilHistoryDoExamFilterDto.fromJson(Map<String, dynamic> json) =>
      _$PupilHistoryDoExamFilterDtoFromJson(json);

  @JsonKey(name: 'sortExpression', includeIfNull: true)
  String? sortExpression;
  @JsonKey(name: 'pageSize', includeIfNull: true)
  int? pageSize;
  @JsonKey(name: 'pageIndex', includeIfNull: true)
  int? pageIndex;
  @JsonKey(name: 'skip', includeIfNull: true)
  int? skip;
  @JsonKey(name: 'notSkip', includeIfNull: true)
  int? notSkip;
  @JsonKey(
      name: 'propertyIncludes', includeIfNull: true, defaultValue: <String>[])
  List<String>? propertyIncludes;
  @JsonKey(name: 'userId', includeIfNull: true)
  int? userId;
  @JsonKey(name: 'classId', includeIfNull: true)
  int? classId;
  @JsonKey(name: 'subjectId', includeIfNull: true)
  int? subjectId;
  @JsonKey(name: 'keyword', includeIfNull: true)
  String? keyword;
  @JsonKey(name: 'submitDate', includeIfNull: true)
  DateTime? submitDate;
  @JsonKey(
      name: 'type',
      includeIfNull: true,
      toJson: assignExamTypeEnumToJson,
      fromJson: assignExamTypeEnumFromJson)
  enums.AssignExamTypeEnum? type;
  static const fromJsonFactory = _$PupilHistoryDoExamFilterDtoFromJson;
  static const toJsonFactory = _$PupilHistoryDoExamFilterDtoToJson;
  Map<String, dynamic> toJson() => _$PupilHistoryDoExamFilterDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class PupilListDto {
  PupilListDto({
    this.id,
    this.userName,
    this.avatar,
    this.fullName,
    this.email,
    this.phoneNumber,
    this.studentCode,
    this.createdDate,
    this.birthDay,
    this.gender,
    this.status,
    this.identifierCode,
  });

  factory PupilListDto.fromJson(Map<String, dynamic> json) =>
      _$PupilListDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'userName', includeIfNull: true)
  String? userName;
  @JsonKey(name: 'avatar', includeIfNull: true)
  String? avatar;
  @JsonKey(name: 'fullName', includeIfNull: true)
  String? fullName;
  @JsonKey(name: 'email', includeIfNull: true)
  String? email;
  @JsonKey(name: 'phoneNumber', includeIfNull: true)
  String? phoneNumber;
  @JsonKey(name: 'studentCode', includeIfNull: true)
  String? studentCode;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'birthDay', includeIfNull: true)
  DateTime? birthDay;
  @JsonKey(name: 'gender', includeIfNull: true)
  int? gender;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: classUserStatusEnumToJson,
      fromJson: classUserStatusEnumFromJson)
  enums.ClassUserStatusEnum? status;
  @JsonKey(name: 'identifierCode', includeIfNull: true)
  String? identifierCode;
  static const fromJsonFactory = _$PupilListDtoFromJson;
  static const toJsonFactory = _$PupilListDtoToJson;
  Map<String, dynamic> toJson() => _$PupilListDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class PupilListDtoFilterResult {
  PupilListDtoFilterResult({
    this.totalRows,
    this.data,
  });

  factory PupilListDtoFilterResult.fromJson(Map<String, dynamic> json) =>
      _$PupilListDtoFilterResultFromJson(json);

  @JsonKey(name: 'totalRows', includeIfNull: true)
  int? totalRows;
  @JsonKey(name: 'data', includeIfNull: true, defaultValue: <PupilListDto>[])
  List<PupilListDto>? data;
  static const fromJsonFactory = _$PupilListDtoFilterResultFromJson;
  static const toJsonFactory = _$PupilListDtoFilterResultToJson;
  Map<String, dynamic> toJson() => _$PupilListDtoFilterResultToJson(this);
}

@JsonSerializable(explicitToJson: true)
class PupilStaticByTypeExamDto {
  PupilStaticByTypeExamDto({
    this.type,
    this.total,
    this.done,
    this.averageScore,
  });

  factory PupilStaticByTypeExamDto.fromJson(Map<String, dynamic> json) =>
      _$PupilStaticByTypeExamDtoFromJson(json);

  @JsonKey(
      name: 'type',
      includeIfNull: true,
      toJson: assignExamTypeEnumToJson,
      fromJson: assignExamTypeEnumFromJson)
  enums.AssignExamTypeEnum? type;
  @JsonKey(name: 'total', includeIfNull: true)
  int? total;
  @JsonKey(name: 'done', includeIfNull: true)
  int? done;
  @JsonKey(name: 'averageScore', includeIfNull: true)
  double? averageScore;
  static const fromJsonFactory = _$PupilStaticByTypeExamDtoFromJson;
  static const toJsonFactory = _$PupilStaticByTypeExamDtoToJson;
  Map<String, dynamic> toJson() => _$PupilStaticByTypeExamDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class PupilStaticByTypeExamDtoListApiResponse {
  PupilStaticByTypeExamDtoListApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory PupilStaticByTypeExamDtoListApiResponse.fromJson(
          Map<String, dynamic> json) =>
      _$PupilStaticByTypeExamDtoListApiResponseFromJson(json);

  @JsonKey(
      name: 'data',
      includeIfNull: true,
      defaultValue: <PupilStaticByTypeExamDto>[])
  List<PupilStaticByTypeExamDto>? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory =
      _$PupilStaticByTypeExamDtoListApiResponseFromJson;
  static const toJsonFactory = _$PupilStaticByTypeExamDtoListApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$PupilStaticByTypeExamDtoListApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class PupilStaticDto {
  PupilStaticDto({
    this.averageScore,
    this.percentage,
    this.total,
  });

  factory PupilStaticDto.fromJson(Map<String, dynamic> json) =>
      _$PupilStaticDtoFromJson(json);

  @JsonKey(name: 'averageScore', includeIfNull: true)
  double? averageScore;
  @JsonKey(name: 'percentage', includeIfNull: true)
  double? percentage;
  @JsonKey(name: 'total', includeIfNull: true)
  int? total;
  static const fromJsonFactory = _$PupilStaticDtoFromJson;
  static const toJsonFactory = _$PupilStaticDtoToJson;
  Map<String, dynamic> toJson() => _$PupilStaticDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class PupilStaticDtoApiResponse {
  PupilStaticDtoApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory PupilStaticDtoApiResponse.fromJson(Map<String, dynamic> json) =>
      _$PupilStaticDtoApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  PupilStaticDto? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$PupilStaticDtoApiResponseFromJson;
  static const toJsonFactory = _$PupilStaticDtoApiResponseToJson;
  Map<String, dynamic> toJson() => _$PupilStaticDtoApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class PupilStatisticalDto {
  PupilStatisticalDto({
    this.totalClass,
    this.totalExamNeedDo,
    this.totalExam,
    this.totalExamDone,
  });

  factory PupilStatisticalDto.fromJson(Map<String, dynamic> json) =>
      _$PupilStatisticalDtoFromJson(json);

  @JsonKey(name: 'totalClass', includeIfNull: true)
  int? totalClass;
  @JsonKey(name: 'totalExamNeedDo', includeIfNull: true)
  int? totalExamNeedDo;
  @JsonKey(name: 'totalExam', includeIfNull: true)
  int? totalExam;
  @JsonKey(name: 'totalExamDone', includeIfNull: true)
  int? totalExamDone;
  static const fromJsonFactory = _$PupilStatisticalDtoFromJson;
  static const toJsonFactory = _$PupilStatisticalDtoToJson;
  Map<String, dynamic> toJson() => _$PupilStatisticalDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class PupilStatisticalDtoApiResponse {
  PupilStatisticalDtoApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory PupilStatisticalDtoApiResponse.fromJson(Map<String, dynamic> json) =>
      _$PupilStatisticalDtoApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  PupilStatisticalDto? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$PupilStatisticalDtoApiResponseFromJson;
  static const toJsonFactory = _$PupilStatisticalDtoApiResponseToJson;
  Map<String, dynamic> toJson() => _$PupilStatisticalDtoApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class QuestionDto {
  QuestionDto({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.schoolId,
    this.type,
    this.content,
    this.avatar,
    this.image,
    this.answers,
    this.explain,
    this.transcript,
    this.parentId,
    this.sound,
    this.video,
    this.classLevel,
    this.level,
    this.subjectId,
    this.status,
    this.format,
    this.labelType,
    this.isSystem,
    this.tagIds,
    this.mark,
    this.childs,
    this.file,
  });

  factory QuestionDto.fromJson(Map<String, dynamic> json) =>
      _$QuestionDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'schoolId', includeIfNull: true)
  int? schoolId;
  @JsonKey(name: 'type', includeIfNull: true)
  String? type;
  @JsonKey(name: 'content', includeIfNull: true)
  String? content;
  @JsonKey(name: 'avatar', includeIfNull: true)
  String? avatar;
  @JsonKey(name: 'image', includeIfNull: true, defaultValue: <String>[])
  List<String>? image;
  @JsonKey(name: 'answers', includeIfNull: true)
  dynamic answers;
  @JsonKey(name: 'explain', includeIfNull: true)
  String? explain;
  @JsonKey(name: 'transcript', includeIfNull: true)
  String? transcript;
  @JsonKey(name: 'parentId', includeIfNull: true)
  int? parentId;
  @JsonKey(name: 'sound', includeIfNull: true, defaultValue: <String>[])
  List<String>? sound;
  @JsonKey(name: 'video', includeIfNull: true)
  String? video;
  @JsonKey(name: 'classLevel', includeIfNull: true)
  int? classLevel;
  @JsonKey(
      name: 'level',
      includeIfNull: true,
      toJson: questionLevelEnumToJson,
      fromJson: questionLevelEnumFromJson)
  enums.QuestionLevelEnum? level;
  @JsonKey(name: 'subjectId', includeIfNull: true)
  int? subjectId;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: questionStatusEnumToJson,
      fromJson: questionStatusEnumFromJson)
  enums.QuestionStatusEnum? status;
  @JsonKey(
      name: 'format',
      includeIfNull: true,
      toJson: examFormatEnumToJson,
      fromJson: examFormatEnumFromJson)
  enums.ExamFormatEnum? format;
  @JsonKey(name: 'labelType', includeIfNull: true)
  int? labelType;
  @JsonKey(name: 'isSystem', includeIfNull: true)
  bool? isSystem;
  @JsonKey(name: 'tagIds', includeIfNull: true, defaultValue: <int>[])
  List<int>? tagIds;
  @JsonKey(name: 'mark', includeIfNull: true)
  double? mark;
  @JsonKey(name: 'childs', includeIfNull: true, defaultValue: <QuestionDto>[])
  List<QuestionDto>? childs;
  @JsonKey(name: 'file', includeIfNull: true)
  String? file;
  static const fromJsonFactory = _$QuestionDtoFromJson;
  static const toJsonFactory = _$QuestionDtoToJson;
  Map<String, dynamic> toJson() => _$QuestionDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class QuestionDtoApiResponse {
  QuestionDtoApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory QuestionDtoApiResponse.fromJson(Map<String, dynamic> json) =>
      _$QuestionDtoApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  QuestionDto? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$QuestionDtoApiResponseFromJson;
  static const toJsonFactory = _$QuestionDtoApiResponseToJson;
  Map<String, dynamic> toJson() => _$QuestionDtoApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class QuestionDtoListApiResponse {
  QuestionDtoListApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory QuestionDtoListApiResponse.fromJson(Map<String, dynamic> json) =>
      _$QuestionDtoListApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true, defaultValue: <QuestionDto>[])
  List<QuestionDto>? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$QuestionDtoListApiResponseFromJson;
  static const toJsonFactory = _$QuestionDtoListApiResponseToJson;
  Map<String, dynamic> toJson() => _$QuestionDtoListApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class QuestionGetListQuery {
  QuestionGetListQuery({
    this.sortExpression,
    this.pageSize,
    this.pageIndex,
    this.skip,
    this.notSkip,
    this.propertyIncludes,
    this.keyword,
    this.type,
    this.userId,
    this.schoolId,
    this.subjectId,
    this.classLevel,
    this.level,
    this.status,
    this.filterType,
    this.ids,
  });

  factory QuestionGetListQuery.fromJson(Map<String, dynamic> json) =>
      _$QuestionGetListQueryFromJson(json);

  @JsonKey(name: 'sortExpression', includeIfNull: true)
  String? sortExpression;
  @JsonKey(name: 'pageSize', includeIfNull: true)
  int? pageSize;
  @JsonKey(name: 'pageIndex', includeIfNull: true)
  int? pageIndex;
  @JsonKey(name: 'skip', includeIfNull: true)
  int? skip;
  @JsonKey(name: 'notSkip', includeIfNull: true)
  int? notSkip;
  @JsonKey(
      name: 'propertyIncludes', includeIfNull: true, defaultValue: <String>[])
  List<String>? propertyIncludes;
  @JsonKey(name: 'keyword', includeIfNull: true)
  String? keyword;
  @JsonKey(name: 'type', includeIfNull: true)
  String? type;
  @JsonKey(name: 'userId', includeIfNull: true)
  int? userId;
  @JsonKey(name: 'schoolId', includeIfNull: true)
  int? schoolId;
  @JsonKey(name: 'subjectId', includeIfNull: true)
  int? subjectId;
  @JsonKey(name: 'classLevel', includeIfNull: true)
  int? classLevel;
  @JsonKey(
      name: 'level',
      includeIfNull: true,
      toJson: questionLevelEnumToJson,
      fromJson: questionLevelEnumFromJson)
  enums.QuestionLevelEnum? level;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: questionStatusEnumToJson,
      fromJson: questionStatusEnumFromJson)
  enums.QuestionStatusEnum? status;
  @JsonKey(name: 'filterType', includeIfNull: true)
  int? filterType;
  @JsonKey(name: 'ids', includeIfNull: true, defaultValue: <int>[])
  List<int>? ids;
  static const fromJsonFactory = _$QuestionGetListQueryFromJson;
  static const toJsonFactory = _$QuestionGetListQueryToJson;
  Map<String, dynamic> toJson() => _$QuestionGetListQueryToJson(this);
}

@JsonSerializable(explicitToJson: true)
class QuestionListDto {
  QuestionListDto({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.schoolId,
    this.type,
    this.content,
    this.avatar,
    this.image,
    this.answers,
    this.explain,
    this.transcript,
    this.parentId,
    this.sound,
    this.video,
    this.classLevel,
    this.level,
    this.subjectId,
    this.status,
    this.format,
    this.labelType,
    this.isSystem,
    this.isLike,
  });

  factory QuestionListDto.fromJson(Map<String, dynamic> json) =>
      _$QuestionListDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'schoolId', includeIfNull: true)
  int? schoolId;
  @JsonKey(name: 'type', includeIfNull: true)
  String? type;
  @JsonKey(name: 'content', includeIfNull: true)
  String? content;
  @JsonKey(name: 'avatar', includeIfNull: true)
  String? avatar;
  @JsonKey(name: 'image', includeIfNull: true, defaultValue: <String>[])
  List<String>? image;
  @JsonKey(name: 'answers', includeIfNull: true)
  String? answers;
  @JsonKey(name: 'explain', includeIfNull: true)
  String? explain;
  @JsonKey(name: 'transcript', includeIfNull: true)
  String? transcript;
  @JsonKey(name: 'parentId', includeIfNull: true)
  int? parentId;
  @JsonKey(name: 'sound', includeIfNull: true, defaultValue: <String>[])
  List<String>? sound;
  @JsonKey(name: 'video', includeIfNull: true)
  String? video;
  @JsonKey(name: 'classLevel', includeIfNull: true)
  int? classLevel;
  @JsonKey(
      name: 'level',
      includeIfNull: true,
      toJson: questionLevelEnumToJson,
      fromJson: questionLevelEnumFromJson)
  enums.QuestionLevelEnum? level;
  @JsonKey(name: 'subjectId', includeIfNull: true)
  int? subjectId;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: questionStatusEnumToJson,
      fromJson: questionStatusEnumFromJson)
  enums.QuestionStatusEnum? status;
  @JsonKey(
      name: 'format',
      includeIfNull: true,
      toJson: examFormatEnumToJson,
      fromJson: examFormatEnumFromJson)
  enums.ExamFormatEnum? format;
  @JsonKey(name: 'labelType', includeIfNull: true)
  int? labelType;
  @JsonKey(name: 'isSystem', includeIfNull: true)
  bool? isSystem;
  @JsonKey(name: 'isLike', includeIfNull: true)
  bool? isLike;
  static const fromJsonFactory = _$QuestionListDtoFromJson;
  static const toJsonFactory = _$QuestionListDtoToJson;
  Map<String, dynamic> toJson() => _$QuestionListDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class QuestionListDtoFilterResult {
  QuestionListDtoFilterResult({
    this.totalRows,
    this.data,
  });

  factory QuestionListDtoFilterResult.fromJson(Map<String, dynamic> json) =>
      _$QuestionListDtoFilterResultFromJson(json);

  @JsonKey(name: 'totalRows', includeIfNull: true)
  int? totalRows;
  @JsonKey(name: 'data', includeIfNull: true, defaultValue: <QuestionListDto>[])
  List<QuestionListDto>? data;
  static const fromJsonFactory = _$QuestionListDtoFilterResultFromJson;
  static const toJsonFactory = _$QuestionListDtoFilterResultToJson;
  Map<String, dynamic> toJson() => _$QuestionListDtoFilterResultToJson(this);
}

@JsonSerializable(explicitToJson: true)
class QuestionListDtoFilterResultApiResponse {
  QuestionListDtoFilterResultApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory QuestionListDtoFilterResultApiResponse.fromJson(
          Map<String, dynamic> json) =>
      _$QuestionListDtoFilterResultApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  QuestionListDtoFilterResult? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory =
      _$QuestionListDtoFilterResultApiResponseFromJson;
  static const toJsonFactory = _$QuestionListDtoFilterResultApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$QuestionListDtoFilterResultApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class RefreshTokenEntity {
  RefreshTokenEntity({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.token,
    this.userId,
    this.user,
    this.expires,
    this.isExpired,
    this.revoked,
    this.isActive,
  });

  factory RefreshTokenEntity.fromJson(Map<String, dynamic> json) =>
      _$RefreshTokenEntityFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'token', includeIfNull: true)
  String? token;
  @JsonKey(name: 'userId', includeIfNull: true)
  int? userId;
  @JsonKey(name: 'user', includeIfNull: true)
  UserEntity? user;
  @JsonKey(name: 'expires', includeIfNull: true)
  DateTime? expires;
  @JsonKey(name: 'isExpired', includeIfNull: true)
  bool? isExpired;
  @JsonKey(name: 'revoked', includeIfNull: true)
  DateTime? revoked;
  @JsonKey(name: 'isActive', includeIfNull: true)
  bool? isActive;
  static const fromJsonFactory = _$RefreshTokenEntityFromJson;
  static const toJsonFactory = _$RefreshTokenEntityToJson;
  Map<String, dynamic> toJson() => _$RefreshTokenEntityToJson(this);
}

@JsonSerializable(explicitToJson: true)
class RefreshTokenRequestDto {
  RefreshTokenRequestDto({
    this.refreshToken,
  });

  factory RefreshTokenRequestDto.fromJson(Map<String, dynamic> json) =>
      _$RefreshTokenRequestDtoFromJson(json);

  @JsonKey(name: 'refreshToken', includeIfNull: true)
  String? refreshToken;
  static const fromJsonFactory = _$RefreshTokenRequestDtoFromJson;
  static const toJsonFactory = _$RefreshTokenRequestDtoToJson;
  Map<String, dynamic> toJson() => _$RefreshTokenRequestDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class RefreshTokenResponseDto {
  RefreshTokenResponseDto({
    this.token,
  });

  factory RefreshTokenResponseDto.fromJson(Map<String, dynamic> json) =>
      _$RefreshTokenResponseDtoFromJson(json);

  @JsonKey(name: 'token', includeIfNull: true)
  String? token;
  static const fromJsonFactory = _$RefreshTokenResponseDtoFromJson;
  static const toJsonFactory = _$RefreshTokenResponseDtoToJson;
  Map<String, dynamic> toJson() => _$RefreshTokenResponseDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class RefreshTokenResponseDtoApiResponse {
  RefreshTokenResponseDtoApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory RefreshTokenResponseDtoApiResponse.fromJson(
          Map<String, dynamic> json) =>
      _$RefreshTokenResponseDtoApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  RefreshTokenResponseDto? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$RefreshTokenResponseDtoApiResponseFromJson;
  static const toJsonFactory = _$RefreshTokenResponseDtoApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$RefreshTokenResponseDtoApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class RegisterDto {
  RegisterDto({
    this.userName,
    this.email,
    this.password,
    this.fullName,
    this.phoneNumber,
    this.roles,
    this.id,
    this.avatar,
    this.status,
    this.type,
    this.objectId,
    this.provinceId,
    this.identifierCode,
    this.birthDay,
    this.gender,
    this.address,
  });

  factory RegisterDto.fromJson(Map<String, dynamic> json) =>
      _$RegisterDtoFromJson(json);

  @JsonKey(name: 'userName', includeIfNull: true)
  String? userName;
  @JsonKey(name: 'email', includeIfNull: true)
  String? email;
  @JsonKey(name: 'password', includeIfNull: true)
  String? password;
  @JsonKey(name: 'fullName', includeIfNull: true)
  String? fullName;
  @JsonKey(name: 'phoneNumber', includeIfNull: true)
  String? phoneNumber;
  @JsonKey(name: 'roles', includeIfNull: true, defaultValue: <int>[])
  List<int>? roles;
  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'avatar', includeIfNull: true)
  String? avatar;
  @JsonKey(name: 'status', includeIfNull: true)
  int? status;
  @JsonKey(
      name: 'type',
      includeIfNull: true,
      toJson: userTypeEnumToJson,
      fromJson: userTypeEnumFromJson)
  enums.UserTypeEnum? type;
  @JsonKey(name: 'objectId', includeIfNull: true)
  int? objectId;
  @JsonKey(name: 'provinceId', includeIfNull: true)
  int? provinceId;
  @JsonKey(name: 'identifierCode', includeIfNull: true)
  String? identifierCode;
  @JsonKey(name: 'birthDay', includeIfNull: true)
  DateTime? birthDay;
  @JsonKey(name: 'gender', includeIfNull: true)
  int? gender;
  @JsonKey(name: 'address', includeIfNull: true)
  String? address;
  static const fromJsonFactory = _$RegisterDtoFromJson;
  static const toJsonFactory = _$RegisterDtoToJson;
  Map<String, dynamic> toJson() => _$RegisterDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class RegisterDtoApiResponse {
  RegisterDtoApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory RegisterDtoApiResponse.fromJson(Map<String, dynamic> json) =>
      _$RegisterDtoApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  RegisterDto? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$RegisterDtoApiResponseFromJson;
  static const toJsonFactory = _$RegisterDtoApiResponseToJson;
  Map<String, dynamic> toJson() => _$RegisterDtoApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ResetPasswordByUserNameResource {
  ResetPasswordByUserNameResource({
    this.username,
    this.password,
    this.rePassword,
    this.token,
  });

  factory ResetPasswordByUserNameResource.fromJson(Map<String, dynamic> json) =>
      _$ResetPasswordByUserNameResourceFromJson(json);

  @JsonKey(name: 'username', includeIfNull: true)
  String? username;
  @JsonKey(name: 'password', includeIfNull: true)
  String? password;
  @JsonKey(name: 'rePassword', includeIfNull: true)
  String? rePassword;
  @JsonKey(name: 'token', includeIfNull: true)
  String? token;
  static const fromJsonFactory = _$ResetPasswordByUserNameResourceFromJson;
  static const toJsonFactory = _$ResetPasswordByUserNameResourceToJson;
  Map<String, dynamic> toJson() =>
      _$ResetPasswordByUserNameResourceToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ResponseX {
  ResponseX({
    this.sessionId,
    this.fileId,
    this.docType,
    this.pages,
  });

  factory ResponseX.fromJson(Map<String, dynamic> json) =>
      _$ResponseXFromJson(json);

  @JsonKey(name: 'sessionId', includeIfNull: true)
  int? sessionId;
  @JsonKey(name: 'fileId', includeIfNull: true)
  int? fileId;
  @JsonKey(name: 'docType', includeIfNull: true)
  String? docType;
  @JsonKey(name: 'pages', includeIfNull: true)
  Object? pages;
  static const fromJsonFactory = _$ResponseXFromJson;
  static const toJsonFactory = _$ResponseXToJson;
  Map<String, dynamic> toJson() => _$ResponseXToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ResponseXApiResponse {
  ResponseXApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory ResponseXApiResponse.fromJson(Map<String, dynamic> json) =>
      _$ResponseXApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  ResponseX? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$ResponseXApiResponseFromJson;
  static const toJsonFactory = _$ResponseXApiResponseToJson;
  Map<String, dynamic> toJson() => _$ResponseXApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class RoleDto {
  RoleDto({
    this.id,
    this.name,
    this.userCount,
    this.listModule,
  });

  factory RoleDto.fromJson(Map<String, dynamic> json) =>
      _$RoleDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(name: 'userCount', includeIfNull: true)
  int? userCount;
  @JsonKey(
      name: 'listModule', includeIfNull: true, defaultValue: <RoleModuleDto>[])
  List<RoleModuleDto>? listModule;
  static const fromJsonFactory = _$RoleDtoFromJson;
  static const toJsonFactory = _$RoleDtoToJson;
  Map<String, dynamic> toJson() => _$RoleDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class RoleDtoApiResponse {
  RoleDtoApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory RoleDtoApiResponse.fromJson(Map<String, dynamic> json) =>
      _$RoleDtoApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  RoleDto? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$RoleDtoApiResponseFromJson;
  static const toJsonFactory = _$RoleDtoApiResponseToJson;
  Map<String, dynamic> toJson() => _$RoleDtoApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class RoleDtoListApiResponse {
  RoleDtoListApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory RoleDtoListApiResponse.fromJson(Map<String, dynamic> json) =>
      _$RoleDtoListApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true, defaultValue: <RoleDto>[])
  List<RoleDto>? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$RoleDtoListApiResponseFromJson;
  static const toJsonFactory = _$RoleDtoListApiResponseToJson;
  Map<String, dynamic> toJson() => _$RoleDtoListApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class RoleModuleDto {
  RoleModuleDto({
    this.module,
    this.moduleName,
    this.isZone,
    this.isFull,
    this.tenantId,
    this.permissions,
  });

  factory RoleModuleDto.fromJson(Map<String, dynamic> json) =>
      _$RoleModuleDtoFromJson(json);

  @JsonKey(
      name: 'module',
      includeIfNull: true,
      toJson: moduleEnumToJson,
      fromJson: moduleEnumFromJson)
  enums.ModuleEnum? module;
  @JsonKey(name: 'moduleName', includeIfNull: true)
  String? moduleName;
  @JsonKey(name: 'isZone', includeIfNull: true)
  bool? isZone;
  @JsonKey(name: 'isFull', includeIfNull: true)
  bool? isFull;
  @JsonKey(name: 'tenantId', includeIfNull: true)
  int? tenantId;
  @JsonKey(
      name: 'permissions',
      includeIfNull: true,
      defaultValue: <RolePermissionDto>[])
  List<RolePermissionDto>? permissions;
  static const fromJsonFactory = _$RoleModuleDtoFromJson;
  static const toJsonFactory = _$RoleModuleDtoToJson;
  Map<String, dynamic> toJson() => _$RoleModuleDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class RoleModuleDtoListApiResponse {
  RoleModuleDtoListApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory RoleModuleDtoListApiResponse.fromJson(Map<String, dynamic> json) =>
      _$RoleModuleDtoListApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true, defaultValue: <RoleModuleDto>[])
  List<RoleModuleDto>? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$RoleModuleDtoListApiResponseFromJson;
  static const toJsonFactory = _$RoleModuleDtoListApiResponseToJson;
  Map<String, dynamic> toJson() => _$RoleModuleDtoListApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class RolePermissionDto {
  RolePermissionDto({
    this.fullZone,
    this.zoneIds,
    this.permission,
  });

  factory RolePermissionDto.fromJson(Map<String, dynamic> json) =>
      _$RolePermissionDtoFromJson(json);

  @JsonKey(name: 'fullZone', includeIfNull: true)
  bool? fullZone;
  @JsonKey(name: 'zoneIds', includeIfNull: true, defaultValue: <int>[])
  List<int>? zoneIds;
  @JsonKey(name: 'permission', includeIfNull: true)
  int? permission;
  static const fromJsonFactory = _$RolePermissionDtoFromJson;
  static const toJsonFactory = _$RolePermissionDtoToJson;
  Map<String, dynamic> toJson() => _$RolePermissionDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class SafetySkillEntity {
  SafetySkillEntity({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.name,
    this.summary,
    this.detail,
    this.icon,
    this.image,
    this.status,
  });

  factory SafetySkillEntity.fromJson(Map<String, dynamic> json) =>
      _$SafetySkillEntityFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(name: 'summary', includeIfNull: true)
  String? summary;
  @JsonKey(name: 'detail', includeIfNull: true)
  String? detail;
  @JsonKey(name: 'icon', includeIfNull: true)
  String? icon;
  @JsonKey(name: 'image', includeIfNull: true)
  String? image;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: commonStatusEnumToJson,
      fromJson: commonStatusEnumFromJson)
  enums.CommonStatusEnum? status;
  static const fromJsonFactory = _$SafetySkillEntityFromJson;
  static const toJsonFactory = _$SafetySkillEntityToJson;
  Map<String, dynamic> toJson() => _$SafetySkillEntityToJson(this);
}

@JsonSerializable(explicitToJson: true)
class SafetySkillEntityApiResponse {
  SafetySkillEntityApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory SafetySkillEntityApiResponse.fromJson(Map<String, dynamic> json) =>
      _$SafetySkillEntityApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  SafetySkillEntity? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$SafetySkillEntityApiResponseFromJson;
  static const toJsonFactory = _$SafetySkillEntityApiResponseToJson;
  Map<String, dynamic> toJson() => _$SafetySkillEntityApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class SafetySkillGetListQuery {
  SafetySkillGetListQuery({
    this.sortExpression,
    this.pageSize,
    this.pageIndex,
    this.skip,
    this.notSkip,
    this.propertyIncludes,
    this.keyword,
  });

  factory SafetySkillGetListQuery.fromJson(Map<String, dynamic> json) =>
      _$SafetySkillGetListQueryFromJson(json);

  @JsonKey(name: 'sortExpression', includeIfNull: true)
  String? sortExpression;
  @JsonKey(name: 'pageSize', includeIfNull: true)
  int? pageSize;
  @JsonKey(name: 'pageIndex', includeIfNull: true)
  int? pageIndex;
  @JsonKey(name: 'skip', includeIfNull: true)
  int? skip;
  @JsonKey(name: 'notSkip', includeIfNull: true)
  int? notSkip;
  @JsonKey(
      name: 'propertyIncludes', includeIfNull: true, defaultValue: <String>[])
  List<String>? propertyIncludes;
  @JsonKey(name: 'keyword', includeIfNull: true)
  String? keyword;
  static const fromJsonFactory = _$SafetySkillGetListQueryFromJson;
  static const toJsonFactory = _$SafetySkillGetListQueryToJson;
  Map<String, dynamic> toJson() => _$SafetySkillGetListQueryToJson(this);
}

@JsonSerializable(explicitToJson: true)
class SafetySkillListDto {
  SafetySkillListDto({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.name,
    this.summary,
    this.detail,
    this.icon,
    this.image,
    this.status,
  });

  factory SafetySkillListDto.fromJson(Map<String, dynamic> json) =>
      _$SafetySkillListDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(name: 'summary', includeIfNull: true)
  String? summary;
  @JsonKey(name: 'detail', includeIfNull: true)
  String? detail;
  @JsonKey(name: 'icon', includeIfNull: true)
  String? icon;
  @JsonKey(name: 'image', includeIfNull: true)
  String? image;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: commonStatusEnumToJson,
      fromJson: commonStatusEnumFromJson)
  enums.CommonStatusEnum? status;
  static const fromJsonFactory = _$SafetySkillListDtoFromJson;
  static const toJsonFactory = _$SafetySkillListDtoToJson;
  Map<String, dynamic> toJson() => _$SafetySkillListDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class SafetySkillListDtoFilterResult {
  SafetySkillListDtoFilterResult({
    this.totalRows,
    this.data,
  });

  factory SafetySkillListDtoFilterResult.fromJson(Map<String, dynamic> json) =>
      _$SafetySkillListDtoFilterResultFromJson(json);

  @JsonKey(name: 'totalRows', includeIfNull: true)
  int? totalRows;
  @JsonKey(
      name: 'data', includeIfNull: true, defaultValue: <SafetySkillListDto>[])
  List<SafetySkillListDto>? data;
  static const fromJsonFactory = _$SafetySkillListDtoFilterResultFromJson;
  static const toJsonFactory = _$SafetySkillListDtoFilterResultToJson;
  Map<String, dynamic> toJson() => _$SafetySkillListDtoFilterResultToJson(this);
}

@JsonSerializable(explicitToJson: true)
class SafetySkillListDtoFilterResultApiResponse {
  SafetySkillListDtoFilterResultApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory SafetySkillListDtoFilterResultApiResponse.fromJson(
          Map<String, dynamic> json) =>
      _$SafetySkillListDtoFilterResultApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  SafetySkillListDtoFilterResult? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory =
      _$SafetySkillListDtoFilterResultApiResponseFromJson;
  static const toJsonFactory =
      _$SafetySkillListDtoFilterResultApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$SafetySkillListDtoFilterResultApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class SchoolClassDto {
  SchoolClassDto({
    this.id,
    this.name,
    this.classes,
  });

  factory SchoolClassDto.fromJson(Map<String, dynamic> json) =>
      _$SchoolClassDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(
      name: 'classes', includeIfNull: true, defaultValue: <ClassShortDto>[])
  List<ClassShortDto>? classes;
  static const fromJsonFactory = _$SchoolClassDtoFromJson;
  static const toJsonFactory = _$SchoolClassDtoToJson;
  Map<String, dynamic> toJson() => _$SchoolClassDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class SchoolDto {
  SchoolDto({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.code,
    this.name,
    this.status,
    this.districtId,
    this.provinceId,
    this.wardId,
    this.address,
    this.email,
    this.phone,
    this.logo,
    this.url,
    this.description,
    this.type,
    this.departmentId,
  });

  factory SchoolDto.fromJson(Map<String, dynamic> json) =>
      _$SchoolDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'code', includeIfNull: true)
  String? code;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: schoolStatusEnumToJson,
      fromJson: schoolStatusEnumFromJson)
  enums.SchoolStatusEnum? status;
  @JsonKey(name: 'districtId', includeIfNull: true)
  int? districtId;
  @JsonKey(name: 'provinceId', includeIfNull: true)
  int? provinceId;
  @JsonKey(name: 'wardId', includeIfNull: true)
  int? wardId;
  @JsonKey(name: 'address', includeIfNull: true)
  String? address;
  @JsonKey(name: 'email', includeIfNull: true)
  String? email;
  @JsonKey(name: 'phone', includeIfNull: true)
  String? phone;
  @JsonKey(name: 'logo', includeIfNull: true)
  String? logo;
  @JsonKey(name: 'url', includeIfNull: true)
  String? url;
  @JsonKey(name: 'description', includeIfNull: true)
  String? description;
  @JsonKey(name: 'type', includeIfNull: true)
  String? type;
  @JsonKey(name: 'departmentId', includeIfNull: true)
  int? departmentId;
  static const fromJsonFactory = _$SchoolDtoFromJson;
  static const toJsonFactory = _$SchoolDtoToJson;
  Map<String, dynamic> toJson() => _$SchoolDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class SchoolDtoApiResponse {
  SchoolDtoApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory SchoolDtoApiResponse.fromJson(Map<String, dynamic> json) =>
      _$SchoolDtoApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  SchoolDto? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$SchoolDtoApiResponseFromJson;
  static const toJsonFactory = _$SchoolDtoApiResponseToJson;
  Map<String, dynamic> toJson() => _$SchoolDtoApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class SchoolEntity {
  SchoolEntity({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.code,
    this.name,
    this.status,
    this.districtId,
    this.provinceId,
    this.wardId,
    this.address,
    this.email,
    this.phone,
    this.logo,
    this.url,
    this.description,
    this.type,
  });

  factory SchoolEntity.fromJson(Map<String, dynamic> json) =>
      _$SchoolEntityFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'code', includeIfNull: true)
  String? code;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: schoolStatusEnumToJson,
      fromJson: schoolStatusEnumFromJson)
  enums.SchoolStatusEnum? status;
  @JsonKey(name: 'districtId', includeIfNull: true)
  int? districtId;
  @JsonKey(name: 'provinceId', includeIfNull: true)
  int? provinceId;
  @JsonKey(name: 'wardId', includeIfNull: true)
  int? wardId;
  @JsonKey(name: 'address', includeIfNull: true)
  String? address;
  @JsonKey(name: 'email', includeIfNull: true)
  String? email;
  @JsonKey(name: 'phone', includeIfNull: true)
  String? phone;
  @JsonKey(name: 'logo', includeIfNull: true)
  String? logo;
  @JsonKey(name: 'url', includeIfNull: true)
  String? url;
  @JsonKey(name: 'description', includeIfNull: true)
  String? description;
  @JsonKey(name: 'type', includeIfNull: true)
  String? type;
  static const fromJsonFactory = _$SchoolEntityFromJson;
  static const toJsonFactory = _$SchoolEntityToJson;
  Map<String, dynamic> toJson() => _$SchoolEntityToJson(this);
}

@JsonSerializable(explicitToJson: true)
class SchoolEntityApiResponse {
  SchoolEntityApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory SchoolEntityApiResponse.fromJson(Map<String, dynamic> json) =>
      _$SchoolEntityApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  SchoolEntity? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$SchoolEntityApiResponseFromJson;
  static const toJsonFactory = _$SchoolEntityApiResponseToJson;
  Map<String, dynamic> toJson() => _$SchoolEntityApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class SchoolGetListQuery {
  SchoolGetListQuery({
    this.sortExpression,
    this.pageSize,
    this.pageIndex,
    this.skip,
    this.notSkip,
    this.propertyIncludes,
    this.keyword,
    this.departmentId,
    this.officeId,
    this.type,
    this.status,
  });

  factory SchoolGetListQuery.fromJson(Map<String, dynamic> json) =>
      _$SchoolGetListQueryFromJson(json);

  @JsonKey(name: 'sortExpression', includeIfNull: true)
  String? sortExpression;
  @JsonKey(name: 'pageSize', includeIfNull: true)
  int? pageSize;
  @JsonKey(name: 'pageIndex', includeIfNull: true)
  int? pageIndex;
  @JsonKey(name: 'skip', includeIfNull: true)
  int? skip;
  @JsonKey(name: 'notSkip', includeIfNull: true)
  int? notSkip;
  @JsonKey(
      name: 'propertyIncludes', includeIfNull: true, defaultValue: <String>[])
  List<String>? propertyIncludes;
  @JsonKey(name: 'keyword', includeIfNull: true)
  String? keyword;
  @JsonKey(name: 'departmentId', includeIfNull: true)
  int? departmentId;
  @JsonKey(name: 'officeId', includeIfNull: true)
  int? officeId;
  @JsonKey(name: 'type', includeIfNull: true)
  int? type;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: schoolStatusEnumToJson,
      fromJson: schoolStatusEnumFromJson)
  enums.SchoolStatusEnum? status;
  static const fromJsonFactory = _$SchoolGetListQueryFromJson;
  static const toJsonFactory = _$SchoolGetListQueryToJson;
  Map<String, dynamic> toJson() => _$SchoolGetListQueryToJson(this);
}

@JsonSerializable(explicitToJson: true)
class SchoolLevel {
  SchoolLevel({
    this.id,
    this.name,
    this.classLevels,
  });

  factory SchoolLevel.fromJson(Map<String, dynamic> json) =>
      _$SchoolLevelFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(
      name: 'classLevels', includeIfNull: true, defaultValue: <ClassLevel>[])
  List<ClassLevel>? classLevels;
  static const fromJsonFactory = _$SchoolLevelFromJson;
  static const toJsonFactory = _$SchoolLevelToJson;
  Map<String, dynamic> toJson() => _$SchoolLevelToJson(this);
}

@JsonSerializable(explicitToJson: true)
class SchoolListDto {
  SchoolListDto({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.code,
    this.name,
    this.status,
    this.districtId,
    this.provinceId,
    this.wardId,
    this.address,
    this.email,
    this.phone,
    this.logo,
    this.url,
    this.description,
    this.type,
    this.countActiveClass,
    this.departmentName,
    this.officeName,
    this.studentCount,
    this.teacherCount,
  });

  factory SchoolListDto.fromJson(Map<String, dynamic> json) =>
      _$SchoolListDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'code', includeIfNull: true)
  String? code;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: schoolStatusEnumToJson,
      fromJson: schoolStatusEnumFromJson)
  enums.SchoolStatusEnum? status;
  @JsonKey(name: 'districtId', includeIfNull: true)
  int? districtId;
  @JsonKey(name: 'provinceId', includeIfNull: true)
  int? provinceId;
  @JsonKey(name: 'wardId', includeIfNull: true)
  int? wardId;
  @JsonKey(name: 'address', includeIfNull: true)
  String? address;
  @JsonKey(name: 'email', includeIfNull: true)
  String? email;
  @JsonKey(name: 'phone', includeIfNull: true)
  String? phone;
  @JsonKey(name: 'logo', includeIfNull: true)
  String? logo;
  @JsonKey(name: 'url', includeIfNull: true)
  String? url;
  @JsonKey(name: 'description', includeIfNull: true)
  String? description;
  @JsonKey(name: 'type', includeIfNull: true)
  String? type;
  @JsonKey(name: 'countActiveClass', includeIfNull: true)
  int? countActiveClass;
  @JsonKey(name: 'departmentName', includeIfNull: true)
  String? departmentName;
  @JsonKey(name: 'officeName', includeIfNull: true)
  String? officeName;
  @JsonKey(name: 'studentCount', includeIfNull: true)
  int? studentCount;
  @JsonKey(name: 'teacherCount', includeIfNull: true)
  int? teacherCount;
  static const fromJsonFactory = _$SchoolListDtoFromJson;
  static const toJsonFactory = _$SchoolListDtoToJson;
  Map<String, dynamic> toJson() => _$SchoolListDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class SchoolListDtoFilterResult {
  SchoolListDtoFilterResult({
    this.totalRows,
    this.data,
  });

  factory SchoolListDtoFilterResult.fromJson(Map<String, dynamic> json) =>
      _$SchoolListDtoFilterResultFromJson(json);

  @JsonKey(name: 'totalRows', includeIfNull: true)
  int? totalRows;
  @JsonKey(name: 'data', includeIfNull: true, defaultValue: <SchoolListDto>[])
  List<SchoolListDto>? data;
  static const fromJsonFactory = _$SchoolListDtoFilterResultFromJson;
  static const toJsonFactory = _$SchoolListDtoFilterResultToJson;
  Map<String, dynamic> toJson() => _$SchoolListDtoFilterResultToJson(this);
}

@JsonSerializable(explicitToJson: true)
class SchoolListDtoFilterResultApiResponse {
  SchoolListDtoFilterResultApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory SchoolListDtoFilterResultApiResponse.fromJson(
          Map<String, dynamic> json) =>
      _$SchoolListDtoFilterResultApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  SchoolListDtoFilterResult? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$SchoolListDtoFilterResultApiResponseFromJson;
  static const toJsonFactory = _$SchoolListDtoFilterResultApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$SchoolListDtoFilterResultApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class SchoolListDtoListApiResponse {
  SchoolListDtoListApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory SchoolListDtoListApiResponse.fromJson(Map<String, dynamic> json) =>
      _$SchoolListDtoListApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true, defaultValue: <SchoolListDto>[])
  List<SchoolListDto>? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$SchoolListDtoListApiResponseFromJson;
  static const toJsonFactory = _$SchoolListDtoListApiResponseToJson;
  Map<String, dynamic> toJson() => _$SchoolListDtoListApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class SchoolStaticCountDto {
  SchoolStaticCountDto({
    this.schoolName,
    this.classCount,
    this.teacherCount,
    this.assignmentCount,
  });

  factory SchoolStaticCountDto.fromJson(Map<String, dynamic> json) =>
      _$SchoolStaticCountDtoFromJson(json);

  @JsonKey(name: 'schoolName', includeIfNull: true)
  String? schoolName;
  @JsonKey(name: 'classCount', includeIfNull: true)
  int? classCount;
  @JsonKey(name: 'teacherCount', includeIfNull: true)
  int? teacherCount;
  @JsonKey(name: 'assignmentCount', includeIfNull: true)
  int? assignmentCount;
  static const fromJsonFactory = _$SchoolStaticCountDtoFromJson;
  static const toJsonFactory = _$SchoolStaticCountDtoToJson;
  Map<String, dynamic> toJson() => _$SchoolStaticCountDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class SchoolStaticCountDtoApiResponse {
  SchoolStaticCountDtoApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory SchoolStaticCountDtoApiResponse.fromJson(Map<String, dynamic> json) =>
      _$SchoolStaticCountDtoApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  SchoolStaticCountDto? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$SchoolStaticCountDtoApiResponseFromJson;
  static const toJsonFactory = _$SchoolStaticCountDtoApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$SchoolStaticCountDtoApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class SessionAttendanceEntity {
  SessionAttendanceEntity({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.sessionId,
    this.userId,
    this.joinTime,
    this.leaveTime,
    this.durationMinutes,
    this.status,
    this.notes,
    this.session,
    this.user,
  });

  factory SessionAttendanceEntity.fromJson(Map<String, dynamic> json) =>
      _$SessionAttendanceEntityFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'sessionId', includeIfNull: true)
  int? sessionId;
  @JsonKey(name: 'userId', includeIfNull: true)
  int? userId;
  @JsonKey(name: 'joinTime', includeIfNull: true)
  DateTime? joinTime;
  @JsonKey(name: 'leaveTime', includeIfNull: true)
  DateTime? leaveTime;
  @JsonKey(name: 'durationMinutes', includeIfNull: true)
  int? durationMinutes;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: attendanceStatusEnumToJson,
      fromJson: attendanceStatusEnumFromJson)
  enums.AttendanceStatusEnum? status;
  @JsonKey(name: 'notes', includeIfNull: true)
  String? notes;
  @JsonKey(name: 'session', includeIfNull: true)
  ClassSessionEntity? session;
  @JsonKey(name: 'user', includeIfNull: true)
  UserEntity? user;
  static const fromJsonFactory = _$SessionAttendanceEntityFromJson;
  static const toJsonFactory = _$SessionAttendanceEntityToJson;
  Map<String, dynamic> toJson() => _$SessionAttendanceEntityToJson(this);
}

@JsonSerializable(explicitToJson: true)
class Setup2FADto {
  Setup2FADto({
    this.sharedKey,
    this.authenticatorUri,
  });

  factory Setup2FADto.fromJson(Map<String, dynamic> json) =>
      _$Setup2FADtoFromJson(json);

  @JsonKey(name: 'sharedKey', includeIfNull: true)
  String? sharedKey;
  @JsonKey(name: 'authenticatorUri', includeIfNull: true)
  String? authenticatorUri;
  static const fromJsonFactory = _$Setup2FADtoFromJson;
  static const toJsonFactory = _$Setup2FADtoToJson;
  Map<String, dynamic> toJson() => _$Setup2FADtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class SimpleChatRequest {
  SimpleChatRequest({
    this.message,
    this.systemPrompt,
  });

  factory SimpleChatRequest.fromJson(Map<String, dynamic> json) =>
      _$SimpleChatRequestFromJson(json);

  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'systemPrompt', includeIfNull: true)
  String? systemPrompt;
  static const fromJsonFactory = _$SimpleChatRequestFromJson;
  static const toJsonFactory = _$SimpleChatRequestToJson;
  Map<String, dynamic> toJson() => _$SimpleChatRequestToJson(this);
}

@JsonSerializable(explicitToJson: true)
class StatisticalDto {
  StatisticalDto({
    this.totalClass,
    this.totalStudent,
    this.totalExam,
    this.totalQuestion,
  });

  factory StatisticalDto.fromJson(Map<String, dynamic> json) =>
      _$StatisticalDtoFromJson(json);

  @JsonKey(name: 'totalClass', includeIfNull: true)
  int? totalClass;
  @JsonKey(name: 'totalStudent', includeIfNull: true)
  int? totalStudent;
  @JsonKey(name: 'totalExam', includeIfNull: true)
  int? totalExam;
  @JsonKey(name: 'totalQuestion', includeIfNull: true)
  int? totalQuestion;
  static const fromJsonFactory = _$StatisticalDtoFromJson;
  static const toJsonFactory = _$StatisticalDtoToJson;
  Map<String, dynamic> toJson() => _$StatisticalDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class StatisticalDtoApiResponse {
  StatisticalDtoApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory StatisticalDtoApiResponse.fromJson(Map<String, dynamic> json) =>
      _$StatisticalDtoApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  StatisticalDto? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$StatisticalDtoApiResponseFromJson;
  static const toJsonFactory = _$StatisticalDtoApiResponseToJson;
  Map<String, dynamic> toJson() => _$StatisticalDtoApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class Subject {
  Subject({
    this.id,
    this.name,
  });

  factory Subject.fromJson(Map<String, dynamic> json) =>
      _$SubjectFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  static const fromJsonFactory = _$SubjectFromJson;
  static const toJsonFactory = _$SubjectToJson;
  Map<String, dynamic> toJson() => _$SubjectToJson(this);
}

@JsonSerializable(explicitToJson: true)
class SystemEnums {
  SystemEnums({
    this.code,
    this.values,
    this.items,
  });

  factory SystemEnums.fromJson(Map<String, dynamic> json) =>
      _$SystemEnumsFromJson(json);

  @JsonKey(name: 'code', includeIfNull: true)
  String? code;
  @JsonKey(name: 'values', includeIfNull: true)
  Enum? values;
  @JsonKey(name: 'items', includeIfNull: true, defaultValue: <EnumItemEntity>[])
  List<EnumItemEntity>? items;
  static const fromJsonFactory = _$SystemEnumsFromJson;
  static const toJsonFactory = _$SystemEnumsToJson;
  Map<String, dynamic> toJson() => _$SystemEnumsToJson(this);
}

@JsonSerializable(explicitToJson: true)
class SystemInitDto {
  SystemInitDto({
    this.category,
    this.enums,
    this.userPermissions,
    this.currentObject,
    this.processingStatus,
    this.schoolLevels,
    this.school,
    this.academicYears,
  });

  factory SystemInitDto.fromJson(Map<String, dynamic> json) =>
      _$SystemInitDtoFromJson(json);

  @JsonKey(
      name: 'category', includeIfNull: true, defaultValue: <CategoryEntity>[])
  List<CategoryEntity>? category;
  @JsonKey(name: 'enums', includeIfNull: true, defaultValue: <SystemEnums>[])
  List<SystemEnums>? enums;
  @JsonKey(
      name: 'userPermissions',
      includeIfNull: true,
      defaultValue: <RoleModuleDto>[])
  List<RoleModuleDto>? userPermissions;
  @JsonKey(name: 'currentObject', includeIfNull: true)
  CurrentObjectDto? currentObject;
  @JsonKey(name: 'processingStatus', includeIfNull: true)
  Object? processingStatus;
  @JsonKey(
      name: 'schoolLevels', includeIfNull: true, defaultValue: <SchoolLevel>[])
  List<SchoolLevel>? schoolLevels;
  @JsonKey(name: 'school', includeIfNull: true)
  SchoolEntity? school;
  @JsonKey(
      name: 'academicYears',
      includeIfNull: true,
      defaultValue: <AcademicYearEntity>[])
  List<AcademicYearEntity>? academicYears;
  static const fromJsonFactory = _$SystemInitDtoFromJson;
  static const toJsonFactory = _$SystemInitDtoToJson;
  Map<String, dynamic> toJson() => _$SystemInitDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class SystemInitDtoApiResponse {
  SystemInitDtoApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory SystemInitDtoApiResponse.fromJson(Map<String, dynamic> json) =>
      _$SystemInitDtoApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  SystemInitDto? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$SystemInitDtoApiResponseFromJson;
  static const toJsonFactory = _$SystemInitDtoApiResponseToJson;
  Map<String, dynamic> toJson() => _$SystemInitDtoApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class TagAddNewsDto {
  TagAddNewsDto({
    this.tagId,
    this.newsIds,
  });

  factory TagAddNewsDto.fromJson(Map<String, dynamic> json) =>
      _$TagAddNewsDtoFromJson(json);

  @JsonKey(name: 'tagId', includeIfNull: true)
  int? tagId;
  @JsonKey(name: 'newsIds', includeIfNull: true, defaultValue: <int>[])
  List<int>? newsIds;
  static const fromJsonFactory = _$TagAddNewsDtoFromJson;
  static const toJsonFactory = _$TagAddNewsDtoToJson;
  Map<String, dynamic> toJson() => _$TagAddNewsDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class TagDto {
  TagDto({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.name,
    this.unsignName,
    this.url,
    this.isHotTag,
    this.status,
  });

  factory TagDto.fromJson(Map<String, dynamic> json) => _$TagDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(name: 'unsignName', includeIfNull: true)
  String? unsignName;
  @JsonKey(name: 'url', includeIfNull: true)
  String? url;
  @JsonKey(name: 'isHotTag', includeIfNull: true)
  bool? isHotTag;
  @JsonKey(name: 'status', includeIfNull: true)
  int? status;
  static const fromJsonFactory = _$TagDtoFromJson;
  static const toJsonFactory = _$TagDtoToJson;
  Map<String, dynamic> toJson() => _$TagDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class TagDtoApiResponse {
  TagDtoApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory TagDtoApiResponse.fromJson(Map<String, dynamic> json) =>
      _$TagDtoApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  TagDto? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$TagDtoApiResponseFromJson;
  static const toJsonFactory = _$TagDtoApiResponseToJson;
  Map<String, dynamic> toJson() => _$TagDtoApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class TagDtoListApiResponse {
  TagDtoListApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory TagDtoListApiResponse.fromJson(Map<String, dynamic> json) =>
      _$TagDtoListApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true, defaultValue: <TagDto>[])
  List<TagDto>? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$TagDtoListApiResponseFromJson;
  static const toJsonFactory = _$TagDtoListApiResponseToJson;
  Map<String, dynamic> toJson() => _$TagDtoListApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class TagGetListQuery {
  TagGetListQuery({
    this.sortExpression,
    this.pageSize,
    this.pageIndex,
    this.skip,
    this.notSkip,
    this.propertyIncludes,
    this.keyword,
    this.zoneId,
    this.type,
  });

  factory TagGetListQuery.fromJson(Map<String, dynamic> json) =>
      _$TagGetListQueryFromJson(json);

  @JsonKey(name: 'sortExpression', includeIfNull: true)
  String? sortExpression;
  @JsonKey(name: 'pageSize', includeIfNull: true)
  int? pageSize;
  @JsonKey(name: 'pageIndex', includeIfNull: true)
  int? pageIndex;
  @JsonKey(name: 'skip', includeIfNull: true)
  int? skip;
  @JsonKey(name: 'notSkip', includeIfNull: true)
  int? notSkip;
  @JsonKey(
      name: 'propertyIncludes', includeIfNull: true, defaultValue: <String>[])
  List<String>? propertyIncludes;
  @JsonKey(name: 'keyword', includeIfNull: true)
  String? keyword;
  @JsonKey(name: 'zoneId', includeIfNull: true)
  int? zoneId;
  @JsonKey(name: 'type', includeIfNull: true)
  int? type;
  static const fromJsonFactory = _$TagGetListQueryFromJson;
  static const toJsonFactory = _$TagGetListQueryToJson;
  Map<String, dynamic> toJson() => _$TagGetListQueryToJson(this);
}

@JsonSerializable(explicitToJson: true)
class TagGetListWithNewsCountQuery {
  TagGetListWithNewsCountQuery({
    this.onlyHotTags,
  });

  factory TagGetListWithNewsCountQuery.fromJson(Map<String, dynamic> json) =>
      _$TagGetListWithNewsCountQueryFromJson(json);

  @JsonKey(name: 'onlyHotTags', includeIfNull: true)
  bool? onlyHotTags;
  static const fromJsonFactory = _$TagGetListWithNewsCountQueryFromJson;
  static const toJsonFactory = _$TagGetListWithNewsCountQueryToJson;
  Map<String, dynamic> toJson() => _$TagGetListWithNewsCountQueryToJson(this);
}

@JsonSerializable(explicitToJson: true)
class TagListDto {
  TagListDto({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.name,
    this.isHotTag,
    this.newsCount,
    this.zoneId,
    this.zone,
    this.url,
  });

  factory TagListDto.fromJson(Map<String, dynamic> json) =>
      _$TagListDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'name', includeIfNull: true)
  String? name;
  @JsonKey(name: 'isHotTag', includeIfNull: true)
  bool? isHotTag;
  @JsonKey(name: 'newsCount', includeIfNull: true)
  int? newsCount;
  @JsonKey(name: 'zoneId', includeIfNull: true)
  int? zoneId;
  @JsonKey(name: 'zone', includeIfNull: true)
  String? zone;
  @JsonKey(name: 'url', includeIfNull: true)
  String? url;
  static const fromJsonFactory = _$TagListDtoFromJson;
  static const toJsonFactory = _$TagListDtoToJson;
  Map<String, dynamic> toJson() => _$TagListDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class TagListDtoFilterResult {
  TagListDtoFilterResult({
    this.totalRows,
    this.data,
  });

  factory TagListDtoFilterResult.fromJson(Map<String, dynamic> json) =>
      _$TagListDtoFilterResultFromJson(json);

  @JsonKey(name: 'totalRows', includeIfNull: true)
  int? totalRows;
  @JsonKey(name: 'data', includeIfNull: true, defaultValue: <TagListDto>[])
  List<TagListDto>? data;
  static const fromJsonFactory = _$TagListDtoFilterResultFromJson;
  static const toJsonFactory = _$TagListDtoFilterResultToJson;
  Map<String, dynamic> toJson() => _$TagListDtoFilterResultToJson(this);
}

@JsonSerializable(explicitToJson: true)
class TagListDtoFilterResultApiResponse {
  TagListDtoFilterResultApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory TagListDtoFilterResultApiResponse.fromJson(
          Map<String, dynamic> json) =>
      _$TagListDtoFilterResultApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  TagListDtoFilterResult? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$TagListDtoFilterResultApiResponseFromJson;
  static const toJsonFactory = _$TagListDtoFilterResultApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$TagListDtoFilterResultApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class TagListDtoListApiResponse {
  TagListDtoListApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory TagListDtoListApiResponse.fromJson(Map<String, dynamic> json) =>
      _$TagListDtoListApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true, defaultValue: <TagListDto>[])
  List<TagListDto>? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$TagListDtoListApiResponseFromJson;
  static const toJsonFactory = _$TagListDtoListApiResponseToJson;
  Map<String, dynamic> toJson() => _$TagListDtoListApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class TeacherCreateDto {
  TeacherCreateDto({
    this.userName,
    this.email,
    this.password,
    this.fullName,
    this.phoneNumber,
    this.roles,
    this.id,
    this.avatar,
    this.status,
    this.type,
    this.objectId,
    this.provinceId,
    this.birthDay,
    this.gender,
    this.identifierCode,
    this.isTemp,
    this.classId,
    this.className,
    this.ethnic,
    this.rowIndex,
    this.address,
    this.classListStr,
    this.classManageStr,
    this.subject,
  });

  factory TeacherCreateDto.fromJson(Map<String, dynamic> json) =>
      _$TeacherCreateDtoFromJson(json);

  @JsonKey(name: 'userName', includeIfNull: true)
  String? userName;
  @JsonKey(name: 'email', includeIfNull: true)
  String? email;
  @JsonKey(name: 'password', includeIfNull: true)
  String? password;
  @JsonKey(name: 'fullName', includeIfNull: true)
  String? fullName;
  @JsonKey(name: 'phoneNumber', includeIfNull: true)
  String? phoneNumber;
  @JsonKey(name: 'roles', includeIfNull: true, defaultValue: <int>[])
  List<int>? roles;
  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'avatar', includeIfNull: true)
  String? avatar;
  @JsonKey(name: 'status', includeIfNull: true)
  int? status;
  @JsonKey(
      name: 'type',
      includeIfNull: true,
      toJson: userTypeEnumToJson,
      fromJson: userTypeEnumFromJson)
  enums.UserTypeEnum? type;
  @JsonKey(name: 'objectId', includeIfNull: true)
  int? objectId;
  @JsonKey(name: 'provinceId', includeIfNull: true)
  int? provinceId;
  @JsonKey(name: 'birthDay', includeIfNull: true)
  DateTime? birthDay;
  @JsonKey(name: 'gender', includeIfNull: true)
  int? gender;
  @JsonKey(name: 'identifierCode', includeIfNull: true)
  String? identifierCode;
  @JsonKey(name: 'isTemp', includeIfNull: true)
  bool? isTemp;
  @JsonKey(name: 'classId', includeIfNull: true)
  int? classId;
  @JsonKey(name: 'className', includeIfNull: true)
  String? className;
  @JsonKey(name: 'ethnic', includeIfNull: true)
  String? ethnic;
  @JsonKey(name: 'rowIndex', includeIfNull: true)
  int? rowIndex;
  @JsonKey(name: 'address', includeIfNull: true)
  String? address;
  @JsonKey(name: 'classListStr', includeIfNull: true)
  String? classListStr;
  @JsonKey(name: 'classManageStr', includeIfNull: true)
  String? classManageStr;
  @JsonKey(name: 'subject', includeIfNull: true)
  String? subject;
  static const fromJsonFactory = _$TeacherCreateDtoFromJson;
  static const toJsonFactory = _$TeacherCreateDtoToJson;
  Map<String, dynamic> toJson() => _$TeacherCreateDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class TeacherFilterDto {
  TeacherFilterDto({
    this.sortExpression,
    this.pageSize,
    this.pageIndex,
    this.skip,
    this.notSkip,
    this.propertyIncludes,
    this.classId,
    this.keyword,
    this.status,
    this.isGetCountAssignExam,
  });

  factory TeacherFilterDto.fromJson(Map<String, dynamic> json) =>
      _$TeacherFilterDtoFromJson(json);

  @JsonKey(name: 'sortExpression', includeIfNull: true)
  String? sortExpression;
  @JsonKey(name: 'pageSize', includeIfNull: true)
  int? pageSize;
  @JsonKey(name: 'pageIndex', includeIfNull: true)
  int? pageIndex;
  @JsonKey(name: 'skip', includeIfNull: true)
  int? skip;
  @JsonKey(name: 'notSkip', includeIfNull: true)
  int? notSkip;
  @JsonKey(
      name: 'propertyIncludes', includeIfNull: true, defaultValue: <String>[])
  List<String>? propertyIncludes;
  @JsonKey(name: 'classId', includeIfNull: true)
  int? classId;
  @JsonKey(name: 'keyword', includeIfNull: true)
  String? keyword;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: classUserStatusEnumToJson,
      fromJson: classUserStatusEnumFromJson)
  enums.ClassUserStatusEnum? status;
  @JsonKey(name: 'isGetCountAssignExam', includeIfNull: true)
  bool? isGetCountAssignExam;
  static const fromJsonFactory = _$TeacherFilterDtoFromJson;
  static const toJsonFactory = _$TeacherFilterDtoToJson;
  Map<String, dynamic> toJson() => _$TeacherFilterDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class TeacherGetBySchoolDto {
  TeacherGetBySchoolDto({
    this.id,
    this.userName,
    this.avatar,
    this.fullName,
    this.fullNameNonAccent,
    this.classCount,
    this.assignmentCount,
    this.assignmentMarkedCount,
    this.assignmentMarkedWaitingCount,
  });

  factory TeacherGetBySchoolDto.fromJson(Map<String, dynamic> json) =>
      _$TeacherGetBySchoolDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'userName', includeIfNull: true)
  String? userName;
  @JsonKey(name: 'avatar', includeIfNull: true)
  String? avatar;
  @JsonKey(name: 'fullName', includeIfNull: true)
  String? fullName;
  @JsonKey(name: 'fullNameNonAccent', includeIfNull: true)
  String? fullNameNonAccent;
  @JsonKey(name: 'classCount', includeIfNull: true)
  int? classCount;
  @JsonKey(name: 'assignmentCount', includeIfNull: true)
  int? assignmentCount;
  @JsonKey(name: 'assignmentMarkedCount', includeIfNull: true)
  int? assignmentMarkedCount;
  @JsonKey(name: 'assignmentMarkedWaitingCount', includeIfNull: true)
  int? assignmentMarkedWaitingCount;
  static const fromJsonFactory = _$TeacherGetBySchoolDtoFromJson;
  static const toJsonFactory = _$TeacherGetBySchoolDtoToJson;
  Map<String, dynamic> toJson() => _$TeacherGetBySchoolDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class TeacherGetBySchoolDtoFilterResult {
  TeacherGetBySchoolDtoFilterResult({
    this.totalRows,
    this.data,
  });

  factory TeacherGetBySchoolDtoFilterResult.fromJson(
          Map<String, dynamic> json) =>
      _$TeacherGetBySchoolDtoFilterResultFromJson(json);

  @JsonKey(name: 'totalRows', includeIfNull: true)
  int? totalRows;
  @JsonKey(
      name: 'data',
      includeIfNull: true,
      defaultValue: <TeacherGetBySchoolDto>[])
  List<TeacherGetBySchoolDto>? data;
  static const fromJsonFactory = _$TeacherGetBySchoolDtoFilterResultFromJson;
  static const toJsonFactory = _$TeacherGetBySchoolDtoFilterResultToJson;
  Map<String, dynamic> toJson() =>
      _$TeacherGetBySchoolDtoFilterResultToJson(this);
}

@JsonSerializable(explicitToJson: true)
class TeacherGetBySchoolDtoFilterResultApiResponse {
  TeacherGetBySchoolDtoFilterResultApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory TeacherGetBySchoolDtoFilterResultApiResponse.fromJson(
          Map<String, dynamic> json) =>
      _$TeacherGetBySchoolDtoFilterResultApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  TeacherGetBySchoolDtoFilterResult? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory =
      _$TeacherGetBySchoolDtoFilterResultApiResponseFromJson;
  static const toJsonFactory =
      _$TeacherGetBySchoolDtoFilterResultApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$TeacherGetBySchoolDtoFilterResultApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class TeacherGetBySchoolFilterDto {
  TeacherGetBySchoolFilterDto({
    this.sortExpression,
    this.pageSize,
    this.pageIndex,
    this.skip,
    this.notSkip,
    this.propertyIncludes,
    this.schoolId,
    this.keyword,
  });

  factory TeacherGetBySchoolFilterDto.fromJson(Map<String, dynamic> json) =>
      _$TeacherGetBySchoolFilterDtoFromJson(json);

  @JsonKey(name: 'sortExpression', includeIfNull: true)
  String? sortExpression;
  @JsonKey(name: 'pageSize', includeIfNull: true)
  int? pageSize;
  @JsonKey(name: 'pageIndex', includeIfNull: true)
  int? pageIndex;
  @JsonKey(name: 'skip', includeIfNull: true)
  int? skip;
  @JsonKey(name: 'notSkip', includeIfNull: true)
  int? notSkip;
  @JsonKey(
      name: 'propertyIncludes', includeIfNull: true, defaultValue: <String>[])
  List<String>? propertyIncludes;
  @JsonKey(name: 'schoolId', includeIfNull: true)
  int? schoolId;
  @JsonKey(name: 'keyword', includeIfNull: true)
  String? keyword;
  static const fromJsonFactory = _$TeacherGetBySchoolFilterDtoFromJson;
  static const toJsonFactory = _$TeacherGetBySchoolFilterDtoToJson;
  Map<String, dynamic> toJson() => _$TeacherGetBySchoolFilterDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class TeacherListDto {
  TeacherListDto({
    this.id,
    this.userName,
    this.avatar,
    this.fullName,
    this.email,
    this.status,
    this.createdDate,
    this.subjectIds,
    this.subject,
    this.isManager,
    this.countAssignExam,
    this.countAssignExamMarkedWaiting,
  });

  factory TeacherListDto.fromJson(Map<String, dynamic> json) =>
      _$TeacherListDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'userName', includeIfNull: true)
  String? userName;
  @JsonKey(name: 'avatar', includeIfNull: true)
  String? avatar;
  @JsonKey(name: 'fullName', includeIfNull: true)
  String? fullName;
  @JsonKey(name: 'email', includeIfNull: true)
  String? email;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: classUserStatusEnumToJson,
      fromJson: classUserStatusEnumFromJson)
  enums.ClassUserStatusEnum? status;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'subjectIds', includeIfNull: true, defaultValue: <int>[])
  List<int>? subjectIds;
  @JsonKey(name: 'subject', includeIfNull: true)
  String? subject;
  @JsonKey(name: 'isManager', includeIfNull: true)
  bool? isManager;
  @JsonKey(name: 'countAssignExam', includeIfNull: true)
  int? countAssignExam;
  @JsonKey(name: 'countAssignExamMarkedWaiting', includeIfNull: true)
  int? countAssignExamMarkedWaiting;
  static const fromJsonFactory = _$TeacherListDtoFromJson;
  static const toJsonFactory = _$TeacherListDtoToJson;
  Map<String, dynamic> toJson() => _$TeacherListDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class TeacherListDtoFilterResult {
  TeacherListDtoFilterResult({
    this.totalRows,
    this.data,
  });

  factory TeacherListDtoFilterResult.fromJson(Map<String, dynamic> json) =>
      _$TeacherListDtoFilterResultFromJson(json);

  @JsonKey(name: 'totalRows', includeIfNull: true)
  int? totalRows;
  @JsonKey(name: 'data', includeIfNull: true, defaultValue: <TeacherListDto>[])
  List<TeacherListDto>? data;
  static const fromJsonFactory = _$TeacherListDtoFilterResultFromJson;
  static const toJsonFactory = _$TeacherListDtoFilterResultToJson;
  Map<String, dynamic> toJson() => _$TeacherListDtoFilterResultToJson(this);
}

@JsonSerializable(explicitToJson: true)
class TeacherStaticByTypeExamDto {
  TeacherStaticByTypeExamDto({
    this.type,
    this.total,
    this.markedCount,
    this.markedWaitingCount,
    this.averageScore,
  });

  factory TeacherStaticByTypeExamDto.fromJson(Map<String, dynamic> json) =>
      _$TeacherStaticByTypeExamDtoFromJson(json);

  @JsonKey(
      name: 'type',
      includeIfNull: true,
      toJson: assignExamTypeEnumToJson,
      fromJson: assignExamTypeEnumFromJson)
  enums.AssignExamTypeEnum? type;
  @JsonKey(name: 'total', includeIfNull: true)
  int? total;
  @JsonKey(name: 'markedCount', includeIfNull: true)
  int? markedCount;
  @JsonKey(name: 'markedWaitingCount', includeIfNull: true)
  int? markedWaitingCount;
  @JsonKey(name: 'averageScore', includeIfNull: true)
  double? averageScore;
  static const fromJsonFactory = _$TeacherStaticByTypeExamDtoFromJson;
  static const toJsonFactory = _$TeacherStaticByTypeExamDtoToJson;
  Map<String, dynamic> toJson() => _$TeacherStaticByTypeExamDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class TeacherStaticByTypeExamDtoListApiResponse {
  TeacherStaticByTypeExamDtoListApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory TeacherStaticByTypeExamDtoListApiResponse.fromJson(
          Map<String, dynamic> json) =>
      _$TeacherStaticByTypeExamDtoListApiResponseFromJson(json);

  @JsonKey(
      name: 'data',
      includeIfNull: true,
      defaultValue: <TeacherStaticByTypeExamDto>[])
  List<TeacherStaticByTypeExamDto>? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory =
      _$TeacherStaticByTypeExamDtoListApiResponseFromJson;
  static const toJsonFactory =
      _$TeacherStaticByTypeExamDtoListApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$TeacherStaticByTypeExamDtoListApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class TeacherUpdateManagerCommand {
  TeacherUpdateManagerCommand({
    this.classId,
    this.userId,
  });

  factory TeacherUpdateManagerCommand.fromJson(Map<String, dynamic> json) =>
      _$TeacherUpdateManagerCommandFromJson(json);

  @JsonKey(name: 'classId', includeIfNull: true)
  int? classId;
  @JsonKey(name: 'userId', includeIfNull: true)
  int? userId;
  static const fromJsonFactory = _$TeacherUpdateManagerCommandFromJson;
  static const toJsonFactory = _$TeacherUpdateManagerCommandToJson;
  Map<String, dynamic> toJson() => _$TeacherUpdateManagerCommandToJson(this);
}

@JsonSerializable(explicitToJson: true)
class TeacherUpdateSubjectsCommand {
  TeacherUpdateSubjectsCommand({
    this.classId,
    this.userId,
    this.subjectIds,
  });

  factory TeacherUpdateSubjectsCommand.fromJson(Map<String, dynamic> json) =>
      _$TeacherUpdateSubjectsCommandFromJson(json);

  @JsonKey(name: 'classId', includeIfNull: true)
  int? classId;
  @JsonKey(name: 'userId', includeIfNull: true)
  int? userId;
  @JsonKey(name: 'subjectIds', includeIfNull: true, defaultValue: <int>[])
  List<int>? subjectIds;
  static const fromJsonFactory = _$TeacherUpdateSubjectsCommandFromJson;
  static const toJsonFactory = _$TeacherUpdateSubjectsCommandToJson;
  Map<String, dynamic> toJson() => _$TeacherUpdateSubjectsCommandToJson(this);
}

@JsonSerializable(explicitToJson: true)
class TopAverageScoreDto {
  TopAverageScoreDto({
    this.userId,
    this.avatar,
    this.fullName,
    this.averageScore,
  });

  factory TopAverageScoreDto.fromJson(Map<String, dynamic> json) =>
      _$TopAverageScoreDtoFromJson(json);

  @JsonKey(name: 'userId', includeIfNull: true)
  int? userId;
  @JsonKey(name: 'avatar', includeIfNull: true)
  String? avatar;
  @JsonKey(name: 'fullName', includeIfNull: true)
  String? fullName;
  @JsonKey(name: 'averageScore', includeIfNull: true)
  double? averageScore;
  static const fromJsonFactory = _$TopAverageScoreDtoFromJson;
  static const toJsonFactory = _$TopAverageScoreDtoToJson;
  Map<String, dynamic> toJson() => _$TopAverageScoreDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class TopNeedsToDoHomeworkDto {
  TopNeedsToDoHomeworkDto({
    this.userId,
    this.avatar,
    this.fullName,
    this.countExam,
    this.countExamDone,
    this.countExamNotStarted,
  });

  factory TopNeedsToDoHomeworkDto.fromJson(Map<String, dynamic> json) =>
      _$TopNeedsToDoHomeworkDtoFromJson(json);

  @JsonKey(name: 'userId', includeIfNull: true)
  int? userId;
  @JsonKey(name: 'avatar', includeIfNull: true)
  String? avatar;
  @JsonKey(name: 'fullName', includeIfNull: true)
  String? fullName;
  @JsonKey(name: 'countExam', includeIfNull: true)
  int? countExam;
  @JsonKey(name: 'countExamDone', includeIfNull: true)
  int? countExamDone;
  @JsonKey(name: 'countExamNotStarted', includeIfNull: true)
  int? countExamNotStarted;
  static const fromJsonFactory = _$TopNeedsToDoHomeworkDtoFromJson;
  static const toJsonFactory = _$TopNeedsToDoHomeworkDtoToJson;
  Map<String, dynamic> toJson() => _$TopNeedsToDoHomeworkDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class UpdateAvatarDto {
  UpdateAvatarDto({
    this.avatar,
  });

  factory UpdateAvatarDto.fromJson(Map<String, dynamic> json) =>
      _$UpdateAvatarDtoFromJson(json);

  @JsonKey(name: 'avatar', includeIfNull: true)
  String? avatar;
  static const fromJsonFactory = _$UpdateAvatarDtoFromJson;
  static const toJsonFactory = _$UpdateAvatarDtoToJson;
  Map<String, dynamic> toJson() => _$UpdateAvatarDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class UpdateInfoDto {
  UpdateInfoDto({
    this.fullName,
    this.phoneNumber,
    this.avatar,
  });

  factory UpdateInfoDto.fromJson(Map<String, dynamic> json) =>
      _$UpdateInfoDtoFromJson(json);

  @JsonKey(name: 'fullName', includeIfNull: true)
  String? fullName;
  @JsonKey(name: 'phoneNumber', includeIfNull: true)
  String? phoneNumber;
  @JsonKey(name: 'avatar', includeIfNull: true)
  String? avatar;
  static const fromJsonFactory = _$UpdateInfoDtoFromJson;
  static const toJsonFactory = _$UpdateInfoDtoToJson;
  Map<String, dynamic> toJson() => _$UpdateInfoDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class UserAnsweDataDto {
  UserAnsweDataDto({
    this.id,
    this.content,
    this.itemId,
    this.isCorrect,
    this.mark,
  });

  factory UserAnsweDataDto.fromJson(Map<String, dynamic> json) =>
      _$UserAnsweDataDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  String? id;
  @JsonKey(name: 'content', includeIfNull: true)
  String? content;
  @JsonKey(name: 'itemId', includeIfNull: true)
  String? itemId;
  @JsonKey(name: 'isCorrect', includeIfNull: true)
  bool? isCorrect;
  @JsonKey(name: 'mark', includeIfNull: true)
  double? mark;
  static const fromJsonFactory = _$UserAnsweDataDtoFromJson;
  static const toJsonFactory = _$UserAnsweDataDtoToJson;
  Map<String, dynamic> toJson() => _$UserAnsweDataDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class UserAnswerDto {
  UserAnswerDto({
    this.id,
    this.questionId,
    this.parentId,
    this.content,
    this.isCorrect,
    this.mark,
    this.comment,
    this.commentBy,
    this.commentDate,
    this.answer,
    this.childAnswer,
  });

  factory UserAnswerDto.fromJson(Map<String, dynamic> json) =>
      _$UserAnswerDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'questionId', includeIfNull: true)
  int? questionId;
  @JsonKey(name: 'parentId', includeIfNull: true)
  int? parentId;
  @JsonKey(name: 'content', includeIfNull: true)
  String? content;
  @JsonKey(name: 'isCorrect', includeIfNull: true)
  bool? isCorrect;
  @JsonKey(name: 'mark', includeIfNull: true)
  double? mark;
  @JsonKey(name: 'comment', includeIfNull: true)
  String? comment;
  @JsonKey(name: 'commentBy', includeIfNull: true)
  int? commentBy;
  @JsonKey(name: 'commentDate', includeIfNull: true)
  DateTime? commentDate;
  @JsonKey(
      name: 'answer', includeIfNull: true, defaultValue: <UserAnsweDataDto>[])
  List<UserAnsweDataDto>? answer;
  @JsonKey(
      name: 'childAnswer', includeIfNull: true, defaultValue: <UserAnswerDto>[])
  List<UserAnswerDto>? childAnswer;
  static const fromJsonFactory = _$UserAnswerDtoFromJson;
  static const toJsonFactory = _$UserAnswerDtoToJson;
  Map<String, dynamic> toJson() => _$UserAnswerDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class UserAnswerEntity {
  UserAnswerEntity({
    this.id,
    this.userExamResultId,
    this.questionId,
    this.parentId,
    this.content,
    this.fileUrl,
    this.mark,
    this.isCorrect,
    this.answer,
    this.comment,
    this.commentBy,
    this.commentDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
  });

  factory UserAnswerEntity.fromJson(Map<String, dynamic> json) =>
      _$UserAnswerEntityFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'userExamResultId', includeIfNull: true)
  int? userExamResultId;
  @JsonKey(name: 'questionId', includeIfNull: true)
  int? questionId;
  @JsonKey(name: 'parentId', includeIfNull: true)
  int? parentId;
  @JsonKey(name: 'content', includeIfNull: true)
  String? content;
  @JsonKey(name: 'fileUrl', includeIfNull: true)
  String? fileUrl;
  @JsonKey(name: 'mark', includeIfNull: true)
  double? mark;
  @JsonKey(name: 'isCorrect', includeIfNull: true)
  bool? isCorrect;
  @JsonKey(name: 'answer', includeIfNull: true)
  String? answer;
  @JsonKey(name: 'comment', includeIfNull: true)
  String? comment;
  @JsonKey(name: 'commentBy', includeIfNull: true)
  int? commentBy;
  @JsonKey(name: 'commentDate', includeIfNull: true)
  DateTime? commentDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  static const fromJsonFactory = _$UserAnswerEntityFromJson;
  static const toJsonFactory = _$UserAnswerEntityToJson;
  Map<String, dynamic> toJson() => _$UserAnswerEntityToJson(this);
}

@JsonSerializable(explicitToJson: true)
class UserClaimEntity {
  UserClaimEntity({
    this.id,
    this.userId,
    this.claimType,
    this.claimValue,
  });

  factory UserClaimEntity.fromJson(Map<String, dynamic> json) =>
      _$UserClaimEntityFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'userId', includeIfNull: true)
  int? userId;
  @JsonKey(name: 'claimType', includeIfNull: true)
  String? claimType;
  @JsonKey(name: 'claimValue', includeIfNull: true)
  String? claimValue;
  static const fromJsonFactory = _$UserClaimEntityFromJson;
  static const toJsonFactory = _$UserClaimEntityToJson;
  Map<String, dynamic> toJson() => _$UserClaimEntityToJson(this);
}

@JsonSerializable(explicitToJson: true)
class UserCreateDto {
  UserCreateDto({
    this.userName,
    this.email,
    this.password,
    this.fullName,
    this.phoneNumber,
    this.roles,
    this.id,
    this.avatar,
    this.status,
    this.type,
    this.objectId,
    this.provinceId,
    this.birthDay,
    this.gender,
    this.identifierCode,
    this.isTemp,
    this.classId,
    this.className,
    this.ethnic,
    this.rowIndex,
    this.address,
  });

  factory UserCreateDto.fromJson(Map<String, dynamic> json) =>
      _$UserCreateDtoFromJson(json);

  @JsonKey(name: 'userName', includeIfNull: true)
  String? userName;
  @JsonKey(name: 'email', includeIfNull: true)
  String? email;
  @JsonKey(name: 'password', includeIfNull: true)
  String? password;
  @JsonKey(name: 'fullName', includeIfNull: true)
  String? fullName;
  @JsonKey(name: 'phoneNumber', includeIfNull: true)
  String? phoneNumber;
  @JsonKey(name: 'roles', includeIfNull: true, defaultValue: <int>[])
  List<int>? roles;
  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'avatar', includeIfNull: true)
  String? avatar;
  @JsonKey(name: 'status', includeIfNull: true)
  int? status;
  @JsonKey(
      name: 'type',
      includeIfNull: true,
      toJson: userTypeEnumToJson,
      fromJson: userTypeEnumFromJson)
  enums.UserTypeEnum? type;
  @JsonKey(name: 'objectId', includeIfNull: true)
  int? objectId;
  @JsonKey(name: 'provinceId', includeIfNull: true)
  int? provinceId;
  @JsonKey(name: 'birthDay', includeIfNull: true)
  DateTime? birthDay;
  @JsonKey(name: 'gender', includeIfNull: true)
  int? gender;
  @JsonKey(name: 'identifierCode', includeIfNull: true)
  String? identifierCode;
  @JsonKey(name: 'isTemp', includeIfNull: true)
  bool? isTemp;
  @JsonKey(name: 'classId', includeIfNull: true)
  int? classId;
  @JsonKey(name: 'className', includeIfNull: true)
  String? className;
  @JsonKey(name: 'ethnic', includeIfNull: true)
  String? ethnic;
  @JsonKey(name: 'rowIndex', includeIfNull: true)
  int? rowIndex;
  @JsonKey(name: 'address', includeIfNull: true)
  String? address;
  static const fromJsonFactory = _$UserCreateDtoFromJson;
  static const toJsonFactory = _$UserCreateDtoToJson;
  Map<String, dynamic> toJson() => _$UserCreateDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class UserEntity {
  UserEntity({
    this.id,
    this.userName,
    this.normalizedUserName,
    this.email,
    this.normalizedEmail,
    this.emailConfirmed,
    this.passwordHash,
    this.securityStamp,
    this.concurrencyStamp,
    this.phoneNumber,
    this.phoneNumberConfirmed,
    this.twoFactorEnabled,
    this.lockoutEnd,
    this.lockoutEnabled,
    this.accessFailedCount,
    this.claims,
    this.refreshTokens,
    this.avatar,
    this.fullName,
    this.fullNameNonAccent,
    this.lastLoginDate,
    this.createdDate,
    this.isDeleted,
    this.type,
    this.objectId,
    this.provinceId,
    this.isOnline,
    this.studentCode,
    this.birthDay,
    this.gender,
    this.identifierCode,
    this.address,
    this.ethnic,
  });

  factory UserEntity.fromJson(Map<String, dynamic> json) =>
      _$UserEntityFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'userName', includeIfNull: true)
  String? userName;
  @JsonKey(name: 'normalizedUserName', includeIfNull: true)
  String? normalizedUserName;
  @JsonKey(name: 'email', includeIfNull: true)
  String? email;
  @JsonKey(name: 'normalizedEmail', includeIfNull: true)
  String? normalizedEmail;
  @JsonKey(name: 'emailConfirmed', includeIfNull: true)
  bool? emailConfirmed;
  @JsonKey(name: 'passwordHash', includeIfNull: true)
  String? passwordHash;
  @JsonKey(name: 'securityStamp', includeIfNull: true)
  String? securityStamp;
  @JsonKey(name: 'concurrencyStamp', includeIfNull: true)
  String? concurrencyStamp;
  @JsonKey(name: 'phoneNumber', includeIfNull: true)
  String? phoneNumber;
  @JsonKey(name: 'phoneNumberConfirmed', includeIfNull: true)
  bool? phoneNumberConfirmed;
  @JsonKey(name: 'twoFactorEnabled', includeIfNull: true)
  bool? twoFactorEnabled;
  @JsonKey(name: 'lockoutEnd', includeIfNull: true)
  DateTime? lockoutEnd;
  @JsonKey(name: 'lockoutEnabled', includeIfNull: true)
  bool? lockoutEnabled;
  @JsonKey(name: 'accessFailedCount', includeIfNull: true)
  int? accessFailedCount;
  @JsonKey(
      name: 'claims', includeIfNull: true, defaultValue: <UserClaimEntity>[])
  List<UserClaimEntity>? claims;
  @JsonKey(
      name: 'refreshTokens',
      includeIfNull: true,
      defaultValue: <RefreshTokenEntity>[])
  List<RefreshTokenEntity>? refreshTokens;
  @JsonKey(name: 'avatar', includeIfNull: true)
  String? avatar;
  @JsonKey(name: 'fullName', includeIfNull: true)
  String? fullName;
  @JsonKey(name: 'fullNameNonAccent', includeIfNull: true)
  String? fullNameNonAccent;
  @JsonKey(name: 'lastLoginDate', includeIfNull: true)
  DateTime? lastLoginDate;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(
      name: 'type',
      includeIfNull: true,
      toJson: userTypeEnumToJson,
      fromJson: userTypeEnumFromJson)
  enums.UserTypeEnum? type;
  @JsonKey(name: 'objectId', includeIfNull: true)
  int? objectId;
  @JsonKey(name: 'provinceId', includeIfNull: true)
  int? provinceId;
  @JsonKey(name: 'isOnline', includeIfNull: true)
  bool? isOnline;
  @JsonKey(name: 'studentCode', includeIfNull: true)
  String? studentCode;
  @JsonKey(name: 'birthDay', includeIfNull: true)
  DateTime? birthDay;
  @JsonKey(name: 'gender', includeIfNull: true)
  int? gender;
  @JsonKey(name: 'identifierCode', includeIfNull: true)
  String? identifierCode;
  @JsonKey(name: 'address', includeIfNull: true)
  String? address;
  @JsonKey(name: 'ethnic', includeIfNull: true)
  String? ethnic;
  static const fromJsonFactory = _$UserEntityFromJson;
  static const toJsonFactory = _$UserEntityToJson;
  Map<String, dynamic> toJson() => _$UserEntityToJson(this);
}

@JsonSerializable(explicitToJson: true)
class UserExamResultDetailWithMessageDto {
  UserExamResultDetailWithMessageDto({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.examId,
    this.assignExamId,
    this.userId,
    this.mark,
    this.duration,
    this.correctAnswerCount,
    this.correctQuestions,
    this.fromType,
    this.comment,
    this.status,
    this.userAnswer,
    this.examInfo,
    this.userInfo,
    this.message,
    this.teacherNote,
    this.isAssigner,
    this.canMarkScore,
  });

  factory UserExamResultDetailWithMessageDto.fromJson(
          Map<String, dynamic> json) =>
      _$UserExamResultDetailWithMessageDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'examId', includeIfNull: true)
  int? examId;
  @JsonKey(name: 'assignExamId', includeIfNull: true)
  int? assignExamId;
  @JsonKey(name: 'userId', includeIfNull: true)
  int? userId;
  @JsonKey(name: 'mark', includeIfNull: true)
  double? mark;
  @JsonKey(name: 'duration', includeIfNull: true)
  int? duration;
  @JsonKey(name: 'correctAnswerCount', includeIfNull: true)
  int? correctAnswerCount;
  @JsonKey(name: 'correctQuestions', includeIfNull: true)
  String? correctQuestions;
  @JsonKey(name: 'fromType', includeIfNull: true)
  int? fromType;
  @JsonKey(name: 'comment', includeIfNull: true)
  String? comment;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: userExamResultStatusToJson,
      fromJson: userExamResultStatusFromJson)
  enums.UserExamResultStatus? status;
  @JsonKey(
      name: 'userAnswer', includeIfNull: true, defaultValue: <UserAnswerDto>[])
  List<UserAnswerDto>? userAnswer;
  @JsonKey(name: 'examInfo', includeIfNull: true)
  ExamLearnDto? examInfo;
  @JsonKey(name: 'userInfo', includeIfNull: true)
  UserWithSimpleInfoDto? userInfo;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'teacherNote', includeIfNull: true)
  String? teacherNote;
  @JsonKey(name: 'isAssigner', includeIfNull: true)
  bool? isAssigner;
  @JsonKey(name: 'canMarkScore', includeIfNull: true)
  bool? canMarkScore;
  static const fromJsonFactory = _$UserExamResultDetailWithMessageDtoFromJson;
  static const toJsonFactory = _$UserExamResultDetailWithMessageDtoToJson;
  Map<String, dynamic> toJson() =>
      _$UserExamResultDetailWithMessageDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class UserExamResultDto {
  UserExamResultDto({
    this.startTime,
    this.duration,
    this.examId,
    this.assignExamId,
    this.userAnswer,
    this.fromType,
  });

  factory UserExamResultDto.fromJson(Map<String, dynamic> json) =>
      _$UserExamResultDtoFromJson(json);

  @JsonKey(name: 'startTime', includeIfNull: true)
  DateTime? startTime;
  @JsonKey(name: 'duration', includeIfNull: true)
  int? duration;
  @JsonKey(name: 'examId', includeIfNull: true)
  int? examId;
  @JsonKey(name: 'assignExamId', includeIfNull: true)
  int? assignExamId;
  @JsonKey(
      name: 'userAnswer', includeIfNull: true, defaultValue: <UserAnswerDto>[])
  List<UserAnswerDto>? userAnswer;
  @JsonKey(name: 'fromType', includeIfNull: true)
  int? fromType;
  static const fromJsonFactory = _$UserExamResultDtoFromJson;
  static const toJsonFactory = _$UserExamResultDtoToJson;
  Map<String, dynamic> toJson() => _$UserExamResultDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class UserExamResultEntity {
  UserExamResultEntity({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.examId,
    this.assignExamId,
    this.userId,
    this.mark,
    this.duration,
    this.correctAnswerCount,
    this.correctQuestions,
    this.fromType,
    this.comment,
    this.status,
    this.userAnswer,
  });

  factory UserExamResultEntity.fromJson(Map<String, dynamic> json) =>
      _$UserExamResultEntityFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'examId', includeIfNull: true)
  int? examId;
  @JsonKey(name: 'assignExamId', includeIfNull: true)
  int? assignExamId;
  @JsonKey(name: 'userId', includeIfNull: true)
  int? userId;
  @JsonKey(name: 'mark', includeIfNull: true)
  double? mark;
  @JsonKey(name: 'duration', includeIfNull: true)
  int? duration;
  @JsonKey(name: 'correctAnswerCount', includeIfNull: true)
  int? correctAnswerCount;
  @JsonKey(name: 'correctQuestions', includeIfNull: true)
  String? correctQuestions;
  @JsonKey(name: 'fromType', includeIfNull: true)
  int? fromType;
  @JsonKey(name: 'comment', includeIfNull: true)
  String? comment;
  @JsonKey(
      name: 'status',
      includeIfNull: true,
      toJson: userExamResultStatusToJson,
      fromJson: userExamResultStatusFromJson)
  enums.UserExamResultStatus? status;
  @JsonKey(
      name: 'userAnswer',
      includeIfNull: true,
      defaultValue: <UserAnswerEntity>[])
  List<UserAnswerEntity>? userAnswer;
  static const fromJsonFactory = _$UserExamResultEntityFromJson;
  static const toJsonFactory = _$UserExamResultEntityToJson;
  Map<String, dynamic> toJson() => _$UserExamResultEntityToJson(this);
}

@JsonSerializable(explicitToJson: true)
class UserExamResultEntityApiResponse {
  UserExamResultEntityApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory UserExamResultEntityApiResponse.fromJson(Map<String, dynamic> json) =>
      _$UserExamResultEntityApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  UserExamResultEntity? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$UserExamResultEntityApiResponseFromJson;
  static const toJsonFactory = _$UserExamResultEntityApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$UserExamResultEntityApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class UserGetListQuery {
  UserGetListQuery({
    this.sortExpression,
    this.pageSize,
    this.pageIndex,
    this.skip,
    this.notSkip,
    this.propertyIncludes,
    this.status,
    this.keyword,
    this.roleIds,
    this.type,
    this.objectId,
  });

  factory UserGetListQuery.fromJson(Map<String, dynamic> json) =>
      _$UserGetListQueryFromJson(json);

  @JsonKey(name: 'sortExpression', includeIfNull: true)
  String? sortExpression;
  @JsonKey(name: 'pageSize', includeIfNull: true)
  int? pageSize;
  @JsonKey(name: 'pageIndex', includeIfNull: true)
  int? pageIndex;
  @JsonKey(name: 'skip', includeIfNull: true)
  int? skip;
  @JsonKey(name: 'notSkip', includeIfNull: true)
  int? notSkip;
  @JsonKey(
      name: 'propertyIncludes', includeIfNull: true, defaultValue: <String>[])
  List<String>? propertyIncludes;
  @JsonKey(name: 'status', includeIfNull: true)
  int? status;
  @JsonKey(name: 'keyword', includeIfNull: true)
  String? keyword;
  @JsonKey(name: 'roleIds', includeIfNull: true, defaultValue: <int>[])
  List<int>? roleIds;
  @JsonKey(
      name: 'type',
      includeIfNull: true,
      toJson: userTypeEnumToJson,
      fromJson: userTypeEnumFromJson)
  enums.UserTypeEnum? type;
  @JsonKey(name: 'objectId', includeIfNull: true)
  int? objectId;
  static const fromJsonFactory = _$UserGetListQueryFromJson;
  static const toJsonFactory = _$UserGetListQueryToJson;
  Map<String, dynamic> toJson() => _$UserGetListQueryToJson(this);
}

@JsonSerializable(explicitToJson: true)
class UserInfoDto {
  UserInfoDto({
    this.id,
    this.userName,
    this.email,
    this.phoneNumber,
    this.fullName,
    this.avatar,
    this.lastLoginDate,
    this.type,
    this.objectId,
  });

  factory UserInfoDto.fromJson(Map<String, dynamic> json) =>
      _$UserInfoDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'userName', includeIfNull: true)
  String? userName;
  @JsonKey(name: 'email', includeIfNull: true)
  String? email;
  @JsonKey(name: 'phoneNumber', includeIfNull: true)
  String? phoneNumber;
  @JsonKey(name: 'fullName', includeIfNull: true)
  String? fullName;
  @JsonKey(name: 'avatar', includeIfNull: true)
  String? avatar;
  @JsonKey(name: 'lastLoginDate', includeIfNull: true)
  String? lastLoginDate;
  @JsonKey(
      name: 'type',
      includeIfNull: true,
      toJson: userTypeEnumToJson,
      fromJson: userTypeEnumFromJson)
  enums.UserTypeEnum? type;
  @JsonKey(name: 'objectId', includeIfNull: true)
  int? objectId;
  static const fromJsonFactory = _$UserInfoDtoFromJson;
  static const toJsonFactory = _$UserInfoDtoToJson;
  Map<String, dynamic> toJson() => _$UserInfoDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class UserInfoDtoApiResponse {
  UserInfoDtoApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory UserInfoDtoApiResponse.fromJson(Map<String, dynamic> json) =>
      _$UserInfoDtoApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  UserInfoDto? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$UserInfoDtoApiResponseFromJson;
  static const toJsonFactory = _$UserInfoDtoApiResponseToJson;
  Map<String, dynamic> toJson() => _$UserInfoDtoApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class UserListDto {
  UserListDto({
    this.id,
    this.userName,
    this.avatar,
    this.fullName,
    this.email,
    this.phoneNumber,
    this.status,
    this.createdDate,
    this.roles,
    this.type,
    this.objectId,
    this.objectName,
  });

  factory UserListDto.fromJson(Map<String, dynamic> json) =>
      _$UserListDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'userName', includeIfNull: true)
  String? userName;
  @JsonKey(name: 'avatar', includeIfNull: true)
  String? avatar;
  @JsonKey(name: 'fullName', includeIfNull: true)
  String? fullName;
  @JsonKey(name: 'email', includeIfNull: true)
  String? email;
  @JsonKey(name: 'phoneNumber', includeIfNull: true)
  String? phoneNumber;
  @JsonKey(name: 'status', includeIfNull: true)
  int? status;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'roles', includeIfNull: true)
  String? roles;
  @JsonKey(
      name: 'type',
      includeIfNull: true,
      toJson: userTypeEnumToJson,
      fromJson: userTypeEnumFromJson)
  enums.UserTypeEnum? type;
  @JsonKey(name: 'objectId', includeIfNull: true)
  int? objectId;
  @JsonKey(name: 'objectName', includeIfNull: true)
  String? objectName;
  static const fromJsonFactory = _$UserListDtoFromJson;
  static const toJsonFactory = _$UserListDtoToJson;
  Map<String, dynamic> toJson() => _$UserListDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class UserListDtoFilterResult {
  UserListDtoFilterResult({
    this.totalRows,
    this.data,
  });

  factory UserListDtoFilterResult.fromJson(Map<String, dynamic> json) =>
      _$UserListDtoFilterResultFromJson(json);

  @JsonKey(name: 'totalRows', includeIfNull: true)
  int? totalRows;
  @JsonKey(name: 'data', includeIfNull: true, defaultValue: <UserListDto>[])
  List<UserListDto>? data;
  static const fromJsonFactory = _$UserListDtoFilterResultFromJson;
  static const toJsonFactory = _$UserListDtoFilterResultToJson;
  Map<String, dynamic> toJson() => _$UserListDtoFilterResultToJson(this);
}

@JsonSerializable(explicitToJson: true)
class UserListDtoFilterResultApiResponse {
  UserListDtoFilterResultApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory UserListDtoFilterResultApiResponse.fromJson(
          Map<String, dynamic> json) =>
      _$UserListDtoFilterResultApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  UserListDtoFilterResult? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$UserListDtoFilterResultApiResponseFromJson;
  static const toJsonFactory = _$UserListDtoFilterResultApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$UserListDtoFilterResultApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class UserMobileTokenEntity {
  UserMobileTokenEntity({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.userId,
    this.deviceToken,
    this.os,
    this.appId,
  });

  factory UserMobileTokenEntity.fromJson(Map<String, dynamic> json) =>
      _$UserMobileTokenEntityFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'userId', includeIfNull: true)
  int? userId;
  @JsonKey(name: 'deviceToken', includeIfNull: true)
  String? deviceToken;
  @JsonKey(name: 'os', includeIfNull: true)
  String? os;
  @JsonKey(name: 'appId', includeIfNull: true)
  int? appId;
  static const fromJsonFactory = _$UserMobileTokenEntityFromJson;
  static const toJsonFactory = _$UserMobileTokenEntityToJson;
  Map<String, dynamic> toJson() => _$UserMobileTokenEntityToJson(this);
}

@JsonSerializable(explicitToJson: true)
class UserMobileTokenEntityApiResponse {
  UserMobileTokenEntityApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory UserMobileTokenEntityApiResponse.fromJson(
          Map<String, dynamic> json) =>
      _$UserMobileTokenEntityApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  UserMobileTokenEntity? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$UserMobileTokenEntityApiResponseFromJson;
  static const toJsonFactory = _$UserMobileTokenEntityApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$UserMobileTokenEntityApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class UserMobileTokenUpdateCommand {
  UserMobileTokenUpdateCommand({
    this.token,
  });

  factory UserMobileTokenUpdateCommand.fromJson(Map<String, dynamic> json) =>
      _$UserMobileTokenUpdateCommandFromJson(json);

  @JsonKey(name: 'token', includeIfNull: true)
  UserMobileTokenEntity? token;
  static const fromJsonFactory = _$UserMobileTokenUpdateCommandFromJson;
  static const toJsonFactory = _$UserMobileTokenUpdateCommandToJson;
  Map<String, dynamic> toJson() => _$UserMobileTokenUpdateCommandToJson(this);
}

@JsonSerializable(explicitToJson: true)
class UserWebTokenDeleteCommand {
  UserWebTokenDeleteCommand({
    this.id,
  });

  factory UserWebTokenDeleteCommand.fromJson(Map<String, dynamic> json) =>
      _$UserWebTokenDeleteCommandFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  static const fromJsonFactory = _$UserWebTokenDeleteCommandFromJson;
  static const toJsonFactory = _$UserWebTokenDeleteCommandToJson;
  Map<String, dynamic> toJson() => _$UserWebTokenDeleteCommandToJson(this);
}

@JsonSerializable(explicitToJson: true)
class UserWebTokenEntity {
  UserWebTokenEntity({
    this.id,
    this.createdBy,
    this.createdDate,
    this.lastModifiedBy,
    this.lastModifiedDate,
    this.isDeleted,
    this.userId,
    this.pushEndPoint,
    this.pushP256DH,
    this.pushAuth,
    this.appId,
  });

  factory UserWebTokenEntity.fromJson(Map<String, dynamic> json) =>
      _$UserWebTokenEntityFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'createdBy', includeIfNull: true)
  int? createdBy;
  @JsonKey(name: 'createdDate', includeIfNull: true)
  DateTime? createdDate;
  @JsonKey(name: 'lastModifiedBy', includeIfNull: true)
  int? lastModifiedBy;
  @JsonKey(name: 'lastModifiedDate', includeIfNull: true)
  DateTime? lastModifiedDate;
  @JsonKey(name: 'isDeleted', includeIfNull: true)
  bool? isDeleted;
  @JsonKey(name: 'userId', includeIfNull: true)
  int? userId;
  @JsonKey(name: 'pushEndPoint', includeIfNull: true)
  String? pushEndPoint;
  @JsonKey(name: 'pushP256DH', includeIfNull: true)
  String? pushP256DH;
  @JsonKey(name: 'pushAuth', includeIfNull: true)
  String? pushAuth;
  @JsonKey(name: 'appId', includeIfNull: true)
  int? appId;
  static const fromJsonFactory = _$UserWebTokenEntityFromJson;
  static const toJsonFactory = _$UserWebTokenEntityToJson;
  Map<String, dynamic> toJson() => _$UserWebTokenEntityToJson(this);
}

@JsonSerializable(explicitToJson: true)
class UserWebTokenEntityApiResponse {
  UserWebTokenEntityApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory UserWebTokenEntityApiResponse.fromJson(Map<String, dynamic> json) =>
      _$UserWebTokenEntityApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  UserWebTokenEntity? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$UserWebTokenEntityApiResponseFromJson;
  static const toJsonFactory = _$UserWebTokenEntityApiResponseToJson;
  Map<String, dynamic> toJson() => _$UserWebTokenEntityApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class UserWebTokenUpdateCommand {
  UserWebTokenUpdateCommand({
    this.token,
  });

  factory UserWebTokenUpdateCommand.fromJson(Map<String, dynamic> json) =>
      _$UserWebTokenUpdateCommandFromJson(json);

  @JsonKey(name: 'token', includeIfNull: true)
  UserWebTokenEntity? token;
  static const fromJsonFactory = _$UserWebTokenUpdateCommandFromJson;
  static const toJsonFactory = _$UserWebTokenUpdateCommandToJson;
  Map<String, dynamic> toJson() => _$UserWebTokenUpdateCommandToJson(this);
}

@JsonSerializable(explicitToJson: true)
class UserWithSimpleInfoDto {
  UserWithSimpleInfoDto({
    this.id,
    this.userName,
    this.avatar,
    this.fullName,
    this.type,
    this.isOnline,
  });

  factory UserWithSimpleInfoDto.fromJson(Map<String, dynamic> json) =>
      _$UserWithSimpleInfoDtoFromJson(json);

  @JsonKey(name: 'id', includeIfNull: true)
  int? id;
  @JsonKey(name: 'userName', includeIfNull: true)
  String? userName;
  @JsonKey(name: 'avatar', includeIfNull: true)
  String? avatar;
  @JsonKey(name: 'fullName', includeIfNull: true)
  String? fullName;
  @JsonKey(
      name: 'type',
      includeIfNull: true,
      toJson: userTypeEnumToJson,
      fromJson: userTypeEnumFromJson)
  enums.UserTypeEnum? type;
  @JsonKey(name: 'isOnline', includeIfNull: true)
  bool? isOnline;
  static const fromJsonFactory = _$UserWithSimpleInfoDtoFromJson;
  static const toJsonFactory = _$UserWithSimpleInfoDtoToJson;
  Map<String, dynamic> toJson() => _$UserWithSimpleInfoDtoToJson(this);
}

@JsonSerializable(explicitToJson: true)
class UserWithSimpleInfoDtoListApiResponse {
  UserWithSimpleInfoDtoListApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory UserWithSimpleInfoDtoListApiResponse.fromJson(
          Map<String, dynamic> json) =>
      _$UserWithSimpleInfoDtoListApiResponseFromJson(json);

  @JsonKey(
      name: 'data',
      includeIfNull: true,
      defaultValue: <UserWithSimpleInfoDto>[])
  List<UserWithSimpleInfoDto>? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$UserWithSimpleInfoDtoListApiResponseFromJson;
  static const toJsonFactory = _$UserWithSimpleInfoDtoListApiResponseToJson;
  Map<String, dynamic> toJson() =>
      _$UserWithSimpleInfoDtoListApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class VapidDetails {
  VapidDetails({
    this.subject,
    this.publicKey,
    this.privateKey,
    this.expiration,
  });

  factory VapidDetails.fromJson(Map<String, dynamic> json) =>
      _$VapidDetailsFromJson(json);

  @JsonKey(name: 'subject', includeIfNull: true)
  String? subject;
  @JsonKey(name: 'publicKey', includeIfNull: true)
  String? publicKey;
  @JsonKey(name: 'privateKey', includeIfNull: true)
  String? privateKey;
  @JsonKey(name: 'expiration', includeIfNull: true)
  int? expiration;
  static const fromJsonFactory = _$VapidDetailsFromJson;
  static const toJsonFactory = _$VapidDetailsToJson;
  Map<String, dynamic> toJson() => _$VapidDetailsToJson(this);
}

@JsonSerializable(explicitToJson: true)
class VapidDetailsApiResponse {
  VapidDetailsApiResponse({
    this.data,
    this.message,
    this.success,
    this.code,
  });

  factory VapidDetailsApiResponse.fromJson(Map<String, dynamic> json) =>
      _$VapidDetailsApiResponseFromJson(json);

  @JsonKey(name: 'data', includeIfNull: true)
  VapidDetails? data;
  @JsonKey(name: 'message', includeIfNull: true)
  String? message;
  @JsonKey(name: 'success', includeIfNull: true)
  bool? success;
  @JsonKey(
      name: 'code',
      includeIfNull: true,
      toJson: errorCodeEnumToJson,
      fromJson: errorCodeEnumFromJson)
  enums.ErrorCodeEnum? code;
  static const fromJsonFactory = _$VapidDetailsApiResponseFromJson;
  static const toJsonFactory = _$VapidDetailsApiResponseToJson;
  Map<String, dynamic> toJson() => _$VapidDetailsApiResponseToJson(this);
}

@JsonSerializable(explicitToJson: true)
class WeatherForecast {
  WeatherForecast({
    this.date,
    this.temperatureC,
    this.temperatureF,
    this.summary,
  });

  factory WeatherForecast.fromJson(Map<String, dynamic> json) =>
      _$WeatherForecastFromJson(json);

  @JsonKey(name: 'date', includeIfNull: true)
  DateTime? date;
  @JsonKey(name: 'temperatureC', includeIfNull: true)
  int? temperatureC;
  @JsonKey(name: 'temperatureF', includeIfNull: true)
  int? temperatureF;
  @JsonKey(name: 'summary', includeIfNull: true)
  String? summary;
  static const fromJsonFactory = _$WeatherForecastFromJson;
  static const toJsonFactory = _$WeatherForecastToJson;
  Map<String, dynamic> toJson() => _$WeatherForecastToJson(this);
}

@JsonSerializable(explicitToJson: true)
class AiPromptByCodeCodeRequest {
  AiPromptByCodeCodeRequest({
    this.code,
    this.grade,
    this.categoryId,
  });

  factory AiPromptByCodeCodeRequest.fromJson(Map<String, dynamic> json) =>
      _$AiPromptByCodeCodeRequestFromJson(json);

  @JsonKey(name: 'code', includeIfNull: true)
  String? code;
  @JsonKey(name: 'grade', includeIfNull: true)
  int? grade;
  @JsonKey(name: 'categoryId', includeIfNull: true)
  int? categoryId;
  static const fromJsonFactory = _$AiPromptByCodeCodeRequestFromJson;
  static const toJsonFactory = _$AiPromptByCodeCodeRequestToJson;
  Map<String, dynamic> toJson() => _$AiPromptByCodeCodeRequestToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ChatListChatGroupOfUserRequest {
  ChatListChatGroupOfUserRequest({
    this.keyword,
    this.pageIndex,
    this.pageSize,
  });

  factory ChatListChatGroupOfUserRequest.fromJson(Map<String, dynamic> json) =>
      _$ChatListChatGroupOfUserRequestFromJson(json);

  @JsonKey(name: 'keyword', includeIfNull: true)
  String? keyword;
  @JsonKey(name: 'pageIndex', includeIfNull: true)
  int? pageIndex;
  @JsonKey(name: 'pageSize', includeIfNull: true)
  int? pageSize;
  static const fromJsonFactory = _$ChatListChatGroupOfUserRequestFromJson;
  static const toJsonFactory = _$ChatListChatGroupOfUserRequestToJson;
  Map<String, dynamic> toJson() => _$ChatListChatGroupOfUserRequestToJson(this);
}

@JsonSerializable(explicitToJson: true)
class ChatGetListMessageByGroupidRequest {
  ChatGetListMessageByGroupidRequest({
    this.chatGroupId,
    this.skipSize,
    this.pageSize,
  });

  factory ChatGetListMessageByGroupidRequest.fromJson(
          Map<String, dynamic> json) =>
      _$ChatGetListMessageByGroupidRequestFromJson(json);

  @JsonKey(name: 'chatGroupId', includeIfNull: true)
  int? chatGroupId;
  @JsonKey(name: 'skipSize', includeIfNull: true)
  int? skipSize;
  @JsonKey(name: 'pageSize', includeIfNull: true)
  int? pageSize;
  static const fromJsonFactory = _$ChatGetListMessageByGroupidRequestFromJson;
  static const toJsonFactory = _$ChatGetListMessageByGroupidRequestToJson;
  Map<String, dynamic> toJson() =>
      _$ChatGetListMessageByGroupidRequestToJson(this);
}

@JsonSerializable(explicitToJson: true)
class PupilPupilStaticRequest {
  PupilPupilStaticRequest({
    this.classId,
    this.userId,
    this.subjectId,
  });

  factory PupilPupilStaticRequest.fromJson(Map<String, dynamic> json) =>
      _$PupilPupilStaticRequestFromJson(json);

  @JsonKey(name: 'classId', includeIfNull: true)
  int? classId;
  @JsonKey(name: 'userId', includeIfNull: true)
  int? userId;
  @JsonKey(name: 'subjectId', includeIfNull: true)
  int? subjectId;
  static const fromJsonFactory = _$PupilPupilStaticRequestFromJson;
  static const toJsonFactory = _$PupilPupilStaticRequestToJson;
  Map<String, dynamic> toJson() => _$PupilPupilStaticRequestToJson(this);
}

@JsonSerializable(explicitToJson: true)
class PupilPupilStaticByTypeExamRequest {
  PupilPupilStaticByTypeExamRequest({
    this.classId,
    this.userId,
    this.subjectId,
  });

  factory PupilPupilStaticByTypeExamRequest.fromJson(
          Map<String, dynamic> json) =>
      _$PupilPupilStaticByTypeExamRequestFromJson(json);

  @JsonKey(name: 'classId', includeIfNull: true)
  int? classId;
  @JsonKey(name: 'userId', includeIfNull: true)
  int? userId;
  @JsonKey(name: 'subjectId', includeIfNull: true)
  int? subjectId;
  static const fromJsonFactory = _$PupilPupilStaticByTypeExamRequestFromJson;
  static const toJsonFactory = _$PupilPupilStaticByTypeExamRequestToJson;
  Map<String, dynamic> toJson() =>
      _$PupilPupilStaticByTypeExamRequestToJson(this);
}

@JsonSerializable(explicitToJson: true)
class TeacherStaticByTypeExamRequest {
  TeacherStaticByTypeExamRequest({
    this.classId,
    this.userId,
    this.subjectId,
  });

  factory TeacherStaticByTypeExamRequest.fromJson(Map<String, dynamic> json) =>
      _$TeacherStaticByTypeExamRequestFromJson(json);

  @JsonKey(name: 'classId', includeIfNull: true)
  int? classId;
  @JsonKey(name: 'userId', includeIfNull: true)
  int? userId;
  @JsonKey(name: 'subjectId', includeIfNull: true)
  int? subjectId;
  static const fromJsonFactory = _$TeacherStaticByTypeExamRequestFromJson;
  static const toJsonFactory = _$TeacherStaticByTypeExamRequestToJson;
  Map<String, dynamic> toJson() => _$TeacherStaticByTypeExamRequestToJson(this);
}

@JsonSerializable(explicitToJson: true)
class UserExamResultChangeMarkRequest {
  UserExamResultChangeMarkRequest({
    this.userExamResultId,
    this.comment,
  });

  factory UserExamResultChangeMarkRequest.fromJson(Map<String, dynamic> json) =>
      _$UserExamResultChangeMarkRequestFromJson(json);

  @JsonKey(name: 'userExamResultId', includeIfNull: true)
  int? userExamResultId;
  @JsonKey(name: 'comment', includeIfNull: true)
  String? comment;
  static const fromJsonFactory = _$UserExamResultChangeMarkRequestFromJson;
  static const toJsonFactory = _$UserExamResultChangeMarkRequestToJson;
  Map<String, dynamic> toJson() =>
      _$UserExamResultChangeMarkRequestToJson(this);
}

int? assignExamStatusEnumToJson(
    enums.AssignExamStatusEnum? assignExamStatusEnum) {
  return assignExamStatusEnum?.index;
}

enums.AssignExamStatusEnum assignExamStatusEnumFromJson(
    int? assignExamStatusEnum) {
  if (assignExamStatusEnum == null) {
    return enums.AssignExamStatusEnum.swaggerGeneratedUnknown;
  }

  return enums.$AssignExamStatusEnumMap.entries
      .firstWhere(
          (element) =>
              element.value.toString().toLowerCase() ==
              assignExamStatusEnum.toString().toLowerCase(),
          orElse: () => const MapEntry(
              enums.AssignExamStatusEnum.swaggerGeneratedUnknown, ''))
      .key;
}

List<int> assignExamStatusEnumListToJson(
    List<enums.AssignExamStatusEnum>? assignExamStatusEnum) {
  if (assignExamStatusEnum == null) {
    return [];
  }

  return assignExamStatusEnum
      .map((e) => e.index) //enums.$AssignExamStatusEnumMap[e]!
      .toList();
}

List<enums.AssignExamStatusEnum> assignExamStatusEnumListFromJson(
    List? assignExamStatusEnum) {
  if (assignExamStatusEnum == null) {
    return [];
  }

  return assignExamStatusEnum
      .map((e) => assignExamStatusEnumFromJson(e)) //.toString()
      .toList();
}

int? assignExamTypeEnumToJson(enums.AssignExamTypeEnum? assignExamTypeEnum) {
  return assignExamTypeEnum?.index;
}

enums.AssignExamTypeEnum assignExamTypeEnumFromJson(int? assignExamTypeEnum) {
  if (assignExamTypeEnum == null) {
    return enums.AssignExamTypeEnum.swaggerGeneratedUnknown;
  }

  return enums.$AssignExamTypeEnumMap.entries
      .firstWhere(
          (element) =>
              element.value.toString().toLowerCase() ==
              assignExamTypeEnum.toString().toLowerCase(),
          orElse: () => const MapEntry(
              enums.AssignExamTypeEnum.swaggerGeneratedUnknown, ''))
      .key;
}

List<int> assignExamTypeEnumListToJson(
    List<enums.AssignExamTypeEnum>? assignExamTypeEnum) {
  if (assignExamTypeEnum == null) {
    return [];
  }

  return assignExamTypeEnum
      .map((e) => e.index) //enums.$AssignExamTypeEnumMap[e]!
      .toList();
}

List<enums.AssignExamTypeEnum> assignExamTypeEnumListFromJson(
    List? assignExamTypeEnum) {
  if (assignExamTypeEnum == null) {
    return [];
  }

  return assignExamTypeEnum
      .map((e) => assignExamTypeEnumFromJson(e)) //.toString()
      .toList();
}

int? assignExamUserStatusEnumToJson(
    enums.AssignExamUserStatusEnum? assignExamUserStatusEnum) {
  return assignExamUserStatusEnum?.index;
}

enums.AssignExamUserStatusEnum assignExamUserStatusEnumFromJson(
    int? assignExamUserStatusEnum) {
  if (assignExamUserStatusEnum == null) {
    return enums.AssignExamUserStatusEnum.swaggerGeneratedUnknown;
  }

  return enums.$AssignExamUserStatusEnumMap.entries
      .firstWhere(
          (element) =>
              element.value.toString().toLowerCase() ==
              assignExamUserStatusEnum.toString().toLowerCase(),
          orElse: () => const MapEntry(
              enums.AssignExamUserStatusEnum.swaggerGeneratedUnknown, ''))
      .key;
}

List<int> assignExamUserStatusEnumListToJson(
    List<enums.AssignExamUserStatusEnum>? assignExamUserStatusEnum) {
  if (assignExamUserStatusEnum == null) {
    return [];
  }

  return assignExamUserStatusEnum
      .map((e) => e.index) //enums.$AssignExamUserStatusEnumMap[e]!
      .toList();
}

List<enums.AssignExamUserStatusEnum> assignExamUserStatusEnumListFromJson(
    List? assignExamUserStatusEnum) {
  if (assignExamUserStatusEnum == null) {
    return [];
  }

  return assignExamUserStatusEnum
      .map((e) => assignExamUserStatusEnumFromJson(e)) //.toString()
      .toList();
}

int? attendanceStatusEnumToJson(
    enums.AttendanceStatusEnum? attendanceStatusEnum) {
  return attendanceStatusEnum?.index;
}

enums.AttendanceStatusEnum attendanceStatusEnumFromJson(
    int? attendanceStatusEnum) {
  if (attendanceStatusEnum == null) {
    return enums.AttendanceStatusEnum.swaggerGeneratedUnknown;
  }

  return enums.$AttendanceStatusEnumMap.entries
      .firstWhere(
          (element) =>
              element.value.toString().toLowerCase() ==
              attendanceStatusEnum.toString().toLowerCase(),
          orElse: () => const MapEntry(
              enums.AttendanceStatusEnum.swaggerGeneratedUnknown, ''))
      .key;
}

List<int> attendanceStatusEnumListToJson(
    List<enums.AttendanceStatusEnum>? attendanceStatusEnum) {
  if (attendanceStatusEnum == null) {
    return [];
  }

  return attendanceStatusEnum
      .map((e) => e.index) //enums.$AttendanceStatusEnumMap[e]!
      .toList();
}

List<enums.AttendanceStatusEnum> attendanceStatusEnumListFromJson(
    List? attendanceStatusEnum) {
  if (attendanceStatusEnum == null) {
    return [];
  }

  return attendanceStatusEnum
      .map((e) => attendanceStatusEnumFromJson(e)) //.toString()
      .toList();
}

int? classListSearchTypeEnumToJson(
    enums.ClassListSearchTypeEnum? classListSearchTypeEnum) {
  return classListSearchTypeEnum?.index;
}

enums.ClassListSearchTypeEnum classListSearchTypeEnumFromJson(
    int? classListSearchTypeEnum) {
  if (classListSearchTypeEnum == null) {
    return enums.ClassListSearchTypeEnum.swaggerGeneratedUnknown;
  }

  return enums.$ClassListSearchTypeEnumMap.entries
      .firstWhere(
          (element) =>
              element.value.toString().toLowerCase() ==
              classListSearchTypeEnum.toString().toLowerCase(),
          orElse: () => const MapEntry(
              enums.ClassListSearchTypeEnum.swaggerGeneratedUnknown, ''))
      .key;
}

List<int> classListSearchTypeEnumListToJson(
    List<enums.ClassListSearchTypeEnum>? classListSearchTypeEnum) {
  if (classListSearchTypeEnum == null) {
    return [];
  }

  return classListSearchTypeEnum
      .map((e) => e.index) //enums.$ClassListSearchTypeEnumMap[e]!
      .toList();
}

List<enums.ClassListSearchTypeEnum> classListSearchTypeEnumListFromJson(
    List? classListSearchTypeEnum) {
  if (classListSearchTypeEnum == null) {
    return [];
  }

  return classListSearchTypeEnum
      .map((e) => classListSearchTypeEnumFromJson(e)) //.toString()
      .toList();
}

int? classStatusEnumToJson(enums.ClassStatusEnum? classStatusEnum) {
  return classStatusEnum?.index;
}

enums.ClassStatusEnum classStatusEnumFromJson(int? classStatusEnum) {
  if (classStatusEnum == null) {
    return enums.ClassStatusEnum.swaggerGeneratedUnknown;
  }

  return enums.$ClassStatusEnumMap.entries
      .firstWhere(
          (element) =>
              element.value.toString().toLowerCase() ==
              classStatusEnum.toString().toLowerCase(),
          orElse: () =>
              const MapEntry(enums.ClassStatusEnum.swaggerGeneratedUnknown, ''))
      .key;
}

List<int> classStatusEnumListToJson(
    List<enums.ClassStatusEnum>? classStatusEnum) {
  if (classStatusEnum == null) {
    return [];
  }

  return classStatusEnum
      .map((e) => e.index) //enums.$ClassStatusEnumMap[e]!
      .toList();
}

List<enums.ClassStatusEnum> classStatusEnumListFromJson(List? classStatusEnum) {
  if (classStatusEnum == null) {
    return [];
  }

  return classStatusEnum
      .map((e) => classStatusEnumFromJson(e)) //.toString()
      .toList();
}

int? classTypeEnumToJson(enums.ClassTypeEnum? classTypeEnum) {
  return classTypeEnum?.index;
}

enums.ClassTypeEnum classTypeEnumFromJson(int? classTypeEnum) {
  if (classTypeEnum == null) {
    return enums.ClassTypeEnum.swaggerGeneratedUnknown;
  }

  return enums.$ClassTypeEnumMap.entries
      .firstWhere(
          (element) =>
              element.value.toString().toLowerCase() ==
              classTypeEnum.toString().toLowerCase(),
          orElse: () =>
              const MapEntry(enums.ClassTypeEnum.swaggerGeneratedUnknown, ''))
      .key;
}

List<int> classTypeEnumListToJson(List<enums.ClassTypeEnum>? classTypeEnum) {
  if (classTypeEnum == null) {
    return [];
  }

  return classTypeEnum
      .map((e) => e.index) //enums.$ClassTypeEnumMap[e]!
      .toList();
}

List<enums.ClassTypeEnum> classTypeEnumListFromJson(List? classTypeEnum) {
  if (classTypeEnum == null) {
    return [];
  }

  return classTypeEnum
      .map((e) => classTypeEnumFromJson(e)) //.toString()
      .toList();
}

int? classUserRoleEnumToJson(enums.ClassUserRoleEnum? classUserRoleEnum) {
  return classUserRoleEnum?.index;
}

enums.ClassUserRoleEnum classUserRoleEnumFromJson(int? classUserRoleEnum) {
  if (classUserRoleEnum == null) {
    return enums.ClassUserRoleEnum.swaggerGeneratedUnknown;
  }

  return enums.$ClassUserRoleEnumMap.entries
      .firstWhere(
          (element) =>
              element.value.toString().toLowerCase() ==
              classUserRoleEnum.toString().toLowerCase(),
          orElse: () => const MapEntry(
              enums.ClassUserRoleEnum.swaggerGeneratedUnknown, ''))
      .key;
}

List<int> classUserRoleEnumListToJson(
    List<enums.ClassUserRoleEnum>? classUserRoleEnum) {
  if (classUserRoleEnum == null) {
    return [];
  }

  return classUserRoleEnum
      .map((e) => e.index) //enums.$ClassUserRoleEnumMap[e]!
      .toList();
}

List<enums.ClassUserRoleEnum> classUserRoleEnumListFromJson(
    List? classUserRoleEnum) {
  if (classUserRoleEnum == null) {
    return [];
  }

  return classUserRoleEnum
      .map((e) => classUserRoleEnumFromJson(e)) //.toString()
      .toList();
}

int? classUserStatusEnumToJson(enums.ClassUserStatusEnum? classUserStatusEnum) {
  return classUserStatusEnum?.index;
}

enums.ClassUserStatusEnum classUserStatusEnumFromJson(
    int? classUserStatusEnum) {
  if (classUserStatusEnum == null) {
    return enums.ClassUserStatusEnum.swaggerGeneratedUnknown;
  }

  return enums.$ClassUserStatusEnumMap.entries
      .firstWhere(
          (element) =>
              element.value.toString().toLowerCase() ==
              classUserStatusEnum.toString().toLowerCase(),
          orElse: () => const MapEntry(
              enums.ClassUserStatusEnum.swaggerGeneratedUnknown, ''))
      .key;
}

List<int> classUserStatusEnumListToJson(
    List<enums.ClassUserStatusEnum>? classUserStatusEnum) {
  if (classUserStatusEnum == null) {
    return [];
  }

  return classUserStatusEnum
      .map((e) => e.index) //enums.$ClassUserStatusEnumMap[e]!
      .toList();
}

List<enums.ClassUserStatusEnum> classUserStatusEnumListFromJson(
    List? classUserStatusEnum) {
  if (classUserStatusEnum == null) {
    return [];
  }

  return classUserStatusEnum
      .map((e) => classUserStatusEnumFromJson(e)) //.toString()
      .toList();
}

int? commonStatusEnumToJson(enums.CommonStatusEnum? commonStatusEnum) {
  return commonStatusEnum?.index;
}

enums.CommonStatusEnum commonStatusEnumFromJson(int? commonStatusEnum) {
  if (commonStatusEnum == null) {
    return enums.CommonStatusEnum.swaggerGeneratedUnknown;
  }

  return enums.$CommonStatusEnumMap.entries
      .firstWhere(
          (element) =>
              element.value.toString().toLowerCase() ==
              commonStatusEnum.toString().toLowerCase(),
          orElse: () => const MapEntry(
              enums.CommonStatusEnum.swaggerGeneratedUnknown, ''))
      .key;
}

List<int> commonStatusEnumListToJson(
    List<enums.CommonStatusEnum>? commonStatusEnum) {
  if (commonStatusEnum == null) {
    return [];
  }

  return commonStatusEnum
      .map((e) => e.index) //enums.$CommonStatusEnumMap[e]!
      .toList();
}

List<enums.CommonStatusEnum> commonStatusEnumListFromJson(
    List? commonStatusEnum) {
  if (commonStatusEnum == null) {
    return [];
  }

  return commonStatusEnum
      .map((e) => commonStatusEnumFromJson(e)) //.toString()
      .toList();
}

int? consultationStatusEnumToJson(
    enums.ConsultationStatusEnum? consultationStatusEnum) {
  return consultationStatusEnum?.index;
}

enums.ConsultationStatusEnum consultationStatusEnumFromJson(
    int? consultationStatusEnum) {
  if (consultationStatusEnum == null) {
    return enums.ConsultationStatusEnum.swaggerGeneratedUnknown;
  }

  return enums.$ConsultationStatusEnumMap.entries
      .firstWhere(
          (element) =>
              element.value.toString().toLowerCase() ==
              consultationStatusEnum.toString().toLowerCase(),
          orElse: () => const MapEntry(
              enums.ConsultationStatusEnum.swaggerGeneratedUnknown, ''))
      .key;
}

List<int> consultationStatusEnumListToJson(
    List<enums.ConsultationStatusEnum>? consultationStatusEnum) {
  if (consultationStatusEnum == null) {
    return [];
  }

  return consultationStatusEnum
      .map((e) => e.index) //enums.$ConsultationStatusEnumMap[e]!
      .toList();
}

List<enums.ConsultationStatusEnum> consultationStatusEnumListFromJson(
    List? consultationStatusEnum) {
  if (consultationStatusEnum == null) {
    return [];
  }

  return consultationStatusEnum
      .map((e) => consultationStatusEnumFromJson(e)) //.toString()
      .toList();
}

int? contactStatusEnumToJson(enums.ContactStatusEnum? contactStatusEnum) {
  return contactStatusEnum?.index;
}

enums.ContactStatusEnum contactStatusEnumFromJson(int? contactStatusEnum) {
  if (contactStatusEnum == null) {
    return enums.ContactStatusEnum.swaggerGeneratedUnknown;
  }

  return enums.$ContactStatusEnumMap.entries
      .firstWhere(
          (element) =>
              element.value.toString().toLowerCase() ==
              contactStatusEnum.toString().toLowerCase(),
          orElse: () => const MapEntry(
              enums.ContactStatusEnum.swaggerGeneratedUnknown, ''))
      .key;
}

List<int> contactStatusEnumListToJson(
    List<enums.ContactStatusEnum>? contactStatusEnum) {
  if (contactStatusEnum == null) {
    return [];
  }

  return contactStatusEnum
      .map((e) => e.index) //enums.$ContactStatusEnumMap[e]!
      .toList();
}

List<enums.ContactStatusEnum> contactStatusEnumListFromJson(
    List? contactStatusEnum) {
  if (contactStatusEnum == null) {
    return [];
  }

  return contactStatusEnum
      .map((e) => contactStatusEnumFromJson(e)) //.toString()
      .toList();
}

int? errorCodeEnumToJson(enums.ErrorCodeEnum? errorCodeEnum) {
  return errorCodeEnum?.index;
}

enums.ErrorCodeEnum errorCodeEnumFromJson(int? errorCodeEnum) {
  if (errorCodeEnum == null) {
    return enums.ErrorCodeEnum.swaggerGeneratedUnknown;
  }

  return enums.$ErrorCodeEnumMap.entries
      .firstWhere(
          (element) =>
              element.value.toString().toLowerCase() ==
              errorCodeEnum.toString().toLowerCase(),
          orElse: () =>
              const MapEntry(enums.ErrorCodeEnum.swaggerGeneratedUnknown, ''))
      .key;
}

List<int> errorCodeEnumListToJson(List<enums.ErrorCodeEnum>? errorCodeEnum) {
  if (errorCodeEnum == null) {
    return [];
  }

  return errorCodeEnum
      .map((e) => e.index) //enums.$ErrorCodeEnumMap[e]!
      .toList();
}

List<enums.ErrorCodeEnum> errorCodeEnumListFromJson(List? errorCodeEnum) {
  if (errorCodeEnum == null) {
    return [];
  }

  return errorCodeEnum
      .map((e) => errorCodeEnumFromJson(e)) //.toString()
      .toList();
}

int? examFileChoiceTypeEnumToJson(
    enums.ExamFileChoiceTypeEnum? examFileChoiceTypeEnum) {
  return examFileChoiceTypeEnum?.index;
}

enums.ExamFileChoiceTypeEnum examFileChoiceTypeEnumFromJson(
    int? examFileChoiceTypeEnum) {
  if (examFileChoiceTypeEnum == null) {
    return enums.ExamFileChoiceTypeEnum.swaggerGeneratedUnknown;
  }

  return enums.$ExamFileChoiceTypeEnumMap.entries
      .firstWhere(
          (element) =>
              element.value.toString().toLowerCase() ==
              examFileChoiceTypeEnum.toString().toLowerCase(),
          orElse: () => const MapEntry(
              enums.ExamFileChoiceTypeEnum.swaggerGeneratedUnknown, ''))
      .key;
}

List<int> examFileChoiceTypeEnumListToJson(
    List<enums.ExamFileChoiceTypeEnum>? examFileChoiceTypeEnum) {
  if (examFileChoiceTypeEnum == null) {
    return [];
  }

  return examFileChoiceTypeEnum
      .map((e) => e.index) //enums.$ExamFileChoiceTypeEnumMap[e]!
      .toList();
}

List<enums.ExamFileChoiceTypeEnum> examFileChoiceTypeEnumListFromJson(
    List? examFileChoiceTypeEnum) {
  if (examFileChoiceTypeEnum == null) {
    return [];
  }

  return examFileChoiceTypeEnum
      .map((e) => examFileChoiceTypeEnumFromJson(e)) //.toString()
      .toList();
}

int? examFormatEnumToJson(enums.ExamFormatEnum? examFormatEnum) {
  return examFormatEnum?.index;
}

enums.ExamFormatEnum examFormatEnumFromJson(int? examFormatEnum) {
  if (examFormatEnum == null) {
    return enums.ExamFormatEnum.swaggerGeneratedUnknown;
  }

  return enums.$ExamFormatEnumMap.entries
      .firstWhere(
          (element) =>
              element.value.toString().toLowerCase() ==
              examFormatEnum.toString().toLowerCase(),
          orElse: () =>
              const MapEntry(enums.ExamFormatEnum.swaggerGeneratedUnknown, ''))
      .key;
}

List<int> examFormatEnumListToJson(List<enums.ExamFormatEnum>? examFormatEnum) {
  if (examFormatEnum == null) {
    return [];
  }

  return examFormatEnum
      .map((e) => e.index) //enums.$ExamFormatEnumMap[e]!
      .toList();
}

List<enums.ExamFormatEnum> examFormatEnumListFromJson(List? examFormatEnum) {
  if (examFormatEnum == null) {
    return [];
  }

  return examFormatEnum
      .map((e) => examFormatEnumFromJson(e)) //.toString()
      .toList();
}

int? examStatusEnumToJson(enums.ExamStatusEnum? examStatusEnum) {
  return examStatusEnum?.index;
}

enums.ExamStatusEnum examStatusEnumFromJson(int? examStatusEnum) {
  if (examStatusEnum == null) {
    return enums.ExamStatusEnum.swaggerGeneratedUnknown;
  }

  return enums.$ExamStatusEnumMap.entries
      .firstWhere(
          (element) =>
              element.value.toString().toLowerCase() ==
              examStatusEnum.toString().toLowerCase(),
          orElse: () =>
              const MapEntry(enums.ExamStatusEnum.swaggerGeneratedUnknown, ''))
      .key;
}

List<int> examStatusEnumListToJson(List<enums.ExamStatusEnum>? examStatusEnum) {
  if (examStatusEnum == null) {
    return [];
  }

  return examStatusEnum
      .map((e) => e.index) //enums.$ExamStatusEnumMap[e]!
      .toList();
}

List<enums.ExamStatusEnum> examStatusEnumListFromJson(List? examStatusEnum) {
  if (examStatusEnum == null) {
    return [];
  }

  return examStatusEnum
      .map((e) => examStatusEnumFromJson(e)) //.toString()
      .toList();
}

int? examTypeEnumToJson(enums.ExamTypeEnum? examTypeEnum) {
  return examTypeEnum?.index;
}

enums.ExamTypeEnum examTypeEnumFromJson(int? examTypeEnum) {
  if (examTypeEnum == null) {
    return enums.ExamTypeEnum.swaggerGeneratedUnknown;
  }

  return enums.$ExamTypeEnumMap.entries
      .firstWhere(
          (element) =>
              element.value.toString().toLowerCase() ==
              examTypeEnum.toString().toLowerCase(),
          orElse: () =>
              const MapEntry(enums.ExamTypeEnum.swaggerGeneratedUnknown, ''))
      .key;
}

List<int> examTypeEnumListToJson(List<enums.ExamTypeEnum>? examTypeEnum) {
  if (examTypeEnum == null) {
    return [];
  }

  return examTypeEnum
      .map((e) => e.index) //enums.$ExamTypeEnumMap[e]!
      .toList();
}

List<enums.ExamTypeEnum> examTypeEnumListFromJson(List? examTypeEnum) {
  if (examTypeEnum == null) {
    return [];
  }

  return examTypeEnum
      .map((e) => examTypeEnumFromJson(e)) //.toString()
      .toList();
}

int? fileStatusEnumToJson(enums.FileStatusEnum? fileStatusEnum) {
  return fileStatusEnum?.index;
}

enums.FileStatusEnum fileStatusEnumFromJson(int? fileStatusEnum) {
  if (fileStatusEnum == null) {
    return enums.FileStatusEnum.swaggerGeneratedUnknown;
  }

  return enums.$FileStatusEnumMap.entries
      .firstWhere(
          (element) =>
              element.value.toString().toLowerCase() ==
              fileStatusEnum.toString().toLowerCase(),
          orElse: () =>
              const MapEntry(enums.FileStatusEnum.swaggerGeneratedUnknown, ''))
      .key;
}

List<int> fileStatusEnumListToJson(List<enums.FileStatusEnum>? fileStatusEnum) {
  if (fileStatusEnum == null) {
    return [];
  }

  return fileStatusEnum
      .map((e) => e.index) //enums.$FileStatusEnumMap[e]!
      .toList();
}

List<enums.FileStatusEnum> fileStatusEnumListFromJson(List? fileStatusEnum) {
  if (fileStatusEnum == null) {
    return [];
  }

  return fileStatusEnum
      .map((e) => fileStatusEnumFromJson(e)) //.toString()
      .toList();
}

int? lessonTypeEnumToJson(enums.LessonTypeEnum? lessonTypeEnum) {
  return lessonTypeEnum?.index;
}

enums.LessonTypeEnum lessonTypeEnumFromJson(int? lessonTypeEnum) {
  if (lessonTypeEnum == null) {
    return enums.LessonTypeEnum.swaggerGeneratedUnknown;
  }

  return enums.$LessonTypeEnumMap.entries
      .firstWhere(
          (element) =>
              element.value.toString().toLowerCase() ==
              lessonTypeEnum.toString().toLowerCase(),
          orElse: () =>
              const MapEntry(enums.LessonTypeEnum.swaggerGeneratedUnknown, ''))
      .key;
}

List<int> lessonTypeEnumListToJson(List<enums.LessonTypeEnum>? lessonTypeEnum) {
  if (lessonTypeEnum == null) {
    return [];
  }

  return lessonTypeEnum
      .map((e) => e.index) //enums.$LessonTypeEnumMap[e]!
      .toList();
}

List<enums.LessonTypeEnum> lessonTypeEnumListFromJson(List? lessonTypeEnum) {
  if (lessonTypeEnum == null) {
    return [];
  }

  return lessonTypeEnum
      .map((e) => lessonTypeEnumFromJson(e)) //.toString()
      .toList();
}

int? localityStatusEnumToJson(enums.LocalityStatusEnum? localityStatusEnum) {
  return localityStatusEnum?.index;
}

enums.LocalityStatusEnum localityStatusEnumFromJson(int? localityStatusEnum) {
  if (localityStatusEnum == null) {
    return enums.LocalityStatusEnum.swaggerGeneratedUnknown;
  }

  return enums.$LocalityStatusEnumMap.entries
      .firstWhere(
          (element) =>
              element.value.toString().toLowerCase() ==
              localityStatusEnum.toString().toLowerCase(),
          orElse: () => const MapEntry(
              enums.LocalityStatusEnum.swaggerGeneratedUnknown, ''))
      .key;
}

List<int> localityStatusEnumListToJson(
    List<enums.LocalityStatusEnum>? localityStatusEnum) {
  if (localityStatusEnum == null) {
    return [];
  }

  return localityStatusEnum
      .map((e) => e.index) //enums.$LocalityStatusEnumMap[e]!
      .toList();
}

List<enums.LocalityStatusEnum> localityStatusEnumListFromJson(
    List? localityStatusEnum) {
  if (localityStatusEnum == null) {
    return [];
  }

  return localityStatusEnum
      .map((e) => localityStatusEnumFromJson(e)) //.toString()
      .toList();
}

int? localityTypeEnumToJson(enums.LocalityTypeEnum? localityTypeEnum) {
  return localityTypeEnum?.index;
}

enums.LocalityTypeEnum localityTypeEnumFromJson(int? localityTypeEnum) {
  if (localityTypeEnum == null) {
    return enums.LocalityTypeEnum.swaggerGeneratedUnknown;
  }

  return enums.$LocalityTypeEnumMap.entries
      .firstWhere(
          (element) =>
              element.value.toString().toLowerCase() ==
              localityTypeEnum.toString().toLowerCase(),
          orElse: () => const MapEntry(
              enums.LocalityTypeEnum.swaggerGeneratedUnknown, ''))
      .key;
}

List<int> localityTypeEnumListToJson(
    List<enums.LocalityTypeEnum>? localityTypeEnum) {
  if (localityTypeEnum == null) {
    return [];
  }

  return localityTypeEnum
      .map((e) => e.index) //enums.$LocalityTypeEnumMap[e]!
      .toList();
}

List<enums.LocalityTypeEnum> localityTypeEnumListFromJson(
    List? localityTypeEnum) {
  if (localityTypeEnum == null) {
    return [];
  }

  return localityTypeEnum
      .map((e) => localityTypeEnumFromJson(e)) //.toString()
      .toList();
}

int? moduleEnumToJson(enums.ModuleEnum? moduleEnum) {
  return moduleEnum?.index;
}

enums.ModuleEnum moduleEnumFromJson(int? moduleEnum) {
  if (moduleEnum == null) {
    return enums.ModuleEnum.swaggerGeneratedUnknown;
  }

  return enums.$ModuleEnumMap.entries
      .firstWhere(
          (element) =>
              element.value.toString().toLowerCase() ==
              moduleEnum.toString().toLowerCase(),
          orElse: () =>
              const MapEntry(enums.ModuleEnum.swaggerGeneratedUnknown, ''))
      .key;
}

List<int> moduleEnumListToJson(List<enums.ModuleEnum>? moduleEnum) {
  if (moduleEnum == null) {
    return [];
  }

  return moduleEnum
      .map((e) => e.index) //enums.$ModuleEnumMap[e]!
      .toList();
}

List<enums.ModuleEnum> moduleEnumListFromJson(List? moduleEnum) {
  if (moduleEnum == null) {
    return [];
  }

  return moduleEnum
      .map((e) => moduleEnumFromJson(e)) //.toString()
      .toList();
}

int? objectTypeEnumToJson(enums.ObjectTypeEnum? objectTypeEnum) {
  return objectTypeEnum?.index;
}

enums.ObjectTypeEnum objectTypeEnumFromJson(int? objectTypeEnum) {
  if (objectTypeEnum == null) {
    return enums.ObjectTypeEnum.swaggerGeneratedUnknown;
  }

  return enums.$ObjectTypeEnumMap.entries
      .firstWhere(
          (element) =>
              element.value.toString().toLowerCase() ==
              objectTypeEnum.toString().toLowerCase(),
          orElse: () =>
              const MapEntry(enums.ObjectTypeEnum.swaggerGeneratedUnknown, ''))
      .key;
}

List<int> objectTypeEnumListToJson(List<enums.ObjectTypeEnum>? objectTypeEnum) {
  if (objectTypeEnum == null) {
    return [];
  }

  return objectTypeEnum
      .map((e) => e.index) //enums.$ObjectTypeEnumMap[e]!
      .toList();
}

List<enums.ObjectTypeEnum> objectTypeEnumListFromJson(List? objectTypeEnum) {
  if (objectTypeEnum == null) {
    return [];
  }

  return objectTypeEnum
      .map((e) => objectTypeEnumFromJson(e)) //.toString()
      .toList();
}

int? orderStatusEnumToJson(enums.OrderStatusEnum? orderStatusEnum) {
  return orderStatusEnum?.index;
}

enums.OrderStatusEnum orderStatusEnumFromJson(int? orderStatusEnum) {
  if (orderStatusEnum == null) {
    return enums.OrderStatusEnum.swaggerGeneratedUnknown;
  }

  return enums.$OrderStatusEnumMap.entries
      .firstWhere(
          (element) =>
              element.value.toString().toLowerCase() ==
              orderStatusEnum.toString().toLowerCase(),
          orElse: () =>
              const MapEntry(enums.OrderStatusEnum.swaggerGeneratedUnknown, ''))
      .key;
}

List<int> orderStatusEnumListToJson(
    List<enums.OrderStatusEnum>? orderStatusEnum) {
  if (orderStatusEnum == null) {
    return [];
  }

  return orderStatusEnum
      .map((e) => e.index) //enums.$OrderStatusEnumMap[e]!
      .toList();
}

List<enums.OrderStatusEnum> orderStatusEnumListFromJson(List? orderStatusEnum) {
  if (orderStatusEnum == null) {
    return [];
  }

  return orderStatusEnum
      .map((e) => orderStatusEnumFromJson(e)) //.toString()
      .toList();
}

int? productReviewStatusEnumToJson(
    enums.ProductReviewStatusEnum? productReviewStatusEnum) {
  return productReviewStatusEnum?.index;
}

enums.ProductReviewStatusEnum productReviewStatusEnumFromJson(
    int? productReviewStatusEnum) {
  if (productReviewStatusEnum == null) {
    return enums.ProductReviewStatusEnum.swaggerGeneratedUnknown;
  }

  return enums.$ProductReviewStatusEnumMap.entries
      .firstWhere(
          (element) =>
              element.value.toString().toLowerCase() ==
              productReviewStatusEnum.toString().toLowerCase(),
          orElse: () => const MapEntry(
              enums.ProductReviewStatusEnum.swaggerGeneratedUnknown, ''))
      .key;
}

List<int> productReviewStatusEnumListToJson(
    List<enums.ProductReviewStatusEnum>? productReviewStatusEnum) {
  if (productReviewStatusEnum == null) {
    return [];
  }

  return productReviewStatusEnum
      .map((e) => e.index) //enums.$ProductReviewStatusEnumMap[e]!
      .toList();
}

List<enums.ProductReviewStatusEnum> productReviewStatusEnumListFromJson(
    List? productReviewStatusEnum) {
  if (productReviewStatusEnum == null) {
    return [];
  }

  return productReviewStatusEnum
      .map((e) => productReviewStatusEnumFromJson(e)) //.toString()
      .toList();
}

int? productTypeEnumToJson(enums.ProductTypeEnum? productTypeEnum) {
  return productTypeEnum?.index;
}

enums.ProductTypeEnum productTypeEnumFromJson(int? productTypeEnum) {
  if (productTypeEnum == null) {
    return enums.ProductTypeEnum.swaggerGeneratedUnknown;
  }

  return enums.$ProductTypeEnumMap.entries
      .firstWhere(
          (element) =>
              element.value.toString().toLowerCase() ==
              productTypeEnum.toString().toLowerCase(),
          orElse: () =>
              const MapEntry(enums.ProductTypeEnum.swaggerGeneratedUnknown, ''))
      .key;
}

List<int> productTypeEnumListToJson(
    List<enums.ProductTypeEnum>? productTypeEnum) {
  if (productTypeEnum == null) {
    return [];
  }

  return productTypeEnum
      .map((e) => e.index) //enums.$ProductTypeEnumMap[e]!
      .toList();
}

List<enums.ProductTypeEnum> productTypeEnumListFromJson(List? productTypeEnum) {
  if (productTypeEnum == null) {
    return [];
  }

  return productTypeEnum
      .map((e) => productTypeEnumFromJson(e)) //.toString()
      .toList();
}

int? questionLevelEnumToJson(enums.QuestionLevelEnum? questionLevelEnum) {
  return questionLevelEnum?.index;
}

enums.QuestionLevelEnum questionLevelEnumFromJson(int? questionLevelEnum) {
  if (questionLevelEnum == null) {
    return enums.QuestionLevelEnum.swaggerGeneratedUnknown;
  }

  return enums.$QuestionLevelEnumMap.entries
      .firstWhere(
          (element) =>
              element.value.toString().toLowerCase() ==
              questionLevelEnum.toString().toLowerCase(),
          orElse: () => const MapEntry(
              enums.QuestionLevelEnum.swaggerGeneratedUnknown, ''))
      .key;
}

List<int> questionLevelEnumListToJson(
    List<enums.QuestionLevelEnum>? questionLevelEnum) {
  if (questionLevelEnum == null) {
    return [];
  }

  return questionLevelEnum
      .map((e) => e.index) //enums.$QuestionLevelEnumMap[e]!
      .toList();
}

List<enums.QuestionLevelEnum> questionLevelEnumListFromJson(
    List? questionLevelEnum) {
  if (questionLevelEnum == null) {
    return [];
  }

  return questionLevelEnum
      .map((e) => questionLevelEnumFromJson(e)) //.toString()
      .toList();
}

int? questionStatusEnumToJson(enums.QuestionStatusEnum? questionStatusEnum) {
  return questionStatusEnum?.index;
}

enums.QuestionStatusEnum questionStatusEnumFromJson(int? questionStatusEnum) {
  if (questionStatusEnum == null) {
    return enums.QuestionStatusEnum.swaggerGeneratedUnknown;
  }

  return enums.$QuestionStatusEnumMap.entries
      .firstWhere(
          (element) =>
              element.value.toString().toLowerCase() ==
              questionStatusEnum.toString().toLowerCase(),
          orElse: () => const MapEntry(
              enums.QuestionStatusEnum.swaggerGeneratedUnknown, ''))
      .key;
}

List<int> questionStatusEnumListToJson(
    List<enums.QuestionStatusEnum>? questionStatusEnum) {
  if (questionStatusEnum == null) {
    return [];
  }

  return questionStatusEnum
      .map((e) => e.index) //enums.$QuestionStatusEnumMap[e]!
      .toList();
}

List<enums.QuestionStatusEnum> questionStatusEnumListFromJson(
    List? questionStatusEnum) {
  if (questionStatusEnum == null) {
    return [];
  }

  return questionStatusEnum
      .map((e) => questionStatusEnumFromJson(e)) //.toString()
      .toList();
}

int? schoolStatusEnumToJson(enums.SchoolStatusEnum? schoolStatusEnum) {
  return schoolStatusEnum?.index;
}

enums.SchoolStatusEnum schoolStatusEnumFromJson(int? schoolStatusEnum) {
  if (schoolStatusEnum == null) {
    return enums.SchoolStatusEnum.swaggerGeneratedUnknown;
  }

  return enums.$SchoolStatusEnumMap.entries
      .firstWhere(
          (element) =>
              element.value.toString().toLowerCase() ==
              schoolStatusEnum.toString().toLowerCase(),
          orElse: () => const MapEntry(
              enums.SchoolStatusEnum.swaggerGeneratedUnknown, ''))
      .key;
}

List<int> schoolStatusEnumListToJson(
    List<enums.SchoolStatusEnum>? schoolStatusEnum) {
  if (schoolStatusEnum == null) {
    return [];
  }

  return schoolStatusEnum
      .map((e) => e.index) //enums.$SchoolStatusEnumMap[e]!
      .toList();
}

List<enums.SchoolStatusEnum> schoolStatusEnumListFromJson(
    List? schoolStatusEnum) {
  if (schoolStatusEnum == null) {
    return [];
  }

  return schoolStatusEnum
      .map((e) => schoolStatusEnumFromJson(e)) //.toString()
      .toList();
}

int? sessionStatusEnumToJson(enums.SessionStatusEnum? sessionStatusEnum) {
  return sessionStatusEnum?.index;
}

enums.SessionStatusEnum sessionStatusEnumFromJson(int? sessionStatusEnum) {
  if (sessionStatusEnum == null) {
    return enums.SessionStatusEnum.swaggerGeneratedUnknown;
  }

  return enums.$SessionStatusEnumMap.entries
      .firstWhere(
          (element) =>
              element.value.toString().toLowerCase() ==
              sessionStatusEnum.toString().toLowerCase(),
          orElse: () => const MapEntry(
              enums.SessionStatusEnum.swaggerGeneratedUnknown, ''))
      .key;
}

List<int> sessionStatusEnumListToJson(
    List<enums.SessionStatusEnum>? sessionStatusEnum) {
  if (sessionStatusEnum == null) {
    return [];
  }

  return sessionStatusEnum
      .map((e) => e.index) //enums.$SessionStatusEnumMap[e]!
      .toList();
}

List<enums.SessionStatusEnum> sessionStatusEnumListFromJson(
    List? sessionStatusEnum) {
  if (sessionStatusEnum == null) {
    return [];
  }

  return sessionStatusEnum
      .map((e) => sessionStatusEnumFromJson(e)) //.toString()
      .toList();
}

int? userExamResultStatusToJson(
    enums.UserExamResultStatus? userExamResultStatus) {
  return userExamResultStatus?.index;
}

enums.UserExamResultStatus userExamResultStatusFromJson(
    int? userExamResultStatus) {
  if (userExamResultStatus == null) {
    return enums.UserExamResultStatus.swaggerGeneratedUnknown;
  }

  return enums.$UserExamResultStatusMap.entries
      .firstWhere(
          (element) =>
              element.value.toString().toLowerCase() ==
              userExamResultStatus.toString().toLowerCase(),
          orElse: () => const MapEntry(
              enums.UserExamResultStatus.swaggerGeneratedUnknown, ''))
      .key;
}

List<int> userExamResultStatusListToJson(
    List<enums.UserExamResultStatus>? userExamResultStatus) {
  if (userExamResultStatus == null) {
    return [];
  }

  return userExamResultStatus
      .map((e) => e.index) //enums.$UserExamResultStatusMap[e]!
      .toList();
}

List<enums.UserExamResultStatus> userExamResultStatusListFromJson(
    List? userExamResultStatus) {
  if (userExamResultStatus == null) {
    return [];
  }

  return userExamResultStatus
      .map((e) => userExamResultStatusFromJson(e)) //.toString()
      .toList();
}

int? userTypeEnumToJson(enums.UserTypeEnum? userTypeEnum) {
  return userTypeEnum?.index;
}

enums.UserTypeEnum userTypeEnumFromJson(int? userTypeEnum) {
  if (userTypeEnum == null) {
    return enums.UserTypeEnum.swaggerGeneratedUnknown;
  }

  return enums.$UserTypeEnumMap.entries
      .firstWhere(
          (element) =>
              element.value.toString().toLowerCase() ==
              userTypeEnum.toString().toLowerCase(),
          orElse: () =>
              const MapEntry(enums.UserTypeEnum.swaggerGeneratedUnknown, ''))
      .key;
}

List<int> userTypeEnumListToJson(List<enums.UserTypeEnum>? userTypeEnum) {
  if (userTypeEnum == null) {
    return [];
  }

  return userTypeEnum
      .map((e) => e.index) //enums.$UserTypeEnumMap[e]!
      .toList();
}

List<enums.UserTypeEnum> userTypeEnumListFromJson(List? userTypeEnum) {
  if (userTypeEnum == null) {
    return [];
  }

  return userTypeEnum
      .map((e) => userTypeEnumFromJson(e)) //.toString()
      .toList();
}
