import 'package:diplomaticquarterapp/uitl/navigation_service.dart';
import 'package:get_it/get_it.dart';

import 'core/service/feedback/feedback_service.dart';
import 'core/service/hospital_service.dart';
import 'core/service/medical/labs_service.dart';
import 'core/service/medical/medical_service.dart';
import 'core/service/medical/my_doctor_service.dart';
import 'core/service/medical/prescriptions_service.dart';
import 'core/service/medical/radiology_service.dart';
import 'core/service/medical/vital_sign_service.dart';
import 'core/viewModels/feedback/feedback_view_model.dart';
import 'core/service/medical/reports_service.dart';
import 'core/viewModels/hospital_view_model.dart';
import 'core/viewModels/medical/labs_view_model.dart';
import 'core/viewModels/medical/medical_view_model.dart';
import 'core/viewModels/medical/my_doctor_view_model.dart';
import 'core/viewModels/medical/prescriptions_view_model.dart';
import 'core/viewModels/medical/radiology_view_model.dart';
import 'core/viewModels/medical/vital_sign_view_model.dart';
import 'core/viewModels/medical/reports_view_model.dart';
import 'core/viewModels/pharmacies_view_model.dart';
import 'core/service/pharmacies_service.dart';
import 'core/service/insurance_service.dart';
import 'core/viewModels/insurance_card_View_model.dart';

GetIt locator = GetIt.instance;

///di
void setupLocator() {
  /// Services
  locator.registerLazySingleton(() => HospitalService());
  locator.registerLazySingleton(() => PharmacyService());
  locator.registerLazySingleton(() => MyDoctorService());
  locator.registerLazySingleton(() => PrescriptionsService());
  locator.registerLazySingleton(() => LabsService());
  locator.registerLazySingleton(() => RadiologyService());
  locator.registerLazySingleton(() => FeedbackService());
  locator.registerLazySingleton(() => InsuranceCardService());
  locator.registerLazySingleton(() => VitalSignService());
  locator.registerLazySingleton(() => MedicalService());
  locator.registerLazySingleton(() => NavigationService());
  locator.registerLazySingleton(() => ReportsService());

  /// View Model
  locator.registerFactory(() => HospitalViewModel());
  locator.registerFactory(() => PharmacyViewModel());
  locator.registerFactory(() => MyDoctorViewModel());
  locator.registerFactory(() => PrescriptionsViewModel());
  locator.registerFactory(() => ReportsViewModel());
  locator.registerFactory(() => LabsViewModel());
  locator.registerFactory(() => RadiologyViewModel());
  locator.registerFactory(() => FeedbackViewModel());
  locator.registerFactory(() => VitalSignViewModel());
  locator.registerFactory(() => InsuranceViewModel());
  locator.registerFactory(() => MedicalViewModel());
}
