Пример #1
0
        public ActionResult Index(long userId, UserLanguages userLanguages)
        {
            const string EMPTY_WALL_VIEW = "EmptyWall";

            if (WebSettingsConfig.Instance.IsSectionForbidden(SectionId.MyKnowledge))
            {
                return(RedirectToAction("Index", RouteConfig.MAIN_CONTROLLER_NAME));
            }

            if (IdValidator.IsInvalid(userId) || UserLanguages.IsInvalid(userLanguages))
            {
                return(View(EMPTY_WALL_VIEW));
            }

            IUserKnowledgeQuery      userKnowledgeQuery = CreateUserKnowledgeQuery(userId);
            List <UserKnowledgeItem> items = GetData(userKnowledgeQuery, userLanguages, long.MaxValue);

            if (items == null || EnumerableValidator.IsEmpty(items))
            {
                return(View(EMPTY_WALL_VIEW));
            }

            //TODO: если будет тормозить - получать ajax'ом данные через action GetStatistic
            UserKnowledgeStatistic statistic = userKnowledgeQuery.GetStatistic();

            return(View("Index", new KnowledgeWallModel(userLanguages, items)
            {
                Statistic = statistic
            }));
        }
Пример #2
0
        /// <summary>
        /// Получает статистику пользователя
        /// </summary>
        /// <returns>статистика пользователя</returns>
        public UserKnowledgeStatistic GetStatistic()
        {
            DateTime currentDate  = GetCurrentDate();
            var      defaultValue = new UserKnowledgeStatistic {
                Today = new UserKnowledgeStatistic.CountStatistic(),
                Total =
                    new UserKnowledgeStatistic.CountStatistic()
            };
            DateTime minDate = new DateTime().GetDbDateTime();
            UserKnowledgeStatistic result = Adapter.ReadByContext(c => {
                var innerResult = new UserKnowledgeStatistic();

                IQueryable <IGrouping <int, UserKnowledge> > query =
                    c.UserKnowledge.Where(
                        e => e.UserId == _userId && e.LanguageId == _languageId && e.DeletedDate == minDate).GroupBy(
                        e => e.DataType);
                innerResult.Total = GetCountStatistic(query);

                query = c.UserKnowledge
                        .Where(
                    e =>
                    e.UserId == _userId && e.LanguageId == _languageId && e.CreationDate >= currentDate &&
                    e.DeletedDate == minDate)
                        .GroupBy(e => e.DataType);
                innerResult.Today = GetCountStatistic(query);
                return(innerResult);
            }, defaultValue);

            return(result);
        }
Пример #3
0
        public JsonResult GetStatistic(long userId)
        {
            if (IdValidator.IsInvalid(userId))
            {
                return(JsonResultHelper.GetUnlimitedJsonResult(new object()));
            }

            IUserKnowledgeQuery userKnowledgeQuery = CreateUserKnowledgeQuery(userId);

            UserKnowledgeStatistic statistic = userKnowledgeQuery.GetStatistic();

            return(JsonResultHelper.GetUnlimitedJsonResult(statistic));
        }