protected override async Task OnStart()
        {
            if (!this.IsPostBack)
            {
                string studentID = Request.QueryString["StudentId"];
                StudentPublicData = await PublicUserData.GetById(studentID);

                Image1.ImageUrl = StudentPublicData.ProfilePic != null?StudentPublicData.ProfilePic.Url.ToString() : "Images/default_prof_pic.png";

                await PrivateTutorData.Students.FetchAllIfNeededAsync();
            }
            FixButtonVisibility();

            if (Common.ParseContains(PrivateTutorData.Students, StudentPublicData))
            {
                pnlAssignedQuestions.Visible    = true;
                pnlAnalyticsHolder.Visible      = true;
                grdAssignedQuestions.DataSource = await SuggestedQuestion.GetAssignedQuestionsBetweenStudentTutor(StudentPublicData, PublicUserData);

                grdAssignedQuestions.DataBind();
            }
            else
            {
                pnlAssignedQuestions.Visible = false;
                pnlAnalyticsHolder.Visible   = false;
            }
        }
        protected async Task AssignQuestionToStudent(string questionObjectId, string studentObjectId)
        {
            var            query = new ParseQuery <PublicUserData>();
            PublicUserData pud   = await query.GetAsync(studentObjectId);

            //Student student = await pud.Student.FetchIfNeededAsync();
            //PrivateStudentData psd = await student.PrivateStudentData.FetchIfNeededAsync();

            Question          question          = Question.CreateWithoutData <Question>(questionObjectId);
            SuggestedQuestion suggestedQuestion = new SuggestedQuestion();

            suggestedQuestion.Answered          = false;
            suggestedQuestion.Question          = question;
            suggestedQuestion.Response          = null;
            suggestedQuestion.StudentBaseUserId = pud.BaseUserId;
            suggestedQuestion.Tutor             = PublicUserData;
            await suggestedQuestion.SaveAsync();

            //psd.AssignedQuestions.Add(suggestedQuestion);
            //await psd.SaveAsync();

            IDictionary <string, object> parameters = new Dictionary <string, object>
            {
                { "baseUserId", pud.BaseUserId },
                { "suggestedQuestionId", suggestedQuestion.ObjectId }
            };
            await ParseCloud.CallFunctionAsync <string>("assignQuestion", parameters);
        }
        protected async Task AssignQuestionToStudent(string questionObjectId, string studentObjectId)
        {
            var query = new ParseQuery<PublicUserData>();
            PublicUserData pud = await query.GetAsync(studentObjectId);
            //Student student = await pud.Student.FetchIfNeededAsync();
            //PrivateStudentData psd = await student.PrivateStudentData.FetchIfNeededAsync();

            Question question = Question.CreateWithoutData<Question>(questionObjectId);
            SuggestedQuestion suggestedQuestion = new SuggestedQuestion();
            suggestedQuestion.Answered = false;
            suggestedQuestion.Question = question;
            suggestedQuestion.Response = null;
            suggestedQuestion.StudentBaseUserId = pud.BaseUserId;
            suggestedQuestion.Tutor = PublicUserData;
            await suggestedQuestion.SaveAsync();
            //psd.AssignedQuestions.Add(suggestedQuestion);
            //await psd.SaveAsync();

            IDictionary<string, object> parameters = new Dictionary<string, object>
            {
                { "baseUserId", pud.BaseUserId },
                { "suggestedQuestionId", suggestedQuestion.ObjectId}
            };
            await ParseCloud.CallFunctionAsync<string>("assignQuestion", parameters);
        }