public void SelectedItemChanged(object sender)
 {
     clienteSeleccionado = ((sender as DataGrid).SelectedItem as Tarjeta);
 }
        public void Acciones(object sender)
        {
            if (ventanaAccion == 1)
            {
                clienteSeleccionado = ((sender as DataGrid).SelectedItem as Tarjeta);
                if (ventaRegistrarViewModel != null)
                {
                    ventaRegistrarViewModel.Cli = clienteSeleccionado;
                    this.TryClose();
                }
            }
            else if (ventanaAccion == 2)
            {
                clienteSeleccionado = ((sender as DataGrid).SelectedItem as Tarjeta);
                if (reporteServiciosViewModel != null)
                {
                    reporteServiciosViewModel.Cli = clienteSeleccionado;
                    this.TryClose();
                }
            }
            else if (ventanaAccion == 3)
            {
                clienteSeleccionado = ((sender as DataGrid).SelectedItem as Tarjeta);
                if (vbvm != null){

                    vbvm.client = clienteSeleccionado.Cliente;
                    vbvm.Identificacion = (vbvm.client.TipoCliente == 0) ? vbvm.client.Nombre : vbvm.client.RazonSocial;
                    vbvm.DniRuc = (vbvm.client.TipoCliente == 0) ? vbvm.client.Dni : vbvm.client.Ruc;
                    this.TryClose();
                }

            }
            else
            {
                clienteSeleccionado = ((sender as DataGrid).SelectedItem as Tarjeta);
                AbrirEditarcliente();
            }
        }
        public string BuscarTarjetaByIdCliente(int p)
        {
            DBConexion db = new DBConexion();
            Tarjeta t = new Tarjeta();

            db.cmd.CommandText = "SELECT * FROM Tarjeta WHERE idCliente=" + p;

            try
            {
                db.conn.Open();
                SqlDataReader reader = db.cmd.ExecuteReader();
                while (reader.Read())
                {
                    t.CodTarjeta = reader["codTarjeta"].ToString();
                }
                db.cmd.Parameters.Clear();
                db.conn.Close();
            }
            catch (Exception e)
            {
                MessageBox.Show("No se econtro tarjetas para esta persona");
            }
            return t.CodTarjeta;
        }
        public static Tarjeta BuscarClientePorId(int id)
        {
            SqlConnection conn = new SqlConnection(Properties.Settings.Default.inf245g4ConnectionString);
            SqlCommand cmd = new SqlCommand();
            SqlDataReader reader;
            Tarjeta tarje = null;

            cmd.CommandText = "SELECT c.*,t.estado as estadotarjeta FROM Cliente c, Tarjeta t WHERE c.idCLiente=t.idCLiente and c.idCLiente=@idCLiente";
            cmd.CommandType = CommandType.Text;
            cmd.Connection = conn;

            cmd.Parameters.AddWithValue("@idCLiente", id);

            try
            {
                conn.Open();
                reader = cmd.ExecuteReader();

                if (reader.Read())
                {
                    Cliente cli = new Cliente();
                    cli.Id = Int32.Parse(reader["idCLiente"].ToString());
                    cli.Dni = reader["DNI"].ToString();
                    cli.Nombre = reader["nombre"].ToString();
                    cli.ApePaterno = reader["apePaterno"].ToString();
                    cli.ApeMaterno = reader["apeMaterno"].ToString();
                    if (!String.IsNullOrEmpty(reader["tipoCliente"].ToString()))
                    {
                        cli.TipoCliente = Int32.Parse(reader["tipoCliente"].ToString());
                    }
                    cli.Email = reader["email"].ToString();
                    cli.Celular = reader["celular"].ToString();
                    if (reader["sexo"].ToString().Equals("M"))
                    {
                        cli.Sexo = 1;
                    }
                    else
                    {
                        cli.Sexo = 0;
                    }
                    cli.FecNacimiento = reader["fechaNac"].ToString();
                    if (!cli.FecNacimiento.Equals("") && cli.FecNacimiento != null)
                    {
                        cli.FechaNacimiento = DateTime.Parse(reader["fechaNac"].ToString());
                    }
                    cli.Direccion = reader["direccion"].ToString();
                    cli.Telefono = reader["telefono"].ToString();
                    cli.Ruc = reader["RUC"].ToString();
                    cli.RazonSocial = reader["razonSocial"].ToString();
                    cli.Estado = Int32.Parse(reader["estado"].ToString());
                    cli.FecRegistro = reader["fechaReg"].ToString();
                    cli.Distrito = reader["distrito"].ToString();
                    cli.Documento = cli.Dni;
                    tarje = new Tarjeta();
                    tarje.Estado = Int32.Parse(reader["estadotarjeta"].ToString());
                    tarje.Cliente = cli;
                }
                else
                    conn.Close();
            }
            catch (Exception e)
            {
                MessageBox.Show(e.StackTrace.ToString());
            }
            return tarje;
        }
        public static List<Tarjeta> BuscarClientes(string dni , string nombre , int tipoCliente , string registroDesde , string registroHasta )
        {
            SqlConnection conn = new SqlConnection(Properties.Settings.Default.inf245g4ConnectionString);
            SqlCommand cmd = new SqlCommand();
            List<Tarjeta> clientes = null;

            string where = "";

            if (!String.IsNullOrEmpty(dni))
            {
                if (where.Equals("")) where += " WHERE ";
                else where += " AND ";
                if (dni.Length == 8)
                {
                    where = where + " DNI = @dni ";
                    cmd.Parameters.Add(new SqlParameter("dni", dni));
                }
                else
                {
                    where = where + " RUC = @ruc ";
                    cmd.Parameters.Add(new SqlParameter("ruc", dni));
                }
            }

            if (!String.IsNullOrEmpty(nombre))
            {
                if (where.Equals("")) where += " WHERE ";
                else where += " AND ";
                if (tipoCliente == 0)
                {
                    where = where + " ( (nombre + ' ' + apePaterno + ' ' + apeMaterno) like @nombre OR (apePaterno + ' ' + apeMaterno + ', ' + nombre) like @nombre ) ";
                    cmd.Parameters.Add(new SqlParameter("nombre", '%' + nombre + '%'));
                }
                else if (tipoCliente == 1)
                {
                    where = where + " ( razonSocial like @nombre ) ";
                    cmd.Parameters.Add(new SqlParameter("nombre", '%' + nombre + '%'));
                }
                else
                {
                    where = where + " ( (nombre + ' ' + apePaterno + ' ' + apeMaterno) like @nombre OR (apePaterno + ' ' + apeMaterno + ', ' + nombre) like @nombre OR  razonSocial like @nombre  ) ";
                    cmd.Parameters.Add(new SqlParameter("nombre", '%' + nombre + '%'));
                }
            }

            if (!String.IsNullOrEmpty(registroDesde))
            {
                if (where.Equals("")) where += " WHERE ";
                else where += " AND ";
                where = where + " convert (char, fechaReg, 103) >= @registroDesde ";
                cmd.Parameters.Add(new SqlParameter("registroDesde", registroDesde));
            }

            if (!String.IsNullOrEmpty(registroHasta))
            {
                if (where.Equals("")) where += " WHERE ";
                else where += " AND ";
                where = where + " convert (char, fechaReg, 103) <= @registroHasta ";
                cmd.Parameters.Add(new SqlParameter("registroHasta", registroHasta));
            }

            cmd.CommandText = "SELECT c.*, t.* FROM Tarjeta t LEFT JOIN Cliente c ON c.idCLiente = t.idCLiente AND c.estado = 1 " + where + " ORDER by c.idCLiente";
            cmd.CommandType = CommandType.Text;
            cmd.Connection = conn;
            try
            {
                conn.Open();
                SqlDataReader reader = cmd.ExecuteReader();

                clientes = new List<Tarjeta>();
                while (reader.Read())
                {
                    if (!String.IsNullOrEmpty(reader["idCLiente"].ToString()))
                    {
                        Cliente cli = new Cliente();
                        cli.Id = Int32.Parse(reader["idCLiente"].ToString());
                        cli.Dni = reader["DNI"].ToString();
                        cli.Nombre = reader["nombre"].ToString();
                        cli.ApePaterno = reader["apePaterno"].ToString();
                        cli.ApeMaterno = reader["apeMaterno"].ToString();
                        if (reader["sexo"].ToString().Equals("M"))
                        {
                            cli.Sexo = 1;
                        }
                        else
                        {
                            cli.Sexo = 0;
                        }
                        cli.FecNacimiento = reader["fechaNac"].ToString();
                        cli.Direccion = reader["direccion"].ToString();
                        cli.Telefono = reader["telefono"].ToString();
                        cli.Ruc = reader["RUC"].ToString();
                        cli.RazonSocial = reader["razonSocial"].ToString();
                        cli.Estado = Int32.Parse(reader["estado"].ToString());
                        cli.FecRegistro = reader["fechaReg"].ToString();
                        cli.Distrito = reader["distrito"].ToString();
                        if (!String.IsNullOrEmpty(reader["tipoCliente"].ToString()))
                        {
                            cli.TipoCliente = Int32.Parse(reader["tipoCliente"].ToString());
                        }
                        cli.Email = reader["email"].ToString();
                        cli.Celular = reader["celular"].ToString();
                        if (String.IsNullOrEmpty(cli.RazonSocial))
                        {
                            cli.NombreCompleto = cli.Nombre + ' ' + cli.ApePaterno + ' ' + cli.ApeMaterno;
                            cli.Documento = cli.Dni;
                        }
                        else
                        {
                            cli.NombreCompleto = cli.RazonSocial;
                            cli.Documento = cli.Ruc;
                        }
                        Tarjeta tarj = new Tarjeta();
                        tarj.CodTarjeta = reader["codTarjeta"].ToString();
                        //MessageBox.Show(tarj.CodTarjeta + "");
                        tarj.FecEmision = reader["fechaEmi"].ToString();
                        tarj.FecAnulado = reader["fechaAnu"].ToString();
                        tarj.Estado = Int32.Parse(reader["estado"].ToString());
                        tarj.Cliente = cli;
                        if ((tipoCliente == cli.TipoCliente) && (tipoCliente == 0))
                        {
                            clientes.Add(tarj);
                        }
                        else if ((tipoCliente == 1) && (tipoCliente == cli.TipoCliente))
                        {
                            clientes.Add(tarj);
                        }
                        else if (tipoCliente == -1)
                        {
                            clientes.Add(tarj);
                        }
                    }
                }

                conn.Close();
            }
            catch (SqlException e)
            {
                Console.WriteLine(e);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.StackTrace.ToString());
            }

            return clientes;
        }