using IMS.LoaderV2.SV.CSScript;
using IMS.LoaderV2.SV.XmlElements;
using IMS.Rest.Interface;
using Newtonsoft.Json.Linq;
using System.Collections.Generic;
public class Bosch_PostSend : IPostRestSend
public void Process(TaskBase task, ImsRestWriteResponse imsRestWriteResponse, Exception ex, Dictionary<string, string> tokens, string data)
if (ex == null && String.IsNullOrEmpty(imsRestWriteResponse.ErrorMessage))
if (tokens.ContainsKey(task.CustomDictionary["ImsFieldTestNumber"]))
var testNumber = tokens[task.CustomDictionary["ImsFieldTestNumber"]];
if (!String.IsNullOrEmpty(testNumber))
var restClient = CssUtil.GlobalCache.Get("LeepaRestClient") as RestClient;
restClient = new RestClient(task.CustomDictionary["LeepaBaseUrl"]);
CssUtil.GlobalCache.Add("LeepaRestClient", restClient);
if (!testNumber.StartsWith("RO"))
testNumber = "RO" + testNumber;
var jsonTest = GetContentTest(task, restClient, testNumber);
if (!String.IsNullOrEmpty(jsonTest))
var objTest = JObject.Parse(jsonTest);
if (objTest.ContainsKey("data"))
var dataTest = objTest["data"] as JObject;
var orderNumber = dataTest["orderNumber"].Value<string>();
var jsonOrder = GetContentOrder(task, restClient, orderNumber);
if (!String.IsNullOrEmpty(jsonOrder))
var objOrder = JObject.Parse(jsonOrder);
if (objOrder.ContainsKey("data"))
var dataOrder = objOrder["data"] as JObject;
var imsRestService = task.ImsRestService;
var fields = new Dictionary<string, object>();
if (!String.IsNullOrEmpty(dataOrder["orderTypeName"].Value<string>()))
fields.Add("P_AddInfo", dataOrder["orderTypeName"].Value<string>());
if (!String.IsNullOrEmpty(dataOrder["responsible"].Value<string>()))
var userDisplayName = GetUserDisplayName(task, restClient, dataOrder["responsible"].Value<string>());
if (!String.IsNullOrEmpty(userDisplayName))
fields.Add("P_AddInfo", userDisplayName);
if (!String.IsNullOrEmpty(dataOrder["orderCustomerNameLogin"].Value<string>()))
var userDisplayName = GetUserDisplayName(task, restClient, dataOrder["orderCustomerNameLogin"].Value<string>());
if (!String.IsNullOrEmpty(userDisplayName))
fields.Add("P_AddInfo", userDisplayName);
imsRestService.UpdateEntry("Pro", Int32.Parse(tokens["IDPro"]), fields);
if (dataOrder.ContainsKey("samples"))
var arrSamples = dataOrder["samples"] as JArray;
if (arrSamples != null && arrSamples.Count > 0)
foreach (JObject sample in arrSamples)
var number = sample["number"].Value<string>();
if (!String.IsNullOrEmpty(number))
if (sample.ContainsKey("currentPosition"))
var currPosition = sample["currentPosition"] as JObject;
if (currPosition.ContainsKey("positionName"))
var positionName = currPosition["positionName"].Value<string>();
if (positionName == testNumber)
fields.Add("IDPro", tokens["IDPro"]);
fields.Add("E_Name", number);
imsRestService.WriteEntry("Exp", fields, ImsRestService.WriteEntryPolicies.InsertSkipUpdate, String.Format("IDPro({0}) AND E_Name({1})", tokens["IDPro"], number));
task.LogWarn(task.CustomDictionary["ImsFieldTestNumber"] + " is empty.");
task.LogDebug("ERROR updating Auftrag!");
if (String.IsNullOrEmpty(imsRestWriteResponse.ErrorMessage))
task.LogError(imsRestWriteResponse.ErrorMessage);
private string GetContentTest(TaskBase task, RestClient restClient, string testNumber)
json = File.ReadAllText(@"D:\Visual Studio Projects\IMS.LoaderV2.Imagic\UnitTests\data\Bosch\RO1907820-01.json");
private string GetContentOrder(TaskBase task, RestClient restClient, string orderNumber)
json = File.ReadAllText(@"D:\Visual Studio Projects\IMS.LoaderV2.Imagic\UnitTests\data\Bosch\RO1907820.json");
private string GetUserDisplayName(TaskBase task, RestClient restClient, string userId)
var displayName = String.Empty;
var jsonUser = GetContentUser(task, restClient, userId);
if (!String.IsNullOrEmpty(jsonUser))
var objUser = JObject.Parse(jsonUser);
if (objUser.ContainsKey("data"))
var dataUser = objUser["data"] as JObject;
if (!String.IsNullOrEmpty(dataUser["displayname"].Value<string>()))
displayName = dataUser["displayname"].Value<string>();
private string GetContentUser(TaskBase task, RestClient restClient, string userId)
json = File.ReadAllText(@"D:\Visual Studio Projects\IMS.LoaderV2.Imagic\UnitTests\data\Bosch\User-kt82bj.json");