//Принять изменения private void bActorSave_Click(object sender, EventArgs e) { //Фильм if (cbFilm.Text == "") { MessageBox.Show("Не выбран фильм!\nЕсли нет нужного, вы можете ввести название нового фильма"); return; } //Если выбран существующий - его берём. Нет - отмечаем это и создаём новый if (cbFilm.SelectedItem != null) { NewContrFilm = (film)cbFilm.SelectedItem; IsFilmNew = false; } else { NewContrFilm = new film { name = cbFilm.Text }; IsFilmNew = true; } //Актёр if (cbActor.Text == "") { MessageBox.Show("Не выбран актёр!\nЕсли нет нужного, вы можете ввести имя нового актёра"); return; } //Если выбран существующий - его берём. Нет - отмечаем это и создаём новый if (cbActor.SelectedItem != null) { NewContrActor = (actor)cbActor.SelectedItem; IsActorNew = false; } else { NewContrActor = new actor { name = cbActor.Text }; IsActorNew = true; } decimal decimalRez; if (!decimal.TryParse(tbActorHonorarium.Text, out decimalRez)) { MessageBox.Show("Гонорар введён неверно!"); return; } NewContrHonorarium = decimalRez; DialogResult = DialogResult.OK; Close(); }
//+Редактирование фильма !!! контекстное добавление компании 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); } } } }
//Конструктор для инициализированных полей public FilmEditForm(string headerText, List <string> countryNames, List <company> companies, film editingFilm, string filmCompanyName) { InitializeComponent(); SetUpForm(headerText, countryNames, companies); //Заполнение полей tbFilmName.Text = editingFilm.name; tbFilmYear.Text = editingFilm.year.ToString(); cbFilmCountry.Text = editingFilm.country; tbFilmBudget.Text = editingFilm.budget.ToString(); cbFilmAgeLimit.Text = editingFilm.age_limit.ToString(); tbFilmDuration.Text = editingFilm.duration.ToString(); cbFilmRating.Text = editingFilm.rating.ToString(); tbFilmGenre.Text = editingFilm.genre; cbFilmCompany.Text = filmCompanyName; tbFilmDirector.Text = editingFilm.director; tbFilmComposer.Text = editingFilm.composer; }
//+Добавление фильма !!! контекстное добавление компании 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); } }