private void appbarSave_Click(object sender, EventArgs e)
        {
            if ((String.IsNullOrEmpty(txtUser.Text) || String.IsNullOrWhiteSpace(txtUser.Text)))
            {
                MessageBox.Show(Resource.CompleteInformacion);
            }
            else
            {
                try
                {
                    using (ContextoDatos ctx = new ContextoDatos())
                    {

                        ctx.Users.Where(x => x.Id == Convert.ToInt32(Id)).SingleOrDefault().Nombre = txtUser.Text;

                        ctx.SubmitChanges();

                        MessageBox.Show(Resource.DataSaved);
                        NavigationService.Navigate(new Uri("/ListadoUsuarios.xaml?", UriKind.Relative));
                    }
                }
                catch (DbException x)
                {
                    MessageBox.Show("Error al actualizar: " + x.Message);
                }
            }
        }
        private void appbarDelete_Click(object sender, EventArgs e)
        {
            if (userSelected == null)
            {
                MessageBox.Show(Resource.EliminarNoSelected);
            }
            else
            {
                if (MessageBox.Show(Resource.EliminarMessageBoxText + " " + userSelected.Nombre, Resource.EliminarCaptionText, MessageBoxButton.OKCancel) == MessageBoxResult.OK)
                {
                    try
                    {
                        using (ContextoDatos ctx = new ContextoDatos())
                        {

                            var user        = ctx.Users.Where(x => x.Id == userSelected.Id).FirstOrDefault();
                            var userData    = ctx.Datas.Where(x => x.IdUsuario == userSelected.Id);

                            ctx.GetTable<DataUser>().DeleteAllOnSubmit(userData);
                            ctx.GetTable<User>().DeleteOnSubmit(user);

                            ctx.SubmitChanges();
                            loadUsers();
                        }
                    }
                    catch (DbException x)
                    {
                        MessageBox.Show("An error has occurred!, we worked to resolved this problem");
                    }
                }
            }
        }
 void ShowUser()
 {
     using (ContextoDatos ctx = new ContextoDatos())
     {
         var user = ctx.Users.Where(x => x.Id == Convert.ToInt32(Id)).SingleOrDefault();
         txtUser.Text = user.Nombre;
     }
 }
        void loadData()
        {
            try{

            ObservableCollection<TestDataItem> d = new ObservableCollection<TestDataItem>();
            ObservableCollection<IMCS> dIMC = new ObservableCollection<IMCS>();
            ObservableCollection<Grasas> dGRASA= new ObservableCollection<Grasas>();

            ContextoDatos ctx = new ContextoDatos();
            var data = ctx.Datas.Where(o => o.IdUsuario == Convert.ToInt32(Id) && o.Fecha >= DateTime.Now.AddMonths(-1) && o.Fecha <= DateTime.Now).OrderBy(o => o.Fecha).ThenBy(o=> o.Id);

            var cultura = CultureInfo.CurrentCulture;

            //  CultureInfo culture = new CultureInfo("en-GB");
            RegionInfo regionInfo = new RegionInfo(cultura.Name);
            bool isMetric = regionInfo.IsMetric;
            //listaUsuarios.Add(new Usuario { Id = user.Id, Nombre = user.Nombre });

            foreach (DataUser dato in data)
            {

                Datos datos = new Datos(dato.Genero, dato.Altura, dato.Edad, dato.Peso, dato.Indice);
                double peso = Math.Round(dato.Peso,2);
                string stPeso = App.IsMetric ? peso.ToString() : Conversion.ToLibras(datos.peso).ToString(); //Math.Round(Conversion.ToLibras(peso),2).ToString();

                d.Add(new TestDataItem()
                {
                    Fecha = String.Format("{0}/{1}", CultureInfo.CurrentCulture.DateTimeFormat.GetAbbreviatedMonthName(dato.Fecha.Month) ,dato.Fecha.Day),
                    Peso = stPeso
                });
                dIMC.Add(new IMCS()
                {
                    Fecha = String.Format("{0}/{1}", CultureInfo.CurrentCulture.DateTimeFormat.GetAbbreviatedMonthName(dato.Fecha.Month) ,dato.Fecha.Day),
                    IMC = Math.Round(datos.imc,2).ToString(),
                });

                dGRASA.Add( new Grasas()
                {
                    Fecha = String.Format("{0}/{1}", CultureInfo.CurrentCulture.DateTimeFormat.GetAbbreviatedMonthName(dato.Fecha.Month) ,dato.Fecha.Day),
                    Grasa = Math.Round(datos.porcentajeGrasa,2).ToString()
                });
            }

            Data = d;
            DataIMC = dIMC;
            DataGRASA = dGRASA;

            this.DataContext = this;

            }catch(Exception ex)
            {
                string kk = ex.Message;

            }
        }
 public static void DeleteDB()
 {
     using (ContextoDatos db = new ContextoDatos())
     {
         if (db.DatabaseExists())
         {
             db.DeleteDatabase();
         }
     }
 }
 public static bool DatabaseExist()
 {
     using (ContextoDatos db = new ContextoDatos())
      {
          return db.DatabaseExists();
      }
 }
 public static void CrearDBSiNoExiste()
 {
     using (ContextoDatos db = new ContextoDatos())
     {
         if (!db.DatabaseExists())
         {
             db.CreateDatabase();
         }
     }
 }
        void loadUsers()
        {
            listBox1.ItemsSource = null;
            List<Usuario> listaUsuarios = new List<Usuario>();
            ContextoDatos ctx = new ContextoDatos();
            var data = ctx.Users.OrderBy(o => o.Nombre);
            if(ctx.DatabaseExists())
            {
                foreach (User user in data)
                {
                    listaUsuarios.Add(new Usuario { Id = user.Id, Nombre = user.Nombre });
                }

                listBox1.ItemsSource = listaUsuarios;
            }
        }
        private void listBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            //Get the data object that represents the current selected item

            //TipoJuego data = (sender as ListBox).SelectedItem as TipoJuego;

            //Get the selected ListBoxItem container instance
            //ListBoxItem selectedItem = this.listBox1.ItemContainerGenerator.ContainerFromItem(data) as ListBoxItem;

            userSelected = (sender as ListBox).SelectedItem as Usuario;
            if (loadData == "true")
            {
                //Metric

                String AlturaMetrico = "";
                //Ingles
                double Pulgadas;
                double Pies;
                String AlturaIngles = "";

                DataUser userData = new DataUser();
                using (ContextoDatos ctx = new ContextoDatos())
                {
                    var user = ctx.Users.Where(x => x.Id == userSelected.Id).FirstOrDefault();
                    userData = ctx.Datas.Where(x => x.IdUsuario == userSelected.Id).OrderByDescending(o=>o.Fecha).First();

                    if (App.IsMetric)
                    {
                        double altura1 = Math.Floor(userData.Altura);
                        double altura2 = Math.Round(altura1 / 100, 2);
                        AlturaMetrico = String.Format("{0:0.00}", altura2);
                    }
                    else
                    {
                        Conversion.ToPies(userData.Altura, out Pies, out Pulgadas);
                        AlturaIngles = String.Format("{0}.{1}", Pies, Pulgadas);
                    }

                }

                if (App.IsMetric)
                {
                    NavigationService.Navigate(new Uri("/MainPage.xaml?dataIndiceDesc=" + indiceactivida.Where(o => o.indice == userData.Indice).SingleOrDefault().descripcion + "&dataGenero=" + userData.Genero + "&dataIndice=" + userData.Indice + "&dataEdad=" + userData.Edad + "&dataAltura=" + AlturaMetrico + "&dataPeso=" + Math.Floor(userData.Peso).ToString(), UriKind.Relative));
                }
                else
                {
                    NavigationService.Navigate(new Uri("/MainPage.xaml?dataIndiceDesc=" + indiceactivida.Where(o => o.indice == userData.Indice).SingleOrDefault().descripcion + "&dataGenero=" + userData.Genero + "&dataIndice=" + userData.Indice + "&dataEdad=" + userData.Edad + "&dataAltura=" + AlturaIngles + "&dataPeso=" + Math.Floor(Conversion.ToLibras(userData.Peso)).ToString(), UriKind.Relative));
                }

            }
            //ListBoxItem selectedItem = this.listBox1.ItemContainerGenerator.ContainerFromItem(userSelected) as ListBoxItem;

            //NavigationService.Navigate(new Uri("/SelectTypePivot.xaml?tipojuego=clasico", UriKind.Relative));
        }
        private void appbarAdd_Click(object sender, EventArgs e)
        {
            //ContextoDatos ctx = new ContextoDatos();

                String p1 = Resource.Indice_PersonaSedentaria;
                String p2=  Resource.Indice_Actividadfisicaligera.ToString() ;
                String p3 = Resource.Indice_ActividadfisicaMedia.ToString();
                String p4 = Resource.Indice_Personamuyactiva.ToString()  ;
                String p5 = Resource.Indice_Personaextremadamenteactiva.ToString();

                indiceactivida.Add(new IndiceActividad() { indice = 1.0, descripcion = p1 });
                indiceactivida.Add(new IndiceActividad() { indice = 1.2, descripcion = p2 });
                indiceactivida.Add(new IndiceActividad() { indice = 1.4, descripcion = p3 });
                indiceactivida.Add(new IndiceActividad() { indice = 1.6, descripcion = p4 });
                indiceactivida.Add(new IndiceActividad() { indice = 1.8, descripcion = p5 });

                (App.Current as App).CurrentUser = Convert.ToInt32(Id);

                double Pulgadas;
                double Pies;
                string peso="";
                string altura="";
                Boolean  entra = false;
                DataUser datosUsuario = new DataUser();
                using (ContextoDatos ctx = new ContextoDatos())
                {
                    datosUsuario = ctx.Datas.Where(o=>o.IdUsuario == Convert.ToInt32(Id)).OrderByDescending(o => o.Fecha ).ThenByDescending(o=> o.Id).First();

                    // datosUsuario = ctx.Datas.Where(x => x.Id == Convert.ToInt32(resultadoSelected.IdDato)).SingleOrDefault();

                    if (App.IsMetric)
                    {
                      altura = string.Format("{0:#,#0.00}",datosUsuario.Altura/100);
                      peso	 = string.Format("{0:#,#0.000}",datosUsuario.Peso);

                       NavigationService.Navigate(new Uri("/MainPage.xaml?dataIndiceDesc=" + indiceactivida.Where(o=> o.indice == datosUsuario.Indice).First().descripcion  + "&dataIndice=" + datosUsuario.Indice.ToString() + "&dataGenero=" + datosUsuario.Genero + "&dataEdad=" + datosUsuario.Edad.ToString() + "&dataAltura=" + altura + "&dataPeso=" + peso, UriKind.Relative));
                    }

                    else
                    {

                        Conversion.ToPies(datosUsuario.Altura, out Pies, out Pulgadas);
                        altura = String.Format("{0}.{1}", Pies, Pulgadas);
                        entra = true;

                    }
                }

                if (entra)
                {
                    NavigationService.Navigate(new Uri("/MainPage.xaml?dataIndiceDesc=" + indiceactivida.Where(o=> o.indice == datosUsuario.Indice).First().descripcion + "&dataIndice=" + datosUsuario.Indice.ToString() + "&dataGenero=" + datosUsuario.Genero + "&dataEdad=" + datosUsuario.Edad.ToString() + "&dataAltura=" + altura + "&dataPeso=" + string.Format("{0:#,#0}",Conversion.ToLibras(datosUsuario.Peso)), UriKind.Relative));
                }
        }
        void loadData()
        {
            listBox1.ItemsSource = null;
            List<Resultado> resultados = new List<Resultado>();
            ContextoDatos ctx = new ContextoDatos();
            var data = ctx.Datas.Where(o=>o.IdUsuario == Convert.ToInt32(Id)).OrderBy(o => o.Fecha ).ThenBy(o=> o.Id);

            var cultura = CultureInfo.CurrentCulture;

              //  CultureInfo culture = new CultureInfo("en-GB");
            RegionInfo regionInfo = new RegionInfo(cultura.Name);
            bool isMetric = regionInfo.IsMetric;
            //listaUsuarios.Add(new Usuario { Id = user.Id, Nombre = user.Nombre });

            double pesoAnterior=0;
            bool entra = false;
            foreach (DataUser dato in data)
            {

                Datos datos = new Datos(dato.Genero,dato.Altura,dato.Edad,dato.Peso,dato.Indice);

                DateTime Fecha = new DateTime();

                resultados.Add	(
                                new Resultado()
                                {
                                            IdUsuario       = dato.IdUsuario.ToString(),
                                            IdDato          = dato.Id,
                                            FechaOrder		= dato.Fecha,
                                            Fecha			= dato.Fecha.ToShortDateString(),
                                            FechaDia        = dato.Fecha.Day.ToString(),
                                            NomDia			= CultureInfo.CurrentCulture.DateTimeFormat.GetAbbreviatedDayName(dato.Fecha.DayOfWeek),
                                            FechaMes        = CultureInfo.CurrentCulture.DateTimeFormat.GetAbbreviatedMonthName(dato.Fecha.Month),
                                            imc				= string.Format("{0:#,#0.00}",datos.imc),
                                            Peso			= App.IsMetric?string.Format("{0:#,#0.000}kg",dato.Peso):string.Format("{0:#,#0}lb",Conversion.ToLibras(dato.Peso)),
                                            //Peso			= String.Format(cultura,"{0}{1}" ,Math.Round(App.IsMetric?datos.peso:Conversion.ToLibras(datos.peso) ,2), App.IsMetric ? "Kg" : "lb"),
                                            PorcentajeGrasa = String.Format(cultura,"{0}%"   ,Math.Round(datos.porcentajeGrasa	,2)),
                                            upVisible		= !entra?Visibility.Collapsed:dato.Peso > pesoAnterior?Visibility.Visible:Visibility.Collapsed,
                                            downVisible		= !entra?Visibility.Collapsed:dato.Peso < pesoAnterior?Visibility.Visible:Visibility.Collapsed,
                                            PesoDif			= !entra?"":resulDif(dato.Peso,pesoAnterior),
                                            ImcColor		= datos.imc < 18.5 || datos.imc > 25 ? new SolidColorBrush(Colors.Red): new SolidColorBrush(Colors.White)

                                }
                                );

                if(!entra)
                {
                    entra=true;
                }

                pesoAnterior =  dato.Peso;

            }

            listBox1.ItemsSource = resultados.OrderByDescending(o => o.FechaOrder ).ThenByDescending(o=> o.IdDato);
        }
        private void appbarVer_Click(object sender, EventArgs e)
        {
            if (resultadoSelected != null)
            {
                double Pulgadas;
                double Pies;
                string altura="";
                Boolean  entra = false;
                DataUser datosUsuario = new DataUser();
                using (ContextoDatos ctx = new ContextoDatos())
                {
                     datosUsuario = ctx.Datas.Where(x => x.Id == Convert.ToInt32(resultadoSelected.IdDato)).SingleOrDefault();

                    if (App.IsMetric)
                        NavigationService.Navigate(new Uri("/Resultadoss.xaml?dataIndiceDesc=" + String.Empty + "&dataIndice=" + datosUsuario.Indice.ToString() + "&dataGenero=" + datosUsuario.Genero + "&dataEdad=" + datosUsuario.Edad.ToString() + "&dataAltura=" + datosUsuario.Altura.ToString() + "&dataPeso=" + datosUsuario.Peso.ToString(), UriKind.Relative));
                    else
                    {

                        Conversion.ToPies(datosUsuario.Altura, out Pies, out Pulgadas);
                        altura = String.Format("{0}.{1}", Pies, Pulgadas);
                        entra = true;
                    }

                }

                if (entra)
                {
                    NavigationService.Navigate(new Uri("/Resultadoss.xaml?dataIndiceDesc=" + String.Empty + "&dataIndice=" + datosUsuario.Indice.ToString() + "&dataGenero=" + datosUsuario.Genero + "&dataEdad=" + datosUsuario.Edad.ToString() + "&dataAltura=" + altura + "&dataPeso=" +string.Format("{0:#,#0}",Conversion.ToLibras(datosUsuario.Peso)), UriKind.Relative));
                }

            }
            else
            {
                MessageBox.Show(Resource.EditarUserNoSelected);
            }
        }
        private void appbarSave_Click(object sender, EventArgs e)
        {
            var items = (List<Usuario>)listBox1.ItemsSource;

            var selectedItem = items != null ? items.Where(x => x.Selected).FirstOrDefault() : null;

            if ((String.IsNullOrEmpty(textBox1.Text) || String.IsNullOrWhiteSpace(textBox1.Text)) && selectedItem == null)
                MessageBox.Show(Resource.CompleteInformacion);
            else
            {

                String Nombre = "";
                String Id = "";
                if (selectedItem != null)
                    Nombre = selectedItem.Nombre;
                else
                    Nombre = textBox1.Text;

                try
                {

                    if (selectedItem == null)
                    {

                        //ContextoDatos.DeleteDB();
                        ContextoDatos.CrearDBSiNoExiste();
                        User user = new User()
                        {
                            Nombre = textBox1.Text
                        };

                        DataUser datauser = new DataUser()
                        {
                            Altura = App.IsMetric ? Conversion.ConverDouble(dataAltura) : Conversion.ToCentimetros(Conversion.ConverDouble(dataAltura.Split('.').First()),
                                                                                                                 Conversion.ConverDouble(dataAltura.Split('.').Last())),
                            Edad = Convert.ToInt32(dataEdad),
                            Fecha =Convert.ToDateTime(datePicker1.Value),
                            Genero = dataGenero,
                            Indice = Conversion.ConverDouble(dataIndice),
                            //Peso = App.IsMetric ? Convert.ToDouble(dataPeso) : Conversion.ToKilogramos(Convert.ToDouble(dataPeso)),
                             Peso = App.IsMetric ? Convert.ToDouble(dataPeso) : Conversion.ToKilogramos(Convert.ToDouble(dataPeso)),

                            User = user
                        };

                        using (ContextoDatos ctx = new ContextoDatos())
                        {
                            ctx.GetTable<User>().InsertOnSubmit(user);
                            ctx.GetTable<DataUser>().InsertOnSubmit(datauser);
                            ctx.SubmitChanges();

                            Id = user.Id.ToString();
                        }
                    }
                    else
                    {
                        DataUser datauser = new DataUser();

                        datauser.Altura = App.IsMetric ? Conversion.ConverDouble(dataAltura)  : Conversion.ToCentimetros(Conversion.ConverDouble(dataAltura.Split('.').First()),
                                                                                                                 Conversion.ConverDouble(dataAltura.Split('.').Last()));
                        datauser.Edad	= Convert.ToInt32(dataEdad);
                        datauser.Fecha	= Convert.ToDateTime(datePicker1.Value);
                        datauser.Genero = dataGenero;
                        datauser.Indice = Conversion.ConverDouble(dataIndice);
                       // datauser.Peso	= App.IsMetric ? Convert.ToDouble(dataPeso)  : Conversion.ToKilogramos(Convert.ToDouble(dataPeso));
                        //datauser.Peso	= App.IsMetric ? Convert.ToDouble(dataPeso.Replace(",",".")): Conversion.ToKilogramos(Convert.ToDouble(dataPeso.Replace(",",".")));
                        datauser.Peso   = App.IsMetric?  Convert.ToDouble(dataPeso.Replace(System.Globalization.CultureInfo.InvariantCulture.NumberFormat.CurrencyDecimalSeparator.ToString(), ".")):Conversion.ToKilogramos(Convert.ToDouble(dataPeso));

                        using (ContextoDatos ctx = new ContextoDatos())
                        {
                            datauser.User = ctx.Users.Where(x => x.Id == selectedItem.Id).SingleOrDefault();

                            ctx.GetTable<DataUser>().InsertOnSubmit(datauser);
                            ctx.SubmitChanges();

                            Id = selectedItem.Id.ToString();
                        }
                    }

                    (App.Current as App).CurrentUser = null;
                    MessageBox.Show(Resource.DataSaved);
                    NavigationService.Navigate(new Uri("/DataUsers.xaml?Id=" + Id, UriKind.Relative));
                    //loadUsers();
                }
                catch (DbException x)
                {
                    MessageBox.Show("Error al insertar: " + x.Message);
                }
            }
        }
        void loadUsers()
        {
            listBox1.ItemsSource = null;
            List<Usuario> listaUsuarios = new List<Usuario>();
            ContextoDatos ctx = new ContextoDatos();
            var data = ctx.Users.OrderBy(o=>o.Nombre);
            if(ctx.DatabaseExists())
            {
                foreach(User user in data)
                {
                    if((App.Current as App).CurrentUser.HasValue)
                    {
                        if(user.Id  == (App.Current as App).CurrentUser.Value)
                            listaUsuarios.Add(new Usuario{ Id = user.Id, Nombre = user.Nombre, Selected = true});
                        else
                            listaUsuarios.Add(new Usuario{ Id = user.Id, Nombre = user.Nombre});
                    }
                    else
                    {
                        listaUsuarios.Add(new Usuario{ Id = user.Id, Nombre = user.Nombre});
                    }

                }
                listBox1.ItemsSource = listaUsuarios;

            }
        }