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 })); }
/// <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); }
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)); }