public bool InserirPessoa(Pessoa pessoa)
 {
     return this.repositorio.InserirPessoa(pessoa);
 }
        public bool SalvarNovaPessoa(Pessoa pessoa)
        {
            if (pessoa != null)
                return this.repositorio.InserirPessoa(pessoa);

            return false;
        }
        private void TrataClique()
        {
            this.pessoa = new Pessoa
            {
                Nome = this.txtNome.Text,
                Email = this.txtEmail.Text,
                Descricao = this.txtBio.Text,
                Distancia = Convert.ToDecimal(new Random().Next()),
                Offline = true,
                Online = false,
                Rating = Convert.ToDecimal(new Random().Next()),
                Telefone = this.txtTelefone.Text,
                NomeImagem = "Unknow.gif"
            };

            if (this.model.SalvarNovaPessoa(pessoa))
            {
                var pagina = Activator.CreateInstance<ListaPessoasPage>();
                this.Navigation.PushModalAsync(pagina);

                Device.StartTimer(TimeSpan.FromSeconds(1), () =>
                    {
                        Acr.UserDialogs.UserDialogs.Instance.Alert("Pessoa salva com sucesso");
                        return false;
                    });
            }
            else
                Acr.UserDialogs.UserDialogs.Instance.Alert("Erro ao salvar pessoa");
        }
        public void CargaInicial()
        {
            if (!this.repositorio.ExistemPessoas())
            {
                Acr.UserDialogs.UserDialogs.Instance.ShowLoading("Carregando", Acr.UserDialogs.MaskType.Clear);

                var rodrigo = new Pessoa
                {
                    Nome = "Rodrigo Amaro",
                    Distancia = 1.5m,
                    Email = "*****@*****.**",
                    NomeImagem = "rodrigo.jpg",
                    Offline = false,
                    Online = true,
                    Rating = 5.5m,
                    Telefone = "(21) 97551-9377",
                    Descricao = "Podemos já vislumbrar o modo pelo qual a estrutura atual da organização prepara-nos para enfrentar situações atípicas decorrentes do remanejamento dos quadros funcionais."
                };

                var luis = new Pessoa
                {
                    Nome = "Guilherme Rocha Rio",
                    Distancia = 35.5m,
                    Email = "*****@*****.**",
                    NomeImagem = "luis.jpg",
                    Offline = false,
                    Online = true,
                    Rating = 7.5m,
                    Telefone = "(21) 97941-8822",
                    Descricao = "No entanto, não podemos esquecer que a constante divulgação das informações ainda não demonstrou convincentemente que vai participar na mudança dos métodos utilizados na avaliação de resultados."
                };

                var natasha = new Pessoa
                {
                    Nome = "Natasha Moura",
                    Distancia = 12.5m,
                    Email = "*****@*****.**",
                    NomeImagem = "natasha.jpg",
                    Offline = true,
                    Online = false,
                    Rating = 9.5m,
                    Telefone = "(21) 98849-7283",
                    Descricao = "Não obstante, a adoção de políticas descentralizadoras agrega valor ao estabelecimento do investimento em reciclagem técnica."
                };

                var listaPessoas = new List<Pessoa>();
                listaPessoas.Add(rodrigo);
                listaPessoas.Add(luis);
                listaPessoas.Add(natasha);

                this.repositorio.InserirPessoas(listaPessoas);

                Acr.UserDialogs.UserDialogs.Instance.HideLoading();

                var pagina = Activator.CreateInstance<ListaPessoasPage>();
                this.Navigation.PushModalAsync(pagina);
            }
            else
            {
                var pagina = Activator.CreateInstance<ListaPessoasPage>();
                this.Navigation.PushModalAsync(pagina);
            }
        }
        public PessoaDetalhePage(Pessoa pessoa)
        {
            this.BackgroundColor = Color.White;
            this.pessoa = pessoa;

            this.backgroundImage = new Image
            {
                Source = ImageSource.FromResource(Constants.RetornarCaminhoParaImagens("backgroudColors.jpg")),
                Aspect = Aspect.AspectFill,
                IsOpaque = true,
                Opacity = 0.8
            };

            if (Device.OS == TargetPlatform.Android)
            {
                this.backgroundCurveEffect = new Image
                {
                    Aspect = Aspect.AspectFill,
                    Source = ImageSource.FromResource(Constants.RetornarCaminhoParaImagens("dome_Android.png"))
                };
            }
            else if (Device.OS == TargetPlatform.iOS)
            {
                this.backgroundCurveEffect = new Image
                {
                    Aspect = Aspect.Fill,
                    Source = ImageSource.FromResource(Constants.RetornarCaminhoParaImagens("dome.png"))
                };
            }

            this.fotoPessoa = new CircleImage
            {
                Source = this.pessoa.ImagemSource,
                BorderColor = AppColors.BrandColor(),
                BorderThickness = 2,
                HeightRequest = 50,
                WidthRequest = 50,
                Aspect = Aspect.AspectFill,
                HorizontalOptions = LayoutOptions.Center,
                VerticalOptions = LayoutOptions.Center,
            };

            this.messageImage = new Image
            {
                Source = ImageSource.FromResource(Constants.RetornarCaminhoParaImagens("SMS-32.png"))
            };
            var messageClick = new TapGestureRecognizer();
            messageClick.Tapped += async (sender, e) =>
            {
                App.nroParaEnviarSMS = this.pessoa.Telefone;
                App.textoParaEnviarSMS = String.Format("Olá {0}", this.pessoa.Nome);

                var _pagina = Activator.CreateInstance<SMSPage>();
                await this.Navigation.PushModalAsync(_pagina);
            };
            this.messageImage.GestureRecognizers.Add(messageClick);

            this.callImage = new Image
            {
                Source = ImageSource.FromResource(Constants.RetornarCaminhoParaImagens("Phone-32.png"))
            };
            var callClick = new TapGestureRecognizer();
            callClick.Tapped += async (sender, e) =>
            {
                App.nroTelefoneParaLigar = this.pessoa.Telefone;

                var _pagina = Activator.CreateInstance<CallPage>();
                await this.Navigation.PushModalAsync(_pagina);
            };
            this.callImage.GestureRecognizers.Add(callClick);

            this.detailContent = new PessoaDetailsContent(this.pessoa.Nome, this.pessoa.Email, this.pessoa.Descricao);

            this.btnVoltar = new Button
            {
                BorderColor = AppColors.BrandColor(),
                BorderRadius = 6,
                BorderWidth = 0.5,
                Text = "Voltar",
                TextColor = Color.White,
                BackgroundColor = AppColors.BrandColor(),
                VerticalOptions = LayoutOptions.FillAndExpand,
                WidthRequest = 110
            };
            btnVoltar.Clicked += async (sender, e) =>
            {

                if (App.Navigation != null)
                {
                    var pagina = Activator.CreateInstance<ListaPessoasPage>();
                    await this.Navigation.PushModalAsync(pagina);
                }
                else
                    await this.Navigation.PopModalAsync();
            };

            var absLayout = new AbsoluteLayout{ HeightRequest = 100 };

            AbsoluteLayout.SetLayoutFlags(backgroundImage, AbsoluteLayoutFlags.All);
            AbsoluteLayout.SetLayoutBounds(backgroundImage, new Rectangle(0, 0, 1, 0.5));

            AbsoluteLayout.SetLayoutFlags(backgroundCurveEffect, AbsoluteLayoutFlags.YProportional);
            AbsoluteLayout.SetLayoutBounds(backgroundCurveEffect, new Rectangle(0, 0.46, AbsoluteLayout.AutoSize, AbsoluteLayout.AutoSize));

            AbsoluteLayout.SetLayoutFlags(messageImage, AbsoluteLayoutFlags.PositionProportional);
            AbsoluteLayout.SetLayoutBounds(messageImage, new Rectangle(0.15, 0.55, 35, 35));

            AbsoluteLayout.SetLayoutFlags(callImage, AbsoluteLayoutFlags.PositionProportional);
            AbsoluteLayout.SetLayoutBounds(callImage, new Rectangle(0.85, 0.55, 30, 30));

            AbsoluteLayout.SetLayoutFlags(fotoPessoa, AbsoluteLayoutFlags.PositionProportional);
            AbsoluteLayout.SetLayoutBounds(fotoPessoa, new Rectangle(0.53, 0.40, 160, 160));

            AbsoluteLayout.SetLayoutFlags(detailContent.Content, AbsoluteLayoutFlags.PositionProportional);
            AbsoluteLayout.SetLayoutBounds(detailContent.Content, new Rectangle(0.55, 0.80, AbsoluteLayout.AutoSize, AbsoluteLayout.AutoSize));

            AbsoluteLayout.SetLayoutFlags(btnVoltar, AbsoluteLayoutFlags.PositionProportional);
            AbsoluteLayout.SetLayoutBounds(btnVoltar, new Rectangle(0.53, 0.95, AbsoluteLayout.AutoSize, AbsoluteLayout.AutoSize));

            absLayout.Children.Add(backgroundImage);
            absLayout.Children.Add(backgroundCurveEffect);
            absLayout.Children.Add(messageImage);
            absLayout.Children.Add(callImage);
            absLayout.Children.Add(fotoPessoa);
            absLayout.Children.Add(detailContent.Content);
            absLayout.Children.Add(btnVoltar);

            this.Content = absLayout;
        }