Files
BeWoPlaner/BeWo/View/Master/ReportView.xaml.cs
Lyndon Jetten 645e1e99e5 FaC:
überflüssiges Recht zum Ansehen des Mitarbeiterstundenkontos im Modul Auswertungen entfernt.
2023-06-19 16:31:42 +02:00

609 lines
20 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.MitarbeiterKoelnRing;
using BeWo.View.Report.Rating;
namespace BeWo.View.Master
{
public partial class ReportView
{
public Dictionary<TabItem, BeWoView> OpenViews { get; } = new Dictionary<TabItem, BeWoView>();
public ReportView()
{
InitializeComponent();
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()
{
var isQueriesTabItemCollapsed = false;
var isTabLoaded = false;
// Berichte
if(BeWoApp.LoggedOnUser.HasRight(UserRightType.Auswertungen_BerichteAnsehen))
{
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))
{
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)
{
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))
{
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
}
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)
{
SelectFlsReportTabItem();
}
private void SelectMitarbeiterKoelnRing()
{
tabitem_Mitarbeiter.IsSelected = true;
if(!OpenViews.ContainsKey(tabitem_Mitarbeiter))
{
OpenViews[tabitem_Mitarbeiter] = new FLSReportView();
}
Show(tabitem_Mitarbeiter);
}
private void tabitem_Mitarbeiter_Selected(object sender, RoutedEventArgs e)
{
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)
{
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)
{
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)
{
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)
{
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)
{
SelectQueriesTabItem();
}
private void tabitem_accountingreport_Selected(object sender, RoutedEventArgs e)
{
//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)
{
SelectServiceOverviewTabItem();
}
private void SelectServiceOverview2TabItem()
{
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)
{
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)
{
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)
{
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)
{
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)
{
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)
{
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)
{
SelectKilometerauswertungTabItem();
}
private void ReportView_OnLoaded(object sender, RoutedEventArgs e)
{
InitRights();
}
}
}