예제 #1
0
        public async Task LoadMessagesAsync()
        {
            try
            {
                var messages = await ParseAccess.LoadMessages(conversationId);

                foreach (var message in messages)
                {
                    var isMe = false;
                    if (message.Get <string>("author") == ParseAccess.CurrentUser().ObjectId)
                    {
                        isMe = true;
                    }

                    var newMessage = new UserMessage
                    {
                        ObjectId  = message.ObjectId,
                        Body      = message.Get <string>("body"),
                        IsMe      = isMe,
                        CreatedAt = message.CreatedAt.Value + RestService.TimeDiff
                    };

                    if (!Messages.Contains(newMessage))
                    {
                        Messages.Add(newMessage);
                    }
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex);
            }
        }
예제 #2
0
        public async Task ExecuteGetUserCommandAsync()
        {
            if (IsBusy)
            {
                return;
            }

            ProgressDialogManager.LoadProgressDialog("Loading...");

            try
            {
                IsBusy = true;
                var user = await ParseAccess.GetUser(ParseAccess.CurrentUser().ObjectId);

                UserDetail = new User
                {
                    Username  = user.Get <string>("username"),
                    FirstName = user.Get <string>("firstName"),
                    LastName  = user.Get <string>("lastName")
                };
            }
            catch (Exception e)
            {
                Debug.WriteLine(e);
            }
            finally
            {
                IsBusy = false;
                ProgressDialogManager.DisposeProgressDialog();
            }
        }
        public async Task ExecuteLoadQuestionsCommandAsync(string filter)
        {
            if (IsBusy)
            {
                return;
            }

            ProgressDialogManager.LoadProgressDialog("Loading...");

            try
            {
                IsBusy = true;
                Questions.Clear();
                DateTime now = RestService.GetServerTime();

                followedOppors.Clear();

                try
                {
                    followedOppors.AddRange((await ParseAccess.GetUser(ParseAccess.CurrentUser().ObjectId)).Get <IList <string> >("followedOppors"));
                }
                catch (Exception e)
                {
                    Debug.WriteLine(e);
                }

                IEnumerable <Parse.ParseObject> questions;
                if (filter == "Followed Tasks")
                {
                    questions = await ParseAccess.LoadFollowedOppors(followedOppors);
                }
                else if (filter == "Followed Topics")
                {
                    questions = await ParseAccess.LoadOpporsBasedOnTopics();
                }
                else if (filter == "My Requests")
                {
                    questions = await ParseAccess.LoadMyRequests();
                }
                else
                {
                    questions = await ParseAccess.LoadQuestions();
                }

                foreach (var question in questions)
                {
                    var isFollowed = false;
                    var state      = "Closed";
                    var stateFlag  = question.Get <int>("stateFlag");

                    var topicObjects = question.Get <IList <ParseObject> >("topics");
                    var topics       = new List <string>();
                    foreach (var topic in topicObjects)
                    {
                        topics.Add(topic.Get <string>("topicText"));
                    }

                    if (stateFlag == (int)RequestState.Active)
                    {
                        state = "Active";
                    }
                    else if (stateFlag == (int)RequestState.InProgress)
                    {
                        state = "In Progress";
                    }

                    if (followedOppors.Contains(question.ObjectId))
                    {
                        isFollowed = true;
                    }
                    var q = new Question
                    {
                        ObjectId   = question.ObjectId,
                        Title      = question.Get <string>("title"),
                        Body       = question.Get <string>("body"),
                        TimeAgo    = HelperFunctions.TimeAgo(question.UpdatedAt.Value, now),
                        IsFollowed = isFollowed,
                        State      = state,
                        Topics     = topics
                    };
                    Questions.Add(q);
                }
            }
            catch (Exception e)
            {
                Debug.WriteLine(e);
            }
            finally
            {
                IsBusy = false;
                ProgressDialogManager.DisposeProgressDialog();
            }
        }
예제 #4
0
        public async Task ExecuteLoadUsersCommandAsync(string filter)
        {
            if (IsBusy)
            {
                return;
            }

            ProgressDialogManager.LoadProgressDialog("Loading...");
            try
            {
                IsBusy = true;
                Users.Clear();


                followedUsers.Clear();

                try
                {
                    followedUsers.AddRange((await ParseAccess.GetUser(ParseAccess.CurrentUser().ObjectId)).Get <IList <string> >("followedUsers"));
                }
                catch (Exception e)
                {
                    Debug.WriteLine(e);
                }

                IEnumerable <Parse.ParseObject> users;
                if (filter == "Followed Users")
                {
                    users = await ParseAccess.LoadFollowedUsers(followedUsers);
                }
                else
                {
                    users = await ParseAccess.LoadUsers();
                }

                foreach (var user in users)
                {
                    var isFollowed = false;

                    var topicObjects = user.Get <IList <ParseObject> >("followedTopics");
                    var topics       = new List <string>();
                    foreach (var topic in topicObjects)
                    {
                        topics.Add(topic.Get <string>("topicText"));
                    }
                    if (followedUsers.Contains(user.ObjectId))
                    {
                        isFollowed = true;
                    }
                    var u = new User
                    {
                        Username       = user.Get <string>("username"),
                        FirstName      = user.Get <string>("firstName"),
                        LastName       = user.Get <string>("lastName"),
                        ObjectId       = user.ObjectId,
                        IsFollowed     = isFollowed,
                        FollowedTopics = topics
                    };
                    Users.Add(u);
                }
            }
            catch (Exception e)
            {
                Debug.WriteLine(e);
            }
            finally
            {
                IsBusy = false;
                ProgressDialogManager.DisposeProgressDialog();
            }
        }