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); }
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()); }
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(); }
public Task Save(AggregateView aggregateView) => _viewStore.Save(aggregateView);
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); } }
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 }); }
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 }); }