Esempio n. 1
0
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        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"));
        }
Esempio n. 2
0
        /*--------------------------------------------------------------------------------------------*/
        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);
        }