Files
BeWoPlaner/BeWo/View/Detail/Report/QueryView.xaml.cs

1196 lines
50 KiB
C#
Raw Normal View History

 using System;
2016-06-27 01:45:38 +02:00
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Media;
using System.Windows.Navigation;
2017-03-24 10:30:18 +01:00
using System.Windows.Threading;
2016-06-27 01:45:38 +02:00
using BeWo.Controls;
using BeWo.Core;
using BeWo.ServiceProxy;
using BeWo.View.Search;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
using BS.Shared.Extensions;
using DevExpress.Xpf.Editors;
using DevExpress.Xpf.Grid;
using BeWo.Core.Service;
2017-03-24 10:30:18 +01:00
using BeWo.ViewModel;
2016-06-27 01:45:38 +02:00
using Microsoft.Win32;
using System.Text;
using DevExpress.XtraReports.UI;
2016-06-27 01:45:38 +02:00
namespace BeWo.View.Detail.Report
{
/// <summary>
/// Interaction logic for QueryView.xaml
/// </summary>
public partial class QueryView : BeWoView
{
private readonly Dictionary<string, UIElement> parameterUIElements = new Dictionary<string, UIElement>();
private CompactEmployeeDC lastSelectedEmployee;
private CompactCustomerDC lastSelectedCustomer;
2017-02-01 13:53:59 +01:00
private CompactSupportConceptDC lastSelectedSupportConcept;
private CompactTeamDC lastSelectedTeam;
2019-09-17 17:44:57 +02:00
private CompactOrganisationDC lastSelectedOrganisation;
2016-06-27 01:45:38 +02:00
2017-03-24 10:30:18 +01:00
private String _UploadFileName;
2016-06-27 01:45:38 +02:00
public QueryView(IEnumerable<QueryDC> pQueries)
{
try
{
InitializeComponent();
var filteredList = pQueries.Where(LoggedOnUserHasRightForQuery).ToList();
combo_query.ItemsSource = filteredList;
textblock_link.Visibility = Visibility.Collapsed;
textblock_link_pdfexport.Visibility = Visibility.Collapsed;
DownloadLinkEngine = new DownloadLinkEngine();
linkExcelExport.NavigateUri = DownloadLinkEngine.GenerateNewExcelLink();
btnExecuteQuery.Visibility = Visibility.Collapsed;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
public DownloadLinkEngine DownloadLinkEngine { get; set; }
public override string Title
{
get
{
return "öffentliche Abfragen";
}
}
private DateEdit CreateDateEdit()
{
var dtp = new DateEdit
{
Margin = new Thickness(3),
Background = Brushes.White,
Foreground = Brushes.Black,
BorderThickness = new Thickness(1),
BorderBrush = Application.Current.FindResource("TextBoxBorderBrush") as Brush,
Width = 90
};
//dtp.TodayContent = "Heute";
return dtp;
}
private ComboBox CreateMonthCombo()
{
var comboboxMonth = new ComboBox
{
ItemsSource = DateTimeFormatInfo.CurrentInfo.MonthNames.Where(s => !string.IsNullOrEmpty(s))
};
var firstOfMonth = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
comboboxMonth.SelectedIndex = firstOfMonth.Subtract(new TimeSpan(1, 0, 0, 0)).Month - 1;
comboboxMonth.Width = 100;
return comboboxMonth;
}
private ComboBox CreateValueListEntryCombo(ValueListEntryType t)
{
var combobox = new ComboBox();
Cache.GetInstance().GetAllValueListEntrysByTypeAsync(t,
cb => this.Dispatch(
delegate
{
var items = new List<ValueListEntryDC>();
var dummy = new ValueListEntryDC
{
ValueListEntryOid = 0,
TypeDescription = ""
};
items.Add(dummy);
items.AddRange(cb);
combobox.ItemsSource = items;
combobox.SelectedItem = items[0];
}));
combobox.Width = 250;
2017-05-18 21:47:09 +02:00
combobox.Height = 23;
return combobox;
}
private ComboBox CreateServiceCategoryCombo()
{
var combobox = new ComboBox();
Cache.GetInstance().GetServiceCategoryDescriptionDict(
cb => this.Dispatch(
delegate
{
var items = new List<ServiceCategoryDC>();
var dummy = new ServiceCategoryDC
{
ServiceCategoryOid = 0,
Name = ""
};
items.Add(dummy);
items.AddRange(cb.Keys);
combobox.ItemsSource = items;
combobox.SelectedItem = items[0];
}));
combobox.Width = 250;
combobox.Height = 23;
2016-06-27 01:45:38 +02:00
return combobox;
}
2018-05-23 12:12:20 +02:00
private ComboBox CreateCustomCombo(IList<String> customValues)
{
var combobox = new ComboBox();
var items = new List<String>();
String dummy = "";
items.Add(dummy);
2021-02-02 23:23:05 +01:00
if (customValues != null)
{
items.AddRange(customValues);
}
2018-05-23 12:12:20 +02:00
combobox.ItemsSource = items;
combobox.SelectedItem = items[0];
combobox.Width = 250;
combobox.Height = 23;
return combobox;
}
2016-06-27 01:45:38 +02:00
private bool CreateParameterFieldsAndExecute(QueryDC query)
{
bool canExecute = true;
datagrid_result.Visibility = Visibility.Collapsed;
textblock_link.Visibility = Visibility.Collapsed;
textblock_link_pdfexport.Visibility = Visibility.Collapsed;
foreach (var item in query.Parameter)
{
string[] itemNames = item.Name.Split(new[] {'_'}, StringSplitOptions.RemoveEmptyEntries);
bool addPanel = true;
var sp = new StackPanel {Orientation = Orientation.Horizontal};
var lbl = new Label
{
VerticalAlignment = VerticalAlignment.Center,
Content = itemNames[0],
Width = 100
};
sp.Children.Add(lbl);
switch (item.ParamType)
{
case QueryParameterType.SupportConcept:
2017-02-01 13:53:59 +01:00
var peSc = new PopUpEdit
{
IsReadOnly = true,
MinWidth = 250,
Margin = new Thickness(3),
2017-08-14 11:59:31 +02:00
DeleteButtonVisibility = Visibility.Visible
};
peSc.DeleteClick += (s, e) =>
{
peSc.Text = "";
lastSelectedSupportConcept = null;
2017-02-01 13:53:59 +01:00
};
if (lastSelectedSupportConcept != null)
{
peSc.Text = lastSelectedSupportConcept.ToString();
}
var popupSc = new Popup();
popupSc.StaysOpen = false;
popupSc.Placement = PlacementMode.MousePoint;
popupSc.Width = 370;
popupSc.Height = 250;
var scsv = new SupportConceptSearchView();
scsv.SearchMode = SearchMode.ActiveCostbearer2SupportConcepts;
scsv.ItemSelected += (s, e) =>
{
popupSc.IsOpen = false;
peSc.Focus();
var newSc = e.Data;
peSc.Text = String.Format("{0}, {1}", newSc.Customer.LastNameFirstName, newSc.CostBearer);
lastSelectedSupportConcept = newSc;
};
popupSc.Child = scsv;
parameterUIElements.Add(item.Name + "_" + item.ParamType + "_1", scsv);
peSc.PopUpClick += (s, e) => { popupSc.IsOpen = true; };
sp.Children.Add(peSc);
sp.Children.Add(popupSc);
2016-06-27 01:45:38 +02:00
break;
case QueryParameterType.Employee:
var peEmp = new PopUpEdit
{
IsReadOnly = true,
Width = 250,
Margin = new Thickness(3),
2017-07-25 10:52:20 +02:00
DeleteButtonVisibility = Visibility.Visible
2016-06-27 01:45:38 +02:00
};
2017-07-25 10:52:20 +02:00
peEmp.DeleteClick += (s, e) =>
{
peEmp.Text = "";
lastSelectedEmployee = null;
};
2016-06-27 01:45:38 +02:00
if (lastSelectedEmployee != null)
{
peEmp.Text = lastSelectedEmployee.ToString();
}
var popupEmployee = new Popup();
popupEmployee.StaysOpen = false;
popupEmployee.Width = 370;
popupEmployee.Height = 250;
popupEmployee.Placement = PlacementMode.MousePoint;
var esv = new EmployeeSearchView();
2017-07-25 10:52:20 +02:00
2016-06-27 01:45:38 +02:00
esv.ItemSelected += (s, e) =>
{
popupEmployee.IsOpen = false;
peEmp.Focus();
CompactEmployeeDC newEmployee = e.Data;
peEmp.Text = newEmployee.ToString();
lastSelectedEmployee = newEmployee;
};
popupEmployee.Child = esv;
parameterUIElements.Add(item.Name + "_" + item.ParamType + "_1", esv);
peEmp.PopUpClick += (s, e) => { popupEmployee.IsOpen = true; };
sp.Children.Add(peEmp);
sp.Children.Add(popupEmployee);
break;
case QueryParameterType.Customer:
var pe = new PopUpEdit
{
IsReadOnly = true,
Width = 250,
Margin = new Thickness(3),
2017-08-14 11:59:31 +02:00
DeleteButtonVisibility = Visibility.Visible
2016-06-27 01:45:38 +02:00
};
2017-08-14 11:59:31 +02:00
pe.DeleteClick += (s, e) =>
{
pe.Text = "";
lastSelectedCustomer = null;
};
2016-06-27 01:45:38 +02:00
if (lastSelectedCustomer != null)
{
pe.Text = lastSelectedCustomer.ToString();
}
var popup = new Popup();
popup.StaysOpen = false;
popup.Placement = PlacementMode.MousePoint;
popup.Width = 370;
popup.Height = 250;
var csv = new CustomerSearchView();
csv.ItemSelected += (s, e) =>
{
popup.IsOpen = false;
pe.Focus();
CompactCustomerDC newCustomer = e.Data;
pe.Text = newCustomer.ToString();
lastSelectedCustomer = newCustomer;
};
popup.Child = csv;
parameterUIElements.Add(item.Name + "_" + item.ParamType + "_1", csv);
pe.PopUpClick += (s, e) => { popup.IsOpen = true; };
sp.Children.Add(pe);
sp.Children.Add(popup);
2017-02-01 13:53:59 +01:00
break;
case QueryParameterType.Team:
var peTeam = new PopUpEdit
{
IsReadOnly = true,
Width = 250,
Margin = new Thickness(3),
2017-08-14 11:59:31 +02:00
DeleteButtonVisibility = Visibility.Visible
};
peTeam.DeleteClick += (s, e) =>
{
peTeam.Text = "";
lastSelectedTeam = null;
2017-02-01 13:53:59 +01:00
};
if (lastSelectedTeam != null)
{
peTeam.Text = lastSelectedTeam.ToString();
}
var popupTeam = new Popup();
popupTeam.StaysOpen = false;
popupTeam.Width = 370;
popupTeam.Height = 250;
popupTeam.Placement = PlacementMode.MousePoint;
var tsv = new TeamSearchView();
tsv.ItemSelected += (s, e) =>
{
popupTeam.IsOpen = false;
peTeam.Focus();
CompactTeamDC newTeam = e.Data;
peTeam.Text = newTeam.ToString();
lastSelectedTeam = newTeam;
};
popupTeam.Child = tsv;
parameterUIElements.Add(item.Name + "_" + item.ParamType + "_1", tsv);
peTeam.PopUpClick += (s, e) => { popupTeam.IsOpen = true; };
sp.Children.Add(peTeam);
sp.Children.Add(popupTeam);
2016-06-27 01:45:38 +02:00
break;
2019-09-17 17:44:57 +02:00
case QueryParameterType.Organisation:
var peOrg = new PopUpEdit
{
IsReadOnly = true,
Width = 250,
Margin = new Thickness(3),
DeleteButtonVisibility = Visibility.Visible
};
peOrg.DeleteClick += (s, e) =>
{
peOrg.Text = "";
lastSelectedOrganisation = null;
};
if (lastSelectedOrganisation != null)
{
peOrg.Text = lastSelectedOrganisation.ToString();
}
var popupOrg = new Popup();
popupOrg.StaysOpen = false;
popupOrg.Width = 370;
popupOrg.Height = 250;
popupOrg.Placement = PlacementMode.MousePoint;
var osv = new OrganisationSearchView();
osv.ItemSelected += (s, e) =>
{
popupOrg.IsOpen = false;
peOrg.Focus();
var newOrg = e.Data;
peOrg.Text = newOrg.Name;
lastSelectedOrganisation = newOrg;
};
popupOrg.Child = osv;
parameterUIElements.Add(item.Name + "_" + item.ParamType + "_1", osv);
peOrg.PopUpClick += (s, e) => { popupOrg.IsOpen = true; };
sp.Children.Add(peOrg);
sp.Children.Add(popupOrg);
break;
2016-06-27 01:45:38 +02:00
case QueryParameterType.Month:
ComboBox monthCombo = CreateMonthCombo();
monthCombo.Margin = new Thickness(3);
sp.Children.Add(monthCombo);
ComboBox monthYearCombo = CreateYearCombo();
monthYearCombo.Margin = new Thickness(3);
sp.Children.Add(monthYearCombo);
parameterUIElements.Add(item.Name + "_" + item.ParamType + "_1", monthCombo);
parameterUIElements.Add(item.Name + "_" + item.ParamType + "_2", monthYearCombo);
break;
case QueryParameterType.Year:
ComboBox yearCombo = CreateYearCombo();
yearCombo.Margin = new Thickness(3);
sp.Children.Add(yearCombo);
parameterUIElements.Add(item.Name + "_" + item.ParamType + "_1", yearCombo);
break;
case QueryParameterType.Date:
2017-02-01 13:53:59 +01:00
DateEdit dtpStart2 = CreateDateEdit();
sp.Children.Add(dtpStart2);
parameterUIElements.Add(item.Name + "_" + item.ParamType + "_1", dtpStart2);
2016-06-27 01:45:38 +02:00
break;
case QueryParameterType.DateRange:
DateEdit dtpStart = CreateDateEdit();
sp.Children.Add(dtpStart);
if (itemNames.Length > 1)
{
lbl = new Label();
lbl.VerticalAlignment = VerticalAlignment.Center;
lbl.Content = itemNames[1];
sp.Children.Add(lbl);
}
DateEdit dtpEnd = CreateDateEdit();
sp.Children.Add(dtpEnd);
parameterUIElements.Add(item.Name + "_" + item.ParamType + "_1", dtpStart);
parameterUIElements.Add(item.Name + "_" + item.ParamType + "_2", dtpEnd);
break;
case QueryParameterType.CurrentEmployee:
case QueryParameterType.CurrentUser:
addPanel = false;
break;
case QueryParameterType.ValueListEntryType:
int t = 0;
if (itemNames.Length > 1 && Int32.TryParse(itemNames[1], out t))
{
ComboBox vleCombo = CreateValueListEntryCombo((ValueListEntryType) t);
vleCombo.Margin = new Thickness(3);
sp.Children.Add(vleCombo);
parameterUIElements.Add(item.Name + "_" + item.ParamType + "_1", vleCombo);
}
2017-05-18 21:47:09 +02:00
break;
case QueryParameterType.ServiceCategory:
ComboBox catCombo = CreateServiceCategoryCombo();
catCombo.Margin = new Thickness(3);
sp.Children.Add(catCombo);
parameterUIElements.Add(item.Name + "_" + item.ParamType + "_1", catCombo);
2018-05-23 12:12:20 +02:00
break;
case QueryParameterType.Custom:
ComboBox customCombo = CreateCustomCombo(item.CustomValues);
customCombo.Margin = new Thickness(3);
sp.Children.Add(customCombo);
parameterUIElements.Add(item.Name + "_" + item.ParamType + "_1", customCombo);
2021-12-09 15:51:43 +01:00
break;
case QueryParameterType.Text:
var textEdit = new TextEdit
{
Margin = new Thickness(3),
Background = Brushes.White,
Foreground = Brushes.Black,
BorderThickness = new Thickness(1),
BorderBrush = Application.Current.FindResource("TextBoxBorderBrush") as Brush,
Width = 250
};
//dtp.TodayContent = "Heute";
sp.Children.Add(textEdit);
parameterUIElements.Add(item.Name + "_" + item.ParamType + "_1", textEdit);
2016-06-27 01:45:38 +02:00
break;
}
if (addPanel)
{
canExecute = false;
paramterPanel.Children.Add(sp);
}
}
return canExecute;
}
2017-07-25 10:52:20 +02:00
2016-06-27 01:45:38 +02:00
private List<QueryParamDC> CreateQueryParamValues(QueryDC query)
{
var parameter = new List<QueryParamDC>();
foreach (QueryParamDC item in query.Parameter)
{
var param = new QueryParamDC();
parameter.Add(param);
param.Name = item.Name;
param.ParamType = item.ParamType;
param.DefaultValue = item.DefaultValue;
2016-06-27 01:45:38 +02:00
switch (item.ParamType)
{
case QueryParameterType.SupportConcept:
2017-02-01 13:53:59 +01:00
if (lastSelectedSupportConcept != null)
{
if (lastSelectedSupportConcept.CostBearerRelOids != null &&
lastSelectedSupportConcept.CostBearerRelOids.Count == 1)
{
param.Value = lastSelectedSupportConcept.CostBearerRelOids[0];
}
else
{
param.Value = lastSelectedSupportConcept.SupportConceptOid;
}
}
2016-06-27 01:45:38 +02:00
break;
case QueryParameterType.Employee:
if (lastSelectedEmployee != null)
{
param.Value = lastSelectedEmployee.EmployeeOid;
}
break;
case QueryParameterType.Customer:
if (lastSelectedCustomer != null)
{
param.Value = lastSelectedCustomer.CustomerOid;
}
2017-02-01 13:53:59 +01:00
break;
case QueryParameterType.Team:
if (lastSelectedTeam != null)
{
param.Value = lastSelectedTeam.TeamOid;
}
2019-09-17 17:44:57 +02:00
break;
case QueryParameterType.Organisation:
if (lastSelectedOrganisation != null)
{
param.Value = lastSelectedOrganisation.OrganisationOid;
}
2016-06-27 01:45:38 +02:00
break;
case QueryParameterType.Month:
if (parameterUIElements.ContainsKey(item.Name + "_" + item.ParamType + "_1") &&
parameterUIElements.ContainsKey(item.Name + "_" + item.ParamType + "_2"))
{
var monthCombo = parameterUIElements[item.Name + "_" + item.ParamType + "_1"] as ComboBox;
var yearCombo = parameterUIElements[item.Name + "_" + item.ParamType + "_2"] as ComboBox;
var dt = new DateTime((int) yearCombo.SelectedItem,
DateTimeFormatInfo.CurrentInfo.MonthNames.IndexOf(
(string) monthCombo.SelectedItem) + 1, 1);
param.Value = dt;
}
break;
case QueryParameterType.Year:
if (parameterUIElements.ContainsKey(item.Name + "_" + item.ParamType + "_1"))
{
var yearCombo = parameterUIElements[item.Name + "_" + item.ParamType + "_1"] as ComboBox;
var dt = new DateTime((int) yearCombo.SelectedItem, 1, 1);
param.Value = dt;
}
break;
case QueryParameterType.Date:
2017-02-01 13:53:59 +01:00
if (parameterUIElements.ContainsKey(item.Name + "_" + item.ParamType + "_1"))
{
var dtp = parameterUIElements[item.Name + "_" + item.ParamType + "_1"] as DateEdit;
if (dtp.EditValue != null)
{
var dt = dtp.DateTime;
param.Value = dt;
}
}
2016-06-27 01:45:38 +02:00
break;
case QueryParameterType.DateRange:
if (parameterUIElements.ContainsKey(item.Name + "_" + item.ParamType + "_1") &&
parameterUIElements.ContainsKey(item.Name + "_" + item.ParamType + "_2"))
{
var dtpStart = parameterUIElements[item.Name + "_" + item.ParamType + "_1"] as DateEdit;
var dtpEnd = parameterUIElements[item.Name + "_" + item.ParamType + "_2"] as DateEdit;
var dts = new DateTimeSpan();
if (dtpStart.EditValue != null)
{
dts.StartDate = dtpStart.DateTime;
}
else
{
dts.StartDate = DateTime.MinValue;
}
if (dtpEnd.EditValue != null)
{
dts.EndDate = dtpEnd.DateTime;
}
else
{
dts.EndDate = DateTime.MaxValue;
}
param.Value = dts;
}
break;
case QueryParameterType.CurrentEmployee:
param.Value = BeWoApp.LoggedOnEmployee.EmployeeOid;
break;
case QueryParameterType.CurrentUser:
param.Value = BeWoApp.LoggedOnUser.UserOid;
break;
case QueryParameterType.ValueListEntryType:
if (parameterUIElements.ContainsKey(item.Name + "_" + item.ParamType + "_1"))
{
var combo = parameterUIElements[item.Name + "_" + item.ParamType + "_1"] as ComboBox;
var vle = combo.SelectedItem as ValueListEntryDC;
if (vle != null)
param.Value = vle.ValueListEntryOid.Value;
}
2017-05-18 21:47:09 +02:00
break;
case QueryParameterType.ServiceCategory:
if (parameterUIElements.ContainsKey(item.Name + "_" + item.ParamType + "_1"))
{
var combo = parameterUIElements[item.Name + "_" + item.ParamType + "_1"] as ComboBox;
var cat = combo.SelectedItem as ServiceCategoryDC;
if (cat != null)
param.Value = cat.ServiceCategoryOid.Value;
}
2016-06-27 01:45:38 +02:00
break;
2018-05-23 12:12:20 +02:00
case QueryParameterType.Custom:
if (parameterUIElements.ContainsKey(item.Name + "_" + item.ParamType + "_1"))
{
var combo = parameterUIElements[item.Name + "_" + item.ParamType + "_1"] as ComboBox;
var customerValue = combo.SelectedItem as String;
if (customerValue != null)
param.Value = customerValue;
}
break;
2021-12-09 15:51:43 +01:00
case QueryParameterType.Text:
if (parameterUIElements.ContainsKey(item.Name + "_" + item.ParamType + "_1"))
{
var tb = parameterUIElements[item.Name + "_" + item.ParamType + "_1"] as TextEdit;
param.Value = tb.Text;
}
break;
2016-06-27 01:45:38 +02:00
}
}
return parameter;
}
private ComboBox CreateYearCombo()
{
var comboboxYear = new ComboBox();
var years = new List<int>();
for (int i = -1; i <= 10; i++)
{
years.Add(DateTime.Now.Year - i);
}
comboboxYear.ItemsSource = years;
var firstOfMonth = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
comboboxYear.SelectedItem = firstOfMonth.Subtract(new TimeSpan(1, 0, 0, 0)).Year;
return comboboxYear;
}
private void ExecuteQuery(QueryDC query)
{
List<QueryParamDC> parameter = CreateQueryParamValues(query);
ExecuteQuery(query, parameter);
}
private void ExecuteQuery(QueryDC query, List<QueryParamDC> parameterList)
{
datagrid_result.Visibility = Visibility.Visible;
textblock_link.Visibility = Visibility.Visible;
textblock_link_pdfexport.Visibility = Visibility.Visible;
datagrid_result.Columns.Clear();
ServiceFacade.DoQueryServiceAsync(
s =>
{
try
{
return s.ExecuteQuery(query.Oid, parameterList);
}
2017-10-20 11:41:39 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
}
return null;
},
2017-08-23 17:11:53 +02:00
rstr => this.Dispatch(delegate
2016-06-27 01:45:38 +02:00
{
var table = Utils.XMLDeserializeFromString<DataTable>(rstr);
2017-08-23 17:11:53 +02:00
datagrid_result.ItemsSource = table;
2016-06-27 01:45:38 +02:00
SetOidColumnsInvisible();
foreach (
GridColumn column in
datagrid_result.Columns.Where(column => column.HeaderCaption.Equals("Mail") ||
column.HeaderCaption.Equals("Mail (dienstl.)") ||
column.HeaderCaption.Equals("Homepage")))
{
column.CellTemplate = BuildLinkTemplate(column.HeaderCaption.ToString());
}
2017-08-23 17:11:53 +02:00
if (table == null || table.Columns.Count <= 0) return;
2016-06-27 01:45:38 +02:00
2017-08-23 17:11:53 +02:00
summaryItem.FieldName = table.Columns[0].ColumnName;
2016-06-27 01:45:38 +02:00
summaryItem.DisplayFormat = "anz: {0}";
}));
}
private void Hyperlink_OnRequestNavigate(object sender, RequestNavigateEventArgs e)
{
BeWoUtils.OpenMailClient(e.Uri.ToString());
}
private void Hyperlink_OnRequestNavigateToHomepage(object sender, RequestNavigateEventArgs e)
{
var originalString = e.Uri.OriginalString;
var u = !originalString.StartsWith("http://") ? new Uri("http://" + e.Uri.OriginalString) : e.Uri;
Process.Start(u.AbsoluteUri);
e.Handled = true;
}
private DataTemplate BuildLinkTemplate(string columnName)
{
var binding = new Binding {Path = new PropertyPath("Data." + columnName)};
var textBlockInHyperLinkFactory = new FrameworkElementFactory(typeof (TextBlock));
textBlockInHyperLinkFactory.SetBinding(TextBlock.TextProperty, binding);
var hyperLinkFactory = new FrameworkElementFactory(typeof (Hyperlink));
hyperLinkFactory.AddHandler(Hyperlink.RequestNavigateEvent,
columnName.Equals("Homepage")
? Hyperlink_OnRequestNavigateToHomepage
: new RequestNavigateEventHandler(Hyperlink_OnRequestNavigate));
hyperLinkFactory.SetBinding(Hyperlink.NavigateUriProperty, binding);
hyperLinkFactory.AppendChild(textBlockInHyperLinkFactory);
var outerTextBlockFactory = new FrameworkElementFactory(typeof (TextBlock));
outerTextBlockFactory.AppendChild(hyperLinkFactory);
var template = new DataTemplate {VisualTree = outerTextBlockFactory};
return template;
}
private void SetOidColumnsInvisible()
{
foreach (var col in datagrid_result.Columns.Where(col => !String.IsNullOrEmpty(col.FieldName) && col.FieldName.ToLower().IndexOf("oid") >= 0))
{
col.Visible = false;
}
}
private bool LoggedOnUserHasRightForQuery(QueryDC item)
{
if (!String.IsNullOrEmpty(item.UserGroupOids))
{
List<UserGroupDC> groups = BeWoApp.LoggedOnUser.UserGroups;
string oids = "," + item.UserGroupOids + ",";
return groups.Any(@group => oids.IndexOf(String.Format(",{0},", @group.UserGroupOid.Value)) >= 0);
}
return true;
}
private void ResetQueryFields()
{
paramterPanel.Children.Clear();
parameterUIElements.Clear();
}
private void UpdatePDFExportUri(QueryDC query)
{
string url = BeWoApp.SiteOfOrigin + "/ReportView.aspx?dcid=" + BeWoApp.Tenant + "queryeoid" + BeWoApp.LoggedOnUser.Employee.EmployeeOid + "&qoid=" + query.Oid + "&type=" + Utils.EnumName(ReportTypes.QueryReport);
url = BeWoWpfUtils.GetHTMLEncodedURL(url);
linkPdfExport.NavigateUri = new Uri(BeWoUtils.RemoveAuthenticationInfoFromUri(url));
linkPdfExport.TargetName = Guid.NewGuid().ToString();
linkPdfExport_direct.NavigateUri = linkPdfExport.NavigateUri;
linkPdfExport_direct.TargetName = linkPdfExport.TargetName;
}
private void btnExecuteQuery_Click(object sender, RoutedEventArgs e)
{
var lQuery = combo_query.SelectedItem as QueryDC;
if (lQuery != null)
{
ExecuteQuery(lQuery);
}
}
private void combo_query_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var lQuery = combo_query.SelectedItem as QueryDC;
ResetQueryFields();
2017-03-24 10:30:18 +01:00
GridImport.Visibility = Visibility.Collapsed;
2016-06-27 01:45:38 +02:00
2017-02-01 13:53:59 +01:00
String exportTitle = "Bericht öffnen";
2016-06-27 01:45:38 +02:00
if (lQuery != null)
{
2017-03-24 10:30:18 +01:00
2017-02-01 13:53:59 +01:00
if (!String.IsNullOrWhiteSpace(lQuery.ExportTitle))
{
exportTitle = lQuery.ExportTitle;
}
2016-06-27 01:45:38 +02:00
if (lQuery.Parameter == null || lQuery.Parameter.Count == 0)
{
if (lQuery.IsDirect)
{
datagrid_result.Visibility = Visibility.Collapsed;
textblock_link.Visibility = Visibility.Collapsed;
textblock_link_pdfexport.Visibility = Visibility.Collapsed;
btnExecuteQuery.Visibility = Visibility.Hidden;
textblock_link_pdfexport_direct.Visibility = Visibility.Visible;
}
2017-03-24 10:30:18 +01:00
else if (lQuery.IsImport)
{
datagrid_result.Visibility = Visibility.Collapsed;
textblock_link.Visibility = Visibility.Collapsed;
textblock_link_pdfexport.Visibility = Visibility.Collapsed;
btnExecuteQuery.Visibility = Visibility.Collapsed;
textblock_link_pdfexport_direct.Visibility = Visibility.Collapsed;
GridImport.Visibility = Visibility.Visible;
}
2016-06-27 01:45:38 +02:00
else
{
2017-03-24 10:30:18 +01:00
2016-06-27 01:45:38 +02:00
btnExecuteQuery.Visibility = Visibility.Collapsed;
textblock_link_pdfexport_direct.Visibility = Visibility.Collapsed;
ExecuteQuery(lQuery, null);
}
}
else
{
if (CreateParameterFieldsAndExecute(lQuery))
{
btnExecuteQuery.Visibility = Visibility.Collapsed;
textblock_link_pdfexport_direct.Visibility = Visibility.Collapsed;
ExecuteQuery(lQuery);
}
else
{
if (lQuery.IsDirect)
{
btnExecuteQuery.Visibility = Visibility.Hidden;
textblock_link_pdfexport_direct.Visibility = Visibility.Visible;
}
2017-03-24 10:30:18 +01:00
else if (lQuery.IsImport)
{
GridImport.Visibility = Visibility.Visible;
}
2016-06-27 01:45:38 +02:00
else
{
btnExecuteQuery.Visibility = Visibility.Visible;
textblock_link_pdfexport_direct.Visibility = Visibility.Hidden;
}
}
}
2017-02-01 13:53:59 +01:00
TxtLinkExport.Text = exportTitle;
2016-06-27 01:45:38 +02:00
UpdatePDFExportUri(lQuery);
}
}
private void linkExcelExport_RequestNavigate(object sender, RequestNavigateEventArgs e)
{
var lView = datagrid_result.View as TableView;
var lHeaderCaptions = new List<string>();
var lContent = new List<List<string>>();
if (lView != null)
{
foreach (GridColumn iCol in lView.VisibleColumns)
{
lHeaderCaptions.Add(iCol.HeaderCaption.ToString());
for (int iRowIndex = 0; iRowIndex < datagrid_result.VisibleRowCount; iRowIndex++)
{
if (lContent.Count <= iRowIndex)
{
lContent.Add(new List<string>());
}
lContent[iRowIndex].Add(datagrid_result.GetCellValue(iRowIndex, iCol).ToStringNullCheck());
}
}
}
var path = BeWoApp.GetAndCreateUserAppDataPath() + "\\BeWoDokument.xls";
var lQuery = combo_query.SelectedItem as QueryDC;
2017-02-01 13:53:59 +01:00
bool isExcel = true;
if (lQuery != null)
2016-06-27 01:45:38 +02:00
{
2017-02-01 13:53:59 +01:00
if (!String.IsNullOrWhiteSpace(lQuery.FileName))
{
path = String.Format("{0}\\{1}", BeWoApp.GetAndCreateUserAppDataPath(), lQuery.FileName);
isExcel = false;
}
else
{
path = String.Format("{0}\\{1}.xls", BeWoApp.GetAndCreateUserAppDataPath(), lQuery.Title);
}
}
2016-06-27 01:45:38 +02:00
var sf = new SaveFileDialog
{
FileName = Path.GetFileName(path),
Filter = "Microsoft Excel 97-2003-Arbeitsblatt|*.xls|Alle Dateien|*.*"
};
if (sf.ShowDialog() != true)
return;
2017-02-01 13:53:59 +01:00
if (isExcel)
{
ServiceFacade.DoDownloadServiceSync(
s =>
BeWoUtils.WriteExcelFile(
s.PrepareExcelFile(DownloadLinkEngine.ExcelFileId, lHeaderCaptions, lContent),
sf.FileName));
}
else
{
ServiceFacade.DoDownloadServiceSync(
s =>
BeWoUtils.WriteFile(
s.PrepareExcelFile(DownloadLinkEngine.ExcelFileId, lHeaderCaptions, lContent),
sf.FileName));
}
2016-06-27 01:45:38 +02:00
//string navitageUri = ((Hyperlink)sender).NavigateUri.ToString();
//BeWoUtils.NavigateToReportUri(navitageUri);
//System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo((sender as System.Windows.Documents.Hyperlink).NavigateUri.ToString()));
//// Workaround Hyperlink mit neuem ersetzen, Navigate Uri lässt auf dem alten nicht ändern...
//this.textblock_link.Inlines.Clear();
//var lNewLink = new Hyperlink(new Run("Excel Export")) { NavigateUri = this.DownloadLinkEngine.GenerateNewExcelLink(), Foreground = Brushes.Black, TargetName = "newWindow" };
//lNewLink.RequestNavigate += this.linkExcelExport_RequestNavigate;
//this.textblock_link.Inlines.Add(lNewLink);
}
private void linkPdfExport_RequestNavigate(object sender, RequestNavigateEventArgs e)
{
var lQuery = combo_query.SelectedItem as QueryDC;
if (lQuery != null)
{
var dt = datagrid_result.ItemsSource as DataTable;
2017-08-23 17:11:53 +02:00
var dtStr = BS.Shared.Core.Utils.XMLSerializeToString(dt);
2016-06-27 01:45:38 +02:00
ServiceFacade.DoQueryServiceSync(
q =>
2017-08-23 17:11:53 +02:00
q.PrepareQueryReport(dtStr, BeWoApp.Tenant + "queryeoid" + BeWoApp.LoggedOnUser.Employee.EmployeeOid));
2016-06-27 01:45:38 +02:00
string navigateUri = linkPdfExport.NavigateUri.ToString();
navigateUri = BeWoUtils.RemoveAuthenticationInfoFromUri(navigateUri);
BeWoUtils.NavigateToReportUri(navigateUri, lQuery.Title);
}
e.Handled = true;
}
private void linkPdfExport_direct_RequestNavigate(object sender, RequestNavigateEventArgs e)
{
2017-02-10 11:08:38 +01:00
var lQuery = combo_query.SelectedItem as QueryDC;
if (lQuery != null)
{
List<QueryParamDC> parameterList = CreateQueryParamValues(lQuery);
if (!String.IsNullOrWhiteSpace(lQuery.ExportTitle))
{
lQuery.Parameter = parameterList;
2021-08-31 10:47:52 +02:00
//var result = ServiceFacade.DoDownloadServiceSync(s => s.CreateQuery(lQuery));
2017-02-10 11:08:38 +01:00
2021-08-31 10:47:52 +02:00
ServiceFacade.DoDownloadServiceAsync(s => s.CreateQuery(lQuery), result =>
this.Dispatch(
delegate
{
var path = String.Format("{0}\\{1}", BeWoApp.GetAndCreateUserAppDataPath(), result.FileName);
var sf = new SaveFileDialog
{
FileName = Path.GetFileName(path),
Filter = "Alle Dateien|*.*"
};
if (sf.ShowDialog() != true)
return;
if (result.Attachments != null)
{
var directoryName = Path.GetDirectoryName(sf.FileName);
foreach (var item in result.Attachments)
{
var pdfFilename = Path.Combine(directoryName, item.FileName);
File.WriteAllBytes(pdfFilename, item.BinaryData);
}
}
2021-08-31 10:47:52 +02:00
BeWoUtils.WriteFile(result.QueryResult, sf.FileName);
2021-08-31 10:47:52 +02:00
}));
2017-02-10 11:08:38 +01:00
}
else
{
2017-08-23 17:11:53 +02:00
String dtStr = ServiceFacade.DoQueryServiceSync(s => s.ExecuteQuery(lQuery.Oid, parameterList));
2017-02-10 11:08:38 +01:00
ServiceFacade.DoQueryServiceSync(
q =>
2017-08-23 17:11:53 +02:00
q.PrepareQueryReport(dtStr, BeWoApp.Tenant + "queryeoid" + BeWoApp.LoggedOnUser.Employee.EmployeeOid));
2017-02-10 11:08:38 +01:00
string navigateUri = linkPdfExport.NavigateUri.ToString();
navigateUri = BeWoUtils.RemoveAuthenticationInfoFromUri(navigateUri);
BeWoUtils.NavigateToReportUri(navigateUri, lQuery.Title);
}
}
2016-06-27 01:45:38 +02:00
}
2017-03-24 10:30:18 +01:00
private void popupedit_file_PopUpClick(object sender, RoutedEventArgs ev)
{
var dlg = new OpenFileDialog();
if (dlg.ShowDialog() == true)
{
try
{
_UploadFileName = dlg.FileName;
popupedit_file.Text = dlg.SafeFileName;
button_uploadDocument.IsEnabled = true;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Exclamation);
}
}
}
private void button_uploadDocument_Click(object sender, RoutedEventArgs pe)
{
if (!String.IsNullOrEmpty(popupedit_file.Text))
{
long? bewoFolderOid = null;
try
{
var upload = new ProgressStream(File.OpenRead(_UploadFileName));
//upload.ProgressChanged += (s, e) => Dispatcher.BeginInvoke(
// DispatcherPriority.Normal,
// (Action)(() =>
// {
// progressbar_upload.Value = e.Data;
// text_progress.Content = string.Format("Bitte warten... {0:00}%", e.Data * 100);
// }));
2017-04-03 13:07:06 +02:00
long oid = 0;
2017-03-24 10:30:18 +01:00
2017-04-03 13:07:06 +02:00
var lQuery = combo_query.SelectedItem as QueryDC;
if (lQuery != null)
{
oid = lQuery.Oid;
}
var lUlPackage = new UploadPackage(null, 0, _UploadFileName, null, oid, (int)TableID.Query, upload);
2017-03-24 10:30:18 +01:00
ServiceFacade.DoStreamingServiceAsync(
s => s.UploadImportFile(lUlPackage),
r => this.Dispatch(
delegate
{
2017-04-03 13:07:06 +02:00
//_UploadFileName = null;
//button_uploadDocument.IsEnabled = false;
//popupedit_file.Text = string.Empty;
2017-03-24 10:30:18 +01:00
upload.Dispose();
if (r != null && !String.IsNullOrEmpty(r.ResultMessage))
{
if (r.Success)
{
MessageBox.Show(r.ResultMessage, "Import", MessageBoxButton.OK,
MessageBoxImage.Information);
}
else
{
MessageBox.Show(r.ResultMessage, "Import", MessageBoxButton.OK,
MessageBoxImage.Exclamation);
}
}
}),
() => this.Dispatch(
delegate
{
upload.Dispose();
}));
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Exclamation);
}
}
}
2016-06-27 01:45:38 +02:00
}
}