Esempio n. 1
0
        public IEnumerable <BsonDocument> GetActionChart(ActionsChartConfiguration chartConfiguration)
        {
            var aggregate = GetCollection().Aggregate()
                            .Match(GetMatchDocument(chartConfiguration))
                            .Group(GetGroupDocument(chartConfiguration));

            return(aggregate.ToList());
        }
Esempio n. 2
0
        private BsonDocument GetGroupDocument(ActionsChartConfiguration chartConfiguration)
        {
            var groupClauseStrategy = new GroupClauseStrategy();
            var groupBuilder        = new GroupBuilder();

            groupBuilder.BuildIdClause("'userId'", "'$UserId'");

            groupClauseStrategy.Fill(groupBuilder, chartConfiguration.ResultChartInterval);

            groupBuilder.BuildResultClause("$sum", (chartConfiguration.ResultChartType == ResultChartType.Events ? "1" : "\"$Nectar\""));
            return(groupBuilder.Document);
        }
Esempio n. 3
0
        private BsonDocument GetMatchDocument(ActionsChartConfiguration chartConfiguration)
        {
            var matchBuilder = new MatchBuilder();

            matchBuilder.BuildClause("ActionStart", chartConfiguration.SelectedActionStart, MatchType.DateRange);
            matchBuilder.BuildClause("ActionType", chartConfiguration.SelectedActionTypes, MatchType.Integer);
            matchBuilder.BuildClause("UserId", chartConfiguration.SelectedUserIDs, MatchType.Integer);
            matchBuilder.BuildClause("EarnType", chartConfiguration.SelectedEarnTypes, MatchType.Integer);
            matchBuilder.BuildClause("IP", chartConfiguration.SelectedIPS, MatchType.String);
            matchBuilder.BuildClause("StartDate", chartConfiguration.SelectedStartDate, MatchType.DateRange);

            return(matchBuilder.Document);
        }
Esempio n. 4
0
        public JsonResult GenerateChart([FromBody] ActionsChartConfiguration actionsChartConfiguration)
        {
            var result = _actionRepository.GetActionChart(actionsChartConfiguration);

            return(new JsonResult(result.ToJson()));
        }