getImplementedRecommendations function

Future getImplementedRecommendations(
  1. dynamic uuid
)

Prepare metric between threatWeight and recommendation parameter UUID is implemented recommendations uuid on GEIGER toolbox (UI) by user

Implementation

Future getImplementedRecommendations(var uuid) async {
  try {
    var recommendationNode = await Storage.controller.get(':Global:Recommendations:$uuid');

    var recommendationTypeNode = await recommendationNode.getValue('RecommendationType');

    var recommendationType = recommendationTypeNode!.getValue('en')!;

  var relatedThreatsWeightsNode = await recommendationNode.getValue('relatedThreatsWeights');

  ///metricThreats for recommendation
  var metricThreats = relatedThreatsWeightsNode!.getValue('en')!.split(';'); //List<String>

  logger.d("indiC - getImpleReco device  ${CoreValues.deviceImplementedRecommendation}");
  logger.d("indiC - getImpleReco user  ${CoreValues.userImplementedRecommendation}");

  ///loop all metricThreats in this implemented recommendation
  for (var metricNode in metricThreats) {

  ///{'threatUUID, metric({'high', 'medium', 'low'})
  ///metric [0] => threatUUID
  ///metric [1] => metric {'high' or 'medium' or 'low'}
  var metric = metricNode.split(',');
  logger.d('>>>$metric');

//        Node impactNormal = NodeImpl(':ireco', '');
//        await impactNormal.addValue(NodeValueImpl('impact', relatedThreatsWeights[1]));
//        await impactNormal.addValue(NodeValueImpl('recuuid', uuid));
//        var shortNode = await recommendationNode.getValue('short');
//        await impactNormal.addValue(NodeValueImpl('short', shortNode!.getValue('en')!));
//        var longNode = await recommendationNode.getValue('long');
//        await impactNormal.addValue(NodeValueImpl('long', longNode!.getValue('en')!));
  ///Convert to double metric {'high': 1.0, 'medium': 0.5, 'low': 0.1}
  var impact  = CoreValues.impactValues[metric[1].toLowerCase()];
  logger.d('indiC ImpleRECO $impact');
  logger.d('indiC ImpleRECO $recommendationType');
  if (recommendationType == Types.recoTypeDevice.toLowerCase()) {
  try {
  //if(relatedThreatsWeights[0].isNotEmpty)
  ///{threatUUID : metric}
  CoreValues.deviceImplementedRecommendation[metric[0]]!.add(impact!);
  //logger.d('indiC ImpleRECO-device ${CoreValues.deviceImplementedRecommendation}');
  //CoreValues.deviceImplementedRecommendation[relatedThreatsWeights[0]]!.add(impactNormal);
  } catch (e) {
  //logger.d("indiA - getReco 361  ${e.toString()}");
//                var temp = <Node>[];
//                temp.add(impactNormal);
  //CoreValues.deviceImplementedRecommendation[relatedThreatsWeights[0]]?.add(CoreValues.impactValues[relatedThreatsWeights[1].toLowerCase()]!);
  var temp = <double>[];
  temp.add(impact!);
  CoreValues.deviceImplementedRecommendation[metric[0]] = temp;
  logger.d('indiA ImpleRECO-device ${CoreValues.deviceImplementedRecommendation}');
  }
  } else {
  try {

  //if(relatedThreatsWeights[0].isNotEmpty)
  CoreValues.userImplementedRecommendation[metric[0]]!.add(impact!);
  //logger.d('indiC ImpleRECO ${CoreValues.userImplementedRecommendation}');
  //CoreValues.userImplementedRecommendation[relatedThreatsWeights[0]]!.add(impactNormal);
  } catch (e) {
  //logger.d("indiA - getReco 361  ${e.toString()}");
  var temp = <double>[];
  temp.add(impact!);
  CoreValues.userImplementedRecommendation[metric[0]] = temp;
  logger.d('indiA ImpleRECO-user ${CoreValues.userImplementedRecommendation}');
  }
  }
  }

  } catch (e) {
  logger.d("indiA - getReco ${e.toString()}");
  return;
  }
}