public GastoNovoPage() { Title = "Novo Custo"; var gasto = new GastoInfo { DataInclusao = DateTime.Now }; var local = GPSUtils.UltimaLocalizacao; if (local != null) { gasto.Latitude = (float)local.Latitude; gasto.Longitude = (float)local.Longitude; } BindingContext = gasto; var gravarButton = new ToolbarItem { Text = "Inserir" }; gravarButton.Clicked += (sender, e) => { var novoGasto = (GastoInfo)BindingContext; var regraGasto = GastoFactory.create(); regraGasto.gravar(novoGasto); MensagemUtils.avisar("Gasto incluído com sucesso!"); ((MasterDetailPage)Application.Current.MainPage).Detail = new NavigationPage(new VelocimetroPage()); //NavigationX.create(this).PopAsync(); }; ToolbarItems.Add(gravarButton); if (TelaUtils.Orientacao == "Landscape") { _width = (int)TelaUtils.LarguraSemPixel * 0.5; } else { _width = (int)TelaUtils.LarguraSemPixel * 0.8; } inicializarComponente(); Content = new ScrollView { Orientation = ScrollOrientation.Vertical, VerticalOptions = LayoutOptions.FillAndExpand, Content = new StackLayout { BackgroundColor = Color.Transparent, Orientation = StackOrientation.Vertical, VerticalOptions = LayoutOptions.StartAndExpand, HorizontalOptions = LayoutOptions.CenterAndExpand, Children = { new StackLayout { Orientation = StackOrientation.Horizontal, Children = { new Image { Source = "ic_monetization_on_black_24dp.png", VerticalOptions = LayoutOptions.Center, HorizontalOptions = LayoutOptions.Center, }, _ValorEntry } }, new StackLayout() { Orientation = StackOrientation.Horizontal, Children = { new Image() { Source = "ic_event_black_24dp.png", VerticalOptions = LayoutOptions.Center, HorizontalOptions = LayoutOptions.Center, }, new DatePicker { IsVisible = true, IsEnabled = true, WidthRequest = _width, } } }, new StackLayout() { Orientation = StackOrientation.Horizontal, Children = { new Image { Source = "ic_map_black_24dp.png", VerticalOptions = LayoutOptions.Start, HorizontalOptions = LayoutOptions.Center }, new StackLayout { Orientation = StackOrientation.Vertical, VerticalOptions = LayoutOptions.Start, HorizontalOptions = LayoutOptions.Start, Children = { _LocalEntry, new StackLayout { Margin = new Thickness(5, 0), Orientation = StackOrientation.Horizontal, VerticalOptions = LayoutOptions.Start, HorizontalOptions = LayoutOptions.Start, Spacing = 2, Children = { _LatitudeLabel, _LongitudeLabel } } } } } }, new StackLayout() { Orientation = StackOrientation.Horizontal, Children = { new Image { Source = "ic_shopping_cart_black_24dp.png", VerticalOptions = LayoutOptions.Center, HorizontalOptions = LayoutOptions.Center, }, _TipoGastoPicker } }, new StackLayout { Orientation = StackOrientation.Horizontal, Children = { new Image { Source = "ic_edit_black_24dp.png", VerticalOptions = LayoutOptions.Center, HorizontalOptions = LayoutOptions.Center, }, _ObservacaoEntry } }, new StackLayout { Orientation = StackOrientation.Horizontal, Children = { _FotoImage } } } } }; }
public IList <PercursoResumoInfo> listarResumo(int idPercuso) { var regraRadar = RadarFactory.create(); var percurso = pegar(idPercuso); var pontos = percurso.Pontos.ToList(); var resumos = new List <PercursoResumoInfo>(); var inicio = pontos[0]; var chegada = pontos[pontos.Count - 1]; pontos.Remove(inicio); pontos.Remove(chegada); resumos.Add(new PercursoResumoInfo { Icone = "partida.png", Descricao = "Saída", Data = inicio.Data, Distancia = 0, Latitude = (float)inicio.Latitude, Longitude = (float)inicio.Longitude, Tempo = TimeSpan.Zero }); var idRadarOld = inicio.IdRadar; var dataOld = inicio.Data; var latitudeOld = (float)inicio.Latitude; var longitudeOld = (float)inicio.Longitude; double distanciaAcumulada = 0; TimeSpan tempoAcumulado = TimeSpan.Zero; double distancia = 0; TimeSpan tempo = TimeSpan.Zero; foreach (var ponto in percurso.Pontos) { distancia = GPSUtils.calcularDistancia(latitudeOld, longitudeOld, ponto.Latitude, ponto.Longitude); tempo = ponto.Data.Subtract(dataOld); if (distancia > DISTANCIA_MINIMA_RESUMO) { distanciaAcumulada += distancia; tempoAcumulado = tempoAcumulado.Add(tempo); if (tempo.TotalSeconds > TEMPO_MINIMO_PARADO) { resumos.Add(new PercursoParadoInfo { Icone = "para.png", Descricao = "Parada", Data = ponto.Data, Tempo = tempoAcumulado, Distancia = distanciaAcumulada, Latitude = (float)ponto.Latitude, Longitude = (float)ponto.Longitude, }); distanciaAcumulada = 0; tempoAcumulado = TimeSpan.Zero; } if (idRadarOld != ponto.IdRadar && ponto.IdRadar > 0) { var ultimoPonto = ( from p in percurso.Pontos where p.IdRadar == ponto.IdRadar orderby p.Data descending select p ).FirstOrDefault <PercursoPontoInfo>(); var radar = regraRadar.pegar(ponto.IdRadar); if (radar != null) { distancia = GPSUtils.calcularDistancia(latitudeOld, longitudeOld, ultimoPonto.Latitude, ultimoPonto.Longitude); distanciaAcumulada += distancia; resumos.Add(new PercursoRadarInfo { Icone = radar.Imagem, Descricao = radar.Titulo, Data = ultimoPonto.Data, Distancia = distanciaAcumulada, Latitude = (float)ultimoPonto.Latitude, Longitude = (float)ultimoPonto.Longitude, Tempo = tempoAcumulado, MinhaVelocidade = ultimoPonto.Velocidade, Velocidade = radar.Velocidade, Tipo = radar.Tipo }); } idRadarOld = ponto.IdRadar; distanciaAcumulada = 0; tempoAcumulado = TimeSpan.Zero; } dataOld = ponto.Data; latitudeOld = (float)ponto.Latitude; longitudeOld = (float)ponto.Longitude; } } distancia = GPSUtils.calcularDistancia(latitudeOld, longitudeOld, chegada.Latitude, chegada.Longitude); tempo = chegada.Data.Subtract(dataOld); distanciaAcumulada += distancia; tempoAcumulado = tempoAcumulado.Add(tempo); resumos.Add(new PercursoResumoInfo { Icone = "chegada.png", Descricao = "Chegada", Data = chegada.Data, Tempo = tempoAcumulado, Distancia = distanciaAcumulada, Latitude = (float)chegada.Latitude, Longitude = (float)chegada.Longitude, }); var regraGasto = GastoFactory.create(); var gastos = regraGasto.listar(idPercuso); foreach (var gasto in gastos) { resumos.Add(new PercursoGastoInfo { Icone = "ic_monetization_on_black_24dp.png", Descricao = gasto.Observacao, Data = gasto.DataInclusao, Tempo = TimeSpan.Zero, Distancia = 0, Latitude = (float)gasto.Latitude, Longitude = (float)gasto.Longitude, FotoBase64 = gasto.FotoBase64 }); } var retorno = ( from r in resumos orderby r.Data select r ).ToList(); return(retorno); }