public IEnumerable <BsonDocument> GetActionChart(ActionsChartConfiguration chartConfiguration) { var aggregate = GetCollection().Aggregate() .Match(GetMatchDocument(chartConfiguration)) .Group(GetGroupDocument(chartConfiguration)); return(aggregate.ToList()); }
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); }
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); }
public JsonResult GenerateChart([FromBody] ActionsChartConfiguration actionsChartConfiguration) { var result = _actionRepository.GetActionChart(actionsChartConfiguration); return(new JsonResult(result.ToJson())); }