part of 'store_cubit.dart';

enum StoreStatus { initial, loading, success, failure }

class StoreState extends Equatable {
  final StoreStatus status;
  final StoreModel? store;
  final String? errorMessage;
  final List<StoreModel> stores;
  final StoreModel?
  savedStore; // Per tenere traccia del negozio appena salvato (utile per aggiornare la sessione)
  final Map<String, List<StaffMemberModel>> staffByStore;

  const StoreState({
    this.status = StoreStatus.initial,
    this.store,
    this.errorMessage,
    required this.stores,
    this.savedStore,
    this.staffByStore = const {},
  });

  StoreState copyWith({
    StoreStatus? status,
    StoreModel? store,
    String? errorMessage,
    List<StoreModel>? stores,
    StoreModel? savedStore,
    Map<String, List<StaffMemberModel>>? staffByStore,
  }) {
    return StoreState(
      status: status ?? this.status,
      store: store ?? this.store,
      errorMessage: errorMessage ?? this.errorMessage,
      stores: stores ?? this.stores,
      savedStore: savedStore ?? this.savedStore,
      staffByStore: staffByStore ?? this.staffByStore,
    );
  }

  @override
  List<Object?> get props => [
    status,
    store,
    errorMessage,
    stores,
    savedStore,
    staffByStore,
  ];
}
