protected void Page_Load(object sender, EventArgs e) { string CurrentUserLogin = ""; if (Bitrix.Security.BXPrincipal.Current.Identity.IsAuthenticated && OrdersIBlockId>0) { CurrentUserLogin = Bitrix.Security.BXPrincipal.Current.Identity.Name.Trim(); BXFilterItem[] AgrimentsFilter = new BXFilterItem[1]; if (Bitrix.Security.BXPrincipal.Current.IsInRole("Admin")) { AgrimentsFilter[0] = new BXFilterItem(BXIBlockElement.Fields.IBlock.ID, BXSqlFilterOperators.Equal, OrdersIBlockId); } else { AgrimentsFilter = new BXFilterItem[2]; AgrimentsFilter[0] = new BXFilterItem(BXIBlockElement.Fields.IBlock.ID, BXSqlFilterOperators.Equal, OrdersIBlockId); AgrimentsFilter[1] = new BXFilterItem(new BXSchemeCustomField(BXIBlockElement.GetCustomFieldsKey(OrdersIBlockId), "LOGIN", BXIBlockElement.Fields.ID), BXSqlFilterOperators.Equal, CurrentUserLogin); } elements = BXIBlockElement.GetList( new BXFilter(AgrimentsFilter), new BXOrderBy(new BXOrderByPair(BXIBlockElement.Fields.CreateDate, BXOrderByDirection.Desc)), null, new BXQueryParams(new BXPagingOptions(0, Count)) ); } IncludeComponentTemplate(); }
protected void ItemGrid_Select(object sender, BXSelectEventArgs e) { if (typeSelectError != true) typeSelectError = false; List<RatingVotingWrapper> list = new List<RatingVotingWrapper>(); BXFilter f = new BXFilter(ItemFilter.CurrentFilter, BXRatingVoting.Fields); //f.Add(new BXFilterItem(BXRatingVoting.Fields.TotalVotes, BXSqlFilterOperators.Greater, 0)); //если задан тип элемента и поисковая фраза - ищем поиском BXFilterItem searchFilter = null; if (ItemFilter.CurrentFilter.Exists(TypeFilterExist) && ItemFilter.CurrentFilter.Exists(VotingSubjectContainsExist)) { #region запускаем поиск по введенной строке //ErrorMessage.Visible = false; List<BXSearchResult> results = new List<BXSearchResult>(); string boundEntityTypeId = string.Empty, moduleSearchId = string.Empty, searchQuery = string.Empty; BXFormFilterItem tmp = null; foreach (BXFormFilterItem f1 in ItemFilter.CurrentFilter) { if (f1.filterName == "BoundEntityTypeId") boundEntityTypeId = f1.filterValue.ToString(); else if (f1.filterName == "VotingSubjectContains") { searchQuery = f1.filterValue.ToString(); //удаляем фильтр из списка по VotingSubjectContains, //чтобы не создавать лишних условий в фильтре tmp = f1; } } ItemFilter.CurrentFilter.Remove(tmp); //если опознан модуль и есть результаты поиска по словосочетанию if (TryGetModuleId(boundEntityTypeId, out moduleSearchId)) switch (moduleSearchId) { case "iblock": List<int> iblockElementIds = new List<int>(); results = SearchItems(moduleSearchId, searchQuery); foreach (BXSearchResult r in results) { int var_i; int.TryParse(r.Content.ItemId, out var_i); iblockElementIds.Add(var_i); } searchFilter = new BXFilterItem(BXRatingVoting.Fields.BoundEntityId, BXSqlFilterOperators.In, iblockElementIds); f.Add(searchFilter); break; case "blog": List<int> blogPostIds = new List<int>(); results = SearchItems(moduleSearchId, searchQuery); foreach (BXSearchResult r in results) { int var_i; string var_s = r.Content.ItemId; var_s = var_s.Remove(0, 1); int.TryParse(var_s, out var_i); blogPostIds.Add(var_i); } searchFilter = new BXFilterItem(BXRatingVoting.Fields.BoundEntityId, BXSqlFilterOperators.In, blogPostIds); f.Add(searchFilter); break; case "forum": List<int> forumPostIds = new List<int>(); results = SearchItems(moduleSearchId, searchQuery); foreach (BXSearchResult r in results) { int var_i; int.TryParse(r.Content.ItemId, out var_i); forumPostIds.Add(var_i); } searchFilter = new BXFilterItem(BXRatingVoting.Fields.BoundEntityId, BXSqlFilterOperators.In, forumPostIds); f.Add(searchFilter); break; case "user": List<int> userIds = new List<int>(); BXUserCollection users = BXUserManager.GetList(new BXFormFilter(new BXFormFilterItem("username", searchQuery, BXSqlFilterOperators.Equal)), new BXOrderBy_old()); if (users.Count > 0) searchFilter = new BXFilterItem(BXRatingVoting.Fields.BoundEntityId, BXSqlFilterOperators.Equal, users[0].UserId); else { e.Data = list; return; } break; default: e.Data = list; return; } #endregion } else if (ItemFilter.CurrentFilter.Exists(VotingSubjectContainsExist) && !typeSelectError) { //ErrorMessage.Visible = true; ErrorMessage.AddErrorText(GetMessage("Error.ChooseSubjectType")); typeSelectError = true; e.Data = list; return; } BXSelect s = new BXSelect( BXSelectFieldPreparationMode.Normal, BXRatingVoting.Fields.Id, BXRatingVoting.Fields.Active, BXRatingVoting.Fields.BoundEntityTypeId, BXRatingVoting.Fields.BoundEntityId, //за что или за кого голосуют BXRatingVoting.Fields.CreatedUtc, //дата создания BXRatingVoting.Fields.LastCalculatedUtc, //дата последней модификации голосования BXRatingVoting.Fields.TotalValue, //суммарное значение голосов BXRatingVoting.Fields.TotalPositiveVotes, //количество голосов "за" BXRatingVoting.Fields.TotalNegativeVotes, //количество голосов "против" BXRatingVoting.Fields.TotalVotes, //количество голосов BXRatingVoting.Fields.XmlId ); BXRatingVotingCollection col = BXRatingVoting.GetList( f, new BXOrderBy(BXRatingVoting.Fields, string.IsNullOrEmpty(e.SortExpression) ? "CreatedUtc DESC" : e.SortExpression), s, new BXQueryParams(e.PagingOptions), BXTextEncoder.EmptyTextEncoder ); int recalculateId = 0; if (!String.IsNullOrEmpty(Request["recalculate"]) && Request["recalculate"] == "Y") int.TryParse(Request["RecalculateId"], out recalculateId); foreach (BXRatingVoting item in col) { if (recalculateId > 0 && item.Id == recalculateId) item.Calculate(true); list.Add(new RatingVotingWrapper(item, this)); } e.Data = list; }