1036 lines
45 KiB
C#
1036 lines
45 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Windows;
|
|
using System.Windows.Documents;
|
|
using System.Windows.Input;
|
|
using System.Windows.Media;
|
|
using System.Windows.Navigation;
|
|
using System.Windows.Threading;
|
|
|
|
using BeWo.Controls;
|
|
using BeWo.Core;
|
|
using BeWo.Core.Service;
|
|
using BeWo.ServiceProxy;
|
|
using BeWo.ViewModel;
|
|
|
|
using BS.Shared;
|
|
using BS.Shared.Core;
|
|
using BS.Shared.DataContracts;
|
|
using BS.Shared.DataContracts.ClientPartials;
|
|
using BS.Shared.DataContracts.Compact;
|
|
using BS.Shared.Extensions;
|
|
using BS.Shared.Translation;
|
|
using Microsoft.Win32;
|
|
|
|
namespace BeWo.View.Report.FLSReport
|
|
{
|
|
public partial class FLSReportView : BeWoView
|
|
{
|
|
private FLSOverview _FLSOverview;
|
|
|
|
private bool _GoalsChanged;
|
|
|
|
private DateTime _LastEndDate;
|
|
|
|
internal CompactCustomerDC _LastSelectedCustomer;
|
|
|
|
internal CompactEmployeeDC _LastSelectedEmployee;
|
|
|
|
private DateTime _LastStartDate;
|
|
|
|
internal CompactCustomerDC _SelectedCustomer;
|
|
|
|
internal CompactEmployeeDC _SelectedEmployee;
|
|
|
|
// private bool _FLSReportCreated = false;
|
|
|
|
public FLSReportView()
|
|
{
|
|
InitializeComponent();
|
|
|
|
var startDate = DateTime.Now.AddMonths(-1);
|
|
datePickerStartDate.DateTime = new DateTime(startDate.Year, startDate.Month, 1);
|
|
datePickerEndDate.DateTime = DateTime.Now;
|
|
checkbox_showChart.IsChecked = false;
|
|
checkbox_showServiceRecords.IsChecked = false;
|
|
checkbox_sortBySubGroup.IsChecked = true;
|
|
checkbox_showMarker.IsChecked = false;
|
|
|
|
_SelectedEmployee = BeWoApp.LoggedOnUser.Employee;
|
|
if (_SelectedEmployee != null)
|
|
{
|
|
popupedit_employee.Text = _SelectedEmployee.ToString();
|
|
}
|
|
|
|
if (!BeWoApp.LoggedOnUser.HasRight(UserRightType.Analysis_EmployeeOverviewAll_View))
|
|
{
|
|
popupedit_employee.IsEnabled = false;
|
|
checkbox_all.IsEnabled = false;
|
|
}
|
|
|
|
if (!BeWoApp.LoggedOnUser.HasRight(UserRightType.Analysis_AllowFLSOverviewForCostbearer))
|
|
{
|
|
radioCostbearerReport.IsEnabled = false;
|
|
}
|
|
|
|
var teamEnabled = false;
|
|
if (BeWoApp.LoggedOnUser.HasRight(UserRightType.Analysis_AllowFLSOverviewForAllTeams))
|
|
{
|
|
teamEnabled = true;
|
|
}
|
|
else if (BeWoApp.LoggedOnUser.HasRight(UserRightType.Analysis_AllowFLSOverviewForTeam) && BeWoApp.LoggedOnUser.Employee.IsTeamLeader)
|
|
{
|
|
teamEnabled = true;
|
|
}
|
|
|
|
if (!BeWoApp.AppSettings.ShowMarker)
|
|
{
|
|
checkbox_showMarker.Visibility = Visibility.Collapsed;
|
|
}
|
|
radioTeamReport.IsEnabled = teamEnabled;
|
|
|
|
checkbox_all_client.IsChecked = true;
|
|
InitServiceCategoryTree();
|
|
InitAllGoals();
|
|
DownloadLinkEngine = new DownloadLinkEngine();
|
|
linkExcelExport.NavigateUri = DownloadLinkEngine.GenerateNewExcelLink();
|
|
|
|
ComboBoxTreeViewControl.Imitationheader.Width = 300;
|
|
ComboBoxTreeViewControlV2.Imitationheader.Width = 300;
|
|
}
|
|
|
|
public DownloadLinkEngine DownloadLinkEngine { get; set; }
|
|
|
|
private void ChangeReportType()
|
|
{
|
|
if (reportContent != null)
|
|
{
|
|
reportContent.Children.Clear();
|
|
_FLSOverview = null;
|
|
|
|
var key = "EmployeeContentBrush";
|
|
var enabled = true;
|
|
|
|
if (radioClientReport.IsChecked != null && radioClientReport.IsChecked.Value)
|
|
{
|
|
key = "CustomerContentBrush";
|
|
|
|
checkbox_sortBySubGroup.Content = Translator.Translate("Nach Mitarbeiter sortieren");
|
|
}
|
|
else if (radioCostbearerReport.IsChecked != null && radioCostbearerReport.IsChecked.Value)
|
|
{
|
|
key = "OrganisationContentBrush";
|
|
enabled = false;
|
|
|
|
checkbox_sortBySubGroup.Content = Translator.Translate("Nach Kostenträger sortieren");
|
|
}
|
|
else if (radioTeamReport.IsChecked != null && radioTeamReport.IsChecked.Value)
|
|
{
|
|
key = "TeamContentBrush";
|
|
enabled = false;
|
|
|
|
checkbox_sortBySubGroup.Content = Translator.Translate("Nach Team sortieren");
|
|
}
|
|
else
|
|
{
|
|
checkbox_sortBySubGroup.Content = Translator.Translate("Nach Klienten sortieren");
|
|
}
|
|
|
|
if (!BeWoApp.LoggedOnUser.HasRight(UserRightType.Analysis_EmployeeOverviewAll_View))
|
|
{
|
|
popupedit_employee.IsEnabled = false;
|
|
checkbox_all.IsEnabled = false;
|
|
}
|
|
else
|
|
{
|
|
popupedit_employee.IsEnabled = enabled;
|
|
checkbox_all.IsEnabled = enabled;
|
|
}
|
|
|
|
checkbox_all_client.IsEnabled = enabled;
|
|
popupedit_client.IsEnabled = enabled;
|
|
lblClient.IsEnabled = enabled;
|
|
lblEmployee.IsEnabled = enabled;
|
|
|
|
var brush = Application.Current.FindResource(key) as Brush;
|
|
|
|
if (brush != null)
|
|
{
|
|
reportContent.Background = brush;
|
|
}
|
|
}
|
|
}
|
|
|
|
private void CheckBox_Checked(object sender, RoutedEventArgs e)
|
|
{
|
|
if (popupedit_employee != null)
|
|
{
|
|
popupedit_employee.Text = string.Empty;
|
|
_SelectedEmployee = null;
|
|
}
|
|
}
|
|
|
|
private void CheckBox_Customer_Checked(object sender, RoutedEventArgs e)
|
|
{
|
|
if (popupedit_client != null)
|
|
{
|
|
popupedit_client.Text = string.Empty;
|
|
_SelectedCustomer = null;
|
|
UpdateGoalTree();
|
|
}
|
|
}
|
|
|
|
private FLSAnalysisDataReportDC CreateDataReportDC()
|
|
{
|
|
var reportDC = new FLSAnalysisDataReportDC {Groups = new List<FLSAnalysisDataGroupDC>(), DateHeaders = new List<string>()};
|
|
|
|
if (_FLSOverview != null && _FLSOverview.FLSOverviewRows != null)
|
|
{
|
|
reportDC.ReportStartDate = _FLSOverview.FLSOverviewConfig.StartDate;
|
|
reportDC.ReportEndDate = _FLSOverview.FLSOverviewConfig.EndDate;
|
|
|
|
switch (_FLSOverview.FLSOverviewConfig.ReportType)
|
|
{
|
|
case FLSReportType.Employee:
|
|
reportDC.ReportType = 0;
|
|
break;
|
|
case FLSReportType.Customer:
|
|
reportDC.ReportType = 1;
|
|
break;
|
|
case FLSReportType.Costbearer:
|
|
reportDC.ReportType = 2;
|
|
break;
|
|
case FLSReportType.Team:
|
|
reportDC.ReportType = 3;
|
|
break;
|
|
}
|
|
|
|
reportDC.ShowServiceRecordDetails = _FLSOverview.FLSOverviewConfig.ShowServiceRecords;
|
|
reportDC.ShowGroups = !_FLSOverview.FLSOverviewConfig.ShowOnlyTotalRows;
|
|
|
|
var rows = _FLSOverview.FLSOverviewRows;
|
|
|
|
foreach (var row in rows)
|
|
{
|
|
var groupDC = new FLSAnalysisDataGroupDC {Details = new List<FLSAnalysisDataDetailDC>()};
|
|
|
|
if (_FLSOverview.FLSOverviewConfig.ReportType == FLSReportType.Employee)
|
|
{
|
|
groupDC.Name = row.FLSAnalysisRootDC.Employee.ToString();
|
|
groupDC.Oid = row.FLSAnalysisRootDC.Employee.EmployeeOid;
|
|
}
|
|
else if (_FLSOverview.FLSOverviewConfig.ReportType == FLSReportType.Customer)
|
|
{
|
|
groupDC.Name = row.FLSAnalysisRootDC.Customer.ToString();
|
|
groupDC.Oid = row.FLSAnalysisRootDC.Customer.CustomerOid;
|
|
}
|
|
|
|
reportDC.Groups.Add(groupDC);
|
|
|
|
foreach (var detailRow in row.DetailRows)
|
|
{
|
|
if (!_FLSOverview.FLSOverviewConfig.ShowServiceRecords)
|
|
{
|
|
if (detailRow.DetailRowType == DetailRowTypes.Header && reportDC.DateHeaders.Count == 0)
|
|
{
|
|
foreach (var dateValue in detailRow.DateValues)
|
|
{
|
|
reportDC.DateHeaders.Add(dateValue.DateValueText);
|
|
}
|
|
|
|
reportDC.DateHeaders.Add(detailRow.RowTotalFLS);
|
|
}
|
|
else
|
|
{
|
|
if (detailRow.DetailRowType == DetailRowTypes.Detail)
|
|
{
|
|
var detailDC = new FLSAnalysisDataDetailDC {ServiceRecords = new List<ServiceRecordFLSOverviewDC>(), Values = new List<string>()};
|
|
groupDC.Details.Add(detailDC);
|
|
|
|
detailDC.RowType = detailRow.DetailRowType == DetailRowTypes.Detail ? 0 : 1;
|
|
|
|
detailDC.Name = detailRow.GroupName;
|
|
|
|
foreach (var dateValue in detailRow.DateValues)
|
|
{
|
|
detailDC.Values.Add(dateValue.DateValueText);
|
|
|
|
if (dateValue.ServiceRecordList != null)
|
|
{
|
|
foreach (var sr in dateValue.ServiceRecordList)
|
|
{
|
|
detailDC.ServiceRecords.Add(sr);
|
|
}
|
|
}
|
|
}
|
|
|
|
detailDC.Values.Add(detailRow.RowTotalFLS);
|
|
}
|
|
else if (detailRow.DetailRowType == DetailRowTypes.Total)
|
|
{
|
|
groupDC.TotalFLM = detailRow.TotalFLM;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (detailRow.DetailRowType == DetailRowTypes.Detail)
|
|
{
|
|
var detailDC = new FLSAnalysisDataDetailDC {ServiceRecords = new List<ServiceRecordFLSOverviewDC>(), Values = new List<string>()};
|
|
groupDC.Details.Add(detailDC);
|
|
|
|
foreach (var item in detailRow.DateValues)
|
|
{
|
|
detailDC.Name = detailRow.GroupName;
|
|
|
|
detailDC.Values.Add(item.HeaderLongValue);
|
|
detailDC.Values.Add(item.DateValueText);
|
|
|
|
if (item.ServiceRecordList != null)
|
|
{
|
|
foreach (var sr in item.ServiceRecordList)
|
|
{
|
|
detailDC.ServiceRecords.Add(sr);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else if (detailRow.DetailRowType == DetailRowTypes.Total)
|
|
{
|
|
groupDC.TotalFLM = detailRow.TotalFLM;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return reportDC;
|
|
}
|
|
|
|
private FLSOverviewConfig CreateFLSOverviewConfig()
|
|
{
|
|
var config = new FLSOverviewConfig();
|
|
|
|
if (radioEmployeeReport.IsChecked != null && radioEmployeeReport.IsChecked.Value)
|
|
{
|
|
config.ReportType = FLSReportType.Employee;
|
|
}
|
|
else if (radioCostbearerReport.IsChecked != null && radioCostbearerReport.IsChecked.Value)
|
|
{
|
|
config.ReportType = FLSReportType.Costbearer;
|
|
}
|
|
else if (radioTeamReport.IsChecked != null && radioTeamReport.IsChecked.Value)
|
|
config.ReportType = FLSReportType.Team;
|
|
else
|
|
{
|
|
config.ReportType = FLSReportType.Customer;
|
|
}
|
|
|
|
config.Employee = _SelectedEmployee;
|
|
config.Customer = _SelectedCustomer;
|
|
config.StartDate = datePickerStartDate.DateTime.Date;
|
|
config.EndDate = datePickerEndDate.DateTime.Date.AddDays(1).AddSeconds(-1);
|
|
config.ShowChart = checkbox_showChart.IsChecked.Value;
|
|
config.ShowServiceRecords = checkbox_showServiceRecords.IsChecked.Value;
|
|
config.ShowOnlyTotalRows = !checkbox_sortBySubGroup.IsChecked.Value;
|
|
config.ShowOnlyMarker = checkbox_showMarker.IsChecked.Value;
|
|
config.ShowEinheitInMinuten = radioEinheitInMinuten.IsChecked != null && radioEinheitInMinuten.IsChecked.Value;
|
|
|
|
if (radioButtonIntervalDay.IsChecked.Value)
|
|
{
|
|
config.DateInterval = DateInterval.Day;
|
|
}
|
|
else if (radioButtonIntervalWeek.IsChecked.Value)
|
|
{
|
|
config.DateInterval = DateInterval.Week;
|
|
}
|
|
else if (radioButtonIntervalMonth.IsChecked.Value)
|
|
{
|
|
config.DateInterval = DateInterval.Month;
|
|
}
|
|
else if (radioButtonIntervalQuarter.IsChecked.Value)
|
|
{
|
|
config.DateInterval = DateInterval.Quarter;
|
|
}
|
|
else if (radioButtonIntervalYear.IsChecked.Value)
|
|
{
|
|
config.DateInterval = DateInterval.Year;
|
|
}
|
|
|
|
var sdList = new List<ServiceDescriptionDC>();
|
|
|
|
var sctree = ComboBoxTreeViewControlV2.TreeViewSourceList;
|
|
|
|
foreach (var sc in sctree)
|
|
{
|
|
sdList.AddRange(from sd in sc.Children where sd.IsChecked select sd.ServiceDescription);
|
|
}
|
|
//foreach (var item in this.serviceCategoryList.Items)
|
|
//{
|
|
// CheckBox chkBox = (CheckBox)item;
|
|
// if (chkBox.IsChecked.Value)
|
|
// {
|
|
// scList.Add((ServiceCategoryDC)chkBox.Content);
|
|
// }
|
|
//}
|
|
|
|
config.ServiceDesciptions = sdList;
|
|
//this.treeview_Goals.Visibility == Visibility.Visible ||
|
|
if (ComboBoxTreeViewControl.Visibility == Visibility.Visible)
|
|
{
|
|
config.GoalOids = GetSelectedGoalOids();
|
|
}
|
|
|
|
return config;
|
|
}
|
|
|
|
private List<long> GetSelectedGoalOids()
|
|
{
|
|
List<long> goals = new List<long>();
|
|
|
|
AddCheckedGoals(ComboBoxTreeViewControl.TreeViewSourceList, goals);
|
|
|
|
|
|
return goals;
|
|
}
|
|
|
|
private void AddCheckedGoals(List<SupportConceptGoalDC> goals, List<long> selectedGoals)
|
|
{
|
|
foreach (var item in goals)
|
|
{
|
|
if (item.Children == null || item.Children.Count == 0)
|
|
{
|
|
if (item.IsChecked)
|
|
{
|
|
selectedGoals.Add(item.GoalEntryDC.ValueListEntryOid.Value);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
AddCheckedGoals(item.Children, selectedGoals);
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
|
|
private void CreateReportView(List<FLSAnalysisRootDC> list, FLSOverviewConfig config)
|
|
{
|
|
_FLSOverview = new FLSOverview(list, config);
|
|
reportContent.Children.Clear();
|
|
reportContent.Children.Add(_FLSOverview);
|
|
}
|
|
|
|
private void CustomerSearchView_CustomerSelected(object sender, EventArgs<CompactCustomerDC> e)
|
|
{
|
|
_SelectedCustomer = e.Data;
|
|
popupedit_client.Text = _SelectedCustomer.ToString();
|
|
popup_customer.IsOpen = false;
|
|
|
|
UpdateGoalTree();
|
|
}
|
|
|
|
private void EmployeeSearchView_CustomerSelected(object sender, EventArgs<CompactEmployeeDC> e)
|
|
{
|
|
_SelectedEmployee = e.Data;
|
|
popupedit_employee.Text = _SelectedEmployee.ToString();
|
|
popup_employee.IsOpen = false;
|
|
}
|
|
|
|
private void FillGoalTree(List<ValueListEntryDC> goalCategories, List<ValueListEntryDC> indGoalCategories, List<ValueListEntryDC> goals, bool removeEmptyGoalCategories)
|
|
{
|
|
|
|
var tree = GoalService.GetGoalTree(goalCategories, indGoalCategories, goals, removeEmptyGoalCategories);
|
|
if (tree.Count == 0)
|
|
{
|
|
lblGoals.Visibility = Visibility.Collapsed;
|
|
ComboBoxTreeViewControl.Visibility = Visibility.Collapsed;
|
|
}
|
|
else
|
|
{
|
|
lblGoals.Visibility = Visibility.Visible;
|
|
ComboBoxTreeViewControl.Visibility = Visibility.Visible;
|
|
foreach (var goal in tree.SelectMany(goalCat => goalCat.Children))
|
|
goal.PropertyChanged += childItem_PropertyChanged;
|
|
|
|
ComboBoxTreeViewControl.TreeViewSourceList = tree;
|
|
}
|
|
}
|
|
|
|
private void InitAllGoals()
|
|
{
|
|
Cache.GetInstance().GetAllValueListEntrysByTypeAsync(ValueListEntryType.SupportConceptGoalCategoryType,
|
|
r1 => Cache.GetInstance().GetAllValueListEntrysByTypeAsync(ValueListEntryType.SupportConceptGoalType,
|
|
r2 => Dispatcher.BeginInvoke(DispatcherPriority.Normal, (Action)(() => FillGoalTree(r1, null, r2, false)))));
|
|
}
|
|
|
|
private void InitGoalsForSelectedCustomer()
|
|
{
|
|
Cache.GetInstance().GetAllValueListEntrysByTypeAsync(ValueListEntryType.SupportConceptGoalCategoryType,
|
|
cats =>
|
|
Cache.GetInstance().GetAllValueListEntrysByTypeAsync(ValueListEntryType.SupportConceptIndividualGoalCategoryType,
|
|
icats =>
|
|
ServiceFacade.DoCustomerServiceAsync(
|
|
s => s.GetAllCustomerGoals(_SelectedCustomer.CustomerOid),
|
|
goals => Dispatcher.BeginInvoke(DispatcherPriority.Normal, (Action)(() => FillGoalTree(cats, icats, goals, true))))));
|
|
}
|
|
|
|
//private void InitServiceCategoryList()
|
|
//{
|
|
// List<ServiceCategoryDC> categories = ServiceFacade.DoOperationsServiceSync(s => s.GetAllServiceCategories());
|
|
|
|
// foreach (ServiceCategoryDC dc in categories)
|
|
// {
|
|
// CheckBox chkBox = new CheckBox();
|
|
// chkBox.IsChecked = true;
|
|
// chkBox.Content = dc;
|
|
// this.serviceCategoryList.Items.Add(chkBox);
|
|
// }
|
|
//}
|
|
|
|
private void InitServiceCategoryTree()
|
|
{
|
|
Cache.GetInstance().GetServiceCategoryDescriptionDict(cb =>
|
|
this.Dispatch(
|
|
delegate
|
|
{
|
|
ComboBoxTreeViewControlV2.ParentWindowHeight = ActualHeight;
|
|
ComboBoxTreeViewControl.ParentWindowHeight = ActualHeight;
|
|
InitServiceCategoryTree(cb);
|
|
}));
|
|
|
|
}
|
|
|
|
private void InitServiceCategoryTree(Dictionary<ServiceCategoryDC, List<ServiceDescriptionDC>> dict)
|
|
{
|
|
var categories = dict.Keys;
|
|
var tree = new List<ServiceCategoryTreeItem>();
|
|
|
|
foreach (var dc in categories)
|
|
{
|
|
var catItem = new ServiceCategoryTreeItem {ServiceCategory = dc, IsChecked = false};
|
|
foreach (var item in dict[dc])
|
|
{
|
|
var descItem = new ServiceCategoryTreeItem
|
|
{
|
|
ServiceDescription = item,
|
|
IsChecked = false
|
|
};
|
|
catItem.Children.Add(descItem);
|
|
}
|
|
tree.Add(catItem);
|
|
}
|
|
ComboBoxTreeViewControlV2.TreeViewSourceList = tree;
|
|
}
|
|
|
|
private void RadioButton_Checked(object sender, RoutedEventArgs e)
|
|
{
|
|
ChangeReportType();
|
|
}
|
|
|
|
private void RadioButtonEinheit_Checked(object sender, RoutedEventArgs e)
|
|
{
|
|
//if (radioEinheitInMinuten != null && radioEinheitInStunden != null)
|
|
//{
|
|
// if (radioEinheitInMinuten.IsChecked != null && radioEinheitInMinuten.IsChecked.Value)
|
|
// {
|
|
// SetzeEinheit(false);
|
|
// }
|
|
// else if (radioEinheitInStunden.IsChecked != null && radioEinheitInStunden.IsChecked.Value)
|
|
// {
|
|
// SetzeEinheit(true);
|
|
// }
|
|
//}
|
|
}
|
|
|
|
private void SetzeEinheit(bool stunden)
|
|
{
|
|
if (_FLSOverview != null)
|
|
{
|
|
foreach (var row in _FLSOverview.FLSOverviewRows)
|
|
{
|
|
foreach (var drow in row.DetailRows)
|
|
{
|
|
//drow.
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
private void UpdatePDFExportUri(string id)
|
|
{
|
|
var url = String.Format("{0}/ReportView.aspx?dcid={1}eoid{2}&type={3}", BeWoApp.SiteOfOrigin, BeWoApp.Tenant, BeWoApp.LoggedOnUser.Employee.EmployeeOid, Utils.EnumName(ReportTypes.FLSReport));
|
|
|
|
url = BeWoWpfUtils.GetHTMLEncodedURL(url);
|
|
linkPdfExport.NavigateUri = new Uri(url);
|
|
|
|
linkPdfExport.TargetName = Guid.NewGuid().ToString();
|
|
|
|
// linkPdfExport2.NavigateUri = new Uri(url);
|
|
|
|
// _FLSReportCreated = false;
|
|
}
|
|
|
|
private void button_generate_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
_GoalsChanged = false;
|
|
|
|
var config = CreateFLSOverviewConfig();
|
|
|
|
var configDc = new FLSAnalysisConfigDC();
|
|
|
|
if (_SelectedCustomer != null)
|
|
{
|
|
configDc.CustomerOid = _SelectedCustomer.CustomerOid;
|
|
}
|
|
|
|
if (_SelectedEmployee != null)
|
|
{
|
|
configDc.EmployeeOid = _SelectedEmployee.EmployeeOid;
|
|
}
|
|
|
|
if (checkbox_archivierte_mitarbeiter.IsChecked != null && checkbox_archivierte_mitarbeiter.IsVisible)
|
|
configDc.ShouldAnalyzeArchivedEmployees = checkbox_archivierte_mitarbeiter.IsChecked.Value;
|
|
|
|
configDc.ReportType = config.ReportType;
|
|
configDc.StartDate = config.StartDate;
|
|
configDc.EndDate = config.EndDate;
|
|
configDc.GoalOids = config.GoalOids;
|
|
configDc.ShowOnlyMarker = config.ShowOnlyMarker;
|
|
if (config.ServiceDesciptions != null)
|
|
{
|
|
configDc.ServiceDescriptionOids = config.ServiceDesciptions.Select(sd => sd.ServiceDescriptionOid != null ? sd.ServiceDescriptionOid.Value : 0).ToList();
|
|
}
|
|
if (config.ReportType == FLSReportType.Team)
|
|
{
|
|
List<long> teamoids = null;
|
|
if (!BeWoApp.LoggedOnUser.HasRight(UserRightType.Analysis_AllowFLSOverviewForAllTeams) && BeWoApp.LoggedOnUser.HasRight(UserRightType.Analysis_AllowFLSOverviewForTeam) && BeWoApp.LoggedOnUser.Employee.IsTeamLeader)
|
|
{
|
|
teamoids = BeWoApp.LoggedOnUser.Employee.LeadingTeamOids;
|
|
}
|
|
configDc.TeamOids = teamoids;
|
|
}
|
|
|
|
ServiceFacade.DoAnalysisServiceAsync(s => s.GetFLSAnalysis(configDc), r => this.Dispatch(() => CreateReportView(r, config)));
|
|
|
|
//if (config.ReportType == FLSReportType.Employee)
|
|
//{
|
|
// if (employeeOid != null)
|
|
// {
|
|
// ServiceFacade.DoAnalysisServiceAsync(s => s.GetEmployeeFLSAnalysisForEmployee(employeeOid.Value, config.StartDate, config.EndDate, true, true, customerOid, config.GoalOids), r => { this.Dispatch(delegate { this.CreateReportView(r, config); }); });
|
|
// }
|
|
// else
|
|
// {
|
|
// ServiceFacade.DoAnalysisServiceAsync(s => s.GetEmployeeFLSAnalysis(config.StartDate, config.EndDate, true, true, customerOid, config.GoalOids, null, null, null, null, null),
|
|
// r =>
|
|
// {
|
|
// this.Dispatch(delegate
|
|
// {
|
|
// CreateReportView(r, config);
|
|
// });
|
|
// });
|
|
// }
|
|
//}
|
|
//else if (config.ReportType == FLSReportType.Customer)
|
|
//{
|
|
// if (customerOid != null)
|
|
// {
|
|
// ServiceFacade.DoAnalysisServiceAsync(s => s.GetCustomerFLSAnalysisForCustomer(customerOid.Value, config.StartDate, config.EndDate, true, true, employeeOid, config.GoalOids), r => { this.Dispatch(delegate { this.CreateReportView(r, config); }); });
|
|
// }
|
|
// else
|
|
// {
|
|
// ServiceFacade.DoAnalysisServiceAsync(s => s.GetCustomerFLSAnalysis(config.StartDate, config.EndDate, true, true, employeeOid, config.GoalOids), r => { this.Dispatch(delegate { this.CreateReportView(r, config); }); });
|
|
// }
|
|
//}
|
|
//else if (config.ReportType == FLSReportType.Costbearer)
|
|
//{
|
|
// ServiceFacade.DoAnalysisServiceAsync(s => s.GetCostBearerFLSAnalysis(config.StartDate, config.EndDate, true, config.GoalOids), r => { this.Dispatch(delegate { this.CreateReportView(r, config); }); });
|
|
//}
|
|
//else if (config.ReportType == FLSReportType.Team)
|
|
//{
|
|
// List<long> teamoids = null;
|
|
// if (!BeWoApp.LoggedOnUser.HasRight(UserRightType.Analysis_AllowFLSOverviewForAllTeams) && BeWoApp.LoggedOnUser.HasRight(UserRightType.Analysis_AllowFLSOverviewForTeam) && BeWoApp.LoggedOnUser.Employee.IsTeamLeader)
|
|
// {
|
|
// teamoids = BeWoApp.LoggedOnUser.Employee.LeadingTeamOids;
|
|
// }
|
|
|
|
// ServiceFacade.DoAnalysisServiceAsync(s => s.GetTeamFLSAnalysis(config.StartDate, config.EndDate, true, config.GoalOids, teamoids),
|
|
// r =>
|
|
// {
|
|
// this.Dispatch(delegate
|
|
// {
|
|
// CreateReportView(r, config);
|
|
// });
|
|
// });
|
|
//}
|
|
|
|
_LastSelectedEmployee = _SelectedEmployee;
|
|
_LastSelectedCustomer = _SelectedCustomer;
|
|
_LastStartDate = config.StartDate;
|
|
_LastEndDate = config.EndDate;
|
|
|
|
UpdatePDFExportUri(string.Empty);
|
|
|
|
if (!config.ShowServiceRecords && config.ShowOnlyTotalRows)
|
|
{
|
|
textblock_link_pdfexport.Visibility = Visibility.Hidden;
|
|
}
|
|
else
|
|
{
|
|
textblock_link_pdfexport.Visibility = Visibility.Visible;
|
|
}
|
|
}
|
|
|
|
private void childItem_PropertyChanged(object sender, PropertyChangedEventArgs e)
|
|
{
|
|
SupportConceptGoalDC selectedGoal = sender as SupportConceptGoalDC;
|
|
if (selectedGoal != null)
|
|
{
|
|
this._GoalsChanged = true;
|
|
}
|
|
}
|
|
|
|
private void linkExcelExport_RequestNavigate(object sender, RequestNavigateEventArgs e)
|
|
{
|
|
if (this._FLSOverview != null && this._FLSOverview.FLSOverviewRows != null)
|
|
{
|
|
List<FLSOverviewRow> rows = this._FLSOverview.FLSOverviewRows;
|
|
|
|
List<string> lHeaderCaptions = new List<string>();
|
|
List<List<string>> lContent = new List<List<string>>();
|
|
|
|
if (this._FLSOverview.FLSOverviewConfig.ReportType == FLSReportType.Employee)
|
|
{
|
|
lHeaderCaptions.Add(Translator.Translate("Mitarbeiter/in"));
|
|
if (!this._FLSOverview.FLSOverviewConfig.ShowOnlyTotalRows || !this._FLSOverview.FLSOverviewConfig.ShowServiceRecords)
|
|
{
|
|
lHeaderCaptions.Add(Translator.Translate("Klient/in"));
|
|
}
|
|
}
|
|
else if (this._FLSOverview.FLSOverviewConfig.ReportType == FLSReportType.Customer)
|
|
{
|
|
lHeaderCaptions.Add(Translator.Translate("Klient/in"));
|
|
if (!this._FLSOverview.FLSOverviewConfig.ShowOnlyTotalRows || !this._FLSOverview.FLSOverviewConfig.ShowServiceRecords)
|
|
{
|
|
lHeaderCaptions.Add(Translator.Translate("Mitarbeiter/in"));
|
|
}
|
|
}
|
|
else if (this._FLSOverview.FLSOverviewConfig.ReportType == FLSReportType.Costbearer)
|
|
{
|
|
// lHeaderCaptions.Add("");
|
|
if (!this._FLSOverview.FLSOverviewConfig.ShowOnlyTotalRows || !this._FLSOverview.FLSOverviewConfig.ShowServiceRecords)
|
|
{
|
|
lHeaderCaptions.Add(Translator.Translate("Kostenträger"));
|
|
}
|
|
}
|
|
else if (_FLSOverview.FLSOverviewConfig.ReportType == FLSReportType.Team)
|
|
{
|
|
//lHeaderCaptions.Add("");
|
|
if (!_FLSOverview.FLSOverviewConfig.ShowOnlyTotalRows || !_FLSOverview.FLSOverviewConfig.ShowServiceRecords)
|
|
lHeaderCaptions.Add("Team");
|
|
}
|
|
|
|
if (this._FLSOverview.FLSOverviewConfig.ShowServiceRecords)
|
|
{
|
|
lHeaderCaptions.Add("Zeitraum");
|
|
lHeaderCaptions.Add("Summe Stunden");
|
|
lHeaderCaptions.Add("Datum");
|
|
lHeaderCaptions.Add("Startzeit");
|
|
lHeaderCaptions.Add("Endzeit");
|
|
lHeaderCaptions.Add("Minuten");
|
|
if (this._FLSOverview.FLSOverviewConfig.ShowOnlyTotalRows && this._FLSOverview.FLSOverviewConfig.ShowServiceRecords)
|
|
{
|
|
if (this._FLSOverview.FLSOverviewConfig.ReportType == FLSReportType.Employee)
|
|
{
|
|
lHeaderCaptions.Add(Translator.Translate("Klient/in"));
|
|
}
|
|
else if (this._FLSOverview.FLSOverviewConfig.ReportType == FLSReportType.Customer)
|
|
{
|
|
lHeaderCaptions.Add(Translator.Translate("Mitarbeiter/in"));
|
|
}
|
|
else if (this._FLSOverview.FLSOverviewConfig.ReportType == FLSReportType.Costbearer)
|
|
{
|
|
lHeaderCaptions.Add(Translator.Translate("Kostenträger"));
|
|
}
|
|
else if (_FLSOverview.FLSOverviewConfig.ReportType == FLSReportType.Team)
|
|
lHeaderCaptions.Add("Team");
|
|
}
|
|
|
|
lHeaderCaptions.Add("Leistung");
|
|
lHeaderCaptions.Add("Dokumentation");
|
|
}
|
|
|
|
foreach (FLSOverviewRow row in rows)
|
|
{
|
|
bool addRoot = true;
|
|
|
|
foreach (FLSOverviewDetailRow detailRow in row.DetailRows)
|
|
{
|
|
if (!this._FLSOverview.FLSOverviewConfig.ShowServiceRecords)
|
|
{
|
|
if (detailRow.DetailRowType == DetailRowTypes.Header && lHeaderCaptions.Count <= 2)
|
|
{
|
|
foreach (FLSOverviewDateValue dateValue in detailRow.DateValues)
|
|
{
|
|
lHeaderCaptions.Add(dateValue.DateValueText);
|
|
}
|
|
|
|
lHeaderCaptions.Add(detailRow.RowTotalFLS);
|
|
}
|
|
|
|
if (detailRow.DetailRowType != DetailRowTypes.Header)
|
|
{
|
|
List<string> content = new List<string>();
|
|
if (addRoot)
|
|
{
|
|
if (this._FLSOverview.FLSOverviewConfig.ReportType == FLSReportType.Employee)
|
|
{
|
|
content.Add(row.FLSAnalysisRootDC.Employee.ToString());
|
|
}
|
|
else if (this._FLSOverview.FLSOverviewConfig.ReportType == FLSReportType.Customer)
|
|
{
|
|
content.Add(row.FLSAnalysisRootDC.Customer.ToString());
|
|
}
|
|
}
|
|
else if (_FLSOverview.FLSOverviewConfig.ReportType != FLSReportType.Costbearer && _FLSOverview.FLSOverviewConfig.ReportType != FLSReportType.Team)
|
|
{
|
|
content.Add(string.Empty);
|
|
}
|
|
|
|
addRoot = false;
|
|
|
|
content.Add(detailRow.GroupName);
|
|
|
|
foreach (FLSOverviewDateValue dateValue in detailRow.DateValues)
|
|
{
|
|
content.Add(dateValue.DateValueText);
|
|
}
|
|
|
|
content.Add(detailRow.RowTotalFLS);
|
|
lContent.Add(content);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
// ------------------------------------------------------------------------
|
|
|
|
if (detailRow.DetailRowType == DetailRowTypes.Detail)
|
|
{
|
|
bool addGroupName = true;
|
|
|
|
foreach (var item in detailRow.DateValues)
|
|
{
|
|
List<string> content = new List<string>();
|
|
|
|
if (addRoot)
|
|
{
|
|
if (this._FLSOverview.FLSOverviewConfig.ReportType == FLSReportType.Employee)
|
|
{
|
|
content.Add(row.FLSAnalysisRootDC.Employee.ToString());
|
|
}
|
|
else if (this._FLSOverview.FLSOverviewConfig.ReportType == FLSReportType.Customer)
|
|
{
|
|
content.Add(row.FLSAnalysisRootDC.Customer.ToString());
|
|
}
|
|
else if (_FLSOverview.FLSOverviewConfig.ReportType == FLSReportType.Costbearer || _FLSOverview.FLSOverviewConfig.ReportType == FLSReportType.Team)
|
|
{
|
|
// if (row.FLSAnalysisRootDC.Organisation != null)
|
|
// content.Add(row.FLSAnalysisRootDC.Organisation.ToString());
|
|
// else
|
|
|
|
}
|
|
}
|
|
else if (_FLSOverview.FLSOverviewConfig.ReportType != FLSReportType.Costbearer && _FLSOverview.FLSOverviewConfig.ReportType != FLSReportType.Team)
|
|
{
|
|
content.Add(string.Empty);
|
|
}
|
|
|
|
addRoot = false;
|
|
|
|
if (!this._FLSOverview.FLSOverviewConfig.ShowOnlyTotalRows)
|
|
{
|
|
if (addGroupName)
|
|
{
|
|
content.Add(detailRow.GroupName);
|
|
}
|
|
else
|
|
{
|
|
content.Add(string.Empty);
|
|
}
|
|
}
|
|
|
|
addGroupName = false;
|
|
|
|
content.Add(item.HeaderLongValue);
|
|
content.Add(item.DateValueText);
|
|
|
|
if (item.ServiceRecordList != null && item.ServiceRecordList.Count > 0)
|
|
{
|
|
int count = 0;
|
|
|
|
foreach (var sr in item.ServiceRecordList)
|
|
{
|
|
if (count > 0)
|
|
{
|
|
content = new List<string>();
|
|
content.Add(string.Empty);
|
|
content.Add(string.Empty);
|
|
|
|
if (_FLSOverview.FLSOverviewConfig.ReportType != FLSReportType.Costbearer && _FLSOverview.FLSOverviewConfig.ReportType != FLSReportType.Team)
|
|
{
|
|
content.Add(string.Empty);
|
|
}
|
|
|
|
if (!this._FLSOverview.FLSOverviewConfig.ShowOnlyTotalRows)
|
|
{
|
|
content.Add(string.Empty);
|
|
}
|
|
}
|
|
|
|
content.Add(sr.Start.Value.ToShortDateString());
|
|
if (sr.Start != null && sr.Start.Value.Second == 0)
|
|
{
|
|
var contentVorher = sr.Start.Value.ToShortTimeString();
|
|
|
|
content.Add(String.Format("{0:HH:mm}", sr.Start));
|
|
|
|
content.Add(String.Format("{0:HH:mm}", sr.End));
|
|
|
|
|
|
//lbl.Content = sr.DateTimeRange;
|
|
//if (contentVorher != sr.DateTimeRange)
|
|
//{
|
|
// int test = 0;
|
|
//}
|
|
}
|
|
else
|
|
{
|
|
content.Add(string.Empty);
|
|
content.Add(string.Empty);
|
|
}
|
|
|
|
content.Add(String.Format("{0}", (int)sr.RoundedDuration));
|
|
|
|
if (this._FLSOverview.FLSOverviewConfig.ShowOnlyTotalRows)
|
|
{
|
|
content.Add(sr.GroupName);
|
|
}
|
|
|
|
content.Add(sr.ServiceDescription.Name);
|
|
content.Add(sr.Notice);
|
|
lContent.Add(content);
|
|
count++;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
content.Add(string.Empty);
|
|
content.Add(string.Empty);
|
|
content.Add(string.Empty);
|
|
content.Add(string.Empty);
|
|
content.Add(string.Empty);
|
|
if (this._FLSOverview.FLSOverviewConfig.ShowOnlyTotalRows)
|
|
{
|
|
content.Add(string.Empty);
|
|
}
|
|
|
|
lContent.Add(content);
|
|
}
|
|
}
|
|
}
|
|
|
|
// ------------------------------------------------------------------------
|
|
}
|
|
}
|
|
}
|
|
var path = BeWoApp.GetAndCreateUserAppDataPath() + "\\Stundenübersicht.xls";
|
|
|
|
var sf = new SaveFileDialog { FileName = Path.GetFileName(path), Filter = "Microsoft Excel 97-2003-Arbeitsblatt|*.xls|Alle Dateien|*.*" };
|
|
if (sf.ShowDialog() != true)
|
|
return;
|
|
ServiceFacade.DoDownloadServiceSync(s => BeWoUtils.WriteExcelFile(s.PrepareExcelFile(DownloadLinkEngine.ExcelFileId, lHeaderCaptions, lContent), sf.FileName));
|
|
|
|
//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 = 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)
|
|
{
|
|
// if (!_FLSReportCreated)
|
|
// {
|
|
// e.Handled = true;
|
|
|
|
// _FLSReportCreated = true;
|
|
// linkPdfExport2.DoClick();
|
|
FLSAnalysisDataReportDC dc = this.CreateDataReportDC();
|
|
ServiceFacade.DoOperationsServiceSync(s => s.PrepareFLSReport(dc, BeWoApp.Tenant + "eoid" + BeWoApp.LoggedOnUser.Employee.EmployeeOid));
|
|
|
|
string navigateUri = BeWoUtils.RemoveAuthenticationInfoFromUri(((Hyperlink) sender).NavigateUri.ToString());
|
|
BeWoUtils.NavigateToReportUri(navigateUri, "Druckvorschau");
|
|
|
|
//System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo((sender as System.Windows.Documents.Hyperlink).NavigateUri.ToString()));
|
|
// }
|
|
// else
|
|
// {
|
|
// _FLSReportCreated = false;
|
|
// }
|
|
}
|
|
|
|
private void popupedit_customer_PopUpClick(object sender, RoutedEventArgs e)
|
|
{
|
|
this.popup_customer.IsOpen = true;
|
|
}
|
|
|
|
private void popupedit_employee_PopUpClick(object sender, RoutedEventArgs e)
|
|
{
|
|
this.popup_employee.IsOpen = true;
|
|
}
|
|
|
|
private void UpdateGoalTree()
|
|
{
|
|
if (_SelectedCustomer == null)
|
|
InitAllGoals();
|
|
else
|
|
{
|
|
InitGoalsForSelectedCustomer();
|
|
}
|
|
}
|
|
|
|
private void Popupedit_employee_OnPreviewMouseDoubleClick(object sender, MouseButtonEventArgs e)
|
|
{
|
|
// EmployeeView
|
|
if (_SelectedEmployee == null || !BeWoUtils.CheckPopupEditClickableSpace((PopUpEdit) sender, e) ||
|
|
!BeWoApp.LoggedOnUser.HasRight(UserRightType.EmployeeView_Edit))
|
|
return;
|
|
|
|
VMFactory.CreateEmployeeVMAsync(_SelectedEmployee.EmployeeOid,
|
|
cb => this.Dispatch(() => BeWoUtils.OpenModalViewWindow<EmployeeVM, EmployeeDC, FLSReportView>(
|
|
cb, this, () => this.Dispatch(() => BeWoUtils.UpdateAllViews(_SelectedEmployee)))));
|
|
}
|
|
|
|
private void Popupedit_client_OnPreviewMouseDoubleClick(object sender, MouseButtonEventArgs e)
|
|
{
|
|
// CustomerView
|
|
if (_SelectedCustomer == null || !BeWoUtils.CheckPopupEditClickableSpace((PopUpEdit) sender, e) ||
|
|
!BeWoApp.LoggedOnUser.HasRight(UserRightType.CustomerView_Edit))
|
|
return;
|
|
|
|
VMFactory.CreateCustomerVMAsync(_SelectedCustomer.CustomerOid,
|
|
cb => this.Dispatch(() => BeWoUtils.OpenModalViewWindow<CustomerVM, CustomerDC, FLSReportView>(
|
|
cb, this, () => this.Dispatch(() => BeWoUtils.UpdateAllViews(_SelectedCustomer)))));
|
|
}
|
|
}
|
|
} |