Files
BeWoPlaner/BeWo/View/Report/Auslastung/AuslastungReportView2.xaml.cs
2025-11-28 13:15:38 +01:00

354 lines
13 KiB
C#

using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using BS.Shared.Core;
using System.Windows.Media;
using BS.Shared.Extensions;
using System.Collections;
using System.Text;
using BeWo.Controls;
using BeWo.Core;
using System.Windows.Documents;
using BeWo.Core.Service;
using System.Windows.Threading;
using BeWo.View.Master;
using BeWo.View.Report.FLSReport;
using BS.Shared.DataContracts.Compact;
using BS.Shared.DataContracts;
using BeWo.ServiceProxy;
using BS.Shared;
using BeWo.ViewModel;
using DevExpress.Xpf.Core;
using Microsoft.Win32;
namespace BeWo.View.Report.Auslastung
{
public partial class AuslastungReportView2 : BeWoView
{
private CompactEmployeeDC _SelectedEmployee;
private CompactTeamDC _SelectedTeam;
public CompactEmployeeDC Employee { get { return _SelectedEmployee; } set { _SelectedEmployee = value; } }
public AuslastungReportView2()
{
InitializeComponent();
InitDateCombos();
if (!BeWoApp.LoggedOnUser.HasRight(UserRightType.Analysis_AuslastungAllEmployee_View))
{
if (BeWoApp.LoggedOnUser.HasRight(UserRightType.Analysis_AuslastungTeam_View))
{
checkbox_all.IsEnabled = false;
checkbox_all.IsChecked = false;
popupedit_employee.Text = String.Format("{0}, {1}", BeWoApp.LoggedOnEmployee.LastName,
BeWoApp.LoggedOnEmployee.FirstName);
}
}
if (BeWoApp.AppSettings.OpenReportInNewWindow)
{
checkbox_openInNewWindow.IsChecked = true;
}
ChangeReportType();
ThemeManager.SetTheme(BeWoApp.CurrentBeWo.MainWindow, Theme.Office2010Black);
//ThemeManager.SetTheme(docPrevControl, Theme.Office2010Black);
Unloaded += delegate
{
ThemeManager.SetTheme(BeWoApp.CurrentBeWo.MainWindow, null);
//docPrevControl.Visibility = Visibility.Collapsed;
};
}
private void CheckBox_Checked(object sender, RoutedEventArgs e)
{
if (popupedit_employee == null)
return;
popupedit_employee.Text = string.Empty;
_SelectedEmployee = null;
ChangeReportType();
}
private void CheckBoxAllTeams_Checked(object sender, RoutedEventArgs e)
{
if (popupedit_team != null)
{
popupedit_team.Text = string.Empty;
_SelectedTeam = null;
}
ChangeReportType();
}
private void EmployeeSearchView_EmployeeSelected(object sender, EventArgs<CompactEmployeeDC> e)
{
_SelectedEmployee = e.Data;
popupedit_employee.Text = _SelectedEmployee.SimpleDescription;
popup_employee.IsOpen = false;
}
private void TeamSearchView_TeamSelected(object sender, EventArgs<CompactTeamDC> e)
{
_SelectedTeam = e.Data;
popupedit_team.Text = _SelectedTeam.Name;
popup_team.IsOpen = false;
}
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>();
years.Add(DateTime.Now.Year + 1);
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;
}
private void button_generate_Click(object sender, RoutedEventArgs e)
{
long empOid = 0;
long teamOid = 0;
var auswertungNachTeam = radioTeamReport.IsChecked.Value;
var auswertungNachMa = !auswertungNachTeam;
var url = string.Format("{0}/ReportView.aspx?type={1}", BeWoApp.SiteOfOrigin, Utils.EnumName(ReportTypes.AuslastungReport));
if (auswertungNachMa)
{
if (checkbox_all.IsChecked.Value || checkbox_all.Visibility == Visibility.Hidden)
{
_SelectedEmployee = null;
}
if (checkbox_all.Visibility == Visibility.Visible && !checkbox_all.IsChecked.Value && _SelectedEmployee == null && BeWoApp.LoggedOnUser.HasRight(UserRightType.Analysis_AuslastungAllEmployee_View))
{
MessageBox.Show(BS.Shared.Translation.Translator.Translate("Bitte wählen Sie eine/n Mitarbeiter/in aus."), "BeWoPlaner", MessageBoxButton.OK, MessageBoxImage.Information);
return;
}
if (_SelectedEmployee != null)
{
empOid = _SelectedEmployee.EmployeeOid;
}
if (!BeWoApp.LoggedOnUser.HasRight(UserRightType.Analysis_AuslastungAllEmployee_View))
{
empOid = BeWoApp.LoggedOnEmployee.EmployeeOid.Value;
}
if (empOid > 0)
{
url += "&eoid=" + empOid;
}
}
else
{
if (checkbox_all_teams.IsChecked.Value || checkbox_all_teams.Visibility == Visibility.Hidden)
{
_SelectedTeam = null;
}
if (checkbox_all_teams.Visibility == Visibility.Visible && !checkbox_all_teams.IsChecked.Value && _SelectedTeam == null && (BeWoApp.LoggedOnUser.HasRight(UserRightType.Analysis_AuslastungAllEmployee_View) || BeWoApp.LoggedOnUser.HasRight(UserRightType.Analysis_AuslastungTeam_View)))
{
MessageBox.Show("Bitte wählen Sie ein Team aus.", "BeWoPlaner", MessageBoxButton.OK, MessageBoxImage.Information);
return;
}
var sb = new StringBuilder();
sb.Append("&toid=");
if (_SelectedTeam != null)
{
teamOid = _SelectedTeam.TeamOid;
}
if (teamOid > 0 && !checkbox_all_teams.IsChecked.Value)
{
sb.Append(teamOid);
}
else if (checkbox_all_teams.IsChecked.Value)
{
var ol = teamsearchview.ObjectList;
if (ol != null)
{
bool first = true;
foreach (var t in ol)
{
if (!first)
{
sb.Append(",");
}
sb.Append(t.TeamOid);
first = false;
}
}
}
url += sb.ToString();
}
//url += "&sm=" + datePickerStartDate.DateTime.Month + "&sy=" + datePickerStartDate.DateTime.Year + "&sd=" +
// datePickerStartDate.DateTime.Day;
//url += "&em=" + datePickerEndDate.DateTime.Month + "&ey=" + datePickerEndDate.DateTime.Year + "&ed=" +
// datePickerEndDate.DateTime.Day;
url += "&m=" + (combobox_month.SelectedIndex + 1) + "&y=" + combobox_year.SelectedItem;
var tempToken = string.Empty;
ServiceFacade.DoDownloadServiceSync(s => tempToken = s.CreateTemporaryToken(url, true));
url = url + "&token=" + tempToken;
url = BeWoWpfUtils.GetHTMLEncodedURL(url);
if (checkbox_openInNewWindow.IsChecked.Value)
{
BeWoUtils.NavigateToReportUri(url, null);
}
else
{
BeWoUtils.NavigateToReportUriWithDocumentPreviewControl(url, "Mitarbeiterauslastung", docPrevControl, null);
}
}
private void popupedit_employee_PopUpClick(object sender, RoutedEventArgs e)
{
popup_employee.IsOpen = true;
}
private void popupedit_team_PopUpClick(object sender, RoutedEventArgs e)
{
this.popup_team.IsOpen = true;
}
private void RadioButton_Checked(object sender, RoutedEventArgs e)
{
ChangeReportType();
}
private void ChangeReportType()
{
if (radioTeamReport != null && popupedit_team != null)
{
bool isEmployee = true;
if (radioTeamReport.IsChecked != null && radioTeamReport.IsChecked.Value)
{
isEmployee = false;
}
checkbox_all.Visibility = isEmployee ? Visibility.Visible : Visibility.Hidden;
popupedit_employee.Visibility = isEmployee ? Visibility.Visible : Visibility.Hidden;
checkbox_all_teams.Visibility = isEmployee ? Visibility.Hidden : Visibility.Visible;
popupedit_team.Visibility = isEmployee ? Visibility.Hidden : Visibility.Visible;
if (checkbox_all.IsChecked.HasValue && checkbox_all.Visibility == Visibility.Visible)
{
popupedit_employee.Visibility = checkbox_all.IsChecked.Value ? Visibility.Hidden : Visibility.Visible;
}
if (checkbox_all_teams.IsChecked.HasValue && checkbox_all_teams.Visibility == Visibility.Visible)
{
popupedit_team.Visibility = checkbox_all_teams.IsChecked.Value ? Visibility.Hidden : Visibility.Visible;
}
if (!BeWoApp.LoggedOnUser.HasRight(UserRightType.Analysis_AuslastungAllEmployee_View))
{
if (!BeWoApp.LoggedOnUser.HasRight(UserRightType.Analysis_AuslastungTeam_View))
{
checkbox_all.IsEnabled = false;
checkbox_all.IsChecked = false;
checkbox_all.Visibility = Visibility.Collapsed;
popupedit_employee.Visibility = Visibility.Collapsed;
checkbox_all_teams.Visibility = Visibility.Collapsed;
popupedit_team.Visibility = Visibility.Collapsed;
radioTeamReport.Visibility = Visibility.Collapsed;
radioEmployeeReport.Visibility = Visibility.Collapsed;
//checkbox_showTeamReport.Visibility = Visibility.Collapsed;
}
else
{
checkbox_all.IsEnabled = false;
checkbox_all.IsChecked = false;
popupedit_employee.IsEnabled = false;
//checkbox_all.Visibility = Visibility.Collapsed;
//popupedit_employee.Visibility = Visibility.Collapsed;
var ol = teamsearchview.ObjectList;
if (ol != null)
{
List<CompactTeamDC> teams = new List<CompactTeamDC>();
var emp = BeWoApp.LoggedOnUser.Employee;
if (emp.LeadingTeamOids != null && emp.LeadingTeamOids.Count > 0)
{
foreach (var t in ol)
{
if (emp.LeadingTeamOids.Contains(t.TeamOid))
{
teams.Add(t);
}
}
}
teamsearchview.ObjectList = teams;
}
}
}
}
}
private void checkbox_openInNewWindow_Checked(object sender, RoutedEventArgs e)
{
BeWoApp.AppSettings.OpenReportInNewWindow = checkbox_openInNewWindow.IsChecked.Value;
BeWoApp.SaveAppSettings();
}
//private void popupedit_team_PopUpClick(object sender, RoutedEventArgs e)
//{
// popup_team.IsOpen = true;
//}
}
}