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; } }
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; } }