2016-06-27 01:45:38 +02:00
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 ;
2019-07-12 17:36:37 +02:00
using BeWo.View.Navigation.Sorter ;
2016-06-27 01:45:38 +02:00
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
{
/// <summary>
/// Interaktionslogik für UserNavigationView.xaml
/// </summary>
public partial class UserNavigationView : BeWoView
{
private IEnumerable < IFilterableDC > objectList = null ;
private IEnumerable < IFilterableDC > recentList = null ;
public IEnumerable < IFilterableDC > ObjectList { get { return objectList ; } set { objectList = value ; } }
public IEnumerable < IFilterableDC > RecentList { get { return recentList ; } set { recentList = value ; } }
public UserNavigationView ( )
{
this . InitializeComponent ( ) ;
2023-01-12 12:12:27 +01:00
mainNavigationView . ShowArchivedObjectsVisible = false ;
2019-07-12 17:36:37 +02:00
this . mainNavigationView . Sorter = new UserSorter ( ) ;
if ( BeWoApp . LoggedOnUser . HasRight ( UserRightType . User_AllowOrderLicense ) )
2016-06-27 01:45:38 +02:00
{
2022-12-16 01:05:29 +01:00
var url = ServiceFacade . DoOperationsServiceSync ( s = > s . GetLicenseOrderUrlNeu ( "1" ) ) ;
2017-03-28 11:01:28 +02:00
if ( ! String . IsNullOrEmpty ( url ) )
{
this . linkNewLicense . NavigateUri = new Uri ( url ) ;
}
else
{
textblock_link . Visibility = Visibility . Collapsed ;
}
2016-06-27 01:45:38 +02:00
}
else
{
textblock_link . Visibility = Visibility . Collapsed ;
}
2024-09-01 20:47:02 +02:00
mainNavigationView . chkShowDeleted . Visibility = Visibility . Collapsed ;
//###CB SERIENBRIEF mainNavigationView.MailMergeButton.Visibility = Visibility.Collapsed;
2016-06-27 01:45:38 +02:00
}
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
{
2022-11-25 15:22:38 +01:00
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 ,
2016-06-27 01:45:38 +02:00
MessageBoxImage . Information ) ;
}
}
private bool mainNavigationView_DeleteObject ( IFilterableDC obj )
{
CompactUserDC dc = obj as CompactUserDC ;
if ( dc ! = null )
{
2017-03-14 14:06:12 +01:00
if ( dc . UserOid ! = BeWoApp . LoggedOnUser . UserOid . Value )
2016-06-27 01:45:38 +02:00
{
2025-02-05 00:20:11 +01:00
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 )
2017-03-14 14:06:12 +01:00
{
ServiceFacade . DoUserServiceAsync ( s = > s . DeactivateUser ( dc . UserOid , dc . UserVersion ) , ( ) = > this . Dispatch ( ( ) = > ReloadData ( true ) ) , true ) ;
2017-02-01 13:53:59 +01:00
2017-03-14 14:06:12 +01:00
//ServiceFacade.DoUserServiceAsync(s => s.DeactivateUserGroup(ugdc.UserGroupOid.Value, ugdc.UserGroupVersion.Value), () => this.Dispatch(() => ReloadData(true)), true);
2017-02-01 13:53:59 +01:00
2017-03-14 14:06:12 +01:00
return true ;
}
}
else
{
2022-11-25 15:22:38 +01:00
MessageBox . Show ( "Sie können " + BS . Shared . Translation . Translator . Translate ( "Ihren eigenen Benutzer" ) + " nicht löschen!" , "Fehler" , MessageBoxButton . OK , MessageBoxImage . Exclamation ) ;
2016-06-27 01:45:38 +02:00
}
}
return false ;
}
private void mainNavigationView_ExcelExport ( object sender , EventArgs < IEnumerable < IFilterableDC > > 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 < CompactUserDC > ( ) . Select ( c = > c . UserOid ) . ToList ( ) ) , sf . FileName ) ) ;
}
2023-09-20 16:51:35 +02:00
private void mainNavigationView_Print ( object sender , EventArgs < IEnumerable < IFilterableDC > > e )
{
var oids = e . Data . Cast < CompactUserDC > ( ) . Select ( c = > c . UserOid ) . ToList ( ) ;
2016-06-27 01:45:38 +02:00
2023-09-20 16:51:35 +02:00
ServiceFacade . DoReportServiceAsync ( s = > s . CreateUserListReport ( oids ) , r = >
{
this . Dispatch ( ( ) = >
{
BeWoUtils . ShowReportWindow ( r , "Benutzer" ) ;
} ) ;
} ) ;
}
2016-06-27 01:45:38 +02:00
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 < IFilterableDC > ( ) ;
this . mainNavigationView . ShowSearchResult ( objectList ) ;
} ) , true ) ;
ServiceFacade . DoUserServiceAsync ( s = > s . GetLastOpenedUsers ( ) , r = > this . Dispatch ( delegate
{
recentList = r . Cast < IFilterableDC > ( ) ;
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 ( ) ) ) ;
}
}
}