Esempio n. 1
0
        async void ExecuteFinalizarSesionCommand()
        {
            UserDialogs.Instance.ShowLoading(AppResources.ShowLoadingTitle);

            string accessToken;

            try
            {
                accessToken = await _secureStorage.GetAsync(RiskConstants.ACCESS_TOKEN);
            }
            catch (Exception ex)
            {
                accessToken = string.Empty;
            }

            DatoRespuesta respuestaFinalizarSesion = null;

            try
            {
                respuestaFinalizarSesion = await _autApi.FinalizarSesionAsync(null, new FinalizarSesionRequestBody { AccessToken = accessToken });

                if (respuestaFinalizarSesion.Codigo.Equals(RiskConstants.CODIGO_OK))
                {
                    _secureStorage.Remove(RiskConstants.ACCESS_TOKEN);
                    _secureStorage.Remove(RiskConstants.REFRESH_TOKEN);

                    App.Current.Properties[RiskConstants.IS_USER_LOGGED_IN] = false;
                    await NavigationService.NavigateAsync("/LoginPage");
                }
                else
                {
                    await UserDialogs.Instance.AlertAsync("Error al finalizar sesión");
                }
            }
            catch (ApiException ex)
            {
                if (ex.ErrorCode.Equals(401))
                {
                    _secureStorage.Remove(RiskConstants.ACCESS_TOKEN);
                    _secureStorage.Remove(RiskConstants.REFRESH_TOKEN);

                    App.Current.Properties[RiskConstants.IS_USER_LOGGED_IN] = false;
                    await NavigationService.NavigateAsync("/LoginPage");
                }
                else
                {
                    await UserDialogs.Instance.AlertAsync("Error al finalizar sesión");
                }
            }
            catch (Exception ex)
            {
                await UserDialogs.Instance.AlertAsync("Error al finalizar sesión");
            }

            UserDialogs.Instance.HideLoading();
        }
Esempio n. 2
0
        protected override async void OnInitialized()
        {
            InitializeComponent();

            if (!this.Properties.ContainsKey(RiskConstants.IS_USER_LOGGED_IN))
            {
                this.Properties[RiskConstants.IS_USER_LOGGED_IN] = false;
            }

            if (!this.Properties.ContainsKey(RiskConstants.IS_CONNECTED))
            {
                this.Properties[RiskConstants.IS_CONNECTED] = false;
            }

            var autApi        = Container.Resolve <IAutApi>();
            var genApi        = Container.Resolve <IGenApi>();
            var appInfo       = Container.Resolve <IAppInfo>();
            var deviceInfo    = Container.Resolve <IDeviceInfo>();
            var secureStorage = Container.Resolve <ISecureStorage>();
            var connectivity  = Container.Resolve <IConnectivity>();

            // Registra evento ConnectivityChanged
            connectivity.ConnectivityChanged += Connectivity_ConnectivityChanged;

            // Valida conexión a Internet
            if (connectivity.NetworkAccess != NetworkAccess.Internet)
            {
                this.Properties[RiskConstants.IS_CONNECTED] = false;
                await NavigationService.NavigateAsync("/NoConnectionPage");

                return;
            }

            AplicacionPaginaRespuesta respuestaListarAplicaciones = null;

            try
            {
                respuestaListarAplicaciones = genApi.ListarAplicaciones(null, "azVd94zazPu/+q5ZHqoL1v6wccamHV3oWoALYWQK0Z8=");
            }
            catch (Exception)
            {
                await UserDialogs.Instance.AlertAsync("La aplicación no está activa");
            }

            if (respuestaListarAplicaciones.Codigo.Equals(RiskConstants.CODIGO_OK))
            {
                var aplicacion = respuestaListarAplicaciones.Datos.Elementos[0];

                // Valida si la aplicación está activa
                if (!aplicacion.Activo)
                {
                    await UserDialogs.Instance.AlertAsync("La aplicación no está activa");
                }

                // Valida versión de la aplicación
                Version versionAplicacion = new Version(appInfo.VersionString);
                Version versionServidor   = new Version(aplicacion.VersionActual);

                switch (versionAplicacion.CompareTo(versionServidor))
                {
                case 0:
                    //Console.Write("the same as");
                    break;

                case 1:
                    //Console.Write("later than");
                    break;

                case -1:
                    //Console.Write("earlier than");
                    await UserDialogs.Instance.AlertAsync("Es necesaria una actualización de la aplicación");

                    break;
                }
            }

            // Registra dispositivo
            string deviceToken;

            try
            {
                deviceToken = await secureStorage.GetAsync(RiskConstants.DEVICE_TOKEN);
            }
            catch (Exception ex)
            {
                deviceToken = string.Empty;
            }

            DatoRespuesta datoRespuesta = autApi.RegistrarDispositivo(null, new RegistrarDispositivoRequestBody
            {
                Dispositivo = new Dispositivo
                {
                    IdDispositivo           = 0,
                    TokenDispositivo        = deviceToken,
                    NombreSistemaOperativo  = deviceInfo.Platform.ToString(),
                    VersionSistemaOperativo = deviceInfo.VersionString,
                    Tipo = TipoDispositivo.Mobile
                }
            });

            if (datoRespuesta.Codigo.Equals(RiskConstants.CODIGO_OK))
            {
                await secureStorage.SetAsync(RiskConstants.DEVICE_TOKEN, datoRespuesta.Datos.Contenido);
            }

            if ((bool)this.Properties[RiskConstants.IS_USER_LOGGED_IN])
            {
                await NavigationService.NavigateAsync("/NavigationPage/MainPage");
            }
            else
            {
                await NavigationService.NavigateAsync("/LoginPage");
            }
        }