// Удалить документ 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("Ошибка в БД, проверьте её (функция удаления документа)"); } } }
// Кнопка добавить 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Проверьте БД (ошибка в функции добавления)"); } }
// Сформировать спецификацию 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Документ создан, но не внесен в БД"); } }