crtGRecommendation function

Future crtGRecommendation(
  1. dynamic type
)

generate metric of recommendations

Implementation

Future crtGRecommendation(var type) async {
  var recommendationMetrics = {};
  type == Types.devices
      ? recommendationMetrics = CoreValues.deviceRecommendation
      : recommendationMetrics = CoreValues.userRecommendation;
  var threatRecoList = [];


  /// map.key => geiger threat UUID (12) {unique}
  /// map.value => geiger threat name (type of threat) (12)  {unique}
  for (var map in CoreValues.geigerThreatUUIDThreatName.entries) {
    var recoLists = '';

    try {

      ///recommendationMetrics Map < threat UUID, <Map>[] recoMetricList>>
      /// <Map>[] recoMetricList
      /// metric =>  {'high' or 'medium' or 'low'}
      /// recoUUID => recommendationUUID
      if(recommendationMetrics.containsKey(map.key)) {

        var recoMetricList = recommendationMetrics[map.key];

        for (var metricMap in recoMetricList){

          var metric = metricMap['metric'];
          var recoUUID = metricMap['recoUUID'];

          ///Convert to double metric {'high': 1.0, 'medium': 0.5, 'low': 0.1}
          var impactV = CoreValues.impactValues[metric.toLowerCase()]!;

  recoLists += '$recoUUID,$impactV;';

  }

  ///Store recommendation metrics
  ///geiger threat UUID : {recoUUID,metric;recoUUID,metric;...}
  if(recoLists.isNotEmpty) threatRecoList.add(NodeValueImpl(map.key, recoLists));

  }

  } catch (e) {
  continue;
  }
}

  return threatRecoList;
}