Ejemplo n.º 1
0
        // 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();
        }
Ejemplo n.º 2
0
        // 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();
        }