import 'package:latlong2/latlong.dart';
import 'package:niogu_app/core/enums/customer_source.dart';
import 'package:niogu_app/core/enums/order_source.dart';
import 'package:niogu_app/core/enums/order_status.dart';
import 'package:uuid/uuid.dart';

enum CustomerEmpty { loading, empty_database, empty_search_result, has_data }

class DisplayCustomers {
  final String id;
  final String name;

  const DisplayCustomers({
    required this.id,
    required this.name
  });
}

class UpsertCustomer {
  final String id;
  final String name;
  final String? email;
  final String? phoneNumber;

  UpsertCustomer({
    String? id,
    required this.name,
    required this.email,
    required this.phoneNumber
  }) : id = id ?? const Uuid().v7().toString();
}

class CustomerDetail {
  final String id;
  final String name;
  final String email;
  final String phoneNumber;
  final CustomerSource customerSource;
  
  const CustomerDetail({
    required this.id,
    required this.name,
    required this.email,
    required this.phoneNumber,
    required this.customerSource,
  });
}

class CustomerAddress {
  final String label;
  final String fullAddress;
  final LatLng coordinate;

  const CustomerAddress({
    required this.label,
    required this.fullAddress,
    required this.coordinate,
  });
}

class CustomerActivities {
  final String id;
  final String orderNumber;
  final OrderSource orderSource;
  final OrderStatus orderStatus;
  final DateTime orderDate;

  const CustomerActivities({
    required this.id,
    required this.orderNumber,
    required this.orderSource,
    required this.orderStatus,
    required this.orderDate
  });
}