private async void GetAllUsers() { var query = ParseObject.GetQuery("Usr").WhereNotEqualTo("objectId", "toto"); IEnumerable<ParseObject> results = await query.FindAsync(); foreach (ParseObject item in results) { User u = new User() { Id = item.ObjectId, Name = item.Get<string>("Username"), NbrTrailsCluster0 = item.Get<int>("Cluster0"), NbrTrailsCluster1 = item.Get<int>("Cluster1"), NbrTrailsCluster2 = item.Get<int>("Cluster2"), PhoneNumber = item.Get<string>("Phone"), }; u.nbTrails = u.NbrTrailsCluster0 + u.NbrTrailsCluster1 + u.NbrTrailsCluster2; if (u.Name == username) { userConnected = u; } else { this.users.Add(u); } } foreach (User user in this.users) { if (CompareUsers(this.userConnected, user)) { this.similarUsers.Add(user); } } int i = 0; foreach (User usr in this.similarUsers) { txtSimilar.Text += i + "- " + usr.Name + " Tel. " + usr.PhoneNumber + " \n"; } }
private bool CompareUsers(User connectedUser, User otherUser) { double nbMargin = connectedUser.nbTrails * 0.05; // 5% de XP if (Math.Abs(connectedUser.nbTrails - otherUser.nbTrails) > nbMargin) // Not Equal Bc. XP diffrent { return false; } return CompareUsersTrailFrq(connectedUser, otherUser); }
private bool CompareUsersTrailFrq(User connectedUser, User otherUser) { float frqMargin = 0.05f; float connectedfrq0, connectedfrq1, connectedfrq2; float frq0, frq1, frq2; connectedfrq0 = connectedUser.NbrTrailsCluster0 / connectedUser.nbTrails; connectedfrq1 = connectedUser.NbrTrailsCluster1 / connectedUser.nbTrails; connectedfrq2 = connectedUser.NbrTrailsCluster2 / connectedUser.nbTrails; frq0 = otherUser.NbrTrailsCluster0 / otherUser.nbTrails; frq1 = otherUser.NbrTrailsCluster1 / otherUser.nbTrails; frq2 = otherUser.NbrTrailsCluster2 / otherUser.nbTrails; if (Math.Abs(connectedfrq0 - frq0) > frqMargin) { return false; } if (Math.Abs(connectedfrq1 - frq1) > frqMargin) { return false; } if (Math.Abs(connectedfrq2 - frq2) > frqMargin) { return false; } return true; }