//////////////////////////////////////////////////////////////////////////////////////////////// /*--------------------------------------------------------------------------------------------*/ public Member Execute(IOperationContext pOpCtx, long pMemberId, MemberType.Id pTypeId) { CreateFabMemberValidator.Type((byte)pTypeId); IWeaverVarAlias <Member> memAlias; IWeaverQuery memQ = Weave.Inst.Graph .V.ExactIndex <Member>(x => x.VertexId, pMemberId) .Next() .ToQueryAsVar("m", out memAlias); IWeaverQuery userQ = Weave.Inst.FromVar(memAlias) .DefinedByUser.ToUser .Property(x => x.VertexId) .ToQuery(); IWeaverQuery appQ = Weave.Inst.FromVar(memAlias) .DefinedByApp.ToApp .Property(x => x.VertexId) .ToQuery(); IDataAccess acc = pOpCtx.Data.Build(); acc.AddSessionStart(); acc.AddQuery(memQ, true); acc.OmitResultsOfLatestCommand(); acc.AddQuery(userQ, true); acc.AddQuery(appQ, true); acc.AddSessionClose(); IDataResult memRes = acc.Execute("Web-GetMemberDetails"); long userId = memRes.ToLongAt(2, 0); long appId = memRes.ToLongAt(3, 0); //// IWeaverQuery q = Weave.Inst.Graph .V.ExactIndex <Member>(x => x.VertexId, pMemberId) .SideEffect(new WeaverStatementSetProperty <Member>( x => x.MemberType, (byte)pTypeId)) .DefinedByUser.ToUser .DefinesMembers .Has(x => x.AppId, WeaverStepHasOp.EqualTo, appId) .SideEffect(new WeaverStatementSetProperty <UserDefinesMember>( x => x.MemberType, (byte)pTypeId)) .ToMember .DefinedByApp.ToApp .DefinesMembers .Has(x => x.UserId, WeaverStepHasOp.EqualTo, userId) .SideEffect(new WeaverStatementSetProperty <AppDefinesMember>( x => x.MemberType, (byte)pTypeId)) .ToMember .ToQuery(); return(pOpCtx.Data.Get <Member>(q, "Web-UpdateMemberType")); }
/*--------------------------------------------------------------------------------------------*/ private OauthMember GetOauthMember(IOperationData pData, Member pMemPath, string pName) { IWeaverVarAlias <Member> memAlias; IWeaverQuery memQ = pMemPath.ToQueryAsVar("m", out memAlias); IWeaverQuery appQ = Weave.Inst.FromVar(memAlias) .DefinedByApp.ToApp .Property(x => x.VertexId) .ToQuery(); IDataAccess acc = pData.Build(null, true); acc.AddSessionStart(); acc.AddQuery(memQ, true); acc.AppendScriptToLatestCommand("(m?m=m.next():null);"); string memCmdId = acc.GetLatestCommandId(); acc.AddQuery(appQ, true); acc.AddConditionsToLatestCommand(memCmdId); acc.AddSessionClose(); IDataResult res = acc.Execute("OauthAccess-" + pName); if (res.GetCommandResultCount(1) == 0) { return(null); } var om = new OauthMember(); om.Member = res.ToElementAt <Member>(1, 0); om.AppId = res.ToLongAt(2, 0); return(om); }