//+Редактирование фильма !!! контекстное добавление компании private void bEditFilm_Click(object sender, EventArgs e) { //Вытаскиваем список компаний List <company> companies; using (var ctx = new DataContext()) { companies = ctx.companies.ToList(); } companies.Sort((company a, company b) => a.name.CompareTo(b.name)); foreach (ListViewItem selectedItem in lvFilms.SelectedItems) { int thisFilmId = (int)selectedItem.Tag; var thisFilm = dataManager.GetFilmFromDB(thisFilmId); var updatingForm = new FilmEditForm("Редактирование фильма", countyNames, companies, thisFilm, selectedItem.SubItems[8].Text); if (updatingForm.ShowDialog() == DialogResult.OK) { //Добавляем новую компанию, если была указана новая if (updatingForm.IsCompanyNew) { if (dataManager.AddCompanyToDB(updatingForm.FilmCompany) == -1) { MessageBox.Show("Действие не было выполнено. Не удалось добавить компанию.", "Редактирование фильма"); return; } //И в таблицу var lvCom = new ListViewItem(items: new[] { updatingForm.FilmCompany.name, "", "" }); lvCom.Tag = updatingForm.FilmCompany.id; interfaceManager.AddItemToTable(lvCompanies, lvCom); interfaceManager.AutoResizeListViewColumns(lvCompanies); } //Создаём фильм с новыми данными var newFilmData = new film { name = updatingForm.FilmName, year = updatingForm.FilmYear, country = updatingForm.FilmCountryName, budget = updatingForm.FilmBudget, age_limit = updatingForm.FilmAgeLimit, duration = updatingForm.FilmDuration, rating = updatingForm.FilmRating, genre = updatingForm.FilmGenre, company_id = updatingForm.FilmCompany.id, //id обновилось при вставке компании, если компания новая director = updatingForm.FilmDirector, composer = updatingForm.FilmComposer }; //Обновляем фильм в БД dataManager.EditFilmInDB(thisFilmId, newFilmData); //Обновляем фильм в таблице interfaceManager.UpdateItemInTable(selectedItem, newFilmData, updatingForm.FilmCompany.name); interfaceManager.AutoResizeListViewColumns(lvFilms); //Обновляем данные в таблице контрактов //Если поменяли название и год - меняем запись там if (newFilmData.name != thisFilm.name || newFilmData.year != thisFilm.year) { foreach (ListViewItem lvContract in lvContracts.Items) { var curContractPK = (ContractPrimaryKey)lvContract.Tag; var curContract = dataManager.GetContractFromDB(curContractPK); if (curContract.film_id == thisFilm.id) { lvContract.SubItems[0].Text = newFilmData.ToString(); } } interfaceManager.AutoResizeListViewColumns(lvContracts); } } } }
//+Добавление фильма !!! контекстное добавление компании private void bAddFilm_Click(object sender, EventArgs e) { //Вытаскиваем список компаний var companies = new List <company>(); using (var ctx = new DataContext()) { foreach (var com in ctx.companies) { companies.Add(com); } } companies.Sort((company a, company b) => a.name.CompareTo(b.name)); var addingForm = new FilmEditForm("Добавление фильма", countyNames, companies); if (addingForm.ShowDialog() == DialogResult.OK) { //Добавляем компанию, если была введена новая if (addingForm.IsCompanyNew) { if (dataManager.AddCompanyToDB(addingForm.FilmCompany) == -1) { MessageBox.Show("Действие не было выполнено. Не удалось добавить компанию.", "Добавление фильма"); return; } //Добавляем в таблицу var lvCom = new ListViewItem(items: new[] { addingForm.FilmCompany.name, "", "" }); lvCom.Tag = addingForm.FilmCompany.id; interfaceManager.AddItemToTable(lvCompanies, lvCom); interfaceManager.AutoResizeListViewColumns(lvCompanies); } //Создаём новый фильм var addingFilm = new film { name = addingForm.FilmName, year = addingForm.FilmYear, country = addingForm.FilmCountryName, budget = addingForm.FilmBudget, age_limit = addingForm.FilmAgeLimit, duration = addingForm.FilmDuration, rating = addingForm.FilmRating, genre = addingForm.FilmGenre, company_id = addingForm.FilmCompany.id, //id обновилось при вставке компании, если компания новая director = addingForm.FilmDirector, composer = addingForm.FilmComposer }; if (dataManager.AddFilmToDB(addingFilm) == -1) { MessageBox.Show("Действие не было выполнено. Не удалось добавить фильм.", "Добавление фильма"); return; } //Добавляем фильм в таблицу var lvFilm = new ListViewItem(items: new[] { addingForm.FilmName, addingForm.FilmYear.ToString(), addingForm.FilmCountryName, addingForm.FilmBudget.ToString(), addingForm.FilmAgeLimit.ToString(), addingForm.FilmDuration.ToString(), addingForm.FilmRating.ToString(), addingForm.FilmGenre, addingForm.FilmCompany.name, addingForm.FilmDirector, addingForm.FilmComposer }); lvFilm.Tag = addingFilm.id; interfaceManager.AddItemToTable(lvFilms, lvFilm); interfaceManager.AutoResizeListViewColumns(lvFilms); } }