part of 'training_plan_bloc.dart';

abstract class TrainingPlanEvent extends Equatable {
  const TrainingPlanEvent();

  @override
  List<Object> get props => [];
}

class TrainingPlanLoad extends TrainingPlanEvent {
  const TrainingPlanLoad();
}

class TrainingPlanActivate extends TrainingPlanEvent {
  final int trainingPlanId;
  const TrainingPlanActivate({required this.trainingPlanId});

  @override
  List<Object> get props => [trainingPlanId];
}

class TrainingPlanWeightChange extends TrainingPlanEvent {
  final CustomerTrainingPlanDetails detail;
  final double weight;
  const TrainingPlanWeightChange({required this.weight, required this.detail});

  @override
  List<Object> get props => [weight, detail];
}

class TrainingPlanWeightChangeRecalculate extends TrainingPlanEvent {
  final CustomerTrainingPlanDetails detail;
  final double weight;
  const TrainingPlanWeightChangeRecalculate({required this.weight, required this.detail});

  @override
  List<Object> get props => [weight, detail];
}

class TrainingPlanRepeatsChange extends TrainingPlanEvent {
  final CustomerTrainingPlanDetails detail;
  final int repeats;
  const TrainingPlanRepeatsChange({required this.repeats, required this.detail});

  @override
  List<Object> get props => [repeats, detail];
}

class TrainingPlanSetChange extends TrainingPlanEvent {
  final CustomerTrainingPlanDetails detail;
  final int set;
  const TrainingPlanSetChange({required this.set, required this.detail});

  @override
  List<Object> get props => [set, detail];
}

class TrainingPlanSaveExercise extends TrainingPlanEvent {
  final CustomerTrainingPlanDetails detail;
  const TrainingPlanSaveExercise({required this.detail});

  @override
  List<Object> get props => [detail];
}

class TrainingPlanFinishDay extends TrainingPlanEvent {
  const TrainingPlanFinishDay();
}

class TrainingPlanRestart extends TrainingPlanEvent {
  const TrainingPlanRestart();
}

class TrainingPlanGoToRestart extends TrainingPlanEvent {
  const TrainingPlanGoToRestart();
}

class TrainingPlanSkipExercise extends TrainingPlanEvent {
  final CustomerTrainingPlanDetails detail;
  const TrainingPlanSkipExercise({required this.detail});

  @override
  List<Object> get props => [detail];
}

class TrainingPlanSkipEntireExercise extends TrainingPlanEvent {
  final CustomerTrainingPlanDetails detail;
  const TrainingPlanSkipEntireExercise({required this.detail});

  @override
  List<Object> get props => [detail];
}

class TrainingPlanAddExerciseType extends TrainingPlanEvent {
  const TrainingPlanAddExerciseType();
}

class TrainingPlanChangeCancel extends TrainingPlanEvent {
  final CustomerTrainingPlanDetails detail;
  const TrainingPlanChangeCancel({required this.detail});

  @override
  List<Object> get props => [detail];
}

class TrainingPlanAlternateChange extends TrainingPlanEvent {
  final int index;
  final CustomerTrainingPlanDetails detail;
  const TrainingPlanAlternateChange({required this.index, required this.detail});

  @override
  List<Object> get props => [index, detail];
}

class TrainingPlanFinishDropset extends TrainingPlanEvent {
  final CustomerTrainingPlanDetails detail;
  const TrainingPlanFinishDropset({required this.detail});

  @override
  List<Object> get props => [detail];
}

class TrainingPlanAddLoad extends TrainingPlanEvent {
  final ExerciseType exerciseType;
  const TrainingPlanAddLoad({required this.exerciseType});

  @override
  List<Object> get props => [exerciseType];
}

class TrainingPlanDeleteExerciseType extends TrainingPlanEvent {
  final ExerciseType exerciseType;
  const TrainingPlanDeleteExerciseType({required this.exerciseType});

  @override
  List<Object> get props => [exerciseType];
}

class TrainingPlanCreateException extends TrainingPlanEvent {
  final String message;
  const TrainingPlanCreateException({required this.message});

  @override
  List<Object> get props => [message];
}
