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; }
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)); }
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); }