public static ParseRelation <ParseObject> DecodeRelation(IDictionary dict)
        {
            ParseRelation <ParseObject> relation = new ParseRelation <ParseObject>();

            relation.TargetClass = dict["className"].ToString();
            return(relation);
        }
        public object Apply(object oldValue, string key)
        {
            ParseRelation <ParseObject> relation = new ParseRelation <ParseObject>();

            relation.TargetClass = valueList[0].ClassName;
            return(relation);
        }
示例#3
0
 public static object EncodeRelation(ParseRelation <ParseObject> relation)
 {
     return(new Dictionary <string, object> {
         { "__type", "Relation" },
         { "className", relation.TargetClass }
     });
 }
示例#4
0
        protected async Task SendMessage()
        {
            if (RecipientPublicData == null)
            {
                throw new Exception("no user selected");
            }
            ParseObject message = await CreateNewMessage();

            if (Conversation == null)
            {
                Conversation = await FindOrCreateNewConversation();
            }
            ParseRelation <ParseObject> messages = Conversation.GetRelation <ParseObject>("messages");

            messages.Add(message);
            Conversation["lastSent"] = DateTime.Now;
            await Conversation.SaveAsync();

            IDictionary <string, object> parameters = new Dictionary <string, object>
            {
                { "senderBaseUserId", PublicUserData.BaseUserId },
                { "receiverBaseUserId", RecipientPublicData.Get <string>("baseUserId") },
                { "senderName", PublicUserData.DisplayName },
                { "messageText", tbMessage.Text }
            };
            await ParseCloud.CallFunctionAsync <string>("sendMessageNotification", parameters);

            tbMessage.Text = "";
            tbType.Focus();
        }
        public void TestIsValidType()
        {
            ParseObject corgi = new ParseObject("Corgi");
            ParseRelation <ParseObject> corgiRelation = corgi.GetRelation <ParseObject>(nameof(corgi));

            Assert.IsTrue(ParseDataEncoder.Validate(322));
            Assert.IsTrue(ParseDataEncoder.Validate(0.3f));
            Assert.IsTrue(ParseDataEncoder.Validate(new byte[] { 1, 2, 3, 4 }));
            Assert.IsTrue(ParseDataEncoder.Validate(nameof(corgi)));
            Assert.IsTrue(ParseDataEncoder.Validate(corgi));
            Assert.IsTrue(ParseDataEncoder.Validate(new ParseACL {
            }));
            Assert.IsTrue(ParseDataEncoder.Validate(new ParseFile("Corgi", new byte[0])));
            Assert.IsTrue(ParseDataEncoder.Validate(new ParseGeoPoint(1, 2)));
            Assert.IsTrue(ParseDataEncoder.Validate(corgiRelation));
            Assert.IsTrue(ParseDataEncoder.Validate(new DateTime {
            }));
            Assert.IsTrue(ParseDataEncoder.Validate(new List <object> {
            }));
            Assert.IsTrue(ParseDataEncoder.Validate(new Dictionary <string, string> {
            }));
            Assert.IsTrue(ParseDataEncoder.Validate(new Dictionary <string, object> {
            }));

            Assert.IsFalse(ParseDataEncoder.Validate(new ParseAddOperation(new List <object> {
            })));
            Assert.IsFalse(ParseDataEncoder.Validate(Task.FromResult(new ParseObject("Corgi"))));
            Assert.ThrowsException <MissingMethodException>(() => ParseDataEncoder.Validate(new Dictionary <object, object> {
            }));
            Assert.ThrowsException <MissingMethodException>(() => ParseDataEncoder.Validate(new Dictionary <object, string> {
            }));
        }
示例#6
0
        public async Task <IList <Person> > GetChildren(Person parent)
        {
            try
            {
//                var query = ParseObject.GetQuery("Person");
                var query = from person in ParseObject.GetQuery("Person")
                            where person.Get <string>("objectId") == "WolywqVi87"
                            select person;

                ParseObject parentParseObject = await query.FirstAsync();

                ParseRelation <ParseObject> relation = parentParseObject.GetRelation <ParseObject>("PersonLink");

                IEnumerable <ParseObject> ChildrenParseObject = await relation.Query.FindAsync();

                List <Person> children = new List <Person>();
                foreach (var parseObject in ChildrenParseObject)
                {
                    Person p = await GetPersonFromParseObject(parseObject);

                    children.Add(p);
                }

                return(children);
            }
            catch
            {
                throw;
            }
        }
示例#7
0
        public void TestEncodeParseRelation()
        {
            var obj = new ParseObject("Corgi");
            ParseRelation <ParseObject>  relation = new ParseRelation <ParseObject>(obj, "nano", "Husky");
            IDictionary <string, object> value    = ParseEncoderTestClass.Instance.Encode(relation) as IDictionary <string, object>;

            Assert.AreEqual("Relation", value["__type"]);
            Assert.AreEqual("Husky", value["className"]);
        }
示例#8
0
        private async void GetKids_Click(object sender, RoutedEventArgs e)
        {
            var query = from person in ParseObject.GetQuery("Person")
                        where person.Get <string>("objectId") == "WolywqVi87"
                        select person;

            ParseObject obj = await query.FirstAsync();

            ParseRelation <ParseObject> relation = obj.GetRelation <ParseObject>("PersonLink");

            //var kidsQuery = relation.Query;
            IEnumerable <ParseObject> ParseLearners = await relation.Query.FindAsync();
        }
示例#9
0
        public void TestDecodeRelation()
        {
            IDictionary <string, object> value = new Dictionary <string, object>()
            {
                { "__type", "Relation" },
                { "className", "Corgi" },
                { "objectId", "lLaKcolnu" }
            };

            ParseRelation <ParseObject> relation = ParseDecoder.Instance.Decode(value) as ParseRelation <ParseObject>;

            Assert.IsNotNull(relation);
            Assert.AreEqual("Corgi", relation.TargetClassName);
        }
示例#10
0
    public void TestRelationQuery() {
      ParseObject parent = ParseObject.CreateWithoutData("Foo", "abcxyz");

      ParseRelation<ParseObject> relation = new ParseRelation<ParseObject>(parent, "child");
      ParseQuery<ParseObject> query = relation.Query;

      // Client side, the query will appear to be for the wrong class.
      // When the server recieves it, the class name will be redirected using the 'redirectClassNameForKey' option.
      Assert.AreEqual("Foo", query.ClassName);

      IDictionary<string, object> encoded = query.BuildParameters();

      Assert.AreEqual("child", encoded["redirectClassNameForKey"]);
    }
        public void TestRelationQuery()
        {
            ParseObject parent = ParseObject.CreateWithoutData("Foo", "abcxyz");

            ParseRelation <ParseObject> relation = parent.GetRelation <ParseObject>("child");
            ParseQuery <ParseObject>    query    = relation.Query;

            // Client side, the query will appear to be for the wrong class.
            // When the server recieves it, the class name will be redirected using the 'redirectClassNameForKey' option.
            Assert.AreEqual("Foo", query.GetClassName());

            IDictionary <string, object> encoded = query.BuildParameters();

            Assert.AreEqual("child", encoded["redirectClassNameForKey"]);
        }
示例#12
0
        public async void CargarMisPlanes()
        {
            ParseUser user = ParseUser.CurrentUser;

            var query = ParseObject.GetQuery("Plan").WhereEqualTo("id_user", user);
            IEnumerable <ParseObject> results = await query.FindAsync();

            ParseObject plan;
            PlanItem    item;


            int tamanio = results.Count <ParseObject>();

            for (int i = 0; i < tamanio; i++)
            {
                plan = results.ElementAt <ParseObject>(i);
                ParseRelation <ParseUser> relation = plan.GetRelation <ParseUser>("Asistentes");
                IEnumerable <ParseUser>   resul    = await relation.Query.FindAsync();

                int numero = resul.Count <ParseUser>();

                Uri    imagen    = plan.Get <ParseFile>("imagen").Url;
                string imagenURL = imagen.AbsoluteUri;


                item = new PlanItem()
                {
                    obj        = plan,
                    Nombre     = plan.Get <string>("nombre"),
                    Fecha      = plan.Get <string>("fecha"),
                    ImagenUrl  = imagenURL,
                    Direccion  = plan.Get <string>("direccion"),
                    Asistentes = numero.ToString()
                };

                miPlanItems.Add(item);
            }
        }
示例#13
0
        private async void mostrarCreadorAsistentes()
        {
            string Id_creador = plan.Get <ParseObject>("id_user").ObjectId;

            var creador = await ParseUser.Query.GetAsync(Id_creador);

            VerCreador.Text = creador.Get <string>("name");

            ParseRelation <ParseUser> relation = plan.GetRelation <ParseUser>("Asistentes");
            IEnumerable <ParseUser>   resul    = await relation.Query.FindAsync();

            int numero = resul.Count <ParseUser>();

            VerAsistentes.Text = numero.ToString();

            if (numero > 0)
            {
                ParseUser asistente = ParseUser.CurrentUser;
                ParseUser user;
                for (int i = 0; i < numero; i++)
                {
                    user = resul.ElementAt <ParseUser>(i);
                    if (!asistente.ObjectId.Equals(user.ObjectId))
                    { // no es asistente
                        btnAsistir.Background = new SolidColorBrush(Colors.White);
                    }
                    else
                    {// es asistente
                        btnAsistir.Background = new SolidColorBrush(Colors.Cyan);
                    }
                }
            }
            else
            {
                btnAsistir.Background = new SolidColorBrush(Colors.White);
            }
        }
示例#14
0
 public void TestEncodeParseRelation() {
   var obj = new ParseObject("Corgi");
   ParseRelation<ParseObject> relation = new ParseRelation<ParseObject>(obj, "nano", "Husky");
   IDictionary<string, object> value = ParseEncoderTestClass.Instance.Encode(relation) as IDictionary<string, object>;
   Assert.AreEqual("Relation", value["__type"]);
   Assert.AreEqual("Husky", value["className"]);
 }
 public static string GetTargetClassName <T>(this ParseRelation <T> relation) where T : ParseObject
 {
     return(relation.TargetClassName);
 }
示例#16
0
        private async Task LoadEverything()
        {
            //ScriptManager.RegisterStartupScript(this, this.GetType(), "scrollPanel", "scrollPanel();", true);
            IEnumerable <ParseObject> conversations = await GetConversations();

            DataTable dt = InitConversationTable();

            foreach (ParseObject conv in conversations)
            {
                //ConversationPanel pnl = (ConversationPanel)LoadControl("~/UserControls/ConversationPanel.ascx");
                //string theirNumber = conv.Get<string>("baseUserId1") == UserID ? "2" : "1";
                //ParseObject tempTheirPublicData = conv.Get<ParseObject>("publicUserData" + theirNumber);
                //await tempTheirPublicData.FetchIfNeededAsync();
                //pnl.TheirName = tempTheirPublicData.Get<string>("displayName");
                //pnl.LastMessage = await GetFirstMessageText(conv);
                //pnl.TheirUserID = tempTheirPublicData.ObjectId;
                //pnlConversations.ContentTemplateContainer.Controls.Add(pnl);
                //pnlConversations.Controls.Add(pnl);

                DataRow     dr                  = dt.NewRow();
                string      theirNumber         = conv.Get <string>("baseUserId1") == UserID ? "2" : "1";
                ParseObject tempTheirPublicData = conv.Get <ParseObject>("publicUserData" + theirNumber);
                await tempTheirPublicData.FetchIfNeededAsync();

                dr["TheirName"] = tempTheirPublicData.Get <string>("displayName");
                string lastMessage = await GetFirstMessageText(conv);

                dr["LastMessage"] = lastMessage.Length <= 30 ? lastMessage : lastMessage.Substring(0, 30) + "...";
                dr["TheirUserID"] = tempTheirPublicData.ObjectId;
                ParseFile profilePic = tempTheirPublicData.Get <ParseFile>("profilePic");
                dr["ProfilePicUrl"] = profilePic == null ? "Images/default_prof_pic.png" : profilePic.Url.ToString();
                dt.Rows.Add(dr);
            }
            repConversations.DataSource = dt;
            repConversations.DataBind();
            if (Session["ConversationUserId"] != null)
            {
                RecipientPublicData = await GetStudentPublicData(Session["ConversationUserId"].ToString());

                Conversation = await GetThisConversation(RecipientPublicData.Get <string>("baseUserId"));

                if (Conversation == null)
                {
                }
                else
                {
                    ParseRelation <ParseObject> relation = Conversation.GetRelation <ParseObject>("messages");
                    IEnumerable <ParseObject>   messages = await relation.Query.OrderBy("createdAt").FindAsync();

                    DataTable messageData = InitMessageTable();
                    foreach (ParseObject mes in messages)
                    {
                        DataRow dr = messageData.NewRow();
                        dr["Text"]        = mes.Get <string>("text");
                        dr["WasSentByMe"] = mes.Get <string>("senderBaseUserId") == UserID;
                        dr["SentAt"]      = mes.Get <DateTime>("sentAt").ToString();
                        messageData.Rows.Add(dr);
                    }
                    repMessages.DataSource = messageData;
                    repMessages.DataBind();
                    await RemoveNotificationsForConversation();
                }
                tbType.Enabled  = true;
                btnSend.Enabled = true;
            }
            else
            {
                tbType.Enabled  = false;
                btnSend.Enabled = false;
            }
        }
示例#17
0
        private async void Go_Click(object sender, RoutedEventArgs e)
        {
            //                var query = ParseObject.GetQuery("Person");
            //var query = from person in ParseObject.GetQuery("Person")
            //            where person.Get<string>("objectId") == "S4CpcJ8Yyu"
            //            select person;
//
            //IEnumerable<ParseObject> Parent = await query.FindAsync();


            ParseObject parent = new ParseObject("Person");

            parent["Forename"]     = "Mark";
            parent["Surname"]      = "Wares";
            parent["PersonTypeId"] = 1;

            ParseObject child1 = new ParseObject("Person");

            child1["Forename"]     = "Chloe";
            child1["Surname"]      = "Wares";
            child1["PersonTypeId"] = 2;
            await child1.SaveAsync();

            ParseObject child2 = new ParseObject("Person");

            child2["Forename"]     = "Chloe";
            child2["Surname"]      = "Wares";
            child2["PersonTypeId"] = 2;
            await child2.SaveAsync();

            ParseRelation <ParseObject> relation = parent.GetRelation <ParseObject>("PersonLink");

            relation.Add(child1);
            relation.Add(child2);

            await parent.SaveAsync();



            //    List<Person> children = new List<Person>();
            //    foreach (var parseObject in results)
            //    {
            //        Person p = await GetPersonFromParseObject(parseObject);
            //        children.Add(p);
            //    }


            //// Create the post
            //var myPost = new ParseObject("Post")
            //{
            //    { "title", "I'm Hungry" },
            //    { "content", "Where should we go for lunch?" }
            //};

            //// Create the comment
            //var myComment = new ParseObject("Comment")
            //{
            //    { "content", "Let's do Sushirrito." }
            //};

            //// Add a relation between the Post and Comment
            //myComment["parent"] = myPost;

            //// This will save both myPost and myComment
            //await myComment.SaveAsync();
            //You can also link objects using just their ObjectIds like so:

            //myComment["parent"] = ParseObject.CreateWithoutData("Post", "1zEcyElZ80");
        }