private VirusTrackerItem GetVirusTrackerItem(dynamic record)
        {
            var dataItem = (IDictionary <string, object>)record;

            var virusTrackerItem = new VirusTrackerItem()
            {
                Country         = GetData("Country", dataItem),
                ProvinceOrState = GetData("ProvinceOrState", dataItem),
                StatusDate      = DateTime.Parse(GetData("StatusDate", dataItem)),
                Infections      = GetData("Infections", dataItem).Trim() == string.Empty ? 0 : Int32.Parse(GetData("Infections", dataItem)),
                Deaths          = GetData("Deaths", dataItem).Trim() == string.Empty ? 0 : Int32.Parse(GetData("Deaths", dataItem)),
                Recovery        = GetData("Recovery", dataItem).Trim() == string.Empty ? 0 : Int32.Parse(GetData("Recovery", dataItem))
            };

            return(virusTrackerItem);
        }
        private void AddVirusTrackerItem(VirusTrackerItem virusTrackerItem)
        {
            if (!_virusTrackerItems.Any(item => item.Country.Equals(virusTrackerItem.Country) && item.ProvinceOrState.Equals(virusTrackerItem.ProvinceOrState) && item.StatusDate.Equals(virusTrackerItem.StatusDate)))
            {
                _virusTrackerItems.Add(virusTrackerItem);
            }
            else
            {
                var existingVirusTrackerItem = _virusTrackerItems.First(item => item.Country.Equals(virusTrackerItem.Country) && item.ProvinceOrState.Equals(virusTrackerItem.ProvinceOrState) && item.StatusDate.Equals(virusTrackerItem.StatusDate));

                existingVirusTrackerItem.Infections += virusTrackerItem.Infections;

                existingVirusTrackerItem.Deaths += virusTrackerItem.Deaths;

                existingVirusTrackerItem.Recovery += virusTrackerItem.Recovery;
            }
        }
Esempio n. 3
0
        private void UpdateTrackerItem(VirusTrackerItem virusTrackerItem, VirusTrackerItem existingVirusTrackerItem)
        {
            //Use the most recent tracking data
            if (virusTrackerItem.StatusDate > existingVirusTrackerItem.StatusDate)
            {
                existingVirusTrackerItem.Infections = virusTrackerItem.Infections;
                existingVirusTrackerItem.Deaths     = virusTrackerItem.Deaths;
                existingVirusTrackerItem.Recovery   = virusTrackerItem.Recovery;
                existingVirusTrackerItem.StatusDate = virusTrackerItem.StatusDate;
            }

            //if the status date is the same, then use the data that has higher infection count
            if (virusTrackerItem.StatusDate == existingVirusTrackerItem.StatusDate && virusTrackerItem.Infections > existingVirusTrackerItem.Infections)
            {
                existingVirusTrackerItem.Infections = virusTrackerItem.Infections;
                existingVirusTrackerItem.Deaths     = virusTrackerItem.Deaths;
                existingVirusTrackerItem.Recovery   = virusTrackerItem.Recovery;
                existingVirusTrackerItem.StatusDate = virusTrackerItem.StatusDate;
            }
        }