public List<usuario> hacerLogin(string user, string clave)
        {

            using (var contexto = new ipwebec_hydrosEntities())
            {
                var usuario =
                    from c in contexto.usuario
                    where c.usuario1 == user
                    select c;

                var usuariosList = usuario.ToList();

                var salt = usuariosList[0].salt;

                // re-generate the salted and hashed password 
                var saltedhashedPassword = Protector.SaltAndHashPassword(
                    clave, salt);

                var usuario2 =
                    from c in contexto.usuario
                    where c.usuario1 == user && c.clave == saltedhashedPassword
                    select c;

                return usuario.ToList();

            }
        }
        public async Task<bool> ModificarArticulo(articulo nuevoArticulo)
        {
            using (var contexto = new ipwebec_hydrosEntities())
            {
                var updatedArticulo = contexto.articulo.First(b => b.id == nuevoArticulo.id);

                updatedArticulo.grupo_id = nuevoArticulo.grupo_id;
                updatedArticulo.clase = nuevoArticulo.clase;
                updatedArticulo.control_stock = nuevoArticulo.control_stock;
                updatedArticulo.descripcion = nuevoArticulo.descripcion;
                updatedArticulo.fecha_creacion = nuevoArticulo.fecha_creacion;
                updatedArticulo.foto = nuevoArticulo.foto;
                updatedArticulo.impuesto_id = nuevoArticulo.impuesto_id;
                updatedArticulo.marca_id = nuevoArticulo.marca_id;
                updatedArticulo.nombre_completo = nuevoArticulo.nombre_completo;
                updatedArticulo.nombre_corto = nuevoArticulo.nombre_corto;
                updatedArticulo.nombre_foto = nuevoArticulo.nombre_foto;
                updatedArticulo.precio_compra = nuevoArticulo.precio_compra;
                updatedArticulo.precio_venta = nuevoArticulo.precio_venta;
                updatedArticulo.stock_actual = nuevoArticulo.stock_actual;
                updatedArticulo.stock_minimo = nuevoArticulo.stock_minimo;
                updatedArticulo.unidad_medida_id = nuevoArticulo.unidad_medida_id;


                int affected = await contexto.SaveChangesAsync();

                return (affected == 1);
            }
        }
        public List<cliente> BuscarClientePorCedula(string cedula)
        {
            using (var contexto = new ipwebec_hydrosEntities())
            {
                var clientes = contexto.cliente.Where(c => c.numero_identificacion.StartsWith(cedula));

                return clientes.ToList();
            }
        }
        public List<cliente> BuscarClientePorNombre(string nombre)
        {
            using (var contexto = new ipwebec_hydrosEntities())
            {
                var clientes = contexto.cliente.Where(c => c.nombre.StartsWith(nombre));

                return clientes.ToList();
            }
        }
        public List<cliente> BuscarClientePorDireccion(string direccion)
        {
            using (var contexto = new ipwebec_hydrosEntities())
            {
                var clientes = contexto.cliente.Where(c => c.direccion.StartsWith(direccion));

                return clientes.ToList();
            }
        }
        //tabla multa
        public async Task<List<multa_retraso>> ObtenerMultas()
        {
            using (var contexto = new ipwebec_hydrosEntities())
            {
                var multas = await contexto.multa_retraso.Select(x => x).ToListAsync();

                return multas;
            }
        }
        //tabla Costos
        public async Task<List<costo_tarifa>> ObtenerCostos(int id)
        {
            using (var contexto = new ipwebec_hydrosEntities())
            {
                var costos = await contexto.costo_tarifa.Where(x => x.id == id).ToListAsync();

                return costos;
            }
        }
        //tabla grupo
        public async Task<List<grupo>> ObtenerGrupo()
        {
            using (var contexto = new ipwebec_hydrosEntities())
            {
                var grupo = await contexto.grupo.Select(x => x).ToListAsync();

                return grupo;
            }
        }
        public async Task<impuesto> ObtenerImpuestoPorNombre(string nombre)
        {
            using (var contexto = new ipwebec_hydrosEntities())
            {
                var impuesto = await contexto.impuesto.FirstAsync(x => x.nombre == nombre);

                return impuesto;
            }
        }
        //tabla unidad medida
        public async Task<List<unidad_medida>> ObtenerMedida()
        {
            using (var contexto = new ipwebec_hydrosEntities())
            {
                var medida = await contexto.unidad_medida.Select(x => x).ToListAsync();

                return medida;
            }
        }
        //tabla Barrio
        public List<barrio> ObtenerBarrios()
        {
            using (var contexto = new ipwebec_hydrosEntities())
            {
                var barrios = contexto.barrio.Select(b => b);

                return barrios.ToList();
            }
        }
        public async Task<unidad_medida> ObtenerMedidaPorNombre(string nombre)
        {
            using (var contexto = new ipwebec_hydrosEntities())
            {
                var medida = await contexto.unidad_medida.FirstAsync(x => x.nombre == nombre);

                return medida;
            }
        }
        //tabla impuesto
        public async Task<List<impuesto>> ObtenerImpuesto()
        {
            using (var contexto = new ipwebec_hydrosEntities())
            {
                var impuesto = await contexto.impuesto.Select(x => x).ToListAsync();

                return impuesto;
            }
        }
        public async Task<grupo> ObtenerGrupoPorNombre(string nombre)
        {
            using (var contexto = new ipwebec_hydrosEntities())
            {
                var grupo = await contexto.grupo.FirstAsync(x => x.nombre == nombre);

                return grupo;
            }
        }
        public bool InsertarCliente(cliente nuevoCliente)
        {
            using (var contexto = new ipwebec_hydrosEntities())
            {
                contexto.cliente.Add(nuevoCliente);

                int affected = contexto.SaveChanges();
                return (affected == 1);
            }
        }
        public async Task<tarifa> ObtenerTarifaPorNombre(string nombre)
        {
            using (var contexto = new ipwebec_hydrosEntities())
            {
                var tarifa = await contexto.tarifa.FirstOrDefaultAsync(t => t.nombreT == nombre);

                return tarifa;
            }

        }
        public async Task<barrio> ObtenerBarrioPorNombre(string nombre)
        {
            using (var contexto = new ipwebec_hydrosEntities())
            {
                var barrio = await contexto.barrio.FirstOrDefaultAsync(x => x.nombreB == nombre);

                return barrio;
            }

        }
        public bool InsertarMarca(marca nuevaMarca)
        {
            using (var contexto = new ipwebec_hydrosEntities())
            {
                contexto.marca.Add(nuevaMarca);

                int affected = contexto.SaveChanges();
                return (affected == 1);
            }
        }
        public async Task<marca> ObtenerMarcaPorNombre(string nombre)
        {
            using (var contexto = new ipwebec_hydrosEntities())
            {
                var marca = await contexto.marca.FirstOrDefaultAsync(x => x.nombre == nombre);

                return marca;
            }

        }
        public bool InsertarTarifa(tarifa nuevaTarifa)
        {
            using (var contexto = new ipwebec_hydrosEntities())
            {
                contexto.tarifa.Add(nuevaTarifa);

                int affected = contexto.SaveChanges();
                return (affected == 1);
            }
        }
        public bool InsertarMedidor(medidor nuevoMedidor)
        {
            using (var contexto = new ipwebec_hydrosEntities())
            {
                contexto.medidor.Add(nuevoMedidor);

                int affected = contexto.SaveChanges();

                return (affected == 1);
            }
        }
        //tabla articulo
        public async Task<bool> InsertarArticulo(articulo nuevoArticulo)
        {
            using (var contexto = new ipwebec_hydrosEntities())
            {
                contexto.articulo.Add(nuevoArticulo);

                int affected = await contexto.SaveChangesAsync();

                return (affected == 1);
            }
        }
        //Tabla cliente
        public List<cliente> OtenerClientes()
        {
            using (var contexto = new ipwebec_hydrosEntities())
            {
                var clientes =
                    from c in contexto.cliente
                    select c;

                return clientes.ToList();
            }
        }
        public async Task<bool> InsertarMedida(unidad_medida nuevaMedida)
        {
            using (var contexto = new ipwebec_hydrosEntities())
            {
                contexto.unidad_medida.Add(nuevaMedida);

                int affected = await contexto.SaveChangesAsync();

                return (affected == 1);
            }
        }
        public bool InsertarBarrio(barrio barrio)
        {
            using (var contexto = new ipwebec_hydrosEntities())
            {
                contexto.barrio.Add(barrio);

                int affected = contexto.SaveChanges();

                return (affected == 1);
            }
        }
        public List<usuario> ObtenerUsuarios()
        {
            using (var contexto = new ipwebec_hydrosEntities())
            {
                var usuario =
                    from c in contexto.usuario
                    select c;

                return usuario.ToList();
            }
        }
        public async Task<bool> InsertarImpuesto(impuesto nuevoImpuesto)
        {
            using (var contexto = new ipwebec_hydrosEntities())
            {
                contexto.impuesto.Add(nuevoImpuesto);

                int affected = await contexto.SaveChangesAsync();

                return (affected == 1);
            }
        }
        //Tabla Marca
        public List<marca> ObtenerMarcas()
        {
            using (var contexto = new ipwebec_hydrosEntities())
            {
                var marcas =
                    from m in contexto.marca
                    select m;

                return marcas.ToList();
            }
        }
        public async Task<bool> InsertarCostoc(costo_tarifa costo)
        {
            using (var contexto = new ipwebec_hydrosEntities())
            {
                contexto.costo_tarifa.Add(costo);

                int affected = await contexto.SaveChangesAsync();

                return (affected == 1);
            }
        }
        public bool InsertarMultas(multa_retraso nuevaMulta)
        {
            using (var contexto = new ipwebec_hydrosEntities())
            {
                contexto.multa_retraso.Add(nuevaMulta);

                int affected = contexto.SaveChanges();

                return (affected == 1);
            }
        }