/**
         * Método público que permite la conexión con la base de datos para traer la información personal de un cliente de acuerdo a su numero de cedula
         * @param ced string
         * @return un cliente
         */
        public TOClienteNutricion TraerInfoPersonal(string ced)
        {
            TOClienteNutricion cliente = new TOClienteNutricion();
            string             qry     = "Select * from Cliente_Nutricion c,Usuario u where c.Cedula = u.Cedula AND u.Cedula = " + ced;
            SqlCommand         buscar  = new SqlCommand(qry, conexion);
            SqlDataReader      lector;

            if (conexion.State != ConnectionState.Open)
            {
                conexion.Open();
            }
            lector = buscar.ExecuteReader();
            if (lector.HasRows)
            {
                lector.Read();
                cliente = new TOClienteNutricion(Int32.Parse(lector["Cedula"].ToString()), lector["Correo"].ToString(), lector["Nombre"].ToString(), lector["Apellido1"].ToString(),
                                                 lector["Apellido2"].ToString(), DateTime.Parse(lector["Fecha_Nacimiento"].ToString()), Char.Parse(lector["Sexo"].ToString()),
                                                 lector["Estado_Civil"].ToString(), Char.Parse(lector["WhatsApp"].ToString()), Int32.Parse(lector["Telefono"].ToString()), lector["Residencia"].ToString(), lector["Ocupacion"].ToString(), DateTime.Parse(lector["FechaIngreso"].ToString()), lector["Consultorio"].ToString());

                conexion.Close();
                return(cliente);
            }
            else
            {
                conexion.Close();
                return(null);
            }
        }
        /**
         * Método publico que trae de la Base de datos la información personal del cliente
         * @param ced, cedula del cliente
         */
        public ClienteNutricion TraerInformación(string ced)
        {
            ClienteNutricion   cliente   = new ClienteNutricion();
            TOClienteNutricion TOcliente = daoClienteNutricion.TraerInfoPersonal(ced);

            if (TOcliente != null)
            {
                cliente.Cedula           = TOcliente.Cedula;
                cliente.Correo           = TOcliente.Correo;
                cliente.Nombre           = TOcliente.Nombre;
                cliente.Apellido1        = TOcliente.Apellido1;
                cliente.Apellido2        = TOcliente.Apellido2;
                cliente.Fecha_Nacimiento = TOcliente.Fecha_Nacimiento;
                cliente.Sexo             = TOcliente.Sexo;
                cliente.Estado_Civil     = TOcliente.Estado_Civil;
                cliente.WhatsApp         = TOcliente.WhatsApp;
                cliente.Telefono         = TOcliente.Telefono;
                cliente.Residencia       = TOcliente.Residencia;
                cliente.Ocupacion        = TOcliente.Ocupacion;
                cliente.FechaIngreso     = TOcliente.FechaIngreso;
                cliente.Consultorio      = TOcliente.Consultorio;
                cliente.Estado           = TOcliente.Estado;
                return(cliente);
            }
            else
            {
                return(null);
            }
        }
        public bool ModificarExped(ClienteNutricion clienteModif, HistorialMedico histModif, HabitoAlimentario habModif, List <Recordatorio24H> listRecordModif, Antropometria antropModif, Porciones porcModif, List <DistribucionPorciones> distrModif)
        {
            TOClienteNutricion cliente = new TOClienteNutricion();

            cliente.Cedula    = clienteModif.Cedula; cliente.Nombre = clienteModif.Nombre; cliente.Apellido1 = clienteModif.Apellido1; cliente.Apellido2 = clienteModif.Apellido2; cliente.Fecha_Nacimiento = clienteModif.Fecha_Nacimiento;
            cliente.Sexo      = clienteModif.Sexo; cliente.Estado_Civil = clienteModif.Estado_Civil; cliente.WhatsApp = clienteModif.WhatsApp; cliente.Telefono = clienteModif.Telefono; cliente.Residencia = clienteModif.Residencia;
            cliente.Ocupacion = clienteModif.Ocupacion; cliente.FechaIngreso = clienteModif.FechaIngreso; cliente.Correo = clienteModif.Correo; cliente.Consultorio = clienteModif.Consultorio; cliente.Estado = clienteModif.Estado;

            TOHistorialMedico histmed = new TOHistorialMedico();

            histmed.Cedula       = histModif.Cedula; histmed.Antecedentes = histModif.Antecedentes; histmed.Patologias = histModif.Patologias;
            histmed.ConsumeLicor = histModif.ConsumeLicor; histmed.Fuma = histModif.Fuma; histmed.FrecFuma = histModif.FrecFuma;
            histmed.FrecLicor    = histModif.FrecLicor; histmed.UltimoExamen = histModif.UltimoExamen; histmed.ActividadFisica = histModif.ActividadFisica;

            TOHabitoAlimentario habAlime = new TOHabitoAlimentario();

            habAlime.Cedula            = habModif.Cedula; habAlime.ComidaDiaria = habModif.ComidaDiaria;  habAlime.ComidaHorasDia = habModif.ComidaHorasDia;
            habAlime.AfueraExpress     = habModif.AfueraExpress;  habAlime.ComidaFuera = habModif.ComidaFuera;  habAlime.AzucarBebida = habModif.AzucarBebida;
            habAlime.ComidaElaboradCon = habModif.ComidaElaboradCon;  habAlime.AguaDiaria = habModif.AguaDiaria;
            habAlime.Aderezos          = habModif.Aderezos;  habAlime.Fruta = habModif.Fruta;  habAlime.Verdura = habModif.Verdura;  habAlime.Leche = habModif.Leche;
            habAlime.Huevo             = habModif.Huevo;  habAlime.Yogurt = habModif.Yogurt;  habAlime.Carne = habModif.Carne;
            habAlime.Queso             = habModif.Queso;  habAlime.Aguacate = habModif.Aguacate;  habAlime.Semillas = habAlime.Semillas;

            List <TORecordatorio24H> listRecord = new List <TORecordatorio24H>();

            foreach (Recordatorio24H r in listRecordModif)
            {
                listRecord.Add(new TORecordatorio24H(r.Cedula, r.TiempoComida, r.Hora, r.Descripcion));
            }

            TOAntropometria antrop = new TOAntropometria();

            antrop.Cedula         = antropModif.Cedula; antrop.Talla = antropModif.Talla; antrop.PesoIdeal = antropModif.PesoIdeal; antrop.Edad = antropModif.Edad; antrop.PMB = antropModif.PMB;
            antrop.Peso           = antropModif.Peso;  antrop.PesoMaxTeoria = antropModif.PesoMaxTeoria;  antrop.IMC = antropModif.IMC;  antrop.PorcGrasaAnalizador = antropModif.PorcGrasaAnalizador;  antrop.PorcGr_Bascula = antropModif.PorcGr_Bascula;
            antrop.GB_BI          = antropModif.GB_BI;  antrop.GB_BD = antropModif.GB_BD; antrop.GB_PI = antropModif.GB_PI;  antrop.GB_PD = antropModif.GB_PD;  antrop.GB_Tronco = antropModif.GB_Tronco;
            antrop.AguaCorporal   = antropModif.AguaCorporal; antrop.MasaOsea = antropModif.MasaOsea;  antrop.Complexión = antropModif.Complexión;  antrop.EdadMetabolica = antropModif.EdadMetabolica;  antrop.Cintura = antropModif.Cintura;
            antrop.Abdomen        = antropModif.Abdomen;  antrop.Cadera = antropModif.Cadera;  antrop.MusloDer = antropModif.MusloDer;  antrop.MusloIzq = antropModif.MusloIzq;  antrop.CBM = antropModif.CBM;
            antrop.CircunfMunneca = antropModif.CircunfMunneca;  antrop.PorcentGViceral = antropModif.PorcentGViceral;  antrop.PorcentMusculo = antropModif.PorcentMusculo;  antrop.PM_BI = antropModif.PM_BI;  antrop.PM_PD = antropModif.PM_PD;
            antrop.PM_BD          = antropModif.PM_BD;  antrop.PM_PI = antropModif.PM_PI;  antrop.PM_Tronco = antropModif.PM_Tronco;  antrop.Observaciones = antropModif.Observaciones;
            antrop.GEB            = antropModif.GEB;  antrop.GET = antropModif.GET;  antrop.CHOPorc = antropModif.CHOPorc;  antrop.CHOGram = antropModif.CHOGram; antrop.CHO_kcal = antropModif.CHO_kcal;
            antrop.ProteinaPorc   = antropModif.ProteinaPorc;  antrop.ProteinaGram = antropModif.ProteinaGram;  antrop.Proteinakcal = antropModif.Proteinakcal; antrop.GrasaPorc = antropModif.GrasaPorc; antrop.GrasaGram = antropModif.GrasaGram;  antrop.Grasakcal = antropModif.Grasakcal;

            TOPorciones porc = new TOPorciones();

            porc.Cedula    = porcModif.Cedula; porc.Leche = porcModif.Leche; porc.Carne = porcModif.Carne;
            porc.Vegetales = porcModif.Vegetales;  porc.Grasa = porcModif.Grasa;  porc.Fruta = porcModif.Fruta;
            porc.Azucar    = porcModif.Azucar;  porc.Harina = porcModif.Harina; porc.Suplemento = porcModif.Suplemento;

            List <TODistribucionPorciones> listDist = new List <TODistribucionPorciones>();

            foreach (DistribucionPorciones d in distrModif)
            {
                listDist.Add(new TODistribucionPorciones(d.Descripcion, d.TiempoComida, d.Hora, d.Cedula));
            }

            return(daoClienteNutricion.ModificarExpediente(cliente, histmed, habAlime, listRecord, antrop, porc, listDist));
        }
        /**
         * Método publico que permite crear un TOcliente
         * @param cedula, datos del usuario
         * @param correo, datos del usuario
         * @param nombre, datos del usuario
         * @param apellido1, datos del usuario
         * @param apellido2, datos del usuario
         * @param fecha_Nacimiento, datos del usuario
         * @param sexo, datos del usuario
         * @param estado_Civil, datos del usuario
         * @param whatsApp, datos del usuario
         * @param estado_Civil, datos del usuario
         * @param telefono, datos del usuario
         * @param residencia, datos del usuario
         * @param ocupacion, datos del usuario
         * @param fechaIngreso, datos del usuario
         * @param consultorio, datos del usuario
         * @param estado, datos del usuario
         * @return bool, retorna si se creó correctamente o no.
         */
        public Boolean CrearCliente(int cedula, string correo, string nombre, string apellido1, string apellido2, DateTime fecha_Nacimiento, char sexo, string estado_Civil, char whatsApp, int telefono, string residencia, string ocupacion, DateTime fechaIngreso, string consultorio, int estado)
        {
            if (cedula.Equals(""))
            {
                return(false);
            }
            TOClienteNutricion usuario = new TOClienteNutricion(cedula, correo, nombre, apellido1, apellido2, fecha_Nacimiento, sexo, estado_Civil, whatsApp, telefono, residencia, ocupacion, fechaIngreso, consultorio, estado);

            return(daoClienteNutricion.CrearUsuario(usuario));
        }
        /**
         * Método público que permite la conexión con la base de datos para crear un cliente
         * @param tOCliente TOClienteNutricion
         * @return un parámetro de tipo booleano que devuelve un true si se guardó en la base o flase si no se guardó.
         */
        public bool CrearUsuario(TOClienteNutricion tOCliente)
        {
            String query1 = "Insert into Usuario values(@ced,@cor,@nomb,@whats,@tel,@ape1,@ape2,@rol);";
            String query2 = "Insert into Cliente_Nutricion values(@fechNac,@sexo,@estCiv,@resid,@ocup,@ced,@ingres,@consult,@estado);";

            SqlCommand cmd  = new SqlCommand(query1, conexion);
            SqlCommand cmd2 = new SqlCommand(query2, conexion);

            try
            {
                cmd.Parameters.AddWithValue("@ced", tOCliente.Cedula);
                cmd.Parameters.AddWithValue("@cor", tOCliente.Correo);
                cmd.Parameters.AddWithValue("@nomb", tOCliente.Nombre);
                cmd.Parameters.AddWithValue("@whats", tOCliente.WhatsApp);
                cmd.Parameters.AddWithValue("@tel", tOCliente.Telefono);
                cmd.Parameters.AddWithValue("@ape1", tOCliente.Apellido1);
                cmd.Parameters.AddWithValue("@ape2", tOCliente.Apellido2);
                cmd.Parameters.AddWithValue("@rol", "clienteNutri");


                cmd2.Parameters.AddWithValue("@fechNac", tOCliente.Fecha_Nacimiento);
                cmd2.Parameters.AddWithValue("@sexo", tOCliente.Sexo);
                cmd2.Parameters.AddWithValue("@estCiv", tOCliente.Estado_Civil);
                cmd2.Parameters.AddWithValue("@resid", tOCliente.Residencia);
                cmd2.Parameters.AddWithValue("@ocup", tOCliente.Ocupacion);
                cmd2.Parameters.AddWithValue("@ced", tOCliente.Cedula);
                cmd2.Parameters.AddWithValue("@ingres", DateTime.Now);
                cmd2.Parameters.AddWithValue("@consult", tOCliente.Consultorio);
                cmd2.Parameters.AddWithValue("@estado", tOCliente.Estado);

                if (conexion.State != ConnectionState.Open)
                {
                    conexion.Open();
                }

                cmd.ExecuteNonQuery();

                cmd2.ExecuteNonQuery();

                conexion.Close();

                return(true);
            }
            catch (SqlException)
            {
                return(false);
            }
        }
        /**
         * Método público que permite la conexión con la base de datos para realizar la busqueda de un cliente segun su numero de cedula
         * @param cedula string
         * @return un parámetro de tipo booleano que devuelve un true si se encontró en la base o flase si no se encontró.
         */
        public Boolean buscarCedula(String cedula)
        {
            try
            {
                TOClienteNutricion cliente = new TOClienteNutricion();
                String             query   = "select * from Cliente_Nutricion where Cedula = @ced";
                SqlCommand         cmd     = new SqlCommand(query, conexion);
                cmd.Parameters.AddWithValue("ced", cedula);
                conexion.Open();
                SqlDataReader lector = cmd.ExecuteReader();

                if (lector.HasRows)
                {
                    return(true);
                }
                conexion.Close();
                return(false);
            }
            catch (Exception)
            {
                return(false);
            }
        }
        /**
         * Método público que permite la conexión con la base de datos para modificar datos del expediente
         * @param cedula string
         * @return un parámetro de tipo bool, que indica si se realizo correctamente la accion o no
         */
        public bool ModificarExpediente(TOClienteNutricion clienteModif, TOHistorialMedico histModif, TOHabitoAlimentario habModif, List <TORecordatorio24H> listRecordModif, TOAntropometria antropModif, TOPorciones porcModif, List <TODistribucionPorciones> distrModif)
        {
            string query = "UPDATE Cliente_Nutricion  SET Fecha_Nacimiento = '" + clienteModif.Fecha_Nacimiento.ToString("yyyy-MM-dd") + "', " +
                           "Sexo = '" + clienteModif.Sexo + "', Estado_Civil = '" + clienteModif.Estado_Civil + "'," +
                           " Residencia = '" + clienteModif.Residencia + "', Ocupacion = '" + clienteModif.Ocupacion + "'," +
                           " FechaIngreso = '" + clienteModif.FechaIngreso.ToString("yyyy-MM-dd") + "', Consultorio = '" + clienteModif.Consultorio + "' WHERE Cedula = " + clienteModif.Cedula + "; ";

            string query2 = "UPDATE Historial_Medico SET Antecedentes_Fam = '" + histModif.Antecedentes + "', Patologias = '" + histModif.Patologias + "'," +
                            "Cosumo_Licor = " + histModif.ConsumeLicor + ", Fumador = " + histModif.Fuma + ", FrecFumar = '" + histModif.FrecFuma + "'," +
                            "FrecTomar = '" + histModif.FrecLicor + "', ActividadFisica = '" + histModif.ActividadFisica + "'," +
                            "Fecha_Ult_Exm = '" + histModif.UltimoExamen.ToString("yyyy-MM-dd") + "' WHERE Cedula =" + histModif.Cedula + ";";

            string query3 = "UPDATE HabitosAlimentario SET ComidasDiarias = " + habModif.ComidaDiaria + "," +
                            "Com_Hor_Dias = '" + habModif.ComidaHorasDia + "', Afuera_Express = " + habModif.AfueraExpress + "," +
                            "ComidaFuera = '" + habModif.ComidaFuera + "', AzucarBebida = '" + habModif.AzucarBebida + "'," +
                            "ComidaElaborada_Con = '" + habModif.ComidaElaboradCon + "', VasosAguaDiaria = " + habModif.AguaDiaria + ", " +
                            "Aderezos = '" + habModif.Aderezos + "', Fruta = '" + habModif.Fruta + "', Verdura = '" + habModif.Verdura + "', Leche = '" + habModif.Leche + "', " +
                            "Huevo = '" + habModif.Huevo + "', Yogurt = '" + habModif.Yogurt + "', Carne = '" + habModif.Carne + "', Queso = '" + habModif.Queso + "'," +
                            "Aguacate = '" + habModif.Aguacate + "', Semillas = '" + habModif.Semillas + "' WHERE Cedula = " + habModif.Cedula + ";";

            string query8 = "UPDATE Usuario SET Correo = '" + clienteModif.Correo + "', Nombre = '" + clienteModif.Nombre + "', WhatsApp = '" + clienteModif.WhatsApp + "'," +
                            "Telefono = '" + clienteModif.Telefono + "', Apellido1 = '" + clienteModif.Apellido1 + "', Apellido2 = '" + clienteModif.Apellido2 + "'" +
                            "WHERE Cedula = " + clienteModif.Cedula + "; ";

            SqlCommand cmd  = new SqlCommand(query, conexion);
            SqlCommand cmd2 = new SqlCommand(query2, conexion);
            SqlCommand cmd3 = new SqlCommand(query3, conexion);
            SqlCommand cmd8 = new SqlCommand(query8, conexion);

            try
            {
                if (conexion.State != ConnectionState.Open)
                {
                    conexion.Open();
                }

                cmd.ExecuteNonQuery();
                cmd2.ExecuteNonQuery();
                cmd3.ExecuteNonQuery();
                cmd8.ExecuteNonQuery();
                conexion.Close();

                foreach (TORecordatorio24H R in listRecordModif)
                {
                    string     query4 = "UPDATE Recordat24H SET Hora = '" + R.Hora + "', Descripcion = '" + R.Descripcion + "' WHERE Cedula = " + R.Cedula + " and TiempoComida = '" + R.TiempoComida + "'; ";
                    SqlCommand cmd4   = new SqlCommand(query4, conexion);
                    conexion.Open();
                    cmd4.ExecuteNonQuery();
                    conexion.Close();
                }

                string query5 = "UPDATE Antropometria SET Talla = " + antropModif.Talla + ", " +
                                "PesoIdeal = " + antropModif.PesoIdeal + ", Edad = " + antropModif.Edad + ", " +
                                "PMB = " + antropModif.PMB + ", Peso = " + antropModif.Peso + ", PesoMaxTeoria = " + antropModif.PesoMaxTeoria + ", " +
                                "IMC = " + antropModif.IMC + ", PorcGrasaAnalizador = " + antropModif.PorcGrasaAnalizador + ", " +
                                "PorcGr_Bascula = " + antropModif.PorcGr_Bascula + ", GB_BI = " + antropModif.GB_BI + ", GB_BD = " + antropModif.GB_BD + ", " +
                                "GB_PI = " + antropModif.GB_PI + ", GB_PD = " + antropModif.GB_PD + ", GB_Tronco = " + antropModif.GB_Tronco + ", " +
                                "AguaCorporal = " + antropModif.AguaCorporal + ", MasaOsea = " + antropModif.MasaOsea + ", Complexion = " + antropModif.Complexión + "," +
                                "Edad_Metabolica = " + antropModif.EdadMetabolica + ", Cintura = " + antropModif.Cintura + ", Abdomen = " + antropModif.Abdomen + "," +
                                "Cadera = " + antropModif.Cadera + ", Muslo_Der = " + antropModif.MusloDer + ", Muslo_Izq = " + antropModif.MusloIzq + "," +
                                "CBM = " + antropModif.CBM + ", CircunfMunneca = " + antropModif.CircunfMunneca + ", PorcentGViceral = " + antropModif.PorcentGViceral + "," +
                                "PorcentMusculo = " + antropModif.PorcentMusculo + ", PM_BI = " + antropModif.PM_BI + ", PM_PD = " + antropModif.PM_PD + ", " +
                                "PM_BD = " + antropModif.PM_BD + ", PM_PI = " + antropModif.PM_PI + ", PM_Troco = " + antropModif.PM_Tronco + ", Observaciones = '" + antropModif.Observaciones + "'," +
                                "GEB = " + antropModif.GEB + ", GET = " + antropModif.GET + ", CHOPorc = " + antropModif.CHOPorc + ", CHOGram = " + antropModif.CHOGram + "," +
                                "CHOkcal = " + antropModif.CHO_kcal + ", ProteinaPorc = " + antropModif.ProteinaPorc + ", ProteinaGram = " + antropModif.ProteinaGram + "," +
                                "Proteinakcal = " + antropModif.Proteinakcal + ", GrasaPorc = " + antropModif.GrasaPorc + ", GrasaGram = " + antropModif.GrasaGram + ", " +
                                "Grasakcal = " + antropModif.Grasakcal + " WHERE Cedula = " + antropModif.Cedula + "; ";

                string query6 = "UPDATE  Porciones SET Leche = " + porcModif.Leche + ", Carne = " + porcModif.Carne + ", Vegetales = " + porcModif.Vegetales + "," +
                                "Grasa = " + porcModif.Grasa + ", Fruta = " + porcModif.Fruta + ", Azucar = " + porcModif.Azucar + ", Harina = " + porcModif.Harina + "," +
                                "Suplemento = " + porcModif.Suplemento + " WHERE Cedula = " + porcModif.Cedula + "; ";

                SqlCommand cmd5 = new SqlCommand(query5, conexion);
                SqlCommand cmd6 = new SqlCommand(query6, conexion);
                conexion.Open();
                cmd5.ExecuteNonQuery();
                cmd6.ExecuteNonQuery();
                conexion.Close();

                foreach (TODistribucionPorciones D in distrModif)
                {
                    string     query7 = "UPDATE  DistribucionPorcion SET Hora = '" + D.Hora + "', Descripcion = '" + D.Descripcion + "' WHERE Cedula = " + D.Cedula + " and TiempoComida = '" + D.TiempoComida + "'; ";
                    SqlCommand cmd7   = new SqlCommand(query7, conexion);
                    conexion.Open();
                    cmd7.ExecuteNonQuery();
                    conexion.Close();
                }

                return(true);
            }
            catch (Exception e)
            {
                return(false);
            }
        }