private async void ButtonClick(object sender, EventArgs e)
        {
            if (Xamarin.Essentials.Connectivity.NetworkAccess != Xamarin.Essentials.NetworkAccess.Internet)
            {
                Device.BeginInvokeOnMainThread(async() => await DisplayAlert(AppResources.ErrorTitle, AppResources.ErrorNoInternet, "OK"));
                return;
            }
            FrameBtnQuest.IsVisible = false;
            progress.IsVisible      = true;
            if (Settings.Person.Accounts.Count > 0)
            {
                IDResult result = await _server.newApp(Settings.Person.Accounts[0].Ident,
                                                       additionalService.id_RequestType.ToString(),
                                                       "Ваш заказ принят. В ближайшее время сотрудник свяжется с Вами для уточнения деталей\n" +
                                                       additionalService.Description);

                if (result.Error == null)
                {
                    RequestsUpdate requestsUpdate =
                        await _server.GetRequestsUpdates(Settings.UpdateKey, result.ID.ToString());

                    if (requestsUpdate.Error == null)
                    {
                        Settings.UpdateKey = requestsUpdate.NewUpdateKey;
                    }

                    await DisplayAlert(AppResources.AlertSuccess, AppResources.OrderSuccess, "OK");

                    RequestInfo requestInfo = new RequestInfo();
                    requestInfo.ID = result.ID; if (Navigation.NavigationStack.FirstOrDefault(x => x is AppPage) == null)
                    {
                        await Navigation.PushAsync(new AppPage(requestInfo, true));
                    }
                }
                else
                {
                    await DisplayAlert(AppResources.ErrorTitle, result.Error, "OK");
                }
            }
            else
            {
                await DisplayAlert(AppResources.ErrorTitle, AppResources.ErrorConnectcIdent, "OK");
            }
            FrameBtnQuest.IsVisible = true;
            progress.IsVisible      = false;
        }
Beispiel #2
0
        protected async override void OnAppearing()
        {
            base.OnAppearing();

            TokenSource = new CancellationTokenSource();
            Token       = TokenSource.Token;
            RequestsUpdate requestsUpdate =
                await _server.GetRequestsUpdates(Settings.UpdateKey, _requestInfo.ID.ToString());

            if (requestsUpdate.Error == null)
            {
                Settings.UpdateKey = requestsUpdate.NewUpdateKey;
            }
            var UpdateTask = new Task(async() =>
            {
                try
                {
                    var update = await _server.GetRequestsUpdates(Settings.UpdateKey, _requestInfo.ID.ToString());
                    if (update.Error == null)
                    {
                        Settings.UpdateKey = update.NewUpdateKey;
                        if (update.CurrentRequestUpdates != null)
                        {
                            //Settings.DateUniq = "";

                            request = update.CurrentRequestUpdates;
                            foreach (var each in update.CurrentRequestUpdates.Messages)
                            {
                                if (!messages.Contains(each))
                                {
                                    //Device.BeginInvokeOnMainThread(() => messages.Add(each));
                                    Device.BeginInvokeOnMainThread(async() =>
                                    {
                                        addAppMessage(each, messages.Count > 1 ? messages[messages.Count - 2].AuthorName : null);
                                        //var lastChild = baseForApp.Children.LastOrDefault();
                                        ////Device.BeginInvokeOnMainThread(async () => await scrollFroAppMessages.ScrollToAsync(lastChild.X, lastChild.Y + 30, true));
                                        //if (lastChild != null)
                                        //    await scrollFroAppMessages.ScrollToAsync(lastChild.X, lastChild.Y + 30, false);
                                        ////await scrollFroAppMessages.ScrollToAsync(lastChild, ScrollToPosition.End, true);
                                    });
                                }
                            }

                            Device.BeginInvokeOnMainThread(async() =>
                            {
                                var lastChild = baseForApp.Children.LastOrDefault();
                                if (FrameMessage.Height < baseForApp.Height)
                                {
                                    if (lastChild != null)
                                    {
                                        if (baseForApp.Height < lastChild.Y)
                                        {
                                            await scrollFroAppMessages.ScrollToAsync(lastChild, ScrollToPosition.End, false);
                                        }
                                        else
                                        {
                                            await scrollFroAppMessages.ScrollToAsync(lastChild.X, lastChild.Y + 30, false);
                                        }
                                    }
                                }
                            });

                            //Device.BeginInvokeOnMainThread(() => additionalList.ScrollTo(messages[messages.Count - 1], 0, true));
                        }
                    }
                }
                catch (Exception e)
                {
                }
            });

            try
            {
                UpdateTask.Start();
            }
            catch { }
            await Task.Delay(TimeSpan.FromSeconds(1));

            if (Device.RuntimePlatform == "Android")
            {
                return;

                try
                {
                    if (!PermissionAsked)
                    {
                        var camera_perm = await Plugin.Permissions.CrossPermissions.Current.CheckPermissionStatusAsync(Permission.Camera);

                        if (camera_perm != PermissionStatus.Granted)
                        {
                            await CrossPermissions.Current.RequestPermissionsAsync(Permission.Camera, Permission.Storage);
                        }
                    }
                }
                catch
                {
                }
                finally
                {
                    PermissionAsked = true;
                }
            }
        }
Beispiel #3
0
        private async Task RefreshData()
        {
            if (Xamarin.Essentials.Connectivity.NetworkAccess != Xamarin.Essentials.NetworkAccess.Internet)
            {
                Device.BeginInvokeOnMainThread(async() => await DisplayAlert(AppResources.ErrorTitle, AppResources.ErrorNoInternet, "OK"));
                return;
            }
            RequestsUpdate requestsUpdate =
                await _server.GetRequestsUpdates(Settings.UpdateKey, _requestInfo.ID.ToString());

            if (requestsUpdate.Error == null)
            {
                Settings.UpdateKey = requestsUpdate.NewUpdateKey;
                if (requestsUpdate.CurrentRequestUpdates != null)
                {
                    //Settings.DateUniq = "";
                    request = requestsUpdate.CurrentRequestUpdates;
                    foreach (var each in requestsUpdate.CurrentRequestUpdates.Messages)
                    {
                        if (!messages.Contains(each))
                        {
                            Device.BeginInvokeOnMainThread(async() =>
                            {
                                addAppMessage(each, messages.Count > 1 ? messages[messages.Count - 2].AuthorName : null);
                                //await Task.Delay(500);
                                var lastChild = baseForApp.Children.LastOrDefault();

                                //var y = lastChild.Y- scrollFroAppMessages.Y;
                                //var x = lastChild.X;
                                //Device.BeginInvokeOnMainThread(async () => await scrollFroAppMessages.ScrollToAsync(x, y + 30, true));
                                //if (lastChild != null)
                                //    Device.BeginInvokeOnMainThread(async () =>  await scrollFroAppMessages.ScrollToAsync(lastChild.X, lastChild.Y + 30, false));
                            });
                            messages.Add(each);
                        }
                    }
                    // additionalList.ScrollTo(messages[messages.Count - 1], 0, true);


                    //var y = lastChild.Y- scrollFroAppMessages.Y;
                    //var x = lastChild.X;
                    //Device.BeginInvokeOnMainThread(async () => await scrollFroAppMessages.ScrollToAsync(x, y + 30, true));
                    Device.BeginInvokeOnMainThread(async() =>
                    {
                        var lastChild = baseForApp.Children.LastOrDefault();
                        if (FrameMessage.Height < baseForApp.Height)
                        {
                            if (lastChild != null)
                            {
                                if (baseForApp.Height < lastChild.Y)
                                {
                                    await scrollFroAppMessages.ScrollToAsync(lastChild, ScrollToPosition.End, false);
                                }
                                else
                                {
                                    await scrollFroAppMessages.ScrollToAsync(lastChild.X, lastChild.Y + 30, false);
                                }
                            }
                        }
                    });
                    //Device.BeginInvokeOnMainThread(async () => await MethodWithDelayAsync(500));
                    //await MethodWithDelayAsync(500);

                    //await scrollFroAppMessages.ScrollToAsync(lastChild.X, lastChild.Y + 30, true);
                }
            }
            else
            {
                await DisplayAlert(AppResources.ErrorTitle, AppResources.ErrorComments, "OK");
            }

            // additionalList.ScrollTo(messages[messages.Count - 1], 0, true);
        }