public ActionResult <IEnumerable <DailyResourceChanges> > GetChanges()
        {
            List <DailyResourceChanges> changes = new List <DailyResourceChanges>();

            AzureResourceCommon.Services.ResourceRepository repo      = new AzureResourceCommon.Services.ResourceRepository();
            AzureResourceCommon.Dtos.Resource[]             resources = repo.GetResources(20);

            foreach (AzureResourceCommon.Dtos.Resource rec in resources)
            {
                if (!String.IsNullOrEmpty(rec.Differences))
                {
                    DailyResourceChanges dailyChanges = new DailyResourceChanges();
                    dailyChanges.Id        = rec.Id;
                    dailyChanges.Timestamp = rec.Timestamp;
                    // We have changes
                    // First parse resources (big)
                    JObject recJson = JObject.Parse(rec.ResourcesJson);

                    Newtonsoft.Json.Linq.JObject diffJson = Newtonsoft.Json.Linq.JObject.Parse(rec.Differences);

                    int value;
                    foreach (JProperty prop in diffJson["value"])
                    {
                        if (int.TryParse(prop.Name, out value))
                        {
                            // We have a change
                            ResourceChanges change        = new ResourceChanges();
                            JObject         recDetailJson = (JObject)recJson["value"][value];
                            change.Namespace   = recDetailJson["namespace"].ToString();
                            change.Differences = prop.Value.ToString();

                            dailyChanges.Changes.Add(change);
                        }
                        else if (prop.Name == "_t")
                        {
                            if (prop.Value.ToString() == "a")
                            {
                                dailyChanges.Additions = diffJson["value"].Children <JToken>().ToList <JToken>().Count - 1;
                            }
                            else
                            {
                                dailyChanges.Others = diffJson["value"].Children <JToken>().ToList <JToken>().Count - 1;
                            }
                        }
                    }

                    changes.Add(dailyChanges);
                }
            }

            return(changes);
        }
Example #2
0
        public void ResourceChange(string resourceName, double changeAmount)
        {
            if (changeAmount == 0)
            {
                return;
            }

            ResourceChanges.TryGetValue(resourceName, out ResourceChange resourceChange);

            if (resourceChange == null)
            {
                resourceChange = new ResourceChange {
                    Name = resourceName
                };
                ResourceChanges.Add(resourceName, resourceChange);
            }

            resourceChange.Change += changeAmount;
        }
Example #3
0
 public void Update(ResourceChanges changes)
 {
     OnPropertyChanged("Item[]");
 }