public EventoDetalheViewModel(Usuario usuarioLogado, long eventoID)
        {
            // Instancia as variaveis de acesso a tela
            var eventoDetalhe = new EventoDetalhe();

            cadItemEventoItemCommand        = new Command(AddItemEventoUser);
            cadItemEventoItemUsuarioCommand = new Command(async(object obj) => await AddItemConvidado(obj));
            AcessEventoItemUsuarioDetalhe   = new Command(async(object obj) => await AcessaEventoItemUsuarioDetalhe(obj));
            _usuarioLogado  = usuarioLogado;
            _firebaseClient = new FirebaseConfig <Evento>();
            _eventoID       = eventoID;
            // Busca o objeto de modelo para a tela
            Task.Run(async() => {
                eventoDetalhe = await _firebaseClient.GetEventoDetalheByEventoIDAsync(eventoID);
            }).Wait();

            // Monta as propriedades da tela
            NomeEvento          = eventoDetalhe.NomeEvento + " - #" + eventoDetalhe.EventoID;
            DescricaoEvento     = eventoDetalhe.DescricaoEvento;
            dataInicio          = eventoDetalhe.DataInicio;
            dataTermino         = eventoDetalhe.DataTermino;
            horaInicio          = eventoDetalhe.HoraInicio;
            horaTermino         = eventoDetalhe.HoraTermino;
            diasRestantes       = String.Format("Faltam {0} dias!", eventoDetalhe.DiasRestantes);
            convidadosAceitos   = eventoDetalhe.ConvitesAceitos.ToString();
            convidadosRecusados = eventoDetalhe.ConvitesRecusados.ToString();
            convidadosPendentes = eventoDetalhe.ConvitesPendentes.ToString();
        }
        public EventoLocalizacao(EventoDetalhe evento)
        {
            InitializeComponent();

            _evento = evento;

            lblEndereco.Text     = _evento.LogradouroEvento + ", " + _evento.NumeroEvento;
            lblCidadeEstado.Text = _evento.CidadeEvento + " - " + _evento.EstadoEvento;
            lblCEP.Text          = _evento.CEPEvento;
        }
Esempio n. 3
0
        private async void VisualizaLocalizacao_Clicked(object sender, EventArgs e)
        {
            EventoDetalhe eventoDetalhe = await _clientEvento.GetEventoDetalheByEventoIDAsync(EventoID);

            await App.Current.MainPage.Navigation.PushModalAsync(new View.EventoLocalizacao(eventoDetalhe));
        }
Esempio n. 4
0
        public async Task <EventoDetalhe> GetEventoDetalheByEventoIDAsync(long eventoID)
        {
            // Abre a conexão com o banco
            InstaciaClient();

            EventoDetalhe eventoDetalhe = new EventoDetalhe();

            try
            {
                // Busca o evento com base no ID informado
                // Retorna um dictionary com <ID, Evento>
                var eventoRetorno =
                    await _client
                    .Child("Eventos")
                    .OrderBy("ID")
                    .EqualTo(eventoID)
                    .OnceSingleAsync <Dictionary <long, Evento> >();

                // Retorna o primeiro objeto(sempre vai ser um, se encontrar)
                var evento = eventoRetorno.Values.First();

                // Monta o objeto de retorno
                eventoDetalhe.EventoID          = evento.ID.Value;
                eventoDetalhe.UsuarioID         = evento.UsuarioCriadorID;
                eventoDetalhe.NomeEvento        = evento.Nome;
                eventoDetalhe.DescricaoEvento   = evento.Descricao;
                eventoDetalhe.DataInicio        = evento.DataInicio;
                eventoDetalhe.DataTermino       = evento.DataTermino;
                eventoDetalhe.HoraInicio        = evento.HoraInicio;
                eventoDetalhe.HoraTermino       = evento.HoraTermino;
                eventoDetalhe.LogradouroEvento  = evento.Logradouro;
                eventoDetalhe.BairroEvento      = evento.Bairro;
                eventoDetalhe.EstadoEvento      = evento.Estado;
                eventoDetalhe.CidadeEvento      = evento.Cidade;
                eventoDetalhe.CEPEvento         = evento.CEP;
                eventoDetalhe.ComplementoEvento = evento.Complemento;
                eventoDetalhe.NumeroEvento      = evento.Numero;

                var dataEvento = DateTime.ParseExact(evento.DataInicio, "dd/MM/yyyy", CultureInfo.InvariantCulture);
                var dataAtual  = DateTime.Now;
                eventoDetalhe.DiasRestantes = (dataEvento - dataAtual).Days;

                // Busca a lista de usuários vinculados ao evento
                // Retorna um dictionary com <ID, Usuario>
                var eventosByUsuarioIDRetorno =
                    await _client
                    .Child("EventoUsuario")
                    .OrderBy("EventoID")
                    .EqualTo(eventoID)
                    .OnceSingleAsync <Dictionary <long, EventoUsuario> >();

                // Monta a quantidade de convites aceitos, pendentes e recusados
                foreach (EventoUsuario eventoUsuario in eventosByUsuarioIDRetorno.Values)
                {
                    if (eventoUsuario.StatusConvite == StatusConviteEnum.Aceito)
                    {
                        eventoDetalhe.ConvitesAceitos++;
                    }

                    if (eventoUsuario.StatusConvite == StatusConviteEnum.Pendente)
                    {
                        eventoDetalhe.ConvitesPendentes++;
                    }

                    if (eventoUsuario.StatusConvite == StatusConviteEnum.Recusado)
                    {
                        eventoDetalhe.ConvitesRecusados++;
                    }
                }
            }
            catch (Exception)
            {
                // Se tiver não existir, retorna null
                return(default(EventoDetalhe));
            }
            return(eventoDetalhe);
        }