//+Редактирование контрактов !!! Контекстное добавление фильмов и актёров private void bEditContract_Click(object sender, EventArgs e) { //Вытаскиваем списки фильмов и актёров List <film> films; List <actor> actors; using (var ctx = new DataContext()) { films = ctx.films.ToList(); actors = ctx.actors.ToList(); } films.Sort((film a, film b) => a.name.CompareTo(b.name)); actors.Sort((actor a, actor b) => a.name.CompareTo(b.name)); foreach (ListViewItem selectedItem in lvContracts.SelectedItems) { ContractPrimaryKey thisContractPK = (ContractPrimaryKey)selectedItem.Tag; var thisContract = dataManager.GetContractFromDB(thisContractPK); var updatingForm = new ContractEditForm("Редактирование контракта", films, actors, thisContract, selectedItem.SubItems[0].Text, selectedItem.SubItems[1].Text); if (updatingForm.ShowDialog() == DialogResult.OK) { //Добавляем фильм, если был указан новый if (updatingForm.IsFilmNew) { if (dataManager.AddFilmToDB(updatingForm.NewContrFilm) == -1) { MessageBox.Show("Действие не было выполнено. Не удалось добавить фильм.", "Добавление контракта"); return; } //И в таблицу var lvFilm = new ListViewItem(items: new[] { updatingForm.NewContrFilm.name, "", "", "", "", "", "", "", "", "", "" }); lvFilm.Tag = updatingForm.NewContrFilm.id; //обновилось при добавлении interfaceManager.AddItemToTable(lvFilms, lvFilm); interfaceManager.AutoResizeListViewColumns(lvFilms); } //Добавляем актёра, если был указан новый if (updatingForm.IsActorNew) { if (dataManager.AddActorToDB(updatingForm.NewContrActor) == -1) { MessageBox.Show("Действие не было выполнено. Не удалось добавить актёра.", "Добавление контракта"); return; } //И в таблицу var lvActor = new ListViewItem(items: new[] { updatingForm.NewContrActor.name, "", "", "" }); lvActor.Tag = updatingForm.NewContrActor.id; //обновилось при добавлении interfaceManager.AddItemToTable(lvActors, lvActor); interfaceManager.AutoResizeListViewColumns(lvActors); } //Обновляем контракт в БД var newContractData = new films_and_actors { film_id = updatingForm.NewContrFilm.id, actor_id = updatingForm.NewContrActor.id, actor_honorarium = updatingForm.NewContrHonorarium }; if (dataManager.EditContractInDB(thisContractPK, newContractData) == false) { MessageBox.Show("Действие не было выполнено.", "Редактирование контракта"); return; } //Обновляем контракт в таблице interfaceManager.UpdateItemInTable(selectedItem, newContractData, updatingForm.NewContrFilm, updatingForm.NewContrActor); interfaceManager.AutoResizeListViewColumns(lvContracts); } } }
//Конструктор для инициализированных полей public ContractEditForm(string headerText, List <film> films, List <actor> actors, films_and_actors contract, string filmStr, string actorStr) { InitializeComponent(); SetUpForm(headerText, films, actors); cbFilm.Text = filmStr; cbActor.Text = actorStr; tbActorHonorarium.Text = contract.actor_honorarium.HasValue ? contract.actor_honorarium.Value.ToString() : ""; }
//+Добавление контракта !!! контекстное добавление фильмов и актёров private void bAddContract_Click(object sender, EventArgs e) { //Вытаскиваем списки фильмов и актёров List <film> films; List <actor> actors; using (var ctx = new DataContext()) { films = ctx.films.ToList(); actors = ctx.actors.ToList(); } films.Sort((film a, film b) => a.name.CompareTo(b.name)); actors.Sort((actor a, actor b) => a.name.CompareTo(b.name)); var addingForm = new ContractEditForm("Добавление контракта", films, actors); if (addingForm.ShowDialog() == DialogResult.OK) { //Добавляем фильм, если был указан новый if (addingForm.IsFilmNew) { if (dataManager.AddFilmToDB(addingForm.NewContrFilm) == -1) { MessageBox.Show("Действие не было выполнено. Не удалось добавить фильм.", "Добавление контракта"); return; } //И в таблицу var lvFilm = new ListViewItem(items: new[] { addingForm.NewContrFilm.name, "", "", "", "", "", "", "", "", "", "" }); lvFilm.Tag = addingForm.NewContrFilm.id; //обновилось при добавлении interfaceManager.AddItemToTable(lvFilms, lvFilm); interfaceManager.AutoResizeListViewColumns(lvFilms); } //Добавляем актёра, если был указан новый if (addingForm.IsActorNew) { if (dataManager.AddActorToDB(addingForm.NewContrActor) == -1) { MessageBox.Show("Действие не было выполнено. Не удалось добавить актёра.", "Добавление контракта"); return; } //И в таблицу var lvActor = new ListViewItem(items: new[] { addingForm.NewContrActor.name, "", "", "" }); lvActor.Tag = addingForm.NewContrActor.id; //обновилось при добавлении interfaceManager.AddItemToTable(lvActors, lvActor); interfaceManager.AutoResizeListViewColumns(lvActors); } //Создаём новый контракт var addingContract = new films_and_actors { film_id = addingForm.NewContrFilm.id, actor_id = addingForm.NewContrActor.id, actor_honorarium = addingForm.NewContrHonorarium }; //Добавляем контракт в БД if (dataManager.AddContractToDB(addingContract) == null) { MessageBox.Show("Действие не было выполнено.", "Добавление контракта"); return; } //Добавляем в таблицу var lvContract = new ListViewItem(items: new[] { addingForm.NewContrFilm.ToString(), addingForm.NewContrActor.ToString(), addingForm.NewContrHonorarium.ToString() }); lvContract.Tag = new ContractPrimaryKey { FilmId = addingContract.film_id, ActorId = addingContract.actor_id }; interfaceManager.AddItemToTable(lvContracts, lvContract); interfaceManager.AutoResizeListViewColumns(lvContracts); } }