예제 #1
0
        public async void OnNavigatedTo(NavigationParameters parameters)
        {
            var fooAllSuccess = true;

            if (Plugin.Connectivity.CrossConnectivity.Current.IsConnected == false)
            {
                fooAllSuccess = false;
            }
            else
            {
                LoadingMessage = "正在更新 請假單分類清單 中";
                var fooLeaveCategoryRepository = new LeaveCategoryRepository();
                APIResult = await fooLeaveCategoryRepository.GetAsync();

                if (APIResult.Success == false)
                {
                    using (Acr.UserDialogs.UserDialogs.Instance.Toast(
                               $"無法進行 更新 請假單分類清單 中 ({APIResult.Message})", TimeSpan.FromMilliseconds(1500)))
                    {
                        await Task.Delay(2000);
                    }
                    fooAllSuccess = false;
                }
                else
                {
                    LoadingMessage = "正在更新 專案清單 中";
                    var fooProjectRepository = new ProjectRepository();
                    APIResult = await fooProjectRepository.GetAsync();

                    if (APIResult.Success == false)
                    {
                        using (Acr.UserDialogs.UserDialogs.Instance.Toast(
                                   $"無法進行 更新 專案清單 中({APIResult.Message})", TimeSpan.FromMilliseconds(1500)))
                        {
                            await Task.Delay(2000);
                        }
                        fooAllSuccess = false;
                    }
                    else
                    {
                        LoadingMessage = "正在更新 緊急連絡電話清單 中";
                        var fooOnCallPhoneRepository = new OnCallPhoneRepository();
                        APIResult = await fooOnCallPhoneRepository.GetAsync();

                        if (APIResult.Success == false)
                        {
                            using (Acr.UserDialogs.UserDialogs.Instance.Toast(
                                       $"無法進行 更新 緊急連絡電話清單 中({APIResult.Message})", TimeSpan.FromMilliseconds(1500)))
                            {
                                await Task.Delay(2000);
                            }
                            fooAllSuccess = false;
                        }
                    }
                }
            }

            if (fooAllSuccess == true)
            {
                LoadingMessage = "系統資料更新完成";
                var fooSystemStatusRepository = new SystemStatusRepository();
                await fooSystemStatusRepository.ReadAsync();

                if (string.IsNullOrEmpty(fooSystemStatusRepository.Item.AccessToken))
                {
                    await _navigationService.NavigateAsync("xf:///LoginPage");
                }
                else
                {
                    await _navigationService.NavigateAsync("xf:///MDPage/NaviPage/AboutPage");
                }
            }
            else
            {
                var config = new Acr.UserDialogs.ConfirmConfig()
                {
                    Title      = "警告",
                    Message    = "可能因為網路問題,無法進行系統資料更新,您確定要繼續執行嗎? (強制繼續執行 App,但有可能造成 App 不正常運作)",
                    OkText     = "確定",
                    CancelText = "停止"
                };
                await Task.Delay(1000);

                var fooConfirmResult =
                    await Acr.UserDialogs.UserDialogs.Instance.ConfirmAsync(config);

                if (fooConfirmResult == false)
                {
                    LoadingMessage = "請強制關閉 App,檢查網路是否可用,並且重新啟動 App";
                    return;
                }
                else
                {
                    LoadingMessage = "強制繼續執行 App";
                }
            }

            // 切換到首頁或者登入頁面
        }
예제 #2
0
        public async void OnNavigatedTo(INavigationParameters parameters)
        {
            var fooAllSuccess = true;

            if (Plugin.Connectivity.CrossConnectivity.Current.IsConnected == false)
            {
                fooAllSuccess = false;
            }
            else
            {
                //LoadingMessage = "正在更新 員工檔/部門檔清單 中";
                //var repoDepartment = new DepartmentRepository();
                //APIResult = await repoDepartment.GetAsync();
                //if (APIResult.Success == false)
                //{
                //    using (Acr.UserDialogs.UserDialogs.Instance.Toast($"無法進行更新[部門檔]清單 中 ({APIResult.Message})", TimeSpan.FromMilliseconds(1500)))
                //    {
                //        await Task.Delay(2000);
                //    }
                //    fooAllSuccess = false;
                //}
                //else
                //{
                //    var repoEmployee = new EmployeeRepository();
                //    APIResult = await repoEmployee.GetAsync();
                //    if (APIResult.Success == false)
                //    {
                //        using (Acr.UserDialogs.UserDialogs.Instance.Toast($"無法進行更新[員工檔]清單 中 ({APIResult.Message})", TimeSpan.FromMilliseconds(1500)))
                //        {
                //            await Task.Delay(2000);
                //        }
                //        fooAllSuccess = false;
                //    }
                //}
            }

            if (fooAllSuccess == true)
            {
                LoadingMessage = "系統資料更新完成";
                var fooSystemStatusRepository = new SystemStatusRepository();
                await fooSystemStatusRepository.ReadAsync();

                if (string.IsNullOrEmpty(fooSystemStatusRepository.Item.AccessToken))
                {
                    await _navigationService.NavigateAsync("xf:///LoginPage");
                }
                else
                {
                    await _navigationService.NavigateAsync("xf:///MDPage/NaviPage/AboutPage");
                }
            }
            else
            {
                var config = new Acr.UserDialogs.ConfirmConfig()
                {
                    Title      = "警告",
                    Message    = "可能因為網路問題,無法進行系統資料更新,您確定要繼續執行嗎? (強制繼續執行 App,但有可能造成 App 不正常運作)",
                    OkText     = "確定",
                    CancelText = "停止"
                };
                await Task.Delay(1000);

                var fooConfirmResult =
                    await Acr.UserDialogs.UserDialogs.Instance.ConfirmAsync(config);

                if (fooConfirmResult == false)
                {
                    LoadingMessage = "請強制關閉 App,檢查網路是否可用,並且重新啟動 App";
                    return;
                }
                else
                {
                    LoadingMessage = "強制繼續執行 App";
                }
            }
            // 切換到首頁或者登入頁面
        }
        public async Task SalvaEnquete()
        {
            var confirmConfig = new Acr.UserDialogs.ConfirmConfig();
            confirmConfig.CancelText = "Cancelar";
            confirmConfig.OkText = "Finalizar";
            confirmConfig.Message = "Tem certeza de que deseja criar esta enquete?";

            if (await Acr.UserDialogs.UserDialogs.Instance.ConfirmAsync(confirmConfig))
            {
                try
                {
                    this.Pergunta.Respostas = new List<Resposta>();
                    this.Pergunta.Respostas = this.Respostas;

                    this.Enquete.Pergunta = new Pergunta();
                    this.Enquete.Pergunta = this.Pergunta;
                    this.Enquete.Tipo = EnumTipoEnquete.Interesse;
                    this.Enquete.Titulo = this.Pergunta.TextoPergunta;
                    this.Enquete.Status = EnumStatusEnquete.Publicada;

                    var dbUsuario = new Repositorio<Usuario>();
                    var usuarioLogado = (await dbUsuario.RetornarTodos()).First();

                    this.Enquete.UsuarioId = usuarioLogado.Id;
                    this.Enquete.ServerEnqueteId = -1;
                    this.Enquete.propria = true;
                    this.Enquete.AtivaNoFront = true;

                    List<Resposta> gravou = new List<Resposta>();
                    var db = new Repositorio<Enquete>();

                    Acr.UserDialogs.UserDialogs.Instance.ShowLoading("Enviando...");
                    if (await db.Inserir(this.Enquete))
                    {
                        var result = await this.service.CadastrarNovaEnquete(this.Enquete);

                        if (result != null)
                        {
                            try
                            {
                                // Atualizando dados locais com o ID da pergunta no servidor
                                var dbEnquete = new Repositorio<Enquete>();
                                this.Enquete.PerguntaServerId = result.PerguntaId;
                                this.Enquete.Pergunta.PerguntaServerId = result.PerguntaId;
                                this.Enquete.ServerEnqueteId = result.EnqueteId;
							
                                foreach (var item in Respostas)
                                {
                                    item.PerguntaServerId = result.PerguntaId;
                                }
							
                                //await dbEnquete.Atualizar(Enquete);
                                // Fim da Atualização

                                gravou = await this.service.CadastrarRespostasDaPergunta(this.Pergunta.Respostas);
                                var dbResposta = new Repositorio<Resposta>();

                                if (gravou != null && gravou.Any())
                                {
                                    foreach (var resp in gravou)
                                    {
                                        var _r = this.Enquete.Pergunta.Respostas.First(x => x.PerguntaServerId == resp.PerguntaServerId
                                                     && x.TextoResposta == resp.TextoResposta);
                                        _r.RespostaServerId = resp.RespostaServerId;
                                        _r.PerguntaServerId = resp.PerguntaServerId;

                                        await dbResposta.Atualizar(_r);
                                        await dbEnquete.Atualizar(Enquete);
                                    }
                                }

                            }
                            catch (Exception ex)
                            {
                                Insights.Report(ex);
                                throw ex;
                            }
                        }

                        Acr.UserDialogs.UserDialogs.Instance.HideLoading();
                        if (gravou != null && gravou.Any())
                        {
                            await this.Navigation.PushModalAsync(new MainPage());
                        }
                        else
                            await Acr.UserDialogs.UserDialogs.Instance.AlertAsync(String.Empty, AppResources.TextoMsgCadastroErroEnquete, "OK");
                    }
                    else
                        await Acr.UserDialogs.UserDialogs.Instance.AlertAsync(String.Empty, AppResources.TextoMsgCadastroErroEnquete, "OK");

                }
                catch (Exception ex)
                {
                    Insights.Report(ex);
                    throw ex;
                }
            }
        }
예제 #4
0
        protected async override void OnAppearing()
        {
            try
            {
                base.OnAppearing();
                this.model = App.Container.Resolve<PerguntaViewModel>();
                this.BindingContext = model;
				
                model.AdicionarPergunta(await model.GetPerguntaPorId(perguntaID));
                this.pergunta = model.Pergunta;
                this.model.ConfigurarNavigation(this.Navigation);

                imgExcluir = new Image
                {
                    Source = ImageSource.FromResource(RetornaCaminhoImagem.GetImagemCaminho("waste.png")),
                    HorizontalOptions = LayoutOptions.EndAndExpand,
                    HeightRequest = 40,
                    WidthRequest = 44,
                    IsVisible = ehInteresse
                };
                var imgExcluir_Click = new TapGestureRecognizer();
                imgExcluir_Click.Tapped += async (sender, e) =>
                {
                    var confirmConfig = new Acr.UserDialogs.ConfirmConfig();
                    confirmConfig.CancelText = "Cancelar";
                    confirmConfig.OkText = "OK";
                    confirmConfig.Message = "Tem certeza que deseja excluir esta enquete?";

                    var canRemove = await Acr.UserDialogs.UserDialogs.Instance.ConfirmAsync(confirmConfig);

                    if (canRemove)
                    {
                        var dbEnquete = new Repositorio<Enquete>();
                        var enquete = await dbEnquete.RetornarPorId(enqueteId);
                        enquete.AtivaNoFront = false;
                        await dbEnquete.Atualizar(enquete);
                        await this.Navigation.PushModalAsync(new MainPage(true));
                    }
                };
                imgExcluir.GestureRecognizers.Add(imgExcluir_Click);

                var lblUsuarioCriador = new Label
                {
                    Text = String.IsNullOrEmpty(UsuarioCriador) ? "Você" : UsuarioCriador,
                    IsVisible = !String.IsNullOrEmpty(UsuarioCriador) && ehInteresse,
                    FontFamily = Device.OnPlatform(
                        iOS: "Helvetica",
                        Android: "Roboto",
                        WinPhone: "Segoe"
                    ),
                    FontSize = 12,
                    FontAttributes = FontAttributes.Bold,
                    HorizontalOptions = LayoutOptions.EndAndExpand
                };
				
                var lblTitulo = new Label
                {
                    FontSize = 28,
                    FontFamily = Device.OnPlatform(
                        iOS: "Helvetica",
                        Android: "Roboto",
                        WinPhone: "Segoe"
                    ),
                    FontAttributes = FontAttributes.Bold,
                    HorizontalOptions = LayoutOptions.Center,
                    VerticalOptions = LayoutOptions.Center,
                    YAlign = TextAlignment.Center,
                    XAlign = TextAlignment.Center,
                    LineBreakMode = LineBreakMode.WordWrap
                };
                lblTitulo.SetBinding<PerguntaViewModel>(Label.TextProperty, x => x.Pergunta.TextoPergunta);
				
                var Imagem = new Image
                {
                    VerticalOptions = LayoutOptions.Center,
                    HorizontalOptions = LayoutOptions.Center,
                    Aspect = Aspect.AspectFit,
                };
				
                if (!String.IsNullOrEmpty(this.imagem))
                    Imagem.Source = ImageSource.FromFile(DependencyService.Get<ISaveAndLoadFile>().GetImage(this.imagem));
				
                if (!String.IsNullOrEmpty(this.urlVideo))
                {
                    if (Device.OS == TargetPlatform.iOS)
                    {
                        webView = new WebView();
                        var htmlSource = new HtmlWebViewSource();
                        htmlSource.Html = BuildEmbedUrl(this.urlVideo);
                        webView.Source = htmlSource;
                        webView.HeightRequest = 200;
                        webView.WidthRequest = 210;
                        webView.VerticalOptions = LayoutOptions.Center;
                        webView.HorizontalOptions = LayoutOptions.Center;
                    }
                    else
                    {
                        str = new Uri(this.urlVideo).Segments;
                        App.UrlVideo = this.urlVideo;
				
                        imgThumbVideo = new Image
                        {
                            Source = ImageSource.FromFile(DependencyService.Get<ISaveAndLoadFile>().GetImage(String.Concat(str[2], ".jpg"))),
                            HeightRequest = 200,
                            WidthRequest = 100
                        };
				
                        var imgThumbVideo_Click = new TapGestureRecognizer();
                        imgThumbVideo_Click.Tapped += (object sender, EventArgs e) => this.Navigation.PushModalAsync(new VideoPage()); //DependencyService.Get<IYoutubePlayer> ().PlayVideo (this.urlVideo);
                        imgThumbVideo.GestureRecognizers.Add(imgThumbVideo_Click);
                    }
                }
					
                var listaRespostas = new ListaRespostasView(this.pergunta.Respostas);
				
                MessagingCenter.Subscribe<ListaRespostasView,List<Resposta>>(this, "Respondido", async (sender, respostas) =>
                    {
                        this.model.AdicionaRespostasRespondidas(respostas, temVoucher);
                    });

                MessagingCenter.Subscribe<ListaRespostasEnqueteRespondidaViewCell,string>(this, "MostraImagem", async (sender, img) =>
                    {
                        this.Navigation.PushModalAsync(new ExibeImagemResposta(img));
                    });

                MessagingCenter.Subscribe<ListaRespostasViewCell,string>(this, "MostraImagem", async (sender, img) =>
                    {
                        this.Navigation.PushModalAsync(new ExibeImagemResposta(img));
                    });
				
                StackLayout perguntaLayout;
				
                if (!String.IsNullOrEmpty(this.urlVideo))
                {
                    if (Device.OS == TargetPlatform.Android)
                    {
                        perguntaLayout = new StackLayout
                        {
                            HeightRequest = Acr.DeviceInfo.DeviceInfo.Hardware.ScreenHeight * 2,
                            HorizontalOptions = LayoutOptions.Start,
                            Children = { lblUsuarioCriador, imgExcluir, imgThumbVideo, listaRespostas },
                            Padding = 20
                        };
                    }
                    else
                        perguntaLayout = new StackLayout
                        {
                            HeightRequest = Acr.DeviceInfo.DeviceInfo.Hardware.ScreenHeight * 2,
                            HorizontalOptions = LayoutOptions.Start,
                            Children = { lblUsuarioCriador, imgExcluir, webView, listaRespostas },
                            Padding = 20
                        };
						
                }
                else if (!String.IsNullOrEmpty(this.imagem))
                {
                    perguntaLayout = new StackLayout
                    {
                        HeightRequest = Acr.DeviceInfo.DeviceInfo.Hardware.ScreenHeight * 2,
                        HorizontalOptions = LayoutOptions.Start,
                        Children = { lblUsuarioCriador, imgExcluir, Imagem, listaRespostas },
                        Padding = 20
                    };
                }
                else
                {
                    perguntaLayout = new StackLayout
                    {
                        HeightRequest = Acr.DeviceInfo.DeviceInfo.Hardware.ScreenHeight * 2,
                        HorizontalOptions = LayoutOptions.Start,
                        Children = { lblUsuarioCriador, imgExcluir, listaRespostas },
                        Padding = 20
                    };
                }
				
                btnResponder.SetBinding(Button.CommandProperty, "btnGravar_Click");
				
                this.mainLayout.Children.Add(lblTitulo);
                this.mainLayout.Children.Add(perguntaLayout);
                this.mainLayout.Children.Add(btnResponder);
            }
            catch (Exception ex)
            {
                Insights.Report(ex);
            }
        }