Пример #1
0
		/// <summary>
		/// Procura os dados desejados e mostra janela de resultados.
		/// </summary>
		/// <param name="tipo">Tipo de chave.</param>
		/// <param name="chave">Texto chave.</param>
		/// <returns>Pessoa escolhida ou nulo.</returns>
		private static Entidades.Pessoa.Pessoa Procurar(IWin32Window owner, TipoChave tipo, string chave)
		{
			List<Entidades.Pessoa.Pessoa> pessoas;

            using (Apresentação.Formulários.Aguarde aguarde =
                       new Apresentação.Formulários.Aguarde(
                       "Procurando no banco de dados.",
                       1,
                       "Procurando pessoas",
                       "Aguarde enquanto o sistema procura no banco de dados pelos dados fornecidos."))
            {
                aguarde.Abrir();

                switch (tipo)
                {
                    case TipoChave.Código:
                        ulong código = 0;
                        bool erro = false;

                        try
                        {
                            código = ulong.Parse(chave);
                        }
                        catch
                        {
                            erro = true;
                        }

                        if (erro)
                            pessoas = new List<Entidades.Pessoa.Pessoa> { };
                        else
                            pessoas = new List<Entidades.Pessoa.Pessoa> { Entidades.Pessoa.Pessoa.ObterPessoa(código) };
                        break;

                    case TipoChave.Nome:
                        pessoas = BuscaTextual.ObterPessoas(chave);
                        break;

                    case TipoChave.CPF:
                        pessoas = new List<Entidades.Pessoa.Pessoa>() { PessoaFísica.ObterPessoaPorCPF(chave) };
                        break;

                    case TipoChave.RG:
                        pessoas = PessoaFísica.ObterPessoasPorRG(chave);
                        break;

                    case TipoChave.CNPJ:
                        pessoas = PessoaJurídica.ObterPessoasPorCNPJ(chave);
                        break;

                    case TipoChave.Telefone:
                        pessoas = Entidades.Pessoa.Pessoa.ObterPessoasPorTelefone(chave);
                        break;

                    case TipoChave.Cidade:
                        pessoas = Entidades.Pessoa.Pessoa.ObterPessoasPorCidade(Localidade.ObterLocalidades(chave.Trim()));
                        break;

                    case TipoChave.Estado:
                        pessoas = Entidades.Pessoa.Pessoa.ObterPessoasPorEstado(Estado.ObterEstados(chave));
                        break;

                    default:
                        throw new NotSupportedException("Chave não suportada: " + Enum.GetName(typeof(TipoChave), tipo));
                }

                if (pessoas.Count == 0)
                {
                    aguarde.Close();
                    
                    const string msg = "Nenhuma pessoa foi encontrada com os dados fornecidos. ";
                    const string título = "Pesquisa de pessoa";

                    if (owner != null)
                        MessageBox.Show(
                            owner,
                            msg,
                            título,
                            MessageBoxButtons.OK,
                            MessageBoxIcon.Exclamation);
                    else
                        MessageBox.Show(
                            msg,
                            título,
                            MessageBoxButtons.YesNo,
                            MessageBoxIcon.Exclamation);

                    return null;
                }
                else if (pessoas.Count == 1)
                    return pessoas[0];
                else
                {
                    aguarde.Passo("Preparando resultado.");

                    using (ProcurarPessoaResultados dlg = new ProcurarPessoaResultados(pessoas))
                    {
                        aguarde.Close();

                        if (dlg.ShowDialog(owner) == DialogResult.OK)
                        {
                            if (dlg.PessoaSelecionada is PessoaFísica)
                            {
                                Entidades.Pessoa.Pessoa pessoa;

                                Apresentação.Formulários.AguardeDB.Mostrar();

                                pessoa = Entidades.Pessoa.Pessoa.ObterPessoa(dlg.PessoaSelecionada.Código);

                                Apresentação.Formulários.AguardeDB.Fechar();

                                return pessoa;
                            }
                            else
                            {
                                return dlg.PessoaSelecionada;
                            }

                        }
                    }
                }
            }

			return null;
		}
Пример #2
0
		/// <summary>
		/// Ocorre quando se pressiona uma tecla no textbox
		/// </summary>
		private void txt_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
		{
            if (!Enabled)
                return;

			if (lista == null)
				return;

            // A chamada get da propriedade Pessoa zera txt.Text.
            string texto = txt.Text;

            try
			{
				int idx = -1;

				if (lista.SelectedIndices.Count > 0)
					idx = lista.SelectedIndices[0];

				switch (e.KeyCode)
				{
                    case Keys.Delete:
                        if (txt.SelectionLength == txt.TextLength)
                            Limpar();
                        break;

					case Keys.Down:
						if (++idx >= lista.Items.Count)
							idx = lista.Items.Count - 1;

						lista.Items[idx].Selected = true;
						lista.Items[idx].EnsureVisible();
						e.Handled = true;
						break;

					case Keys.Up:
						if (--idx < 0)
							idx = 0;

						lista.Items[idx].Selected = true;
						lista.Items[idx].EnsureVisible();
						e.Handled = true;
						break;

					case Keys.Enter:
                        if (Pessoa != null && Pessoa.Nome.Trim() == texto.Trim())
                        {
                            if (lista != null)
                                lista.Visible = false;

                            NotificarEventoSelecionadoSeNecessário();

                            return;
                        }

                        if (somenteCadastrados && lista.Items.Count > 0)
                        {
                            AguardeDB.Mostrar();
                            List<Entidades.Pessoa.Pessoa> pessoas = BuscaTextual.ObterPessoas(texto.Trim());
                            AguardeDB.Fechar();

                            using (ProcurarPessoaResultados dlg = new ProcurarPessoaResultados(pessoas))
                            {
                                if (dlg.ShowDialog(ParentForm) == DialogResult.OK)
                                    Pessoa = dlg.PessoaSelecionada;
                            }
                            
                        }
						lista.Visible = false;
						e.Handled = true;
						break;

					case Keys.Escape:
						lista.Visible = false;
						break;
				}
			}
			catch
			{
				e.Handled = true;
			}
			finally
			{
				this.OnKeyDown(e);
			}

            if (KeyDown != null)
                KeyDown(this, e);            
		}