示例#1
0
 public static async Task AddOrUpdateAsync(this IMongoCollection <TagStatistics> collection,
                                           TagStatistics statistics)
 {
     await collection.ReplaceOneAsync(x => x.Name == statistics.Name, statistics, new UpdateOptions
     {
         IsUpsert = true
     });
 }
示例#2
0
        public ActionResult Statistics()
        {
            var model = new TagStatistics();

            var terms = _tagRepository.GetAll();

            // Count
            model.Count = terms.Count();

            // Latest
            model.Latest = terms.OrderByDescending(c => c.Id).Take(3).Select(i => new
            {
                name = i.Name,
                //image = _imageService.BuildUrl(i.ImageBlob?.Name, i.Name, 40, 40),
                creationDate   = Globalization.GetLocalDateTime(i.UTCCreation).DateTime.ToLongDateString(),
                navigationPath = Url.Action(nameof(TagController.Edit), nameof(TagController).RemoveControllerSuffix(), new { @id = i.Id })
            }).Cast <object>().ToList();

            // Weekly data
            var maxDate = DateTime.UtcNow;
            var minDate = maxDate.AddDays(-7);

            terms = terms.Where(c => c.UTCCreation.Date >= minDate.Date);
            terms = terms.Where(c => c.UTCCreation.Date <= maxDate.Date);

            var items = new List <object>();

            for (DateTime date = minDate.Date; date <= maxDate.Date; date = date.AddDays(1))
            {
                var dayName  = date.ToString("MMM/dd");
                var dayValue = terms.Where(c => c.UTCCreation.Date.Equals(date)).Count();

                items.Add(new List <object>()
                {
                    dayName, dayValue
                });
            }

            model.WeeklyRegistrations = items;

            return(Json(model));
        }
        private async Task HandleTagStatisticsAsync(T @event)
        {
            var remarkStats = await _remarkStatisticsRepository.GetAsync(@event.RemarkId);

            if (remarkStats.HasNoValue)
            {
                return;
            }

            foreach (var tag in remarkStats.Value.Tags)
            {
                var tagStats = await _tagStatisticsRepository.GetByNameAsync(tag);

                if (tagStats.HasNoValue)
                {
                    tagStats = new TagStatistics(tag, new RemarksCountStatistics());
                }
                _updateTags(tagStats.Value);
                await _tagStatisticsRepository.AddOrUpdateAsync(tagStats.Value);
            }
        }
示例#4
0
 public async Task AddOrUpdateAsync(TagStatistics statistics)
 => await _database.TagStatistics()
 .AddOrUpdateAsync(statistics);