282 lines
11 KiB
C#
282 lines
11 KiB
C#
using Microsoft.EntityFrameworkCore;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Windows;
|
|
using System.Windows.Controls;
|
|
using Elwig.Helpers;
|
|
using Elwig.Models;
|
|
using System.Runtime.CompilerServices;
|
|
using System;
|
|
|
|
namespace Elwig.Windows {
|
|
public partial class AreaCommAdminWindow : AdministrationWindow {
|
|
private readonly Member member;
|
|
private bool IsEditing = false;
|
|
private bool IsCreating = false;
|
|
|
|
public AreaCommAdminWindow(Member member) {
|
|
InitializeComponent();
|
|
this.member = member;
|
|
Title = $"Flächenbindungen - {member.FamilyName} {member.GivenName} - Elwig";
|
|
RefreshContractList();
|
|
}
|
|
|
|
private void Window_Loaded(object sender, RoutedEventArgs e) {
|
|
KgInput.ItemsSource = Context.WbKgs.Select(k => k.Kg).OrderBy(k => k.Name).ToList();
|
|
RdInput.ItemsSource = Context.WbRde.OrderBy(r => r.Name).ToList();
|
|
SortInput.ItemsSource = Context.WineVarieties.OrderBy(s => s.Name).ToList();
|
|
AttrInput.ItemsSource = Context.WineAttributes.OrderBy(a => a.Name).ToList();
|
|
CultInput.ItemsSource = Context.WineCultivations.OrderBy(c => c.Name).ToList();
|
|
}
|
|
|
|
private void RefreshAreaCommitmentList() {
|
|
Contract? contract = (Contract)ContractList.SelectedItem;
|
|
|
|
if (contract == null) {
|
|
AreaCommitmentList.ItemsSource = null;
|
|
return;
|
|
}
|
|
|
|
Context.AreaCommitments.Load();
|
|
List<AreaCommitment> commitments = Context.AreaCommitments.Where(a => a.VNr == contract.VNr).ToList();
|
|
|
|
AreaCommitmentList.ItemsSource = commitments;
|
|
if (commitments.Count == 1)
|
|
AreaCommitmentList.SelectedIndex = 0;
|
|
}
|
|
|
|
private void RefreshContractList() {
|
|
Context.Contracts.Load();
|
|
List<Contract> contracts = Context.Contracts.Where(c => c.MgNr == member.MgNr).ToList();
|
|
|
|
ContractList.ItemsSource = contracts;
|
|
if (contracts.Count == 1)
|
|
ContractList.SelectedIndex = 0;
|
|
|
|
RefreshAreaCommitmentList();
|
|
}
|
|
|
|
private void RefreshInputs(bool validate = false) {
|
|
ClearInputStates();
|
|
AreaCommitment? a = (AreaCommitment)AreaCommitmentList.SelectedItem;
|
|
if (a != null) {
|
|
//EditMemberButton.IsEnabled = true;
|
|
//DeleteMemberButton.IsEnabled = true;
|
|
//AreaCommitmentButton.IsEnabled = true;
|
|
FillInputs(a);
|
|
} else {
|
|
//EditMemberButton.IsEnabled = false;
|
|
//DeleteMemberButton.IsEnabled = false;
|
|
//AreaCommitmentButton.IsEnabled = false;
|
|
ClearInputs();
|
|
}
|
|
//if (!validate) ClearInputStates();
|
|
GC.Collect();
|
|
}
|
|
|
|
private void FillInputs(AreaCommitment a) {
|
|
ClearOriginalValues();
|
|
|
|
VNr.Text = a.VNr.ToString();
|
|
MgNr.Text = a.Contract.MgNr.ToString();
|
|
YearFrom.Text = a.Contract.YearFrom.ToString();
|
|
YearTo.Text = a.Contract.YearTo.ToString();
|
|
|
|
KgInput.SelectedItem = a.Kg.Kg;
|
|
RdInput.SelectedItem = a.Rd;
|
|
GstNr.Text = a.GstNr;
|
|
Area.Text = a.Area.ToString() + "m²";
|
|
|
|
SortInput.SelectedItem = a.WineVar;
|
|
AttrInput.SelectedItem = a.WineAttr;
|
|
CultInput.SelectedItem = a.WineCult;
|
|
|
|
FillOriginalValues();
|
|
}
|
|
|
|
private void NewAreaCommitmentButton_Click(object sender, RoutedEventArgs evt) {
|
|
IsCreating = true;
|
|
AreaCommitmentList.IsEnabled = false;
|
|
AreaCommitmentList.SelectedItem = null;
|
|
HideNewEditDeleteButtons();
|
|
ShowSaveResetCancelButtons();
|
|
UnlockInputs();
|
|
InitInputs();
|
|
}
|
|
|
|
private void EditAreaCommitmentButton_Click(object sender, RoutedEventArgs evt) {
|
|
if (AreaCommitmentList.SelectedItem == null)
|
|
return;
|
|
|
|
IsEditing = true;
|
|
AreaCommitmentList.IsEnabled = false;
|
|
|
|
HideNewEditDeleteButtons();
|
|
ShowSaveResetCancelButtons();
|
|
UnlockInputs();
|
|
}
|
|
|
|
private void DeleteAreaCommitmentButton_Click(object sender, RoutedEventArgs evt) {
|
|
AreaCommitment a = (AreaCommitment)AreaCommitmentList.SelectedItem;
|
|
if (a == null) return;
|
|
|
|
var r = MessageBox.Show(
|
|
$"Soll die Flächenbindung \"{a.Kg.Kg.Name}, {a.Rd.Name}\", (MgNr. {a.GstNr}) wirklich unwiderruflich gelöscht werden?",
|
|
"Flächenbindung löschen", MessageBoxButton.YesNo, MessageBoxImage.Warning, MessageBoxResult.No);
|
|
if (r == MessageBoxResult.Yes) {
|
|
Context.Remove(a);
|
|
Context.SaveChanges();
|
|
RefreshAreaCommitmentList();
|
|
}
|
|
}
|
|
|
|
private void NewContractButton_Click(object sender, RoutedEventArgs evt) {
|
|
IsCreating = true;
|
|
AreaCommitmentList.IsEnabled = false;
|
|
AreaCommitmentList.SelectedItem = null;
|
|
HideNewEditDeleteButtons();
|
|
ShowSaveResetCancelButtons();
|
|
UnlockInputs();
|
|
InitInputs();
|
|
}
|
|
|
|
private void DeleteContractButton_Click(object sender, RoutedEventArgs evt) {
|
|
Contract c = (Contract)ContractList.SelectedItem;
|
|
if (c == null) return;
|
|
|
|
var r = MessageBox.Show(
|
|
$"Soll der Vertrag \"{c.VNr} und alle enthaltenen Flächenbindungen wirklich unwiderruflich gelöscht werden?",
|
|
"Vertrag löschen", MessageBoxButton.YesNo, MessageBoxImage.Warning, MessageBoxResult.No);
|
|
if (r == MessageBoxResult.Yes) {
|
|
Context.Remove(c);
|
|
Context.SaveChanges();
|
|
RefreshAreaCommitmentList();
|
|
}
|
|
}
|
|
|
|
private void AreaCommitmentSaveButton_Click(object sender, RoutedEventArgs evt) {
|
|
AreaCommitment? a = new();
|
|
if (IsEditing)
|
|
a = (AreaCommitment)AreaCommitmentList.SelectedItem;
|
|
else if (IsCreating)
|
|
a = new();
|
|
|
|
//TODO
|
|
|
|
a.KgNr = ((AT_Kg)KgInput.SelectedItem).KgNr;
|
|
a.RdNr = ((WbRd)RdInput.SelectedItem).RdNr;
|
|
a.GstNr = GstNr.Text;
|
|
|
|
try {
|
|
if (IsEditing)
|
|
Context.Update(a);
|
|
else if (IsCreating)
|
|
Context.Add(a);
|
|
Context.SaveChanges();
|
|
} catch (Exception exc) {
|
|
var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message;
|
|
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
|
MessageBox.Show(str, "Flächenbindung aktualisieren", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
}
|
|
|
|
IsEditing = false;
|
|
IsCreating = false;
|
|
AreaCommitmentList.IsEnabled = true;
|
|
HideSaveResetCancelButtons();
|
|
ShowNewEditDeleteButtons();
|
|
LockInputs();
|
|
RefreshAreaCommitmentList();
|
|
}
|
|
|
|
private void AreaCommitmentResetButton_Click(object sender, RoutedEventArgs evt) {
|
|
if (IsEditing) {
|
|
RefreshInputs();
|
|
} else if (IsCreating) {
|
|
InitInputs();
|
|
}
|
|
UpdateButtons();
|
|
}
|
|
|
|
private void AreaCommitmentCancelButton_Click(object sender, RoutedEventArgs evt) {
|
|
IsEditing = false;
|
|
IsCreating = false;
|
|
AreaCommitmentList.IsEnabled = true;
|
|
HideSaveResetCancelButtons();
|
|
ShowNewEditDeleteButtons();
|
|
RefreshInputs();
|
|
ClearInputStates();
|
|
LockInputs();
|
|
}
|
|
|
|
private void ContractSaveButton_Click(object sender, RoutedEventArgs evt) {
|
|
//TODO
|
|
}
|
|
|
|
private void ContractCancelButton_Click(object sender, RoutedEventArgs evt) {
|
|
IsEditing = false;
|
|
IsCreating = false;
|
|
ContractList.IsEnabled = true;
|
|
HideSaveResetCancelButtons();
|
|
ShowNewEditDeleteButtons();
|
|
RefreshInputs();
|
|
ClearInputStates();
|
|
LockInputs();
|
|
}
|
|
|
|
override protected void UpdateButtons() {
|
|
if (!IsEditing && !IsCreating) return;
|
|
bool ch = HasChanged(), v = IsValid();
|
|
AreaCommitmentResetButton.IsEnabled = (ch);
|
|
AreaCommitmentSaveButton.IsEnabled = (v && ch);
|
|
}
|
|
|
|
private void InitInputs() {
|
|
FillOriginalValues();
|
|
}
|
|
|
|
private void ShowSaveResetCancelButtons() {
|
|
AreaCommitmentSaveButton.IsEnabled = false;
|
|
AreaCommitmentResetButton.IsEnabled = false;
|
|
AreaCommitmentCancelButton.IsEnabled = true;
|
|
AreaCommitmentSaveButton.Visibility = Visibility.Visible;
|
|
AreaCommitmentResetButton.Visibility = Visibility.Visible;
|
|
AreaCommitmentCancelButton.Visibility = Visibility.Visible;
|
|
}
|
|
|
|
private void HideSaveResetCancelButtons() {
|
|
AreaCommitmentSaveButton.IsEnabled = false;
|
|
AreaCommitmentResetButton.IsEnabled = false;
|
|
AreaCommitmentCancelButton.IsEnabled = false;
|
|
AreaCommitmentSaveButton.Visibility = Visibility.Hidden;
|
|
AreaCommitmentResetButton.Visibility = Visibility.Hidden;
|
|
AreaCommitmentCancelButton.Visibility = Visibility.Hidden;
|
|
}
|
|
|
|
private void ShowNewEditDeleteButtons() {
|
|
NewAreaCommitmentButton.IsEnabled = true;
|
|
EditAreaCommitmentButton.IsEnabled = AreaCommitmentList.SelectedItem != null;
|
|
DeleteAreaCommitmentButton.IsEnabled = AreaCommitmentList.SelectedItem != null;
|
|
NewAreaCommitmentButton.Visibility = Visibility.Visible;
|
|
EditAreaCommitmentButton.Visibility = Visibility.Visible;
|
|
DeleteAreaCommitmentButton.Visibility = Visibility.Visible;
|
|
}
|
|
|
|
private void HideNewEditDeleteButtons() {
|
|
NewAreaCommitmentButton.IsEnabled = false;
|
|
EditAreaCommitmentButton.IsEnabled = false;
|
|
DeleteAreaCommitmentButton.IsEnabled = false;
|
|
NewAreaCommitmentButton.Visibility = Visibility.Hidden;
|
|
EditAreaCommitmentButton.Visibility = Visibility.Hidden;
|
|
DeleteAreaCommitmentButton.Visibility = Visibility.Hidden;
|
|
}
|
|
|
|
private void ContractList_SelectionChanged(object sender, SelectionChangedEventArgs evt) {
|
|
RefreshAreaCommitmentList();
|
|
}
|
|
|
|
private void AreaCommitmentList_SelectionChanged(object sender, SelectionChangedEventArgs evt) {
|
|
RefreshInputs();
|
|
}
|
|
}
|
|
}
|