Пример #1
0
        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
                            }
                        }
                    }
                }
            };
        }
Пример #2
0
        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);
        }