private void listViewVisitantes_AoDuploClique(Visita visita) { List<Entidades.Pessoa.Pessoa> lstPessoas = visita.Pessoas.ExtrairElementos(); if (lstPessoas.Count == 0) return; SubstituirBase(new BaseAtendimento(lstPessoas[0])); }
public ResolverVisitante(Visita visita) { InitializeComponent(); this.visita = visita; foreach (Entidades.Pessoa.Pessoa pessoa in visita.Pessoas.ExtrairElementos()) listaPessoas.Itens.Add(pessoa); foreach (string nome in visita.Nomes.ExtrairElementos()) listaPessoas.Itens.Add(nome, "", "Não cadastrado"); }
private void AtribuirEspera(Visita visita, ListViewItem item) { if (visita.Espera.HasValue) { item.SubItems.Add(visita.Atendente.Nome); item.Group = lstVisitantes.Groups["lstGrpAtendimento"]; } else { item.SubItems.Add(""); item.Group = lstVisitantes.Groups["lstGrpAguardando"]; } }
private ListViewItem CriarItem(Visita visita) { ListViewItem item = new ListViewItem(visita.ExtrairNomes()); item.SubItems.Add(visita.Setor != null ? visita.Setor.Nome : ""); AtribuirEspera(visita, item); AtribuirDataEntrada(visita, item); AtribuirSaída(visita, item); AdicionarHashes(visita, item); return item; }
public ListaPessoasVisitante(Visita visita) { InitializeComponent(); lblPrimária.Text = visita.ExtrairNomes(); lblSecundária.Text = visita.Setor != null ? visita.Setor.Nome : "N/D"; this.visita = visita; if (visita.Saída.HasValue) { if (visita.Atendente != null) { lblDescrição.Text = string.Format( "Atendido em {0:dd/MM/yyyy, HH:mm} por {1}", visita.Espera.HasValue ? visita.Entrada.AddSeconds(visita.Espera.Value) : visita.Entrada, visita.Atendente.Nome); } else lblDescrição.Text = string.Format( "Chegou em {0:dd/MM/yyyy, HH:mm} e saiu sem ser atendido às {1:HH:mm}", visita.Entrada, visita.Saída.Value); } else if (visita.Atendente == null) { lblDescrição.Text = string.Format( "Aguardando atendimento desde {0:dd/MM/yyyy, HH:mm}", visita.Entrada); picFoto.Image = Resource.lendo1; } else { lblDescrição.Text = string.Format( "Em atendimento desde {0:dd/MM/yyyy, HH:mm} por {1}", visita.Espera.HasValue ? visita.Entrada.AddSeconds(visita.Espera.Value) : visita.Entrada, visita.Atendente.PrimeiroNome); } }
/// <summary> /// Constrói a estrutura de atendimento. /// </summary> /// <param name="visita">Visita vinculada ao cliente.</param> /// <param name="atendente">Atendente do cliente.</param> public Atendimento(Visita visita, Funcionário atendente) { this.visita = visita; this.atendente = atendente; }
/// <summary> /// Sinaliza o encerramento de um atendimento. /// </summary> /// <param name="visita"></param> public virtual void EncerrarAtendimento(Visita visita) { }
public static void RegistrarAtendimento(Visita visita, Funcionário funcionário) { IniciarAtendimento(visita, funcionário); foreach (Rodízio rodízio in hashRodízio.Values) if (rodízio.Atendentes.Contains(funcionário)) rodízio.RealizarRodízio(funcionário); }
private void RegistrarAcompanhantes(Visita visita) { foreach (object obj in Acompanhantes) if (obj is string) visita.Nomes.Adicionar((string)obj); else if (obj is PessoaCPFCNPJRG) { PessoaFísica pessoaFísica; pessoaFísica = Entidades.Pessoa.PessoaFísica.ObterPessoa(((PessoaCPFCNPJRG)obj).Código); if (pessoaFísica != null) { // Registrar baseado no cadastro visita.Pessoas.Adicionar(pessoaFísica); } else // Registrar acompanhante anônimo visita.Nomes.Adicionar(((PessoaCPFCNPJRG)obj).Nome); } visita.Atualizar(); AoCadastrar(visita); Preparar(); SubstituirBaseParaInicial(); }
/// <summary> /// Ocorre ao cadastrar um visitante. /// </summary> private void biRegistrarVisitante_AoCadastrar(Visita visita) { listaVisitantes.AdicionarVisita(visita); if (visita.Setor != null) { Rodízio rodízio = Rodízio.ObterRodízio(visita.Setor); Atendimento atendimento; atendimento = rodízio.ObterPróximoAtendimento(); if (atendimento != null) listaVisitantes.AtualizarVisita(atendimento.Visita); } }
/// <summary> /// Trata evento de visitante que entrou na empresa /// </summary> public void AdicionarVisita(Visita visita) { if (InvokeRequired) { AtualizarVisitaCallback método = new AtualizarVisitaCallback(AdicionarVisita); BeginInvoke(método, visita); } else try { ListViewItem item = new ListViewItem(ExtrairNomes(visita)); item.SubItems.Add(visita.Setor != null ? visita.Setor.Nome : ""); if (visita.Espera.HasValue) { item.SubItems.Add(visita.Atendente.Nome); item.Group = lstVisitantes.Groups["lstGrpAtendimento"]; } else { item.SubItems.Add(""); item.Group = lstVisitantes.Groups["lstGrpAguardando"]; } item.SubItems.Add(visita.Entrada.ToLongTimeString()); if (visita.Saída.HasValue) { item.SubItems.Add(visita.Saída.Value.ToLongTimeString()); item.Group = lstVisitantes.Groups["lstGrpPassado"]; } else item.SubItems.Add(""); lstVisitantes.Items.Add(item); // Adicionar na hashtable de linhas hashLinhaVisita[item] = visita; hashVisitaLinha[Chave(visita.Entrada)] = item; // Garantir visibilidade item.EnsureVisible(); } catch (Exception e) { MessageBox.Show(e.ToString()); Acesso.Comum.Usuários.UsuárioAtual.RegistrarErro(e); } }
public void AtualizarVisita(Visita visita) { ListViewItem linha; linha = hashVisitaLinha[visita.Entrada]; hashLinhaVisita[linha] = visita; if (linha != null) { linha.SubItems[colAtendente.Index].Text = visita.Atendente != null ? visita.Atendente.Nome : ""; if (!visita.Espera.HasValue && !visita.Saída.HasValue) linha.Group = lstVisitantes.Groups["lstGrpAguardando"]; else if (!visita.Saída.HasValue) linha.Group = lstVisitantes.Groups["lstGrpAtendimento"]; else { linha.Group = lstVisitantes.Groups["lstGrpPassado"]; linha.UseItemStyleForSubItems = true; linha.ForeColor = SystemColors.GrayText; linha.SubItems[colSaída.Index].Text = visita.Saída.Value.ToLongTimeString(); } } }
public void RemoverVisita(Visita visita) { ListViewItem linha; linha = hashVisitaLinha[visita.Entrada]; if (linha != null) { hashVisitaLinha.Remove(visita.Entrada); hashLinhaVisita.Remove(linha); linha.Remove(); } }
public void AdicionarVisita(Visita visita) { ListViewItem item = CriarItem(visita); lstVisitantes.Items.Add(item); item.EnsureVisible(); }
private static void AtribuirDataEntrada(Visita visita, ListViewItem item) { if (!visita.Saída.HasValue && visita.Entrada.Date != DateTime.Now.Date) { /* Pessoas em atendimento, porém com data diferente * são exibidas com data completa. */ TimeSpan dif = visita.Entrada.Date - DateTime.Now.Date; if (dif.Days == 1) item.SubItems.Add("Ontem, " + visita.Entrada.ToString("HH:mm")); else item.SubItems.Add(visita.Entrada.ToString("dd/MM/yyyy HH:mm")); } else item.SubItems.Add(visita.Entrada.ToLongTimeString()); }
private static string ExtrairNomes(Visita visita) { string strAtendimentos = ""; foreach (Pessoa pessoa in visita.Pessoas) { if (strAtendimentos.Length > 0) strAtendimentos += ", "; strAtendimentos += pessoa.Nome; } foreach (string nome in visita.Nomes) { if (strAtendimentos.Length > 0) strAtendimentos += ", "; strAtendimentos += nome; } return strAtendimentos; }
/// <summary> /// Atualiza o estado do visitante na lista de visitantes /// </summary> public void AtualizarVisita(Visita visita) { if (InvokeRequired) { AtualizarVisitaCallback método = new AtualizarVisitaCallback(AtualizarVisita); BeginInvoke(método, visita); } else try { ListViewItem linha; if (hashVisitaLinha.TryGetValue(Chave(visita.Entrada), out linha)) { hashLinhaVisita[linha] = visita; linha.Text = ExtrairNomes(visita); linha.SubItems[colAtendente.Index].Text = visita.Atendente != null ? visita.Atendente.Nome : ""; if (!visita.Espera.HasValue && !visita.Saída.HasValue) linha.Group = lstVisitantes.Groups["lstGrpAguardando"]; else if (!visita.Saída.HasValue) { if (visita.Atendente != null) { linha.Group = lstVisitantes.Groups["lstGrpAtendimento"]; ListViewItem itemFunc = hashVendedorLinha[visita.Atendente.Código]; itemFunc.SubItems[colCliente.Index].Text = ExtrairNomes(visita); itemFunc.SubItems[colSituação.Index].Text = visita.Atendente.Situação.ToString(); ColorirFuncionário(itemFunc, visita.Atendente); } } else { linha.Group = lstVisitantes.Groups["lstGrpPassado"]; linha.UseItemStyleForSubItems = true; linha.ForeColor = SystemColors.GrayText; linha.SubItems[colSaída.Index].Text = visita.Saída.Value.ToLongTimeString(); if (visita.Atendente != null) AtualizarFuncionário(visita.Atendente); } } } catch (Exception e) { Acesso.Comum.Usuários.UsuárioAtual.RegistrarErro(e); MessageBox.Show(this, e.ToString()); } }
private void AdicionarHashes(Visita visita, ListViewItem item) { hashLinhaVisita[item] = visita; hashVisitaLinha[visita.Entrada] = item; }
/// <summary> /// Remove visitante /// </summary> private void RemoverVisita(Visita visita) { ListViewItem linha; // Encontrar linha da listview linha = hashVisitaLinha[Chave(visita.Entrada)]; if (linha != null) { hashVisitaLinha.Remove(Chave(visita.Entrada)); hashLinhaVisita.Remove(linha); // Verificar se existe outras linhas para esta visita linha.Remove(); } AtualizarFuncionários(); }
private void AtribuirSaída(Visita visita, ListViewItem item) { if (visita.Saída.HasValue) { item.SubItems.Add(visita.Saída.Value.ToLongTimeString()); if (visita.Entrada.Date == DateTime.Now.Date) item.Group = lstVisitantes.Groups["lstGrpPassado"]; else { string grpChave = "lstGrpPassado" + visita.Entrada.Date.ToShortDateString(); if (lstVisitantes.Groups[grpChave] == null) lstVisitantes.Groups.Add( grpChave, visita.Entrada.Date.ToLongDateString()); item.Group = lstVisitantes.Groups[grpChave]; } } else item.SubItems.Add(""); }
/// <summary> /// Ocorre quando o usuário clica em OK /// </summary> private void cmdOK_Click(object sender, System.EventArgs e) { Visita visita; Cursor = Cursors.WaitCursor; AguardeDB.Mostrar(); // Procurar cadastro do visitante if (cadastro != null) { // Garantir que o cadastro recuperará o tipo de pessoa correto. cadastro = Entidades.Pessoa.Pessoa.ObterPessoa(cadastro.Código); if (!(cadastro is Entidades.Pessoa.PessoaFísica)) cadastro = null; } else { PessoaFísica[] pessoas = Entidades.Pessoa.PessoaFísica.ObterPessoas(Nome); if (pessoas.Length > 0) { using (Apresentação.Pessoa.Consultas.SelecionarPessoa escolher = new Apresentação.Pessoa.Consultas.SelecionarPessoa(pessoas, Nome)) { AguardeDB.Suspensão(true); if (escolher.ShowDialog(this.ParentForm) != DialogResult.OK) return; AguardeDB.Suspensão(false); if (escolher.PessoaEscolhida != null) cadastro = (PessoaFísica)escolher.PessoaEscolhida; } } } if (cadastro == null) { // Registrar cadastro anônimo visita = new Visita(); visita.Nomes.Adicionar(Nome); visita.Setor = Setor; } else { // Registrar baseado no cadastro visita = new Visita((PessoaFísica)cadastro); visita.Setor = Setor; if (visita.Setor != null && cadastro.Setor != null && visita.Setor.Código != cadastro.Setor.Código) { AguardeDB.Fechar(); if (MessageBox.Show( ParentForm, "ATENÇÃO\n\nO(a) cliente " + cadastro.PrimeiroNome + " está cadastrado como cliente do setor " + cadastro.Setor.Nome + ". No entanto, você marcou o cliente para o setor " + visita.Setor.Nome + ".\n\nDeseja continuar assim mesmo?", "Registro de visitante", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2) == DialogResult.No) { return; } } } visita.Cadastrar(); RegistrarAcompanhantes(visita); AguardeDB.Fechar(); Cursor = Cursors.Default; }
/// <summary> /// Registra o início de atendimento do atendente ao cliente. /// </summary> protected static void IniciarAtendimento(Visita visita, Funcionário atendente) { atendente.Situação = EstadoFuncionário.Atendendo; if (!visita.Espera.HasValue) try { visita.Espera = Convert.ToUInt32(((TimeSpan)(DadosGlobais.Instância.HoraDataAtual - visita.Entrada)).TotalSeconds); } catch (OverflowException) { visita.Espera = UInt32.MaxValue; } visita.Atendente = atendente; visita.Atualizar(); }
/// <summary> /// Verifica se um visitante é de interesse do usuário. /// </summary> /// <returns>Se o visitante é de interesse do usuário.</returns> private bool ValidarVisitante(Visita visita) { bool válido = false; foreach (Entidades.Setor setor in setores) válido |= visita.Setor.Código == setor.Código; return válido; }
/// <summary> /// Chamado ao encerrar um atendimento. /// </summary> public override void EncerrarAtendimento(Visita visita) { if (visita.Atendente != null && !visita.AtendimentoForaDoRodízio) RealizarRodízio(visita.Atendente); }