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); }
public static object EncodeRelation(ParseRelation <ParseObject> relation) { return(new Dictionary <string, object> { { "__type", "Relation" }, { "className", relation.TargetClass } }); }
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> { })); }
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; } }
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"]); }
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(); }
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); }
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"]); }
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); } }
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); } }
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); }
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; } }
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"); }