2336 lines
108 KiB
C#
2336 lines
108 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;
|
|
|
|
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 = "Layout speichern" }
|
|
};
|
|
|
|
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 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 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 = "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 = "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 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"];
|
|
|
|
ServiceFacade.DoReportServiceAsync(strom => strom.CreateKalenderReport(appointmentIds, employeeOid, serienTermine, selectedDays, mehrtaegigeTermine), 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)
|
|
{
|
|
var storage = pAppointment.GetCustomFieldStorage();
|
|
|
|
return Utils.CheckSchedulerRights(storage.CustomerList, storage.ResourceList, storage.EmployeeList.ToList(), storage.Originator, pIsNew, pCheckType, BeWoApp.LoggedOnUser);
|
|
}
|
|
|
|
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;
|
|
}
|
|
}
|
|
}
|