Пример #1
0
        // Удалить документ
        private void button7_Click(object sender, EventArgs e)
        {
            const int MinimalLength = 1;

            if (dataGridView1.SelectedRows.Count < MinimalLength)
            {
                MessageBox.Show("Выберите документ для удаления");
            }
            else
            {
                // Индекс выбранной строки
                var selectedRowIndex = dataGridView1.CurrentRow.Index;
                // Код выбранного документа
                var selectedDocID      = Convert.ToInt32(dataGridView1[4, selectedRowIndex].Value);
                var documentForProject = new DocumentForProject();
                try
                {
                    // Подключаюсь к БД
                    using (DataBaseContext dataBaseConnection = new DataBaseContext())
                    {
                        // Нашел выбранный документ
                        documentForProject = dataBaseConnection.DocumentForProjects.Where(
                            o => o.DocumentID == selectedDocID).FirstOrDefault();
                        // Удалил его из БД
                        dataBaseConnection.DocumentForProjects.Remove(documentForProject);
                        dataBaseConnection.SaveChanges();
                        // Удалил его физически из директории
                        var fileInfo = new FileInfo(documentForProject.DocumentPath);
                        if (fileInfo.Exists == true)
                        {
                            fileInfo.Delete();
                        }
                        else
                        {
                            MessageBox.Show("Файл на физическом носителе отсутствует.\nПроизводится удаление из базы данных");
                        }
                    }
                    // Обновил грид
                    FillDocumentsForProjectGrid();
                }
                catch
                {
                    MessageBox.Show("Ошибка в БД, проверьте её (функция удаления документа)");
                }
            }
        }
Пример #2
0
        // Кнопка добавить
        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                using (DataBaseContext dataBaseConnection = new DataBaseContext())
                {
                    // Пробую получить хоть какие данные для проверки доступности БД (костыль)
                    var testConnect = dataBaseConnection.Projs.LongCount().ToString();

                    // Записываю данные для записи
                    var documentForProject = new DocumentForProject();
                    documentForProject.ProjectID    = Convert.ToInt32(selectedProject);
                    documentForProject.DocumentName = splittedFileName.Last();
                    documentForProject.DocumentType = comboBox1.Text;

                    // Копирую файл в директорию документов проекта
                    var filePath   = @"" + openFileDialog1.FileName;
                    var fileInfo   = new FileInfo(filePath);
                    var newDocPath = projectDocDirectoryPath + "\\" + splittedFileName.Last();
                    if (fileInfo.Exists == true)
                    {
                        fileInfo.CopyTo(newDocPath, true);
                    }
                    else
                    {
                        var fileIsNotExist = new Exception("Ошибка копирования, проблемы с файлом.");
                        throw fileIsNotExist;
                    }
                    documentForProject.DocumentPath = newDocPath;

                    // Вношу изменения в базу данных
                    dataBaseConnection.DocumentForProjects.Add(documentForProject);
                    dataBaseConnection.SaveChanges();
                }
                // Закрываю форму и очищаю поля
                button2_Click(null, null);
                // Указал, что эта форма подчиняется главной
                var mainForm = this.Owner as MainForm;
                // Вызвал функцию в главной форме на обновление грида
                mainForm.FillDocumentsForProjectGrid();
            }
            catch
            {
                MessageBox.Show("Ошибка при добавлении документа к проекту\nПроверьте БД (ошибка в функции добавления)");
            }
        }
Пример #3
0
        // Сформировать спецификацию
        private void button2_Click(object sender, EventArgs e)
        {
            const string NullValue   = null;
            var          functions   = new Functions();
            var          savePath    = documentsPath + selectedProject;
            var          projectName = label3.Text;

            functions.CreateProjectSpecificationDocument(selectedProject, savePath, projectName);
            try
            {
                // Сохраняю в БД
                using (DataBaseContext dataBaseConnection = new DataBaseContext())
                {
                    // Проверяю, есть ли такой документ по проекту
                    var projectID = Convert.ToInt32(selectedProject);
                    var docName   = dataBaseConnection.DocumentForProjects.Where(o => o.ProjectID == projectID).Where(
                        o1 => o1.DocumentName == "Спецификация.xlsx").Select(
                        o2 => o2.DocumentName).FirstOrDefault();
                    // Если документа нет, сохраняем, если есть - он перезапишется сам
                    if (docName == NullValue)
                    {
                        // Записываю данные для записи
                        var documentForProject = new DocumentForProject();
                        documentForProject.ProjectID    = Convert.ToInt32(selectedProject);
                        documentForProject.DocumentName = "Спецификация.xlsx";
                        documentForProject.DocumentType = "Спецификация";
                        documentForProject.DocumentPath = savePath + "\\" + documentForProject.DocumentName;
                        // Вношу изменения в базу данных
                        dataBaseConnection.DocumentForProjects.Add(documentForProject);
                        dataBaseConnection.SaveChanges();
                    }
                }
                // Обновляю грид
                FillDocumentsForProjectGrid();
            }
            catch
            {
                MessageBox.Show("Ошибка в сохранении документа <Спецификация> в БД, проверьте ее\nДокумент создан, но не внесен в БД");
            }
        }