2347 lines
109 KiB
C#
2347 lines
109 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Collections.ObjectModel;
|
|
using System.ComponentModel;
|
|
using System.Diagnostics;
|
|
using System.Drawing;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Net;
|
|
using System.Text;
|
|
using System.Text.RegularExpressions;
|
|
using System.Windows;
|
|
using System.Windows.Controls;
|
|
using System.Windows.Forms;
|
|
using System.Windows.Input;
|
|
using System.Windows.Media.Imaging;
|
|
|
|
using BS.Shared;
|
|
using BS.Shared.Core;
|
|
using BS.Shared.DataContracts;
|
|
using BS.Shared.DataContracts.Compact;
|
|
using BS.Shared.Extensions;
|
|
|
|
using BeWo.Controls;
|
|
using BeWo.ServiceProxy;
|
|
using BeWo.View;
|
|
using BeWo.View.Controls;
|
|
using BeWo.View.Detail;
|
|
using BeWo.View.Detail.Accounting;
|
|
using BeWo.View.Detail.Report;
|
|
using BeWo.View.Master;
|
|
using BeWo.View.Navigation;
|
|
using BeWo.View.Report.Auslastung;
|
|
using BeWo.View.Report.FLSReport;
|
|
using BeWo.View.Search;
|
|
using BeWo.ViewModel;
|
|
|
|
using DevExpress.Xpf.Core;
|
|
using DevExpress.Xpf.Core.Native;
|
|
using DevExpress.Xpf.Grid;
|
|
using DevExpress.XtraReports.UI;
|
|
using DevExpress.Xpf.Printing;
|
|
using Brushes = System.Windows.Media.Brushes;
|
|
using Image = System.Windows.Controls.Image;
|
|
using MessageBox = System.Windows.MessageBox;
|
|
using Panel = System.Windows.Controls.Panel;
|
|
using System.Windows.Media;
|
|
using System.Windows.Threading;
|
|
using BeWo.Core.Service;
|
|
using BeWo.ownChat;
|
|
using BeWo.PasswortSecurity;
|
|
using BeWo.Scheduler.Utils;
|
|
using BeWo.ViewModel.ListViewModel;
|
|
using DevExpress.Xpf.Bars;
|
|
using DevExpress.Xpf.DocumentViewer;
|
|
using DevExpress.Xpf.Printing.PreviewControl.Bars;
|
|
using DevExpress.XtraScheduler;
|
|
using RestSharp;
|
|
using Control = System.Windows.Controls.Control;
|
|
using Utils = BS.Shared.Core.Utils;
|
|
using Brush = System.Windows.Media.Brush;
|
|
using BeWo.View.Detail.Zeiterfassung;
|
|
|
|
namespace BeWo.Core
|
|
{
|
|
public static class BeWoUtils
|
|
{
|
|
public static ModalViewWindow CurrentModalViewWindow { get; set; }
|
|
|
|
private static readonly List<ModalViewWindow> _ModalViewWindowsToUpdate = new List<ModalViewWindow>();
|
|
|
|
public static Dictionary<string, string> ParseQuery(string query)
|
|
{
|
|
try
|
|
{
|
|
if (query.IndexOf('?') >= 0)
|
|
{
|
|
query = query.Split('?')[1];
|
|
|
|
var valueArray = Regex.Split(query, @"[\&]{0,1}[A-Za-z0-9]+[\=]{1}");
|
|
var paramArray = Regex.Split(query, @"[\=][A-Za-z0-9;]+");
|
|
|
|
valueArray = valueArray.Where(t => !string.IsNullOrWhiteSpace(t)).ToArray();
|
|
paramArray = paramArray.Where(t => !string.IsNullOrWhiteSpace(t)).ToArray();
|
|
|
|
var queryDictionary = new Dictionary<string, string>();
|
|
|
|
int ixg = 0;
|
|
foreach (var item in paramArray)
|
|
{
|
|
queryDictionary.Add(item.Contains("&") ? Regex.Split(item, @"[\?]|[\&]")[1] : item,
|
|
valueArray[ixg]);
|
|
ixg++;
|
|
if (ixg >= valueArray.Length)
|
|
break;
|
|
}
|
|
|
|
return queryDictionary;
|
|
}
|
|
return new Dictionary<string, string>();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw new Exception(String.Format("Error while parsing query '{0}'\n{1}", query, ex.Message), ex);
|
|
}
|
|
}
|
|
|
|
public static void NavigateToReportUri(string navigateUriString, string title)
|
|
{
|
|
NavigateToReportUri(navigateUriString, title, null);
|
|
}
|
|
|
|
public static void NavigateToReportUri(string navigateUriString, string title, Action callback)
|
|
{
|
|
NavigateToReportUriWithDocumentPreviewControl(navigateUriString, title, null, callback);
|
|
}
|
|
|
|
public static void NavigateToReportUriWithDocumentPreviewControl(string navigateUriString, string title, DocumentPreviewControl dp, Action callback)
|
|
{
|
|
var reportTemplates = ServiceFacade.DoOperationsServiceSync(x => x.GetReportTemplates(navigateUriString));
|
|
|
|
if (reportTemplates?.Count > 1)
|
|
{
|
|
var control = new ListboxSelectControl(reportTemplates.Cast<object>().ToList());
|
|
|
|
var beWoWindow = new BeWoWindow
|
|
{
|
|
Height = 200,
|
|
Width = 500,
|
|
WindowStartupLocation = WindowStartupLocation.CenterOwner,
|
|
GroupBoxContent = control,
|
|
Owner = BeWoApp.CurrentBeWo.MainWindow,
|
|
rootGroupBox = { Header = "Bericht auswählen" }
|
|
};
|
|
|
|
control.CancelButtonClicked += () => beWoWindow.Close();
|
|
control.SelectButtonClicked += () =>
|
|
{
|
|
if (control.SelectedItem == null) return;
|
|
|
|
beWoWindow.Close();
|
|
|
|
var selectedTemplate = (ReportTemplateDC)control.SelectedItem;
|
|
|
|
var newUri = navigateUriString + "&template=" + (selectedTemplate.Oid.HasValue ? selectedTemplate.Oid.Value.ToString() : "-1");
|
|
|
|
//var start = navigateUriString.IndexOf("type=");
|
|
//var end = navigateUriString.IndexOf('&', start);
|
|
|
|
//if (end == -1) end = navigateUriString.Length - 1;
|
|
|
|
//var typeString = navigateUriString.Substring(start, end - start + 1);
|
|
|
|
|
|
//var newUri = navigateUriString.Replace(typeString, "template=" + (selectedTemplate.Oid.HasValue ? selectedTemplate.Oid.Value.ToString() : "-1"));
|
|
|
|
BeWoApp.MainControl.StartWaiting();
|
|
|
|
StartGetReportStreamAsync(GetReportStreamForWPFControl, newUri, ms => BeWoApp.MainControl.Dispatch(delegate
|
|
{
|
|
if (callback != null)
|
|
{
|
|
callback();
|
|
}
|
|
ShowReportWindow(ms, title, dp);
|
|
}));
|
|
};
|
|
|
|
beWoWindow.ShowDialog();
|
|
}
|
|
else
|
|
{
|
|
BeWoApp.MainControl.StartWaiting();
|
|
|
|
StartGetReportStreamAsync(GetReportStreamForWPFControl, navigateUriString, ms => BeWoApp.MainControl.Dispatch(delegate
|
|
{
|
|
if (callback != null)
|
|
{
|
|
callback();
|
|
}
|
|
ShowReportWindow(ms, title, dp);
|
|
}));
|
|
}
|
|
}
|
|
|
|
public static void CustomizeReportPreviewToolBar(object s, RoutedEventArgs e)
|
|
{
|
|
var cont = LayoutHelper.FindElementByType(s as FrameworkElement, typeof(BarContainerControl)) as BarContainerControl;
|
|
|
|
if(cont != null)
|
|
{
|
|
var toolbar = cont.Bars.First() as ToolBarControl;
|
|
|
|
foreach(var item in toolbar.Items)
|
|
{
|
|
if(item.GetType() == typeof(OpenDocumentBarItem) ||
|
|
item.GetType() == typeof(DocumentMapBarCheckItem) ||
|
|
item.GetType() == typeof(WatermarkBarItem) ||
|
|
item.GetType() == typeof(ScaleBarItem) ||
|
|
item.GetType() == typeof(PrintDirectBarItem) ||
|
|
item.GetType() == typeof(PageSetupBarItem) ||
|
|
item.GetType() == typeof(SaveBarItem) ||
|
|
item.GetType() == typeof(SendSplitItem) ||
|
|
item.GetType() == typeof(ParametersBarCheckItem) ||
|
|
item.GetType() == typeof(ThumbnailsBarCheckItem) ||
|
|
item.GetType() == typeof(EditingFieldsBarCheckItem))
|
|
{
|
|
item.SetPropertyValue("IsVisible", false);
|
|
}
|
|
|
|
if(item.GetType() == typeof(ExportSplitItem))
|
|
{
|
|
var exportSplitItem = item as ExportSplitItem;
|
|
var popupMenu = (PopupMenu) exportSplitItem.PopupControl;
|
|
foreach(var link in popupMenu.Items)
|
|
{
|
|
var bbi = (BarButtonItem) link;
|
|
|
|
switch(bbi.BarItemName)
|
|
{
|
|
case "bExportMht":
|
|
bbi.IsVisible = false;
|
|
break;
|
|
case "bExportCsv":
|
|
bbi.IsVisible = false;
|
|
break;
|
|
case "bExportTxt":
|
|
bbi.IsVisible = false;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public static void StartGetReportStreamAsync(Func<string, MemoryStream> func, string param, Action<MemoryStream> callback)
|
|
{
|
|
func.BeginInvoke(param,
|
|
cb =>
|
|
{
|
|
try
|
|
{
|
|
var result = func.EndInvoke(cb);
|
|
if (callback != null)
|
|
{
|
|
callback(result);
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
BeWoApp.ShowError(null, e, true);
|
|
BeWoApp.MainControl.EndWaiting();
|
|
}
|
|
},
|
|
null);
|
|
}
|
|
|
|
public static MemoryStream GetReportStreamForWPFControl(string navigateUriString)
|
|
{
|
|
var webClient = new BeWoWebClient();
|
|
|
|
var refreshedUriString = RefreshNavigateUriString(navigateUriString);
|
|
var data = webClient.DownloadData(refreshedUriString);
|
|
|
|
return new MemoryStream(data);
|
|
}
|
|
|
|
public static string RemoveAuthenticationInfoFromUri(string navigateUri)
|
|
{
|
|
var regex = new Regex(@"[\&|\?]?token\=[A-Za-z0-9]+|[\&|\?]?tenant\=[A-Za-z0-9]+|[\&|\?]?username\=[A-Za-z0-9.]+");
|
|
var splittedUri = regex.Split(navigateUri.Split('?')[1]);
|
|
var cleanedSplittedUri = splittedUri.Where(t => !string.IsNullOrWhiteSpace(t)).ToArray();
|
|
var uriValues = cleanedSplittedUri.Aggregate(string.Empty, (current, item) => current + item);
|
|
|
|
return navigateUri.Split('?')[0] + "?" + uriValues;
|
|
}
|
|
|
|
private static string RefreshNavigateUriString(string navigateUri)
|
|
{
|
|
if (navigateUri.Contains("tenant"))
|
|
navigateUri = RemoveAuthenticationInfoFromUri(navigateUri);
|
|
|
|
var tempToken = string.Empty;
|
|
|
|
ServiceFacade.DoDownloadServiceSync(s => tempToken = s.CreateTemporaryToken(navigateUri, false));
|
|
|
|
var addChar = (navigateUri.Contains("?")) ? "&" : "?";
|
|
|
|
var finalUri = string.Format("{0}{1}token={2}", navigateUri, addChar, tempToken);
|
|
|
|
return finalUri;
|
|
}
|
|
|
|
public static bool CheckPopupEditClickableSpace(PopUpEdit popupedit, MouseButtonEventArgs e)
|
|
{
|
|
var buttonWidth = 22d;
|
|
var pos = e.GetPosition(popupedit);
|
|
|
|
if (popupedit.NewButtonVisibility == Visibility.Visible)
|
|
buttonWidth += 22;
|
|
|
|
if (popupedit.DeleteButtonVisibility == Visibility.Visible)
|
|
buttonWidth += 22;
|
|
|
|
return !(pos.X > popupedit.ActualWidth - buttonWidth);
|
|
}
|
|
|
|
public static void UpdateSearchViewObjectList<T, U>(T searchView, U updatedDC)
|
|
where T : GenericSearchView<U>
|
|
where U : class, IDataContract, IFilterableDC
|
|
{
|
|
var newSearchObjectList = new List<U>();
|
|
|
|
if (typeof (U) == typeof (CompactSupportConceptDC))
|
|
{
|
|
var uSC = updatedDC as CompactSupportConceptDC;
|
|
|
|
newSearchObjectList = searchView.ObjectList;
|
|
|
|
if (newSearchObjectList.Contains(updatedDC))
|
|
{
|
|
newSearchObjectList[newSearchObjectList.IndexOf(updatedDC)] = updatedDC;
|
|
}
|
|
|
|
foreach (var oldDC in newSearchObjectList.Select(item => item as CompactSupportConceptDC).Where(oldDC => oldDC.Customer.Equals(uSC.Customer)))
|
|
{
|
|
oldDC.Customer = uSC.Customer;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
foreach (var oldDC in searchView.ObjectList.Where(oldDC => !newSearchObjectList.Contains(oldDC)))
|
|
{
|
|
newSearchObjectList.Add(updatedDC.Equals(oldDC) ? updatedDC : oldDC);
|
|
}
|
|
}
|
|
|
|
searchView.ObjectList = null;
|
|
searchView.ObjectList = newSearchObjectList;
|
|
}
|
|
|
|
public static void OpenModalViewWindow<T, U, V>(
|
|
T viewModel,
|
|
V ownerView,
|
|
Action applyChanges,
|
|
EventHandler<EventArgs<OrganisationVM>> organisationSavedOrUpdated = null,
|
|
EventHandler<EventArgs<PersonVM>> personSavedOrUpdated = null, bool allowSaveIfParentDirty = false)
|
|
where T : AbstractDCMapperVM<U>
|
|
where U : IDataContract, new()
|
|
where V : BeWoView
|
|
{
|
|
var tType = typeof(T);
|
|
var view = new BeWoView();
|
|
|
|
if (tType == typeof(EmployeeVM))
|
|
{
|
|
view = new EmployeeView(viewModel as EmployeeVM) { ParentView = ownerView, MinWidth = 800, IsInWindow = true };
|
|
}
|
|
else if (tType == typeof(WohnheimVM))
|
|
{
|
|
view = new WohnheimView(viewModel as WohnheimVM) { ParentView = ownerView, MinWidth = 800, IsInWindow = true };
|
|
}
|
|
else if (tType == typeof (OrganisationVM))
|
|
{
|
|
view = new OrganisationView(viewModel as OrganisationVM) { ParentView = ownerView, MinWidth = 800, IsInWindow = true };
|
|
((OrganisationView) view).OrganisationSavedOrUpdated += organisationSavedOrUpdated;
|
|
}
|
|
else if (tType == typeof (PersonVM))
|
|
{
|
|
view = new PersonView(viewModel as PersonVM) {ParentView = ownerView, MinWidth = 800, IsInWindow = true};
|
|
((PersonView) view).PersonSavedOrUpdated += personSavedOrUpdated;
|
|
}
|
|
else if (tType == typeof (TeamVM))
|
|
{
|
|
view = new TeamView(viewModel as TeamVM) {ParentView = ownerView, MinWidth = 800, IsInWindow = true};
|
|
}
|
|
else if(tType==typeof(CustomerVM))
|
|
{
|
|
view = new CustomerView(viewModel as CustomerVM) { ParentView = ownerView, MinWidth = 800, IsInWindow = true };
|
|
}
|
|
else if(tType==typeof(SupportConceptVM))
|
|
{
|
|
view = new SupportConceptView(viewModel as SupportConceptVM) { ParentView = ownerView, MinWidth = 800, IsInWindow = true };
|
|
}
|
|
else
|
|
{
|
|
return;
|
|
}
|
|
|
|
view.ModalEditViewUpdateCallback = applyChanges;
|
|
|
|
CurrentModalViewWindow = new ModalViewWindow(view, ownerView, allowSaveIfParentDirty)
|
|
{
|
|
Title = viewModel.ToString()
|
|
};
|
|
|
|
BeWoApp.MainControl.OpenedModalViewWindows.Add(CurrentModalViewWindow);
|
|
_ModalViewWindowsToUpdate.Add(CurrentModalViewWindow);
|
|
|
|
foreach (var window in BeWoApp.MainControl.OpenedModalViewWindows.Where(window => !BeWoApp.MainControl.OpenedModalViewWindows.Last().Equals(window)))
|
|
{
|
|
ShowModalBackground(window.RootGrid);
|
|
}
|
|
|
|
CurrentModalViewWindow.Show();
|
|
}
|
|
|
|
public static void RemoveModalViewWindow()
|
|
{
|
|
if(BeWoApp.MainControl.OpenedModalViewWindows.Count > 1 && CurrentModalViewWindow != null)
|
|
{
|
|
var nextToLastWindowWithModalBackground = BeWoApp.MainControl.OpenedModalViewWindows.ElementAt(BeWoApp.MainControl.OpenedModalViewWindows.Count - 2);
|
|
nextToLastWindowWithModalBackground.RootGrid.Children.RemoveAt(1);
|
|
}
|
|
|
|
BeWoApp.MainControl.OpenedModalViewWindows.Remove(CurrentModalViewWindow);
|
|
|
|
CurrentModalViewWindow = BeWoApp.MainControl.OpenedModalViewWindows.Count > 0 ? BeWoApp.MainControl.OpenedModalViewWindows.ElementAt(BeWoApp.MainControl.OpenedModalViewWindows.Count - 1) : null;
|
|
}
|
|
|
|
public static bool CheckViewIsCalledFromWindow(BeWoView view)
|
|
{
|
|
return ((Grid) view.Parent).Parent.GetType() == typeof (Window);
|
|
}
|
|
|
|
private static void ShowModalBackground(Panel gridToBlock)
|
|
{
|
|
var detailViewBackGround = new Grid
|
|
{
|
|
IsHitTestVisible = true,
|
|
Background = Brushes.White,
|
|
Opacity = .5,
|
|
Name = "DetailViewBackGround"
|
|
};
|
|
|
|
if (gridToBlock.Children.OfType<Grid>().Any(obj => obj.Name.Equals("DetailViewBackGround")))
|
|
{
|
|
return;
|
|
}
|
|
|
|
Grid.SetColumnSpan(detailViewBackGround, 3);
|
|
Grid.SetRowSpan(detailViewBackGround, 3);
|
|
|
|
gridToBlock.Children.Add(detailViewBackGround);
|
|
|
|
Panel.SetZIndex(detailViewBackGround, int.MaxValue - 1);
|
|
}
|
|
|
|
public static void UpdateAllViews<T>(T updatedObject) where T : IFilterableDC
|
|
{
|
|
var activeView = BeWoApp.MainControl.ActiveView;
|
|
UpdateView(activeView, updatedObject);
|
|
|
|
if(BeWoApp.MainControl.OpenedModalViewWindows.Count <= 0)
|
|
{
|
|
return;
|
|
}
|
|
|
|
for(var i = _ModalViewWindowsToUpdate.Count - 1; i >= 0; i--)
|
|
{
|
|
UpdateView(_ModalViewWindowsToUpdate.ElementAt(i).DetailView, updatedObject);
|
|
_ModalViewWindowsToUpdate.RemoveAt(i);
|
|
}
|
|
}
|
|
|
|
private static void UpdateView<T>(BeWoView view, T updatedObject) where T : IFilterableDC
|
|
{
|
|
if(view.GetType() == typeof(EmployeeView))
|
|
{
|
|
var employeeView = view as EmployeeView;
|
|
UpdateEmployeeView(employeeView, updatedObject);
|
|
}
|
|
else if(view.GetType() == typeof(WohnheimView))
|
|
{
|
|
var wohnheimView = view as WohnheimView;
|
|
UpdateWohnheimView(wohnheimView, updatedObject);
|
|
}
|
|
else if(view.GetType() == typeof(CustomerView))
|
|
{
|
|
var customerView = view as CustomerView;
|
|
UpdateCustomerView(customerView, updatedObject);
|
|
}
|
|
else if(view.GetType() == typeof(OrganisationView))
|
|
{
|
|
var organisationView = view as OrganisationView;
|
|
UpdateOrganisationView(organisationView, updatedObject);
|
|
}
|
|
else if(view.GetType() == typeof(BookingView))
|
|
{
|
|
var bookingView = view as BookingView;
|
|
UpdateBookingView(bookingView, updatedObject);
|
|
}
|
|
else if(view.GetType() == typeof(FinanceView))
|
|
{
|
|
var financeView = view as FinanceView;
|
|
UpdateFinanceView(financeView, updatedObject);
|
|
}
|
|
else if(view.GetType() == typeof(SupportConceptView))
|
|
{
|
|
var supportConceptView = view as SupportConceptView;
|
|
UpdateSupportConceptView(supportConceptView, updatedObject);
|
|
}
|
|
else if(view.GetType() == typeof(ServiceRecordView2))
|
|
{
|
|
var serviceRecordView = (ServiceRecordView2) view;
|
|
UpdateServiceRecordView(serviceRecordView, updatedObject);
|
|
}
|
|
else if(view.GetType() == typeof(TeamView))
|
|
{
|
|
var teamView = (TeamView) view;
|
|
UpdateTeamView(teamView, updatedObject);
|
|
}
|
|
else if(view.GetType() == typeof(UserView))
|
|
{
|
|
var userView = (UserView)view;
|
|
UpdateUserView(userView);
|
|
}
|
|
else if(view.GetType() == typeof(ReportView))
|
|
{
|
|
var reportView = (ReportView) view;
|
|
UpdateReportView(reportView, updatedObject);
|
|
}
|
|
else if(view.GetType() == typeof(PersonView))
|
|
{
|
|
var personView = view as PersonView;
|
|
UpdatePersonView(personView, updatedObject);
|
|
}
|
|
else if(view.GetType() == typeof(AdditionalServiceView))
|
|
{
|
|
var additionalServiceView = view as AdditionalServiceView;
|
|
UpdateAdditionalServiceView(additionalServiceView, updatedObject);
|
|
}
|
|
}
|
|
|
|
private static void UpdateEmployeeView<T>(EmployeeView pEmployeeView, T pUpdatedObject) where T : IFilterableDC
|
|
{
|
|
if(typeof(T) == typeof(CompactCustomerDC))
|
|
{
|
|
var updatedCustomer = new CompactCustomerDC();
|
|
|
|
ServiceFacade.DoCustomerServiceSync(s => updatedCustomer = s.GetCompactCustomerDC((pUpdatedObject as CompactCustomerDC).CustomerOid));
|
|
|
|
foreach(var item in pEmployeeView.ViewModel.CustomerRelations.VMList.Where(item => item.Customer.Equals(updatedCustomer)))
|
|
{
|
|
item.Customer = updatedCustomer;
|
|
}
|
|
|
|
var grid = pEmployeeView.rootGrid.FindResource("grid_CustomerRelation") as GridControl;
|
|
|
|
foreach(var item in ((BindingList<CustomerEmployeeRelationVM>)grid.ItemsSource).Where(item => item.Customer.Equals(updatedCustomer)))
|
|
{
|
|
item.Customer = null;
|
|
item.Customer = updatedCustomer;
|
|
}
|
|
|
|
grid.RefreshData();
|
|
}
|
|
|
|
if(typeof(T) == typeof(CompactEmployeeDC))
|
|
{
|
|
UpdateLoggedInEmployee((pUpdatedObject as CompactEmployeeDC).EmployeeOid);
|
|
pEmployeeView.ReloadViewModel();
|
|
}
|
|
}
|
|
|
|
private static void UpdateWohnheimView<T>(WohnheimView pWohnheimView, T pUpdateObject) where T : IFilterableDC
|
|
{
|
|
if(typeof(T) == typeof(CompactCustomerDC))
|
|
{
|
|
var updatedCustomer = new CompactCustomerDC();
|
|
|
|
ServiceFacade.DoCustomerServiceSync(s => updatedCustomer = s.GetCompactCustomerDC((pUpdateObject as CompactCustomerDC).CustomerOid));
|
|
|
|
var grid = pWohnheimView.grid_CustomerRelation;
|
|
|
|
foreach(var item in ((BindingList<WohnheimCustomerRelationVM>)grid.ItemsSource).Where(item => item.Customer.Equals(updatedCustomer)))
|
|
{
|
|
item.Customer = null;
|
|
item.Customer = updatedCustomer;
|
|
}
|
|
|
|
grid.RefreshData();
|
|
}
|
|
|
|
if(typeof(T) == typeof(CompactEmployeeDC))
|
|
{
|
|
var updatedEmployee = new CompactEmployeeDC();
|
|
|
|
ServiceFacade.DoEmployeeServiceSync(s => updatedEmployee = s.LoadCompactEmployee((pUpdateObject as CompactEmployeeDC).EmployeeOid));
|
|
|
|
var employeeRelationsGrid = pWohnheimView.grid_EmployeeRelation;
|
|
|
|
foreach(var item in ((BindingList<WohnheimEmployeeRelationVM>)employeeRelationsGrid.ItemsSource).Where(item => item.Employee.EmployeeOid.Equals(updatedEmployee.EmployeeOid)))
|
|
{
|
|
item.Employee = null;
|
|
item.Employee = updatedEmployee;
|
|
}
|
|
|
|
UpdateLoggedInEmployee((pUpdateObject as CompactEmployeeDC).EmployeeOid);
|
|
}
|
|
}
|
|
|
|
private static void UpdateCustomerView<T>(CustomerView pCustomerView, T pUpdateObject) where T : IFilterableDC
|
|
{
|
|
if(typeof(T) == typeof(CompactEmployeeDC))
|
|
{
|
|
var updatedEmployee = new CompactEmployeeDC();
|
|
|
|
if(!string.IsNullOrWhiteSpace(pCustomerView.popupedit_employeeRelations.Text))
|
|
{
|
|
ServiceFacade.DoEmployeeServiceSync(s => updatedEmployee = s.LoadCompactEmployee((pUpdateObject as CompactEmployeeDC).EmployeeOid));
|
|
pCustomerView.ViewModel.EmployeeRelations.NewVM.Employee = null;
|
|
pCustomerView.ViewModel.EmployeeRelations.NewVM.Employee = updatedEmployee;
|
|
}
|
|
else
|
|
{
|
|
ServiceFacade.DoEmployeeServiceSync(s => updatedEmployee = s.LoadCompactEmployee((pUpdateObject as CompactEmployeeDC).EmployeeOid));
|
|
}
|
|
|
|
var grid = (GridControl)pCustomerView.root.Resources["datagrid_EmployeeRelation"];
|
|
|
|
if(grid.ItemsSource != null)
|
|
{
|
|
foreach(var item in ((BindingList<CustomerEmployeeRelationVM>)grid.ItemsSource).Where(item => item.Employee.EmployeeOid.Equals(updatedEmployee.EmployeeOid)))
|
|
{
|
|
item.Employee = null;
|
|
item.Employee = updatedEmployee;
|
|
}
|
|
|
|
grid.RefreshData();
|
|
}
|
|
|
|
UpdateSearchViewObjectList(pCustomerView.employeesearchview, updatedEmployee);
|
|
UpdateLoggedInEmployee(updatedEmployee.EmployeeOid);
|
|
}
|
|
else if(typeof(T) == typeof(CompactPersonDC))
|
|
{
|
|
var updatedPerson = new CompactPersonDC();
|
|
|
|
ServiceFacade.DoCustomerServiceSync(s => updatedPerson = s.LoadPersonCompact((pUpdateObject as CompactPersonDC).PersonOid));
|
|
|
|
if(!string.IsNullOrWhiteSpace(pCustomerView.popupedit_environmentPersonSearch.Text) && pCustomerView.popupedit_environmentPersonSearch.Text.Equals((pUpdateObject as CompactPersonDC).ToString()))
|
|
{
|
|
pCustomerView.ViewModel.EnvironmentPersons.NewVM.Person = null;
|
|
pCustomerView.ViewModel.EnvironmentPersons.NewVM.Person = updatedPerson;
|
|
}
|
|
|
|
var grid = (GridControl) pCustomerView.root.Resources["grid_PersonRelations"];
|
|
|
|
var vmList = pCustomerView.ViewModel.EnvironmentPersons.VMList;
|
|
var relVMs = vmList.Where(w => w.Person.PersonOid.Equals(updatedPerson.PersonOid)).Where(w => !w.IsNew);
|
|
var relPersonOids = relVMs.Select(s => s.CommitToDataContract().Customer2PersonOid.Value).ToList();
|
|
|
|
var dataContracts = new List<CustomerPersonRelationDC>();
|
|
ServiceFacade.DoCustomerServiceSync(s => dataContracts = s.LoadCustomerPersonRelationsByOid(relPersonOids));
|
|
|
|
var test = new List<CustomerPersonRelationVM>();
|
|
|
|
dataContracts.DoForEach(dfe => test.Add(new CustomerPersonRelationVM(dfe)));
|
|
|
|
var vmMap = vmList.Where(w => relVMs.Contains(w)).ToDictionary(vmList.IndexOf, v => v.DataContract.Customer2PersonOid.Value);
|
|
foreach(var item in vmMap)
|
|
{
|
|
vmList[item.Key] = test.First(f => f.DataContract.Customer2PersonOid.Value.Equals(item.Value));
|
|
}
|
|
|
|
grid.RefreshData();
|
|
|
|
UpdateSearchViewObjectList(pCustomerView.personsearchview, updatedPerson);
|
|
}
|
|
else if(typeof(T) == typeof(CompactOrganisationDC))
|
|
{
|
|
var organisationToUpdate = pUpdateObject as CompactOrganisationDC;
|
|
var updatedOrganisation = new CompactOrganisationDC();
|
|
var organisationRelationGrid = new GridControl();
|
|
var costBearerRelationGrid = new GridControl();
|
|
|
|
if(!(pUpdateObject is CompactOrganisationDC))
|
|
{
|
|
return;
|
|
}
|
|
|
|
organisationRelationGrid = (GridControl) pCustomerView.root.Resources["grid_OrganisationRelations"];
|
|
costBearerRelationGrid = (GridControl) pCustomerView.root.Resources["grid_costBearer"];
|
|
|
|
ServiceFacade.DoCustomerServiceSync(s => updatedOrganisation = s.LoadOrganisationCompact(organisationToUpdate.OrganisationOid));
|
|
|
|
if(!string.IsNullOrWhiteSpace(pCustomerView.popupedit_costBearer.Text) && pCustomerView.popupedit_costBearer.Text.Equals(organisationToUpdate.ToString()))
|
|
{
|
|
pCustomerView.ViewModel.CostBearers.NewVM.CostBearer = null;
|
|
pCustomerView.ViewModel.CostBearers.NewVM.CostBearer = updatedOrganisation;
|
|
pCustomerView.popupedit_costBearer.Text = updatedOrganisation.ToString();
|
|
}
|
|
|
|
foreach(var item in pCustomerView.ViewModel.CostBearers.VMList.Where(item => item.CostBearer.Equals(updatedOrganisation)))
|
|
{
|
|
item.CostBearer = null;
|
|
item.CostBearer = updatedOrganisation;
|
|
}
|
|
|
|
if(!string.IsNullOrWhiteSpace(pCustomerView.popupedit_environmentOrganisationSearch.Text) && pCustomerView.popupedit_environmentOrganisationSearch.Text.Equals(organisationToUpdate.ToString()))
|
|
{
|
|
pCustomerView.ViewModel.EnvironmentOrganisations.NewVM.Organisation = null;
|
|
pCustomerView.ViewModel.EnvironmentOrganisations.NewVM.Organisation = updatedOrganisation;
|
|
pCustomerView.popupedit_environmentOrganisationSearch.Text = updatedOrganisation.ToString();
|
|
}
|
|
|
|
var vmList = pCustomerView.ViewModel.EnvironmentOrganisations.VMList;
|
|
var relVMs = vmList.Where(w => w.Organisation.OrganisationOid.Equals(updatedOrganisation.OrganisationOid)).Where(w => !w.IsNew);
|
|
var relOrganisationOids = relVMs.Select(s => s.CommitToDataContract().Customer2OrganisationOid.Value).ToList();
|
|
var dataContracts = new List<CustomerOrganisationRelationDC>();
|
|
var test = new List<CustomerOrganisationRelationVM>();
|
|
|
|
ServiceFacade.DoCustomerServiceSync(s => dataContracts = s.LoadCustomerOrganisationRelationsByOid(relOrganisationOids));
|
|
|
|
dataContracts.DoForEach(dfe => test.Add(new CustomerOrganisationRelationVM(dfe)));
|
|
|
|
var vmMap = vmList.Where(w => relVMs.Contains(w)).ToDictionary(vmList.IndexOf, v => v.DataContract.Customer2OrganisationOid.Value);
|
|
|
|
foreach(var item in vmMap)
|
|
{
|
|
vmList[item.Key] = test.First(f => f.DataContract.Customer2OrganisationOid.Value.Equals(item.Value));
|
|
}
|
|
|
|
organisationRelationGrid.RefreshData();
|
|
costBearerRelationGrid.RefreshData();
|
|
|
|
UpdateSearchViewObjectList(pCustomerView.costbearersearchview, updatedOrganisation);
|
|
UpdateSearchViewObjectList(pCustomerView.organisationsearchview, updatedOrganisation);
|
|
}
|
|
else if(typeof(T) == typeof(CompactTeamDC))
|
|
{
|
|
var teamToUpdate = pUpdateObject as CompactTeamDC;
|
|
var updatedTeam = new CompactTeamDC();
|
|
var grid = (GridControl) pCustomerView.root.Resources["datagrid_TeamRelation"];
|
|
|
|
ServiceFacade.DoEmployeeServiceSync(s => updatedTeam = s.LoadCompactTeam(teamToUpdate.TeamOid));
|
|
|
|
if(!string.IsNullOrWhiteSpace(pCustomerView.popupedit_teamRelations.Text) && pCustomerView.popupedit_teamRelations.Text.Equals(teamToUpdate.ToString()))
|
|
{
|
|
ServiceFacade.DoEmployeeServiceSync(s => updatedTeam = s.LoadCompactTeam(teamToUpdate.TeamOid));
|
|
pCustomerView.ViewModel.TeamRelations.NewVM.Team = null;
|
|
pCustomerView.ViewModel.TeamRelations.NewVM.Team = updatedTeam;
|
|
}
|
|
|
|
foreach(var item in ((BindingList<CustomerTeamRelationVM>)grid.ItemsSource).Where(item => item.Team.Equals(updatedTeam)))
|
|
{
|
|
item.Team = null;
|
|
item.Team = updatedTeam;
|
|
}
|
|
|
|
grid.RefreshData();
|
|
UpdateSearchViewObjectList(pCustomerView.teamsearchview, updatedTeam);
|
|
}
|
|
else if(typeof(T) == typeof(CompactCustomerDC))
|
|
{
|
|
pCustomerView.ReloadViewModel();
|
|
}
|
|
}
|
|
|
|
private static void UpdateOrganisationView<T>(OrganisationView pOrganisationView, T pUpdateObject) where T : IFilterableDC
|
|
{
|
|
if(typeof(T) == typeof(CompactPersonDC))
|
|
{
|
|
var updatedPerson = new CompactPersonDC();
|
|
var grid = (GridControl) pOrganisationView.gridroot.Resources["datagrid_PersonRelation"];
|
|
|
|
ServiceFacade.DoCustomerServiceSync(s => updatedPerson = s.LoadPersonCompact((pUpdateObject as CompactPersonDC).PersonOid));
|
|
|
|
var vmList = pOrganisationView.ViewModel.PersonRelations.VMList;
|
|
var relVMs = vmList.Where(w => w.Person.PersonOid.Equals(updatedPerson.PersonOid)).Where(w => !w.IsNew);
|
|
var relPersonOids = relVMs.Select(s => s.CommitToDataContract().Organisation2PersonOid.Value).ToList();
|
|
var dataContracts = new List<OrganisationPersonRelationDC>();
|
|
var organisationPersonRelationVMs = new List<OrganisationPersonRelationVM>();
|
|
|
|
ServiceFacade.DoOperationsServiceSync(s => dataContracts = s.LoadOrganisationPersonRelationsByOid(relPersonOids));
|
|
|
|
dataContracts.DoForEach(dfe => organisationPersonRelationVMs.Add(new OrganisationPersonRelationVM(dfe)));
|
|
|
|
var vmMap = vmList.Where(w => relVMs.Contains(w)).ToDictionary(vmList.IndexOf, v => v.DataContract.Organisation2PersonOid.Value);
|
|
foreach(var item in vmMap)
|
|
{
|
|
vmList[item.Key] = organisationPersonRelationVMs.First(f => f.DataContract.Organisation2PersonOid.Value.Equals(item.Value));
|
|
}
|
|
|
|
grid.RefreshData();
|
|
}
|
|
else if(typeof(T) == typeof(CompactOrganisationDC))
|
|
{
|
|
pOrganisationView.ReloadViewModel();
|
|
}
|
|
}
|
|
|
|
private static void UpdateBookingView<T>(BookingView pBookingView, T pUpdateObject) where T : IFilterableDC
|
|
{
|
|
if(typeof(T) != typeof(CompactEmployeeDC))
|
|
{
|
|
return;
|
|
}
|
|
|
|
var updatedEmployee = new CompactEmployeeDC();
|
|
|
|
ServiceFacade.DoEmployeeServiceSync(s => updatedEmployee = s.LoadCompactEmployee((pUpdateObject as CompactEmployeeDC).EmployeeOid));
|
|
|
|
var sourceNew = pBookingView.combobox_newEmployee.ItemsSource as ObservableCollection<CompactEmployeeDC>;
|
|
var sourceEdit = pBookingView.combobox_editEmployee.ItemsSource as ObservableCollection<CompactEmployeeDC>;
|
|
|
|
var selectedNewIndex = pBookingView.combobox_newEmployee.SelectedIndex;
|
|
var selectedEditIndex = pBookingView.combobox_editEmployee.SelectedIndex;
|
|
|
|
foreach(var item in pBookingView.ViewModel.VMList.Where(item => item.Employee.EmployeeOid.Equals(updatedEmployee.EmployeeOid)))
|
|
{
|
|
item.Employee = new CompactEmployeeDC();
|
|
item.Employee = updatedEmployee;
|
|
}
|
|
|
|
for(var i = 0; i < sourceNew.Count; i++)
|
|
{
|
|
if(!sourceNew[i].EmployeeOid.Equals(updatedEmployee.EmployeeOid))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
sourceNew[i] = new CompactEmployeeDC();
|
|
sourceNew[i] = updatedEmployee;
|
|
}
|
|
|
|
for(var i = 0; i < sourceNew.Count; i++)
|
|
{
|
|
if(!sourceEdit[i].EmployeeOid.Equals(updatedEmployee.EmployeeOid))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
sourceEdit[i] = new CompactEmployeeDC();
|
|
sourceEdit[i] = updatedEmployee;
|
|
}
|
|
|
|
pBookingView.combobox_newEmployee.ItemsSource = sourceNew;
|
|
pBookingView.combobox_editEmployee.ItemsSource = sourceEdit;
|
|
|
|
pBookingView.combobox_newEmployee.SelectedIndex = selectedNewIndex;
|
|
pBookingView.combobox_editEmployee.SelectedIndex = selectedEditIndex;
|
|
|
|
UpdateLoggedInEmployee(updatedEmployee.EmployeeOid);
|
|
}
|
|
|
|
private static void UpdateFinanceView<T>(FinanceView pFinanceView, T pUpdateObject) where T : IFilterableDC
|
|
{
|
|
var settlementInvoiceView = pFinanceView.tabitem_settlementinvoice.Content as SettlementInvoiceView;
|
|
var equityInvoiceView = pFinanceView.tabitem_equityinvoice.Content as EquityInvoiceView;
|
|
var generalInvoiceView = pFinanceView.tabitem_otherinvoice.Content as GeneralInvoiceView;
|
|
var serviceInvoiceView = pFinanceView.tabitem_collectiveinvoice.Content as ServiceInvoiceView;
|
|
var accountingTransactionBookingView = pFinanceView.tabitem_financeBooking.Content as AccountingTransactionBookingView;
|
|
|
|
if(typeof(T) == typeof(CompactCustomerDC))
|
|
{
|
|
var updatedCustomer = new CompactCustomerDC();
|
|
ServiceFacade.DoCustomerServiceSync(s => updatedCustomer = s.GetCompactCustomerDC((pUpdateObject as CompactCustomerDC).CustomerOid));
|
|
|
|
if(accountingTransactionBookingView != null)
|
|
{
|
|
foreach(var item in accountingTransactionBookingView.ViewModel.AccountingTransactionVMList.Where(item => item.SupportConcept.Customer.Equals(updatedCustomer)))
|
|
{
|
|
item.SupportConcept.Customer = new CompactCustomerDC();
|
|
item.SupportConcept.Customer = updatedCustomer;
|
|
}
|
|
|
|
foreach(var item in accountingTransactionBookingView.FlatSupportConceptItems.Where(item => item.SupportConceptTreeNodeDC != null).Where(item => item.SupportConceptTreeNodeDC.Customer.Equals(updatedCustomer)))
|
|
{
|
|
item.SupportConceptTreeNodeDC.Customer = new CompactCustomerDC();
|
|
item.SupportConceptTreeNodeDC.Customer = updatedCustomer;
|
|
}
|
|
|
|
UpdateSingleSupportConceptSelectionControl(accountingTransactionBookingView.supportConceptSelectionControl, updatedCustomer);
|
|
}
|
|
|
|
if(settlementInvoiceView != null)
|
|
{
|
|
if(settlementInvoiceView.SelectedSupportConcept != null)
|
|
{
|
|
if(settlementInvoiceView.SelectedSupportConcept.Customer.Equals((pUpdateObject as CompactCustomerDC)))
|
|
{
|
|
settlementInvoiceView.SelectedSupportConcept.Customer = new CompactCustomerDC();
|
|
settlementInvoiceView.SelectedSupportConcept.Customer = updatedCustomer;
|
|
|
|
settlementInvoiceView.popupedit_CostBeaerer.Text = $"{settlementInvoiceView.SelectedSupportConcept.Customer.LastName}, {settlementInvoiceView.SelectedSupportConcept.Customer.FirstName} {settlementInvoiceView.SelectedSupportConcept.Customer.DateOfBirthString}";
|
|
}
|
|
|
|
UpdateSearchViewObjectList(settlementInvoiceView.supportconceptsearchview, settlementInvoiceView.SelectedSupportConcept);
|
|
}
|
|
else
|
|
{
|
|
UpdateSearchViewObjectList(settlementInvoiceView.supportconceptsearchview, new CompactSupportConceptDC { Customer = updatedCustomer });
|
|
}
|
|
}
|
|
|
|
if(equityInvoiceView != null)
|
|
{
|
|
if(equityInvoiceView.SelectedSupportConcept != null)
|
|
{
|
|
equityInvoiceView.SelectedSupportConcept.Customer = new CompactCustomerDC();
|
|
equityInvoiceView.SelectedSupportConcept.Customer = updatedCustomer;
|
|
|
|
equityInvoiceView.popupedit_CostBeaerer.Text = $"{equityInvoiceView.SelectedSupportConcept.Customer.LastName}, {equityInvoiceView.SelectedSupportConcept.Customer.FirstName} {equityInvoiceView.SelectedSupportConcept.Customer.DateOfBirthString}";
|
|
|
|
UpdateSearchViewObjectList(equityInvoiceView.supportconceptsearchview, equityInvoiceView.SelectedSupportConcept);
|
|
}
|
|
else
|
|
{
|
|
UpdateSearchViewObjectList(equityInvoiceView.supportconceptsearchview, new CompactSupportConceptDC { Customer = updatedCustomer });
|
|
}
|
|
}
|
|
|
|
if(serviceInvoiceView != null)
|
|
{
|
|
if(serviceInvoiceView.ViewModel.SelectedSupportConcept != null)
|
|
{
|
|
if(serviceInvoiceView.ViewModel.SelectedSupportConcept.Customer.Equals((pUpdateObject as CompactCustomerDC)))
|
|
{
|
|
serviceInvoiceView.ViewModel.SelectedSupportConcept.Customer = new CompactCustomerDC();
|
|
serviceInvoiceView.ViewModel.SelectedSupportConcept.Customer = updatedCustomer;
|
|
|
|
serviceInvoiceView.popupedit_supportConcept.Text = $"{serviceInvoiceView.ViewModel.SelectedSupportConcept.Customer.LastName}, {serviceInvoiceView.ViewModel.SelectedSupportConcept.Customer.FirstName} {serviceInvoiceView.ViewModel.SelectedSupportConcept.Customer.DateOfBirthString}";
|
|
|
|
UpdateSearchViewObjectList(serviceInvoiceView.supportConcept_search, serviceInvoiceView.ViewModel.SelectedSupportConcept);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
UpdateSearchViewObjectList(serviceInvoiceView.supportConcept_search, new CompactSupportConceptDC { Customer = updatedCustomer });
|
|
}
|
|
}
|
|
}
|
|
else if(typeof(T) == typeof(CompactSupportConceptDC))
|
|
{
|
|
var updatedSupportConcept = new CompactSupportConceptDC();
|
|
ServiceFacade.DoCustomerServiceSync(s => updatedSupportConcept = s.LoadCompactSupportConceptDC((pUpdateObject as CompactSupportConceptDC).SupportConceptOid, BeWoApp.LoggedOnEmployee.EmployeeOid));
|
|
|
|
if(equityInvoiceView?.SelectedSupportConcept != null)
|
|
{
|
|
equityInvoiceView.ReloadViewModel();
|
|
equityInvoiceView.popupedit_CostBeaerer.Text = $"{updatedSupportConcept.Customer.LastName}, {updatedSupportConcept.Customer.FirstName} {updatedSupportConcept.Customer.DateOfBirthString}";
|
|
|
|
UpdateSearchViewObjectList(equityInvoiceView.supportconceptsearchview, equityInvoiceView.SelectedSupportConcept);
|
|
}
|
|
|
|
if(settlementInvoiceView?.SelectedSupportConcept != null)
|
|
{
|
|
settlementInvoiceView.ReloadViewModel();
|
|
settlementInvoiceView.popupedit_CostBeaerer.Text = $"{updatedSupportConcept.Customer.LastName}, {updatedSupportConcept.Customer.FirstName} {updatedSupportConcept.Customer.DateOfBirthString}";
|
|
|
|
UpdateSearchViewObjectList(settlementInvoiceView.supportconceptsearchview, settlementInvoiceView.SelectedSupportConcept);
|
|
}
|
|
|
|
if(serviceInvoiceView?.ViewModel.SelectedSupportConcept != null)
|
|
{
|
|
if(serviceInvoiceView.ViewModel.SelectedSupportConcept.Equals(updatedSupportConcept))
|
|
{
|
|
serviceInvoiceView.ViewModel.SelectedSupportConcept = updatedSupportConcept;
|
|
}
|
|
|
|
UpdateSearchViewObjectList(serviceInvoiceView.supportConcept_search, updatedSupportConcept);
|
|
}
|
|
}
|
|
else if(typeof(T) == typeof(CompactOrganisationDC))
|
|
{
|
|
var updatedOrganisation = new CompactOrganisationDC();
|
|
ServiceFacade.DoCustomerServiceSync(s => updatedOrganisation = s.LoadOrganisationCompact((pUpdateObject as CompactOrganisationDC).OrganisationOid));
|
|
|
|
if(generalInvoiceView != null)
|
|
{
|
|
if(generalInvoiceView.SelectedOrganisation != null)
|
|
{
|
|
if(generalInvoiceView.SelectedOrganisation.Equals(updatedOrganisation))
|
|
{
|
|
generalInvoiceView.SelectedOrganisation = null;
|
|
generalInvoiceView.SelectedOrganisation = updatedOrganisation;
|
|
}
|
|
|
|
generalInvoiceView.popupedit_Recipient.Text = updatedOrganisation.ToString();
|
|
}
|
|
|
|
UpdateSearchViewObjectList(generalInvoiceView.recipientsearchview, updatedOrganisation);
|
|
}
|
|
|
|
if(serviceInvoiceView != null)
|
|
{
|
|
if(serviceInvoiceView.ViewModel.SelectedCostBearer != null)
|
|
{
|
|
if(serviceInvoiceView.ViewModel.SelectedCostBearer.Equals(updatedOrganisation))
|
|
{
|
|
serviceInvoiceView.ViewModel.SelectedCostBearer = updatedOrganisation;
|
|
}
|
|
}
|
|
|
|
UpdateSearchViewObjectList(serviceInvoiceView.organisationSearchView, updatedOrganisation);
|
|
}
|
|
}
|
|
}
|
|
|
|
private static void UpdateSupportConceptView<T>(SupportConceptView pSupportConceptView, T pUpdatedObject) where T : IFilterableDC
|
|
{
|
|
if(typeof(T) == typeof(CompactEmployeeDC))
|
|
{
|
|
var updatedEmployee = new CompactEmployeeDC();
|
|
|
|
ServiceFacade.DoEmployeeServiceSync(s => updatedEmployee = s.LoadCompactEmployee((pUpdatedObject as CompactEmployeeDC).EmployeeOid));
|
|
|
|
// TODO: an SchedulerAppointments anpassen! (angepasst)
|
|
//for(var i = 0; i < pSupportConceptView.ViewModel.Tasks.NewVM.Employees.Count; i++)
|
|
//{
|
|
// if(!pSupportConceptView.ViewModel.Tasks.NewVM.Employees[i].EmployeeOid.Equals(updatedEmployee.EmployeeOid))
|
|
// {
|
|
// continue;
|
|
// }
|
|
|
|
// pSupportConceptView.ViewModel.Tasks.NewVM.Employees[i] = null;
|
|
// pSupportConceptView.ViewModel.Tasks.NewVM.Employees[i] = updatedEmployee;
|
|
//}
|
|
for(var i = 0; i < pSupportConceptView.ViewModel.Tasks.NewVM.EmployeeList.Count; i++)
|
|
{
|
|
if(!pSupportConceptView.ViewModel.Tasks.NewVM.EmployeeList.ElementAt(i).Employee.EmployeeOid.Equals(updatedEmployee.EmployeeOid))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
pSupportConceptView.ViewModel.Tasks.NewVM.EmployeeList.ElementAt(i).Employee = null;
|
|
pSupportConceptView.ViewModel.Tasks.NewVM.EmployeeList.ElementAt(i).Employee = updatedEmployee;
|
|
}
|
|
|
|
foreach(var currentSC in pSupportConceptView.ViewModel.CostBearerRelations.VMList)
|
|
{
|
|
foreach(var currentApprovalPeriodList in currentSC.ApprovalPeriodList.VMList)
|
|
{
|
|
if(currentApprovalPeriodList.SupportConceptApprovalEmployeeRelations.VMList.Any(a => a.Employee.EmployeeOid.Equals(updatedEmployee.EmployeeOid)))
|
|
{
|
|
// Nur einmal in der Liste
|
|
var employeeContainingRel = currentApprovalPeriodList.SupportConceptApprovalEmployeeRelations.VMList.FirstOrDefault(f => f.Employee.EmployeeOid.Equals(updatedEmployee.EmployeeOid));
|
|
if(employeeContainingRel != null)
|
|
{
|
|
employeeContainingRel.Employee = null;
|
|
employeeContainingRel.Employee = updatedEmployee;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if(pSupportConceptView.ViewModel.CostBearerRelations.VMList.Any(a => a.ApprovalPeriodList.VMList.Any(a2 => a2.SupportConceptApprovalEmployeeRelations.VMList.Any(a3 => a3.Employee.EmployeeOid.Equals(updatedEmployee.EmployeeOid)))))
|
|
{
|
|
var emp = pSupportConceptView.SelectedApprovalPeriodVM.SupportConceptApprovalEmployeeRelations.VMList.FirstOrDefault(f => f.Employee.EmployeeOid.Equals(updatedEmployee.EmployeeOid));
|
|
if(emp != null)
|
|
{
|
|
emp.Employee = null;
|
|
emp.Employee = updatedEmployee;
|
|
emp.EmployeeString = updatedEmployee.ToString();
|
|
}
|
|
}
|
|
|
|
if(pSupportConceptView.SelectedApprovalPeriodVM.SupportConceptApprovalEmployeeRelations.NewVM.Employee.EmployeeOid.Equals(updatedEmployee.EmployeeOid))
|
|
{
|
|
pSupportConceptView.SelectedApprovalPeriodVM.SupportConceptApprovalEmployeeRelations.NewVM.Employee = null;
|
|
pSupportConceptView.SelectedApprovalPeriodVM.SupportConceptApprovalEmployeeRelations.NewVM.Employee = updatedEmployee;
|
|
pSupportConceptView.SelectedApprovalPeriodVM.SupportConceptApprovalEmployeeRelations.NewVM.EmployeeString = updatedEmployee.ToString();
|
|
}
|
|
|
|
if(pSupportConceptView.ViewModel.Originator.EmployeeOid.Equals(updatedEmployee.EmployeeOid))
|
|
{
|
|
pSupportConceptView.ViewModel.Originator = null;
|
|
pSupportConceptView.ViewModel.Originator = updatedEmployee;
|
|
pSupportConceptView.popupedit_employee.Text = updatedEmployee.ToString();
|
|
}
|
|
|
|
if(BeWoApp.LoggedOnUser.Employee.EmployeeOid.Equals(updatedEmployee.EmployeeOid))
|
|
{
|
|
BeWoApp.LoggedOnUser.Employee = updatedEmployee;
|
|
}
|
|
|
|
pSupportConceptView.popupedit_employee.Text = updatedEmployee.ToString();
|
|
UpdateLoggedInEmployee(updatedEmployee.EmployeeOid);
|
|
UpdateSearchViewObjectList(pSupportConceptView.employeesearchview, updatedEmployee);
|
|
|
|
foreach(var item in pSupportConceptView.ViewModel.Tasks.VMList)
|
|
{
|
|
for(var i = 0; i < item.EmployeeList.Count; i++)
|
|
{
|
|
var prevDirty = item.IsDirty;
|
|
if(!item.EmployeeList[i].Employee.EmployeeOid.Equals(updatedEmployee.EmployeeOid))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
item.EmployeeList[i].Employee = updatedEmployee;
|
|
|
|
if(!prevDirty && item.IsDirty)
|
|
{
|
|
item.SetDirty(false);
|
|
}
|
|
}
|
|
}
|
|
|
|
pSupportConceptView.grid_tasks.RefreshData();
|
|
}
|
|
else if(typeof(T) == typeof(CompactPersonDC))
|
|
{
|
|
var updatedPerson = new CompactPersonDC();
|
|
|
|
ServiceFacade.DoCustomerServiceSync(s => updatedPerson = s.LoadPersonCompact((pUpdatedObject as CompactPersonDC).PersonOid));
|
|
|
|
((SupportConceptCostBearerRelVM) pSupportConceptView.tabcontrol_costbearers.SelectedItem).CostBearerContactPerson = null;
|
|
((SupportConceptCostBearerRelVM) pSupportConceptView.tabcontrol_costbearers.SelectedItem).CostBearerContactPerson = updatedPerson;
|
|
}
|
|
else if(typeof(T) == typeof(CompactCustomerDC))
|
|
{
|
|
var updatedCustomer = pSupportConceptView.ViewModel.Customer;
|
|
|
|
ServiceFacade.DoCustomerServiceSync(s => updatedCustomer = s.GetCompactCustomerDC(pSupportConceptView.ViewModel.Customer.CustomerOid));
|
|
|
|
pSupportConceptView.ViewModel.Customer = new CompactCustomerDC();
|
|
pSupportConceptView.ViewModel.Customer = updatedCustomer;
|
|
|
|
pSupportConceptView.popupedit_customer.Text = updatedCustomer.ToString();
|
|
|
|
UpdateSearchViewObjectList(pSupportConceptView.customersearchview, updatedCustomer);
|
|
}
|
|
}
|
|
|
|
private static void UpdateServiceRecordView<T>(ServiceRecordView2 pServiceRecordView, T pUpdatedObject) where T : IFilterableDC
|
|
{
|
|
if(typeof(T) == typeof(CompactCustomerDC))
|
|
{
|
|
var updatedCustomer = new CompactCustomerDC();
|
|
|
|
ServiceFacade.DoCustomerServiceSync(s => updatedCustomer = s.GetCompactCustomerDC((pUpdatedObject as CompactCustomerDC).CustomerOid));
|
|
|
|
foreach(var item in pServiceRecordView.ViewModel.VMList.Where(item => item.Customer.Equals(updatedCustomer)))
|
|
{
|
|
item.Customer = new CompactCustomerDC();
|
|
item.Customer = updatedCustomer;
|
|
}
|
|
|
|
pServiceRecordView.multiSupportConceptControl.UpdateSupportConcepts(updatedCustomer);
|
|
pServiceRecordView.multiSupportConceptControl.UpdateListBox();
|
|
|
|
UpdateSingleSupportConceptSelectionControl(pServiceRecordView.supportConceptSelectionControl, updatedCustomer);
|
|
}
|
|
else if(typeof(T) == typeof(CompactEmployeeDC))
|
|
{
|
|
var updatedEmployee = new CompactEmployeeDC();
|
|
ServiceFacade.DoEmployeeServiceSync(s => updatedEmployee = s.LoadCompactEmployee((pUpdatedObject as CompactEmployeeDC).EmployeeOid));
|
|
|
|
UpdateSearchViewObjectList(pServiceRecordView.employeeSearchView, updatedEmployee);
|
|
pServiceRecordView.popupedit_employee.Text = updatedEmployee.ToString();
|
|
|
|
UpdateLoggedInEmployee((pUpdatedObject as CompactEmployeeDC).EmployeeOid);
|
|
|
|
for(var i = 0; i < pServiceRecordView.multiEmployeeControl.SelectedEmployees.Count; i++)
|
|
{
|
|
if(!pServiceRecordView.multiEmployeeControl.SelectedEmployees[i].EmployeeOid.Equals(updatedEmployee.EmployeeOid))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
pServiceRecordView.multiEmployeeControl.SelectedEmployees[i] = new CompactEmployeeDC();
|
|
pServiceRecordView.multiEmployeeControl.SelectedEmployees[i] = updatedEmployee;
|
|
}
|
|
|
|
pServiceRecordView.multiEmployeeControl.UpdateListBox();
|
|
UpdateSearchViewObjectList(pServiceRecordView.multiEmployeeControl.employeesearchview, updatedEmployee);
|
|
|
|
//CB EINKOMMENTIEREN
|
|
//if (pServiceRecordView.ViewModel.BedarfsMedViewModel.NewVM.Employee != null && pServiceRecordView.ViewModel.BedarfsMedViewModel.NewVM.Employee.EmployeeOid.Equals(updatedEmployee.EmployeeOid))
|
|
//{
|
|
// pServiceRecordView.ViewModel.BedarfsMedViewModel.NewVM.Employee = updatedEmployee;
|
|
// pServiceRecordView.popupedit_employee_bedarfsmed.Text = updatedEmployee.ToString();
|
|
// UpdateSearchViewObjectList(pServiceRecordView.MedRecordEmployeeSearchView, updatedEmployee);
|
|
//}
|
|
|
|
//// TODO: Bedarfsmedikationen
|
|
//UpdateSearchViewObjectList(pServiceRecordView.MedRecordEmployeeSearchView, updatedEmployee);
|
|
|
|
// foreach (var item in ((BindingList<MedRecordVM>)pServiceRecordView.MedRecordGridControl.ItemsSource).Where(item => item.Employee.EmployeeOid.Equals(updatedEmployee.EmployeeOid)))
|
|
//{
|
|
// item.Employee = null;
|
|
// item.Employee = updatedEmployee;
|
|
//}
|
|
|
|
//pServiceRecordView.MedRecordGridControl.RefreshData();
|
|
|
|
if(pServiceRecordView.ViewModel.CustomerNodes.Count <= 0 || pServiceRecordView.ViewModel.ServiceRecordsForSelectedCustomer == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
foreach(var item in pServiceRecordView.ViewModel.ServiceRecordsForSelectedCustomer.Where(item => item.Employee.EmployeeOid.Equals(updatedEmployee.EmployeeOid)))
|
|
{
|
|
item.Employee = null;
|
|
item.Employee = updatedEmployee;
|
|
}
|
|
|
|
pServiceRecordView.ViewModel.RefreshServiceRecordsForSelectedTreeNode(false);
|
|
}
|
|
else if(typeof(T) == typeof(CompactOrganisationDC))
|
|
{
|
|
var updatedOrganisation = new CompactOrganisationDC();
|
|
|
|
ServiceFacade.DoCustomerServiceSync(s => updatedOrganisation = s.LoadOrganisationCompact((pUpdatedObject as CompactOrganisationDC).OrganisationOid));
|
|
|
|
foreach(var item in pServiceRecordView.ViewModel.VMList.Where(item => item.CostBearer.Equals(updatedOrganisation)))
|
|
{
|
|
item.CostBearer = new CompactOrganisationDC();
|
|
item.CostBearer = updatedOrganisation;
|
|
}
|
|
}
|
|
}
|
|
|
|
private static void UpdateTeamView<T>(TeamView pTeamView, T pUpdatedObject) where T : IFilterableDC
|
|
{
|
|
if(typeof(T) == typeof(CompactEmployeeDC))
|
|
{
|
|
var updatedEmployee = new CompactEmployeeDC();
|
|
|
|
ServiceFacade.DoEmployeeServiceSync(s => updatedEmployee = s.LoadCompactEmployee((pUpdatedObject as CompactEmployeeDC).EmployeeOid));
|
|
|
|
if(pTeamView.ViewModel.Leader.Equals(pUpdatedObject as CompactEmployeeDC))
|
|
{
|
|
pTeamView.ViewModel.Leader = null;
|
|
pTeamView.ViewModel.Leader = updatedEmployee;
|
|
}
|
|
|
|
if(pTeamView.ViewModel.Member.Contains(updatedEmployee))
|
|
{
|
|
var newMember = new ObservableSortCollection<CompactEmployeeDC>();
|
|
foreach(var item in pTeamView.ViewModel.Member)
|
|
{
|
|
newMember.Add(item.EmployeeOid.Equals(updatedEmployee.EmployeeOid) ? updatedEmployee : item);
|
|
}
|
|
|
|
pTeamView.ViewModel.Member = null;
|
|
pTeamView.ViewModel.Member = newMember;
|
|
}
|
|
|
|
if(pTeamView.ViewModel.Leader.EmployeeOid.Equals(updatedEmployee.EmployeeOid))
|
|
{
|
|
pTeamView.ViewModel.Leader = null;
|
|
pTeamView.ViewModel.Leader = updatedEmployee;
|
|
}
|
|
|
|
UpdateSearchViewObjectList(pTeamView.employeesearchview, updatedEmployee);
|
|
UpdateSearchViewObjectList(pTeamView.leaderSearchView, updatedEmployee);
|
|
UpdateLoggedInEmployee(updatedEmployee.EmployeeOid);
|
|
}
|
|
else if(typeof(T) == typeof(CompactTeamDC))
|
|
{
|
|
pTeamView.ReloadViewModel();
|
|
}
|
|
}
|
|
|
|
private static void UpdateUserView(UserView pUserView)
|
|
{
|
|
var updatedEmployee = new CompactEmployeeDC();
|
|
|
|
ServiceFacade.DoEmployeeServiceSync(s => updatedEmployee = s.LoadCompactEmployee(pUserView.ViewModel.Employee.EmployeeOid));
|
|
|
|
pUserView.ViewModel.Employee = null;
|
|
pUserView.ViewModel.Employee = updatedEmployee;
|
|
|
|
var myView = new BeWoView();
|
|
BeWoApp.MainControl.Views.TryGetValue(UIContext.User, out myView);
|
|
|
|
if(myView is UserNavigationView naviView)
|
|
{
|
|
if(naviView.ObjectList.Contains(updatedEmployee))
|
|
{
|
|
var copiedList = naviView.ObjectList as List<IFilterableDC>;
|
|
copiedList[copiedList.IndexOf(updatedEmployee)] = new CompactEmployeeDC();
|
|
copiedList[copiedList.IndexOf(updatedEmployee)] = updatedEmployee;
|
|
naviView.ObjectList = copiedList;
|
|
}
|
|
|
|
if(naviView.RecentList.Contains(updatedEmployee))
|
|
{
|
|
var copiedList = naviView.RecentList as List<IFilterableDC>;
|
|
copiedList[copiedList.IndexOf(updatedEmployee)] = new CompactEmployeeDC();
|
|
copiedList[copiedList.IndexOf(updatedEmployee)] = updatedEmployee;
|
|
naviView.RecentList = copiedList;
|
|
}
|
|
}
|
|
|
|
UpdateSearchViewObjectList(pUserView.employeeSearchView, updatedEmployee);
|
|
UpdateLoggedInEmployee(updatedEmployee.EmployeeOid);
|
|
}
|
|
|
|
private static void UpdateReportView<T>(ReportView pReportView, T pUpdatedObject) where T : IFilterableDC
|
|
{
|
|
pReportView.OpenViews.TryGetValue(pReportView.tabitem_maReport, out var aus);
|
|
pReportView.OpenViews.TryGetValue(pReportView.tabitem_flsReport, out var fls);
|
|
pReportView.OpenViews.TryGetValue(pReportView.tabitem_serviceOverview, out var serv);
|
|
|
|
if(typeof(T) == typeof(CompactCustomerDC))
|
|
{
|
|
var updatedCustomer = new CompactCustomerDC();
|
|
ServiceFacade.DoCustomerServiceSync(s => updatedCustomer = s.GetCompactCustomerDC((pUpdatedObject as CompactCustomerDC).CustomerOid));
|
|
|
|
if(fls is FLSReportView fls2)
|
|
{
|
|
if(fls2._SelectedCustomer != null)
|
|
{
|
|
if(fls2._LastSelectedCustomer != null)
|
|
{
|
|
if(fls2._LastSelectedCustomer.Equals(updatedCustomer))
|
|
{
|
|
fls2._LastSelectedCustomer = updatedCustomer;
|
|
}
|
|
}
|
|
|
|
fls2._SelectedCustomer = updatedCustomer;
|
|
fls2.popupedit_client.Text = updatedCustomer.ToString();
|
|
}
|
|
|
|
UpdateSearchViewObjectList(fls2.customerSearchView, updatedCustomer);
|
|
}
|
|
|
|
var serv2 = serv as ServicesReportView;
|
|
if(serv2 != null)
|
|
{
|
|
if(serv2.Customer != null)
|
|
{
|
|
serv2.Customer = updatedCustomer;
|
|
serv2.popupedit_customer.Text = updatedCustomer.ToString();
|
|
}
|
|
|
|
UpdateSearchViewObjectList(serv2.customersearchview, updatedCustomer);
|
|
}
|
|
}
|
|
|
|
if(typeof(T) == typeof(CompactEmployeeDC))
|
|
{
|
|
var updatedEmployee = new CompactEmployeeDC();
|
|
ServiceFacade.DoEmployeeServiceSync(s => updatedEmployee = s.LoadCompactEmployee((pUpdatedObject as CompactEmployeeDC).EmployeeOid));
|
|
|
|
if(aus is AuslastungReportView aus2)
|
|
{
|
|
if(aus2._SelectedEmployee != null)
|
|
{
|
|
if(aus2._SelectedEmployee != null)
|
|
{
|
|
if(aus2._SelectedEmployee.EmployeeOid.Equals(updatedEmployee.EmployeeOid))
|
|
{
|
|
aus2._SelectedEmployee = updatedEmployee;
|
|
}
|
|
}
|
|
|
|
if(aus2._LastSelectedEmployee != null)
|
|
{
|
|
if(aus2._LastSelectedEmployee.EmployeeOid.Equals(updatedEmployee.EmployeeOid))
|
|
{
|
|
aus2._LastSelectedEmployee = updatedEmployee;
|
|
}
|
|
}
|
|
|
|
if(aus2._SelectedEmployee != null)
|
|
{
|
|
aus2.popupedit_employee.Text = updatedEmployee.ToString();
|
|
}
|
|
}
|
|
|
|
UpdateSearchViewObjectList(aus2.employeesearchview, updatedEmployee);
|
|
}
|
|
|
|
if(fls is FLSReportView fls2)
|
|
{
|
|
if(fls2._SelectedEmployee != null)
|
|
{
|
|
if(fls2._LastSelectedEmployee != null)
|
|
{
|
|
if(fls2._LastSelectedEmployee.EmployeeOid.Equals(updatedEmployee.EmployeeOid))
|
|
{
|
|
fls2._LastSelectedEmployee = updatedEmployee;
|
|
}
|
|
}
|
|
|
|
fls2._SelectedEmployee = updatedEmployee;
|
|
fls2.popupedit_employee.Text = updatedEmployee.ToString();
|
|
}
|
|
|
|
UpdateSearchViewObjectList(fls2.employeeSearchView, updatedEmployee);
|
|
}
|
|
|
|
if(serv is ServicesReportView serv2)
|
|
{
|
|
if(serv2.Employee != null)
|
|
{
|
|
serv2.Employee = updatedEmployee;
|
|
serv2.popupedit_employee.Text = updatedEmployee.ToString();
|
|
}
|
|
|
|
UpdateSearchViewObjectList(serv2.employeesearchview, updatedEmployee);
|
|
}
|
|
|
|
UpdateLoggedInEmployee(updatedEmployee.EmployeeOid);
|
|
}
|
|
|
|
if(typeof(T) == typeof(CompactOrganisationDC))
|
|
{
|
|
var updatedOrganisation = new CompactOrganisationDC();
|
|
ServiceFacade.DoCustomerServiceSync(s => updatedOrganisation = s.LoadOrganisationCompact((pUpdatedObject as CompactOrganisationDC).OrganisationOid));
|
|
|
|
if(serv is ServicesReportView serv2)
|
|
{
|
|
if(serv2.Organisation != null)
|
|
{
|
|
serv2.Organisation = updatedOrganisation;
|
|
serv2.popupedit_costbearer.Text = updatedOrganisation.ToString();
|
|
}
|
|
|
|
UpdateSearchViewObjectList(serv2.organisationsearchview, updatedOrganisation);
|
|
}
|
|
}
|
|
|
|
if(typeof(T) == typeof(CompactTeamDC))
|
|
{
|
|
var updatedTeam = new CompactTeamDC();
|
|
ServiceFacade.DoEmployeeServiceSync(s => updatedTeam = s.LoadCompactTeam((pUpdatedObject as CompactTeamDC).TeamOid));
|
|
|
|
if(aus is AuslastungReportView aus2)
|
|
{
|
|
if(aus2._SelectedTeam != null)
|
|
{
|
|
if(aus2._SelectedTeam.Equals(updatedTeam))
|
|
{
|
|
aus2._SelectedTeam = updatedTeam;
|
|
}
|
|
|
|
if(aus2._LastSelectedTeam != null)
|
|
{
|
|
if(aus2._LastSelectedTeam.Equals(updatedTeam))
|
|
{
|
|
aus2._LastSelectedTeam = updatedTeam;
|
|
}
|
|
}
|
|
|
|
aus2.popupedit_team.Text = updatedTeam.ToString();
|
|
}
|
|
|
|
UpdateSearchViewObjectList(aus2.teamsearchview, updatedTeam);
|
|
}
|
|
}
|
|
}
|
|
|
|
private static void UpdatePersonView<T>(PersonView pPersonView, T pUpdatedObject) where T : IFilterableDC
|
|
{
|
|
if(typeof(T) == typeof(CompactOrganisationDC))
|
|
{
|
|
var gridRelations = (GridControl)pPersonView.rootGrid.Resources["grid_Relations"];
|
|
var updatedOrganisation = new CompactOrganisationDC();
|
|
|
|
ServiceFacade.DoCustomerServiceSync(s => updatedOrganisation = s.LoadOrganisationCompact((pUpdatedObject as CompactOrganisationDC).OrganisationOid));
|
|
|
|
if(!string.IsNullOrWhiteSpace(pPersonView.popupedit_organisation.Text) && pPersonView.popupedit_organisation.Text.Equals((pUpdatedObject as CompactOrganisationDC).Name))
|
|
{
|
|
pPersonView.popupedit_organisation.Text = updatedOrganisation.ToString();
|
|
}
|
|
|
|
foreach(var item in pPersonView.ViewModel.OrganisationRelations.VMList.Where(item => item.Organisation.OrganisationOid == updatedOrganisation.OrganisationOid))
|
|
{
|
|
item.OrganisationString = updatedOrganisation.Name;
|
|
}
|
|
|
|
gridRelations.RefreshData();
|
|
|
|
if(pPersonView.ViewModel.OrganisationRelations.NewVM?.Organisation != null)
|
|
{
|
|
if(pPersonView.ViewModel.OrganisationRelations.NewVM.Organisation.OrganisationOid.Equals(updatedOrganisation.OrganisationOid))
|
|
{
|
|
pPersonView.ViewModel.OrganisationRelations.NewVM.OrganisationString = updatedOrganisation.Name;
|
|
}
|
|
}
|
|
|
|
UpdateSearchViewObjectList(pPersonView.organisationSearchView, updatedOrganisation);
|
|
}
|
|
else if(typeof(T) == typeof(CompactPersonDC))
|
|
{
|
|
pPersonView.ReloadViewModel();
|
|
}
|
|
else if(typeof(T) == typeof(CompactCustomerDC))
|
|
{
|
|
pPersonView.UpdateCustomerList();
|
|
}
|
|
}
|
|
|
|
private static void UpdateAdditionalServiceView<T>(AdditionalServiceView pAdditionalServiceView, T pUpdatedObject) where T : IFilterableDC
|
|
{
|
|
if(typeof(T) == typeof(CompactEmployeeDC))
|
|
{
|
|
var updatedEmployee = new CompactEmployeeDC();
|
|
ServiceFacade.DoEmployeeServiceSync(s => updatedEmployee = s.LoadCompactEmployee((pUpdatedObject as CompactEmployeeDC).EmployeeOid));
|
|
|
|
UpdateLoggedInEmployee((pUpdatedObject as CompactEmployeeDC).EmployeeOid);
|
|
|
|
for(var i = 0; i < pAdditionalServiceView.MultiEmployeeControlAddServ.SelectedEmployees.Count; i++)
|
|
{
|
|
if(!pAdditionalServiceView.MultiEmployeeControlAddServ.SelectedEmployees[i].EmployeeOid.Equals(updatedEmployee.EmployeeOid))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
pAdditionalServiceView.MultiEmployeeControlAddServ.SelectedEmployees[i] = new CompactEmployeeDC();
|
|
pAdditionalServiceView.MultiEmployeeControlAddServ.SelectedEmployees[i] = updatedEmployee;
|
|
}
|
|
|
|
UpdateSearchViewObjectList(pAdditionalServiceView.MultiEmployeeControlAddServ.employeesearchview, updatedEmployee);
|
|
}
|
|
else if(typeof(T) == typeof(CompactCustomerDC))
|
|
{
|
|
var updatedCustomer = new CompactCustomerDC();
|
|
|
|
ServiceFacade.DoCustomerServiceSync(s => updatedCustomer = s.GetCompactCustomerDC((pUpdatedObject as CompactCustomerDC).CustomerOid));
|
|
|
|
pAdditionalServiceView.MultiAddServGroupOfPeopleSelectionControl.UpdateCustomers(updatedCustomer);
|
|
|
|
foreach(var item in pAdditionalServiceView.AdditionalServiceBookings.VMList)
|
|
{
|
|
var newCustomerList = item.CustomerOidDict.ToDictionary(element => element.Key.Equals(updatedCustomer.CustomerOid) ? updatedCustomer.CustomerOid : element.Key, element => element.Value);
|
|
item.CustomerOidDict = newCustomerList;
|
|
}
|
|
|
|
var containsUpdatedCustomer = false;
|
|
|
|
foreach(var element in from item in pAdditionalServiceView.AdditionalServiceBookings.VMList from element in item.CustomerOidDict where element.Key.Equals(updatedCustomer.CustomerOid) select element)
|
|
{
|
|
containsUpdatedCustomer = true;
|
|
}
|
|
|
|
if(!containsUpdatedCustomer)
|
|
{
|
|
return;
|
|
}
|
|
|
|
pAdditionalServiceView.UpdateTeilnahmeGrid();
|
|
}
|
|
}
|
|
|
|
|
|
private static void UpdateSingleSupportConceptSelectionControl(SingleSupportConceptSelectionControl control, CompactCustomerDC updatedCustomer)
|
|
{
|
|
if (control.SelectedItem.SupportConceptTreeNodeDC == null)
|
|
return;
|
|
|
|
var supConSelConSeletedItem = control.SelectedItem;
|
|
|
|
if (supConSelConSeletedItem != null)
|
|
{
|
|
if (supConSelConSeletedItem.SupportConceptTreeNodeDC.Customer.Equals(updatedCustomer))
|
|
supConSelConSeletedItem.SupportConceptTreeNodeDC.Customer = updatedCustomer;
|
|
if (supConSelConSeletedItem.SupportConceptTreeNodeDC.SupportConcept.Customer.Equals(updatedCustomer))
|
|
supConSelConSeletedItem.SupportConceptTreeNodeDC.SupportConcept.Customer = updatedCustomer;
|
|
}
|
|
|
|
var newList = control.SearchView.ObjectList;
|
|
|
|
foreach (var concept in newList.Where(concept => concept.Customer.Equals(updatedCustomer)))
|
|
concept.Customer = updatedCustomer;
|
|
|
|
control.SearchView.ObjectList = newList;
|
|
control.SetSelectedSupportConceptOid(control.SelectedItem.SupportConceptTreeNodeDC.SupportConcept.SupportConceptOid);
|
|
control.UpdateControls();
|
|
control.customerText.Text = updatedCustomer.ToString();
|
|
}
|
|
|
|
private static void UpdateLoggedInEmployee(long employeeOid)
|
|
{
|
|
if (employeeOid != BeWoApp.LoggedOnUser.Employee.EmployeeOid)
|
|
return;
|
|
|
|
ServiceFacade.DoEmployeeServiceSync(s => BeWoApp.LoggedOnUser.Employee = s.LoadCompactEmployee(BeWoApp.LoggedOnUser.Employee.EmployeeOid));
|
|
|
|
if (BeWoApp.MainControl.HomeButtonPanel == null)
|
|
return;
|
|
|
|
//BeWoApp.MainControl.HomeView.txtHeader.Text = BeWoApp.LoggedOnUser.Employee.ToString();
|
|
}
|
|
|
|
public static void WriteExcelFile(string content, string path)
|
|
{
|
|
using (var uFileStream = File.Create(path))
|
|
using (var uSw = new StreamWriter(uFileStream))
|
|
uSw.Write(content);
|
|
|
|
System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo(path));
|
|
}
|
|
|
|
public static void WriteFile(string content, string path)
|
|
{
|
|
using (var uFileStream = File.Create(path))
|
|
using (var uSw = new StreamWriter(uFileStream, Encoding.GetEncoding(1252)))
|
|
uSw.Write(content);
|
|
|
|
if (MessageBox.Show("Möchten Sie die Datei öffnen?", "Datei öffnen", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
|
|
{
|
|
System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo(path));
|
|
}
|
|
}
|
|
|
|
//public static void Richloaded(object sender, RoutedEventArgs e)
|
|
//{
|
|
// var richEditControl1 = (RichEditControl) sender;
|
|
// richEditControl1.ActiveViewType = RichEditViewType.Simple;
|
|
// richEditControl1.ShowBorder = false;
|
|
// richEditControl1.ShowHoverMenu = false;
|
|
// richEditControl1.CornerBoxVisibility = Visibility.Visible;
|
|
// richEditControl1.VerticalRulerVisibility = Visibility.Collapsed;
|
|
// richEditControl1.HorizontalRulerVisibility = Visibility.Collapsed;
|
|
// richEditControl1.Language = System.Windows.Markup.XmlLanguage.GetLanguage("de-DE");
|
|
//}
|
|
|
|
//public static void Popupmenu(object sender, PopupMenuShowingEventArgs e)
|
|
//{
|
|
// foreach (var item in e.Menu.ItemLinks.Where(x => x.ActualIsVisible).Where(item => !(item is BarItemLinkSeparator)))
|
|
// {
|
|
// var btn = (BarButtonItemLink)item;
|
|
|
|
// if (btn.ActualContent.Equals("Lösche Zeile") ||
|
|
// btn.ActualContent.Equals("Lösche Spalte") ||
|
|
// btn.ActualContent.Equals("Lösche Zelle...") ||
|
|
// btn.ActualContent.Equals("Zellen verbinden") ||
|
|
// btn.ActualContent.Equals("Teile Zellen...") ||
|
|
// btn.ActualContent.Equals("Zellausrichtung") ||
|
|
// btn.ActualContent.Equals("AutoAnpassen") ||
|
|
// btn.ActualContent.Equals("Tabelleneigenschaften...") ||
|
|
// btn.ActualContent.Equals("Einzug erhöhen") ||
|
|
// btn.ActualContent.Equals("Einzug verringern") ||
|
|
// btn.ActualContent.Equals("Schriftart") ||
|
|
// btn.ActualContent.Equals("Absatz") ||
|
|
// btn.ActualContent.Equals("Nummerierun") ||
|
|
// btn.ActualContent.Equals("Lesezeichen...") ||
|
|
// btn.ActualContent.Equals("Hyperlink...") ||
|
|
// btn.ActualContent.Equals("Zeilenumbruch") ||
|
|
// btn.ActualContent.Equals("Eine Ebene nach vorne") ||
|
|
// btn.ActualContent.Equals("Eine Ebene nach hinten") ||
|
|
// btn.ActualContent.Equals("Layout"))
|
|
// item.IsVisible = false;
|
|
// }
|
|
//}
|
|
|
|
public static void OpenMailClient(string mailAddress, string subject = "")
|
|
{
|
|
var mailCmd = string.Format(@"mailto:{0}?subject={1}", mailAddress, subject);
|
|
|
|
System.Diagnostics.Process.Start(mailCmd);
|
|
}
|
|
|
|
public static bool ValidateServiceRecordVM(ServiceRecordVM vm, SupportConceptStatisticsDC statistics, FlatSupportConceptTreeNodeDC node, bool withoutClient, CompactEmployeeDC selectedEmployee, List<long> employeeOids, List<long> cb2ScOids)
|
|
{
|
|
var lValid = true;
|
|
|
|
if(vm.ServiceDescription == null)
|
|
{
|
|
MessageBox.Show("Bitte wählen Sie eine Leistung aus. Sollten keine Leistungen für die gewählte Kategorie verfügbar sein, müssen diese zunächst in der Verwaltung angelegt werden.", "Speichern", MessageBoxButton.OK, MessageBoxImage.Information);
|
|
return false;
|
|
}
|
|
if(vm.GoalTree != null && vm.GoalTree.Count > 0 && (cb2ScOids == null || cb2ScOids.Count < 2))
|
|
{
|
|
if(vm.SelectedGoals.Count == 0 && MessageBox.Show("Es wurde kein Ziel zugeordnet. Sind Sie sicher, dass Sie speichern möchten?", "Speichern", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.No)
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
CompactSupportConceptDC scDc = null;
|
|
CompactOrganisationDC cbDc = null;
|
|
SupportConceptCostBearerRelDC relDc = null;
|
|
|
|
if (node != null && node.SupportConceptTreeNodeDC != null)
|
|
{
|
|
scDc = node.SupportConceptTreeNodeDC.SupportConcept;
|
|
cbDc = node.SupportConceptTreeNodeDC.CostBearer;
|
|
relDc = node.SupportConceptTreeNodeDC.SupportConceptCostBearerRelDC;
|
|
}
|
|
|
|
var dc = vm.CommitToDataContract();
|
|
dc.Employee = selectedEmployee ?? BeWoApp.LoggedOnUser.Employee;
|
|
dc.SupportConcept = scDc;
|
|
dc.CostBearer = cbDc;
|
|
|
|
if (relDc != null)
|
|
{
|
|
dc.CostBearer2SupportConceptOid = relDc.CostBearer2SupportConceptOid;
|
|
}
|
|
|
|
var validationResults = new List<ServiceRecordValidationResultDC>();
|
|
|
|
var maxdays = BeWoApp.AppSettings.MaxDaysEditServiceRecordsAllowed;
|
|
|
|
if (withoutClient && BeWoApp.AppSettings.MaxDaysEditServiceRecordsAllowed <= 0)
|
|
{
|
|
maxdays = -1;
|
|
}
|
|
|
|
if (BeWoApp.LoggedOnUser.HasRight(UserRightType.ServiceRecord_AllowEditAfterMaxDaysInNextMonth))
|
|
{
|
|
maxdays = -1;
|
|
}
|
|
|
|
ServiceFacade.DoOperationsServiceSync(o => validationResults = o.ValidateServiceRecord(dc, statistics, maxdays, employeeOids, cb2ScOids));
|
|
|
|
if (validationResults.Count > 0)
|
|
{
|
|
var exitLoop = false;
|
|
|
|
foreach (var result in validationResults)
|
|
{
|
|
switch (result.ResultType)
|
|
{
|
|
case ServiceRecordValidationResult.OutsideOfSupportConcept:
|
|
MessageBox.Show($"Das gewählte Datum '{vm.StartDate.ToShortDateString()}' liegt außerhalb des Zeitraums des gewählten Hilfeplans ({relDc.DateRangeString}).\nDas Speichern ist nicht möglich.", "Speichern", MessageBoxButton.OK, MessageBoxImage.Information);
|
|
lValid = false;
|
|
exitLoop = true;
|
|
break;
|
|
case ServiceRecordValidationResult.OutOfEditLimit:
|
|
MessageBox.Show($"Sie können keine neuen Leistungen für den {vm.StartDate.ToShortDateString()} dokumentieren, da bereits der {BeWoApp.AppSettings.MaxDaysEditServiceRecordsAllowed}. des nachfolgenden Monats überschritten ist.", "Speichern", MessageBoxButton.OK, MessageBoxImage.Information);
|
|
lValid = false;
|
|
exitLoop = true;
|
|
break;
|
|
case ServiceRecordValidationResult.FristAbgelaufen:
|
|
if (!BeWoApp.LoggedOnUser.HasRight(UserRightType.ServiceRecordAllowEditAfterMindays))
|
|
{
|
|
if (BeWoApp.AppSettings.AnzTageZeiterfassErfolgt == 1)
|
|
{
|
|
MessageBox.Show($"Sie können keine neuen Leistungen für den {vm.StartDate.ToShortDateString()} dokumentieren, da die Zeiterfassung innerhalb von einem Tag erfolgen muss.", "Speichern", MessageBoxButton.OK, MessageBoxImage.Information);
|
|
}
|
|
else
|
|
{
|
|
MessageBox.Show($"Sie können keine neuen Leistungen für den {vm.StartDate.ToShortDateString()} dokumentieren, da die Zeiterfassung innerhalb von {BeWoApp.AppSettings.AnzTageZeiterfassErfolgt} Tagen erfolgen muss.", "Speichern", MessageBoxButton.OK, MessageBoxImage.Information);
|
|
}
|
|
|
|
lValid = false;
|
|
exitLoop = true;
|
|
}
|
|
break;
|
|
case ServiceRecordValidationResult.Error:
|
|
MessageBox.Show("Beim Speichern ist ein Fehler aufgetreten.\nDas Speichern ist nicht möglich.", "Speichern nicht möglich", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
lValid = false;
|
|
exitLoop = true;
|
|
break;
|
|
|
|
case ServiceRecordValidationResult.ServiceRecordOverlapping:
|
|
if (!BeWoApp.LoggedOnUser.HasRight(UserRightType.ServiceRecord_AllowCreateOverlappingFLS))
|
|
{
|
|
MessageBox.Show($"An dem gewählten Datum '{vm.StartDate.ToShortDateString()} {vm.StartDate.ToShortTimeString()}' existiert bereits ein Eintrag ({result.Message} bei " + BS.Shared.Translation.Translator.Translate("Klient/in") + " " + result.CustomerName + ") .\nSpeichern nicht möglich.", "Speichern nicht möglich", MessageBoxButton.OK, MessageBoxImage.Information);
|
|
lValid = false;
|
|
}
|
|
else if (MessageBox.Show($"An dem gewählten Datum '{vm.StartDate.ToShortDateString()} {vm.StartDate.ToShortTimeString()}' existiert bereits ein Eintrag ({result.Message} bei " + BS.Shared.Translation.Translator.Translate("Klient/in") + " " + result.CustomerName + ").\nMöchten Sie trotzdem speichern?", "Speichern", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.No)
|
|
{
|
|
lValid = false;
|
|
exitLoop = true;
|
|
}
|
|
break;
|
|
case ServiceRecordValidationResult.EmployeeOverlapping:
|
|
|
|
if (!BeWoApp.LoggedOnUser.HasRight(UserRightType.ServiceRecord_AllowCreateOverlappingFLSForEmployee))
|
|
{
|
|
MessageBox.Show($"An dem gewählten Datum '{vm.StartDate.ToShortDateString()} {vm.StartDate.ToShortTimeString()}' existiert bereits ein Eintrag von {result.EmployeeName}\n({result.Message}).\nSpeichern nicht möglich.", "Speichern nicht möglich", MessageBoxButton.OK, MessageBoxImage.Information);
|
|
lValid = false;
|
|
}
|
|
else if (MessageBox.Show($"An dem gewählten Datum '{vm.StartDate.ToShortDateString()} {vm.StartDate.ToShortTimeString()}' existiert bereits ein Eintrag von {result.EmployeeName}\n({result.Message}).\n\nMöchten Sie trotzdem speichern?", "Speichern", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.No)
|
|
{
|
|
lValid = false;
|
|
exitLoop = true;
|
|
}
|
|
break;
|
|
case ServiceRecordValidationResult.ApprovedFLSOverspending:
|
|
var klient = "diesen Hilfeplan";
|
|
if (!string.IsNullOrEmpty(result.CustomerName))
|
|
{
|
|
klient = BS.Shared.Translation.Translator.Translate("Klient/in") + " " + result.CustomerName;
|
|
}
|
|
|
|
var msg = string.Format("Die für {2} genehmigten FLS ({0:N}) werden mit diesem Eintrag überschritten. ({1:N}).", result.ApprovedHours, result.HoursNew, klient);
|
|
|
|
if (!BeWoApp.LoggedOnUser.HasRight(UserRightType.ServiceRecord_AllowCreateMoreFLSThanApproved))
|
|
{
|
|
MessageBox.Show(msg + ").\nSpeichern nicht möglich.", "Speichern nicht möglich", MessageBoxButton.OK, MessageBoxImage.Information);
|
|
lValid = false;
|
|
}
|
|
else if (MessageBox.Show(msg + ").\nMöchten Sie trotzdem speichern?", "Speichern", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.No)
|
|
{
|
|
lValid = false;
|
|
exitLoop = true;
|
|
}
|
|
break;
|
|
case ServiceRecordValidationResult.SettlementInvoiceAlreadyExisting:
|
|
var klient2 = "diesen Hilfeplan";
|
|
if (!string.IsNullOrEmpty(result.CustomerName))
|
|
{
|
|
klient2 = BS.Shared.Translation.Translator.Translate("Klient/in") + " " + result.CustomerName;
|
|
}
|
|
if (!BeWoApp.LoggedOnUser.HasRight(UserRightType.BookServiceRecordAfterSettlementInvoice))
|
|
{
|
|
MessageBox.Show($"Sie können den Eintrag nicht bearbeiten, da bereits eine Spitzabrechnung für {klient2} erstellt wurde.", "Speichern nicht möglich", MessageBoxButton.OK, MessageBoxImage.Warning);
|
|
lValid = false;
|
|
}
|
|
else if (MessageBox.Show($"Es existiert bereits eine Spitzabrechnung für {klient2}. Um diesen Eintrag zu berücksichtigen, muss eventuell eine neue Spitzabrechnung erstellt werden.\nMöchten Sie trotzdem speichern?", "Speichern", MessageBoxButton.YesNo, MessageBoxImage.Warning).Equals(MessageBoxResult.No))
|
|
{
|
|
lValid = false;
|
|
exitLoop = true;
|
|
}
|
|
break;
|
|
case ServiceRecordValidationResult.Custom:
|
|
if (result.Allow)
|
|
{
|
|
if (MessageBox.Show(result.Message, "Speichern", MessageBoxButton.YesNo, MessageBoxImage.Warning).Equals(MessageBoxResult.No))
|
|
{
|
|
lValid = false;
|
|
exitLoop = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
MessageBox.Show(result.Message, "Speichern nicht möglich", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
lValid = false;
|
|
exitLoop = true;
|
|
}
|
|
break;
|
|
case ServiceRecordValidationResult.SignatureExists:
|
|
if(MessageBox.Show(result.Message, "Speichern", MessageBoxButton.YesNo, MessageBoxImage.Warning).Equals(MessageBoxResult.No))
|
|
{
|
|
lValid = false;
|
|
exitLoop = true;
|
|
}
|
|
break;
|
|
}
|
|
|
|
if (exitLoop)
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
return lValid;
|
|
}
|
|
|
|
public static bool ValidateServiceRecordDeletion(ServiceRecordVM vm)
|
|
{
|
|
var lValid = true;
|
|
|
|
|
|
var dc = vm.CommitToDataContract();
|
|
var emp = BeWoApp.LoggedOnUser.Employee;
|
|
|
|
|
|
var r = new List<ServiceRecordValidationResultDC>();
|
|
|
|
|
|
ServiceFacade.DoOperationsServiceSync(o => r = o.ValidateServiceRecordDeletion(dc, emp.EmployeeOid));
|
|
|
|
|
|
if (r.Count > 0)
|
|
{
|
|
var exitLoop = false;
|
|
|
|
foreach (var result in r)
|
|
{
|
|
switch (result.ResultType)
|
|
{
|
|
|
|
case ServiceRecordValidationResult.Custom:
|
|
if (result.Allow)
|
|
{
|
|
if (MessageBox.Show(result.Message, "Löschen", MessageBoxButton.YesNo, MessageBoxImage.Warning).Equals(MessageBoxResult.No))
|
|
{
|
|
lValid = false;
|
|
exitLoop = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
MessageBox.Show(result.Message, "Löschen nicht möglich", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
lValid = false;
|
|
exitLoop = true;
|
|
}
|
|
|
|
break;
|
|
}
|
|
|
|
if (exitLoop) break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
var msg = vm.GroupOid != null
|
|
? "ACHTUNG, wenn Sie fortfahren, löschen Sie die gesamte Gruppenbuchung.\nWenn Sie nur einzelne " + BS.Shared.Translation.Translator.Translate("Klienten") + " aus der Gruppe entfernen möchten,\neditieren Sie die Gruppe und entfernen den Klienten aus der Liste aller Hilfepläne.\nSind Sie sicher, dass Sie den gesamten Gruppeneintrag löschen möchten?"
|
|
: "Sind Sie sicher, dass Sie den gewählten Eintrag löschen möchten?";
|
|
|
|
if (MessageBox.Show(msg, "Eintrag löschen", MessageBoxButton.YesNo, MessageBoxImage.Warning) !=
|
|
MessageBoxResult.Yes)
|
|
{
|
|
lValid = false;
|
|
}
|
|
}
|
|
|
|
return lValid;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Erzeugt einen Report mit Hilfe des ReportServices und zeigt ihn in einem BeWoWindow
|
|
/// </summary>
|
|
/// <param name="title">Titel des Fensters</param>
|
|
/// <param name="variablen">Dictionary mit Variablen für das ReportObject</param>
|
|
/// <param name="reportType">Der Typ des Reports (z.B. KalenderMonatsformatReport)</param>
|
|
public static void ShowReport(string title, Dictionary<string, object> variablen, ReportEnum reportType)
|
|
{
|
|
switch (reportType)
|
|
{
|
|
case ReportEnum.KalenderMonatsReportEnum:
|
|
var appointmentIds = (List<long>)variablen["appointmentOidListe"];
|
|
var selectedDays = (List<DateTime>)variablen["datesList"];
|
|
var employeeOid = Convert.ToInt64(variablen["employeeOid"]);
|
|
var serienTermine = (List<SchedulerAppointmentDC>)variablen["serienTermine"];
|
|
var mehrtaegigeTermine = (List<SchedulerAppointmentDC>)variablen["mehrtaegigeTermine"];
|
|
var nullableAbsenceTimeOids = (List<long?>) variablen["absenceTimeOids"] ?? new List<long?>();
|
|
|
|
var absenceTimeOids = new List<long>();
|
|
foreach(var absenceTimeOid in nullableAbsenceTimeOids)
|
|
{
|
|
if(absenceTimeOid.HasValue)
|
|
{
|
|
absenceTimeOids.AddIfNotIn(absenceTimeOid.Value);
|
|
}
|
|
}
|
|
|
|
ServiceFacade.DoReportServiceAsync(strom => strom.CreateKalenderReportWithAbsenceTimes(appointmentIds, employeeOid, serienTermine, selectedDays, mehrtaegigeTermine, absenceTimeOids), ms => BeWoApp.MainControl.Dispatch(() => ShowReportWindow(ms, title)));
|
|
|
|
break;
|
|
case ReportEnum.KassenbuchReportEnum:
|
|
var zeitraum = (DateTime) variablen["zeitraum"];
|
|
var objectOid = Convert.ToInt64(variablen["objectoid"]);
|
|
var objectTid = (TableID) Enum.Parse(typeof (TableID), variablen["objecttid"].ToString());
|
|
var endzeitraum = (DateTime)variablen["endzeitraum"];
|
|
|
|
var kasse = (BargeldkassenDC) variablen["bargeldkasse"];
|
|
|
|
ServiceFacade.DoReportServiceAsync(strom => strom.CreateKassenbuchReportImZeitraum(zeitraum,endzeitraum, kasse, objectOid, objectTid), ms => BeWoApp.MainControl.Dispatch(() => ShowReportWindow(ms, title)));
|
|
|
|
break;
|
|
case ReportEnum.ZahlungsbelegEnum:
|
|
var transaktion = (BargeldtransaktionDC) variablen["transaktion"];
|
|
var objectOid2 = Convert.ToInt64(variablen["objectoid"]);
|
|
var objectTid2 = (TableID) Enum.Parse(typeof(TableID), variablen["objecttid"].ToString());
|
|
|
|
ServiceFacade.DoReportServiceAsync(strom => strom.CreateKassenbelegReport(transaktion, objectOid2, objectTid2), ms => BeWoApp.MainControl.Dispatch(() => ShowReportWindow(ms, title)));
|
|
|
|
break;
|
|
}
|
|
}
|
|
|
|
public static void ShowReportWindow(MemoryStream ms, string title, DocumentPreviewControl documentPreviewControl = null)
|
|
{
|
|
var report = new XtraReport();
|
|
|
|
try
|
|
{
|
|
report.PrintingSystem.LoadDocument(ms);
|
|
}
|
|
catch(Exception)
|
|
{
|
|
var msg = Encoding.ASCII.GetString(ms.ToArray());
|
|
|
|
MessageBox.Show("Beim Öffnen der Druckvorschau ist leider ein Fehler aufgetreten!\n\n" + msg, "Fehler", MessageBoxButton.OK, MessageBoxImage.Exclamation);
|
|
}
|
|
|
|
ms.Close();
|
|
ms.Dispose();
|
|
|
|
//report.DefaultPrinterSettingsUsing.UseLandscape = BeWoApp.AppSettings.PrinterSettingsUseLandscape;
|
|
//report.DefaultPrinterSettingsUsing.UseMargins = BeWoApp.AppSettings.PrinterSettingsUseMargins;
|
|
//report.DefaultPrinterSettingsUsing.UsePaperKind = BeWoApp.AppSettings.PrinterSettingsUsePaperKind;
|
|
|
|
BeWoWindow window = null;
|
|
|
|
if(documentPreviewControl == null)
|
|
{
|
|
//ReportPrintTool tool = new ReportPrintTool(report);
|
|
//tool.ShowRibbonPreviewDialog(UserLookAndFeel.Default);
|
|
documentPreviewControl = new DocumentPreviewControl {CommandBarStyle = CommandBarStyle.Bars};
|
|
documentPreviewControl.Loaded += CustomizeReportPreviewToolBar;
|
|
documentPreviewControl.SnapsToDevicePixels = true;
|
|
|
|
window = new BeWoWindow { GroupBoxContent = documentPreviewControl, Owner = BeWoApp.CurrentBeWo.MainWindow };
|
|
|
|
ThemeManager.SetTheme(window, Theme.Office2010Black);
|
|
}
|
|
|
|
ThemeManager.SetTheme(documentPreviewControl, Theme.Office2010Black);
|
|
|
|
documentPreviewControl.DocumentSource = report;
|
|
|
|
if(window != null)
|
|
{
|
|
window.rootGroupBox.Header = string.IsNullOrEmpty(title) ? "Druckvorschau" : title;
|
|
window.Title = "Druckvorschau";
|
|
window.Show();
|
|
}
|
|
|
|
documentPreviewControl.Visibility = Visibility.Visible;
|
|
|
|
BeWoApp.MainControl.EndWaiting();
|
|
}
|
|
|
|
public static PasswortSecurityStrength CheckPasswordSecurity(string paswd)
|
|
{
|
|
PasswortSicherheit pwS = new PasswortSicherheit();
|
|
|
|
return pwS.PasswortSecurityStaerke(paswd);
|
|
}
|
|
|
|
public static void ShowImageForm(ImageSource source)
|
|
{
|
|
try
|
|
{
|
|
using (var form = new Form())
|
|
{
|
|
var imgg = new Image {Source = source};
|
|
|
|
var encoder = new BmpBitmapEncoder();
|
|
|
|
using (var ms = new MemoryStream())
|
|
{
|
|
encoder.Frames.Add(BitmapFrame.Create((BitmapSource)imgg.Source));
|
|
encoder.Save(ms);
|
|
|
|
var img = System.Drawing.Image.FromStream(ms);
|
|
|
|
using (var imgbit = new Bitmap(img))
|
|
{
|
|
form.StartPosition = FormStartPosition.CenterScreen;
|
|
form.ClientSize = imgbit.Size;
|
|
form.FormBorderStyle = FormBorderStyle.Sizable;
|
|
form.ShowIcon = false;
|
|
using (var pb = new PictureBox())
|
|
{
|
|
pb.Dock = DockStyle.Fill;
|
|
pb.Image = imgbit;
|
|
|
|
pb.SizeMode = PictureBoxSizeMode.Zoom;
|
|
|
|
form.Controls.Add(pb);
|
|
form.ShowDialog();
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch (Exception edf)
|
|
{
|
|
MessageBox.Show("Unbekannter Fehler: " + edf.Message + "\n" + edf.StackTrace, "Fehler", MessageBoxButton.OK);
|
|
}
|
|
}
|
|
|
|
public static void CreateZeiterfassung(DateTime start, DateTime end, List<CompactCustomerDC> customer, List<CompactEmployeeDC> employees, String notice, Appointment appointment, Action schedulerCallback)
|
|
{
|
|
ChatDokumentationsView newView;
|
|
|
|
if (customer.Count == 0)
|
|
{
|
|
// Normale Buchung
|
|
newView = new ChatDokumentationsView(notice, null, start, end, null, schedulerCallback, appointment);
|
|
}
|
|
else if (customer.Count == 1 && employees.Count < 2)
|
|
{
|
|
var compactKlient = ServiceFacade.DoCustomerServiceSync(s => s.GetCompactCustomerDC(customer[0].CustomerOid));
|
|
|
|
// Normale Buchung
|
|
|
|
newView = new ChatDokumentationsView(notice, compactKlient, start, end, employees.Count == 1 ? employees[0] : null, schedulerCallback, appointment);
|
|
}
|
|
else
|
|
{
|
|
if (employees.Count == 0)
|
|
{
|
|
employees.Add(BeWoApp.CompactLoggedOnEmployee);
|
|
}
|
|
|
|
// Gruppenbuchungen
|
|
newView = new ChatDokumentationsView(notice, start, end, customer, employees, schedulerCallback, appointment);
|
|
}
|
|
|
|
newView.ShowDialog();
|
|
}
|
|
|
|
public static void CreateZeiterfassung(DateTime start, DateTime end, List<CompactCustomerDC> customer, List<CompactEmployeeDC> employees, String notice)
|
|
{
|
|
ChatDokumentationsView newView;
|
|
|
|
if(customer.Count == 0)
|
|
{
|
|
// Normale Buchung
|
|
newView = new ChatDokumentationsView(notice, null, start, end, null);
|
|
}
|
|
else if(customer.Count == 1 && employees.Count < 2)
|
|
{
|
|
var compactKlient = ServiceFacade.DoCustomerServiceSync(s => s.GetCompactCustomerDC(customer[0].CustomerOid));
|
|
|
|
// Normale Buchung
|
|
newView = new ChatDokumentationsView(notice, compactKlient, start, end, employees.Count == 1 ? employees[0] : null);
|
|
}
|
|
else
|
|
{
|
|
if(employees.Count == 0)
|
|
{
|
|
employees.Add(BeWoApp.CompactLoggedOnEmployee);
|
|
}
|
|
|
|
// Gruppenbuchungen
|
|
newView = new ChatDokumentationsView(notice, start, end, customer, employees);
|
|
}
|
|
|
|
newView.ShowDialog();
|
|
}
|
|
|
|
public static void OwnChatSynchronisationVeranlassen()
|
|
{
|
|
if (!BeWoApp.Mandator.Apikey.IsNullOrEmpty())
|
|
{
|
|
try
|
|
{
|
|
var tenant = BeWoApp.Tenant;
|
|
|
|
#if DEBUG
|
|
tenant = "5473568546";
|
|
#endif
|
|
|
|
BeWoApp.GetChatServerUrlAsync(serverUrl =>
|
|
{
|
|
var client = new RestClient($"{serverUrl}/api/ownchat/sync/schedule/{BeWoApp.Mandator.Apikey}/{tenant}");
|
|
var request = new RestRequest();
|
|
|
|
client.ExecuteAsync(request, null);
|
|
});
|
|
|
|
// var serverUrl = BeWoApp.GetChatServerURL();
|
|
|
|
// if (!string.IsNullOrEmpty(serverUrl))
|
|
// {
|
|
//#if DEBUG
|
|
// var endurl = serverUrl + "/api/ownchat/sync/schedule/" + BeWoApp.Mandator.Apikey + "/5473568546";
|
|
//#else
|
|
// var endurl = serverUrl + "/api/ownchat/sync/schedule/" + BeWoApp.Mandator.Apikey + "/" + BeWoApp.Tenant;
|
|
//#endif
|
|
// WebRequest request = WebRequest.Create(endurl);
|
|
|
|
// request.Credentials = CredentialCache.DefaultCredentials;
|
|
|
|
// var response = request.GetResponse();
|
|
|
|
// response.Close();
|
|
// response.Dispose();
|
|
|
|
}
|
|
catch (Exception exception)
|
|
{
|
|
// MessageBox.Show("Die Verbindung konnte nicht aufgebaut werden.", "ownChat Fehler ", MessageBoxButton.OK);
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
public static bool HasRights(IEnumerable<UserRightType> pUserRightTypes)
|
|
{
|
|
return BeWoApp.HasLoggedOnUserRight(pUserRightTypes.ToArray());
|
|
}
|
|
|
|
public static bool HasRight(UserRightType pUserRightType)
|
|
{
|
|
return BeWoApp.LoggedOnUser.HasRight(pUserRightType);
|
|
}
|
|
|
|
public static bool CheckSchedulerRights(Appointment pAppointment, bool pIsNew, SchedulerRightsCheckType pCheckType, List<long> teamMemberCustomerOids, bool ignoreViewEditCreateAllRights)
|
|
{
|
|
var storage = pAppointment.GetCustomFieldStorage();
|
|
|
|
return Utils.CheckSchedulerRights(storage.CustomerList, storage.ResourceList, storage.EmployeeList.ToList(), storage.Originator, pIsNew, pCheckType, BeWoApp.LoggedOnUser, teamMemberCustomerOids, ignoreViewEditCreateAllRights);
|
|
}
|
|
|
|
public static void EditServiceRecord(ServiceRecordDC dc, DispatcherObject p)
|
|
{
|
|
|
|
var record = ServiceFacade.DoOperationsServiceSync(s => s.GetServiceRecordById(dc.ServiceRecordOid.Value));
|
|
|
|
|
|
//var allgoalsCopy = GoalService.CopyGoals(selectedRecord.AllGoals, false);
|
|
|
|
//var sr = new ServiceRecordVM(record, ViewModel.PrototypeVM.Category2Services,
|
|
//selectedRecord.AllGoalCategories, allgoalsCopy);
|
|
|
|
VMFactory.CreateServiceRecordVMAsync(
|
|
BeWoApp.LoggedOnUser.Employee.EmployeeOid,
|
|
vmList => p.Dispatch(
|
|
delegate
|
|
{
|
|
vmList.DispatcherObject = p;
|
|
|
|
if (record.Customer != null && record.SupportConcept != null)
|
|
{
|
|
vmList.InitPrototypeVM(record.Customer.CustomerOid, record.SupportConcept.SupportConceptOid, record.CostBearer2SupportConceptOid);
|
|
}
|
|
//var allgoalsCopy = GoalService.CopyGoals(selectedRecord.AllGoals, false);
|
|
|
|
//var sr = new ServiceRecordVM(record, ViewModel.PrototypeVM.Category2Services,
|
|
// selectedRecord.AllGoalCategories, allgoalsCopy);
|
|
|
|
var vm = new ServiceRecordVM(record, vmList.PrototypeVM.Category2Services, vmList.PrototypeVM.AllGoalCategories, vmList.PrototypeVM.AllGoals);
|
|
|
|
EditServiceRecord(vmList, vm);
|
|
}));
|
|
}
|
|
public static void EditServiceRecord(ServiceRecordListVM listvm, ServiceRecordVM vm)
|
|
{
|
|
if (vm == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
BeWoView serviceRecordEditView;
|
|
|
|
if (vm.GroupOid != null)
|
|
{
|
|
serviceRecordEditView = new ServiceRecordGroupEditView();
|
|
}
|
|
else
|
|
{
|
|
serviceRecordEditView = new ServiceRecordEditView();
|
|
}
|
|
double height = BeWoApp.MainControl.ActualHeight * 0.8;
|
|
double width = 710;
|
|
|
|
if (BeWoApp.AppSettings.ShowRtfTextfield)
|
|
{
|
|
height = BeWoApp.MainControl.ActualHeight - 120;
|
|
width = 1000;
|
|
}
|
|
if (BeWoApp.MainControl.ActualWidth < width)
|
|
{
|
|
width = BeWoApp.MainControl.ActualWidth;
|
|
}
|
|
if (height < 600)
|
|
{
|
|
height = 600;
|
|
}
|
|
|
|
var beWoWindow = new BeWoWindow
|
|
{
|
|
Height = height,
|
|
Width = width,
|
|
WindowStartupLocation = WindowStartupLocation.CenterOwner,
|
|
GroupBoxContent = serviceRecordEditView,
|
|
Owner = BeWoApp.CurrentBeWo.MainWindow
|
|
};
|
|
|
|
beWoWindow.rootGroupBox.Style = null;
|
|
beWoWindow.rootGroupBox.Visibility = Visibility.Visible;
|
|
beWoWindow.rootGroupBox.Margin = new Thickness(-10);
|
|
beWoWindow.rootGroupBox.Padding = new Thickness(0);
|
|
|
|
if (serviceRecordEditView.CommandBindings.Count == 0)
|
|
{
|
|
serviceRecordEditView.CommandBindings.Add(
|
|
new CommandBinding(
|
|
ApplicationCommands.Close,
|
|
(s, e) =>
|
|
{
|
|
var result = ServiceRecordDialogResult.ClosedWithoutSaving;
|
|
|
|
if (vm.EditAllowed)
|
|
{
|
|
if (serviceRecordEditView is ServiceRecordEditView view)
|
|
{
|
|
result = view.CloseAndDoSaveCheck();
|
|
}
|
|
else
|
|
{
|
|
result = ((ServiceRecordGroupEditView)serviceRecordEditView).CloseAndDoSaveCheck();
|
|
}
|
|
}
|
|
|
|
beWoWindow.Close();
|
|
}));
|
|
serviceRecordEditView.CommandBindings.Add(
|
|
new CommandBinding(
|
|
ApplicationCommands.Save,
|
|
(s, e) =>
|
|
{
|
|
if (vm.EditAllowed)
|
|
{
|
|
bool save;
|
|
if (serviceRecordEditView is ServiceRecordEditView)
|
|
{
|
|
save = ((ServiceRecordEditView)serviceRecordEditView).IsValid() &&
|
|
((ServiceRecordEditView)serviceRecordEditView).IsCustomerChangeAllowed();
|
|
}
|
|
else
|
|
{
|
|
save = ((ServiceRecordGroupEditView)serviceRecordEditView).IsValid() &&
|
|
((ServiceRecordGroupEditView)serviceRecordEditView)
|
|
.IsCustomerChangeAllowed();
|
|
}
|
|
|
|
if (!save)
|
|
{
|
|
return;
|
|
}
|
|
|
|
serviceRecordEditView.SaveData();
|
|
}
|
|
beWoWindow.Close();
|
|
}));
|
|
}
|
|
|
|
if (serviceRecordEditView is ServiceRecordEditView)
|
|
{
|
|
((ServiceRecordEditView)serviceRecordEditView).InitView(listvm, vm, vm.SupportConcept == null);
|
|
|
|
}
|
|
else
|
|
{
|
|
var group = ServiceFacade.DoOperationsServiceSync(s => s.GetServiceRecordGroup(vm.GroupOid.Value));
|
|
|
|
((ServiceRecordGroupEditView)serviceRecordEditView).InitView(listvm, vm, group);
|
|
|
|
beWoWindow.Width += 190;
|
|
}
|
|
|
|
beWoWindow.ShowDialog();
|
|
}
|
|
|
|
public static bool CheckForExistingSignatures(ServiceRecordDC serviceRecord)
|
|
{
|
|
var validationResult = ServiceFacade.DoOperationsServiceSync(s => s.CheckForExistingSignature(serviceRecord));
|
|
|
|
return validationResult != null && MessageBox.Show(validationResult.Message, "Speichern", MessageBoxButton.YesNo, MessageBoxImage.Warning).Equals(MessageBoxResult.Yes) || validationResult == null;
|
|
}
|
|
}
|
|
}
|