Files
BeWoPlaner/BeWo/View/Master/ReportView.xaml.cs
2023-07-14 00:32:16 +02:00

759 lines
26 KiB
C#

using System.Collections.Generic;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using BeWo.ServiceProxy;
using BeWo.View.Detail.Report;
using BeWo.View.Report.AnnualReport;
using BeWo.View.Report.Employee;
using BS.Shared;
using BS.Shared.Extensions;
using BeWo.View.Report.Auslastung;
using BeWo.View.Report.Kilometerauswertung;
using BeWo.View.Report.Rating;
namespace BeWo.View.Master
{
public partial class ReportView
{
public Dictionary<TabItem, BeWoView> OpenViews { get; } = new Dictionary<TabItem, BeWoView>();
private bool ignoreSelectTabEvents = true;
private bool initRights = true;
public ReportView()
{
InitializeComponent();
initRights = true;
//InitRights();
}
public override bool IsDirty => OpenViews.ContainsKey(root.SelectedItem as TabItem) && OpenViews[root.SelectedItem as TabItem].IsDirty;
internal override DependencyObject ValidationOnSaveRootElement => OpenViews[root.SelectedItem as TabItem].ValidationOnSaveRootElement;
internal override bool DoSaveCheck()
{
foreach (var lPair in OpenViews)
{
if (lPair.Value.IsDirty)
{
lPair.Key.IsSelected = true;
if (!lPair.Value.DoSaveCheck())
{
return false;
}
}
}
return true;
}
protected override void Save()
{
OpenViews[root.SelectedItem as TabItem].SaveData();
}
private void InitRights()
{
if (!initRights)
{
return;
}
initRights = false;
var isQueriesTabItemCollapsed = false;
var isTabLoaded = false;
// Berichte
if (BeWoApp.LoggedOnUser.HasRight(UserRightType.Auswertungen_BerichteAnsehen) || BeWoApp.LoggedOnUser.HasRight(UserRightType.QueryView_View))
{
tabitem_queries.Visibility = Visibility.Visible;
SelectQueriesTabItem();
isTabLoaded = true;
}
else
{
tabitem_queries.Visibility = Visibility.Collapsed;
isQueriesTabItemCollapsed = true;
}
// Stundenübersicht
if (BeWoApp.LoggedOnUser.HasRight(UserRightType.Auswertungen_StundenuebersichtAnsehen) || BeWoApp.LoggedOnUser.HasRight(UserRightType.QueryView_View))
{
tabitem_flsReport.Visibility = Visibility.Visible;
if (isQueriesTabItemCollapsed && !isTabLoaded)
{
SelectFlsReportTabItem();
isTabLoaded = true;
}
}
else
{
tabitem_flsReport.Visibility = Visibility.Collapsed;
}
// Kilometerauswertung
if (!BeWoApp.AppSettings.ShowDistanceFields || (!BeWoApp.LoggedOnUser.HasRight(UserRightType.Kilometerauswertung_View) && !BeWoApp.LoggedOnUser.HasRight(UserRightType.KilometerauswertungEigene_View)))
{
TabItemKilometerauswertung.Visibility = Visibility.Collapsed;
}
else
{
if (isQueriesTabItemCollapsed && !isTabLoaded)
{
SelectKilometerauswertungTabItem();
isTabLoaded = true;
}
}
// Mitarbeiterauswertung
if (BeWoApp.Mandator.BeWoClientType != 3) //Nur Köln Ring
{
tabitem_Mitarbeiter.Visibility = Visibility.Collapsed;
}
else if (!BeWoApp.LoggedOnUser.HasRight(UserRightType.Analysis_EmployeeOverviewAll_View))
{
tabitem_Mitarbeiter.Visibility = Visibility.Collapsed;
}
else
{
if (isQueriesTabItemCollapsed && !isTabLoaded)
{
SelectMitarbeiterKoelnRing();
isTabLoaded = true;
}
}
// Mitarbeiterauslastung
if (!BeWoApp.LoggedOnUser.HasRight(UserRightType.Analysis_Auslastung_View))
{
tabitem_maReport.Visibility = Visibility.Collapsed;
}
else
{
if (isQueriesTabItemCollapsed && !isTabLoaded)
{
SelectAuslastungReportView2();
isTabLoaded = true;
}
}
// Mitarbeiterstundenkonto
if (BeWoApp.Tenant == "3010479871" || (!BeWoApp.LoggedOnUser.HasRight(UserRightType.Mitarbeiterstundenkonto_ViewAll) && !BeWoApp.LoggedOnUser.HasRight(UserRightType.Mitarbeiterstundenkonto_ViewSelf) && !BeWoApp.LoggedOnUser.HasRight(UserRightType.Mitarbeiterstundenkonto_ViewTeams)))
{
//Aachener Verein
tabitem_makonto.Visibility = Visibility.Collapsed;
}
else if (BeWoApp.LoggedOnUser.HasRight(UserRightType.Mitarbeiterstundenkonto_ViewAll) || BeWoApp.LoggedOnUser.HasRight(UserRightType.Mitarbeiterstundenkonto_ViewSelf) || BeWoApp.LoggedOnUser.HasRight(UserRightType.Mitarbeiterstundenkonto_ViewTeams))
{
tabitem_makonto.Visibility = Visibility.Visible;
if (isQueriesTabItemCollapsed && !isTabLoaded)
{
SelectMitarbeiterstundenkontoTabItem();
isTabLoaded = true;
}
}
else
{
tabitem_makonto.Visibility = Visibility.Collapsed;
}
// Urlaubsplanung
if (BeWoApp.AppSettings.ShowUrlaubsplanung && BeWoApp.LoggedOnUser.HasRight(UserRightType.AbwesenheitsPlanungAnsehen))
{
tabitem_abwesenheitsTabelle.Visibility = Visibility.Visible;
if (isQueriesTabItemCollapsed && !isTabLoaded)
{
SelectAbwesenheitstabelleTabItem();
isTabLoaded = true;
}
}
else
{
tabitem_abwesenheitsTabelle.Visibility = Visibility.Collapsed;
}
// Dienstplanung
if (BeWoApp.AppSettings.ShowDienstplanung && BeWoApp.LoggedOnUser.HasRight(UserRightType.DienstplanungAnsehen))
{
tabitem_dienstPlaner.Visibility = Visibility.Visible;
if (isQueriesTabItemCollapsed && !isTabLoaded)
{
SelectDienstplanerTabItem();
isTabLoaded = true;
}
}
else
{
tabitem_dienstPlaner.Visibility = Visibility.Collapsed;
}
// Hilfeplanübersicht
if (BeWoApp.LoggedOnUser.HasRight(UserRightType.Auswertungen_HilfeplanuebersichtAnsehen) || BeWoApp.LoggedOnUser.HasRight(UserRightType.QueryView_View))
{
tabitem_supportConceptAnalysis.Visibility = Visibility.Visible;
if (isQueriesTabItemCollapsed && !isTabLoaded)
{
SelectSupportConceptAnalysisTabItem();
isTabLoaded = true;
}
}
else
{
tabitem_supportConceptAnalysis.Visibility = Visibility.Collapsed;
}
// Bewertungen
if (BeWoApp.LoggedOnUser.HasRight(UserRightType.BewertungAuswertung_View))
{
tabitem_RatingAnalysis.Visibility = Visibility.Visible;
if (isQueriesTabItemCollapsed && !isTabLoaded)
{
SelectRatingAnalysisTabItem();
isTabLoaded = true;
}
}
else
{
tabitem_RatingAnalysis.Visibility = Visibility.Collapsed;
}
// Jahresbericht
if (!BeWoApp.LoggedOnUser.HasRight(UserRightType.Jahresbericht))
{
tabitem_annualReport.Visibility = Visibility.Collapsed;
}
else
{
tabitem_annualReport.Visibility = Visibility.Visible;
if (isQueriesTabItemCollapsed && !isTabLoaded)
{
SelectAnnualReportTabItem();
isTabLoaded = true;
}
}
// Quittierungsbelege
if (!BeWoApp.LoggedOnUser.HasRight(UserRightType.Analysis_ServiceOverview_View))
{
tabitem_serviceOverview.Visibility = Visibility.Collapsed;
}
else
{
tabitem_serviceOverview.Visibility = Visibility.Visible;
if (isQueriesTabItemCollapsed && !isTabLoaded)
{
SelectServiceOverviewTabItem();
isTabLoaded = true;
}
}
// Stundenzettel
if (BeWoApp.Mandator.AllowSbd)
{
tabitem_stundenzettelOverview.Visibility = Visibility.Visible;
if (isQueriesTabItemCollapsed && !isTabLoaded)
{
SelectStundenzettelTabItem();
isTabLoaded = true;
}
}
else
{
tabitem_stundenzettelOverview.Visibility = Visibility.Collapsed;
}
// Pivot Tabelle
if (BeWoApp.AppSettings.ShowPivotGrid && BeWoApp.LoggedOnUser.HasRight(UserRightType.PivotTabelleAnsehen))
{
tabitem_flexibleReport.Visibility = Visibility.Visible;
if (isQueriesTabItemCollapsed && !isTabLoaded)
{
SelectFlexibleReportTabItem();
}
}
else
{
tabitem_flexibleReport.Visibility = Visibility.Collapsed;
}
//tabitem_serviceOverview.Visibility = Visibility.Collapsed;
//if (BeWoApp.Mandator.BeWoClientType == 6 || BeWoApp.Mandator.BeWoClientType == 7 || BeWoApp.Mandator.BeWoClientType == 10 || BeWoApp.AppSettings.ShowAnnualReport)
// {
// //Nur Jahresbericht + IBP + Integra
// tabitem_annualReport.Visibility = Visibility.Visible;
// }
// if (!BeWoApp.LoggedOnUser.HasRight(UserRightType.Analysis_Settlement_View))
// tabitem_settlement.Visibility = Visibility.Collapsed;
#if DEBUG
//tabitem_flexibleReport.Visibility = Visibility.Visible;
//tabitem_serviceOverview.Visibility = Visibility.Visible;
//tabitem_abwesenheitsTabelle.Visibility = Visibility.Visible;
//tabitem_dienstPlaner.Visibility = Visibility.Visible;
#endif
ignoreSelectTabEvents = false;
}
private void InitRightsAlt()
{
if (!BeWoApp.LoggedOnUser.HasRight(UserRightType.Analysis_ServiceOverview_View))
{
tabitem_serviceOverview.Visibility = Visibility.Collapsed;
}
if (!BeWoApp.LoggedOnUser.HasRight(UserRightType.Analysis_Auslastung_View))
{
tabitem_maReport.Visibility = Visibility.Collapsed;
}
if (BeWoApp.Mandator.BeWoClientType != 3) //Nur Köln Ring
{
tabitem_Mitarbeiter.Visibility = Visibility.Collapsed;
}
else if (!BeWoApp.LoggedOnUser.HasRight(UserRightType.Analysis_EmployeeOverviewAll_View))
{
tabitem_Mitarbeiter.Visibility = Visibility.Collapsed;
}
tabitem_annualReport.Visibility = Visibility.Visible;
//if (BeWoApp.Mandator.BeWoClientType == 6 || BeWoApp.Mandator.BeWoClientType == 7 || BeWoApp.Mandator.BeWoClientType == 10 || BeWoApp.AppSettings.ShowAnnualReport)
// {
// //Nur Jahresbericht + IBP + Integra
// tabitem_annualReport.Visibility = Visibility.Visible;
// }
if (BeWoApp.Tenant == "3010479871" || (!BeWoApp.LoggedOnUser.HasRight(UserRightType.Mitarbeiterstundenkonto_ViewAll) && !BeWoApp.LoggedOnUser.HasRight(UserRightType.Mitarbeiterstundenkonto_ViewSelf) && !BeWoApp.LoggedOnUser.HasRight(UserRightType.Mitarbeiterstundenkonto_ViewTeams)))
{
//Aachener Verein
tabitem_makonto.Visibility = Visibility.Collapsed;
}
if (!BeWoApp.LoggedOnUser.HasRight(UserRightType.Jahresbericht))
{
tabitem_annualReport.Visibility = Visibility.Collapsed;
}
if (BeWoApp.Mandator.AllowSbd)
{
//tabitem_serviceOverview.Visibility = Visibility.Collapsed;
tabitem_stundenzettelOverview.Visibility = Visibility.Visible;
}
else
{
tabitem_stundenzettelOverview.Visibility = Visibility.Collapsed;
}
if (BeWoApp.AppSettings.ShowPivotGrid && BeWoApp.LoggedOnUser.HasRight(UserRightType.PivotTabelleAnsehen))
{
tabitem_flexibleReport.Visibility = Visibility.Visible;
}
else
{
tabitem_flexibleReport.Visibility = Visibility.Collapsed;
}
if (BeWoApp.AppSettings.ShowDienstplanung && BeWoApp.LoggedOnUser.HasRight(UserRightType.DienstplanungAnsehen))
{
tabitem_dienstPlaner.Visibility = Visibility.Visible;
}
else
{
tabitem_dienstPlaner.Visibility = Visibility.Collapsed;
}
if (BeWoApp.AppSettings.ShowUrlaubsplanung && BeWoApp.LoggedOnUser.HasRight(UserRightType.AbwesenheitsPlanungAnsehen))
{
tabitem_abwesenheitsTabelle.Visibility = Visibility.Visible;
}
else
{
tabitem_abwesenheitsTabelle.Visibility = Visibility.Collapsed;
}
if (BeWoApp.LoggedOnUser.HasRight(UserRightType.BewertungAuswertung_View))
{
tabitem_RatingAnalysis.Visibility = Visibility.Visible;
}
else
{
tabitem_RatingAnalysis.Visibility = Visibility.Collapsed;
}
if (!BeWoApp.LoggedOnUser.HasRight(UserRightType.Analysis_ServiceOverview_View))
{
this.tabitem_serviceOverview.Visibility = Visibility.Collapsed;
}
if (!BeWoApp.AppSettings.ShowDistanceFields || (!BeWoApp.LoggedOnUser.HasRight(UserRightType.Kilometerauswertung_View) && !BeWoApp.LoggedOnUser.HasRight(UserRightType.KilometerauswertungEigene_View)))
{
TabItemKilometerauswertung.Visibility = Visibility.Collapsed;
}
// if (!BeWoApp.LoggedOnUser.HasRight(UserRightType.Analysis_Settlement_View))
// tabitem_settlement.Visibility = Visibility.Collapsed;
#if DEBUG
//tabitem_flexibleReport.Visibility = Visibility.Visible;
//tabitem_serviceOverview.Visibility = Visibility.Visible;
//tabitem_abwesenheitsTabelle.Visibility = Visibility.Visible;
//tabitem_dienstPlaner.Visibility = Visibility.Visible;
#endif
}
private void Show(TabItem pTi)
{
foreach (var i in this.OpenViews)
{
i.Key.Content = null;
}
foreach (var i in this.OpenViews)
{
if (i.Key == pTi)
{
pTi.Content = this.OpenViews[pTi];
}
//else
//{
// i.Key.Content = null;
//}
}
}
private void SelectFlsReportTabItem()
{
tabitem_flsReport.IsSelected = true;
if(!OpenViews.ContainsKey(tabitem_flsReport))
{
OpenViews[tabitem_flsReport] = new Report.FLSReport.FLSReportView();
}
Show(tabitem_flsReport);
}
private void tabitem_flsReport_Selected(object sender, RoutedEventArgs e)
{
if (ignoreSelectTabEvents)
return;
SelectFlsReportTabItem();
}
private void SelectMitarbeiterKoelnRing()
{
tabitem_Mitarbeiter.IsSelected = true;
if(!OpenViews.ContainsKey(tabitem_Mitarbeiter))
{
OpenViews[tabitem_Mitarbeiter] = new Report.MitarbeiterKoelnRing.FLSReportView();
}
Show(tabitem_Mitarbeiter);
}
private void tabitem_Mitarbeiter_Selected(object sender, RoutedEventArgs e)
{
if (ignoreSelectTabEvents)
return;
SelectMitarbeiterKoelnRing();
}
private void SelectAuslastungReportView2()
{
tabitem_maReport.IsSelected = true;
if(!OpenViews.ContainsKey(tabitem_maReport))
{
OpenViews[tabitem_maReport] = new AuslastungReportView2();
}
Show(tabitem_maReport);
}
private void tabitem_maReport_Selected(object sender, RoutedEventArgs e)
{
if (ignoreSelectTabEvents)
return;
SelectAuslastungReportView2();
}
private void SelectMitarbeiterstundenkontoTabItem()
{
tabitem_makonto.IsSelected = true;
if(!OpenViews.ContainsKey(tabitem_makonto))
{
OpenViews[tabitem_makonto] = new EmployeeHourReportView();
}
Show(tabitem_makonto);
}
private void tabitem_maKonto_Selected(object sender, RoutedEventArgs e)
{
if (ignoreSelectTabEvents)
return;
SelectMitarbeiterstundenkontoTabItem();
}
private void SelectAbwesenheitstabelleTabItem()
{
tabitem_abwesenheitsTabelle.IsSelected = true;
if(!OpenViews.ContainsKey(tabitem_abwesenheitsTabelle))
{
OpenViews[tabitem_abwesenheitsTabelle] = new AbwesenheitstabelleView();
}
Show(tabitem_abwesenheitsTabelle);
}
private void tabitem_abwesenheitsTabelle_Selected(object sender, RoutedEventArgs e)
{
if (ignoreSelectTabEvents)
return;
SelectAbwesenheitstabelleTabItem();
}
private void SelectDienstplanerTabItem()
{
tabitem_dienstPlaner.IsSelected = true;
if(!OpenViews.ContainsKey(tabitem_dienstPlaner))
{
OpenViews[tabitem_dienstPlaner] = new DienstplanerView();
}
Show(tabitem_dienstPlaner);
}
private void tabitem_dienstPlaner_Selected(object sender, RoutedEventArgs e)
{
if (ignoreSelectTabEvents)
return;
SelectDienstplanerTabItem();
}
private void SelectQueriesTabItem()
{
tabitem_queries.IsSelected = true;
if(!OpenViews.ContainsKey(tabitem_queries))
{
ServiceFacade.DoQueryServiceAsync(
s => s.GetAllQueriesOfType(QueryType.Public),
r => this.Dispatch(
delegate
{
OpenViews[tabitem_queries] = new QueryView(r);
Show(tabitem_queries);
}));
}
else
{
Show(tabitem_queries);
}
}
private void tabitem_queries_Selected(object sender, RoutedEventArgs e)
{
if (ignoreSelectTabEvents)
return;
SelectQueriesTabItem();
}
private void tabitem_accountingreport_Selected(object sender, RoutedEventArgs e)
{
if (ignoreSelectTabEvents)
return;
//if (!_OpenViews.ContainsKey(tabitem_accountingreport))
// _OpenViews[tabitem_accountingreport] = new AccountingReportView();
//Show(tabitem_accountingreport);
}
private void SelectServiceOverviewTabItem()
{
tabitem_serviceOverview.IsSelected = true;
if(!OpenViews.ContainsKey(tabitem_serviceOverview))
{
OpenViews[tabitem_serviceOverview] = new ServicesReportViewAlt();
}
Show(tabitem_serviceOverview);
}
private void tabitem_serviceOverview_Selected(object sender, RoutedEventArgs e)
{
if (ignoreSelectTabEvents)
return;
SelectServiceOverviewTabItem();
}
private void SelectServiceOverview2TabItem()
{
if (ignoreSelectTabEvents)
return;
tabitem_serviceOverview2.IsSelected = true;
if(!OpenViews.ContainsKey(tabitem_serviceOverview2))
{
OpenViews[tabitem_serviceOverview2] = new ServicesReportView();
}
Show(tabitem_serviceOverview2);
}
private void tabitem_serviceOverview2_Selected(object sender, RoutedEventArgs e)
{
if (ignoreSelectTabEvents)
return;
SelectServiceOverview2TabItem();
}
private void SelectStundenzettelTabItem()
{
tabitem_stundenzettelOverview.IsSelected = true;
if(!OpenViews.ContainsKey(tabitem_stundenzettelOverview))
{
OpenViews[tabitem_stundenzettelOverview] = new TimeSheetMailView();
}
Show(tabitem_stundenzettelOverview);
}
private void tabitem_stundenzettelOverview_Selected(object sender, RoutedEventArgs e)
{
if (ignoreSelectTabEvents)
return;
SelectStundenzettelTabItem();
}
private void SelectFlexibleReportTabItem()
{
tabitem_flexibleReport.IsSelected = true;
if(!OpenViews.ContainsKey(tabitem_flexibleReport))
{
OpenViews[tabitem_flexibleReport] = new FlexibleReportView();
}
Show(tabitem_flexibleReport);
}
private void tabitem_flexibleReport_Selected(object sender, RoutedEventArgs e)
{
if (ignoreSelectTabEvents)
return;
SelectFlexibleReportTabItem();
}
private void SelectSupportConceptAnalysisTabItem()
{
tabitem_supportConceptAnalysis.IsSelected = true;
if(!OpenViews.ContainsKey(tabitem_supportConceptAnalysis))
{
ServiceFacade.DoAnalysisServiceAsync(
s => s.GetSupportConceptAnalysis(BeWoApp.LoggedOnUser.Employee.EmployeeOid, true, false, null),
r => this.Dispatch(
delegate
{
OpenViews[tabitem_supportConceptAnalysis] = new SupportConceptsAnalysisView(r.OrderBy(o => o.CustomerLastName + ", " + o.CustomerFirstName).GroupBy(so => so.CustomerLastName + ", " + so.CustomerFirstName).ToDictionary(g => g.Key, g => g.ToList()));
// _OpenViews[tabitem_supportConceptAnalysis] = new SupportConceptsAnalysisView(r
// .GroupBy(so => so.CustomerLastName + ", " + so.CustomerFirstName)
// .ToDictionary(g => g.Key, g => g.ToList()));
Show(tabitem_supportConceptAnalysis);
}));
}
else
{
Show(tabitem_supportConceptAnalysis);
}
}
private void tabitem_supportConceptAnalysis_Selected(object sender, RoutedEventArgs e)
{
if (ignoreSelectTabEvents)
return;
SelectSupportConceptAnalysisTabItem();
}
private void SelectRatingAnalysisTabItem()
{
tabitem_RatingAnalysis.IsSelected = true;
if(!OpenViews.ContainsKey(tabitem_RatingAnalysis))
{
OpenViews[tabitem_RatingAnalysis] = new RatingReportView();
}
Show(tabitem_RatingAnalysis);
}
private void tabitem_RatingAnalysis_Selected(object sender, RoutedEventArgs e)
{
if (ignoreSelectTabEvents)
return;
SelectRatingAnalysisTabItem();
}
private void SelectAnnualReportTabItem()
{
tabitem_annualReport.IsSelected = true;
if(!OpenViews.ContainsKey(tabitem_annualReport))
{
OpenViews[tabitem_annualReport] = new AnnualReportView();
}
Show(tabitem_annualReport);
}
private void tabitem_annualReport_Selected(object sender, RoutedEventArgs e)
{
if (ignoreSelectTabEvents)
return;
SelectAnnualReportTabItem();
}
private void SelectKilometerauswertungTabItem()
{
TabItemKilometerauswertung.IsSelected = true;
if(!OpenViews.ContainsKey(TabItemKilometerauswertung))
{
OpenViews[TabItemKilometerauswertung] = new KilometerauslastungsView();
}
Show(TabItemKilometerauswertung);
}
private void TabItemKilometerauswertung_OnSelected(object sender, RoutedEventArgs e)
{
if (ignoreSelectTabEvents)
return;
SelectKilometerauswertungTabItem();
}
private void ReportView_OnLoaded(object sender, RoutedEventArgs e)
{
InitRights();
}
}
}