// guardar correspondências private void tsbGravar_Click(object sender, EventArgs e) { var itemsEditedNotChecked = this.nodesDct.Values.Where(tn => tn.Tag != null && ((CorrespondenciaDocs)tn.Tag).Edited && !tn.Checked).ToList(); if (itemsEditedNotChecked.Count > 0) { var str = "Existem documentos editados não assinalados para gravar." + System.Environment.NewLine + "Pretende continuar?"; var result = MessageBox.Show(str, "Documentos editados não assinalados", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); if (result == DialogResult.No) { return; } } this.Cursor = Cursors.WaitCursor; var checkedCorrespondencias = this.nodesDct.Values.Where(tn => tn.Tag != null && tn.Checked).Select(tn => ((Model.CorrespondenciaDocs)tn.Tag)).ToList(); CorrespondenciaDocs lastCorrespondencia = null; var report = Database.Database.SaveCorrespondencias(checkedCorrespondencias, ref lastCorrespondencia); this.Cursor = Cursors.Default; if (report.Length > 0) { var frm = new FormIntergationReport(); frm.Interrogacao = lastCorrespondencia == null ? "Integração terminada com sucesso." : "Integração terminada com erros."; frm.Detalhes = report; frm.ShowDialog(); } UpdateLastTimeStamp(); SaveLastTimeStamp(); DeactivateControls(); // em caso de erro, selecionar o documento onde esse erro ocorreu if (lastCorrespondencia != null) { var nodeToSelect = nodesDct[lastCorrespondencia.EntidadeExterna.IDExterno]; nodeToSelect.Checked = false; // retirar da lista os items já integrados var toDelete = this.nodesDct.Where(pair => pair.Value.Checked && pair.Value.Index < nodeToSelect.Index).ToList(); toDelete.ForEach(pair => { this.lvRelations.Nodes.Remove(pair.Value); nodesDct.Remove(pair.Key); }); this.lvRelations.SelectedNode = nodeToSelect; nodeToSelect.Checked = true; } else { // recalcular sugestões this.Cursor = Cursors.WaitCursor; documentos = this.nodesDct.Where(pair => !pair.Value.Checked).Select(pair => (DocumentoExterno)((CorrespondenciaDocs)pair.Value.Tag).EntidadeExterna).ToList(); BuildSuggestions(); UpdateToolbarButtons(); this.Cursor = Cursors.Default; } UpdateToolbarButtons(); }
// guardar correspondências private void tsbGravar_Click(object sender, EventArgs e) { var itemsEditedNotChecked = this.nodesDct.Values.Where(tn => tn.Tag != null && ((CorrespondenciaDocs)tn.Tag).Edited && !tn.Checked).ToList(); if (itemsEditedNotChecked.Count > 0) { var str = "Existem documentos editados não assinalados para gravar." + System.Environment.NewLine + "Pretende continuar?"; var result = MessageBox.Show(str, "Documentos editados não assinalados", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); if (result == DialogResult.No) return; } this.Cursor = Cursors.WaitCursor; var checkedCorrespondencias = this.nodesDct.Values.Where(tn => tn.Tag != null && tn.Checked).Select(tn => ((Model.CorrespondenciaDocs)tn.Tag)).ToList(); CorrespondenciaDocs lastCorrespondencia = null; var report = Database.Database.SaveCorrespondencias(checkedCorrespondencias, ref lastCorrespondencia); this.Cursor = Cursors.Default; if (report.Length > 0) { var frm = new FormIntergationReport(); frm.Interrogacao = lastCorrespondencia == null ? "Integração terminada com sucesso." : "Integração terminada com erros."; frm.Detalhes = report; frm.ShowDialog(); } UpdateLastTimeStamp(); SaveLastTimeStamp(); DeactivateControls(); // em caso de erro, selecionar o documento onde esse erro ocorreu if (lastCorrespondencia != null) { var nodeToSelect = nodesDct[lastCorrespondencia.EntidadeExterna.IDExterno]; nodeToSelect.Checked = false; // retirar da lista os items já integrados var toDelete = this.nodesDct.Where(pair => pair.Value.Checked && pair.Value.Index < nodeToSelect.Index).ToList(); toDelete.ForEach(pair => { this.lvRelations.Nodes.Remove(pair.Value); nodesDct.Remove(pair.Key); }); this.lvRelations.SelectedNode = nodeToSelect; nodeToSelect.Checked = true; } else { // recalcular sugestões this.Cursor = Cursors.WaitCursor; documentos = this.nodesDct.Where(pair => !pair.Value.Checked).Select(pair => (DocumentoExterno)((CorrespondenciaDocs)pair.Value.Tag).EntidadeExterna).ToList(); BuildSuggestions(); UpdateToolbarButtons(); this.Cursor = Cursors.Default; } UpdateToolbarButtons(); }