1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
|
foreach (dynamic traitement in traitements)
{
List<dynamic> AppsDuTraitement= (traitement); // API fournissant la liste de toutes les applications liées au traitement (Liste B)
List<dynamic> ControlsinPAs = GetControlsFromPA(traitement ); // API fournissant la liste des contrôles du traitement (Liste A)
LogWrite("Check du traitement " + traitement.name + " (" + i + ")");
if (AppsDuTraitement!= null)
{
List<dynamic> ReferenceControls = null; // Création de la liste D
int j = 0; // Compteur
dynamic mavaleur = null; // Création d'une variable dynamic qu'on insérera dans notre nouvelle liste.
dynamic idToSearchInReferenceControl = null; // Variable permettant de check si contrôle déjà présent dans la liste qu'on vient de créer.
string statusFinalAsset = "";
foreach (dynamic PAAsset in PAAssets) // Je parcours chaque application
{
j++;
LogWrite("Check de l'Asset " + PAAsset.name + " (" + j + "/" + PAAssets.Count + ") ");
List<dynamic> AssetControls = GetAssetsControls(PAAsset); // Liste des contrôles d'une application (Liste C)
if (AssetControls != null)
{
foreach (dynamic AssetControl in AssetControls) // Je parcours chaque contrôle de l'application
{
LogWrite("Check du contrôle " + AssetControl.control.name + " de l'asset " + PAAsset.name);
string statusControlAsset = "";
string iDControlAsset = "";
string identifierControlAsset = "";
statusControlAsset = AssetControl.status;
iDControlAsset = AssetControl.implementationId;
identifierControlAsset = AssetControl.control.identifier;
if (ReferenceControls != null) // NUL à la première boucle donc ne rentre pas mais plante à la deuxieme
{
idToSearchInReferenceControl = ReferenceControls.FirstOrDefault(p => p.implementationId == iDControlAsset); // On recherche si le contrôle de l'asset est présent dans notre liste // PLANTE ICI CAR IL NE TROUVE PAS LE "p.implementationId"
if (idToSearchInReferenceControl != null)
{
LogWrite("On a trouvé le contrôle dans ma liste, on vient comparer ses valeurs");
if (statusControlAsset != idToSearchInReferenceControl.status)
{
// ici on veut modfifier la valeur
if (statusControlAsset == "Pending")
{
LogWrite("Si on rentre ici, on transforme le statut global du contrôle " + AssetControl.name + " en Pending");
// On met à jour le statut dans ma liste : COMMENT?
}
else if (statusControlAsset == "Implemented" && idToSearchInReferenceControl.status == "NotDoing")
{
LogWrite("Si on rentre ici, on transforme le statut global du contrôle " + AssetControl.name + " en Implemented");
//On met à jour le statut dans ma liste
}
else if (idToSearchInReferenceControl == null)
{
LogWrite("Si on rentre ici alors, pas de status sur l'asset dans ma liste, impossible");
}
}
}
else
{
LogWrite("Si Pas trouvé le contrôle de l'asset dans ma liste alors on vient ici pour l'ajouter");
if (mavaleur == null)
{
mavaleur = "{\"implementationId\":" + iDControlAsset + ",\"identifier\":" + AssetControl.control.identifier + ",\"status\":" + AssetControl.status + "},";
}
else
{
mavaleur = mavaleur + "{\"implementationId\":" + iDControlAsset + ",\"identifier\":" + AssetControl.control.identifier + ",\"status\":" + AssetControl.status + "},";
}
dynamic mavaleur2 = Newtonsoft.Json.JsonConvert.DeserializeObject<dynamic>(mavaleur);
if (ReferenceControls == null)
{
List<dynamic> temp = new List<dynamic>(mavaleur2);
ReferenceControls = temp;
}
else
{
ReferenceControls.AddRange(mavaleur2);
}
}
}
else // LA PREMIERE BOUCLE RENTRE ICI
{
LogWrite("Pas de liste créée. On la crée ici.");
if (mavaleur == null)
{
mavaleur = "{\"implementationId\":\"" + iDControlAsset + "\",\"identifier\":\"" + AssetControl.control.identifier + "\",\"status\":\"" + AssetControl.status + "\"}";
}
else
{
mavaleur = mavaleur + ",{\"implementationId\":" + iDControlAsset + ",\"identifier\":" + AssetControl.control.identifier + ",\"status\":" + AssetControl.status + "},";
}
dynamic mavaleur2 = Newtonsoft.Json.JsonConvert.DeserializeObject<dynamic>(mavaleur);
// ICI JE SUIS OBLIGE DE CONVERTIR MAVALEUR EN MAVALEUR2 pour avoir un format correct dans ma liste.
if (ReferenceControls == null)
{
dynamic temp = new List<dynamic>(mavaleur2);
ReferenceControls = temp;
}
else
{
ReferenceControls.AddRange(mavaleur2);
}
LogWrite("ici on a fait un tour ");
LogWrite("mavaleur" + mavaleur); // ICI j'obtiens {"implementationId":"ix5aq4avzakjdg","identifier":"P00.03","status":"implemented"}
LogWrite("refeControl " + ReferenceControls[0]); // ICI j'obtiens : "implementationId":"ix5aq4avzakjdg"
LogWrite("refeControl " + ReferenceControls[1]) // ICI j'obtiens : "identifier":"P00.03"
LogWrite("refectronol " + ReferenceControls[2]); // ICI j'obtiens : "status":"implemented"
// ICI JE VOUDRAIS QUE MON "ReferenceControls[0] = mavaleur. Je ne comprends pas pourquoi mes données pour UN contrôle d'UNE application créé une liste avec 3 différentes valeurs
}
}
}
else
{
LogWrite("L'asset " + PAAsset.name + " ne contient pas de contrôles.");
}
}
}
else
{
LogWrite("This processing activity " + otpa.name + " have no assets linked");
}
}
} |
Partager