private void MontaMapa(PosicaoHistorico paramPosicao) { try { Device.BeginInvokeOnMainThread(() => { try { Position paramPosition = new Position( Convert.ToDouble(paramPosicao.Latitude) , Convert.ToDouble(paramPosicao.Longitude) ); _bllMapa.MontaMapaPosicao(paramPosicao); this._view.mapaPosicao.MoveToRegion( MapSpan.FromCenterAndRadius( paramPosition , Distance.FromMeters(300) ) , true ); this._view.MontaMapa(); } catch { ShowErrorAlert("Exception"); } }); } catch { ShowErrorAlert("Exception"); } }
protected override void OnBindingContextChanged() { try { base.OnBindingContextChanged(); PosicaoHistorico unidadeRastreada = (PosicaoHistorico)BindingContext; if (unidadeRastreada != null) { BuildCellDetalhes build = new BuildCellDetalhes(); //Stack Principal Grid boxPrincipal = build.BuildCell( unidadeRastreada , null , ShowStatusRastreadorUnidadeRastreada ); boxPrincipal.GestureRecognizers.Add(new TapGestureRecognizer { Command = new Command(BoxPrincipal_Tap), CommandParameter = unidadeRastreada, NumberOfTapsRequired = 1 }); View = boxPrincipal; } } catch { } }
public void DesativarAncora(PosicaoHistorico posicaoHistorico) { ModelPosicao _modelPosicao = new ModelPosicao(); _tokensource = new CancellationTokenSource(); Task.Run(async() => { ServiceResult <Int32> result = new ServiceResult <Int32>(); _view.ExibirLoad(); BtnTopIsEnabled = false; try { result = await _modelPosicao.DesativarAncora( posicaoHistorico , _tokensource.Token ); } catch { result.MessageError = "Exception"; } finally { DesativarAncora_Finish( result , posicaoHistorico ); } }, _tokensource.Token); }
public void MontaDetalheTopoPosicao(PosicaoHistorico paramPosicao) { BuildCellDetalhes build = new BuildCellDetalhes(); PainelDetalhes.Children.Clear(); Image ImageAncora = null; if (paramPosicao.ExibeUltimaPosicao) { ImageAncora = new Image() { Source = "ic_menu_escuro.png", HeightRequest = 15, WidthRequest = 16, Margin = new Thickness(20, 0), Opacity = 1, VerticalOptions = LayoutOptions.Center }; ImageAncora.GestureRecognizers.Add(new TapGestureRecognizer { Command = new Command(ImageAncora_Tap), CommandParameter = paramPosicao, NumberOfTapsRequired = 1 }); } Grid tempGrid = build.BuildCell(paramPosicao, ImageAncora); Device.BeginInvokeOnMainThread(() => { PainelDetalhes.Children.Add(tempGrid); }); }
public async Task <ServiceResult <Int32> > DesativarAncora( PosicaoHistorico paramPosicao , CancellationToken paramToken ) { ServiceResult <Int32> result = new ServiceResult <Int32>(); await Task.Delay(delay); try { result.Data = new Int32(); } catch (HttpRequestException) { result.MessageError = "HttpRequestException"; } catch (Exception) { result.MessageError = "Exception"; } return(result); }
private async void BoxRegra_Tap(object obj) { if (obj != null) { PosicaoHistorico tempPosicao = obj as PosicaoHistorico; await this._messageService.ShowAlertAsync( tempPosicao.NomeRegraViolada , tempPosicao.IdentificacaoUnidadeRastreada ); } }
private void OpenWaze(PosicaoHistorico unidadeRastreada) { String paramEndereco = unidadeRastreada.Endereco; String paramLatitude = unidadeRastreada.Latitude.ToString().Replace(",", "."); String paramLongitude = unidadeRastreada.Longitude.ToString().Replace(",", "."); String paramURL = "https://waze.com/ul?q=" + paramEndereco + "&ll=" + paramLatitude + "," + paramLongitude + "&navigate=yes"; //String paramURL = "https://waze.com/ul?ll=" + paramLatitude + "," + paramLongitude + "&navigate=yes"; _util.OpenWaze(paramURL.Replace(" ", "%20")); }
private void DesativarAncora_Finish( ServiceResult <Int32> paramResult , PosicaoHistorico paramPosicaoHistorico ) { try { if (!_tokensource.IsCancellationRequested) { UpdateToken(paramResult.RefreshToken); if (String.IsNullOrWhiteSpace(paramResult.MessageError)) { paramPosicaoHistorico.Ancora_Tolerancia = null; Device.BeginInvokeOnMainThread(() => { try { _bllMapa.RemoverCircle(); _view.MontaDetalheTopoPosicao(paramPosicaoHistorico); this._messageService.ShowAlertAsync(AppResources.AncoraRemovida); } catch { ShowErrorAlert("Exception"); } }); } else { ShowErrorAlert(paramResult.MessageError); } } } catch { ShowErrorAlert("Exception"); } finally { _view.EscondeLoad(); BtnTopIsEnabled = true; } }
private void OpenGoogleMaps(PosicaoHistorico unidadeRastreada) { String paramEndereco = unidadeRastreada.Endereco; String paramLatitude = unidadeRastreada.Latitude.ToString().Replace(",", "."); String paramLongitude = unidadeRastreada.Longitude.ToString().Replace(",", "."); //String paramURL = "https://waze.com/ul?q=" + paramEndereco + "&ll=" // + paramLatitude + "," + paramLongitude + "&navigate=yes"; String paramURL = "google.navigation:q=" + paramLatitude + "," + paramLongitude; if (Xamarin.Forms.Device.RuntimePlatform == Xamarin.Forms.Device.iOS) { paramURL = "http://maps.apple.com/?q=" + paramLatitude + "," + paramLongitude; } _util.OpenGoogleMaps(paramURL.Replace(" ", "%20")); }
public Position MontaMapaPosicao(PosicaoHistorico paramPosicao) { //acaoNome = "Lista pin histórico"; Position position = new Position(); try { position = new Position( paramPosicao.Latitude.Value , paramPosicao.Longitude.Value ); BitmapDescriptor bmp = paramPosicao.MontaIconPin(); if (paramPosicao.OrdemRastreador == null) { paramPosicao.OrdemRastreador = 0; } Pin pinPosicao = new Pin { Type = PinType.Place, Position = position, Icon = bmp, Label = paramPosicao.IdentificacaoUnidadeRastreada }; _mapa.PinClicked += (sender, e) => { pinPosicao.Label = paramPosicao.IdentificacaoUnidadeRastreada; }; _mapa.Pins.Add(pinPosicao); } catch (Exception ex) { App.Current.MainPage.DisplayAlert("Erro", ex.Message, "OK"); } return(position); }
public async Task <ServiceResult <Int32> > DesativarAncora( PosicaoHistorico paramPosicao , CancellationToken paramToken ) { client.DefaultRequestHeaders .Accept.Add(new MediaTypeWithQualityHeaderValue(mediaType)); String urlRequisicao; urlRequisicao = "Anchor/" + paramPosicao.IdUnidadeRastreada.ToString(); return(await MakeRequisicion <Int32>( HttpMethod.Delete , urlRequisicao , null , paramToken )); }
public Circle MontaMapaAncora(PosicaoHistorico posicaoHistorico , Int32 paramTolerancia //, String paramLabel //, String paramIcone ) { Circle circle = null; try { Position posi = new Position(posicaoHistorico.Latitude.Value, posicaoHistorico.Longitude.Value); circle = MontaMapaAncora(posi, paramTolerancia //,paramLabel, paramIcone ); } catch { this._messageService.ShowAlertAsync("Exception"); } return(circle); }
public async Task <ServiceResult <Int32> > DesativarAncora( PosicaoHistorico paramPosicao , CancellationToken paramToken ) { ServiceResult <Int32> result = new ServiceResult <Int32>(); try { result = await DataStore.DesativarAncora( paramPosicao , paramToken ); } catch (Exception) { result.IsValid = false; result.MessageError = "ErroInesperado"; } return(result); }
public async Task <ServiceResult <AncoraAtivacaoDto> > AtivarAncora( PosicaoHistorico paramPosicao , CancellationToken paramToken ) { List <KeyValuePair <string, string> > requisaoParametros = new List <KeyValuePair <string, string> >(); requisaoParametros.Add( new KeyValuePair <string, string>( "paramIdTracedUnit" , paramPosicao.IdUnidadeRastreada.ToString() ) ); requisaoParametros.Add( new KeyValuePair <string, string>( "paramLatitude" , paramPosicao.Latitude.ToString() ) ); requisaoParametros.Add( new KeyValuePair <string, string>( "paramLongitude" , paramPosicao.Longitude.ToString() ) ); //requisaoParametros.Add( // new KeyValuePair<string, string>( // "tolerancia" // , null // ) //); requisaoParametros.Add( new KeyValuePair <string, string>( "paramTolerance" , "300" ) ); FormUrlEncodedContent content = new FormUrlEncodedContent(requisaoParametros); content.Headers.ContentType = new MediaTypeHeaderValue(mediaType); content.Headers.ContentType.CharSet = "UTF-8"; client.DefaultRequestHeaders .Accept.Add(new MediaTypeWithQualityHeaderValue(mediaType)); String urlRequisicao; urlRequisicao = "Anchor"; return(await MakeRequisicion <AncoraAtivacaoDto>( HttpMethod.Post , urlRequisicao , content , paramToken )); }
public Grid BuildCell( PosicaoHistorico paramUnidadeRastreada , View paramView = null , Boolean ShowStatusRastreadorUnidadeRastreada = false ) { try { Double margin = 15; #region Grid Grid boxPrincipal = new Grid(); boxPrincipal.WidthRequest = _app.ScreenWidth; boxPrincipal.ColumnSpacing = 0; boxPrincipal.RowSpacing = 0; boxPrincipal.VerticalOptions = LayoutOptions.FillAndExpand; boxPrincipal.ColumnDefinitions = new ColumnDefinitionCollection(); ColumnDefinition col01 = new ColumnDefinition() { Width = GridLength.Auto }; ColumnDefinition col03 = new ColumnDefinition() { Width = GridLength.Auto }; ColumnDefinition col02; col02 = new ColumnDefinition() { Width = GridLength.Star }; boxPrincipal.ColumnDefinitions.Add(col01); boxPrincipal.ColumnDefinitions.Add(col02); boxPrincipal.ColumnDefinitions.Add(col03); boxPrincipal.RowDefinitions = new RowDefinitionCollection(); boxPrincipal.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Star }); #endregion #region Frame Frame boxRegra = new Frame() { CornerRadius = 2, Margin = new Thickness(margin, margin, 0, margin), HasShadow = false, Padding = 0, Opacity = 1, WidthRequest = 27, BackgroundColor = Color.Transparent, OutlineColor = Color.Transparent, VerticalOptions = LayoutOptions.Fill }; if (!String.IsNullOrEmpty(paramUnidadeRastreada.NomeRegraViolada)) { boxRegra.GestureRecognizers.Add(new TapGestureRecognizer { Command = new Command(BoxRegra_Tap), CommandParameter = paramUnidadeRastreada, NumberOfTapsRequired = 1 }); if (String.IsNullOrEmpty(paramUnidadeRastreada.CorRegraPrioritaria)) { boxRegra.BackgroundColor = Color.FromHex("#FF2E2F3A"); } else { boxRegra.BackgroundColor = Color.FromHex(paramUnidadeRastreada.CorRegraPrioritaria); } } boxPrincipal.Children.Add(boxRegra, 0, 0); #endregion #region Texto StackLayout boxTexto = new StackLayout() { Margin = new Thickness(margin), Spacing = 0, Orientation = StackOrientation.Vertical, WidthRequest = col02.Width.Value, VerticalOptions = LayoutOptions.Center }; if (paramUnidadeRastreada.OrdemRastreador == null) { paramUnidadeRastreada.OrdemRastreador = 0; } Label labelUnidadeRastreada = new Label() { Text = paramUnidadeRastreada.IdentificacaoUnidadeRastreada, TextColor = Color.Black, FontAttributes = FontAttributes.Bold, FontSize = 15, Margin = new Thickness(0, 0, 0, 2), LineBreakMode = LineBreakMode.TailTruncation, HorizontalTextAlignment = TextAlignment.Start }; if (paramUnidadeRastreada.StatusRastreadorUnidadeRastreada == (byte)EnumStatusUnidadeRastreada.Atualizada) { labelUnidadeRastreada.TextColor = Color.DarkGreen; } else { labelUnidadeRastreada.TextColor = Color.DarkRed; } boxTexto.Children.Add(labelUnidadeRastreada); Label labelDataEvento = new Label() { Text = String.Format( "{0:dd/MM/yyyy HH:mm:ss}" , paramUnidadeRastreada.DataEvento.Value.ToLocalTime() ), TextColor = Color.FromHex("#9b9eb0"), FontSize = 14, Margin = labelUnidadeRastreada.Margin, LineBreakMode = LineBreakMode.TailTruncation, HorizontalTextAlignment = TextAlignment.Start }; boxTexto.Children.Add(labelDataEvento); if (!String.IsNullOrWhiteSpace(paramUnidadeRastreada.ResponsavelUnidadeRastreada)) { Label labelMotorista = new Label() { Text = paramUnidadeRastreada.ResponsavelUnidadeRastreada, TextColor = Color.FromHex("#9b9eb0"), FontSize = 14, Margin = new Thickness(0), LineBreakMode = LineBreakMode.TailTruncation, HorizontalTextAlignment = TextAlignment.Start }; boxTexto.Children.Add(labelMotorista); } StackLayout boxImagemUnidade = new StackLayout() { Margin = new Thickness(15, 0, 0, 0), Spacing = 0, Orientation = StackOrientation.Horizontal, WidthRequest = col01.Width.Value, VerticalOptions = LayoutOptions.Start }; String sourceImageUnidade = String.Empty; if (!String.IsNullOrEmpty(paramUnidadeRastreada.IconePadrao)) { sourceImageUnidade = paramUnidadeRastreada.IconePadrao; } Image ImageUnidade = new Image() { Source = sourceImageUnidade, //BackgroundColor = Color.Black, //HeightRequest = 15, //WidthRequest = 16, Margin = new Thickness(35, 0, margin, 0), Opacity = 1, VerticalOptions = LayoutOptions.Center, Scale = 3.5 }; boxPrincipal.Children.Add(ImageUnidade, 0, 0); boxPrincipal.Children.Add(boxTexto, 1, 0); #endregion #region Image String sourceImage = String.Empty; //Muda icone de ignicao if (paramUnidadeRastreada.Ignicao == true) { sourceImage = "ic_ignition_on.png"; } if (paramUnidadeRastreada.Ignicao == false) { sourceImage = "ic_ignition_off.png"; } Image ImageIgnicao = new Image() { Source = sourceImage, HeightRequest = 15, WidthRequest = 16, Margin = new Thickness(0, 0, margin, 0), Opacity = 1, VerticalOptions = LayoutOptions.Center }; if (paramUnidadeRastreada.Ignicao.HasValue) { if (paramUnidadeRastreada.Ignicao.Value == false) { ImageIgnicao.Opacity = 0.5f; } } else { ImageIgnicao.Opacity = 0; } StackLayout stack = new StackLayout(); stack.Orientation = StackOrientation.Horizontal; stack.HorizontalOptions = LayoutOptions.End; stack.Margin = new Thickness(0, 25, 0, 0); stack.Children.Add(ImageIgnicao); if (paramView != null) { stack.Children.Add(paramView); } boxPrincipal.Children.Add(stack, 1, 0); #endregion return(boxPrincipal); } catch { throw; } }
private async void BoxPrincipal_Tap(object obj) { String answer; PosicaoHistorico _posicaoDetalhes = (PosicaoHistorico)obj; ////Int64? posiId = posi.IdPosicao; if (_enumPage == EnumPage.DetalhesAlerta || _enumPage == EnumPage.DetalhesUnidade) { List <String> respostas = new List <String> { AppResources.historico //,AppResources.detalheposicao }; if (_enumPage == EnumPage.DetalhesAlerta) { respostas.Add(AppResources.UltimaPosicao); } else { respostas.Add(AppResources.detalheposicao); } respostas.Add(AppResources.Roteirizacao); answer = await this._messageService.ShowMessageAsync( _posicaoDetalhes.IdentificacaoUnidadeRastreada , AppResources.cancelar , null , respostas.ToArray() ); if (answer == AppResources.historico) { this._navigationService.NavigateToHistorico( _painelDto , obj , _enumPage ); } if (answer == AppResources.Roteirizacao) { String answerStreet; List <String> respostasStreet = new List <String> { AppResources.Waze , AppResources.GoogleMaps }; answerStreet = await this._messageService.ShowMessageAsync( _posicaoDetalhes.IdentificacaoUnidadeRastreada //+ "\n\n" + AppResources.Posicao + "\n" + String.Format("{0:dd/MM/yyyy HH:mm:ss}", _posicaoDetalhes.DataEvento) , AppResources.cancelar , null , respostasStreet.ToArray() ); if (answerStreet == AppResources.Waze) { OpenWaze(_posicaoDetalhes); } else { OpenGoogleMaps(_posicaoDetalhes); } } if (answer == AppResources.UltimaPosicao || answer == AppResources.detalheposicao) { if (answer == AppResources.UltimaPosicao) { _posicaoDetalhes.ExibeUltimaPosicao = true; } else { _posicaoDetalhes.ExibeUltimaPosicao = (_enumPage == EnumPage.DetalhesUnidade); } //_enumPage = EnumPage.DetalhesUnidade; this._navigationService.NavigateToPosicao( _painelDto , _posicaoDetalhes , _enumPage ); } } else if (_enumPage == EnumPage.Historico) { this._navigationService.NavigateToPosicao( _painelDto , _posicaoDetalhes , _enumPage ); } }
private void BuscarPosicao() { try { _tokensource = new CancellationTokenSource(); Task.Run(async() => { try { //Task.Run(async () => //{ if (String.IsNullOrEmpty(_posicaoDetalhes.Endereco)) { String endereco = await FindAddressByPosition(_posicaoDetalhes.Latitude.Value, _posicaoDetalhes.Longitude.Value); _posicaoDetalhes.Endereco = endereco; } //}); BtnTopIsEnabled = false; ModelPosicao _modelPosicao = new ModelPosicao(); Device.BeginInvokeOnMainThread(() => { this._bllMapa.LimpaMapa(); }); Int64?idPosicao = null; if (_posicaoDetalhes.ExibeUltimaPosicao == false) { idPosicao = _posicaoDetalhes.IdPosicao; } ServiceResult <Posicao> resultPainel = await _modelPosicao.Get( idPosicao , _posicaoDetalhes.IdUnidadeRastreada , _posicaoDetalhes.OrdemRastreador , _tokensource.Token ); if (!_tokensource.IsCancellationRequested) { UpdateToken(resultPainel.RefreshToken); if (String.IsNullOrWhiteSpace(resultPainel.MessageError)) { Posicao tempPosicao = resultPainel.Data; if (tempPosicao.Latitude != null) { tempPosicao.Endereco = _posicaoDetalhes.Endereco; PainelResumoListViewSource = tempPosicao; PosicaoHistorico posicao = new PosicaoHistorico() { CorRegraPrioritaria = tempPosicao.CorRegraPrioritaria, DataEvento = tempPosicao.DataEvento.ToLocalTime(), Identificacao = tempPosicao.Identificacao, IdTipoUnidadeRastreada = tempPosicao.IdTipoUnidadeRastreada, //Ignicao = tempPosicao.Ignicao, Latitude = tempPosicao.Latitude, Longitude = tempPosicao.Longitude, NomeRegraViolada = tempPosicao.NomeRegraViolada, Velocidade = tempPosicao.Velocidade, ResponsavelUnidadeRastreada = tempPosicao.ResponsavelUnidadeRastreada, Endereco = _posicaoDetalhes.Endereco }; if (tempPosicao.Ignicao != null) { posicao.Ignicao = tempPosicao.Ignicao; } //Monta StreetView MontaStreetView(posicao.Latitude.Value, posicao.Longitude.Value); posicao.ExibeUltimaPosicao = _posicaoDetalhes.ExibeUltimaPosicao; posicao.IdUnidadeRastreada = _posicaoDetalhes.IdUnidadeRastreada; if (tempPosicao.Ancora_Latitude != null) { posicao.Ancora_Latitude = tempPosicao.Ancora_Latitude; posicao.Ancora_Longitude = tempPosicao.Ancora_Longitude; posicao.Ancora_Tolerancia = tempPosicao.Ancora_Tolerancia; } posicao.OrdemRastreador = _posicaoDetalhes.OrdemRastreador; if (_painelDto.Id == 2 && _posicaoDetalhes.CorRegraPrioritaria != null) //Fixa Cor Alerta { posicao.CorRegraPrioritaria = _posicaoDetalhes.CorRegraPrioritaria; posicao.NomeRegraViolada = _posicaoDetalhes.NomeRegraViolada; } _view.MontaDetalheTopoPosicao(posicao); _posicaoHistorico = posicao; PainelSensoresListViewSource = tempPosicao.Sensores; PainelAtuadoresListViewSource = tempPosicao.Atuadores; PainelTelemetriaListViewSource = tempPosicao.Telemetrias; PainelInformacoesListViewSource = tempPosicao.Informacoes; //Monta Mapa da Posicao MontaMapa(posicao); if (posicao.Ancora_Tolerancia != null) { _bllMapa.MontaMapaAncora(posicao, posicao.Ancora_Tolerancia.Value); } } else { this._messageService.ShowAlertAsync(AppResources.NaoHaDetalhesPosicao); } } else { ShowErrorAlert(resultPainel.MessageError); } _view.EscondeLoad(); this.PainelDetalhes_IsRefreshing = false; BtnTopIsEnabled = true; } } catch (Exception ex) { ShowErrorAlert("Exception"); } }, _tokensource.Token); } catch (Exception ex) { ShowErrorAlert("Exception"); } }
private async void ImageAncora_Tap(object obj) { _tokensource = new CancellationTokenSource(); try { PosicaoHistorico _posicao = (PosicaoHistorico)obj; String answer; String ancora; if (_posicao.Ancora_Tolerancia == null) { ancora = AppResources.AtivarAncora; } else { ancora = AppResources.DesativarAncora; } Boolean result = await _viewModelPosicao.ExibeMenuComandos(); //await Task.Delay(3000); if (result == true) { answer = await _messageService.ShowMessageAsync( AppResources.ChooseAction , AppResources.cancelar , null , new string[] { ancora , AppResources.EnviarComandos } ); } else { answer = await _messageService.ShowMessageAsync( AppResources.ChooseAction , AppResources.cancelar , null , new string[] { ancora } ); } if (answer == AppResources.EnviarComandos) { this._viewModelPosicao.NavigateToComandos(); } else if (answer == AppResources.AtivarAncora) { this._viewModelPosicao.AtivarAncora(_posicao); } else if (answer == AppResources.DesativarAncora) { this._viewModelPosicao.DesativarAncora(_posicao); } } catch (Exception ex) { } }