Files
BeWoPlaner/BeWo/View/Document/TemplatePrintSelection.xaml.cs

319 lines
11 KiB
C#

using System;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using BeWo.Controls;
using BeWo.Core;
using BeWo.ServiceProxy;
using BeWo.Validation;
using BeWo.View.Search;
using BeWo.ViewModel;
using BeWo.ViewModel.ListViewModel;
using BeWo.Core.Service;
using BS.Shared;
using BS.Shared.Extensions;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.Services;
using BS.Shared.Translation;
using DevExpress.Xpf.RichEdit;
using SupportConceptService = BeWo.Core.Service.SupportConceptService;
using System.Linq;
using DevExpress.Xpf.Grid;
using System.Windows.Media.Imaging;
using DevExpress.Utils;
namespace BeWo.View.Document
{
public partial class TemplatePrintSelection
{
public event Action ButtonCreateClicked;
public event Action ButtonCreateForSelectionClicked;
public event Action ButtonCreateForAllClicked;
public event Action ButtonCancelClicked;
public DocumentTreeItemVM selectedFolder = null;
public TemplatePrintSelection()
{
InitializeComponent();
}
public void InitView(long? tabelle)
{
InitializeComponent();
List<PrintSelectionVM> vms = new List<PrintSelectionVM>();
switch (tabelle)
{
case 2: vms = GetEmployee(); break;
case 8: vms = GetCustomers(); break;
case 15: vms = GetSupportConcepts(); break;
}
List<PrintSelectionVM> sortedList = vms.OrderBy(vm => vm.LastName).ToList();
datagrid_enabled_for_template.ItemsSource = sortedList;
combobox_elementList.ItemsSource = sortedList;
datagrid_enabled_for_template.SelectedItem = null;
Focus();
}
private List<PrintSelectionVM> GetEmployee()
{
var DCs = VMFactory.CreateEmployeeList();
List<PrintSelectionVM> list = new List<PrintSelectionVM>();
foreach (var e in DCs)
{
list.Add(new PrintSelectionVM(e.LastName, e.FirstName, 2, e.EmployeeOid));
}
return list;
}
private List<PrintSelectionVM> GetCustomers()
{
var DCs = VMFactory.CreateCustomerList();
List<PrintSelectionVM> list = new List<PrintSelectionVM>();
foreach (var c in DCs)
{
list.Add(new PrintSelectionVM(c.LastName, c.FirstName, 8, c.CustomerOid));
}
return list;
}
private List<PrintSelectionVM> GetSupportConcepts()
{
var DCs = VMFactory.CreateSupportConceptList();
List<PrintSelectionVM> list = new List<PrintSelectionVM>();
foreach (var s in DCs)
{
string[] dateAndTime = s.StartDate.ToString().Split(' ');
list.Add(new PrintSelectionVM(s.LastName + " (" + dateAndTime[0] + ")", s.FirstName, 15, s.SupportConceptOid));
}
return list;
}
private void Button_CreateTemplateBasedDocument_Click(object sender, RoutedEventArgs e)
{
selectedFolder = null;
var selected = GetSelectedElements();
if (selected == null || selected.Count == 0)
{
MessageBox.Show("Es muss mindestens ein Datensatz ausgewählt werden.", "BeWoPlaner", MessageBoxButton.OK, MessageBoxImage.Information);
return;
}
ButtonCreateClicked?.Invoke();
}
private void Button_CreateTemplateForSelection_Click(object sender, RoutedEventArgs e)
{
var selected = combobox_elementList.SelectedItem as PrintSelectionVM;
if (selected == null)
{
MessageBox.Show("Es muss ein Datensatz ausgewählt werden.", "BeWoPlaner", MessageBoxButton.OK, MessageBoxImage.Information);
return;
}
ButtonCreateForSelectionClicked?.Invoke();
}
//private void Button_CreateTemplateBasedDocumentForAll_Click(object sender, RoutedEventArgs e)
//{
// var selected = datagrid_enabled_for_template.ItemsSource as List<PrintSelectionVM>;
// ButtonCreateForAllClicked?.Invoke();
//}
private void Button_Cancel_Click(object sender, RoutedEventArgs e)
{
ButtonCancelClicked?.Invoke();
}
public List<PrintSelectionVM> GetSelectedElements()
{
var t = datagrid_enabled_for_template.ItemsSource as List<PrintSelectionVM>;
List<PrintSelectionVM> vms = new List<PrintSelectionVM>();
foreach (var item in t)
{
if(item.Selected)
vms.Add(item);
}
return vms;
}
private void Button_SelectAll_Click(object sender, RoutedEventArgs e)
{
var t = datagrid_enabled_for_template.ItemsSource as List<PrintSelectionVM>;
List<PrintSelectionVM> vms = new List<PrintSelectionVM>();
foreach (var item in t)
{
item.Selected = true;
vms.Add(item);
}
//datagrid_enabled_for_template.ItemsSource = null;
datagrid_enabled_for_template.ItemsSource = vms;
}
private void Button_UnselectAll_Click(object sender, RoutedEventArgs e)
{
var t = datagrid_enabled_for_template.ItemsSource as List<PrintSelectionVM>;
List<PrintSelectionVM> vms = new List<PrintSelectionVM>();
foreach (var item in t)
{
item.Selected = false;
vms.Add(item);
}
//datagrid_enabled_for_template.ItemsSource = null;
datagrid_enabled_for_template.ItemsSource = vms;
}
private void CheckBox_Checked(object sender, RoutedEventArgs e)
{
treelistcontrol_folderStructureForSelection.Visibility = Visibility.Visible;
}
private void CheckBox_Unchecked(object sender, RoutedEventArgs e)
{
selectedFolder = null;
treelistcontrol_folderStructureForSelection.Visibility = Visibility.Collapsed;
}
private void combobox_elementList_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var selection = combobox_elementList.SelectedItem as PrintSelectionVM;
var objectOid = selection.ObjectOid;
TableID tid = TableID.Employee;
switch(selection.Table)
{
case 2: tid = TableID.Employee;break;
case 8: tid = TableID.Customer;break;
case 15: tid = TableID.SupportConcept;break;
}
var folderDCs = VMFactory.CreateFolderList(tid, (long)objectOid);
for (int i = DocumentsTreeView_folderStructureForSelection.Nodes.Count - 1; i >= 0; i--)
DocumentsTreeView_folderStructureForSelection.Nodes.Remove(DocumentsTreeView_folderStructureForSelection.Nodes[i]);
GenerateFolderStructure(tid, null, folderDCs);
}
private void GenerateFolderStructure(TableID table, TreeListNode node, List<BeWoFolderDC> folderDCs)
{
if (node == null)
{
node = new TreeListNode()
{
IsExpandButtonVisible = DefaultBoolean.True,
Tag = false,
Image = LoadFolderImage()
};
}
var content = node.Content as DocumentTreeItemVM;
foreach (var folder in folderDCs)
{
//Falls kein übergeordneter Knoten exisitert
//if(content == null)
//{
// PrintSelectionVM selected = combobox_elementList.SelectedItem as PrintSelectionVM;
// var dc = new DocumentTreeItemDC()
// {
// DocTreeItemOid = 0,
// ParentOid = null,
// Name = "Alle Ordner",
// Table = table
// };
// content = new DocumentTreeItemVM(dc);
// node.Content = content;
// DocumentsTreeView_folderStructureForSelection.Nodes.Add(node);
//}
PrintSelectionVM selected = combobox_elementList.SelectedItem as PrintSelectionVM;
DocumentTreeItemDC folder_dc = new DocumentTreeItemDC()
{
DocTreeItemOid = folder.BeWoFolderOid,
ParentOid = null,
Name = folder.Name,
FilesInFolder = new List<FileAttachmentDC>(),
BeWoFolderDC = folder,
Table = table,
ObjectOid = selected.ObjectOid
};
if (content != null)
folder_dc.ParentOid = content.DocTreeItemOid;
DocumentTreeItemVM folder_vm = new DocumentTreeItemVM(folder_dc);
TreeListNode newNode_folder = new TreeListNode()
{
Content = folder_vm,
IsExpandButtonVisible = DefaultBoolean.True,
Tag = false,
Image = LoadFolderImage()
};
folder_dc.Node = newNode_folder;
if(node.Content == null)
DocumentsTreeView_folderStructureForSelection.Nodes.Add(newNode_folder);
else
node.Nodes.Add(newNode_folder);
if (folder.SubFolders.Count != 0)
{
GenerateFolderStructure(table, newNode_folder, folder.SubFolders);
}
}
}
private BitmapImage LoadFolderImage()
{
return new BitmapImage(new Uri("/Ressources/Icons/Folder.png", UriKind.Relative));
}
private void DocumentsTreeView_FocusedRowChanged(object sender, DevExpress.Xpf.Grid.FocusedRowChangedEventArgs e)
{
//if(DocumentsTreeView_folderStructureForSelection.SelectedRows.Count != 0)
// selectedFolder = DocumentsTreeView_folderStructureForSelection.SelectedRows[0] as DocumentTreeItemVM;
}
private void DocumentsTreeView_NodeExpanding(object sender, DevExpress.Xpf.Grid.TreeList.TreeListNodeAllowEventArgs e)
{
}
private void DocumentsTreeView_folderStructureForSelection_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (DocumentsTreeView_folderStructureForSelection.SelectedRows.Count != 0)
selectedFolder = DocumentsTreeView_folderStructureForSelection.SelectedRows[0] as DocumentTreeItemVM;
}
//public List<PrintSelectionVM> SelectAllElements()
//{
// return datagrid_enabled_for_template.ItemsSource as List<PrintSelectionVM>;
//}
}
}