import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/core/enum/master_lookup_key.dart';
import 'package:doctor_app_flutter/models/SOAP/master_key_model.dart';

import 'base_service.dart';

class LookupService extends BaseService {
  List<MasterKeyModel> listOfAllergies = [];

  List<MasterKeyModel> get allergySeverityList => _allergySeverityList;
  List<MasterKeyModel> _allergySeverityList = [];

  List<MasterKeyModel> get historyFamilyList => _historyFamilyList;
  List<MasterKeyModel> _historyFamilyList = [];

  List<MasterKeyModel> get historyMedicalList => _historyMedicalList;
  List<MasterKeyModel> _historyMedicalList = [];

  List<MasterKeyModel> get historySportList => _historySportList;
  List<MasterKeyModel> _historySportList = [];

  List<MasterKeyModel> get historySocialList => _historySocialList;
  List<MasterKeyModel> _historySocialList = [];

  List<MasterKeyModel> get historySurgicalList => _historySurgicalList;
  List<MasterKeyModel> _historySurgicalList = [];

  List<MasterKeyModel> listOfPhysiotherapyGoals = [];

  List<MasterKeyModel> get physicalExaminationList => _physicalExaminationList;
  List<MasterKeyModel> _physicalExaminationList = [];

  // List<MasterKeyModel> listOfPhysiotherapyGoals  = [];

  Future getMasterLookup(MasterKeysService masterKeys) async {
    hasError = false;
    Map<String, dynamic> body = {
      "MasterInput": masterKeys.getMasterKeyService()
    };
    await baseAppClient.post(GET_MASTER_LOOKUP_LIST,
        onSuccess: (dynamic response, int statusCode) {
      setMasterLookupInCorrectArray(
          response['MasterLookUpList']['entityList'], masterKeys);
    }, onFailure: (String error, int statusCode) {
      hasError = true;
      super.error = error;
    }, body: body);
  }

  setMasterLookupInCorrectArray(entryList, MasterKeysService masterKeys) {
    switch (masterKeys) {
      case MasterKeysService.Allergies:
        listOfAllergies.clear();
        entryList.forEach((v) {
          listOfAllergies.add(MasterKeyModel.fromJson(v));
        });
        break;
      case MasterKeysService.HistoryFamily:
        _historyFamilyList.clear();
        entryList.forEach((v) {
          _historyFamilyList.add(MasterKeyModel.fromJson(v));
        });
        break;
      case MasterKeysService.HistoryMedical:
        _historyMedicalList.clear();
        entryList.forEach((v) {
          _historyMedicalList.add(MasterKeyModel.fromJson(v));
        });
        break;
      case MasterKeysService.HistorySocial:
        historySocialList.clear();
        entryList.forEach((v) {
          historySocialList.add(MasterKeyModel.fromJson(v));
        });
        break;
      case MasterKeysService.HistorySports:
        _historySportList.clear();
        entryList.forEach((v) {
          _historySportList.add(MasterKeyModel.fromJson(v));
        });
        break;
      case MasterKeysService.HistorySurgical:
        _historySurgicalList.clear();
        entryList.forEach((v) {
          _historySurgicalList.add(MasterKeyModel.fromJson(v));
        });
        break;
      case MasterKeysService.PhysicalExamination:
        _physicalExaminationList.clear();
        entryList.forEach((v) {
          _physicalExaminationList.add(MasterKeyModel.fromJson(v));
        });
        break;
      case MasterKeysService.AllergySeverity:
        _allergySeverityList.clear();
        entryList.forEach((v) {
          _allergySeverityList.add(MasterKeyModel.fromJson(v));
        });
        break;
      case MasterKeysService.physiotherapyGoals:
        listOfPhysiotherapyGoals.clear();
        entryList.forEach((v) {
          listOfPhysiotherapyGoals.add(MasterKeyModel.fromJson(v));
        });
        break;
    }
  }
}
