public async Task <string> PostQuestion(mQuestion question)//server error
        {
            try
            {
                var Questioncreds = Newtonsoft.Json.JsonConvert.SerializeObject(question);

                HttpContent ItemContent = new StringContent(Questioncreds, Encoding.UTF8, "application/json");

                using (var client = new HttpClient())
                {
                    HttpResponseMessage response = await client.PostAsync(Keys.Url_Main + "item-question/post", ItemContent);

                    using (HttpContent spawn = response.Content)
                    {
                        string content = await spawn.ReadAsStringAsync();

                        mServerCallback callback = Newtonsoft.Json.JsonConvert.DeserializeObject <mServerCallback>(content);

                        if (callback.Status == "true")
                        {
                            return("true");
                        }

                        DialogService.ShowError(callback.Mess);
                        return(null);
                    }
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine(Keys.TAG + ex);
                return(Strings.HttpFailed);
            }
        }
        public async Task NotifyAction(mNotify item)
        {
            if (item.Why == Keys.NotifyWhys[1])// new-question
            {
                mQuestion question = await QuestionService.Instance.FetchQuestion(item.Objecter);

                if (question == null || question.Answer != Strings.No_Answer || QuestionAnswered)
                {
                    return;
                }

                var result = await DialogService.DisplayAlert(Strings.Answer, Strings.Close, Strings.Answer_Question, question.Question);

                if (!result)
                {
                    return;
                }

                var answer = await DialogService.ShowInputPrompt(Strings.Answer, Strings.Close, Strings.Answer_Question, "Q: " + question.Question, "", Acr.UserDialogs.InputType.Default);

                if (string.IsNullOrEmpty(answer))
                {
                    return;
                }

                AnswerQuestion(answer, question);
            }
        }
        public async void UpdateAnswer(mQuestion question)
        {
            if (IsBusy || question.Answer_By != AccountService.Instance.Current_Account.Email)
            {
                return;
            }

            var result = await DialogService.ShowInputPrompt("Update", "Cancel", "Update Answer", "", question.Answer, InputType.Default);

            if (string.IsNullOrEmpty(result))
            {
                return;
            }

            DialogService.ShowLoading();


            try
            {
                var updatedQuestion = new mQuestion()
                {
                    Id = question.Id, Answer = result
                };
                var callback = await QuestionService.Instance.EditAnswer(updatedQuestion);

                DialogService.HideLoading();

                if (callback == null)
                {
                    return;
                }

                if (callback == "true")
                {
                    DialogService.ShowToast(Strings.QuestionUpdated);

                    for (var i = 0; i < QuestionlistRev.Count; i++)
                    {
                        if (QuestionlistRev[i] == question)
                        {
                            Questionlist[i].Question = result;//not working
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine(Keys.TAG + ex);
                DialogService.ShowError(Strings.SomethingWrong);
                Crashes.TrackError(ex);
            }
        }
        public async void AnswerQuestion(mQuestion question)
        {
            if (IsBusy || Owner != AccountService.Instance.Current_Account.Email)
            {
                return;
            }

            var result = await DialogService.ShowInputPrompt("Answer", "Cancel", "Answer Question", question.Question, "", InputType.Default);

            if (string.IsNullOrEmpty(result))
            {
                return;
            }

            DialogService.ShowLoading();

            try
            {
                mQuestion newAnswer = new mQuestion()
                {
                    Answer = result, Id = question.Id, Answer_By = AccountService.Instance.Current_Account.Email, ProductId = question.ProductId
                };

                var callback = await QuestionService.Instance.AnswerQuestion(newAnswer);

                DialogService.HideLoading();

                if (result == null)
                {
                    return;
                }

                if (callback == "true")
                {
                    DialogService.ShowToast(Strings.QuestionAnswered);

                    for (var i = 0; i < Questionlist.Count; i++)
                    {
                        if (Questionlist[i] == question)
                        {
                            Questionlist[i].Answer = result;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine(Keys.TAG + ex);
                Crashes.TrackError(ex);
            }
        }
        public async void AskQuestion()
        {
            if (AccountService.Instance.Current_Account == null)
            {
                AccountService.Instance.autho(null, "Dismiss");
                return;
            }

            if (IsBusy || Owner == AccountService.Instance.Current_Account.Email)
            {
                return;
            }

            var result = await DialogService.ShowInputPrompt("Ask", "Cancel", "Ask Question", "", "", InputType.Default);

            if (string.IsNullOrEmpty(result))
            {
                return;
            }

            DialogService.ShowLoading();

            try
            {
                mQuestion newQuestion = new mQuestion()
                {
                    Question = result, ProductId = Itemid, Asked_By = AccountService.Instance.Current_Account.Email, IsItem = "True", Displayname = AccountService.Instance.Current_Account.Displayname
                };

                var callback = await QuestionService.Instance.PostQuestion(newQuestion);

                DialogService.HideLoading();

                if (result == null)
                {
                    return;
                }

                if (callback == "true")
                {
                    DialogService.ShowToast("Question Asked");
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine(Keys.TAG + ex);
                Crashes.TrackError(ex);
            }
        }
        public async Task <mQuestion> FetchQuestion(string id)
        {
            try
            {
                var httpClient = new HttpClient();

                var response = await httpClient.GetAsync(Keys.Url_Main + "item-question/question/" + id);

                response.EnsureSuccessStatusCode();

                string content = await response.Content.ReadAsStringAsync();

                mServerCallback callback = Newtonsoft.Json.JsonConvert.DeserializeObject <mServerCallback>(content);

                if (callback.Status == "true")
                {
                    mQuestion newitems = new mQuestion();
                    newitems = Newtonsoft.Json.JsonConvert.DeserializeObject <mQuestion>(callback.Data.ToString());
                    if (newitems == null)
                    {
                        return(null);
                    }

                    if (newitems.Answer == null)
                    {
                        newitems.Answer = "*No Answer Yet*";
                    }

                    return(newitems);
                }
                else
                {
                    DialogService.ShowError(callback.Mess);
                    return(null);
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine(Keys.TAG + ex);
                DialogService.ShowErrorToast(Strings.HttpFailed);
                return(null);
            }
        }
        private async void AnswerQuestion(string answer, mQuestion question)
        {
            DialogService.ShowLoading();

            mQuestion newAnswer = new mQuestion()
            {
                Answer = answer, Id = question.Id, Answer_By = AccountService.Instance.Current_Account.Email, ProductId = question.ProductId
            };

            var callback = await QuestionService.Instance.AnswerQuestion(newAnswer);

            DialogService.HideLoading();

            if (callback == "true")
            {
                DialogService.ShowToast(Strings.Answer_Question);
                QuestionAnswered = true;
            }
        }
Exemple #8
0
        private async void ListView_ItemSelected(object sender, SelectedItemChangedEventArgs e)
        {
            var item = e.SelectedItem as mNotify;

            if (item != null)
            {
                if (item.Why == Keys.NotifyWhys[9])//rate
                {
                    DialogService.ShowLoading("Please wait");
                    mOrder order = await OrderService.Instance.FetchOrder(item.Objecter);

                    DialogService.HideLoading();

                    if (order == null)
                    {
                        return;
                    }

                    await Navigation.PushAsync(new RateList(order));
                }
                else if (item.Type == Keys.NotifyTypes[2]) //order
                {
                    DialogService.ShowLoading("Please wait");
                    mOrder order = await OrderService.Instance.FetchOrder(item.Objecter);

                    DialogService.HideLoading();

                    if (order == null)
                    {
                        return;
                    }

                    await Navigation.PushAsync(new OrderDetail(order));
                }
                else if (item.Why == Keys.NotifyWhys[2])//answer-question
                {
                    mQuestion question2 = await QuestionService.Instance.FetchQuestion(item.Objecter);

                    var response = await DialogService.DisplayAlert("View item", "Dismiss", "Q:" + question2.Question, "A:" + question2.Answer);

                    listView.SelectedItem = null;
                    if (!response)
                    {
                        return;
                    }

                    DialogService.ShowLoading("Relocating");
                    if (question2.IsItem == "True")
                    {
                        var Titem = await ItemService.Instance.FetchItem(question2.ProductId);

                        DialogService.HideLoading();

                        await Navigation.PushAsync(new ItemView(Titem));
                    }
                    else
                    {
                        var Tproduct = await ProductService.Instance.FetchProduct(question2.ProductId);

                        DialogService.HideLoading();

                        await Navigation.PushAsync(new ProductView(Tproduct));
                    }
                }
                else
                {
                    viewModel.NotifyAction(item);
                }
            }

            listView.SelectedItem = null;
        }