示例#1
0
        private void toolStripMenuItemImport_Click(object sender, EventArgs e)
        {
            if (openFileDialogImport.ShowDialog() != DialogResult.OK)
            {
                return;
            }

            try {
                var rows = new List <DebtRow>(XmlDebtRowsSerializer.Deserialize(openFileDialogImport.FileName));
                if (rows.Count == 0)
                {
                    return;
                }

                var existsRows = new List <DebtRow>(DebtDAO.GetDebtRows(rows[0].DebtType, rows[0].Month, rows[0].Year));
                if (0 < existsRows.Count)
                {
                    var answer = MessageBox.Show("Уже существуют строки задолженности такого же типа, месяца и года, как и в файле импорта.\r\nПродолжить импорт?\r\nДа - продолжить импорт, Отмена - прервать импорт.", Text, MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
                    if (answer == DialogResult.Cancel)
                    {
                        return;
                    }
                }
                foreach (var row in rows)
                {
                    if (existsRows.Exists(r => { return(r.Classifier.Equals(row.Classifier) && r.Subject.Equals(row.Subject)); }))
                    {
                        var answer = MessageBox.Show("Уже существуют строки задолженности с такими же классификатором и субъектом, как и в файле импорта.\r\nПродолжить импорт и перезаписать существующие строки?\r\nДа - продолжить импорт, Отмена - прервать импорт.", Text, MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
                        if (answer == DialogResult.Cancel)
                        {
                            return;
                        }
                        break;
                    }
                }

                var rowsToSave = new List <DebtRow>();
                foreach (var row in rows)
                {
                    var existsRow = existsRows.Find(r => { return(r.Classifier.Equals(row.Classifier) && r.Subject.Equals(row.Subject)); });
                    if (existsRow != null)
                    {
                        existsRow.Amount  = row.Amount;
                        existsRow.Amount2 = row.Amount2;
                        rowsToSave.Add(existsRow);
                    }
                    else
                    {
                        rowsToSave.Add(row);
                    }
                }
                DebtDAO.SaveOrUpdateDebtRows(rowsToSave);

                debtDocProperties.SetDebtProperties(rows[0].DebtType, rows[0].Month, rows[0].Year);

                MessageBox.Show(string.Format("Импорт успешно завершен.\r\nФайл импорта: {0}", openFileDialogImport.FileName), Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception ex) {
                MessageBox.Show(string.Format("Ошибка при импорте задолженности, импорт не выполнен.\r\nТекст ошибки: {0}", ex), Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }