2016-06-27 01:45:38 +02:00
using System ;
using System.Collections.Generic ;
using System.Linq ;
using System.ServiceModel ;
2017-02-01 13:53:59 +01:00
using BeWo.Data ;
2016-06-27 01:45:38 +02:00
using BeWo.Data.Access ;
using BeWo.Data.Entities ;
using BeWo.Service.Core ;
using BeWo.Service.DCEntityMapper ;
2020-04-08 14:25:01 +02:00
using BeWo.Service.OwnChat ;
2018-10-08 11:57:16 +02:00
using BeWo.Service.Plugins ;
using BeWo.Service.SBD ;
2016-06-27 01:45:38 +02:00
using BeWo.Service.Security ;
using BeWo.Service.ServiceContracts ;
2022-11-30 12:31:02 +01:00
using BeWo.Service.Urlaubsplanung ;
2020-12-16 21:49:47 +01:00
using BeWo.View.Navigation.Filter ;
2016-06-27 01:45:38 +02:00
using BS.Shared ;
using BS.Shared.DataContracts ;
using BS.Shared.DataContracts.Compact ;
using BS.Shared.Extensions ;
using NHibernate ;
2025-03-16 20:42:21 +01:00
using BeWo.ServiceUtils.History ;
2025-06-02 12:33:14 +02:00
using BeWoFault = BS . Shared . Core . BeWoFault ;
using BeWoFaultType = BS . Shared . Core . BeWoFaultType ;
2016-06-27 01:45:38 +02:00
namespace BeWo.Service.ServiceImplementations
{
2025-09-09 14:57:45 +02:00
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall, ConcurrencyMode = ConcurrencyMode.Single)]
public class EmployeeServiceImp : IEmployeeService
{
public void ArchiveEmployee ( long pOid , long pVersion )
{
try
{
var e = DAOFactory . GenericDAO . LoadByID < Employee > ( pOid ) ;
e . Person . IsActive = ActivationTypeId . Archived ;
2019-07-10 10:11:10 +02:00
2025-03-16 20:42:21 +01:00
HistoryCreator . MakeNewEmployeeHistoryEntry ( e , MapperFactory . EmployeeDC_Employee . MapToNewDC ( e ) , StatementType . Archived ) ;
2019-07-10 10:11:10 +02:00
2025-09-09 14:57:45 +02:00
ServiceLogic . SetActivationType < Employee > ( pOid , pVersion , ActivationTypeId . Archived ) ;
2019-07-10 10:11:10 +02:00
2025-09-09 14:57:45 +02:00
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
public void DeactivateAssessmentSheetCategories ( List < AssessmentSheetCategoryDC > dcs )
2016-06-27 01:45:38 +02:00
{
try
{
2025-09-09 14:57:45 +02:00
ServiceLogic . SetActivationType < AssessmentSheetCategory > ( dcs . ToDictionary ( i = > i . AssessmentSheetCategoryOid . Value , i = > i . AssessmentSheetCategoryVersion . Value ) , ActivationTypeId . Deleted ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
public void DeactivateAssessmentSheetEntries ( List < AssessmentSheetEntryDC > dcs )
{
try
{
//ServiceLogic.SetActivationType<AssessmentSheetEntry>(dcs.ToDictionary(i => i.AssessmentSheetEntryOid.Value, i => i.AssessmentSheetEntryVersion.Value), ActivationTypeId.Deleted);
var entries = DAOFactory . GenericDAO . LoadByIDs < AssessmentSheetEntry > ( dcs . Select ( i = > i . AssessmentSheetEntryOid . Value ) ) . Where ( e = > e . SystemEntryID = = null ) ;
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
//entries.DoForEach(or => MapperFactory.AssessmentSheetEntryDC_AssessmentSheetEntry.ConcurrencyCheck(pOid2Version[or.Oid.Value], or));
DAOFactory . GenericDAO . Delete ( entries ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
public void DeactivateAssessmentSheetValues ( List < AssessmentSheetValueDC > dcs )
{
try
{
ServiceLogic . SetActivationType < AssessmentSheetValue > ( dcs . ToDictionary ( i = > i . AssessmentSheetValueOid . Value , i = > i . AssessmentSheetValueVersion . Value ) , ActivationTypeId . Deleted ) ;
2016-06-27 01:45:38 +02:00
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2025-09-09 14:57:45 +02:00
public void DeactivateEmployee ( long pOid , long pVersion )
2016-06-27 01:45:38 +02:00
{
try
{
2025-09-09 14:57:45 +02:00
var e = DAOFactory . GenericDAO . LoadByID < Employee > ( pOid ) ;
e . Person . IsActive = ActivationTypeId . Deleted ;
ServiceLogic . SetActivationType < Employee > ( pOid , pVersion , ActivationTypeId . Deleted ) ;
2016-11-08 13:50:58 +01:00
2025-09-09 14:57:45 +02:00
HistoryCreator . MakeNewEmployeeHistoryEntry ( e , MapperFactory . EmployeeDC_Employee . MapToNewDC ( e ) , StatementType . Delete ) ;
2016-11-08 13:50:58 +01:00
2025-09-09 14:57:45 +02:00
DeleteEmployeeCustomerRelationForEmployee ( pOid ) ;
2019-07-10 10:11:10 +02:00
}
2016-06-27 01:45:38 +02:00
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2025-09-09 14:57:45 +02:00
public void DeleteEmployeeCustomerRelationForEmployee ( long employeeOid )
2016-06-27 01:45:38 +02:00
{
2025-09-09 14:57:45 +02:00
var emp = DAOFactory . GenericDAO . LoadByID < Employee > ( employeeOid ) ;
foreach ( var e2c in emp . Employee2CustomerList )
{
DAOFactory . GenericDAO . Delete ( e2c ) ;
}
2016-06-27 01:45:38 +02:00
}
2016-11-08 13:50:58 +01:00
2025-09-09 14:57:45 +02:00
public void DeactivateEmployees ( Dictionary < long , long > pOid2Version )
2016-06-27 01:45:38 +02:00
{
try
{
2025-09-09 14:57:45 +02:00
ServiceLogic . SetActivationType < Employee > ( pOid2Version , ActivationTypeId . Deleted ) ;
2016-11-08 13:50:58 +01:00
2025-09-09 14:57:45 +02:00
foreach ( var key in pOid2Version . Keys )
{
DeleteEmployeeCustomerRelationForEmployee ( key ) ;
}
2016-06-27 01:45:38 +02:00
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2025-09-09 14:57:45 +02:00
public void DeactivateNewsItems ( List < NewsItemDC > dcs )
{
try
{
ServiceLogic . SetActivationType < NewsItem > ( dcs . ToDictionary ( i = > i . NewsItemOid . Value , i = > i . NewsItemVersion . Value ) , ActivationTypeId . Deleted ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
public void DeactivateTeam ( long pOid , long pVersion )
{
try
{
ServiceLogic . SetActivationType < Team > ( pOid , pVersion , ActivationTypeId . Deleted ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
public void DeactivateTeams ( Dictionary < long , long > pOid2Version )
{
2016-06-27 01:45:38 +02:00
try
{
2025-09-09 14:57:45 +02:00
ServiceLogic . SetActivationType < Team > ( pOid2Version , ActivationTypeId . Deleted ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
public void DeleteEmployee ( long pOid , long pVersion )
{
try
{
this . DeleteEmployees ( new Dictionary < long , long > { { pOid , pVersion } } ) ;
2016-06-27 01:45:38 +02:00
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
2025-09-09 14:57:45 +02:00
}
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
public void DeleteEmployeeCustomerRelation ( long pOid , long pVersion )
2016-06-27 01:45:38 +02:00
{
try
{
2025-09-09 14:57:45 +02:00
this . DeleteEmployeeCustomerRelations ( new Dictionary < long , long > { { pOid , pVersion } } ) ;
2016-06-27 01:45:38 +02:00
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2025-09-09 14:57:45 +02:00
public void DeleteEmployeeCustomerRelations ( Dictionary < long , long > pOid2Version )
{
2016-06-27 01:45:38 +02:00
try
{
2025-09-09 14:57:45 +02:00
var lOriginals = DAOFactory . GenericDAO . LoadByIDs < Employee2Customer > ( pOid2Version . Select ( e = > e . Key ) ) ;
lOriginals . DoForEach ( or = > MapperFactory . EmployeeCustomerRelDC_Employee2CustomerMapper . ConcurrencyCheck ( pOid2Version [ or . Oid . Value ] , or ) ) ;
2016-06-27 01:45:38 +02:00
DAOFactory . GenericDAO . Delete ( lOriginals ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
2025-09-09 14:57:45 +02:00
}
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
public void DeleteEmployees ( Dictionary < long , long > pOid2Version )
{
2016-06-27 01:45:38 +02:00
try
{
2025-09-09 14:57:45 +02:00
pOid2Version . Keys . DoForEach ( SettingsLogic . RemoveFromAllHistories < Employee > ) ;
var lOriginals = DAOFactory . GenericDAO . LoadByIDs < Employee > ( pOid2Version . Select ( e = > e . Key ) ) ;
lOriginals . DoForEach ( or = > MapperFactory . EmployeeDC_Employee . ConcurrencyCheck ( pOid2Version [ or . Oid . Value ] , or ) ) ;
2016-06-27 01:45:38 +02:00
2019-07-10 10:11:10 +02:00
foreach ( Employee e in lOriginals )
{
2025-09-09 14:57:45 +02:00
HistoryCreator . MakeNewEmployeeHistoryEntry ( e , MapperFactory . EmployeeDC_Employee . MapToNewDC ( e ) , StatementType . Delete ) ;
2019-07-10 10:11:10 +02:00
}
2025-09-09 14:57:45 +02:00
DAOFactory . GenericDAO . Delete ( lOriginals ) ;
2016-06-27 01:45:38 +02:00
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
2025-09-09 14:57:45 +02:00
}
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
public List < CompactEmployeeDC > FindEmployee ( string pFirstName , string pLastName , string pPersonnelNumber )
{
2016-06-27 01:45:38 +02:00
try
{
2025-09-09 14:57:45 +02:00
return MapperFactory . CompactEmployeeDC_Employee . MapToNewDCs ( DAOFactory . SearchDAO . FindEmployee ( pFirstName , pLastName , pPersonnelNumber ) ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
public List < CompactTeamDC > FindTeams ( string pTeamName , string pLeaderFirstName , string pLeaderLastName )
{
try
{
return MapperFactory . CompactTeamDC_Team . MapToNewDCs ( DAOFactory . SearchDAO . FindTeams ( pTeamName , pLeaderFirstName , pLeaderLastName ) ) ;
2016-06-27 01:45:38 +02:00
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
2025-09-09 14:57:45 +02:00
}
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
public List < CompactEmployeeDC > GetAllActiveAndArchivedEmployeesCompact ( )
{
2016-06-27 01:45:38 +02:00
try
{
2025-09-09 14:57:45 +02:00
var s = PluginLoader . FindClass < EmployeeService > ( ) ;
2018-10-08 11:57:16 +02:00
2025-09-09 14:57:45 +02:00
return s . GetAllActiveAndArchivedEmployeesCompact ( ) ;
2016-06-27 01:45:38 +02:00
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
2025-09-09 14:57:45 +02:00
}
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
public List < CompactEmployeeDC > GetAllActiveEmployeesCompact ( )
{
2016-06-27 01:45:38 +02:00
try
{
2025-09-09 14:57:45 +02:00
var s = PluginLoader . FindClass < EmployeeService > ( ) ;
2018-10-08 11:57:16 +02:00
2025-09-09 14:57:45 +02:00
return s . GetAllActiveEmployeesCompact ( ) ;
2018-03-02 16:33:39 +01:00
2016-06-27 01:45:38 +02:00
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
2025-09-09 14:57:45 +02:00
}
2022-04-25 15:45:02 +02:00
2025-09-09 14:57:45 +02:00
public List < CompactEmployeeDC > GetAllAuthorizedCompactEmployees ( )
2016-06-27 01:45:38 +02:00
{
try
{
2022-04-25 15:45:02 +02:00
2025-09-09 14:57:45 +02:00
try
{
var s = PluginLoader . FindClass < EmployeeService > ( ) ;
2022-04-25 15:45:02 +02:00
2025-09-09 14:57:45 +02:00
return s . GetAllAuthorizedCompactEmployees ( ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
2016-06-27 01:45:38 +02:00
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2017-11-23 10:58:07 +01:00
2025-09-09 14:57:45 +02:00
public List < CompactEmployeeDC > GetAllTeamMember ( CompactEmployeeDC employee )
2016-06-27 01:45:38 +02:00
{
try
{
2025-09-09 14:57:45 +02:00
Dictionary < long , bool > inTeamDict = new Dictionary < long , bool > ( ) ;
List < Employee > teamMember = new List < Employee > ( ) ;
var teams = DAOFactory . GenericDAO . GetAllActive < Team > ( ) ;
foreach ( var team in teams )
{
bool contained = ( team . Leader ! = null & & team . Leader . Oid = = employee . EmployeeOid ) ;
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
if ( ! contained )
{
foreach ( var e in team . MemberList )
{
if ( e . Oid . Value . Equals ( employee . EmployeeOid ) )
contained = true ;
}
}
if ( contained )
{
foreach ( var e in team . MemberList )
{
if ( ! inTeamDict . ContainsKey ( e . Oid . Value ) )
{
teamMember . Add ( e ) ;
inTeamDict . Add ( e . Oid . Value , true ) ;
}
}
}
}
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
var dcList = MapperFactory . CompactEmployeeDC_Employee . MapToNewDCs ( teamMember ) ;
if ( ! inTeamDict . ContainsKey ( employee . EmployeeOid ) )
dcList . Add ( employee ) ;
return dcList ;
2016-06-27 01:45:38 +02:00
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2025-09-09 14:57:45 +02:00
public List < EmploymentTypeDC > GetAllEmploymentTypes ( )
{
2016-06-27 01:45:38 +02:00
try
{
2025-09-09 14:57:45 +02:00
return MapperFactory . EmploymentTypeDC_EmploymentType . MapToNewDCs ( DAOFactory . GenericDAO . GetAllActive < EmploymentType > ( ) ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
public EmploymentTypeDC GetEmploymentType ( long oid )
{
try
{
return MapperFactory . EmploymentTypeDC_EmploymentType . MapToNewDC ( DAOFactory . GenericDAO . GetByID < EmploymentType > ( oid ) ) ;
2016-06-27 01:45:38 +02:00
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
2025-09-09 14:57:45 +02:00
}
2017-06-30 13:33:49 +02:00
2025-09-09 14:57:45 +02:00
public List < long > InsertNewEmploymentTypes ( List < EmploymentTypeDC > pEntries )
{
2017-07-25 10:50:45 +02:00
try
{
2025-09-09 14:57:45 +02:00
var lEntities = MapperFactory . EmploymentTypeDC_EmploymentType . MapToNewEntities ( pEntries ) ;
DAOFactory . GenericDAO . Insert ( lEntities ) ;
return lEntities . Select ( e = > e . Oid . Value ) . ToList ( ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
public void UpdateEmploymentTypes ( List < EmploymentTypeDC > pEntries )
{
try
{
var lOriginals = DAOFactory . GenericDAO . LoadByIDs < EmploymentType > ( pEntries . Select ( en = > en . EmploymentTypeOid . Value ) ) ;
MapperFactory . EmploymentTypeDC_EmploymentType . MergeWithEntitys ( pEntries , lOriginals ) ;
DAOFactory . GenericDAO . Update ( lOriginals ) ;
2017-07-25 10:50:45 +02:00
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
2025-09-09 14:57:45 +02:00
}
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
public void DeactivateEmploymentTypes ( Dictionary < long , long > pOid2Version )
{
try
{
ServiceLogic . SetActivationType < EmploymentType > ( pOid2Version , ActivationTypeId . Deleted ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
public List < AssessmentSheetCategoryDC > GetAllAssessmentSheetCategories ( )
{
try
{
return MapperFactory . AssessmentSheetCategoryDC_AssessmentSheetCategory . MapToNewDCs ( DAOFactory . GenericDAO . GetAllActive < AssessmentSheetCategory > ( ) . Where ( cat = > ! cat . ScopeType . HasValue | | cat . ScopeType . Value = = ScopeTypeId . Global ) ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
public List < AssessmentSheetEntryDC > GetAllAssessmentSheetEntries ( )
{
try
{
return MapperFactory . AssessmentSheetEntryDC_AssessmentSheetEntry . MapToNewDCs ( DAOFactory . GenericDAO . GetAllActive < AssessmentSheetEntry > ( ) ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
public List < AssessmentSheetValueDC > GetAllAssessmentSheetValues ( )
{
try
{
return MapperFactory . AssessmentSheetValueDC_AssessmentSheetValue . MapToNewDCs ( DAOFactory . GenericDAO . GetAllActive < AssessmentSheetValue > ( ) ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
public List < EmployeeDC > GetAllEmployees ( )
{
try
{
return DAOFactory . GenericDAO . GetAll < Employee > ( ) . Select ( emp = > MapperFactory . EmployeeDC_Employee . MapToNewDC ( emp ) ) . ToList ( ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
public List < NewsItemDC > GetAllNewsItems ( )
{
try
{
return MapperFactory . NewsItemDC_NewsItem . MapToNewDCs ( DAOFactory . GenericDAO . GetAllActive < NewsItem > ( ) ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
public List < CompactTeamDC > GetAllTeamsCompact ( )
{
try
{
var s = PluginLoader . FindClass < EmployeeService > ( ) ;
2017-08-23 17:17:08 +02:00
2025-10-24 01:49:21 +02:00
return s . GetAllTeamsCompact ( false ) ;
2017-02-01 13:53:59 +01:00
2016-06-27 01:45:38 +02:00
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2025-10-24 01:49:21 +02:00
public List < CompactTeamDC > GetAllTeamsIncludingOwnChatCompact ( )
{
try
{
var s = PluginLoader . FindClass < EmployeeService > ( ) ;
return s . GetAllTeamsCompact ( true ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2016-06-27 01:45:38 +02:00
public List < AssessmentSheetEntryDC > GetAssessmentSheetEntriesForCustomer ( long customerOid , DateTime startDt , DateTime endDt )
{
2025-09-09 14:57:45 +02:00
try
{
2025-11-28 12:07:35 +01:00
return MapperFactory . AssessmentSheetEntryDC_AssessmentSheetEntry . MapToNewDCs ( DAOFactory . SearchDAO . GetAssessmentSheetEntriesForCustomer ( customerOid , startDt , endDt ) ) ;
2025-09-09 14:57:45 +02:00
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2016-06-27 01:45:38 +02:00
public EmployeeDC GetEmployeeWithPersonOid ( long pPersonOid )
{
try
{
return MapperFactory . EmployeeDC_Employee . MapToNewDC ( DAOFactory . SearchDAO . FindEmployeeWithPersonOid ( pPersonOid ) ) ;
}
2017-10-10 11:06:40 +02:00
catch ( Exception e )
2016-06-27 01:45:38 +02:00
{
2025-06-02 12:33:14 +02:00
throw new FaultException < BS . Shared . Core . BeWoFault > ( new BS . Shared . Core . BeWoFault ( String . Format ( "Mitarbeiter mit Id {0} wurde nicht gefunden!" , pPersonOid ) ) ) ;
2016-06-27 01:45:38 +02:00
}
}
2017-11-23 10:58:07 +01:00
2016-06-27 01:45:38 +02:00
public List < CompactEmployeeDC > GetLastOpenedEmployees ( )
{
try
{
return MapperFactory . CompactEmployeeDC_Employee . MapToNewDCs ( SettingsLogic . GetLastOpened < Employee > ( ) ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2025-09-09 14:57:45 +02:00
public List < CompactTeamDC > GetLastOpenedTeams ( )
{
try
{
return MapperFactory . CompactTeamDC_Team . MapToNewDCs ( SettingsLogic . GetLastOpened < Team > ( ) ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
public List < NewsItemDC > GetPublishedNewsItems ( )
{
try
{
return this . GetAllNewsItems ( ) . Where ( i = > i . PublishDate . HasValue & & i . PublishDate . Value . Date < = DateTime . Now ) . ToList ( ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2016-06-27 01:45:38 +02:00
public List < NewsItemDC > GetPublishedNewsItemsForEmployee ( long employeeOid , bool fetchTeamNews )
{
try
{
IList < long > teamOids = new List < long > ( ) ;
var allItems = DAOFactory . GenericDAO . GetAllActive < NewsItem > ( ) ;
if ( fetchTeamNews )
{
var teams = DAOFactory . SearchDAO . FindTeamsOfEmployee ( employeeOid ) ;
var leadingTeams = DAOFactory . SearchDAO . FindLeadingTeams ( employeeOid ) ;
if ( teams ! = null )
{
teamOids = teams . Select ( t = > t . Oid . Value ) . ToList ( ) ;
}
if ( leadingTeams ! = null )
{
teamOids . AddRange ( leadingTeams . Select ( t = > t . Oid . Value ) ) ;
}
}
teamOids = teamOids . Distinct ( ) . ToList ( ) ;
var items =
allItems . Where (
i = >
{
if ( ! i . TeamOid . HasValue )
{
return i . PublishDate . HasValue & & i . PublishDate . Value . Date < = DateTime . Now ;
}
return teamOids . Contains ( i . TeamOid . Value ) ;
2025-09-09 14:57:45 +02:00
2016-06-27 01:45:38 +02:00
} ) . ToList ( ) ;
var dcList = MapperFactory . NewsItemDC_NewsItem . MapToNewDCs ( items ) ;
List < NewsItemDC > newDcList = new List < NewsItemDC > ( ) ;
if ( fetchTeamNews )
{
foreach ( var teamOid in teamOids )
{
if ( dcList . Count ( i = > i . Team ! = null & & i . Team . TeamOid = = teamOid ) = = 0 )
{
Team t = DAOFactory . GenericDAO . LoadByID < Team > ( teamOid ) ;
NewsItemDC newDc = new NewsItemDC ( ) ;
newDc . Team = new CompactTeamDC ( ) ;
newDc . Team . Name = t . Name ;
newDc . Team . TeamOid = t . Oid . Value ;
newDc . Team . TeamVersion = t . Version . Value ;
newDcList . Add ( newDc ) ;
}
}
}
dcList . AddRange ( newDcList ) ;
2025-09-09 14:57:45 +02:00
2016-06-27 01:45:38 +02:00
return dcList . OrderByDescending ( i = > i . PublishDate ) . ToList ( ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2025-09-09 14:57:45 +02:00
public void DeleteNewsItem ( long pOid , long pVersion )
{
try
{
var original = DAOFactory . GenericDAO . LoadByID < NewsItem > ( pOid ) ;
MapperFactory . NewsItemDC_NewsItem . ConcurrencyCheck ( pVersion , original ) ;
DAOFactory . GenericDAO . Delete ( original ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
public long InsertNewNewsItem ( NewsItemDC dc )
{
return InsertNewNewsItems ( new List < NewsItemDC > { dc } ) . FirstOrDefault ( ) ;
}
public long UpdateNewsItem ( NewsItemDC dc )
{
try
{
var lOrigial = DAOFactory . GenericDAO . LoadByID < NewsItem > ( dc . NewsItemOid . Value ) ;
MapperFactory . NewsItemDC_NewsItem . MergeWithEntity ( dc , lOrigial ) ;
DAOFactory . GenericDAO . Update ( lOrigial ) ;
return lOrigial . Oid . Value ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
public void InsertEmployeeCustomerRelation ( CustomerEmployeeRelationDC pRelationDC )
2016-06-27 01:45:38 +02:00
{
try
{
2025-09-09 14:57:45 +02:00
DAOFactory . GenericDAO . Insert ( MapperFactory . EmployeeCustomerRelDC_Employee2CustomerMapper . MapToNewEntity ( pRelationDC ) ) ;
2016-06-27 01:45:38 +02:00
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2025-09-09 14:57:45 +02:00
public List < long > InsertNewAssessmentSheetCategories ( List < AssessmentSheetCategoryDC > dcs )
2016-06-27 01:45:38 +02:00
{
2025-09-09 14:57:45 +02:00
try
{
var newAssessmentSheetCategories = MapperFactory . AssessmentSheetCategoryDC_AssessmentSheetCategory . MapToNewEntities ( dcs ) ;
DAOFactory . GenericDAO . Insert ( newAssessmentSheetCategories ) ;
return newAssessmentSheetCategories . Select ( i = > i . Oid . Value ) . ToList ( ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
2016-06-27 01:45:38 +02:00
}
2025-09-09 14:57:45 +02:00
public List < long > InsertNewAssessmentSheetEntries ( List < AssessmentSheetEntryDC > dcs )
2016-06-27 01:45:38 +02:00
{
try
{
2025-09-09 14:57:45 +02:00
var newAssessmentSheetEntries = MapperFactory . AssessmentSheetEntryDC_AssessmentSheetEntry . MapToNewEntities ( dcs ) ;
DAOFactory . GenericDAO . Insert ( newAssessmentSheetEntries ) ;
return newAssessmentSheetEntries . Select ( i = > i . Oid . Value ) . ToList ( ) ;
2016-06-27 01:45:38 +02:00
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2025-09-09 14:57:45 +02:00
public List < long > InsertNewAssessmentSheetValues ( List < AssessmentSheetValueDC > dcs )
{
try
{
var newAssessmentSheetValues = MapperFactory . AssessmentSheetValueDC_AssessmentSheetValue . MapToNewEntities ( dcs ) ;
DAOFactory . GenericDAO . Insert ( newAssessmentSheetValues ) ;
return newAssessmentSheetValues . Select ( i = > i . Oid . Value ) . ToList ( ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
public long InsertNewEmployee ( EmployeeDC pEmployeeDC )
{
try
{
2016-06-27 01:45:38 +02:00
var li = SecurityUtils . GetLicenseInfo ( ) ;
if ( li . EmployeeCount > = li . MaxEmployeeCount )
{
return - 1 ;
}
2018-10-08 11:57:16 +02:00
2025-09-09 14:57:45 +02:00
var es = PluginLoader . FindClass < EmployeeService > ( ) ;
2019-07-10 10:11:10 +02:00
var id = es . InsertNewEmployee ( pEmployeeDC ) ;
var temp = DAOFactory . GenericDAO . LoadByID < Employee > ( id ) ;
2025-09-09 14:57:45 +02:00
HistoryCreator . MakeNewEmployeeHistoryEntry ( temp , pEmployeeDC , StatementType . Insert ) ;
2019-07-10 10:11:10 +02:00
2025-09-09 14:57:45 +02:00
OwnChatHelper . StartOwnChatSync ( ) ;
2019-09-17 17:44:57 +02:00
2025-09-09 14:57:45 +02:00
return id ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
public List < long > InsertNewNewsItems ( List < NewsItemDC > dcs )
{
try
{
var newNewsItems = MapperFactory . NewsItemDC_NewsItem . MapToNewEntities ( dcs ) ;
DAOFactory . GenericDAO . Insert ( newNewsItems ) ;
return newNewsItems . Select ( i = > i . Oid . Value ) . ToList ( ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
public long InsertNewTeam ( TeamDC pTeam )
{
try
{
Team lTeam = MapperFactory . TeamDC_Team . MapToNewEntity ( pTeam ) ;
DAOFactory . GenericDAO . Insert ( lTeam ) ;
2020-04-08 14:25:01 +02:00
2025-09-09 14:57:45 +02:00
OwnChatHelper . StartOwnChatSync ( ) ;
2020-04-08 14:25:01 +02:00
2025-09-09 14:57:45 +02:00
return lTeam . Oid . Value ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
public TeamDC LoadTeam ( long pTeamOid )
{
try
{
SettingsLogic . AddToUsersHistory < Team > ( pTeamOid ) ;
return MapperFactory . TeamDC_Team . MapToNewDC ( DAOFactory . GenericDAO . LoadByID < Team > ( pTeamOid ) ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
public CompactTeamDC LoadCompactTeam ( long pTeamOid )
{
try
{
SettingsLogic . AddToUsersHistory < Team > ( pTeamOid ) ;
return MapperFactory . CompactTeamDC_Team . MapToNewDC ( DAOFactory . GenericDAO . LoadByID < Team > ( pTeamOid ) ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2016-06-27 01:45:38 +02:00
public EmployeeDC LoadLoggedOnEmployee ( long pEmployeeOid )
{
try
{
return MapperFactory . EmployeeDC_Employee . MapToNewDC ( DAOFactory . GenericDAO . LoadByID < Employee > ( pEmployeeOid ) ) ;
}
catch ( Exception e )
{
2025-06-02 12:33:14 +02:00
throw new FaultException < BS . Shared . Core . BeWoFault > ( new BeWoFault ( e ) , e . Message ) ;
2016-06-27 01:45:38 +02:00
}
}
2025-09-09 14:57:45 +02:00
public EmployeeDC LoadEmployee ( long pEmployeeOid )
{
try
{
var es = PluginLoader . FindClass < EmployeeService > ( ) ;
2022-04-06 11:49:20 +02:00
return es . LoadEmployee ( pEmployeeOid ) ;
2016-06-27 01:45:38 +02:00
}
catch ( Exception e )
{
2025-06-02 12:33:14 +02:00
throw new FaultException < BS . Shared . Core . BeWoFault > ( new BS . Shared . Core . BeWoFault ( e ) , e . Message ) ;
2016-06-27 01:45:38 +02:00
}
}
2025-09-09 14:57:45 +02:00
public CompactEmployeeDC LoadCompactEmployee ( long pEmployeeOid )
{
try
{
SettingsLogic . AddToUsersHistory < Employee > ( pEmployeeOid ) ;
return MapperFactory . CompactEmployeeDC_Employee . MapToNewDC ( DAOFactory . GenericDAO . LoadByID < Employee > ( pEmployeeOid ) ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
public void UpdateAssessmentSheetCategories ( List < AssessmentSheetCategoryDC > dcs )
{
try
{
var originals = DAOFactory . GenericDAO . LoadByIDs < AssessmentSheetCategory > ( dcs . Select ( i = > i . AssessmentSheetCategoryOid . Value ) ) ;
MapperFactory . AssessmentSheetCategoryDC_AssessmentSheetCategory . MergeWithEntitys ( dcs , originals ) ;
DAOFactory . GenericDAO . Update ( originals ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
public void UpdateAssessmentSheetEntries ( List < AssessmentSheetEntryDC > dcs )
{
try
{
var originals = DAOFactory . GenericDAO . LoadByIDs < AssessmentSheetEntry > ( dcs . Select ( i = > i . AssessmentSheetEntryOid . Value ) ) ;
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
var aSCategories = DAOFactory . GenericDAO . GetAll < AssessmentSheetCategory > ( ) . Where ( c = > c . SystemEntryID . Equals ( SystemEntryID . AdditionalServiceAssessmentSheet ) ) ;
2016-06-27 01:45:38 +02:00
List < AssessmentSheetEntry > removeList = new List < AssessmentSheetEntry > ( ) ;
2025-09-09 14:57:45 +02:00
foreach ( var ase in originals )
{
2016-06-27 01:45:38 +02:00
if ( ase . SystemEntryID . Equals ( SystemEntryID . AdditionalServiceAssessmentSheet ) & &
aSCategories . Count ( c = > c . Description . Equals ( ase . AssessmentSheetCategory . Description ) ) > 0 )
2025-09-09 14:57:45 +02:00
{
removeList . Add ( ase ) ;
}
}
foreach ( var ase in removeList )
{
originals . Remove ( ase ) ;
}
if ( originals . Count > 0 )
{
MapperFactory . AssessmentSheetEntryDC_AssessmentSheetEntry . MergeWithEntitys ( dcs , originals ) ;
2016-06-27 01:45:38 +02:00
if ( originals . Count > 0 )
DAOFactory . GenericDAO . Update ( originals ) ;
2025-09-09 14:57:45 +02:00
}
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
public void UpdateAssessmentSheetValues ( List < AssessmentSheetValueDC > dcs )
{
try
{
var originals = DAOFactory . GenericDAO . LoadByIDs < AssessmentSheetValue > ( dcs . Select ( i = > i . AssessmentSheetValueOid . Value ) ) ;
MapperFactory . AssessmentSheetValueDC_AssessmentSheetValue . MergeWithEntitys ( dcs , originals ) ;
DAOFactory . GenericDAO . Update ( originals ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
public long UpdateEmployee ( EmployeeDC pEmployeeDC )
{
try
{
var lOriginal = DAOFactory . GenericDAO . LoadByID < Employee > ( pEmployeeDC . EmployeeOid . Value ) ;
HistoryCreator . MakeNewEmployeeHistoryEntry ( lOriginal , pEmployeeDC , StatementType . Update ) ;
MapperFactory . EmployeeDC_Employee . MergeWithEntity ( pEmployeeDC , lOriginal ) ;
2025-03-16 20:42:21 +01:00
2019-07-10 10:11:10 +02:00
2025-09-09 14:57:45 +02:00
DAOFactory . GenericDAO . Update ( lOriginal ) ;
2020-04-08 14:25:01 +02:00
2025-09-09 14:57:45 +02:00
OwnChatHelper . StartOwnChatSync ( ) ;
return lOriginal . Oid . Value ;
}
catch ( StaleObjectStateException )
{
throw new FaultException < BeWoFault > ( new BeWoFault ( "Wurde in der Zwischenzeit geändert" , BeWoFaultType . Concurrency ) ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
public void UpdateNewsItems ( List < NewsItemDC > dcs )
{
try
{
var originals = DAOFactory . GenericDAO . LoadByIDs < NewsItem > ( dcs . Select ( i = > i . NewsItemOid . Value ) ) ;
MapperFactory . NewsItemDC_NewsItem . MergeWithEntitys ( dcs , originals ) ;
DAOFactory . GenericDAO . Update ( originals ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
public long UpdateTeam ( TeamDC pTeam )
{
try
{
Team lOriginal = DAOFactory . GenericDAO . LoadByID < Team > ( pTeam . TeamOid . Value ) ;
MapperFactory . TeamDC_Team . MergeWithEntity ( pTeam , lOriginal ) ;
DAOFactory . GenericDAO . Update ( lOriginal ) ;
2020-04-08 14:25:01 +02:00
2025-09-09 14:57:45 +02:00
OwnChatHelper . StartOwnChatSync ( ) ;
2020-04-08 14:25:01 +02:00
2025-09-09 14:57:45 +02:00
return lOriginal . Oid . Value ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
public List < AbsenceTimeDC > GetAllEmployeeAbsenceTimes ( )
{
try
{
return MapperFactory . AbsenceTimeDC_AbsenceTime . MapToNewDCs ( DAOFactory . SearchDAO . FindAbsenceTimes ( true , false ) ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
public List < AbsenceTimeDC > GetAllEmployeeAbsenceTimesForMonth ( int year , int month )
{
try
{
var startdate = new DateTime ( year , month , 1 ) ;
var enddate = startdate . AddMonths ( 1 ) . AddTicks ( - 1 ) ;
2021-05-14 06:57:09 +02:00
2025-09-09 14:57:45 +02:00
var absencetimes = DAOFactory . SearchDAO . FindAbsenceTimes ( startdate , enddate ) ;
2021-05-14 06:57:09 +02:00
2025-09-09 14:57:45 +02:00
return MapperFactory . AbsenceTimeDC_AbsenceTime . MapToNewDCs ( absencetimes ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
public List < AbsenceTimeDC > GetMultipleEmployeeAbsenceTimesForMonth ( int year , int month , List < long > empOids )
{
try
{
var startdate = new DateTime ( year , month , 1 ) ;
var enddate = startdate . AddMonths ( 1 ) . AddTicks ( - 1 ) ;
2021-09-22 15:34:38 +02:00
2025-09-09 14:57:45 +02:00
List < AbsenceTime > absenceTimes = new List < AbsenceTime > ( ) ;
2021-09-22 15:34:38 +02:00
2025-09-09 14:57:45 +02:00
foreach ( var oid in empOids )
{
absenceTimes . AddRange ( DAOFactory . SearchDAO . FindAbsenceTimesForEmployee ( startdate , enddate , oid ) ) ;
}
2021-09-22 15:34:38 +02:00
2025-09-09 14:57:45 +02:00
return MapperFactory . AbsenceTimeDC_AbsenceTime . MapToNewDCs ( absenceTimes ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
public List < AbsenceTimeDC > GetAllEmployeeAbsenceTimesForYear ( int year )
{
try
{
var startdate = new DateTime ( year , 1 , 1 ) ;
var enddate = startdate . AddYears ( 1 ) . AddTicks ( - 1 ) ;
2021-08-27 07:34:43 +02:00
2025-09-09 14:57:45 +02:00
var absencetimes = DAOFactory . SearchDAO . FindAbsenceTimes ( startdate , enddate ) ;
2021-08-27 07:34:43 +02:00
return MapperFactory . AbsenceTimeDC_AbsenceTime . MapToNewDCs ( absencetimes ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
2021-05-14 06:57:09 +02:00
}
2026-02-20 12:36:20 +01:00
public List < CompactEmployeeDC > GetAllEmployeeMitUeberschneidendenAbwesenheiten ( List < CompactEmployeeDC > compactEmployeeList , DateTime newAbsStart , DateTime newAbsEnd )
{
var result = new List < CompactEmployeeDC > ( ) ;
var employee = DAOFactory . GenericDAO . GetByIDs < Employee > ( compactEmployeeList . Select ( e = > e . EmployeeOid ) ) ;
foreach ( var emp in employee )
{
if ( emp . AbsenceTimes ! = null )
{
foreach ( var abs in emp . AbsenceTimes )
{
// Jede vorhandene Abwesenheit auf eine Überschneidung prüfen
DateTime altStart = abs . Start ? ? DateTime . MinValue ;
DateTime altEnd = abs . End ? ? DateTime . MaxValue ;
if ( newAbsEnd > = altStart & & newAbsStart < = altEnd )
{
// Gibt es eine Überschneidung, diesen Mitarbeiter zum Result hinzufügen und mit dem nächsten weitermachen
result . Add ( compactEmployeeList . First ( c = > c . EmployeeOid = = emp . Oid ) ) ;
break ;
}
}
}
}
2026-02-20 16:36:41 +01:00
return result ;
}
public void SpeichereKalenderterminAlsAbwesenheit ( List < CompactEmployeeDC > compactEmployeeList , AbsenceReasonDC reasonDC , string notice , DateTime newAbsStart , DateTime newAbsEnd )
{
// Da man technisch die EmployeeOid nicht mit speichern kann, wenn man in die DB insertet, muss der Employee geholt werden.
// In den speichert man dann eine neue AbsenceTime und dann muss der Employee geupdated werden
AbsenceReason reason = DAOFactory . GenericDAO . GetByID < AbsenceReason > ( reasonDC . AbsenceReasonOid . Value ) ;
List < Employee > empList = DAOFactory . GenericDAO . GetByIDs < Employee > ( compactEmployeeList . Select ( e = > e . EmployeeOid ) . ToList ( ) ) ;
foreach ( var emp in empList )
{
AbsenceTime absenceTime = new AbsenceTime ( )
{
AbsenceReason = reason ,
CustomerOid = null ,
EmployeeOid = emp . Oid ,
IsActive = ActivationTypeId . Active ,
Notice = notice ,
Start = newAbsStart ,
End = newAbsEnd
} ;
emp . AbsenceTimes . Add ( absenceTime ) ;
}
DAOFactory . GenericDAO . Update ( empList ) ;
}
2025-09-09 14:57:45 +02:00
public void DeactivateGroupOfPeople ( long pOid , long pVersion )
{
try
{
ServiceLogic . SetActivationType < GroupOfPeople > ( pOid , pVersion , ActivationTypeId . Deleted ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
public long InsertNewGroupOfPeople ( GroupOfPeopleDC pGroupOfPeople )
{
try
{
GroupOfPeople obj = MapperFactory . GroupOfPeopleDC_GroupOfPeople . MapToNewEntity ( pGroupOfPeople ) ;
DAOFactory . GenericDAO . Insert ( obj ) ;
return obj . Oid . Value ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
public GroupOfPeopleDC LoadGroupOfPeople ( long pOid )
{
try
{
return MapperFactory . GroupOfPeopleDC_GroupOfPeople . MapToNewDC ( DAOFactory . GenericDAO . LoadByID < GroupOfPeople > ( pOid ) ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
public long UpdateGroupOfPeople ( GroupOfPeopleDC pGroupOfPeople )
{
try
{
GroupOfPeople lOriginal = DAOFactory . GenericDAO . LoadByID < GroupOfPeople > ( pGroupOfPeople . GroupOfPeopleOid . Value ) ;
MapperFactory . GroupOfPeopleDC_GroupOfPeople . MergeWithEntity ( pGroupOfPeople , lOriginal ) ;
DAOFactory . GenericDAO . Update ( lOriginal ) ;
return lOriginal . Oid . Value ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
public List < CompactGroupOfPeopleDC > GetAllGroupsCompact ( long? employeeOid )
{
try
{
var groups = GetAllGroupsContainingMemberOfEmployee ( employeeOid ) ;
return MapperFactory . CompactGroupOfPeopleDC_GroupOfPeople . MapToNewDCs ( groups ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
public List < GroupOfPeopleDC > GetAllGroups ( long? employeeOid )
{
try
{
var groups = GetAllGroupsContainingMemberOfEmployee ( employeeOid ) ;
return MapperFactory . GroupOfPeopleDC_GroupOfPeople . MapToNewDCs ( groups . OrderBy ( g = > g . Name ) ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
private IEnumerable < GroupOfPeople > GetAllGroupsContainingMemberOfEmployee ( long? employeeOid )
{
var allgroups = DAOFactory . GenericDAO . GetAllActive < GroupOfPeople > ( ) ;
if ( ! employeeOid . HasValue )
return allgroups ;
var groups = new List < GroupOfPeople > ( ) ;
Dictionary < long , bool > processedGroups = new Dictionary < long , bool > ( ) ;
Employee emp = DAOFactory . GenericDAO . LoadByID < Employee > ( employeeOid . Value ) ;
ApplicationUser loggedInUser = null ;
if ( LoggedInUserOperationContextExt . Current ! = null & & LoggedInUserOperationContextExt . Current . User ! = null )
{
loggedInUser = LoggedInUserOperationContextExt . Current . User ;
}
else
{
loggedInUser = SessionFacade . LoggedInUser ;
}
bool nurEigene = true ;
if ( loggedInUser ! = null )
{
//Alle
if ( Utils . UserHasRight ( loggedInUser , UserRightType . SupportConcept_ViewAllSupportConcepts ) )
{
nurEigene = false ;
}
//Vom Team
else if ( Utils . UserHasRight ( loggedInUser , UserRightType . SupportConcept_ViewMyTeams ) )
{
//?
}
//Eigene
else if ( Utils . UserHasRight ( loggedInUser , UserRightType . SupportConceptView_View ) )
{
nurEigene = true ;
}
}
foreach ( var groupOfPeople in allgroups )
{
if ( ! processedGroups . ContainsKey ( groupOfPeople . Oid . Value ) )
{
processedGroups . Add ( groupOfPeople . Oid . Value , true ) ;
if ( nurEigene )
{
if ( employeeOid . Value = = groupOfPeople . CreatedByEmployeeOid | | ContainsMemberOfEmployee ( groupOfPeople , emp ) )
groups . Add ( groupOfPeople ) ;
}
else
{
groups . Add ( groupOfPeople ) ;
}
}
}
return groups ;
}
private bool ContainsMemberOfEmployee ( GroupOfPeople groupOfPeople , Employee emp )
{
return groupOfPeople . CostBearer2SupportConceptList . Any ( c2s = > emp . Employee2CustomerList . Any ( e2c = > e2c . CustomerOid = = c2s . SupportConcept . Customer . Oid ) ) ;
}
public bool IsAssessmentSheetEntryBelongingToAS ( long assessmentSheetCategoryOid )
{
var cat = DAOFactory . GenericDAO . GetByID < AssessmentSheetCategory > ( assessmentSheetCategoryOid ) ;
return cat . SystemEntryID . Equals ( SystemEntryID . AdditionalServiceAssessmentSheet ) ;
}
public bool IsAssessmentSheetCategoryBelongingToAS ( long assessmentSheetCategoryOid )
{
try
{
var category = DAOFactory . GenericDAO . GetByID < AssessmentSheetCategory > ( assessmentSheetCategoryOid ) ;
return category . SystemEntryID . Equals ( SystemEntryID . AdditionalServiceAssessmentSheet ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
public List < OvertimeDC > GetAllOvertimesFromEmployee ( long employeeOid )
{
try
{
var allOvertimes = DAOFactory . GenericDAO . GetAll < Overtime > ( ) ;
var overtimes = allOvertimes . Where ( o = > o . EmployeeOid . Equals ( employeeOid ) ) ;
return MapperFactory . OvertimeDC_Overtime . MapToNewDCs ( overtimes ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2026-02-20 12:36:20 +01:00
2025-09-09 14:57:45 +02:00
public List < OvertimeDC > GetAllOvertimes ( )
{
try
{
var allOvertimes = DAOFactory . GenericDAO . GetAll < Overtime > ( ) ;
return MapperFactory . OvertimeDC_Overtime . MapToNewDCs ( allOvertimes ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
public void DeleteOvertimes ( Dictionary < long , long > pOid2Version )
{
try
{
pOid2Version . Keys . DoForEach ( SettingsLogic . RemoveFromAllHistories < Overtime > ) ;
var lOriginals = DAOFactory . GenericDAO . LoadByIDs < Overtime > ( pOid2Version . Select ( e = > e . Key ) ) ;
lOriginals . DoForEach ( or = > MapperFactory . OvertimeDC_Overtime . ConcurrencyCheck ( pOid2Version [ or . Oid . Value ] , or ) ) ;
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
DAOFactory . GenericDAO . Delete ( lOriginals ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
public List < long > InsertOvertimes ( List < OvertimeDC > pOvertimes )
{
try
{
var newOvertimes = MapperFactory . OvertimeDC_Overtime . MapToNewEntities ( pOvertimes ) ;
DAOFactory . GenericDAO . Insert ( newOvertimes ) ;
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
return newOvertimes . Select ( i = > i . Oid . Value ) . ToList ( ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
public List < long > UpdateOvertimes ( List < OvertimeDC > pOvertimes )
{
try
{
var pOids = ( from motherfucker in pOvertimes where motherfucker . OvertimeOid . HasValue select motherfucker . OvertimeOid . Value ) . ToList ( ) ;
var lOriginals = DAOFactory . GenericDAO . LoadByIDs < Overtime > ( pOids ) ;
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
MapperFactory . OvertimeDC_Overtime . MergeWithEntitys ( pOvertimes , lOriginals ) ;
DAOFactory . GenericDAO . Update ( lOriginals ) ;
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
return ( from mumu in lOriginals where mumu . Oid . HasValue select mumu . Oid . Value ) . ToList ( ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
public List < AuszahlungsartDC > GetAllAuszahlungsarten ( )
{
try
{
var alleAuszahlungsarten = DAOFactory . GenericDAO . GetAllActive < Auszahlungsart > ( ) ;
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
return MapperFactory . AuszahlungsartDC_Auszahlungsart . MapToNewDCs ( alleAuszahlungsarten ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
public List < long > InsertAuszahlungsarten ( IEnumerable < AuszahlungsartDC > pAuszahlungsarten )
{
try
{
var neueAuszahlungsarten = MapperFactory . AuszahlungsartDC_Auszahlungsart . MapToNewEntities ( pAuszahlungsarten ) ;
DAOFactory . GenericDAO . Insert ( neueAuszahlungsarten ) ;
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
return neueAuszahlungsarten . Select ( i = > i . Oid . Value ) . ToList ( ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2019-02-12 19:22:22 +01:00
2025-09-09 14:57:45 +02:00
public List < long > UpdateAuszahlungsarten ( List < AuszahlungsartDC > pAuszahlungsarten )
{
try
{
var pOids = ( from motherfucker in pAuszahlungsarten where motherfucker . AuszahlungsartOid . HasValue select motherfucker . AuszahlungsartOid . Value ) . ToList ( ) ;
var lOriginals = DAOFactory . GenericDAO . LoadByIDs < Auszahlungsart > ( pOids ) ;
2019-02-12 19:22:22 +01:00
2025-09-09 14:57:45 +02:00
MapperFactory . AuszahlungsartDC_Auszahlungsart . MergeWithEntitys ( pAuszahlungsarten , lOriginals ) ;
DAOFactory . GenericDAO . Update ( lOriginals ) ;
2019-02-12 19:22:22 +01:00
2025-09-09 14:57:45 +02:00
return ( from mumu in lOriginals where mumu . Oid . HasValue select mumu . Oid . Value ) . ToList ( ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2019-02-12 19:22:22 +01:00
2025-09-09 14:57:45 +02:00
public void DeleteAuszahlungsarten ( Dictionary < long , long > pOid2Version )
{
try
{
pOid2Version . Keys . DoForEach ( SettingsLogic . RemoveFromAllHistories < Auszahlungsart > ) ;
var lOriginals = DAOFactory . GenericDAO . LoadByIDs < Auszahlungsart > ( pOid2Version . Select ( e = > e . Key ) ) ;
lOriginals . DoForEach ( or = > MapperFactory . AuszahlungsartDC_Auszahlungsart . ConcurrencyCheck ( pOid2Version [ or . Oid . Value ] , or ) ) ;
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
//ServiceLogic.SetActivationType<Auszahlungsart>(pOid2Version, ActivationTypeId.Archived);
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
DAOFactory . GenericDAO . Delete ( lOriginals ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
public List < CompactTeamDC > GetTeamOidsByEmployee ( long pEmployeeOid )
{
try
{
var liste = DAOFactory . SearchDAO . FindTeamsOfEmployee ( pEmployeeOid ) ;
return MapperFactory . CompactTeamDC_Team . MapToNewDCs ( liste ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
public List < CompactEmployeeDC > GetAllChatActiveEmployeesCompact ( )
{
try
{
var employees = DAOFactory . SearchDAO . FindAllChatActiveEmployees ( ) ;
2016-06-27 01:45:38 +02:00
2025-11-28 12:07:35 +01:00
return MapperFactory . CompactEmployeeDC_Employee . MapToNewDCs ( employees ) . OrderBy ( e = > e . ToString ( ) ) . ToList ( ) ;
2016-06-27 01:45:38 +02:00
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2025-09-09 14:57:45 +02:00
public List < EmployeeAPPCodeDC > GetAllEmployeeAppCodes ( long pEmployeeOid )
{
2016-06-27 01:45:38 +02:00
try
{
2025-09-09 14:57:45 +02:00
var liste = DAOFactory . SearchDAO . FindAllEmployeeAppCodes ( pEmployeeOid ) ;
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
return MapperFactory . EmployeeAPPCodeDC_EmployeeAPPCode . MapToNewDCs ( liste ) ;
2016-06-27 01:45:38 +02:00
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
2025-09-09 14:57:45 +02:00
}
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
public Byte [ ] GetEmployeeImage ( long employeeOid )
2016-06-27 01:45:38 +02:00
{
try
{
2025-09-09 14:57:45 +02:00
var employee = DAOFactory . GenericDAO . GetByID < Employee > ( employeeOid ) ;
return employee . Person . Images ! = null & & employee . Person . Images . Count > 0 ? employee . Person . Images [ 0 ] . Original : null ;
2016-06-27 01:45:38 +02:00
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2025-09-09 14:57:45 +02:00
public Byte [ ] GetEmployeeThumbnail ( long employeeOid )
{
2016-06-27 01:45:38 +02:00
try
{
2025-09-09 14:57:45 +02:00
var employee = DAOFactory . GenericDAO . GetByID < Employee > ( employeeOid ) ;
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
return employee . Person . Images ! = null & & employee . Person . Images . Count > 0 ? employee . Person . Images [ 0 ] . SmallThumbnail : null ;
2016-06-27 01:45:38 +02:00
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
2025-09-09 14:57:45 +02:00
}
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
public CompactEmployeeDC GetActiveCompactEmployeeWithOid ( long employeeOid )
{
2016-06-27 01:45:38 +02:00
try
{
2025-09-09 14:57:45 +02:00
var employee = DAOFactory . GenericDAO . GetByID < Employee > ( employeeOid ) ;
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
return MapperFactory . CompactEmployeeDC_Employee . MapToNewDC ( employee ) ;
2016-06-27 01:45:38 +02:00
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
2025-09-09 14:57:45 +02:00
}
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
public void InsertNewArbeitsZeit ( ArbeitszeitDC arbeitszeit , ArbeitszeitEintragDC arbeitszeitEintrag )
{
2016-06-27 01:45:38 +02:00
try
{
2025-09-09 14:57:45 +02:00
var x = MapperFactory . ArbeitszeitDC_Arbeitszeit . MapToNewEntity ( arbeitszeit ) ;
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
DAOFactory . GenericDAO . Insert ( x ) ;
arbeitszeitEintrag . ArbeitszeitOid = x . Oid ;
var y = MapperFactory . ArbeitszeitEintragDC_ArbeitszeitEintrag . MapToNewEntity ( arbeitszeitEintrag ) ;
DAOFactory . GenericDAO . Insert ( y ) ;
2016-06-27 01:45:38 +02:00
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
2025-09-09 14:57:45 +02:00
}
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
public ArbeitszeitDC UpdateArbeitszeit ( ArbeitszeitDC pArbeitszeit )
{
2016-06-27 01:45:38 +02:00
try
{
2025-09-09 14:57:45 +02:00
var lOriginal = DAOFactory . GenericDAO . LoadByID < Arbeitszeit > ( pArbeitszeit . ArbeitszeitOid . Value ) ;
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
MapperFactory . ArbeitszeitDC_Arbeitszeit . MergeWithEntity ( pArbeitszeit , lOriginal ) ;
DAOFactory . GenericDAO . Update ( lOriginal ) ;
return MapperFactory . ArbeitszeitDC_Arbeitszeit . MapToNewDC ( lOriginal ) ;
2016-06-27 01:45:38 +02:00
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
2025-09-09 14:57:45 +02:00
}
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
public void DeleteArbeitszeitEintrag ( long arbeistzeitEintragOid )
{
2016-06-27 01:45:38 +02:00
try
{
2025-09-09 14:57:45 +02:00
var lOriginal = DAOFactory . GenericDAO . LoadByID < ArbeitszeitEintrag > ( arbeistzeitEintragOid ) ;
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
DAOFactory . GenericDAO . Delete ( lOriginal ) ;
2016-06-27 01:45:38 +02:00
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
2025-09-09 14:57:45 +02:00
}
public List < CompactVertreterEmployeeDC > GetAllActiveVertreterEmployeesCompact ( long? customerOid , DateTime date )
{
var filter = new VertreterSucheFilterDC ( ) ;
filter . CustomerOid = customerOid ;
filter . StartDate = date ;
filter . EndDate = date ;
filter . VerwendeEntfernungssuche = false ;
return SucheVertreter ( filter ) ;
}
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
public List < CompactVertreterEmployeeDC > SucheVertreter ( VertreterSucheFilterDC filter )
2016-06-27 01:45:38 +02:00
{
try
{
2025-09-09 14:57:45 +02:00
var s = PluginLoader . FindClass < VertretungsManager > ( ) ;
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
return s . SucheVertreter ( filter ) ;
2016-06-27 01:45:38 +02:00
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2025-09-09 14:57:45 +02:00
public List < EmployeeTokenRelationDC > LoadEmployeeTokenRelationsByOid ( IEnumerable < long > pOids )
2016-06-27 01:45:38 +02:00
{
try
{
2025-09-09 14:57:45 +02:00
var customerTokenRels = DAOFactory . GenericDAO . LoadByIDs < Employee2Token > ( pOids ) ;
2025-03-16 20:42:21 +01:00
2025-09-09 14:57:45 +02:00
return MapperFactory . EmployeeTokenRelationDC_Employee2Token . MapToNewDCs ( customerTokenRels ) ;
2016-06-27 01:45:38 +02:00
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2025-09-09 14:57:45 +02:00
public EmployeeDC GetEmployeeByID ( long employeeOid )
{
2016-06-27 01:45:38 +02:00
try
{
2025-09-09 14:57:45 +02:00
var employee = DAOFactory . GenericDAO . GetByID < Employee > ( employeeOid ) ;
return MapperFactory . EmployeeDC_Employee . MapToNewDC ( employee ) ;
2016-06-27 01:45:38 +02:00
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
2025-09-09 14:57:45 +02:00
}
2017-05-15 09:11:13 +02:00
2025-09-09 14:57:45 +02:00
public void CreateOrUpdateChatBewoMessageSync ( long? eOid , string text )
{
try
{
2017-05-15 09:11:13 +02:00
2025-09-09 14:57:45 +02:00
var chatMessageSync = DAOFactory . SearchDAO . FindEmployeeChatBewoMessageSync ( eOid . Value ) ;
2017-05-15 09:11:13 +02:00
2025-09-09 14:57:45 +02:00
int count = chatMessageSync . Count ( ) ;
if ( count > 0 )
{
2017-05-17 08:28:12 +02:00
2025-09-09 14:57:45 +02:00
foreach ( var item in chatMessageSync )
{
item . MessageSyncText = text ;
}
2017-05-17 08:28:12 +02:00
2025-09-09 14:57:45 +02:00
DAOFactory . GenericDAO . Update ( chatMessageSync ) ;
}
else
{
ChatBewoMessageSyncDC cms = new ChatBewoMessageSyncDC ( ) ;
2017-05-17 08:28:12 +02:00
2025-09-09 14:57:45 +02:00
cms . EmployeeOid = eOid ;
cms . MessageSyncText = text ;
2016-06-27 01:45:38 +02:00
2025-09-09 14:57:45 +02:00
var x = MapperFactory . ChatBewoMessageSyncDC_ChatBewoMessageSync . MapToNewEntity ( cms ) ;
DAOFactory . GenericDAO . Insert ( x ) ;
}
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2018-10-08 11:57:16 +02:00
2025-09-09 14:57:45 +02:00
public ChatBewoMessageSyncDC GetChatBewoMessageSync ( long? eOid )
{
try
{
var chatMessageSync = DAOFactory . GenericDAO . GetAllActive < ChatBewoMessageSync > ( ) ;
2023-03-17 13:53:40 +01:00
2025-09-09 14:57:45 +02:00
ChatBewoMessageSync cms = null ;
foreach ( var item in chatMessageSync )
{
if ( eOid = = item . EmployeeOid )
{
cms = item ;
}
}
2017-06-30 13:33:49 +02:00
2025-09-09 14:57:45 +02:00
if ( cms ! = null )
{
var x = MapperFactory . ChatBewoMessageSyncDC_ChatBewoMessageSync . MapToNewDC ( cms ) ;
2023-03-17 13:53:40 +01:00
2025-09-09 14:57:45 +02:00
return x ;
}
2017-06-30 13:33:49 +02:00
2025-09-09 14:57:45 +02:00
return null ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2017-06-30 13:33:49 +02:00
2025-09-09 14:57:45 +02:00
public void ReactivateEmployee ( long pOid , long pVersion )
{
2017-07-25 10:50:45 +02:00
try
{
2025-09-09 14:57:45 +02:00
var e = DAOFactory . GenericDAO . LoadByID < Employee > ( pOid ) ;
HistoryCreator . MakeNewEmployeeHistoryEntry ( e , MapperFactory . EmployeeDC_Employee . MapToNewDC ( e ) , StatementType . Reactivate ) ;
2017-07-25 10:50:45 +02:00
2025-09-09 14:57:45 +02:00
ServiceLogic . SetActivationType < Employee > ( pOid , pVersion , ActivationTypeId . Active ) ;
2017-07-25 10:50:45 +02:00
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
2025-09-09 14:57:45 +02:00
}
2019-07-10 10:11:10 +02:00
2025-09-09 14:57:45 +02:00
public List < CompactEmployeeDC > GetAllCompactEmployees ( )
{
try
{
var s = PluginLoader . FindClass < EmployeeService > ( ) ;
2018-05-20 13:19:28 +02:00
2025-09-09 14:57:45 +02:00
return s . GetAllCompactEmployees ( ) ;
2020-08-17 15:50:00 +02:00
2025-09-09 14:57:45 +02:00
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2018-05-20 13:19:28 +02:00
2025-09-09 14:57:45 +02:00
public List < long > LoadTeamsRelatedCustomerOids ( long employeeOid )
{
try
{
return DAOFactory . SearchDAO . FindTeamRelatedCustomerOids ( employeeOid ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2019-07-10 10:11:10 +02:00
2025-09-09 14:57:45 +02:00
public List < EmployeeDC > GetAllActiveEmployees ( )
{
try
{
var employees = DAOFactory . GenericDAO . GetAllActive < Employee > ( ) ;
2020-08-17 16:52:25 +02:00
2025-09-09 14:57:45 +02:00
return MapperFactory . EmployeeDC_Employee . MapToNewDCs ( employees ) ;
}
catch ( Exception exception )
{
throw Utils . CreateBeWoFaultException ( exception ) ;
}
}
2020-08-17 16:52:25 +02:00
2025-09-09 14:57:45 +02:00
/// <summary>
/// Lädt die aktiven CompactCustomerDCs für einen Mitarbeiter mit Rücksichtnahme auf dessen Rechte.
/// </summary>
/// <param name="employeeOid">Oid des Mitarbeiters für den die CompactCustomerDCs geladen werden sollen</param>
/// <returns>Eine Liste mit CompactCustomerDCs</returns>
public List < CompactCustomerDC > GetActiveCompactCustomersForEmployee ( long? employeeOid )
{
try
{
var customers = DAOFactory . SearchDAO . GetAllCustomersForEmployee ( employeeOid ) ;
2020-09-14 19:07:23 +02:00
2025-09-09 14:57:45 +02:00
return MapperFactory . CompactCustomerDC_Customer . MapToNewDCs ( customers ) ;
}
catch ( Exception exception )
{
throw Utils . CreateBeWoFaultException ( exception ) ;
}
}
2020-09-14 19:07:23 +02:00
2025-09-09 14:57:45 +02:00
/// <summary>
/// Lädt die aktiven CompactEmployeeDCs für einen Mitarbeiter mit Rücksichtnahme auf dessen Rechte.
/// </summary>
/// <param name="employeeOid">Oid des Mitarbeiters für den die CompactEmployeeDCs geladen werden sollen</param>
/// <returns>Eine Liste mit CompactEmployeeDCs</returns>
public List < CompactEmployeeDC > GetActiveCompactEmployeesForEmployee ( long employeeOid )
{
try
{
var employees = DAOFactory . SearchDAO . GetAllActiveEmployeesForEmployee ( employeeOid ) ;
2020-09-30 19:23:42 +02:00
2025-09-09 14:57:45 +02:00
return MapperFactory . CompactEmployeeDC_Employee . MapToNewDCs ( employees ) ;
}
catch ( Exception exception )
{
throw Utils . CreateBeWoFaultException ( exception ) ;
}
}
2020-09-30 19:23:42 +02:00
2025-09-09 14:57:45 +02:00
/// <summary>
/// Lädt die Oids der Klienten der Teams und deren Mitgliedern und Anführern.
/// </summary>
/// <param name="employeeOid">Mitarbeiter dessen Teams durchsucht werden sollen.</param>
/// <param name="teamOid">Die Oid eines spezifischen Teams, das durchsucht werden soll. Ist die Oid null, werden alle mit dem angegebenen Mitarbeiter verknüpften Teams durchsucht.</param>
/// <returns></returns>
public List < long > GetTeamRelatedCustomerOids ( long employeeOid , long? teamOid )
{
try
{
var result = new List < long > ( ) ;
2020-11-09 17:55:01 +01:00
2025-09-09 14:57:45 +02:00
var teams = new List < Team > ( ) ;
2020-11-09 17:55:01 +01:00
2025-09-09 14:57:45 +02:00
var teamOids = teams . Where ( team = > team . Oid . HasValue ) . Select ( team = > team . Oid . Value ) ;
2020-11-09 17:55:01 +01:00
2025-09-09 14:57:45 +02:00
if ( teamOid . HasValue )
{
teams . Add ( DAOFactory . GenericDAO . LoadByID < Team > ( teamOid . Value ) ) ;
}
else
{
teams . AddRange ( DAOFactory . SearchDAO . FindLeadingTeams ( employeeOid ) ) ;
teams . AddRange ( DAOFactory . SearchDAO . FindTeamsOfEmployee ( employeeOid ) ) ;
}
2021-02-17 16:59:26 +01:00
2025-09-09 14:57:45 +02:00
teams . DoForEach ( team = >
{
team . MemberList . Where ( member = > member . Oid . HasValue & & member . Oid ! = employeeOid ) . DoForEach ( member = >
{
// Nur, wo der Klient auch vom Team betreut wird
result . AddRangeIfElementsNotIn (
member . Employee2CustomerList . Where (
employee2Customer = > employee2Customer . CustomerOid . HasValue & &
employee2Customer . Customer . Team2CustomerList . Any ( team2Customer = > team2Customer . TeamOid . HasValue & &
teamOids . Contains ( team2Customer . TeamOid . Value ) )
) . Select ( employee2Customer = > employee2Customer . CustomerOid . Value )
) ;
} ) ;
} ) ;
return result ;
}
catch ( Exception exception )
{
throw Utils . CreateBeWoFaultException ( exception ) ;
}
}
2020-11-09 17:55:01 +01:00
2025-09-09 14:57:45 +02:00
/// <summary>
/// Lädt die aktiven TeamDCs für einen Mitarbeiter mit Rücksichtnahme auf dessen Rechte.
/// </summary>
/// <param name="employeeOid">Oid des Mitarbeiters für den die TeamDCs geladen werden sollen. Ist die employeeOid null, wird die des angemeldeten Mitarbeiters genommen.</param>
/// <returns>Eine Liste mit TeamDCs</returns>
public List < TeamDC > GetAllActiveTeamsForEmployee ( long? employeeOid )
{
try
{
var teams = DAOFactory . SearchDAO . GetAllActiveTeamsForEmployee ( employeeOid ) ;
2020-11-09 17:55:01 +01:00
2025-09-09 14:57:45 +02:00
return MapperFactory . TeamDC_Team . MapToNewDCs ( teams ) ;
}
catch ( Exception exception )
{
throw Utils . CreateBeWoFaultException ( exception ) ;
}
}
2020-11-09 17:55:01 +01:00
2025-09-09 14:57:45 +02:00
/// <summary>
/// Lädt die aktiven CompactTeamDCs für einen Mitarbeiter mit Rücksichtnahme auf dessen Rechte.
/// </summary>
/// <param name="employeeOid">Oid des Mitarbeiters für den die CompactTeamDCs geladen werden sollen. Ist die employeeOid null, wird die des angemeldeten Mitarbeiters genommen.</param>
/// <returns>Eine Liste mit CompactTeamDCs</returns>
public List < CompactTeamDC > GetAllActiveCompactTeamsForEmployee ( long? employeeOid )
{
try
{
var teams = DAOFactory . SearchDAO . GetAllActiveTeamsForEmployee ( employeeOid ) ;
2020-11-09 17:55:01 +01:00
2025-09-09 14:57:45 +02:00
return MapperFactory . CompactTeamDC_Team . MapToNewDCs ( teams ) ;
}
catch ( Exception exception )
{
throw Utils . CreateBeWoFaultException ( exception ) ;
}
}
2020-11-09 17:55:01 +01:00
2025-09-09 14:57:45 +02:00
public List < SupportConceptDC > GetActiveSupportConceptsForEmployee ( long? employeeOid , CustomerFilterEnum supportConceptFilter )
{
try
{
var supportConcepts = DAOFactory . SearchDAO . GetActiveSupportConceptsForEmployee ( employeeOid , supportConceptFilter ) ;
2020-12-16 21:49:47 +01:00
2025-09-09 14:57:45 +02:00
return MapperFactory . SupportConceptDC_SupportConcept . MapToNewDCs ( supportConcepts ) ;
}
catch ( Exception exception )
{
throw Utils . CreateBeWoFaultException ( exception ) ;
}
}
2020-12-16 21:49:47 +01:00
2025-09-09 14:57:45 +02:00
public List < long > FindTeamCustomers ( long? teamOid )
{
try
{
var customerOids = new List < long > ( ) ;
2021-02-17 16:59:26 +01:00
2025-09-09 14:57:45 +02:00
ApplicationUser loggedInUser ;
2021-02-17 16:59:26 +01:00
2025-09-09 14:57:45 +02:00
if ( LoggedInUserOperationContextExt . Current ! = null & & LoggedInUserOperationContextExt . Current . User ! = null )
{
loggedInUser = LoggedInUserOperationContextExt . Current . User ;
}
else
{
loggedInUser = SessionFacade . LoggedInUser ;
}
2021-02-17 16:59:26 +01:00
2025-09-09 14:57:45 +02:00
if ( loggedInUser ? . Employee ! = null )
{
var teams = new List < Team > ( ) ;
2021-02-17 16:59:26 +01:00
2025-09-09 14:57:45 +02:00
if ( teamOid . HasValue )
{
teams . Add ( DAOFactory . GenericDAO . LoadByID < Team > ( teamOid . Value ) ) ;
}
else if ( loggedInUser . Employee . Oid . HasValue )
{
teams . AddRange ( DAOFactory . SearchDAO . FindLeadingTeams ( loggedInUser . Employee . Oid . Value ) ) ;
teams . AddRange ( DAOFactory . SearchDAO . FindTeamsOfEmployee ( loggedInUser . Employee . Oid . Value ) ) ;
}
2021-02-17 16:59:26 +01:00
2025-09-09 14:57:45 +02:00
foreach ( var team in teams )
{
if ( ! team . Oid . HasValue )
{
continue ;
}
2021-02-17 16:59:26 +01:00
2025-09-09 14:57:45 +02:00
var customers = DAOFactory . SearchDAO . FindCustomerOfTeam ( team . Oid . Value ) ;
foreach ( var c in customers )
{
if ( c . IsActive = = ActivationTypeId . Active )
{
if ( c . Oid . HasValue & & ! customerOids . Contains ( c . Oid . Value ) )
{
customerOids . Add ( c . Oid . Value ) ;
}
}
2021-02-17 16:59:26 +01:00
2025-09-09 14:57:45 +02:00
}
2021-02-17 16:59:26 +01:00
2025-09-09 14:57:45 +02:00
}
}
2021-02-17 16:59:26 +01:00
2025-09-09 14:57:45 +02:00
return customerOids ;
}
catch ( Exception exception )
{
throw Utils . CreateBeWoFaultException ( exception ) ;
}
}
2021-02-17 16:59:26 +01:00
2025-09-09 14:57:45 +02:00
public List < CompactCustomerDC > GetActiveCustomersForEmployee ( long? employeeOid , CustomerFilterEnum customerFilter )
{
try
{
var customers = DAOFactory . SearchDAO . GetActiveCustomersForEmployee ( employeeOid , customerFilter ) ;
2021-04-19 04:38:29 +02:00
2025-09-09 14:57:45 +02:00
return MapperFactory . CompactCustomerDC_Customer . MapToNewDCs ( customers ) ;
}
catch ( Exception exception )
{
throw Utils . CreateBeWoFaultException ( exception ) ;
}
}
2021-04-19 04:38:29 +02:00
2025-09-09 14:57:45 +02:00
public UrlaubsplanerRootDC BuildUrlaubsplanerRootObject ( AbsenceOverviewFilterDC filter )
{
try
{
UrlaubsplanungsManager manager = new UrlaubsplanungsManager ( ) ;
return manager . BuildUrlaubsplanerRootObject ( filter ) ;
}
catch ( Exception exception )
{
throw Utils . CreateBeWoFaultException ( exception ) ;
}
}
2021-06-10 14:40:23 +02:00
2025-09-09 14:57:45 +02:00
public decimal CalculateUrlaubstage ( DateTime entryDate , DateTime ? endDate , int anzahlArbeitstage , int restlicheTageImJahr , decimal? urlaubstageProJahr ) // Enddatum in die Parameterliste
{
try
{
decimal urlaubstage = 0 ;
if ( urlaubstageProJahr = = null )
urlaubstageProJahr = 0 m ;
2022-11-30 12:31:02 +01:00
2025-09-09 14:57:45 +02:00
if ( entryDate . Day = = 1 & & entryDate . Month = = 1 | | entryDate . Day = = 2 & & entryDate . Month = = 1 ) //Erster Tag im Jahr
{
//Prüfen, ob Enddatum Ende des Jahres oder früher ist
if ( endDate = = null )
{
if ( anzahlArbeitstage < 5 ) // weniger als 5 Tage
urlaubstage = ( decimal ) urlaubstageProJahr / 5 m * anzahlArbeitstage ;
else
{
if ( anzahlArbeitstage = = 5 ) // 5 Tage
urlaubstage = ( decimal ) urlaubstageProJahr ;
else if ( anzahlArbeitstage = = 6 ) // 6 Tage
urlaubstage = ( decimal ) urlaubstageProJahr ;
}
}
else
{
if ( anzahlArbeitstage < 5 ) // weniger als 5 Tage
urlaubstage = ( decimal ) urlaubstageProJahr / 5 m * anzahlArbeitstage ;
else
{
if ( anzahlArbeitstage = = 5 ) // 5 Tage
urlaubstage = ( decimal ) urlaubstageProJahr / 365 m * restlicheTageImJahr ;
else if ( anzahlArbeitstage = = 6 ) // 6 Tage
urlaubstage = ( decimal ) urlaubstageProJahr / 365 m * restlicheTageImJahr ;
}
}
2021-06-10 14:40:23 +02:00
2025-09-09 14:57:45 +02:00
}
else if ( /*entryDate.Day > 1 && */ anzahlArbeitstage < 5 ) // Mitten im Jahr, weniger als 5 Tage
{
urlaubstage = ( decimal ) urlaubstageProJahr / 5 m * 3 m / 365 m * restlicheTageImJahr ;
}
else if ( /*entryDate.Day > 1 && */ anzahlArbeitstage > = 5 ) // Mitten im Jahr, 5 oder 6 Tage
{
urlaubstage = ( decimal ) urlaubstageProJahr / 365 m * restlicheTageImJahr ;
}
2021-06-10 14:40:23 +02:00
2025-09-09 14:57:45 +02:00
// Runden
//urlaubstage = 25.51m;
if ( urlaubstage - ( int ) urlaubstage < = 0.1 m )
{
urlaubstage = Math . Round ( urlaubstage , MidpointRounding . AwayFromZero ) ;
}
else if ( urlaubstage - ( int ) urlaubstage < = 0.5 m )
{
decimal digits = urlaubstage - ( int ) urlaubstage ;
urlaubstage = urlaubstage - digits + 0.5 m ;
}
else if ( urlaubstage - ( int ) urlaubstage < = 1.0 m )
{
urlaubstage = Math . Ceiling ( urlaubstage ) ;
}
2021-06-10 14:40:23 +02:00
2025-09-09 14:57:45 +02:00
return urlaubstage ;
}
catch ( Exception ex )
{
throw Utils . CreateBeWoFaultException ( ex ) ;
}
2021-06-10 14:40:23 +02:00
2025-09-09 14:57:45 +02:00
}
2021-06-10 14:40:23 +02:00
2025-09-09 14:57:45 +02:00
public List < GeschenkterUrlaubstagDC > GetGeschenkteUrlaubstageForEmployee ( long empOid )
{
try
{
List < GeschenkterUrlaubstagDC > tage = new List < GeschenkterUrlaubstagDC > ( ) ;
2021-06-10 14:40:23 +02:00
2025-09-09 14:57:45 +02:00
var tageEntities = DAOFactory . SearchDAO . FindGeschenkteUrlaubstageByEmpOid ( empOid ) ;
if ( tageEntities ! = null )
tage . AddRange ( MapperFactory . GeschenkterUrlaubstagDC_GeschenkterUrlaubstag . MapToNewDCs ( tageEntities ) ) ;
2021-06-10 14:40:23 +02:00
2025-09-09 14:57:45 +02:00
return tage ;
}
catch ( Exception ex )
{
throw Utils . CreateBeWoFaultException ( ex ) ;
}
}
public List < GeschenkterUrlaubstagDC > GetGeschenkteUrlaubstageForYear ( int year )
{
try
{
List < GeschenkterUrlaubstagDC > tage = new List < GeschenkterUrlaubstagDC > ( ) ;
2021-06-10 14:40:23 +02:00
2025-09-09 14:57:45 +02:00
var tageEntities = DAOFactory . SearchDAO . FindGeschenkteUrlaubstageByYear ( year ) ;
if ( tageEntities ! = null )
tage . AddRange ( MapperFactory . GeschenkterUrlaubstagDC_GeschenkterUrlaubstag . MapToNewDCs ( tageEntities ) ) ;
2021-06-10 14:40:23 +02:00
2021-08-27 07:34:43 +02:00
return tage ;
}
catch ( Exception ex )
{
throw Utils . CreateBeWoFaultException ( ex ) ;
}
2021-06-10 14:40:23 +02:00
}
public void InsertGeschenkterUrlaubstag ( GeschenkterUrlaubstagDC dc )
{
2021-08-27 07:34:43 +02:00
try
{
var entity = MapperFactory . GeschenkterUrlaubstagDC_GeschenkterUrlaubstag . MapToNewEntity ( dc ) ;
DAOFactory . GenericDAO . Insert ( entity ) ;
}
catch ( Exception ex )
{
throw Utils . CreateBeWoFaultException ( ex ) ;
}
2021-06-10 14:40:23 +02:00
}
public void InsertMultipleGeschenkteUrlaubstage ( List < GeschenkterUrlaubstagDC > dcs )
{
2021-08-27 07:34:43 +02:00
try
{
DAOFactory . GenericDAO . Insert ( MapperFactory . GeschenkterUrlaubstagDC_GeschenkterUrlaubstag . MapToNewEntities ( dcs ) ) ;
}
catch ( Exception ex )
{
throw Utils . CreateBeWoFaultException ( ex ) ;
}
2021-06-10 14:40:23 +02:00
}
2021-09-06 12:43:23 +02:00
public void DeleteGeschenkterUrlaubstag ( long oid )
2021-06-10 14:40:23 +02:00
{
2021-08-27 07:34:43 +02:00
try
{
2021-09-06 12:43:23 +02:00
var lOriginal = DAOFactory . GenericDAO . LoadByID < GeschenkterUrlaubstag > ( ( long ) oid ) ;
2021-08-27 07:34:43 +02:00
DAOFactory . GenericDAO . Delete ( lOriginal ) ;
}
catch ( Exception ex )
{
throw Utils . CreateBeWoFaultException ( ex ) ;
}
}
2025-08-25 14:52:24 +02:00
public virtual Dictionary < string , decimal > GetSonderurlaubForEmployee ( long empOid , int berechnungsjahr )
{
Dictionary < string , decimal > sonderurlaub = new Dictionary < string , decimal > ( ) ;
try
{
var emp = DAOFactory . GenericDAO . GetByID < Employee > ( empOid ) ;
Contract contract = null ;
foreach ( var c in emp . Contracts )
{
if ( c . EntryDate . HasValue & & ! c . ContractEndDate . HasValue | | c . EntryDate . HasValue & & c . ContractEndDate . HasValue & &
berechnungsjahr > = c . EntryDate . Value . Year & & berechnungsjahr < = c . ContractEndDate . Value . Year )
{
contract = c ;
break ;
}
}
// Wenn eine Behinderung von mind. 50 vorliegt stehen standardmäßig 5 Sonderurlaubstage zu
2026-01-27 11:43:48 +01:00
if ( contract ! = null & & ( contract . EntryDate . HasValue & & contract . ContractEndDate . HasValue | | contract . EntryDate . HasValue & & ! contract . ContractEndDate . HasValue ) )
2025-08-25 14:52:24 +02:00
{
2026-04-29 14:54:46 +02:00
var yearStart = new DateTime ( berechnungsjahr , 1 , 1 ) ;
var yearEnd = new DateTime ( berechnungsjahr , 12 , 31 ) ;
// Schnittmenge aus Vertrag + Ausweis
var overlapStart = contract . EntryDate > emp . AusweisGueltigVon ? contract . EntryDate : emp . AusweisGueltigVon ;
var overlapEnd = ( contract . ContractEndDate ? ? DateTime . MaxValue ) < emp . AusweisGueltigBis ? ( contract . ContractEndDate ? ? DateTime . MaxValue ) : emp . AusweisGueltigBis ;
// Jetzt prüfen: gibt es davon etwas im Jahr?
if ( overlapStart < = overlapEnd & & overlapStart < = yearEnd & & overlapEnd > = yearStart )
2025-08-25 14:52:24 +02:00
{
2025-08-28 15:36:49 +02:00
if ( emp . GradDerBehinderung . IsNotNullOrEmpty ( ) )
2025-08-25 14:52:24 +02:00
{
2025-08-28 15:36:49 +02:00
int . TryParse ( emp . GradDerBehinderung , out int grad ) ;
if ( grad > = 50 )
{
// TODO Anteilig berechnen, (wenn Behinderung erst im Berechnungsjahr beginnt nur die "aktiven" Monate anrechnen und ab
2025-08-25 14:52:24 +02:00
2025-08-28 15:36:49 +02:00
// Wenn keine Anzahl der wöchentlichen Arbeitstage gesetzt ist, 5 Tage
// Sonst Anzahl der wöchentlichen Arbeitstage (gesdetzlich so geregelt)
sonderurlaub . Add ( "Sonderurlaub aufgrund von Behinderungsgrad über 50" , 5 ) ;
}
2025-08-25 14:52:24 +02:00
}
}
}
2021-08-27 07:34:43 +02:00
2025-08-25 14:52:24 +02:00
return sonderurlaub ;
}
catch ( Exception ex )
{
throw Utils . CreateBeWoFaultException ( ex ) ;
}
return sonderurlaub ;
}
2021-08-27 07:34:43 +02:00
public List < AbwesenheitsInformationPrintDC > InsertAbwesenheitsInformationPrint ( List < AbwesenheitsInformationPrintDC > abwesenheitsInformationPrints )
{
try
{
DAOFactory . GenericDAO . Insert ( MapperFactory . AbwesenheitsInformationPrintDC_AbwesenheitsInformationPrint . MapToNewEntities ( abwesenheitsInformationPrints ) ) ;
2025-09-09 14:57:45 +02:00
var prints = DAOFactory . GenericDAO . GetAll < AbwesenheitsInformationPrint > ( ) ;
2021-08-27 07:34:43 +02:00
2025-09-09 14:57:45 +02:00
return MapperFactory . AbwesenheitsInformationPrintDC_AbwesenheitsInformationPrint . MapToNewDCs ( prints ) ;
}
catch ( Exception ex )
{
throw Utils . CreateBeWoFaultException ( ex ) ;
}
}
public List < AbwesenheitsInformationPrintDC > GetAbwesenheitsInformationPrints ( List < long > oids )
{
try
{
var entities = DAOFactory . GenericDAO . LoadByIDs < AbwesenheitsInformationPrint > ( oids ) ;
List < AbwesenheitsInformationPrintDC > objekte = MapperFactory . AbwesenheitsInformationPrintDC_AbwesenheitsInformationPrint . MapToNewDCs ( entities ) ;
return objekte ;
}
catch ( Exception ex )
{
throw Utils . CreateBeWoFaultException ( ex ) ;
}
}
public List < AbwesenheitsInformationPrintDC > GetAllAbwesenheitsInformationPrints ( )
{
try
{
var entities = DAOFactory . GenericDAO . GetAllActive < AbwesenheitsInformationPrint > ( ) ;
var dcs = MapperFactory . AbwesenheitsInformationPrintDC_AbwesenheitsInformationPrint . MapToNewDCs ( entities ) ;
return dcs ;
}
catch ( Exception ex )
{
throw Utils . CreateBeWoFaultException ( ex ) ;
}
}
public void DeleteAbwesenheitsInformationPrints ( List < AbwesenheitsInformationPrintDC > dcs )
{
try
{
UrlaubsplanungsManager manager = new UrlaubsplanungsManager ( ) ;
manager . DeleteAbwesenheitsInformationPrints ( dcs ) ;
}
catch ( Exception ex )
{
throw Utils . CreateBeWoFaultException ( ex ) ;
}
}
public List < UrlaubskontoDarstellungDC > ErstelleUrlaubskontoDarstellung ( EmployeeDC emp , int year )
{
try
{
var vs = PluginLoader . FindClass < VacationService > ( ) ;
return vs . BerechneUrlaubskontoZurDarstellung ( emp , year ) ;
}
catch ( Exception ex )
{
throw Utils . CreateBeWoFaultException ( ex ) ;
}
}
public Dictionary < long? , decimal > BerechneAnzEinerAbwesenheitFuerMehrereMitarbeiter ( List < long? > empOids , int year , string reason )
{
try
{
var vs = PluginLoader . FindClass < VacationService > ( ) ;
return vs . BerechneAnzEinerAbwesenheitFuerMehrereMitarbeiter ( empOids , year , reason ) ;
}
catch ( Exception ex )
{
throw Utils . CreateBeWoFaultException ( ex ) ;
}
}
public decimal CountKrankheitstage ( AbwesenheitsInformationDC infoDC )
{
try
{
var manager = new UrlaubsplanungsManager ( ) ;
return manager . CountKrankheitstage ( infoDC ) ;
}
catch ( Exception ex )
{
throw Utils . CreateBeWoFaultException ( ex ) ;
}
}
public decimal CountUrlaubstage ( AbwesenheitsInformationDC infoDC )
{
try
{
var manager = new UrlaubsplanungsManager ( ) ;
return manager . CountUrlaubstage ( infoDC ) ;
}
catch ( Exception ex )
{
throw Utils . CreateBeWoFaultException ( ex ) ;
}
}
2022-11-30 12:31:02 +01:00
2025-09-09 14:57:45 +02:00
public List < EmployeeDC > GetAbsenceOverview ( AbsenceOverviewFilterDC filter )
{
try
{
var res = new List < EmployeeDC > ( ) ;
var vs = PluginLoader . FindClass < VacationService > ( ) ;
2022-11-30 12:31:02 +01:00
2025-09-09 14:57:45 +02:00
var allEmployees = DAOFactory . GenericDAO . GetAllActive < Employee > ( ) . ToList ( ) ;
2022-11-30 12:31:02 +01:00
2025-09-09 14:57:45 +02:00
List < Team > teams = new List < Team > ( ) ;
if ( filter . Teams ! = null )
teams = DAOFactory . GenericDAO . GetActiveByIDs < Team > ( filter . Teams ) as List < Team > ;
2022-11-30 12:31:02 +01:00
2025-09-09 14:57:45 +02:00
//foreach (var emp in allEmployees.OrderBy(x => x.Person.LastNameFirstName))
List < Employee > benoetigteMitarbeiter = new List < Employee > ( ) ;
if ( teams . Count = = 0 )
benoetigteMitarbeiter = allEmployees ;
else
{
foreach ( var team in teams )
{
benoetigteMitarbeiter . AddRange ( team . MemberList ) ;
}
}
benoetigteMitarbeiter . OrderBy ( x = > x . Person . LastNameFirstName ) . ToList ( ) ;
2022-11-30 12:31:02 +01:00
2025-09-09 14:57:45 +02:00
foreach ( var emp in benoetigteMitarbeiter )
{
if ( filter . EmploymentType ! = null )
if ( ! emp . Contracts . Any ( x = > x . EmploymentType ! = null & & filter . EmploymentType . Contains ( x . EmploymentType . Oid . Value ) ) )
continue ;
if ( res . Any ( e = > e . EmployeeOid = = emp . Oid ) )
continue ;
var dict = vs . BerechneUrlaubskonto ( emp , filter . Year ) ;
if ( filter . AbsenceReasons ! = null )
emp . AbsenceTimes . RemoveRange ( x = > ! filter . AbsenceReasons . Contains ( x . AbsenceReason . Oid . Value ) ) ;
//if (filter.Teams != null)
//{
// bool isInTeam = false;
// foreach (var team in teams)
// {
// if (team.MemberList.Contains(emp))
// isInTeam = true;
// }
// if (!isInTeam)
// continue;
//}
var empDC = MapperFactory . EmployeeDC_Employee . MapToNewDC ( emp ) ;
if ( dict . ContainsKey ( filter . Year ) )
{
empDC . Urlaubskonto = dict [ filter . Year ] ;
}
else
{
int test = 0 ;
}
2022-11-30 12:31:02 +01:00
2025-09-09 14:57:45 +02:00
res . Add ( empDC ) ;
}
2022-11-30 12:31:02 +01:00
2025-09-09 14:57:45 +02:00
return res . OrderBy ( e = > e . LastNameFirstName ) . ToList ( ) ;
}
catch ( Exception exception )
{
throw Utils . CreateBeWoFaultException ( exception ) ;
}
}
2022-11-30 12:31:02 +01:00
2022-02-11 15:12:53 +01:00
2022-12-30 16:28:23 +01:00
2025-09-09 14:57:45 +02:00
public CompactEmployeeDC FindCompactEmployeeByFullname ( string fullname )
{
try
{
var employee = DAOFactory . SearchDAO . FindEmployeeByFullname ( fullname ) ;
2022-12-30 16:28:23 +01:00
2025-09-09 14:57:45 +02:00
return employee is null ? null : MapperFactory . CompactEmployeeDC_Employee . MapToNewDC ( employee ) ;
}
catch ( Exception ex )
{
throw Utils . CreateBeWoFaultException ( ex ) ;
}
}
2022-12-30 16:28:23 +01:00
2025-09-09 14:57:45 +02:00
public TeamDC FindTeamByOid ( long teamOid , long employeeOid )
{
try
{
var teams = GetAllActiveTeamsForEmployee ( employeeOid ) ;
2022-12-30 16:28:23 +01:00
2025-09-09 14:57:45 +02:00
return teams . FirstOrDefault ( t = > t . TeamOid . HasValue & & t . TeamOid . Value . Equals ( teamOid ) ) ;
}
catch ( Exception ex )
{
throw Utils . CreateBeWoFaultException ( ex ) ;
}
}
2023-05-17 13:58:10 +02:00
2025-09-09 14:57:45 +02:00
public List < CompactTeamDC > LoadCompactTeamsByOid ( List < long > teamOids )
{
try
{
return teamOids is null ? new List < CompactTeamDC > ( ) : MapperFactory . CompactTeamDC_Team . MapToNewDCs ( DAOFactory . GenericDAO . GetActiveByIDs < Team > ( teamOids ) ) ;
}
catch ( Exception ex )
{
throw Utils . CreateBeWoFaultException ( ex ) ;
}
}
public List < CompactTeamDC > FindLeadingCompactTeamsOfEmployee ( long employeeOid )
{
try
{
return MapperFactory . CompactTeamDC_Team . MapToNewDCs ( DAOFactory . SearchDAO . FindLeadingTeams ( employeeOid ) ) ;
}
catch ( Exception ex )
{
throw Utils . CreateBeWoFaultException ( ex ) ;
}
}
2026-03-27 15:14:20 +01:00
public List < CompactEmployeeDC > GetActiveCompactEmployeesByOids ( List < long > employeeOids )
{
try
{
var employees = DAOFactory . SearchDAO . GetActiveEmployeesByOids ( employeeOids ) ;
return MapperFactory . CompactEmployeeDC_Employee . MapToNewDCs ( employees ) ;
}
catch ( Exception ex )
{
throw Utils . CreateBeWoFaultException ( ex ) ;
}
}
2026-05-03 23:57:29 +02:00
public List < TeamFolderRightDC > GetTeamRightsForFolder ( long folderOid )
{
try
{
var rights = DAOFactory . SearchDAO . GetTeamRightsForFolder ( folderOid ) ;
return MapperFactory . TeamFolderRight . MapToNewDCs ( rights ) ;
}
catch ( Exception ex )
{
throw Utils . CreateBeWoFaultException ( ex ) ;
}
}
public List < TeamFolderRightDC > SaveTeamFolderRights ( List < TeamFolderRightDC > list )
{
try
{
var originals = DAOFactory . GenericDAO . LoadByIDs < TeamFolderRight > ( list . Where ( t = > t . Oid . HasValue ) . Select ( t2 = > t2 . Oid . Value ) ) ;
MapperFactory . TeamFolderRight . MergeWithEntitys ( list , originals ) ;
DAOFactory . GenericDAO . Update ( originals ) ;
return MapperFactory . TeamFolderRight . MapToNewDCs ( originals ) ;
}
catch ( Exception ex )
{
throw Utils . CreateBeWoFaultException ( ex ) ;
}
}
2026-03-27 15:14:20 +01:00
}
2016-06-27 01:45:38 +02:00
}