You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

115 lines
4.4 KiB

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace eCompanies
{
/// <summary>
/// Логика взаимодействия для MainWindow.xaml
/// </summary>
public delegate void UpdateCompanyGridDelegate(Company updatingCompany);
public partial class MainWindow : Window
{
List<int> deletingCompanyList = new List<int>();
List<int> updatingCompanyList = new List<int>();
UsersWindow usersWindowInstance = null;
public MainWindow()
{
InitializeComponent();
companyGrid.DataContext = App.getCompanies();
}
private void updateCompanyItem(Company updatingCompany)
{
if (updatingCompany == null) return;
updatingCompanyList.Add(updatingCompany.CompanyId);
var context = ((ObservableCollection<Company>)companyGrid.DataContext).ToList<Company>();
for (int i = 0; i < context.Count; i++)
{
if (context[i].CompanyId.Equals(updatingCompany.CompanyId))
{
context[i] = updatingCompany;
companyGrid.DataContext = new ObservableCollection<Company>(context);
updatingCompanyList.Add(updatingCompany.CompanyId);
return;
}
}
}
private void RowEdit_Click(object sender, RoutedEventArgs e)
{
UpdateCompanyGridDelegate d = updateCompanyItem;
Company company = (Company)companyGrid.CurrentItem;
if (usersWindowInstance != null) usersWindowInstance.Close();
usersWindowInstance = new UsersWindow(company, d);
usersWindowInstance.Show();
}
private void RowDelete_Click(object sender, RoutedEventArgs e)
{
deleteCompanyFromGrid();
}
private void deleteCompanyFromGrid()
{
var companies = (ObservableCollection<Company>)companyGrid.DataContext;
foreach (Company c in companies)
{
int deletingUser = ((Company)companyGrid.CurrentItem).CompanyId;
if (Equals(c.CompanyId, deletingUser))
{
deletingCompanyList.Add(((Company)companyGrid.CurrentItem).CompanyId);
companies.Remove(c);
companyGrid.DataContext = companies;
return;
}
}
}
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
MessageBoxResult mbr = MessageBox.Show("Вы закрываете приложение. Хотите сохранить результаты?", "Сохранение изменений", MessageBoxButton.YesNo);
if (mbr == MessageBoxResult.No)
return;
foreach (Company c in (ObservableCollection<Company>)companyGrid.DataContext)
{
if (c.Name == null)
{
mbr = MessageBox.Show("Вы не заполнили поле [Название компании]! " +
"Вернуться к форме для исправления? (При ответе Нет все данные будут потеряны!)",
"Поле [Название компании] не может быть пустым!",
MessageBoxButton.YesNo);
if (mbr == MessageBoxResult.Yes)
{
e.Cancel = true;
return;
}
else if (mbr == MessageBoxResult.No)
return;
}
if (deletingCompanyList != null)
App.removeCompany(deletingCompanyList);
deletingCompanyList = null;
// TODO: реализация обновления старых компаний и добавления новых
}
}
}
}