import 'package:fcs/data/provider/auth_fb.dart';
import 'package:fcs/data/provider/carton_data_provider.dart';
import 'package:fcs/data/provider/common_data_provider.dart';
import 'package:fcs/data/provider/delivery_address_data_provider.dart';
import 'package:fcs/data/provider/fcs_shipment_data_provider.dart';
import 'package:fcs/data/provider/invoice_data_provider.dart';
import 'package:fcs/data/provider/package_data_provider.dart';
import 'package:fcs/data/provider/rate_data_provider.dart';
import 'package:fcs/data/provider/shipment_data_provider.dart';
import 'package:fcs/data/provider/user_data_provider.dart';
import 'package:fcs/data/services/carton_imp.dart';
import 'package:fcs/data/services/carton_service.dart';
import 'package:fcs/data/services/delivery_address_imp.dart';
import 'package:fcs/data/services/delivery_address_service.dart';
import 'package:fcs/data/services/fcs_shipment_imp.dart';
import 'package:fcs/data/services/fcs_shipment_service.dart';
import 'package:fcs/data/services/invoice_imp.dart';
import 'package:fcs/data/services/invoice_service.dart';
import 'package:fcs/data/services/rate_imp.dart';
import 'package:fcs/data/services/rate_service.dart';
import 'package:fcs/data/services/shipment_imp.dart';
import 'package:fcs/data/services/shipment_service.dart';

import 'auth_imp.dart';
import 'auth_service.dart';
import 'common_imp.dart';
import 'common_service.dart';
import 'messaging_imp.dart';
import 'messaging_service.dart';
import 'package_imp.dart';
import 'package_service.dart';
import 'user_imp.dart';
import 'user_service.dart';

class Services {
  static final Services instance = Services._();

  AuthService _authService;
  UserService _userService;
  PackageService _packageService;
  MessagingService _messagingService;
  CommonService _commonService;
  FcsShipmentService _fcsShipmentService;
  DeliveryAddressService _deliveryAddressService;
  RateService _rateService;
  ShipmentService _shipmentService;
  CartonService _cartonService;
  InvoiceService _invoiceService;
  Services._() {
    _authService = AuthServiceImp(
      authFb: AuthFb.instance,
      connectivity: null,
    );
    _userService = UserServiceImp(
        connectivity: null, userDataProvider: UserDataProvider());
    _messagingService = MessagingServiceImp();
    _packageService = PackageServiceImp(
        connectivity: null, packageDataProvider: PackageDataProvider());
    _commonService = CommonServiceImp(commonDataProvider: CommonDataProvider());
    _fcsShipmentService = FcsShipmentServiceImp(
        connectivity: null, shipmentDataProvider: FcsShipmentDataProvider());
    _deliveryAddressService = DeliveryAddressImp(
        connectivity: null,
        deliveryAddressDataProvider: DeliveryAddressDataProvider());
    _rateService = RateServiceImp(
        rateDataProvider: RateDataProvider.instance, connectivity: null);
    _shipmentService = ShipmentServiceImp(
        shipmentDataProvider: ShipmentDataProvider.instance,
        connectivity: null);
    _cartonService = CartonServiceImp(
        cartonDataProvider: CartonDataProvider.instance, connectivity: null);
    _invoiceService = InvoiceServiceImp(
        invoiceDataProvider: InvoiceDataProvider.instance, connectivity: null);
  }

  AuthService get authService => _authService;
  UserService get userService => _userService;
  MessagingService get messagingService => _messagingService;
  PackageService get packageService => _packageService;
  CommonService get commonService => _commonService;
  FcsShipmentService get fcsShipmentService => _fcsShipmentService;
  DeliveryAddressService get deliveryAddressService => _deliveryAddressService;
  RateService get rateService => _rateService;
  ShipmentService get shipmentService => _shipmentService;
  CartonService get cartonService => _cartonService;
  InvoiceService get invoiceService => _invoiceService;
}
