public Cliente CrearCliente(Cliente clienteACrear)
        {
            //esta primera parte valida si e ha ingresado algun campo vacío
            //para nuestro caso, deben ingresarse todos, sino, sale error
            if (clienteACrear.DNI.Equals("") || clienteACrear.NombreCliente.Equals("") || clienteACrear.CorreoCliente.Equals("") || clienteACrear.ApellidoCliente.Equals(""))
                throw new WebFaultException<Error>(
                    new Error()
                    {
                        CodigoNegocio = "Error2",
                        MensajeNegocio = "La información ingresada debe estar completa"
                    },
                    HttpStatusCode.BadRequest);

            // validamos si el dni ingresado es uno correcto
            //uso una Funciones que coloqué en la clase decimal funciones
            if (Funciones.ValidaDNI(clienteACrear.DNI.Trim()) == false)
                throw new WebFaultException<Error>(
                    new Error()
                    {
                        CodigoNegocio = "Error4",
                        MensajeNegocio = "El DNI ingresado es incorrecto."
                    },
                    HttpStatusCode.InternalServerError);

            // validamos si el correo ingresado es uno correcto
            //uso una Funciones que coloqué en la clase decimal funciones
            if (Funciones.es_email(clienteACrear.CorreoCliente.Trim()) == false)
                throw new WebFaultException<Error>(
                    new Error()
                    {
                        CodigoNegocio = "Error3",
                        MensajeNegocio = "El correo ingresado es incorrecto."
                    },
                    HttpStatusCode.InternalServerError);

            //ahora validamnos si el cliente ya existe por su DNI
            Cliente existe = ObtenerCliente(clienteACrear.DNI);
            if (existe != null)
                throw new WebFaultException<Error>(
                    new Error()
                    {
                        CodigoNegocio = "Error1",
                        MensajeNegocio = "El cliente " + clienteACrear.DNI + " ya existe !!!!!"
                    },
                    HttpStatusCode.InternalServerError);

            return dao.Crear(clienteACrear);
        }
 ////crear cliente tradicionalmente por BD
 //public Cliente Crear(Cliente ClienteACrear)
 //{
 //    Cliente clienteCreado = null;
 //    string sql = "insert into Cliente (NombreCliente, ApellidoCliente, DNI, CorreoCliente ) " +
 //            "values (@nomCli, @apeCli, @dniCli, @correoCli)";
 //    using (SqlConnection con = new SqlConnection(ConexionUtil.Cadena))
 //    {
 //        con.Open();
 //        using (SqlCommand com = new SqlCommand(sql, con))
 //        {
 //            com.Parameters.Add(new SqlParameter("@nomCli", ClienteACrear.NombreCliente));
 //            com.Parameters.Add(new SqlParameter("@apeCli", ClienteACrear.ApellidoCliente));
 //            com.Parameters.Add(new SqlParameter("@dniCli", ClienteACrear.DNI));
 //            com.Parameters.Add(new SqlParameter("@correoCli", ClienteACrear.CorreoCliente));
 //            com.ExecuteNonQuery();
 //        }
 //    }
 //    clienteCreado = Obtener(ClienteACrear.DNI);
 //    return clienteCreado;
 //}
 //Crear cliente utilizando MENSAJERIA
 public Cliente Crear(Cliente ClienteACrear)
 {
     string rutaCola = @".\private$\RegistroClientes";
     if (!MessageQueue.Exists(rutaCola))
         MessageQueue.Create(rutaCola);
     MessageQueue cola = new MessageQueue(rutaCola);
     Message mensaje = new Message();
     mensaje.Label = "Nuevo Cliente";
     mensaje.Body = new Cliente()
     {
         ApellidoCliente = ClienteACrear.ApellidoCliente,
         NombreCliente = ClienteACrear.NombreCliente,
         DNI = ClienteACrear.DNI,
         CorreoCliente = ClienteACrear.CorreoCliente
     };
     cola.Send(mensaje);
     //clienteCreado = Obtener(ClienteACrear.DNI);
     return ClienteACrear;
 }
 public Cliente ModificarCliente(Cliente clienteAModificar)
 {
     return dao.Modificar(clienteAModificar);
 }
 public List<Cliente> ListarTodos()
 {
     //***************Antes de listar Inserta a todos los clientes ENCOLADOS
     string rutaCola = @".\private$\RegistroClientes";
     if (!MessageQueue.Exists(rutaCola))
         MessageQueue.Create(rutaCola);
     MessageQueue cola = new MessageQueue(rutaCola);
     int cantidad = cola.GetAllMessages().Length;
     cola.Formatter = new XmlMessageFormatter(new Type[] { typeof(Cliente) });
     Message mensaje = null;
     for (int i = 0; i < cantidad; i++)
     {
         mensaje = cola.Receive();
         Cliente p = (Cliente)mensaje.Body;
         //insertar a la DB clientes encolados
         string sql2 = "insert into Cliente (NombreCliente, ApellidoCliente, DNI, CorreoCliente ) " +
             "values (@nomCli, @apeCli, @dniCli, @correoCli)";
         using (SqlConnection con = new SqlConnection(ConexionUtil.Cadena))
         {
             con.Open();
             using (SqlCommand com = new SqlCommand(sql2, con))
             {
                 com.Parameters.Add(new SqlParameter("@nomCli", p.NombreCliente));
                 com.Parameters.Add(new SqlParameter("@apeCli", p.ApellidoCliente));
                 com.Parameters.Add(new SqlParameter("@dniCli", p.DNI));
                 com.Parameters.Add(new SqlParameter("@correoCli", p.CorreoCliente));
                 com.ExecuteNonQuery();
             }
         }
     }
     //***************
     List<Cliente> clientesEncontrado = null;
     clientesEncontrado = new List<Cliente>();
     string sql = "select NombreCliente, ApellidoCliente, DNI, CorreoCliente from cliente";
     using (SqlConnection con = new SqlConnection(ConexionUtil.Cadena))
     {
         con.Open();
         using (SqlCommand com = new SqlCommand(sql, con))
         {
             using (SqlDataReader resultado = com.ExecuteReader())
             {
                 while (resultado.Read())
                 {
                     Cliente clienteEncontrado = new Cliente()
                     {
                         NombreCliente = (string)resultado["NombreCliente"],
                         ApellidoCliente = (string)resultado["ApellidoCliente"],
                         DNI = (string)resultado["DNI"],
                         CorreoCliente = (string)resultado["CorreoCliente"],
                     };
                     clientesEncontrado.Add(clienteEncontrado);
                 }
             }
         }
     }
     return clientesEncontrado;
 }
 public Cliente Obtener(string dni)
 {
     Cliente clienteEncontrado = null;
     string sql = "select NombreCliente, ApellidoCliente, DNI, CorreoCliente from cliente where dni=@dni";
     using (SqlConnection con = new SqlConnection(ConexionUtil.Cadena))
     {
         con.Open();
         using (SqlCommand com = new SqlCommand(sql, con))
         {
             com.Parameters.Add(new SqlParameter("@dni", dni));
             using (SqlDataReader resultado = com.ExecuteReader())
             {
                 if (resultado.Read())
                 {
                     clienteEncontrado = new Cliente()
                     {
                         NombreCliente = (string)resultado["NombreCliente"],
                         ApellidoCliente = (string)resultado["ApellidoCliente"],
                         DNI = (string)resultado["DNI"],
                         CorreoCliente = (string)resultado["CorreoCliente"],
                     };
                 }
             }
         }
     }
     return clienteEncontrado;
 }
 public Cliente Modificar(Cliente ClienteAModificar)
 {
     Cliente clienteModif = null;
     string sql = "update cliente set NombreCliente=@nom, ApellidoCliente=@ape, CorreoCliente=@correo  where DNI=@dni";
     using (SqlConnection con = new SqlConnection(ConexionUtil.Cadena))
     {
         con.Open();
         using (SqlCommand com = new SqlCommand(sql, con))
         {
             com.Parameters.Add(new SqlParameter("@dni", ClienteAModificar.DNI));
             com.Parameters.Add(new SqlParameter("@nom", ClienteAModificar.NombreCliente));
             com.Parameters.Add(new SqlParameter("@ape", ClienteAModificar.ApellidoCliente));
             com.Parameters.Add(new SqlParameter("@correo", ClienteAModificar.CorreoCliente));
             com.ExecuteNonQuery();
         }
     }
     clienteModif = Obtener(ClienteAModificar.DNI);
     return clienteModif;
 }