using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Windows; using System.Windows.Navigation; using BeWo.Core; using BeWo.ServiceProxy; using BeWo.View.Detail; using BeWo.View.Navigation.Sorter; using BeWo.ViewModel; using BS.Shared.Core; using BS.Shared.DataContracts; using BS.Shared.DataContracts.Compact; using BS.Shared.Extensions; using Microsoft.Win32; using BS.Shared; namespace BeWo.View.Navigation { /// /// Interaktionslogik für UserNavigationView.xaml /// public partial class UserNavigationView : BeWoView { private IEnumerable objectList = null; private IEnumerable recentList = null; public IEnumerable ObjectList { get { return objectList; } set { objectList = value; } } public IEnumerable RecentList { get { return recentList; } set { recentList = value; } } public UserNavigationView() { this.InitializeComponent(); mainNavigationView.ShowArchivedObjectsVisible = false; this.mainNavigationView.Sorter = new UserSorter(); if (BeWoApp.LoggedOnUser.HasRight(UserRightType.User_AllowOrderLicense)) { var url = ServiceFacade.DoOperationsServiceSync(s => s.GetLicenseOrderUrlNeu("1")); if (!String.IsNullOrEmpty(url)) { this.linkNewLicense.NavigateUri = new Uri(url); } else { textblock_link.Visibility = Visibility.Collapsed; } } else { textblock_link.Visibility = Visibility.Collapsed; } //###CB SERIENBRIEF mainNavigationView.MailMergeButton.Visibility = Visibility.Collapsed; } private void OnLoaded(object sender, RoutedEventArgs e) { ReloadData(false); } private void mainNavigationView_CreateNewObject() { var licenseInfo = ServiceFacade.DoOperationsServiceSync(s => s.GetLicenseInfo()); if (licenseInfo.LicenseInUseCount < licenseInfo.MaxLicenseCount) { VMFactory.CreateUserVMAsync( cb => this.Dispatch(delegate { this.MainControl.NavigateTo(new UserView(cb) {ParentView = this}); })); } else { MessageBox.Show("Leider verfügen Sie nicht über genügend Lizenzen, um " + BS.Shared.Translation.Translator.Translate("einen neuen Benutzer") + " anzulegen.\n\n"+ string.Format("Sie verfügen derzeit über {0} kostenpflichtige " + BS.Shared.Translation.Translator.Translate("BenutzerPlural") + "lizenzen.", licenseInfo.MaxLicenseCount)+ "\n\nSie können nun entweder " + BS.Shared.Translation.Translator.Translate("BenutzerPlural") + " löschen oder neue " + BS.Shared.Translation.Translator.Translate("BenutzerPlural") + "lizenzen bestellen. Bitte beachten Sie, dass hierfür das Recht \"Neue Lizenz bestellen\" erforderlich ist.", BS.Shared.Translation.Translator.Translate("BenutzerSingular") + " anlegen", MessageBoxButton.OK, MessageBoxImage.Information); } } private bool mainNavigationView_DeleteObject(IFilterableDC obj) { CompactUserDC dc = obj as CompactUserDC; if (dc != null) { if (dc.UserOid != BeWoApp.LoggedOnUser.UserOid.Value) { if (MessageBox.Show("Wollen Sie " + BS.Shared.Translation.Translator.Translate("den Benutzer") + "'" + dc.LoginName + "' wirklich löschen?", "Löschen", MessageBoxButton.YesNo, MessageBoxImage.Exclamation) == MessageBoxResult.Yes) { ServiceFacade.DoUserServiceAsync(s => s.DeactivateUser(dc.UserOid, dc.UserVersion), () => this.Dispatch(() => ReloadData(true)), true); //ServiceFacade.DoUserServiceAsync(s => s.DeactivateUserGroup(ugdc.UserGroupOid.Value, ugdc.UserGroupVersion.Value), () => this.Dispatch(() => ReloadData(true)), true); return true; } } else { MessageBox.Show("Sie können " + BS.Shared.Translation.Translator.Translate("Ihren eigenen Benutzer") + " nicht löschen!", "Fehler", MessageBoxButton.OK, MessageBoxImage.Exclamation); } } return false; } private void mainNavigationView_ExcelExport(object sender, EventArgs> e) { var path = BeWoApp.GetAndCreateUserAppDataPath() + "\\Benutzer.xls"; var sf = new SaveFileDialog { FileName = Path.GetFileName(path), Filter = "Microsoft Excel 97-2003-Arbeitsblatt|*.xls|Alle Dateien|*.*" }; if (sf.ShowDialog() != true) return; ServiceFacade.DoDownloadServiceSync(s => BeWoUtils.WriteExcelFile(s.PrepareExcelFileUserExport(mainNavigationView.DownloadLinkEngine.ExcelFileId, e.Data.Cast().Select(c => c.UserOid).ToList()), sf.FileName)); } private void mainNavigationView_OpenObject(IFilterableDC obj) { CompactUserDC dc = obj as CompactUserDC; if (dc != null) { VMFactory.CreateUserVMAsync(dc.UserOid, cb => this.Dispatch(delegate { this.MainControl.NavigateTo(new UserView(cb) { ParentView = this }); })); } } public override void ChildViewClosed() { recentList = null; objectList = null; } private void MainNavigationView_OnReloadData() { ReloadData(true); } internal void ReloadData(bool refresh) { if (refresh || recentList == null) { ServiceFacade.DoUserServiceAsync(s => s.GetAllUsersCompact(), r => this.Dispatch(delegate { objectList = r.Cast(); this.mainNavigationView.ShowSearchResult(objectList); }), true); ServiceFacade.DoUserServiceAsync(s => s.GetLastOpenedUsers(), r => this.Dispatch(delegate { recentList = r.Cast(); this.mainNavigationView.ShowHistory(recentList); }), true); } else { this.mainNavigationView.ShowSearchResult(objectList); this.mainNavigationView.ShowHistory(recentList); } } private void LinkNewLicense_OnRequestNavigate(object sender, RequestNavigateEventArgs e) { System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo((sender as System.Windows.Documents.Hyperlink).NavigateUri.ToString())); } } }