public async Task FetchHealth(ProducerPOCO pro)
        {
            var jsonString = await Fetch.GetAsync(pro.Ip + Resources.ProducingSideChains);

            var succeeded = bool.Parse(JsonStringNavigator.GetDeeper(jsonString, "succeeded"));

            if (!succeeded)
            {
                pro.Producing = "Unconfigured";
            }
            var    response       = JsonStringNavigator.GetDeeper <ProducingSidechain[]>(jsonString, "response");
            double fractionHealth = 0;

            if (response.Length == 0)
            {
                pro.Health = 0; return;
            }
            foreach (var sc in response)
            {
                if (sc.TotalBlocksPerSettlement() == 0)
                {
                    fractionHealth += 1; continue;
                }
                fractionHealth += sc.blocksProducedInCurrentSettlement / (sc.TotalBlocksPerSettlement());
            }

            pro.Health = (fractionHealth / response.Length) * 100;
        }
        public async Task FetchProducing(ProducerPOCO pro)
        {
            var jsonString = await Fetch.GetAsync(pro.Ip + Resources.ProducingSideChains);

            var succeeded = bool.Parse(JsonStringNavigator.GetDeeper(jsonString, "succeeded"));

            if (!succeeded)
            {
                pro.Producing = "Unconfigured";
            }
            var response = JsonStringNavigator.GetDeeper <ProducingSidechain[]>(jsonString, "response");
            int working  = 0;

            foreach (var sc in response)
            {
                if (sc.sidechainState == "Production")
                {
                    working++;
                }
                pro.Warnings = +sc.warnings.Length;
            }
            pro.Producing = working + "/" + response.Length;
        }
 public async Task FetchValues(ProducerPOCO pro)
 {
     await FetchProducing(pro);
     await FetchHealth(pro);
 }