Example #1
0
        public Task Save(AggregateView aggregateView)
        {
            if (!_db.TryGetValue(aggregateView.GetType(), out var entities))
            {
                _db.Add(aggregateView.GetType(), entities = new Dictionary <String, AggregateView>());
            }

            if (!entities.ContainsKey(aggregateView.AggregateId))
            {
                entities.Add(aggregateView.AggregateId, aggregateView);
            }
            else
            {
                entities[aggregateView.AggregateId] = aggregateView;
            }

            return(Task.CompletedTask);
        }
        IView <PlayerUIData>[] CreateViews(RectTransform prefab, RectTransform container)
        {
            var store = MatchConfig.CreatePlayerBuffer <IView <PlayerUIData> >();

            if (prefab == null)
            {
                return(store);
            }
            for (var i = 0; i < store.Length; i++)
            {
                RectTransform playerView = GameObject.Instantiate(prefab);
                if (container != null)
                {
                    playerView.SetParent(container, false);
                }
                playerView.gameObject.name = playerView.gameObject.name.Replace("(Clone)", "") + " " + (i + 1);
                store[i] = AggregateView <PlayerUIData> .FromGameObject(playerView.gameObject);
            }
            return(store);
        }
Example #3
0
        public async Task Save(AggregateView aggregateView)
        {
            if (aggregateView == null)
            {
                throw new ArgumentNullException(nameof(aggregateView));
            }

            var aggregateViewInfo = _projectionSchema.Language.GetAggregateView(aggregateView.GetType());
            var collection        = Db.GetCollection <BsonDocument>(aggregateViewInfo.Id);
            var filter            = new BsonDocument("AggregateId", aggregateView.AggregateId);

            var documents = await collection.Find(filter).ToListAsync();

            var document = documents.SingleOrDefault();

            if (document != null)
            {
                await collection.DeleteOneAsync(filter);
            }
            await collection.InsertOneAsync(aggregateView.ToBsonDocument());
        }
Example #4
0
    static void Main(string[] args)
    {
        var aggregate = new AggregateView();

        eventTest += aggregate.Listener;
        aggregate.Views.Subscribe(ReceiveList);
        aggregate.Events.Subscribe(ReceiveValue);
        eventTest(1);
        eventTest(2);
        eventTest(3);
        eventTest(4);
        eventTest(5);
        aggregate.RequestView();
        aggregate.Complete();
        eventTest(6);
        eventTest(7);
        eventTest(8);
        eventTest(9);
        eventTest(10);
        aggregate.RequestView();
    }
Example #5
0
 public Task Save(AggregateView aggregateView) => _viewStore.Save(aggregateView);
Example #6
0
        private async void ExecuteApplyAnalysis()
        {
            string LiveChartTitle = "";

            Console.WriteLine("Applying");

            Console.WriteLine("Start/End: " + StartDate + "/" + EndDate);
            Console.WriteLine("Type/Group/Reduce: " + SelectedTargetType + "/" + SelectedGroupingType + "/" + SelectedReduceType);

            int measurementTypeId = 0;

            switch (this.SelectedTargetType)
            {
            case TargetType.Air_Preassure:
                measurementTypeId = 2; LiveChartTitle = "Air Pressure"; break;

            case TargetType.Humidity:
                measurementTypeId = 4; LiveChartTitle = "Humidity"; break;

            case TargetType.Rain:
                measurementTypeId = 3; LiveChartTitle = "Rain"; break;

            case TargetType.Temperature:
                measurementTypeId = 1; LiveChartTitle = "Temperature"; break;

            case TargetType.Wind:
                measurementTypeId = 5; LiveChartTitle = "Wind"; break;

            case TargetType.Wind_direction:
                measurementTypeId = 6; LiveChartTitle = "Wind Direction"; break;
            }

            int reductionTypeId = 0;

            switch (this.SelectedReduceType)
            {
            case ReduceType.Average: reductionTypeId = 0; break;

            case ReduceType.Minimum: reductionTypeId = 1; break;

            case ReduceType.Maximum: reductionTypeId = 2; break;

            case ReduceType.Sum: reductionTypeId = 3; break;
            }

            int groupingTypeId = 0;

            switch (this.SelectedGroupingType)
            {
            case GroupingType.Day:
                groupingTypeId = 0; break;

            case GroupingType.Week:
                groupingTypeId = 1; break;

            case GroupingType.Month:
                groupingTypeId = 2; break;

            case GroupingType.Year:
                groupingTypeId = 3; break;

            case GroupingType.Hour:
                groupingTypeId = 4; break;
            }

            double[] result = null;

            if (Longitude != 0 && Latitude != 0 && Radius != 0)
            {
                notifierManager.ShowInformation("Fetching results based on coordinates...");
                result = await measurementManager.GetQueryResult(StartDate, EndDate, measurementTypeId, reductionTypeId, groupingTypeId, this.selectedStations.ToList(), Latitude, Longitude, Radius);
            }
            else
            {
                if (SelectedCommunity != null && SelectedCommunity.CommunityId != -1)
                {
                    notifierManager.ShowInformation("Fetching results based on the selected community...");
                    result = await measurementManager.GetQueryResult(StartDate, EndDate, measurementTypeId, reductionTypeId, groupingTypeId, this.selectedStations.ToList(), this.SelectedCommunity);
                }
                else if (SelectedDistrict != null && SelectedDistrict.DistrictId != -1)
                {
                    notifierManager.ShowInformation("Fetching results based on the selected district...");
                    result = await measurementManager.GetQueryResult(StartDate, EndDate, measurementTypeId, reductionTypeId, groupingTypeId, this.selectedStations.ToList(), this.SelectedDistrict);
                }
                else if (SelectedProvince != null && SelectedProvince.ProvinceId != -1)
                {
                    if (SelectedProvince.ProvinceId == -2)
                    {
                        notifierManager.ShowInformation("Fetching results based on every region...");
                        result = await measurementManager.GetQueryResult(StartDate, EndDate, measurementTypeId, reductionTypeId, groupingTypeId, this.selectedStations.ToList());
                    }
                    else
                    {
                        notifierManager.ShowInformation("Fetching results based on the selected province...");
                        result = await measurementManager.GetQueryResult(StartDate, EndDate, measurementTypeId, reductionTypeId, groupingTypeId, this.selectedStations.ToList(), this.SelectedProvince);
                    }
                }
                else
                {
                    notifierManager.ShowError("Please select a region or enter coordinates to filter the location!");
                    return;
                }
            }

            AggregateViewModel aggregateViewModel = new AggregateViewModel();

            aggregateViewModel.AddToCollection(LiveChartTitle, 1, result);

            MetroWindow aggregateWindow = new MetroWindow
            {
                Title = LiveChartTitle + " Chart Window"
            };
            AggregateView aggregateView = new AggregateView
            {
                DataContext = aggregateViewModel
            };

            aggregateWindow.Content = aggregateView;

            aggregateWindow.Show();

            foreach (double d in result)
            {
                Console.WriteLine(d);
            }
        }
Example #7
0
        public JsonResult Aggregate(string ids)
        {
            var idArray = new ArrayList();

            idArray.AddRange(ids.Replace("all", "").TrimEnd(',').Split(','));
            idArray.Remove("");

            var gotBundle = GetVersionBundle();

            // For each version in the bundle, go get the issues
            var toReturn = new List <AggregateView>();

            Version[] orderedVersions;

            if (idArray.Count > 0)
            {
                //get version specific data
                orderedVersions =
                    gotBundle.Data.Versions
                    .Where(x => idArray.Contains(x.Value))
                    .OrderBy(x => x.Value.AsFullVersion())
                    .ToArray();
            }
            else
            {
                //get all versions with projectID
                orderedVersions =
                    gotBundle.Data.Versions
                    .OrderBy(x => x.Value.AsFullVersion())
                    .ToArray();
            }

            var currentReleases    = new List <Version>();
            var plannedReleases    = new List <Version>();
            var inProgressReleases = new List <Version>();

            var releasesNode = new Node(int.Parse(ReleasesPageNodeId));

            foreach (Node release in releasesNode.Children)
            {
                if (release.GetProperty("recommendedRelease") != null && release.GetProperty("recommendedRelease").Value == "1")
                {
                    var version = orderedVersions.FirstOrDefault(x => x.Value.ToString(CultureInfo.InvariantCulture) == release.Name);
                    if (version != null)
                    {
                        currentReleases.Add(version);
                    }
                }

                if (release.GetProperty("releaseStatus") != null && release.GetProperty("releaseStatus").Value == "Planning")
                {
                    var version = orderedVersions.FirstOrDefault(x => x.Value.ToString(CultureInfo.InvariantCulture) == release.Name);
                    if (version != null)
                    {
                        plannedReleases.Add(version);
                    }
                }

                if (release.GetProperty("releaseStatus") != null && release.GetProperty("releaseStatus").Value == "Unreleased")
                {
                    var version = orderedVersions.FirstOrDefault(x => x.Value.ToString(CultureInfo.InvariantCulture) == release.Name);
                    if (version != null)
                    {
                        inProgressReleases.Add(version);
                    }
                }
            }

            // Just used to make sure we don't make repeated API requests for keys
            var versionCache = new ConcurrentDictionary <string, RestResponse <IssuesWrapper> >();

            foreach (var version in orderedVersions)
            {
                var item = new AggregateView
                {
                    inProgressRelease  = inProgressReleases.FirstOrDefault(x => x.Value == version.Value) != null,
                    version            = version.Value,
                    isPatch            = version.Value.AsFullVersion().Build != 0,
                    releaseDescription = version.Description ?? string.Empty,
                    released           = version.Released,
                    releaseDate        = version.ReleaseDate == 0 ? "" : ConvertDate(version.ReleaseDate).ToString(CultureInfo.InvariantCulture),
                    currentRelease     = currentReleases.FirstOrDefault(x => x.Value == version.Value) != null,
                    plannedRelease     = plannedReleases.FirstOrDefault(x => x.Value == version.Value) != null
                };

                // /rest/issue/byproject/{project}?{filter}
                var issues       = versionCache.GetOrAdd(version.Value, key => GetRestResponse <IssuesWrapper>(string.Format(IssuesUrl, ProjectId, "Due+in+version%3A+" + key)));
                var issueView    = new List <IssueView>();
                var activityView = new List <ActivityView>();

                Parallel.ForEach(
                    issues.Data.Issues,
                    issue =>
                {
                    var view = new IssueView
                    {
                        id       = issue.Id,
                        state    = GetFieldFromIssue(issue, "State"),
                        title    = GetFieldFromIssue(issue, "summary"),
                        type     = GetFieldFromIssue(issue, "Type"),
                        breaking = (GetFieldFromIssue(issue, "Backwards compatible?") == "No")
                    };
                    issueView.Add(view);
                });

                var activitiesDateDesc     = activityView.Where(x => x.changes.Any()).OrderByDescending(x => x.date);
                var issueIdsFromActivities = activitiesDateDesc.Select(x => x.id).Distinct()
                                             .Concat(issueView.Where(y => y != null && activitiesDateDesc.Select(z => z.id).Contains(y.id) == false).Select(y => y.id)); // Add issues for which there is no activity

                item.issues     = issueIdsFromActivities.Select(x => issueView.Single(y => y != null && y.id == x)).OrderBy(x => x.id);
                item.activities = activitiesDateDesc.Take(5);

                toReturn.Add(item);
            }

            return(new JsonResult {
                Data = toReturn, JsonRequestBehavior = JsonRequestBehavior.AllowGet
            });
        }
Example #8
0
        public JsonResult VersionBundle(string ids, bool cached)
        {
            var idArray = new ArrayList();

            idArray.AddRange(ids.Replace("all", "").TrimEnd(',').Split(','));
            idArray.Remove("");

            // For each version in the bundle, go get the issues
            var toReturn = new List <AggregateView>();

            Models.Version[] orderedVersions;

            if (cached == false)
            {
                var gotBundle = GetVersionBundle();

                orderedVersions = idArray.Count > 0
                    ? gotBundle.Data.Versions.Where(x => idArray.Contains(x.Value)).OrderBy(x => x.Value.AsFullVersion()).ToArray()
                    : gotBundle.Data.Versions.OrderBy(x => x.Value.AsFullVersion()).ToArray();
            }
            else
            {
                orderedVersions = ids.Split(',').Select(versionId => new Models.Version {
                    Value = versionId
                }).ToArray();
            }

            var currentReleases    = new List <Models.Version>();
            var plannedReleases    = new List <Models.Version>();
            var inProgressReleases = new List <Models.Version>();

            var releasesNode = new Node(_releasesPageNodeId);

            foreach (Node release in releasesNode.Children)
            {
                var version = orderedVersions.SingleOrDefault(x => x.Value == release.Name);
                if (version != null)
                {
                    if (release.GetPropertyValue("recommendedRelease") == "1")
                    {
                        var status = release.GetProperty("releaseStatus");
                        if (status != null && status.Value != "Released")
                        {
                            version.ReleaseStatus = status.Value;
                        }

                        currentReleases.Add(version);
                    }

                    if (release.GetPropertyValue("releaseStatus") == "Planning")
                    {
                        plannedReleases.Add(version);
                    }

                    if (release.GetPropertyValue("releaseStatus") != "Released")
                    {
                        inProgressReleases.Add(version);
                    }
                }
            }

            // Just used to make sure we don't make repeated API requests for keys
            var versionCache = new ConcurrentDictionary <string, RestResponse <IssuesWrapper> >();

            foreach (var version in orderedVersions)
            {
                var issueView = new List <IssueView>();

                var activityView = new List <ActivityView>();

                var item = new AggregateView();

                if (cached == false)
                {
                    item = new AggregateView
                    {
                        inProgressRelease  = inProgressReleases.FirstOrDefault(x => x.Value == version.Value) != null,
                        version            = version.Value,
                        isPatch            = version.Value.AsFullVersion().Build != 0,
                        releaseDescription = version.Description ?? string.Empty,
                        releaseStatus      = version.ReleaseStatus,
                        released           = version.Released,
                        releaseDate        = version.ReleaseDate == 0 ? "" : version.ReleaseDate.ConvertFromUnixDate().ToString(CultureInfo.InvariantCulture),
                        currentRelease     = currentReleases.FirstOrDefault(x => x.Value == version.Value) != null,
                        plannedRelease     = plannedReleases.FirstOrDefault(x => x.Value == version.Value) != null
                    };

                    var issuesList = new List <YouTrackIssue>();

                    var issuesRest = versionCache.GetOrAdd(version.Value,
                                                           key => GetRestResponse <IssuesWrapper>(string.Format(IssuesUrl, _projectId, "Due+in+version%3A+" + key), true));

                    var issues = JsonConvert.DeserializeObject <List <YouTrackIssue> >(issuesRest.Content);

                    if (issues.Any())
                    {
                        issuesList.AddRange(issues);
                    }

                    foreach (var issue in issuesList)
                    {
                        var view = new IssueView
                        {
                            id       = issue.Id,
                            state    = issue.GetFieldValue("State"),
                            title    = issue.GetFieldValue("summary"),
                            type     = issue.GetFieldValue("Type"),
                            breaking = (issue.GetFieldValue("Backwards compatible?") == "No")
                        };

                        issueView.Add(view);
                    }
                }
                else
                {
                    var cache         = (List <AggregateView>)GetVersionsFromFile().Data;
                    var cachedVersion = cache.FirstOrDefault(x => x.version == version.Value);
                    if (cachedVersion != null)
                    {
                        item      = cachedVersion;
                        issueView = cachedVersion.issues.ToList();
                    }
                }

                var activitiesDateDesc     = activityView.Where(x => x.changes.Any()).OrderByDescending(x => x.date);
                var issueIdsFromActivities = activitiesDateDesc.Select(x => x.id).Distinct()
                                             .Concat(issueView.Where(y => y != null && activitiesDateDesc.Select(z => z.id).Contains(y.id) == false)
                                                     .Select(y => y.id)); // Add issues for which there is no activity

                item.issues     = new List <IssueView>(issueIdsFromActivities.Select(x => issueView.Single(y => y != null && y.id == x)).OrderBy(x => x.id));
                item.activities = activitiesDateDesc.Take(5).ToList();

                toReturn.Add(item);
            }

            return(new JsonResult {
                Data = toReturn, JsonRequestBehavior = JsonRequestBehavior.AllowGet
            });
        }