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.
 
 

109 lines
4.4 KiB

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
namespace eCompanies
{
/// <summary>
/// Логика взаимодействия для MainWindow.xaml
/// </summary>
public delegate void UpdateCompanyGridDelegate(Company updatingCompany);
public partial class MainWindow : Window
{
UsersWindow usersWindowInstance = null;
public MainWindow()
{
InitializeComponent();
companyGrid.DataContext = App.getCompanies();
}
private void updateCompanyItem(Company updatingCompany)
{
if (updatingCompany == null) return;
var c = ((DataGrid)companyGrid).DataContext as ObservableCollection<Company>;
for (int i = 0; i != c.Count(); i++)
if (c[i].CompanyId.Equals(updatingCompany.CompanyId))
c[i] = updatingCompany;
companyGrid.Items.Refresh();
}
private void companyGrid_AddingNewItem(object sender, AddingNewItemEventArgs e)
{
e.NewItem = new Company();
var newItem = e.NewItem as Company;
newItem.dataGridRowStatus = DataGridRowStatus.NEW;
var c = ((DataGrid)sender).DataContext as ObservableCollection<Company>;
if (c.Count != 0)
newItem.CompanyId = ++c[c.Count - 1].CompanyId;
}
private void companyGrid_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
{
var context = e.Row.DataContext as Company;
if (context.dataGridRowStatus != DataGridRowStatus.NEW)
context.dataGridRowStatus = DataGridRowStatus.UPDATED;
}
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)
{
((Company)companyGrid.SelectedItem).dataGridRowStatus = DataGridRowStatus.REMOVED;
companyGrid.Items.Refresh();
}
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
MessageBoxResult mbr = MessageBox.Show("Вы закрываете окно с компаниями. Хотите сохранить результаты?", "Сохранение изменений", MessageBoxButton.YesNoCancel);
switch (mbr)
{
case MessageBoxResult.No: return;
case MessageBoxResult.Cancel:
e.Cancel = true;
break;
}
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 (c.CompanyId == 0)
// App.addCompany(c);
//else if (c.needUpdate)
// App.updateCompany(c);
}
//if (deletingCompanyList != null)
// App.removeCompany(deletingCompanyList);
//if (deletingUsersList != null)
// App.removeUser(deletingUsersList);
// нужно здесь обновить всех редактированных юзеров
// и добавить новых в базу данных
// TODO: переписать все обновления БД для [dataGridRowStatus]
}
}
}