/// <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); } }
/// <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()); } }