Files
BeWoPlaner/BeWo/View/Detail/Report/ServicesReportView.xaml.cs
2017-02-01 13:53:59 +01:00

287 lines
12 KiB
C#

using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using BeWo.Controls;
using BeWo.Core;
using BeWo.ServiceProxy;
using BeWo.ViewModel;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
using BS.Shared.Extensions;
using DevExpress.Xpf.Core;
using DevExpress.Xpf.Printing;
using DevExpress.XtraReports.UI;
namespace BeWo.View.Detail.Report
{
/// <summary>
/// Interaction logic for ServicesReportView.xaml
/// </summary>
public partial class ServicesReportView : BeWoView
{
private CompactCustomerDC _Customer;
private CompactEmployeeDC _Employee;
private CompactOrganisationDC _Organisation;
public CompactCustomerDC Customer { get { return _Customer; } set { _Customer = value; } }
public CompactEmployeeDC Employee { get { return _Employee; } set { _Employee = value; } }
public CompactOrganisationDC Organisation { get { return _Organisation; } set { _Organisation = value; } }
public ServicesReportView()
{
InitializeComponent();
InitDateCombos();
InitServiceCategoryCombo();
//if (!BeWoApp.LoggedOnUser.HasRight(UserRightType.ViewAll) && !BeWoApp.LoggedOnUser.HasRight(UserRightType.CustomerView_View))
//{
// checkbox_all.IsEnabled = false;
// checkbox_all.IsChecked = false;
//}
combobox_month.SelectionChanged += combobox_month_SelectionChanged;
combobox_year.SelectionChanged += combobox_year_SelectionChanged;
ThemeManager.SetTheme(BeWoApp.CurrentBeWo.MainWindow, Theme.Office2010Black);
//ThemeManager.SetTheme(docPrevControl, Theme.Office2010Black);
Unloaded += delegate { ThemeManager.SetTheme(BeWoApp.CurrentBeWo.MainWindow, null); docPrevControl.Visibility = Visibility.Collapsed; };
}
void combobox_month_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
InitDayCombos();
}
void combobox_year_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
InitDayCombos();
}
private void CheckBox_Checked(object sender, RoutedEventArgs e)
{
if (popupedit_customer == null)
return;
popupedit_customer.Text = string.Empty;
_Customer = null;
}
private void CustomerSearchView_CustomerSelected(object sender, EventArgs<CompactCustomerDC> e)
{
_Customer = e.Data;
popupedit_customer.Text = _Customer.ToString();
popup_customer.IsOpen = false;
}
private void EmployeeSearchView_EmployeeSelected(object sender, EventArgs<CompactEmployeeDC> e)
{
_Employee = e.Data;
popupedit_employee.Text = _Employee.SimpleDescription;
popup_employee.IsOpen = false;
}
private void InitServiceCategoryCombo()
{
ServiceFacade.DoOperationsServiceSync(s => ServiceCategoriesComboBox.ItemsSource = s.GetAllServiceCategories());
ServiceCategoriesComboBox.SelectedIndex = -1;
}
private void InitDateCombos()
{
this.combobox_month.ItemsSource = DateTimeFormatInfo.CurrentInfo.MonthNames.Where(s => !string.IsNullOrEmpty(s));
int monthIdx = DateTime.Now.Month - 1;
//if (DateTime.Now.Day < 15)
//{
monthIdx--;
if (monthIdx < 0)
monthIdx = 11;
//}
this.combobox_month.SelectedIndex = monthIdx;
var years = new List<int>();
for (int i = 0; i <= 10; i++)
{
years.Add(DateTime.Now.Year - i);
}
this.combobox_year.ItemsSource = years;
if (monthIdx == 11)
{
this.combobox_year.SelectedItem = DateTime.Now.Year - 1;
}
else
this.combobox_year.SelectedItem = DateTime.Now.Year;
InitDayCombos();
}
private void InitDayCombos()
{
int year = DateTime.Now.Year;
var yearObj = this.combobox_year.SelectedItem;
if (yearObj != null)
year = Int32.Parse(yearObj.ToString());
int month = this.combobox_month.SelectedIndex + 1;
int lastStartIndex = combobox_Startday.SelectedIndex;
//if (combobox_Startday.HasItems)
// combobox_Startday.Items.Clear();
int lastEndIndex = combobox_Endday.SelectedIndex;
//if (combobox_Endday.HasItems)
// combobox_Endday.Items.Clear();
int days = DateTime.DaysInMonth(year, month);
List<int> dayList = new List<int>();
for (int i = 1 ; i <= days; i++)
{
dayList.Add(i);
}
this.combobox_Startday.ItemsSource = dayList;
if (lastStartIndex >= dayList.Count)
lastStartIndex = dayList.Count - 1;
if (lastStartIndex < 0)
lastStartIndex = 0;
this.combobox_Startday.SelectedIndex = lastStartIndex;
this.combobox_Endday.ItemsSource = dayList;
if (lastEndIndex >= 27)
lastEndIndex = dayList.Count - 1;
if (lastEndIndex < 0)
lastEndIndex = dayList.Count - 1;
this.combobox_Endday.SelectedIndex = lastEndIndex;
}
private void OrganisationSearchView_OrganisationSelected(object sender, EventArgs<CompactOrganisationDC> e)
{
_Organisation = e.Data;
popupedit_costbearer.Text = _Organisation.Name;
popup_costbearer.IsOpen = false;
}
private void button_generate_Click(object sender, RoutedEventArgs e)
{
long orgaOid = 0;
long empOid = 0;
if (checkbox_all.IsChecked.Value)
_Customer = null;
if (!chkForAllCostbearer.IsChecked.Value)
_Organisation = null;
if (!chkForAllEmployees.IsChecked.Value)
_Employee = null;
if (!checkbox_all.IsChecked.Value && _Customer == null)
MessageBox.Show("Bitte wählen Sie einen Klienten aus.", "BeWoPlaner", MessageBoxButton.OK, MessageBoxImage.Information);
else if (chkForAllCostbearer.IsChecked.Value && _Organisation == null)
MessageBox.Show("Bitte wählen Sie einen Kostenträger aus.", "BeWoPlaner", MessageBoxButton.OK, MessageBoxImage.Information);
else if (chkForAllEmployees.IsChecked.Value && _Employee == null)
MessageBox.Show("Bitte wählen Sie eine/n Mitarbeiter/in aus.", "BeWoPlaner", MessageBoxButton.OK, MessageBoxImage.Information);
else if (ChkForAllServiceCategories.IsChecked.HasValue && ChkForAllServiceCategories.IsChecked.Value && ServiceCategoriesComboBox.SelectedItem == null)
MessageBox.Show("Bitte wählen Sie eine Leistungskategorie aus.", "BeWoPlaner", MessageBoxButton.OK, MessageBoxImage.Information);
else
{
if (_Organisation != null)
orgaOid = _Organisation.OrganisationOid;
if (_Employee != null)
empOid = _Employee.EmployeeOid;
string url = BeWoApp.SiteOfOrigin + "/ReportView.aspx?";
if (_Customer != null)
url += "cOid=" + Customer.CustomerOid + "&type=" + Utils.EnumName(ReportTypes.ServiceOverviewSingleCustomer);
else
url += "type=" + Utils.EnumName(ReportTypes.ServiceOverviewAllCustomers);
url += "&orgaOid=" + orgaOid + "&empOid=" + empOid + "&month=" + (combobox_month.SelectedIndex + 1) +
"&year=" + combobox_year.SelectedItem + "&start=" + combobox_Startday.SelectedItem + "&end=" +
combobox_Endday.SelectedItem;
if (ChkForAllServiceCategories.IsChecked.HasValue && ChkForAllServiceCategories.IsChecked.Value)
{
url += "&scOid=" + ((ServiceCategoryDC)ServiceCategoriesComboBox.SelectedItem).ServiceCategoryOid;
}
//var tempToken = string.Empty;
//ServiceFacade.DoDownloadServiceSync(s => tempToken = s.CreateTemporaryToken(url, true));
//string addChar = (url.Contains("?")) ? "&" : "?";
//url = url + addChar + "token=" + tempToken;
url = BeWoWpfUtils.GetHTMLEncodedURL(url);
BeWoUtils.NavigateToReportUri(url, "Quittierungsbeleg", docPrevControl);
}
}
private void listbox_month_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
this.combobox_month.IsEnabled = false;
}
private void listbox_year_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
this.combobox_year.IsEnabled = false;
}
private void popupedit_costbearer_PopUpClick(object sender, RoutedEventArgs e)
{
popup_costbearer.IsOpen = true;
}
private void popupedit_customer_PopUpClick(object sender, RoutedEventArgs e)
{
popup_customer.IsOpen = true;
}
private void popupedit_employee_PopUpClick(object sender, RoutedEventArgs e)
{
popup_employee.IsOpen = true;
}
private void Popupedit_customer_OnPreviewMouseDoubleClick(object sender, MouseButtonEventArgs e)
{
if (!BeWoUtils.CheckPopupEditClickableSpace((PopUpEdit)sender, e) || _Customer == null || !BeWoApp.LoggedOnUser.HasRight(UserRightType.CustomerView_View))
return;
VMFactory.CreateCustomerVMAsync(_Customer.CustomerOid, cb => this.Dispatch(() => BeWoUtils.OpenModalViewWindow<CustomerVM, CustomerDC, ServicesReportView>(cb, this, () => this.Dispatch(
() => BeWoUtils.UpdateAllViews(_Customer)))));
}
private void Popupedit_costbearer_OnPreviewMouseDoubleClick(object sender, MouseButtonEventArgs e)
{
if (!BeWoUtils.CheckPopupEditClickableSpace((PopUpEdit)sender, e) || _Organisation == null || !BeWoApp.LoggedOnUser.HasRight(UserRightType.OrganisationView_View))
return;
VMFactory.CreateOrganisationVMAsync(_Organisation.OrganisationOid, cb => this.Dispatch(() => BeWoUtils.OpenModalViewWindow<OrganisationVM, OrganisationDC, ServicesReportView>(cb, this, () => this.Dispatch(
() => BeWoUtils.UpdateAllViews(_Organisation)))));
}
private void Popupedit_employee_OnPreviewMouseDoubleClick(object sender, MouseButtonEventArgs e)
{
if (!BeWoUtils.CheckPopupEditClickableSpace((PopUpEdit)sender, e) || _Employee == null || !BeWoApp.LoggedOnUser.HasRight(UserRightType.EmployeeView_View))
return;
VMFactory.CreateEmployeeVMAsync(_Employee.EmployeeOid, cb => this.Dispatch(() => BeWoUtils.OpenModalViewWindow<EmployeeVM, EmployeeDC, ServicesReportView>(cb, this, () => this.Dispatch(
() => BeWoUtils.UpdateAllViews(_Employee)))));
}
}
}