public void OuterJoinLogicalRewriter_DoubleFieldKey() { // NOTE: some parameter names are hard coded into the optimizer TestDatabase db = new TestDatabase(); Expression expression = CreateExpression(() => db.Members.SelectMany(m => db.Groups .Where(g => g.Id == m.GroupId && m.GroupId2 == g.Id2) .DefaultIfEmpty(), (m, g) => new { Member = m, Group = g })); Expression expectedExpression = CreateExpression(() => db.Members.GroupJoin( db.Groups, outer => new Tuple <int?, int>(outer.GroupId, outer.GroupId2), inner => new Tuple <int?, int>(inner.Id, inner.Id2), (outer, inner) => JoinGroup.Create(outer, inner)) .SelectMany( group => group.Inner.DefaultIfEmpty(), (group, inner) => new { Member = group.Outer, Group = inner })); IExpressionRewriter rewriter = new OuterJoinLogicalRewriter(); expression = rewriter.Rewrite(expression); Assert.AreEqual(expectedExpression.Type, expression.Type); Assert.AreEqual(expectedExpression.ToString(), expression.ToString()); }
private async void OnExitGroup() { var request = new Request <VKOperationIsSuccess>("groups.leave", new Dictionary <string, string> { { "group_id", groupID.ToString() } }); var response = await vkService.ExecuteRequestAsync(request); if (response.IsSuccess) { await LoadGroupInfo(); JoinGroup.RaiseCanExecuteChanged(); ExitGroup.RaiseCanExecuteChanged(); } else { var notification = new AppNotification { Type = AppNotificationType.Error, Title = $"Не удалось покинуть сообщество {Group.Name}", Content = "Повторите попытку позднее" }; appNotificationsService.SendNotification(notification); } }
public ActionResult JoinGroup() { JoinGroup join = new JoinGroup(); List <NGroup> DetList = join.GetGroups(); return(View(DetList)); }
static OuterJoinLogicalRewriter() { JoinGroupOuter = ReflectionHelper.GetMemberName((JoinGroup <object, object> g) => g.Outer); JoinGroupInner = ReflectionHelper.GetMemberName((JoinGroup <object, object> g) => g.Inner); JoinGroupCreate = ReflectionHelper.GetStaticMethodInfo(() => JoinGroup.Create <object, object>(null, null)) .GetGenericMethodDefinition(); }
private void btnJoin_OnClick(object sender, RoutedEventArgs e) { var index = this.dg.SelectedIndex; if (index > -1) { var groupId = this._groupList[index].GroupId; var join = new JoinGroup(new DbOperations()); if (join.Join(this._userId, groupId)) { MessageBox("JOIN", "SUCCESS"); Load_Datagrid(); } else { MessageBox("JOIN", "SOME ERROR"); } } }
/// <summary> /// Загрузить информацию о сообществе. /// </summary> private async Task LoadGroupInfo() { GroupName = "Загрузка"; var parameters = new Dictionary <string, string> { { "group_id", groupID.ToString() }, { "fields", "city,country,place,description,members_count,counters,start_date,finish_date,can_post,can_see_all_posts,activity,status,contacts,links,fixed_post,verified,site,ban_info" } }; var request = new Request <List <VKGroupExtended> >("groups.getById", parameters); var response = await vkService.ExecuteRequestAsync(request); if (response.IsSuccess) { Group = response.Response[0]; GroupName = Group.Name; JoinGroup.RaiseCanExecuteChanged(); ExitGroup.RaiseCanExecuteChanged(); } }
/// <summary> /// Join a user to a group /// </summary> /// <param name="order">The info to join to a group</param> /// See <see cref="Areas.GroupManage.Models.JoinGroup"/> to know the param structure /// <returns>IActionResult of the joining group action</returns> public IActionResult joinGroup([FromBody] JoinGroup order) { User user = TokenUserManager.getUserFromToken(HttpContext, _context); if (!user.open) { return(BadRequest(new { error = "YoureBanned" })); } if (AdminPolicy.isAdmin(user, _context)) { return(BadRequest("notAllowed")); } Group group = new Group(); if (!isUnderLimitations(user)) { return(BadRequest(new { error = "MaxGroupJoinsReached" })); } if (!hasPermissions(user, ref group, order.groupName)) { return(BadRequest()); } if (group.password != null && !PasswordHasher.areEquals(order.password, group.password)) { return(BadRequest(new { error = "IncorrectPasswordJoiningGroup" })); } if (!group.open) { return(BadRequest(new { error = "GroupBanned" })); } interactionType type = checkInteractions(user, group); if (type != interactionType.NONE) { if (type == interactionType.KICKED) { return(BadRequest(new { error = "YouwereKickedGroup" })); } else { return(BadRequest(new { error = "YouhasleavedGroup" })); } } try { UserGroup newUser = new UserGroup { User = user, Group = group, role = RoleManager.getGroupNormal(_context), dateRole = DateTime.Today, coins = group.weeklyPay }; _context.UserGroup.Add(newUser); _context.SaveChanges(); Home.Util.GroupNew.launch(user, group, null, Home.Models.TypeGroupNew.JOIN_LEFT_GROUP, true, _context); Home.Util.GroupNew.launch(user, group, null, Home.Models.TypeGroupNew.JOIN_LEFT_USER, true, _context); return(Ok(new { success = "SuccesfullJoinGroup" })); } catch (Exception) { return(StatusCode(500)); } }
public void OuterJoinLogicalRewriter_TripleJoin() { // NOTE: some parameter names are hard coded into the optimizer TestDatabase db = new TestDatabase(); Expression expression = CreateExpression(() => db.Members.SelectMany(outer => db.Groups .Where(g => g.Id == outer.GroupId) .DefaultIfEmpty(), (outer, inner) => new { Member = outer, Group = inner }) .SelectMany(outer => db.Groups .Where(g => g.Id == outer.Member.GroupId) .DefaultIfEmpty(), (outer, inner) => new { Member = outer.Member, Group1 = outer.Group, Group2 = inner }) .SelectMany(outer => db.Groups .Where(g => g.Id == outer.Member.GroupId) .DefaultIfEmpty(), (outer, inner) => new { Member = outer.Member, Group1 = outer.Group1, Group2 = outer.Group2, Group3 = inner })); Expression expectedExpression = CreateExpression(() => db.Members.GroupJoin( db.Groups, outer => outer.GroupId, inner => inner.Id, (outer, inner) => JoinGroup.Create(outer, inner)) .SelectMany( group => group.Inner.DefaultIfEmpty(), (group, inner) => new { Member = group.Outer, Group = inner }) .GroupJoin( db.Groups, outer => outer.Member.GroupId, inner => inner.Id, (outer, inner) => JoinGroup.Create(outer, inner)) .SelectMany( group => group.Inner.DefaultIfEmpty(), (group, inner) => new { Member = group.Outer.Member, Group1 = group.Outer.Group, Group2 = inner }) .GroupJoin( db.Groups, outer => outer.Member.GroupId, inner => inner.Id, (outer, inner) => JoinGroup.Create(outer, inner)) .SelectMany( group => group.Inner.DefaultIfEmpty(), (group, inner) => new { Member = group.Outer.Member, Group1 = group.Outer.Group1, Group2 = group.Outer.Group2, Group3 = inner })); IExpressionRewriter rewriter = new OuterJoinLogicalRewriter(); expression = rewriter.Rewrite(expression); Assert.AreEqual(expectedExpression.Type, expression.Type); Assert.AreEqual(expectedExpression.ToString(), expression.ToString()); }