public ImpuestoItemPage()
        {
            InitializeComponent();
            ImpuestoViewModel impuestoViewModel = ImpuestoViewModel.GetInstance();

            BindingContext = impuestoViewModel.CurrentImpuesto;
        }
        private async void ExecuteGuardarAsync()
        {
            try
            {
                // validacion de los campos
                if (string.IsNullOrEmpty(this.nombreImpuesto))
                {
                    await Application.Current.MainPage.DisplayAlert("Alerta", "Campo nombre impuesto obligatoria", "Aceptar");

                    return;
                }

                if (string.IsNullOrEmpty(this.valorImpuesto))
                {
                    await Application.Current.MainPage.DisplayAlert("Alerta", "Campo valor impuesto obligatoria", "Aceptar");

                    return;
                }

                // Estados
                this.IsRunning = true;
                this.IsEnabled = false;

                // Preparando el objeto para enviar
                if (this.Nuevo)
                {
                }

                if (this.Nuevo)
                {
                    // localhost:8080/admeli/xcore2/xcore/services.php/impuesto/guardar
                    Response response = await webService.POST <Impuesto, Response>("impuesto", "guardar", (Impuesto)this);

                    await App.Current.MainPage.DisplayAlert("Guardar", response.Message, "Aceptar");
                }
                else
                {
                    // localhost:8080/admeli/xcore2/xcore/services.php/impuesto/modificar
                    Response response = await webService.POST <Impuesto, Response>("impuesto", "modificar", (Impuesto)this);

                    await App.Current.MainPage.DisplayAlert("Modificar", response.Message, "Aceptar");
                }

                // Refrescar y regresar a la pagina anterior
                ImpuestoViewModel.GetInstance().ExecuteRefresh();
                await App.ImpuestoItemPage.Navigation.PopAsync();
            }
            catch (Exception ex)
            {
                // Error message
                await App.Current.MainPage.DisplayAlert("Error", ex.Message, "Aceptar");
            }
            finally
            {
                // Estados
                this.IsRunning = false;
                this.IsEnabled = true;
            }
        }
        private void ExecuteEditar()
        {
            ImpuestoViewModel impuestoViewModel = ImpuestoViewModel.GetInstance();

            impuestoViewModel.SetCurrentImpuesto(this);
            this.Nuevo           = false;                                  /// Importante indicaque se modificara el registro actual
            this.DeleteIsEnabled = true;
            App.ImpuestoPage.Navigation.PushAsync(new ImpuestoItemPage()); // Navegacion
        }
        public void Destroy(ImpuestoViewModel obj)
        {
            var entity = entities.Impuestos.FirstOrDefault(c => c.Id == obj.Id);

            if (entity != null)
            {
                entities.Delete(entity);
                entities.SaveChanges();
            }
        }
        public void Update(ImpuestoViewModel obj)
        {
            var entity = entities.Impuestos.FirstOrDefault(c => c.Id == obj.Id);

            if (entity != null)
            {
                entity.Nombre = obj.Nombre;
                entity.Valor  = obj.Valor;


                entities.SaveChanges();
            }
        }
        public ImpuestoViewModel Create(ImpuestoViewModel obj)
        {
            var entity = new Impuesto();

            entity.Nombre = obj.Nombre;
            entity.Valor  = obj.Valor;

            entity.Fechacreacion = DateTime.Now;

            entities.Add(entity);
            entities.SaveChanges();
            obj.Id = entity.Id;
            return(obj);
        }
        private async void ExecuteAnular()
        {
            try
            {
                // Estados
                this.IsRunning = true;
                this.IsEnabled = false;

                // Verificacion si el registro esta anulado
                if (this.estado == 0)
                {
                    await App.Current.MainPage.DisplayAlert("Anular", "Este registro ya esta anulado \n" + this.nombreImpuesto, "Aceptar");

                    return;
                }

                // pregunta al usuario (Confirmacion)
                if (await App.Current.MainPage.DisplayAlert("Anular", "¿esta seguro de anular este registro? \n" + this.nombreImpuesto, "Aceptar", "Cancelar") == false)
                {
                    return;
                }

                // Preparando el objeto para enviar
                Impuesto impuesto = new Impuesto();
                impuesto.idImpuesto = this.idImpuesto;

                // Ejecutando el webservice
                // localhost:8080/admeli/xcore2/xcore/services.php/impuesto/desactivar
                Response response = await webService.POST <Impuesto, Response>("impuesto", "desactivar", impuesto);

                // Message response
                await App.Current.MainPage.DisplayAlert("Anular", response.Message, "Aceptar");

                // Refrescar la lista
                ImpuestoViewModel.GetInstance().ExecuteRefresh();
            }
            catch (Exception ex)
            {
                // Error message
                await App.Current.MainPage.DisplayAlert("Error", ex.Message, "Aceptar");
            }
            finally
            {
                // Estados
                this.IsRunning = false;
                this.IsEnabled = true;
            }
        }