//Вызов окна подтверждения удаления записи для таблицы Подписок, а также удаление записи private void DeleteInSubscriber() { DeleteSubscriber = new ShowOrDeleteInSubscriber(); int selectedIndex; int selectedRow = dataGrid_Subscriber.SelectedIndex; if (selectedRow >= 0) { DeleteSubscriber.SetData(subscriberArr[selectedRow], ShowOrDeleteInSubscriber.ModeWindow.DeleteConfirm); selectedIndex = subscriberArr[selectedRow].subscriber_Id; } else { MessageBox.Show("Выделите запись которую желаете удалить", "Внимание", MessageBoxButton.OK, MessageBoxImage.Warning); return; } DeleteSubscriber.Owner = this; bool?result = DeleteSubscriber.ShowDialog(); if (result == true) { using (MailContext context = new MailContext()) { Subscriber subscriber = (Subscriber)context.Subscribers.FirstOrDefault(c => c.subscriber_Id == selectedIndex); List <Subscription> subscriptions = context.Subscriptions.Where(c => c.id_Subscriber.subscriber_Id == subscriber.subscriber_Id).ToList(); List <int> subscriptionsId = new List <int>(); foreach (Subscription subscription in subscriptions) { subscriptionsId.Add(subscription.subscription_Id); } //Проверка на наличие ссылки на удаляемую запись List <Mail> mails = context.Mail.Where(c => subscriptionsId.Contains(c.id_Subscription.subscription_Id)).ToList(); if (mails.Count > 0) { if (MessageBox.Show("Внимание! Удаление " + selectedIndex + " записи таблице приведет к удалению " + subscriptions.Count + " подписок в таблице Подписок! \n" + " А также к обнулению " + mails.Count + " ссылок на подписку в Главной таблице!" + "\n Вы уверены что хотите удалить " + selectedIndex + " запись в таблице Подписок?" , "Внимание", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.No) { return; } } context.Subscribers.Remove(subscriber); context.SaveChanges(); MessageBox.Show("Запись №" + selectedIndex + " в таблице Подписчиков удалена успешно!", "Успешно", MessageBoxButton.OK, MessageBoxImage.Information); RefreshSubscriberTable(); RefreshSubscriptionTable(); RefreshMainTable(); } } }
//Метод вызова окна просмотра записи, а также контроля за ними private void ShowInSubscriber() { int rowIndex = dataGrid_Subscriber.SelectedIndex; if (rowIndex >= 0) { int index = subscriberArrNow[rowIndex].subscriber_Id; if (ShowSubscriberList.Count != 0) { //Очистка листа ShowSubscriberList от закрытых окон ShowOrDeleteInSubscriber[] tempArr = ShowSubscriberList.ToArray(); foreach (ShowOrDeleteInSubscriber SODISuber in tempArr) { if (SODISuber.IsVisible == false) { ShowSubscriberList.Remove(SODISuber); } } //Вывод окна на передний план если оно уже было открыто foreach (ShowOrDeleteInSubscriber SODISubion in ShowSubscriberList) { //MessageBox.Show(SODISubion.id.ToString()); if (SODISubion.id == index) { SODISubion.Activate(); return; } } } ShowSubscriber = new ShowOrDeleteInSubscriber(); ShowSubscriber.Owner = this; ShowSubscriber.Show(); ShowSubscriber.SetData(index, ShowOrDeleteInSubscriber.ModeWindow.Show); ShowSubscriberList.Add(ShowSubscriber); } }