1767 lines
88 KiB
C#
1767 lines
88 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Collections.ObjectModel;
|
|
using System.ComponentModel;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Net;
|
|
using System.Text.RegularExpressions;
|
|
using System.Windows;
|
|
using System.Windows.Controls;
|
|
using System.Windows.Controls.Primitives;
|
|
using System.Windows.Forms.VisualStyles;
|
|
using System.Windows.Input;
|
|
using System.Windows.Media;
|
|
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;
|
|
|
|
namespace BeWo.Core
|
|
{
|
|
public static class BeWoUtils
|
|
{
|
|
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);
|
|
}
|
|
}
|
|
|
|
private static XtraReport Report { get; set; }
|
|
public static void NavigateToReportUri(string navigateUriString, string title)
|
|
{
|
|
NavigateToReportUri(navigateUriString, title, null);
|
|
}
|
|
|
|
public static void NavigateToReportUri(string navigateUriString, string title, DocumentPreview documentPreview)
|
|
{
|
|
BeWoApp.MainControl.StartWaiting();
|
|
|
|
StartGetReportStreamAsync(GetReportStreamForWPFControl, navigateUriString,
|
|
ms => BeWoApp.MainControl.Dispatch(delegate
|
|
{
|
|
var report = new XtraReport();
|
|
try
|
|
{
|
|
var scrollablePageView = (IScrollInfo)LayoutHelper.FindElement(documentPreview, p => p.GetType() == typeof(DevExpress.Xpf.Printing.Native.ScrollablePageView));
|
|
if (scrollablePageView != null)
|
|
{
|
|
scrollablePageView.PageUp();
|
|
}
|
|
|
|
report.PrintingSystem.LoadDocument(ms);
|
|
}
|
|
catch (Exception)
|
|
{
|
|
var msg = System.Text.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;
|
|
|
|
var dp = documentPreview;
|
|
if (dp == null)
|
|
{
|
|
dp = new DocumentPreview();
|
|
window = new BeWoWindow {GroupBoxContent = dp, Owner = BeWoApp.CurrentBeWo.MainWindow};
|
|
ThemeManager.SetTheme(window, Theme.Office2010Black);
|
|
}
|
|
|
|
// ReportPreviewModelLandscapeBugWorkaround statt des XtraReportPreviewModels wegen des Landscape-Bugs
|
|
dp.Model = new ReportPreviewModelLandscapeBugWorkaround(report);
|
|
ThemeManager.SetTheme(dp, Theme.Office2007Black);
|
|
|
|
dp.BarManager.Loaded += delegate
|
|
{
|
|
dp.BarManager.Items["documentMap"].IsVisible = false;
|
|
dp.BarManager.Items["open"].IsVisible = false;
|
|
dp.BarManager.Items["email"].IsVisible = false;
|
|
dp.BarManager.Items["watermark"].IsVisible = false;
|
|
dp.BarManager.Items["pageSetup"].IsVisible = false;
|
|
dp.BarManager.Items["scaling"].IsVisible = false;
|
|
dp.BarManager.Items["save"].IsVisible = false;
|
|
dp.BarManager.Items["printDirect"].IsVisible = false;
|
|
dp.BarManager.Items["exportText"].IsVisible = false;
|
|
dp.BarManager.Items["exportCSV"].IsVisible = false;
|
|
dp.BarManager.Items["exportMHT"].IsVisible = false;
|
|
dp.BarManager.Items["exportXPS"].IsVisible = false;
|
|
var item = dp.BarManager.Items["exportRTF"];
|
|
};
|
|
if (window != null)
|
|
{
|
|
window.rootGroupBox.Header = String.IsNullOrEmpty(title) ? "Druckvorschau" : title;
|
|
window.Title = "Druckvorschau";
|
|
window.Show();
|
|
}
|
|
|
|
dp.Visibility = Visibility.Visible;
|
|
|
|
BeWoApp.MainControl.EndWaiting();
|
|
}));
|
|
}
|
|
|
|
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)
|
|
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 };
|
|
(View as OrganisationView).OrganisationSavedOrUpdated += organisationSavedOrUpdated;
|
|
}
|
|
else if (tType == typeof (PersonVM))
|
|
{
|
|
View = new PersonView(viewModel as PersonVM) {ParentView = ownerView, MinWidth = 800, IsInWindow = true};
|
|
(View as PersonView).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;
|
|
|
|
var modalViewWindow = new ModalViewWindow(View, ownerView);
|
|
|
|
BeWoApp.MainControl.OpenedModalViewWindows.Add(modalViewWindow);
|
|
|
|
foreach (var window in BeWoApp.MainControl.OpenedModalViewWindows.Where(window => !BeWoApp.MainControl.OpenedModalViewWindows.Last().Equals(window)))
|
|
{
|
|
ShowModalBackground(window.RootGrid);
|
|
}
|
|
|
|
var dialogResult = modalViewWindow.ShowDialog();
|
|
|
|
if (BeWoApp.MainControl.OpenedModalViewWindows.Count > 1)
|
|
{
|
|
var nextToLastWindow = BeWoApp.MainControl.OpenedModalViewWindows.ElementAt(BeWoApp.MainControl.OpenedModalViewWindows.Count - 2);
|
|
nextToLastWindow.RootGrid.Children.RemoveAt(1);
|
|
}
|
|
|
|
BeWoApp.MainControl.OpenedModalViewWindows.Remove(modalViewWindow);
|
|
}
|
|
|
|
public static bool CheckViewIsCalledFromWindow(BeWoView view)
|
|
{
|
|
return ((Grid) view.Parent).Parent.GetType() == typeof (Window);
|
|
}
|
|
|
|
private static void ShowModalBackground(Grid 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;
|
|
}
|
|
|
|
foreach(var view in BeWoApp.MainControl.OpenedModalViewWindows)
|
|
{
|
|
UpdateView(view.DetailView, updatedObject);
|
|
}
|
|
}
|
|
|
|
private static void UpdateView<T>(BeWoView view, T updatedObject) where T : IFilterableDC
|
|
{
|
|
if (view.GetType() == typeof (EmployeeView))
|
|
{
|
|
#region EmployeeView
|
|
if (typeof (T) == typeof (CompactCustomerDC))
|
|
{
|
|
var updatedCustomer = new CompactCustomerDC();
|
|
|
|
ServiceFacade.DoCustomerServiceSync(s => updatedCustomer = s.GetCompactCustomerDC((updatedObject as CompactCustomerDC).CustomerOid));
|
|
|
|
foreach (var item in (view as EmployeeView).ViewModel.CustomerRelations.VMList.Where(item => item.Customer.Equals(updatedCustomer)))
|
|
{
|
|
item.Customer = updatedCustomer;
|
|
}
|
|
|
|
var grid = (view as EmployeeView).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((updatedObject as CompactEmployeeDC).EmployeeOid);
|
|
(view as EmployeeView).ReloadViewModel();
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
else if (view.GetType() == typeof(WohnheimView))
|
|
{
|
|
#region WohnheimView
|
|
if (typeof(T) == typeof(CompactCustomerDC))
|
|
{
|
|
var updatedCustomer = new CompactCustomerDC();
|
|
|
|
ServiceFacade.DoCustomerServiceSync(s => updatedCustomer = s.GetCompactCustomerDC((updatedObject as CompactCustomerDC).CustomerOid));
|
|
|
|
var grid = (view as WohnheimView).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((updatedObject as CompactEmployeeDC).EmployeeOid));
|
|
|
|
var employeeRelationsGrid = (view as WohnheimView).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((updatedObject as CompactEmployeeDC).EmployeeOid);
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
else if (view.GetType() == typeof(CustomerView))
|
|
{
|
|
#region CustomerView
|
|
var customerView = view as CustomerView;
|
|
|
|
if (typeof(T) == typeof(CompactEmployeeDC))
|
|
{
|
|
var updatedEmployee = new CompactEmployeeDC();
|
|
var grid = new GridControl();
|
|
|
|
if (!string.IsNullOrWhiteSpace(customerView.popupedit_employeeRelations.Text))
|
|
{
|
|
ServiceFacade.DoEmployeeServiceSync(s => updatedEmployee = s.LoadCompactEmployee((updatedObject as CompactEmployeeDC).EmployeeOid));
|
|
customerView.ViewModel.EmployeeRelations.NewVM.Employee = null;
|
|
customerView.ViewModel.EmployeeRelations.NewVM.Employee = updatedEmployee;
|
|
}
|
|
else
|
|
{
|
|
ServiceFacade.DoEmployeeServiceSync(s => updatedEmployee = s.LoadCompactEmployee((updatedObject as CompactEmployeeDC).EmployeeOid));
|
|
}
|
|
|
|
grid = (GridControl)customerView.root.Resources["datagrid_EmployeeRelation"];
|
|
|
|
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(customerView.employeesearchview, updatedEmployee);
|
|
UpdateLoggedInEmployee(updatedEmployee.EmployeeOid);
|
|
}
|
|
else if (typeof(T) == typeof(CompactPersonDC))
|
|
{
|
|
var grid = new GridControl();
|
|
var updatedPerson = new CompactPersonDC();
|
|
|
|
ServiceFacade.DoCustomerServiceSync(s => updatedPerson = s.LoadPersonCompact((updatedObject as CompactPersonDC).PersonOid));
|
|
|
|
if (!(string.IsNullOrWhiteSpace(customerView.popupedit_environmentPersonSearch.Text)) && (view as CustomerView).popupedit_environmentPersonSearch.Text.Equals((updatedObject as CompactPersonDC).ToString()))
|
|
{
|
|
customerView.ViewModel.EnvironmentPersons.NewVM.Person = null;
|
|
customerView.ViewModel.EnvironmentPersons.NewVM.Person = updatedPerson;
|
|
}
|
|
|
|
grid = (GridControl) customerView.root.Resources["grid_PersonRelations"];
|
|
|
|
var vmList = customerView.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(customerView.personsearchview, updatedPerson);
|
|
}
|
|
else if (typeof(T) == typeof(CompactOrganisationDC))
|
|
{
|
|
var organisationToUpdate = updatedObject as CompactOrganisationDC;
|
|
var updatedOrganisation = new CompactOrganisationDC();
|
|
var organisationRelationGrid = new GridControl();
|
|
var costBearerRelationGrid = new GridControl();
|
|
|
|
if ((updatedObject as CompactOrganisationDC) == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
organisationRelationGrid = (GridControl) customerView.root.Resources["grid_OrganisationRelations"];
|
|
costBearerRelationGrid = (GridControl) customerView.root.Resources["grid_costBearer"];
|
|
|
|
ServiceFacade.DoCustomerServiceSync(s => updatedOrganisation = s.LoadOrganisationCompact(organisationToUpdate.OrganisationOid));
|
|
|
|
if (!(string.IsNullOrWhiteSpace(customerView.popupedit_costBearer.Text)) && customerView.popupedit_costBearer.Text.Equals(organisationToUpdate.ToString()))
|
|
{
|
|
customerView.ViewModel.CostBearers.NewVM.CostBearer = null;
|
|
customerView.ViewModel.CostBearers.NewVM.CostBearer = updatedOrganisation;
|
|
customerView.popupedit_costBearer.Text = updatedOrganisation.ToString();
|
|
}
|
|
|
|
foreach (var item in (customerView.ViewModel.CostBearers.VMList).Where(item => item.CostBearer.Equals(updatedOrganisation)))
|
|
{
|
|
item.CostBearer = null;
|
|
item.CostBearer = updatedOrganisation;
|
|
}
|
|
|
|
if (!(string.IsNullOrWhiteSpace(customerView.popupedit_environmentOrganisationSearch.Text)) && customerView.popupedit_environmentOrganisationSearch.Text.Equals(organisationToUpdate.ToString()))
|
|
{
|
|
customerView.ViewModel.EnvironmentOrganisations.NewVM.Organisation = null;
|
|
customerView.ViewModel.EnvironmentOrganisations.NewVM.Organisation = updatedOrganisation;
|
|
customerView.popupedit_environmentOrganisationSearch.Text = updatedOrganisation.ToString();
|
|
}
|
|
|
|
var vmList = customerView.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(customerView.costbearersearchview, updatedOrganisation);
|
|
UpdateSearchViewObjectList(customerView.organisationsearchview, updatedOrganisation);
|
|
}
|
|
else if (typeof(T) == typeof(CompactTeamDC))
|
|
{
|
|
var teamToUpdate = updatedObject as CompactTeamDC;
|
|
var updatedTeam = new CompactTeamDC();
|
|
var grid = (GridControl) customerView.root.Resources["datagrid_TeamRelation"];
|
|
|
|
ServiceFacade.DoEmployeeServiceSync(s => updatedTeam = s.LoadCompactTeam(teamToUpdate.TeamOid));
|
|
|
|
if (!(string.IsNullOrWhiteSpace(customerView.popupedit_teamRelations.Text)) && customerView.popupedit_teamRelations.Text.Equals(teamToUpdate.ToString()))
|
|
{
|
|
ServiceFacade.DoEmployeeServiceSync(s => updatedTeam = s.LoadCompactTeam(teamToUpdate.TeamOid));
|
|
customerView.ViewModel.TeamRelations.NewVM.Team = null;
|
|
customerView.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(customerView.teamsearchview, updatedTeam);
|
|
}
|
|
else if (typeof (T) == typeof (CompactCustomerDC))
|
|
{
|
|
customerView.ReloadViewModel();
|
|
}
|
|
#endregion
|
|
}
|
|
else if (view.GetType() == typeof(OrganisationView))
|
|
{
|
|
#region OrganisationView
|
|
if (typeof (T) == typeof (CompactPersonDC))
|
|
{
|
|
var organisationView = view as OrganisationView;
|
|
var updatedPerson = new CompactPersonDC();
|
|
var grid = (GridControl) organisationView.gridroot.Resources["datagrid_PersonRelation"];
|
|
|
|
ServiceFacade.DoCustomerServiceSync(s => updatedPerson = s.LoadPersonCompact((updatedObject as CompactPersonDC).PersonOid));
|
|
|
|
var vmList = organisationView.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 test = new List<OrganisationPersonRelationVM>();
|
|
|
|
ServiceFacade.DoOperationsServiceSync(s => dataContracts = s.LoadOrganisationPersonRelationsByOid(relPersonOids));
|
|
|
|
dataContracts.DoForEach(dfe => test.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] = test.First(f => f.DataContract.Organisation2PersonOid.Value.Equals(item.Value));
|
|
}
|
|
|
|
grid.RefreshData();
|
|
}
|
|
else if (typeof (T) == typeof (CompactOrganisationDC))
|
|
{
|
|
(view as OrganisationView).ReloadViewModel();
|
|
}
|
|
#endregion
|
|
}
|
|
else if (view.GetType() == typeof(BookingView))
|
|
{
|
|
#region BookingView
|
|
|
|
if (typeof (T) != typeof (CompactEmployeeDC))
|
|
return;
|
|
|
|
var bookingView = view as BookingView;
|
|
var updatedEmployee = new CompactEmployeeDC();
|
|
|
|
ServiceFacade.DoEmployeeServiceSync(s => updatedEmployee = s.LoadCompactEmployee((updatedObject as CompactEmployeeDC).EmployeeOid));
|
|
|
|
var sourceNew = bookingView.combobox_newEmployee.ItemsSource as ObservableCollection<CompactEmployeeDC>;
|
|
var sourceEdit = bookingView.combobox_editEmployee.ItemsSource as ObservableCollection<CompactEmployeeDC>;
|
|
|
|
var selectedNewIndex = bookingView.combobox_newEmployee.SelectedIndex;
|
|
var selectedEditIndex = bookingView.combobox_editEmployee.SelectedIndex;
|
|
|
|
foreach (var item in bookingView.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;
|
|
}
|
|
|
|
bookingView.combobox_newEmployee.ItemsSource = sourceNew;
|
|
bookingView.combobox_editEmployee.ItemsSource = sourceEdit;
|
|
|
|
bookingView.combobox_newEmployee.SelectedIndex = selectedNewIndex;
|
|
bookingView.combobox_editEmployee.SelectedIndex = selectedEditIndex;
|
|
|
|
UpdateLoggedInEmployee(updatedEmployee.EmployeeOid);
|
|
#endregion
|
|
}
|
|
else if (view.GetType() == typeof(FinanceView))
|
|
{
|
|
#region FinanceView
|
|
var v = (view as FinanceView);
|
|
var settle = v.tabitem_settlementinvoice.Content as SettlementInvoiceView;
|
|
var eq = v.tabitem_equityinvoice.Content as EquityInvoiceView;
|
|
var gi = v.tabitem_otherinvoice.Content as GeneralInvoiceView;
|
|
var serv = v.tabitem_collectiveinvoice.Content as ServiceInvoiceView;
|
|
var atb = v.tabitem_financeBooking.Content as AccountingTransactionBookingView;
|
|
|
|
if (typeof (T) == typeof (CompactCustomerDC))
|
|
{
|
|
var updatedCustomer = new CompactCustomerDC();
|
|
ServiceFacade.DoCustomerServiceSync(s => updatedCustomer = s.GetCompactCustomerDC((updatedObject as CompactCustomerDC).CustomerOid));
|
|
|
|
if (atb != null)
|
|
{
|
|
foreach (var item in atb.ViewModel.AccountingTransactionVMList.Where(item => item.SupportConcept.Customer.Equals(updatedCustomer)))
|
|
{
|
|
item.SupportConcept.Customer = new CompactCustomerDC();
|
|
item.SupportConcept.Customer = updatedCustomer;
|
|
}
|
|
|
|
foreach (var item in atb.FlatSupportConceptItems.Where(item => item.SupportConceptTreeNodeDC != null).Where(item => item.SupportConceptTreeNodeDC.Customer.Equals(updatedCustomer)))
|
|
{
|
|
item.SupportConceptTreeNodeDC.Customer = new CompactCustomerDC();
|
|
item.SupportConceptTreeNodeDC.Customer = updatedCustomer;
|
|
}
|
|
|
|
UpdateSingleSupportConceptSelectionControl(atb.supportConceptSelectionControl, updatedCustomer);
|
|
}
|
|
if (settle != null)
|
|
{
|
|
if (settle.SelectedSupportConcept != null)
|
|
{
|
|
if (settle.SelectedSupportConcept.Customer.Equals((updatedObject as CompactCustomerDC)))
|
|
{
|
|
settle.SelectedSupportConcept.Customer = new CompactCustomerDC();
|
|
settle.SelectedSupportConcept.Customer = updatedCustomer;
|
|
|
|
settle.popupedit_CostBeaerer.Text = string.Format("{0}, {1} {2}", settle.SelectedSupportConcept.Customer.LastName,
|
|
settle.SelectedSupportConcept.Customer.FirstName,
|
|
settle.SelectedSupportConcept.Customer.DateOfBirthString);
|
|
}
|
|
|
|
UpdateSearchViewObjectList(settle.supportconceptsearchview, settle.SelectedSupportConcept);
|
|
}
|
|
else
|
|
{
|
|
UpdateSearchViewObjectList(settle.supportconceptsearchview, new CompactSupportConceptDC{Customer = updatedCustomer});
|
|
}
|
|
}
|
|
if (eq != null)
|
|
{
|
|
if (eq.SelectedSupportConcept != null)
|
|
{
|
|
eq.SelectedSupportConcept.Customer = new CompactCustomerDC();
|
|
eq.SelectedSupportConcept.Customer = updatedCustomer;
|
|
|
|
eq.popupedit_CostBeaerer.Text = string.Format("{0}, {1} {2}", eq.SelectedSupportConcept.Customer.LastName,
|
|
eq.SelectedSupportConcept.Customer.FirstName,
|
|
eq.SelectedSupportConcept.Customer.DateOfBirthString);
|
|
|
|
UpdateSearchViewObjectList(eq.supportconceptsearchview, eq.SelectedSupportConcept);
|
|
}
|
|
else
|
|
{
|
|
UpdateSearchViewObjectList(eq.supportconceptsearchview, new CompactSupportConceptDC { Customer = updatedCustomer });
|
|
}
|
|
}
|
|
if (serv != null)
|
|
{
|
|
if (serv.ViewModel.SelectedSupportConcept != null)
|
|
{
|
|
if (serv.ViewModel.SelectedSupportConcept.Customer.Equals((updatedObject as CompactCustomerDC)))
|
|
{
|
|
serv.ViewModel.SelectedSupportConcept.Customer = new CompactCustomerDC();
|
|
serv.ViewModel.SelectedSupportConcept.Customer = updatedCustomer;
|
|
|
|
serv.popupedit_supportConcept.Text = string.Format("{0}, {1} {2}", serv.ViewModel.SelectedSupportConcept.Customer.LastName,
|
|
serv.ViewModel.SelectedSupportConcept.Customer.FirstName,
|
|
serv.ViewModel.SelectedSupportConcept.Customer.DateOfBirthString);
|
|
|
|
UpdateSearchViewObjectList(serv.supportConcept_search, serv.ViewModel.SelectedSupportConcept);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
UpdateSearchViewObjectList(serv.supportConcept_search, new CompactSupportConceptDC { Customer = updatedCustomer });
|
|
}
|
|
}
|
|
}
|
|
else if (typeof(T) == typeof(CompactSupportConceptDC))
|
|
{
|
|
var updatedSupportConcept = new CompactSupportConceptDC();
|
|
ServiceFacade.DoCustomerServiceSync(s => updatedSupportConcept = s.LoadCompactSupportConceptDC((updatedObject as CompactSupportConceptDC).SupportConceptOid, BeWoApp.LoggedOnEmployee.EmployeeOid));
|
|
|
|
if (eq != null && eq.SelectedSupportConcept != null)
|
|
{
|
|
eq.ReloadViewModel();
|
|
eq.popupedit_CostBeaerer.Text = string.Format("{0}, {1} {2}", updatedSupportConcept.Customer.LastName,
|
|
updatedSupportConcept.Customer.FirstName,
|
|
updatedSupportConcept.Customer.DateOfBirthString);
|
|
|
|
UpdateSearchViewObjectList(eq.supportconceptsearchview, eq.SelectedSupportConcept);
|
|
}
|
|
if (settle != null && settle.SelectedSupportConcept != null)
|
|
{
|
|
settle.ReloadViewModel();
|
|
settle.popupedit_CostBeaerer.Text = string.Format("{0}, {1} {2}", updatedSupportConcept.Customer.LastName,
|
|
updatedSupportConcept.Customer.FirstName,
|
|
updatedSupportConcept.Customer.DateOfBirthString);
|
|
|
|
UpdateSearchViewObjectList(settle.supportconceptsearchview, settle.SelectedSupportConcept);
|
|
}
|
|
if (serv != null && serv.ViewModel.SelectedSupportConcept != null)
|
|
{
|
|
if (serv.ViewModel.SelectedSupportConcept.Equals(updatedSupportConcept))
|
|
serv.ViewModel.SelectedSupportConcept = updatedSupportConcept;
|
|
|
|
UpdateSearchViewObjectList(serv.supportConcept_search, updatedSupportConcept);
|
|
}
|
|
}
|
|
else if (typeof(T) == typeof(CompactOrganisationDC))
|
|
{
|
|
var updatedOrganisation = new CompactOrganisationDC();
|
|
ServiceFacade.DoCustomerServiceSync(s => updatedOrganisation = s.LoadOrganisationCompact((updatedObject as CompactOrganisationDC).OrganisationOid));
|
|
|
|
if (gi != null)
|
|
{
|
|
if (gi.SelectedOrganisation != null)
|
|
{
|
|
if (gi.SelectedOrganisation.Equals(updatedOrganisation))
|
|
{
|
|
gi.SelectedOrganisation = null;
|
|
gi.SelectedOrganisation = updatedOrganisation;
|
|
}
|
|
|
|
gi.popupedit_Recipient.Text = updatedOrganisation.ToString();
|
|
}
|
|
|
|
UpdateSearchViewObjectList(gi.recipientsearchview, updatedOrganisation);
|
|
}
|
|
if (serv != null)
|
|
{
|
|
if (serv.ViewModel.SelectedCostBearer != null)
|
|
if (serv.ViewModel.SelectedCostBearer.Equals(updatedOrganisation))
|
|
serv.ViewModel.SelectedCostBearer = updatedOrganisation;
|
|
|
|
UpdateSearchViewObjectList(serv.organisationSearchView, updatedOrganisation);
|
|
}
|
|
}
|
|
#endregion
|
|
}
|
|
else if (view.GetType() == typeof(SupportConceptView))
|
|
{
|
|
#region SupportConceptView
|
|
var SupportConceptView = view as SupportConceptView;
|
|
|
|
if (typeof (T) == typeof (CompactEmployeeDC))
|
|
{
|
|
var updatedEmployee = new CompactEmployeeDC();
|
|
|
|
ServiceFacade.DoEmployeeServiceSync(s => updatedEmployee = s.LoadCompactEmployee((updatedObject as CompactEmployeeDC).EmployeeOid));
|
|
|
|
for (var i = 0; i < SupportConceptView.ViewModel.Tasks.NewVM.Employees.Count; i++)
|
|
{
|
|
if (!SupportConceptView.ViewModel.Tasks.NewVM.Employees[i].EmployeeOid.Equals(updatedEmployee.EmployeeOid))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
SupportConceptView.ViewModel.Tasks.NewVM.Employees[i] = null;
|
|
SupportConceptView.ViewModel.Tasks.NewVM.Employees[i] = updatedEmployee;
|
|
}
|
|
|
|
for (var i = 0; i < SupportConceptView.ViewModel.CostBearerRelations.VMList.Count; i++)
|
|
{
|
|
var currentSC = SupportConceptView.ViewModel.CostBearerRelations.VMList[i];
|
|
|
|
for (var j = 0; j < currentSC.ApprovalPeriodList.VMList.Count; j++)
|
|
{
|
|
var currentAP = currentSC.ApprovalPeriodList.VMList[j];
|
|
|
|
if (currentAP.SupportConceptApprovalEmployeeRelations.VMList.Any(a => a.Employee.EmployeeOid.Equals(updatedEmployee.EmployeeOid)))
|
|
{
|
|
// Nur einmal in der Liste
|
|
var employeeContainingRel = currentAP.SupportConceptApprovalEmployeeRelations.VMList.FirstOrDefault(f => f.Employee.EmployeeOid.Equals(updatedEmployee.EmployeeOid));
|
|
if (employeeContainingRel != null)
|
|
{
|
|
employeeContainingRel.Employee = null;
|
|
employeeContainingRel.Employee = updatedEmployee;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if (SupportConceptView.ViewModel.CostBearerRelations.VMList.Any(a => a.ApprovalPeriodList.VMList.Any(a2 => a2.SupportConceptApprovalEmployeeRelations.VMList.Any(a3 => a3.Employee.EmployeeOid.Equals(updatedEmployee.EmployeeOid)))))
|
|
{
|
|
var emp = SupportConceptView.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 (SupportConceptView.SelectedApprovalPeriodVM.SupportConceptApprovalEmployeeRelations.NewVM.Employee.EmployeeOid.Equals(updatedEmployee.EmployeeOid))
|
|
{
|
|
SupportConceptView.SelectedApprovalPeriodVM.SupportConceptApprovalEmployeeRelations.NewVM.Employee = null;
|
|
SupportConceptView.SelectedApprovalPeriodVM.SupportConceptApprovalEmployeeRelations.NewVM.Employee = updatedEmployee;
|
|
SupportConceptView.SelectedApprovalPeriodVM.SupportConceptApprovalEmployeeRelations.NewVM.EmployeeString = updatedEmployee.ToString();
|
|
}
|
|
|
|
if (SupportConceptView.ViewModel.Originator.EmployeeOid.Equals(updatedEmployee.EmployeeOid))
|
|
{
|
|
SupportConceptView.ViewModel.Originator = null;
|
|
SupportConceptView.ViewModel.Originator = updatedEmployee;
|
|
SupportConceptView.popupedit_employee.Text = updatedEmployee.ToString();
|
|
}
|
|
|
|
if (BeWoApp.LoggedOnUser.Employee.EmployeeOid.Equals(updatedEmployee.EmployeeOid))
|
|
{
|
|
BeWoApp.LoggedOnUser.Employee = updatedEmployee;
|
|
}
|
|
|
|
SupportConceptView.popupedit_employee.Text = updatedEmployee.ToString();
|
|
UpdateLoggedInEmployee(updatedEmployee.EmployeeOid);
|
|
UpdateSearchViewObjectList(SupportConceptView.employeesearchview, updatedEmployee);
|
|
|
|
foreach (var item in SupportConceptView.ViewModel.Tasks.VMList)
|
|
{
|
|
for (var i = 0; i < item.Employees.Count; i++)
|
|
{
|
|
var prevDirty = item.IsDirty;
|
|
if (!item.Employees[i].EmployeeOid.Equals(updatedEmployee.EmployeeOid))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
item.Employees[i] = updatedEmployee;
|
|
|
|
if (!prevDirty && item.IsDirty)
|
|
{
|
|
item.SetDirty(false);
|
|
}
|
|
}
|
|
}
|
|
|
|
SupportConceptView.grid_tasks.RefreshData();
|
|
}
|
|
else if (typeof(T) == typeof(CompactPersonDC))
|
|
{
|
|
var updatedPerson = new CompactPersonDC();
|
|
|
|
ServiceFacade.DoCustomerServiceSync(s => updatedPerson = s.LoadPersonCompact((updatedObject as CompactPersonDC).PersonOid));
|
|
|
|
((SupportConceptCostBearerRelVM)SupportConceptView.tabcontrol_costbearers.SelectedItem)
|
|
.CostBearerContactPerson = null;
|
|
((SupportConceptCostBearerRelVM)SupportConceptView.tabcontrol_costbearers.SelectedItem)
|
|
.CostBearerContactPerson = updatedPerson;
|
|
}
|
|
else if (typeof (T) == typeof (CompactCustomerDC))
|
|
{
|
|
var updatedCustomer = SupportConceptView.ViewModel.Customer;
|
|
|
|
ServiceFacade.DoCustomerServiceSync(s => updatedCustomer = s.GetCompactCustomerDC(SupportConceptView.ViewModel.Customer.CustomerOid));
|
|
|
|
SupportConceptView.ViewModel.Customer = new CompactCustomerDC();
|
|
SupportConceptView.ViewModel.Customer = updatedCustomer;
|
|
|
|
SupportConceptView.popupedit_customer.Text = updatedCustomer.ToString();
|
|
|
|
UpdateSearchViewObjectList(SupportConceptView.customersearchview, updatedCustomer);
|
|
}
|
|
#endregion
|
|
}
|
|
else if (view.GetType() == typeof(ServiceRecordView2))
|
|
{
|
|
#region ServiceRecordView2
|
|
var ServiceRecordView2 = view as ServiceRecordView2;
|
|
|
|
if (typeof (T) == typeof (CompactCustomerDC))
|
|
{
|
|
var updatedCustomer = new CompactCustomerDC();
|
|
|
|
ServiceFacade.DoCustomerServiceSync(s => updatedCustomer = s.GetCompactCustomerDC((updatedObject as CompactCustomerDC).CustomerOid));
|
|
|
|
foreach (var item in ServiceRecordView2.ViewModel.VMList.Where(item => item.Customer.Equals(updatedCustomer)))
|
|
{
|
|
item.Customer = new CompactCustomerDC();
|
|
item.Customer = updatedCustomer;
|
|
}
|
|
|
|
ServiceRecordView2.multiSupportConceptControl.UpdateSupportConcepts(updatedCustomer);
|
|
ServiceRecordView2.multiSupportConceptControl.UpdateListBox();
|
|
|
|
UpdateSingleSupportConceptSelectionControl(ServiceRecordView2.supportConceptSelectionControl, updatedCustomer);
|
|
}
|
|
else if (typeof (T) == typeof (CompactEmployeeDC))
|
|
{
|
|
var updatedEmployee = new CompactEmployeeDC();
|
|
ServiceFacade.DoEmployeeServiceSync(s => updatedEmployee = s.LoadCompactEmployee((updatedObject as CompactEmployeeDC).EmployeeOid));
|
|
|
|
UpdateSearchViewObjectList(ServiceRecordView2.employeeSearchView, updatedEmployee);
|
|
ServiceRecordView2.popupedit_employee.Text = updatedEmployee.ToString();
|
|
|
|
UpdateLoggedInEmployee((updatedObject as CompactEmployeeDC).EmployeeOid);
|
|
|
|
for (var i = 0; i < ServiceRecordView2.multiEmployeeControl.SelectedEmployees.Count; i++)
|
|
{
|
|
if (!ServiceRecordView2.multiEmployeeControl.SelectedEmployees[i].EmployeeOid.Equals(updatedEmployee.EmployeeOid))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
ServiceRecordView2.multiEmployeeControl.SelectedEmployees[i] = new CompactEmployeeDC();
|
|
ServiceRecordView2.multiEmployeeControl.SelectedEmployees[i] = updatedEmployee;
|
|
}
|
|
|
|
ServiceRecordView2.multiEmployeeControl.UpdateListBox();
|
|
UpdateSearchViewObjectList(ServiceRecordView2.multiEmployeeControl.employeesearchview, updatedEmployee);
|
|
|
|
if (ServiceRecordView2.ViewModel.BedarfsMedViewModel.NewVM.Employee != null && ServiceRecordView2.ViewModel.BedarfsMedViewModel.NewVM.Employee.EmployeeOid.Equals(updatedEmployee.EmployeeOid))
|
|
{
|
|
ServiceRecordView2.ViewModel.BedarfsMedViewModel.NewVM.Employee = updatedEmployee;
|
|
ServiceRecordView2.popupedit_employee_bedarfsmed.Text = updatedEmployee.ToString();
|
|
UpdateSearchViewObjectList(ServiceRecordView2.MedRecordEmployeeSearchView, updatedEmployee);
|
|
}
|
|
|
|
// TODO: Bedarfsmedikationen
|
|
UpdateSearchViewObjectList(ServiceRecordView2.MedRecordEmployeeSearchView, updatedEmployee);
|
|
|
|
|
|
foreach (var item in ((BindingList<MedRecordVM>)ServiceRecordView2.MedRecordGridControl.ItemsSource).Where(item => item.Employee.EmployeeOid.Equals(updatedEmployee.EmployeeOid)))
|
|
{
|
|
item.Employee = null;
|
|
item.Employee = updatedEmployee;
|
|
}
|
|
|
|
ServiceRecordView2.MedRecordGridControl.RefreshData();
|
|
|
|
if (ServiceRecordView2.ViewModel.CustomerNodes.Count <= 0 || ServiceRecordView2.ViewModel.ServiceRecordsForSelectedCustomer == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
foreach (var item in ServiceRecordView2.ViewModel.ServiceRecordsForSelectedCustomer.Where(item => item.Employee.EmployeeOid.Equals(updatedEmployee.EmployeeOid)))
|
|
{
|
|
item.Employee = null;
|
|
item.Employee = updatedEmployee;
|
|
}
|
|
|
|
ServiceRecordView2.ViewModel.RefreshServiceRecordsForSelectedTreeNode();
|
|
}
|
|
else if (typeof(T) == typeof(CompactOrganisationDC))
|
|
{
|
|
var updatedOrganisation = new CompactOrganisationDC();
|
|
|
|
ServiceFacade.DoCustomerServiceSync(s => updatedOrganisation = s.LoadOrganisationCompact((updatedObject as CompactOrganisationDC).OrganisationOid));
|
|
|
|
foreach (var item in ServiceRecordView2.ViewModel.VMList.Where(item => item.CostBearer.Equals(updatedOrganisation)))
|
|
{
|
|
item.CostBearer = new CompactOrganisationDC();
|
|
item.CostBearer = updatedOrganisation;
|
|
}
|
|
}
|
|
#endregion
|
|
}
|
|
else if (view.GetType() == typeof(TeamView))
|
|
{
|
|
#region TeamView
|
|
if (typeof (T) == typeof (CompactEmployeeDC))
|
|
{
|
|
var TeamView = view as TeamView;
|
|
var updatedEmployee = new CompactEmployeeDC();
|
|
|
|
ServiceFacade.DoEmployeeServiceSync(s => updatedEmployee = s.LoadCompactEmployee((updatedObject as CompactEmployeeDC).EmployeeOid));
|
|
|
|
if (TeamView.ViewModel.Leader.Equals(updatedObject as CompactEmployeeDC))
|
|
{
|
|
TeamView.ViewModel.Leader = null;
|
|
TeamView.ViewModel.Leader = updatedEmployee;
|
|
}
|
|
|
|
if (TeamView.ViewModel.Member.Contains(updatedEmployee))
|
|
{
|
|
var newMember = new ObservableSortCollection<CompactEmployeeDC>();
|
|
foreach (var item in TeamView.ViewModel.Member)
|
|
newMember.Add(item.EmployeeOid.Equals(updatedEmployee.EmployeeOid) ? updatedEmployee : item);
|
|
|
|
TeamView.ViewModel.Member = null;
|
|
TeamView.ViewModel.Member = newMember;
|
|
}
|
|
|
|
if (TeamView.ViewModel.Leader.EmployeeOid.Equals(updatedEmployee.EmployeeOid))
|
|
{
|
|
TeamView.ViewModel.Leader = null;
|
|
TeamView.ViewModel.Leader = updatedEmployee;
|
|
}
|
|
|
|
UpdateSearchViewObjectList(TeamView.employeesearchview, updatedEmployee);
|
|
UpdateSearchViewObjectList(TeamView.leaderSearchView, updatedEmployee);
|
|
UpdateLoggedInEmployee(updatedEmployee.EmployeeOid);
|
|
}
|
|
else if (typeof (T) == typeof (CompactTeamDC))
|
|
{
|
|
(view as TeamView).ReloadViewModel();
|
|
}
|
|
#endregion
|
|
}
|
|
else if (view.GetType() == typeof(UserView))
|
|
{
|
|
#region UserView
|
|
var updatedEmployee = new CompactEmployeeDC();
|
|
var UserView = view as UserView;
|
|
|
|
ServiceFacade.DoEmployeeServiceSync(s => updatedEmployee = s.LoadCompactEmployee(UserView.ViewModel.Employee.EmployeeOid));
|
|
|
|
UserView.ViewModel.Employee = null;
|
|
UserView.ViewModel.Employee = updatedEmployee;
|
|
|
|
var myView = new BeWoView();
|
|
BeWoApp.MainControl.Views.TryGetValue(UIContext.User, out myView);
|
|
|
|
var naviView = myView as UserNavigationView;
|
|
if (naviView != null)
|
|
{
|
|
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(UserView.employeeSearchView, updatedEmployee);
|
|
UpdateLoggedInEmployee(updatedEmployee.EmployeeOid);
|
|
#endregion
|
|
}
|
|
else if (view.GetType() == typeof(ReportView))
|
|
{
|
|
#region ReportView
|
|
var v = view as ReportView;
|
|
|
|
var aus = new BeWoView(); v.OpenViews.TryGetValue(v.tabitem_maReport, out aus);
|
|
var fls = new BeWoView(); v.OpenViews.TryGetValue(v.tabitem_flsReport, out fls);
|
|
var serv = new BeWoView(); v.OpenViews.TryGetValue(v.tabitem_serviceOverview, out serv);
|
|
|
|
if (typeof (T) == typeof (CompactCustomerDC))
|
|
{
|
|
var updatedCustomer = new CompactCustomerDC();
|
|
ServiceFacade.DoCustomerServiceSync(s => updatedCustomer = s.GetCompactCustomerDC((updatedObject as CompactCustomerDC).CustomerOid));
|
|
|
|
var fls2 = fls as FLSReportView;
|
|
if (fls2 != null)
|
|
{
|
|
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 (serv != 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((updatedObject as CompactEmployeeDC).EmployeeOid));
|
|
|
|
var aus2 = aus as AuslastungReportView;
|
|
if (aus2 != null)
|
|
{
|
|
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);
|
|
}
|
|
|
|
var fls2 = fls as FLSReportView;
|
|
if (fls2 != null)
|
|
{
|
|
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);
|
|
}
|
|
|
|
var serv2 = serv as ServicesReportView;
|
|
if (serv2 != null)
|
|
{
|
|
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((updatedObject as CompactOrganisationDC).OrganisationOid));
|
|
|
|
var serv2 = serv as ServicesReportView;
|
|
if (serv2 != null)
|
|
{
|
|
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((updatedObject as CompactTeamDC).TeamOid));
|
|
|
|
var aus2 = aus as AuslastungReportView;
|
|
if (aus2 != null)
|
|
{
|
|
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);
|
|
}
|
|
}
|
|
#endregion
|
|
}
|
|
else if (view.GetType() == typeof (PersonView))
|
|
{
|
|
#region PersonView
|
|
if (typeof (T) == typeof (CompactOrganisationDC))
|
|
{
|
|
var PersonView = view as PersonView;
|
|
var grid_Relations = (GridControl)PersonView.rootGrid.Resources["grid_Relations"];
|
|
var updatedOrganisation = new CompactOrganisationDC();
|
|
|
|
ServiceFacade.DoCustomerServiceSync(s => updatedOrganisation = s.LoadOrganisationCompact((updatedObject as CompactOrganisationDC).OrganisationOid));
|
|
|
|
if (!(string.IsNullOrWhiteSpace(PersonView.popupedit_organisation.Text)) && PersonView.popupedit_organisation.Text.Equals((updatedObject as CompactOrganisationDC).Name))
|
|
PersonView.popupedit_organisation.Text = updatedOrganisation.ToString();
|
|
|
|
foreach (var item in PersonView.ViewModel.OrganisationRelations.VMList.Where(item => item.Organisation.OrganisationOid == updatedOrganisation.OrganisationOid))
|
|
item.OrganisationString = updatedOrganisation.Name;
|
|
|
|
grid_Relations.RefreshData();
|
|
|
|
if (PersonView.ViewModel.OrganisationRelations.NewVM != null && PersonView.ViewModel.OrganisationRelations.NewVM.Organisation != null)
|
|
if (PersonView.ViewModel.OrganisationRelations.NewVM.Organisation.OrganisationOid.Equals(updatedOrganisation.OrganisationOid))
|
|
PersonView.ViewModel.OrganisationRelations.NewVM.OrganisationString = updatedOrganisation.Name;
|
|
|
|
UpdateSearchViewObjectList((view as PersonView).organisationSearchView, updatedOrganisation);
|
|
}
|
|
else if (typeof (T) == typeof (CompactPersonDC))
|
|
{
|
|
(view as PersonView).ReloadViewModel();
|
|
}
|
|
#endregion
|
|
}
|
|
else if (view.GetType() == typeof (AdditionalServiceView))
|
|
{
|
|
#region AdditionalServiceView
|
|
|
|
var additionalServiceView = view as AdditionalServiceView;
|
|
|
|
if (typeof (T) == typeof (CompactEmployeeDC))
|
|
{
|
|
var updatedEmployee = new CompactEmployeeDC();
|
|
ServiceFacade.DoEmployeeServiceSync(
|
|
s => updatedEmployee = s.LoadCompactEmployee((updatedObject as CompactEmployeeDC).EmployeeOid));
|
|
|
|
UpdateLoggedInEmployee((updatedObject as CompactEmployeeDC).EmployeeOid);
|
|
|
|
for (var i = 0; i < additionalServiceView.MultiEmployeeControlAddServ.SelectedEmployees.Count; i++)
|
|
{
|
|
if (
|
|
!additionalServiceView.MultiEmployeeControlAddServ.SelectedEmployees[i].EmployeeOid.Equals(
|
|
updatedEmployee.EmployeeOid))
|
|
continue;
|
|
|
|
additionalServiceView.MultiEmployeeControlAddServ.SelectedEmployees[i] = new CompactEmployeeDC();
|
|
additionalServiceView.MultiEmployeeControlAddServ.SelectedEmployees[i] = updatedEmployee;
|
|
}
|
|
|
|
UpdateSearchViewObjectList(additionalServiceView.MultiEmployeeControlAddServ.employeesearchview,
|
|
updatedEmployee);
|
|
|
|
}
|
|
else if (typeof (T) == typeof (CompactCustomerDC))
|
|
{
|
|
var updatedCustomer = new CompactCustomerDC();
|
|
|
|
ServiceFacade.DoCustomerServiceSync(
|
|
s => updatedCustomer = s.GetCompactCustomerDC((updatedObject as CompactCustomerDC).CustomerOid));
|
|
|
|
additionalServiceView.MultiAddServGroupOfPeopleSelectionControl.UpdateCustomers(updatedCustomer);
|
|
|
|
foreach (var item in additionalServiceView.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 additionalServiceView.AdditionalServiceBookings.VMList
|
|
from element in item.CustomerOidDict
|
|
where element.Key.Equals(updatedCustomer.CustomerOid)
|
|
select element)
|
|
containsUpdatedCustomer = true;
|
|
|
|
if (!containsUpdatedCustomer)
|
|
return;
|
|
|
|
additionalServiceView.UpdateTeilnahmeGrid();
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
}
|
|
|
|
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 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;
|
|
|
|
dc.Start = new DateTime(vm.DateAndTime.Value.Year,
|
|
vm.DateAndTime.Value.Month,
|
|
vm.DateAndTime.Value.Day,
|
|
vm.StartTime == null ? vm.DateAndTime.Value.Hour : vm.StartDate.Value.Hour,
|
|
vm.StartTime == null ? vm.DateAndTime.Value.Minute : vm.StartDate.Value.Minute,
|
|
vm.StartTime == null ? vm.DateAndTime.Value.Second : vm.StartDate.Value.Second);
|
|
|
|
|
|
|
|
if (BeWoApp.AppSettings.IsEndDateVisible)
|
|
{
|
|
if (vm.EndTime.Value.Day != vm.DateAndTime.Value.Day)
|
|
{
|
|
dc.End = vm.EndTime.Value;
|
|
}
|
|
else
|
|
{
|
|
dc.End = dc.Start.Value.AddMinutes(Convert.ToDouble(vm.Duration));
|
|
}
|
|
}
|
|
else
|
|
{
|
|
dc.End = dc.Start.Value.AddMinutes(Convert.ToDouble(vm.Duration));
|
|
}
|
|
|
|
|
|
if (relDc != null)
|
|
dc.CostBearer2SupportConceptOid = relDc.CostBearer2SupportConceptOid;
|
|
|
|
var r = 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;
|
|
|
|
var test = dc.Start;
|
|
var test2 = vm.DateAndTime;
|
|
|
|
ServiceFacade.DoOperationsServiceSync(o => r = o.ValidateServiceRecord(dc, statistics, maxdays, employeeOids, cb2ScOids));
|
|
|
|
|
|
if (r.Count > 0)
|
|
{
|
|
var exitLoop = false;
|
|
|
|
foreach (var result in r)
|
|
{
|
|
switch (result.ResultType)
|
|
{
|
|
case ServiceRecordValidationResult.OutsideOfSupportConcept:
|
|
MessageBox.Show("Das gewählte Datum '" + vm.DateAndTime.Value.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.DateAndTime.Value.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.DateAndTime.Value.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.DateAndTime.Value.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.DateAndTime.Value.ToShortDateString() + " " + vm.DateAndTime.Value.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.DateAndTime.Value.ToShortDateString() + " " + vm.DateAndTime.Value.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.DateAndTime.Value.ToShortDateString() + " " + vm.DateAndTime.Value.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.DateAndTime.Value.ToShortDateString() + " " + vm.DateAndTime.Value.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:
|
|
if (!BeWoApp.LoggedOnUser.HasRight(UserRightType.ServiceRecord_AllowCreateMoreFLSThanApproved))
|
|
{
|
|
MessageBox.Show("Die für diesen Hilfeplan genehmigten FLS (" + (result.ApprovedHours).ToString("N") + ") werden mit diesem Eintrag überschritten. (" + (result.HoursNew).ToString("N") + ").\nSpeichern nicht möglich.", "Speichern nicht möglich", MessageBoxButton.OK, MessageBoxImage.Information);
|
|
lValid = false;
|
|
}
|
|
else if (MessageBox.Show("Die für diesen Hilfeplan genehmigten FLS (" + (result.ApprovedHours).ToString("N") + ") werden mit diesem Eintrag überschritten. (" + (result.HoursNew).ToString("N") + ").\nMöchten Sie trotzdem speichern?", "Speichern", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.No)
|
|
{
|
|
lValid = false;
|
|
exitLoop = true;
|
|
}
|
|
break;
|
|
case ServiceRecordValidationResult.SettlementInvoiceAlreadyExisting:
|
|
if (!BeWoApp.LoggedOnUser.HasRight(UserRightType.BookServiceRecordAfterSettlementInvoice))
|
|
{
|
|
MessageBox.Show("Sie können den Eintrag nicht bearbeiten, da bereits eine Spitzabrechnung für diesen Hilfeplan erstellt wurde.", "Speichern nicht möglich", MessageBoxButton.OK, MessageBoxImage.Warning);
|
|
lValid = false;
|
|
}
|
|
else if (MessageBox.Show("Es existiert bereits eine Spitzabrechnung. 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:
|
|
MessageBox.Show(result.Message, "Speichern nicht möglich", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
lValid = false;
|
|
exitLoop = true;
|
|
break;
|
|
}
|
|
|
|
if (exitLoop) break;
|
|
}
|
|
}
|
|
|
|
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="documentPreview">Documentpreview für den Report</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, DocumentPreview documentPreview, 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, documentPreview, 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 kasse = (BargeldkassenDC) variablen["bargeldkasse"];
|
|
|
|
ServiceFacade.DoReportServiceAsync(strom => strom.CreateKassenbuchReport(zeitraum, kasse, objectOid, objectTid), ms => BeWoApp.MainControl.Dispatch(() => ShowReportWindow(ms, documentPreview, 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, documentPreview, title)));
|
|
|
|
break;
|
|
}
|
|
}
|
|
|
|
public static void ShowReportWindow(MemoryStream ms, DocumentPreview documentPreview, String title)
|
|
{
|
|
var report = new XtraReport();
|
|
try
|
|
{
|
|
var scrollablePageView = (IScrollInfo)LayoutHelper.FindElement(documentPreview,
|
|
p => p.GetType() == typeof(DevExpress.Xpf.Printing.Native.ScrollablePageView
|
|
));
|
|
if (scrollablePageView != null)
|
|
scrollablePageView.PageUp();
|
|
report.PrintingSystem.LoadDocument(ms);
|
|
|
|
}
|
|
catch (Exception)
|
|
{
|
|
var msg = System.Text.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;
|
|
|
|
DocumentPreview dp = documentPreview;
|
|
if (dp == null)
|
|
{
|
|
dp = new DocumentPreview();
|
|
window = new BeWoWindow { GroupBoxContent = dp, Owner = BeWoApp.CurrentBeWo.MainWindow };
|
|
ThemeManager.SetTheme(window, Theme.Office2010Black);
|
|
}
|
|
dp.Model = new ReportPreviewModelLandscapeBugWorkaround(report);
|
|
ThemeManager.SetTheme(dp, Theme.Office2007Black);
|
|
|
|
dp.BarManager.Loaded += delegate
|
|
{
|
|
dp.BarManager.Items["documentMap"].IsVisible = false;
|
|
dp.BarManager.Items["open"].IsVisible = false;
|
|
dp.BarManager.Items["email"].IsVisible = false;
|
|
dp.BarManager.Items["watermark"].IsVisible = false;
|
|
dp.BarManager.Items["pageSetup"].IsVisible = false;
|
|
dp.BarManager.Items["scaling"].IsVisible = false;
|
|
dp.BarManager.Items["save"].IsVisible = false;
|
|
dp.BarManager.Items["printDirect"].IsVisible = false;
|
|
dp.BarManager.Items["exportText"].IsVisible = false;
|
|
dp.BarManager.Items["exportCSV"].IsVisible = false;
|
|
dp.BarManager.Items["exportMHT"].IsVisible = false;
|
|
dp.BarManager.Items["exportXPS"].IsVisible = false;
|
|
var item = dp.BarManager.Items["exportRTF"];
|
|
};
|
|
if (window != null)
|
|
{
|
|
window.rootGroupBox.Header = String.IsNullOrEmpty(title) ? "Druckvorschau" : title;
|
|
window.Title = "Druckvorschau";
|
|
window.Show();
|
|
}
|
|
|
|
dp.Visibility = Visibility.Visible;
|
|
|
|
BeWoApp.MainControl.EndWaiting();
|
|
}
|
|
}
|
|
}
|