import 'package:diplomaticquarterapp/core/service/AlHabibMedicalService/H2O_service.dart';
import 'package:diplomaticquarterapp/core/service/AlHabibMedicalService/home_health_care_service.dart';
import 'package:diplomaticquarterapp/core/service/qr_service.dart';
import 'package:diplomaticquarterapp/core/viewModels/AlHabibMedicalService/H2O_view_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/AlHabibMedicalService/home_health_care_view_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/dashboard_view_model.dart';
import 'package:diplomaticquarterapp/uitl/navigation_service.dart';
import 'package:get_it/get_it.dart';

import 'core/service/AlHabibMedicalService/e_referral_service.dart';
import 'core/service/AuthenticatedUserObject.dart';
import 'core/service/appointment_rate_service.dart';
import 'core/service/blood/blood_details_servies.dart';
import 'core/service/blood/blood_donation_service.dart';
import 'core/service/contactus/finadus_service.dart';
import 'core/service/contactus/livechat_service.dart';
import 'core/service/dashboard_service.dart';
import 'core/service/er/am_service.dart';
import 'core/service/er/er_service.dart';
import 'core/service/feedback/feedback_service.dart';
import 'core/service/hospital_service.dart';
import 'core/service/medical/ActiveMedicationsService.dart';
import 'core/service/medical/AllergiesService.dart';
import 'core/service/medical/BloodPressureService.dart';
import 'core/service/medical/BloodSugarService.dart';
import 'core/service/medical/EyeService.dart';
import 'core/service/medical/PatientSickLeaveService.dart';
import 'core/service/medical/WeightPressureService.dart';
import 'core/service/medical/ask_doctor_services.dart';
import 'core/service/medical/labs_service.dart';
import 'core/service/medical/medical_service.dart';
import 'core/service/medical/my_balance_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/reports_monthly_service.dart';
import 'core/service/medical/vital_sign_service.dart';
import 'core/viewModels/all_habib_medical_services/e_referral_view_model.dart';
import 'core/viewModels/appointment_rate_view_model.dart';
import 'core/viewModels/blooddonation/blood_details_view_model.dart';
import 'core/viewModels/blooddonation/booddonation_view_model.dart';
import 'core/viewModels/contactus/findus_view_model.dart';
import 'core/viewModels/contactus/livechat_view_model.dart';
import 'core/viewModels/er/am_request_view_model.dart';
import 'core/viewModels/er/near_hospital_view_model.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/ActiveMedicationsViewModel.dart';
import 'core/viewModels/medical/AllergiesViewModel.dart';
import 'core/viewModels/medical/EyeViewModel.dart';
import 'core/viewModels/medical/ask_doctor_view_model.dart';
import 'core/viewModels/medical/blood_pressure_view_model.dart';
import 'core/viewModels/medical/labs_view_model.dart';
import 'core/viewModels/medical/medical_view_model.dart';
import 'core/viewModels/medical/my_balance_view_model.dart';
import 'core/viewModels/medical/my_doctor_view_model.dart';
import 'core/viewModels/medical/blood_sugar_view_model.dart';
import 'core/viewModels/medical/patient_sick_leave_view_model.dart';
import 'core/viewModels/medical/prescriptions_view_model.dart';
import 'core/viewModels/medical/radiology_view_model.dart';
import 'core/viewModels/medical/reports_monthly_view_model.dart';
import 'core/viewModels/medical/vital_sign_view_model.dart';
import 'core/viewModels/medical/reports_view_model.dart';
import 'core/viewModels/medical/weight_pressure_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';
import 'core/viewModels/qr_view_model.dart';
import 'core/viewModels/vaccine_view_model.dart';
import 'core/service/vaccine_service.dart';

GetIt locator = GetIt.instance;

///di
void setupLocator() {
  /// Services
  locator.registerLazySingleton(() => AuthenticatedUserObject());
  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());
  locator.registerLazySingleton(() => DashboardService());
  locator.registerLazySingleton(() => AppointmentRateService());
  locator.registerLazySingleton(() => QrService());
  locator.registerFactory(() => VaccineService());
  locator.registerLazySingleton(() => ReportsMonthlyService());
  locator.registerLazySingleton(() => ErService());
  locator.registerLazySingleton(() => AmService());
  locator.registerLazySingleton(() => EReferralService());
  locator.registerLazySingleton(() => HomeHealthCareService());


  locator.registerLazySingleton(() => PatientSickLeaveService());
  locator.registerLazySingleton(() => MyBalanceService());
  locator.registerLazySingleton(() => BloodSugarService());
  locator.registerLazySingleton(() => BloodPressureService());
  locator.registerLazySingleton(() => WeightService());
  locator.registerLazySingleton(() => EyeService());
  locator.registerLazySingleton(() => ActiveMedicationsService());
  locator.registerLazySingleton(() => AskDoctorService());
  locator.registerLazySingleton(() => AllergiesService());
  locator.registerLazySingleton(() => FindusService());
  locator.registerLazySingleton(() => LiveChatService());
  locator.registerLazySingleton(() => H2OService());

  locator.registerLazySingleton(() => BloodDonationService());
  locator.registerLazySingleton(() => BloodDetailsService());

  /// 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(() => VaccineViewModel());
  locator.registerFactory(() => VitalSignViewModel());
  locator.registerFactory(() => InsuranceViewModel());
  locator.registerFactory(() => MedicalViewModel());
  locator.registerFactory(() => DashboardViewModel());
  locator.registerFactory(() => AppointmentRateViewModel());
  locator.registerFactory(() => QrViewModel());
  locator.registerFactory(() => ReportsMonthlyViewModel());
  locator.registerFactory(() => NearHospitalViewModel());
  locator.registerFactory(() => AmRequestViewModel());
  locator.registerFactory(() => PatientSickLeaveViewMode());
  locator.registerFactory(() => MyBalanceViewModel());
  locator.registerFactory(() => EReferralViewModel());
  locator.registerFactory(() => FindusViewModel());
  locator.registerFactory(() => LiveChatViewModel());
  locator.registerFactory(() => BloodDonationViewModel());
  locator.registerFactory(() => BloodDeatailsViewModel());
  locator.registerFactory(() => H2OViewModel());
  locator.registerFactory(() => BloodSugarViewMode());
  locator.registerFactory(() => BloodPressureViewMode());
  locator.registerFactory(() => WeightPressureViewMode());
  locator.registerFactory(() => EyeViewModel());
  locator.registerFactory(() => ActiveMedicationsViewModel());
  locator.registerFactory(() => AskDoctorViewModel());
  locator.registerFactory(() => AllergiesViewModel());
  locator.registerFactory(() => HomeHealthCareViewModel());

}
