Example #1
0
        public ActionResult Create(QuestionsDetailsViewModel model)
        {
            try
            {
                object exisctingTest = webClient.ExecutePost <object>(new Models.ApiRequest()
                {
                    EndPoint = string.Format("questions"),
                    Request  = new QuestionDto()
                    {
                        Text    = model.Text,
                        Answers = model.Answers.Select(a => new AnswerDto()
                        {
                            IsCorrect = a.IsCorrect,
                            Text      = a.Text
                        }).ToList()
                    }
                });

                return(RedirectToAction("Index"));
            }
            catch
            {
                return(View());
            }
        }
Example #2
0
 public QuestionsAnswersPopupPage(Questions questions, Action <QuestionsAnswers> result, QuestionsAnswers questionsAnswers = null)
 {
     this.questions        = questions;
     this.questionsAnswers = questionsAnswers;
     this.result           = result;
     InitializeComponent();
     BindingContext = new QuestionsDetailsViewModel(questions);
     if (questionsAnswers != null)
     {
         this.Comment.Text = questionsAnswers.Answer;
     }
     this.Comment.Focus();
 }
Example #3
0
        // GET: Questions/Create
        public ActionResult Create()
        {
            QuestionsDetailsViewModel model = new QuestionsDetailsViewModel();

            model.Answers.Add(new AnswerViewModel()
            {
                Text = string.Empty, IsCorrect = false
            });

            ViewBag.Title = "Create";

            return(View(model));
        }
Example #4
0
 public QuestionsAnswersPopupPage(Questions questions, Action <QuestionsAnswers> result, QuestionsAnswers questionsAnswers = null)
 {
     InitializeComponent();
     Xamarin.Forms.PlatformConfiguration.iOSSpecific.Page.SetUseSafeArea(this, true);
     this.questions        = questions;
     this.questionsAnswers = questionsAnswers;
     this.result           = result;
     BindingContext        = new QuestionsDetailsViewModel(questions);
     if (questionsAnswers != null)
     {
         this.Comment.Text = questionsAnswers.Answer;
     }
     this.Comment.Focus();
     ViewModel.IsBusy = false;
 }
Example #5
0
        // GET: Questions/Edit/5
        public ActionResult Edit(int id)
        {
            var question = webClient.ExecuteGet <QuestionDto>(new Models.ApiRequest()
            {
                EndPoint = string.Format("questions/{0}", id)
            });

            QuestionsDetailsViewModel model = new QuestionsDetailsViewModel();

            model.Text    = question.Text;
            model.Answers = question.Answers.Select(a => new AnswerViewModel()
            {
                Text = a.Text, IsCorrect = a.IsCorrect
            }).ToList();

            ViewBag.Title = "Edit";

            return(View("Create", model));
        }
Example #6
0
        public QuestionsDetailsPage(Questions questions)
        {
            this.questions = questions;
            InitializeComponent();
            BindingContext = new QuestionsDetailsViewModel(questions);

            var cancel = new ToolbarItem
            {
                Text    = "分享",
                Command = new Command(() =>
                {
                    DependencyService.Get <IShares>().Shares("https://q.cnblogs.com/q/" + questions.Qid + "/", questions.Title);
                })
            };

            ToolbarItems.Add(cancel);

            if (Device.Android == Device.RuntimePlatform)
            {
                cancel.Icon = "toolbar_share.png";
            }

            this.QuestionsDetailsView.ItemSelected += async delegate
            {
                var answers = QuestionsDetailsView.SelectedItem as QuestionsAnswers;
                if (answers == null)
                {
                    return;
                }

                var answersDetails = new AnswersDetailsPage(answers);
                if (answers.AnswerID > 0)
                {
                    await NavigationService.PushAsync(Navigation, answersDetails);
                }
                this.QuestionsDetailsView.SelectedItem = null;
            };
        }
Example #7
0
        public ActionResult Edit(int id, QuestionsDetailsViewModel model)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    try
                    {
                        var response = webClient.ExecutePut <object>(new Models.ApiRequest()
                        {
                            EndPoint = string.Format("questions/{0}", model.Id),
                            Request  = new QuestionDto()
                            {
                                Text    = model.Text,
                                Answers = model.Answers.Select(a => new AnswerDto()
                                {
                                    IsCorrect = a.IsCorrect, Text = a.Text
                                }).ToList()
                            }
                        });

                        return(RedirectToAction("Index"));
                    }
                    catch (Exception e)
                    {
                        ModelState.AddModelError("generalError", e.Message);

                        return(View(model));
                    }
                }

                return(View(model));
            }
            catch
            {
                return(View(model));
            }
        }
Example #8
0
        public QuestionsDetailsPage(Questions questions)
        {
            InitializeComponent();
            Xamarin.Forms.PlatformConfiguration.iOSSpecific.Page.SetUseSafeArea(this, true);
            this.questions = questions;
            BindingContext = new QuestionsDetailsViewModel(questions);

            if (Device.Android == Device.RuntimePlatform)
            {
                var cancel = new ToolbarItem
                {
                    Text    = "分享",
                    Command = new Command(() =>
                    {
                        DependencyService.Get <IShares>().Shares("https://q.cnblogs.com/q/" + questions.Qid + "/", questions.Title);
                    }),
                    Icon = "toolbar_share.png"
                };
                ToolbarItems.Add(cancel);
            }

            formsWebView.OnContentLoaded += delegate(object sender, EventArgs e)
            {
                RefreshQuestions();
            };

            formsWebView.AddLocalCallback("reload", async delegate(string obj)
            {
                if (formsWebView.LoadStatus == LoadMoreStatus.StausDefault || formsWebView.LoadStatus == LoadMoreStatus.StausError || formsWebView.LoadStatus == LoadMoreStatus.StausFail)
                {
                    var questionsComments = JsonConvert.SerializeObject(await ViewModel.ReloadAnswersAsync());
                    await formsWebView.InjectJavascriptAsync("updateComments(" + questionsComments + ");");
                }
            });
            formsWebView.AddLocalCallback("editItem", delegate(string id)
            {
                var questionsAnswers = ViewModel.QuestionsAnswers.Where(n => n.AnswerID == int.Parse(id)).FirstOrDefault();
                Device.BeginInvokeOnMainThread(async() =>
                {
                    var page = new QuestionsAnswersPopupPage(questions, new Action <QuestionsAnswers>(OnResult), questionsAnswers);
                    await Navigation.PushPopupAsync(page);
                });
            });
            formsWebView.AddLocalCallback("deleteItem", async delegate(string id)
            {
                var result = await ViewModel.DeleteQuestionAnswersAsync(int.Parse(id));
                await formsWebView.InjectJavascriptAsync("deleteComment(" + id + "," + result.ToString().ToLower() + ");");
            });
            formsWebView.AddLocalCallback("itemSelected", delegate(string id)
            {
                var questionsAnswers = ViewModel.QuestionsAnswers.Where(n => n.AnswerID == int.Parse(id)).FirstOrDefault();
                Device.BeginInvokeOnMainThread(async() =>
                {
                    var answersDetails = new AnswersDetailsPage(questionsAnswers);
                    if (questionsAnswers.AnswerID > 0)
                    {
                        await NavigationService.PushAsync(Navigation, answersDetails);
                    }
                });
            });
        }