Пример #1
0
        public async Task <IEnumerable <ReportAgentDataLine> > GetAgentChartData(string business_id, Paging page)
        {
            List <ReportAgentDataLine> list = new List <ReportAgentDataLine>();

            var match = "{$match:{$and:[{business_id:\"" + business_id + "\"},{key:\"GetAgentChartDataJob\"},{timestamp: { $gte : " + page.Previous + "}},{timestamp : { $lt : " + (page.Next) + "} }]}}";
            var group = "{$group: {" +
                        "_id: \"$id\", " +
                        "customer_ids: {$sum: \"$customers\"}, " +
                        "thread_ids: {$sum: \"$conversations\"}," +
                        "messagess: {$sum: \"$messages\"}" +
                        "}}";
            var project = "{$project: {" +
                          "_id: 0, " +
                          "id: \"$_id\", " +
                          "customers: \"$customer_ids\", " +
                          "conversations: \"$thread_ids\"  ," +
                          "messages: \"$messagess\"" +
                          "}}";
            var sort     = "{$sort: { messages: -1}}";
            var Pipeline = new[] { BsonDocument.Parse(match), BsonDocument.Parse(group), BsonDocument.Parse(project), BsonDocument.Parse(sort) };

            var client     = new MongoClient(_appSettings.Value.MongoDB.ConnectionString);
            var db         = client.GetDatabase(_appSettings.Value.MongoDB.Database);
            var collection = db.GetCollection <BsonDocument>(report);
            var d          = collection.Aggregate <BsonDocument>(Pipeline, null).ToList();

            list = await _mongoClient.DeserializeBsonToEntity <ReportAgentDataLine>(d);

            return(list);
        }
Пример #2
0
        public async Task <IEnumerable <Counter> > GetChannelCounters(string business_id)
        {
            List <Counter> list = new List <Counter>();
            var            key  = "GetChannelCounters" + business_id;

            var match = "{$match:{business_id:\"" + business_id + "\"}}";
            var group = "{$group:{_id:{channel_id:\"$channel_id\"}, " +
                        "unread :{ $first: '$unread' }," +
                        "id: { $first: '$channel_id' }" +
                        ",count:{$sum:1}}}";
            var project  = "{$project:{_id:0}}";
            var Pipeline = new[] { BsonDocument.Parse(match), BsonDocument.Parse(group), BsonDocument.Parse(project) };

            var result = await _mongoClient.Threads.AggregateAsync <BsonDocument>(Pipeline);

            var d = result.ToList();

            list = await _mongoClient.DeserializeBsonToEntity <Counter>(d);

            return(list);
        }