enum NotificationType {
  info,
  attention,
  warning,
}

enum NotificationCategory {
  auth,
  zone,
  payment,
  companyInfo,
  adminInfo,
  scooter,
}

class ClientNotification {
  final int id;
  final String content;
  final int clientId;
  final NotificationType type;
  final NotificationCategory category;
  final DateTime createdAt;
  final DateTime? canceledAt;
  final DateTime? readAt;

  ClientNotification({
    required this.id,
    required this.content,
    required this.clientId,
    required this.type,
    required this.category,
    required this.createdAt,
    this.canceledAt,
    this.readAt,
  });

  ClientNotification copyWith({
    int? id,
    String? content,
    int? clientId,
    NotificationType? type,
    NotificationCategory? category,
    DateTime? createdAt,
    DateTime? canceledAt,
    DateTime? readAt,
  }) {
    return ClientNotification(
      id: id ?? this.id,
      content: content ?? this.content,
      clientId: clientId ?? this.clientId,
      type: type ?? this.type,
      category: category ?? this.category,
      createdAt: createdAt ?? this.createdAt,
      canceledAt: canceledAt ?? this.canceledAt,
      readAt: readAt ?? this.readAt,
    );
  }
}
