public static Mensaje Create(UsuarioEntity user)
        {
            try
            {
                using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["default"].ToString()))
                {

                    int j;
                    bool result = Int32.TryParse(user.PCodigoSuscripcion, out j);
                    if (true == result)
                        result = true;
                    else
                        result = false;
                    if (result == true)
                    {
                        string sql = @"INSERT INTO USUARIOS_TMP_GLOBAL (USUARIO,SUSCRIPCION, PWD, NOMBRE,APELLIDO,EMAIL,ESTADO,producto)
                                    VALUES (@usuario, @suscripcion, @pwd,@nombre,@apellido,@email,@estado,@producto)
                              ";

                        SqlCommand cmd = new SqlCommand(sql, conn);
                        conn.Open();
                        cmd.Parameters.AddWithValue("@usuario", NonBlankValueOf(user.PID));
                        cmd.Parameters.AddWithValue("@suscripcion", NonBlankValueOf(user.PCodigoSuscripcion));
                        cmd.Parameters.AddWithValue("@pwd", NonBlankValueOf(user.PClave));
                        cmd.Parameters.AddWithValue("@nombre", NonBlankValueOf(user.PNombre));
                        cmd.Parameters.AddWithValue("@apellido", NonBlankValueOf(user.PApellido));
                        cmd.Parameters.AddWithValue("@email", NonBlankValueOf(user.PEmail));
                        cmd.Parameters.AddWithValue("@estado", user.PEstado);
                        cmd.Parameters.AddWithValue("@producto", user.PProducto);
                        cmd.ExecuteNonQuery();
                        conn.Close();
                        CreateUser();

                        return new Mensaje(true, "Se crearon correctamente");
                    }

                    else
                    {
                        return new Mensaje(false, "Existio un error, campos deben ser enteros");
                    }
                }
            }
            catch (SqlException ex)
            {
                //Pass the filepath and filename to the StreamWriter Constructor
                StreamWriter sw = new StreamWriter("C:\\Log.txt");
                //Write a second line of text
                sw.WriteLine(ex.ToString());
                //Close the file
                sw.Close();
                return new Mensaje(false, "Error Crear Usuario");

            }
        }
        public static Mensaje Create(RangoEntity rango,UsuarioEntity usuario)
        {
            try
            {
                using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["default"].ToString()))
                {
                    string sql = @"INSERT INTO Rango(IpInicio,IpFinal,Sesiones,ClienteId,SuscripcionId,SesionesUsadas,Clave,Mail,Activo)
                                    VALUES (@IpInicio, @IpFinal, @Sesiones,@ClienteId,@SuscripcionId,@SesionesUsadas,@Clave,@Mail,@Activo)
                              ";

                    conn.Open();
                    SqlCommand cmd = new SqlCommand(sql, conn);

                    cmd.Parameters.AddWithValue("@IpInicio", NonBlankValueOf(rango.PIpInicio));
                    cmd.Parameters.AddWithValue("@IpFinal", NonBlankValueOf(rango.PIpFinal));
                    cmd.Parameters.AddWithValue("@Sesiones", rango.PSesiones);
                    cmd.Parameters.AddWithValue("@ClienteId", rango.PClienteId);
                    cmd.Parameters.AddWithValue("@SuscripcionId", rango.PSuscripcionId);
                    cmd.Parameters.AddWithValue("@SesionesUsadas", rango.PSesionesUsadas);
                    cmd.Parameters.AddWithValue("@Clave", NonBlankValueOf(rango.PClave));
                    cmd.Parameters.AddWithValue("@Mail", NonBlankValueOf(rango.PMail));
                    cmd.Parameters.AddWithValue("@Activo", rango.PActivo);
                    cmd.ExecuteNonQuery();
                    conn.Close();

                    sql = @"INSERT INTO UsuarioRango(Id,RangoId,Clave)
                                    VALUES (@Id, @RangoId, @Clave)
                              ";

                    conn.Open();
                    SqlCommand cmd2 = new SqlCommand(sql, conn);

                    cmd2.Parameters.AddWithValue("@Id", NonBlankValueOf(usuario.PID));
                    cmd2.Parameters.AddWithValue("@RangoId", Convert.ToString(Ultimo()));
                    cmd2.Parameters.AddWithValue("@Clave", rango.PClave);
                    cmd2.ExecuteNonQuery();
                    conn.Close();

                    return new Mensaje(true, "Se creo Rango correctamente");
                }
            }
            catch (SqlException ex) {
                //Pass the filepath and filename to the StreamWriter Constructor
                StreamWriter sw = new StreamWriter("C:\\Log.txt");
              //Write a second line of text
                sw.WriteLine(ex.ToString());
                //Close the file
                sw.Close();
                return new Mensaje(false, "Error Crear Cliente");

            }
        }
        public Mensaje Save(RangoEntity rango,UsuarioEntity usuario)
        {
            if (RangoDAL.Exists(rango.PRangoId))

            {

                return RangoDAL.Update(rango,usuario);

            }
            else
            {
                RangoDAL.Create(rango,usuario);
                return new Mensaje();
            }
        }
        public Mensaje Save(UsuarioEntity user)
        {
            if (UsuarioDAL.Exists(user.PID))
            {
                if (UsuarioDAL.ExistsOriginal(user.PID) == false) {
                    UsuarioDAL.CreateUser();
                }
                return UsuarioDAL.Update(user);

            }
            else
            {
                UsuarioDAL.Create(user);
                return new Mensaje();
            }
        }
        public static Mensaje Update(RangoEntity rango, UsuarioEntity usuario)
        {
            try
            {
                using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["default"].ToString()))
                {
                    conn.Open();

                    string sql = @"UPDATE Rango SET
                                    IpInicio=@IpInicio,
                                    IpFinal=@IpFinal,
                                    Sesiones=@Sesiones,
                                    ClienteId=@ClienteId,
                                    SuscripcionId=@SuscripcionId,
                                    SesionesUsadas=@SesionesUsadas,
                                    Clave=@Clave,
                                    Mail=@Mail,
                                    Activo=@Activo
                                    WHERE Id = @Id";

                    SqlCommand cmd = new SqlCommand(sql, conn);

                    cmd.Parameters.AddWithValue("@IpInicio", NonBlankValueOf(rango.PIpInicio));
                    cmd.Parameters.AddWithValue("@IpFinal", NonBlankValueOf(rango.PIpFinal));

                    cmd.Parameters.AddWithValue("@Sesiones",rango.PSesiones);
                    cmd.Parameters.AddWithValue("@ClienteId", rango.PClienteId);
                    cmd.Parameters.AddWithValue("@SuscripcionId", rango.PSuscripcionId);
                    cmd.Parameters.AddWithValue("@SesionesUsadas", rango.PSesionesUsadas);

                    cmd.Parameters.AddWithValue("@Clave", NonBlankValueOf(rango.PClave));
                    cmd.Parameters.AddWithValue("@Mail", NonBlankValueOf(rango.PMail));
                    cmd.Parameters.AddWithValue("@Activo", rango.PActivo);
                    cmd.Parameters.AddWithValue("@Id", rango.PRangoId);
                    cmd.ExecuteNonQuery();

                    sql = @"UPDATE UsuarioRango SET
                                    RangoId = @RangoId,
                                    Clave=@Clave
                                    where Id=@Id ";

                    SqlCommand cmd2 = new SqlCommand(sql, conn);

                    cmd2.Parameters.AddWithValue("@RangoId", NonBlankValueOf(rango.PRangoId));
                    cmd2.Parameters.AddWithValue("@Clave", NonBlankValueOf(rango.PClave));

                    cmd2.Parameters.AddWithValue("@Id", NonBlankValueOf(usuario.PID));

                    cmd2.ExecuteNonQuery();

                    conn.Close();
                    return new Mensaje(true, "Se actualizo Rango correctamente");

                }
            }
            catch (SqlException ex)
            {
                //Pass the filepath and filename to the StreamWriter Constructor
                StreamWriter sw = new StreamWriter("C:\\Log.txt");
                //Write a second line of text
                sw.WriteLine(ex.ToString());
                //Close the file
                sw.Close();
                return new Mensaje(false, "Error Actualizar Rango");

            }
        }
        private static UsuarioEntity LoadUser(IDataReader reader)
        {
            UsuarioEntity user = new UsuarioEntity();

            user.PID = Convert.ToString(reader["USUARIO"]);
            user.PCodigoSuscripcion = Convert.ToString(reader["SUSCRIPCION"]);
            user.PClave = Convert.ToString(reader["PWD "]);
            user.PNombre = Convert.ToString(reader["NOMBRE"]);
            user.PApellido = Convert.ToString(reader["APELLIDO"]);
            user.PEmail = Convert.ToString(reader["EMAIL"]);
            user.PEstado = Convert.ToInt32(reader["ESTADO"]);
            user.PProducto = Convert.ToInt32(reader["producto"]);

            return user;
        }
        public static Mensaje Update(UsuarioEntity user)
        {
            try {
                using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["default"].ToString()))
                {
                    conn.Open();

                    string sql = @"UPDATE USUARIOS_TMP_GLOBAL
                                SET
                                    pwd=@pwd,
                                    nombre=@nombre,
                                    apellido=@apellido,
                                    email=@email,
                                    estado=@estado,
                                    producto=@producto
                                    WHERE USUARIO = @usuario";

                    SqlCommand cmd = new SqlCommand(sql, conn);

                    cmd.Parameters.AddWithValue("@usuario", NonBlankValueOf(user.PID));
                    cmd.Parameters.AddWithValue("@suscripcion", NonBlankValueOf(user.PCodigoSuscripcion));
                    cmd.Parameters.AddWithValue("@pwd", NonBlankValueOf(user.PClave));
                    cmd.Parameters.AddWithValue("@nombre", NonBlankValueOf(user.PNombre));
                    cmd.Parameters.AddWithValue("@apellido", NonBlankValueOf(user.PApellido));
                    cmd.Parameters.AddWithValue("@email", NonBlankValueOf(user.PEmail));
                    cmd.Parameters.AddWithValue("@estado", user.PEstado);
                    cmd.Parameters.AddWithValue("@producto", user.PProducto);
                    cmd.ExecuteNonQuery();

                    //sql = @"UPDATE UsuarioCliente
                    //            SET SuscripcionId=@suscripcion,
                    //                ClienteId=@clienteid,
                    //                Clave=@pwd,
                    //                Nombre=@nombre,
                    //                Apellido=@apellido,
                    //                Mail=@email,
                    //                Activo=@estado,
                    //                ProductoId=@producto
                    //                WHERE Id = @usuario";

                    sql = @"UPDATE UsuarioCliente
                                SET  Clave=@pwd,
                                    Nombre=@nombre,
                                    Apellido=@apellido,
                                    Mail=@email,
                                    Activo=@estado,
                                    ProductoId=@producto
                                    WHERE Id = @usuario";

                    SqlCommand cmd2 = new SqlCommand(sql, conn);

                    cmd2.Parameters.AddWithValue("@usuario", NonBlankValueOf(user.PID));
                    cmd2.Parameters.AddWithValue("@clienteid", NonBlankValueOf(user.PClienteID));
                    cmd2.Parameters.AddWithValue("@suscripcion", NonBlankValueOf(user.PCodigoSuscripcion));
                    cmd2.Parameters.AddWithValue("@pwd", NonBlankValueOf(user.PClave));
                    cmd2.Parameters.AddWithValue("@nombre", NonBlankValueOf(user.PNombre));
                    cmd2.Parameters.AddWithValue("@apellido", NonBlankValueOf(user.PApellido));
                    cmd2.Parameters.AddWithValue("@email", NonBlankValueOf(user.PEmail));
                    cmd2.Parameters.AddWithValue("@estado", user.PEstado);
                    cmd2.Parameters.AddWithValue("@producto", user.PProducto);
                    cmd2.ExecuteNonQuery();
                    conn.Close();

                }

                return new Mensaje(true, "actualizaron");
            }
            catch (SqlException ex)
            {
                //Pass the filepath and filename to the StreamWriter Constructor
                StreamWriter sw = new StreamWriter("C:\\Log.txt");
                //Write a second line of text
                sw.WriteLine(ex.ToString());
                //Close the file
                sw.Close();
                return new Mensaje(false, "Error Actualizar Usuario");

            }
        }