Skip to main content
Code Review

Return to Answer

replaced http://codereview.stackexchange.com/ with https://codereview.stackexchange.com/
Source Link

Based on danrhul danrhul's good answer answer

If group.Test.Count == 0 all the done work with IWorkgroup group will be skipped. So you better change the execution flow.

foreach (var groupValue in jsonArray)
{
 var groupObject = groupValue.GetObject();
 String objectId = groupObject["ObjectID"].GetString();
 var test = GetTestSessions(objectId);
 if (test.Count == 0) { continue; }
 IWorkgroup group = new Workgroup
 {
 GroupState = (int)groupObject["GroupState"].GetNumber(),
 WorkgroupName = groupObject["WorkgroupName"].GetString(),
 WorkgroupSecretary = groupObject["WorkgroupProba"].GetString(),
 ObjectID = objectId,
 Test = test
 };
 groups.Add(group);
}

With calling the extracted overloaded methods

private List<TestSession> GetTestSessions(String objectId)
{
 return GetTestSessions(new Uri(WebApiUri + "api/workgroup/" + objectId));
}
private List<TestSession> GetTestSessions(Uri dataUri)
{
 using (var client = new Windows.Web.Http.HttpClient())
 {
 var response = await client.GetAsync(dataUri).AsTask();
 if (response.StatusCode == Windows.Web.Http.HttpStatusCode.Ok)
 {
 var jsonText = await response.Content.ReadAsStringAsync().GetResults();
 return JsonConvert.DeserializeObject<List<TestSession>>(jsonText);
 }
 return new List<TestSession>();
 }
}

Based on danrhul's good answer

If group.Test.Count == 0 all the done work with IWorkgroup group will be skipped. So you better change the execution flow.

foreach (var groupValue in jsonArray)
{
 var groupObject = groupValue.GetObject();
 String objectId = groupObject["ObjectID"].GetString();
 var test = GetTestSessions(objectId);
 if (test.Count == 0) { continue; }
 IWorkgroup group = new Workgroup
 {
 GroupState = (int)groupObject["GroupState"].GetNumber(),
 WorkgroupName = groupObject["WorkgroupName"].GetString(),
 WorkgroupSecretary = groupObject["WorkgroupProba"].GetString(),
 ObjectID = objectId,
 Test = test
 };
 groups.Add(group);
}

With calling the extracted overloaded methods

private List<TestSession> GetTestSessions(String objectId)
{
 return GetTestSessions(new Uri(WebApiUri + "api/workgroup/" + objectId));
}
private List<TestSession> GetTestSessions(Uri dataUri)
{
 using (var client = new Windows.Web.Http.HttpClient())
 {
 var response = await client.GetAsync(dataUri).AsTask();
 if (response.StatusCode == Windows.Web.Http.HttpStatusCode.Ok)
 {
 var jsonText = await response.Content.ReadAsStringAsync().GetResults();
 return JsonConvert.DeserializeObject<List<TestSession>>(jsonText);
 }
 return new List<TestSession>();
 }
}

Based on danrhul's good answer

If group.Test.Count == 0 all the done work with IWorkgroup group will be skipped. So you better change the execution flow.

foreach (var groupValue in jsonArray)
{
 var groupObject = groupValue.GetObject();
 String objectId = groupObject["ObjectID"].GetString();
 var test = GetTestSessions(objectId);
 if (test.Count == 0) { continue; }
 IWorkgroup group = new Workgroup
 {
 GroupState = (int)groupObject["GroupState"].GetNumber(),
 WorkgroupName = groupObject["WorkgroupName"].GetString(),
 WorkgroupSecretary = groupObject["WorkgroupProba"].GetString(),
 ObjectID = objectId,
 Test = test
 };
 groups.Add(group);
}

With calling the extracted overloaded methods

private List<TestSession> GetTestSessions(String objectId)
{
 return GetTestSessions(new Uri(WebApiUri + "api/workgroup/" + objectId));
}
private List<TestSession> GetTestSessions(Uri dataUri)
{
 using (var client = new Windows.Web.Http.HttpClient())
 {
 var response = await client.GetAsync(dataUri).AsTask();
 if (response.StatusCode == Windows.Web.Http.HttpStatusCode.Ok)
 {
 var jsonText = await response.Content.ReadAsStringAsync().GetResults();
 return JsonConvert.DeserializeObject<List<TestSession>>(jsonText);
 }
 return new List<TestSession>();
 }
}
Source Link
Heslacher
  • 50.9k
  • 5
  • 83
  • 177

Based on danrhul's good answer

If group.Test.Count == 0 all the done work with IWorkgroup group will be skipped. So you better change the execution flow.

foreach (var groupValue in jsonArray)
{
 var groupObject = groupValue.GetObject();
 String objectId = groupObject["ObjectID"].GetString();
 var test = GetTestSessions(objectId);
 if (test.Count == 0) { continue; }
 IWorkgroup group = new Workgroup
 {
 GroupState = (int)groupObject["GroupState"].GetNumber(),
 WorkgroupName = groupObject["WorkgroupName"].GetString(),
 WorkgroupSecretary = groupObject["WorkgroupProba"].GetString(),
 ObjectID = objectId,
 Test = test
 };
 groups.Add(group);
}

With calling the extracted overloaded methods

private List<TestSession> GetTestSessions(String objectId)
{
 return GetTestSessions(new Uri(WebApiUri + "api/workgroup/" + objectId));
}
private List<TestSession> GetTestSessions(Uri dataUri)
{
 using (var client = new Windows.Web.Http.HttpClient())
 {
 var response = await client.GetAsync(dataUri).AsTask();
 if (response.StatusCode == Windows.Web.Http.HttpStatusCode.Ok)
 {
 var jsonText = await response.Content.ReadAsStringAsync().GetResults();
 return JsonConvert.DeserializeObject<List<TestSession>>(jsonText);
 }
 return new List<TestSession>();
 }
}
lang-cs

AltStyle によって変換されたページ (->オリジナル) /