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 ;
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 ;
namespace BeWo.Service.ServiceImplementations
{
[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
MakeNewEmployeeHistoryEntry ( e , StatementType . Archived ) ;
2016-06-27 01:45:38 +02:00
ServiceLogic . SetActivationType < Employee > ( pOid , pVersion , ActivationTypeId . Archived ) ;
2019-07-10 10:11:10 +02:00
2016-06-27 01:45:38 +02:00
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
public void DeactivateAssessmentSheetCategories ( List < AssessmentSheetCategoryDC > dcs )
{
try
{
ServiceLogic . SetActivationType < AssessmentSheetCategory > ( dcs . ToDictionary ( i = > i . AssessmentSheetCategoryOid . Value , i = > i . AssessmentSheetCategoryVersion . Value ) , ActivationTypeId . Deleted ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
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 ) ;
//entries.DoForEach(or => MapperFactory.AssessmentSheetEntryDC_AssessmentSheetEntry.ConcurrencyCheck(pOid2Version[or.Oid.Value], or));
DAOFactory . GenericDAO . Delete ( entries ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
public void DeactivateAssessmentSheetValues ( List < AssessmentSheetValueDC > dcs )
{
try
{
ServiceLogic . SetActivationType < AssessmentSheetValue > ( dcs . ToDictionary ( i = > i . AssessmentSheetValueOid . Value , i = > i . AssessmentSheetValueVersion . Value ) , ActivationTypeId . Deleted ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
public void DeactivateEmployee ( long pOid , long pVersion )
{
try
{
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
2019-07-10 10:11:10 +02:00
MakeNewEmployeeHistoryEntry ( e , StatementType . Delete ) ;
2016-11-08 13:50:58 +01:00
2019-07-10 10:11:10 +02:00
DeleteEmployeeCustomerRelationForEmployee ( pOid ) ;
}
2016-06-27 01:45:38 +02:00
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2016-11-08 13:50:58 +01:00
public void DeleteEmployeeCustomerRelationForEmployee ( long employeeOid )
{
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
public void DeactivateEmployees ( Dictionary < long , long > pOid2Version )
{
try
{
ServiceLogic . SetActivationType < Employee > ( pOid2Version , ActivationTypeId . Deleted ) ;
2016-11-08 13:50:58 +01:00
foreach ( var key in pOid2Version . Keys )
{
DeleteEmployeeCustomerRelationForEmployee ( key ) ;
}
2016-06-27 01:45:38 +02:00
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
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 ) ;
}
}
public void DeactivateTeam ( long pOid , long pVersion )
{
try
{
ServiceLogic . SetActivationType < Team > ( pOid , pVersion , ActivationTypeId . Deleted ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
public void DeactivateTeams ( Dictionary < long , long > pOid2Version )
{
try
{
ServiceLogic . SetActivationType < Team > ( pOid2Version , ActivationTypeId . Deleted ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
public void DeleteEmployee ( long pOid , long pVersion )
{
try
{
this . DeleteEmployees ( new Dictionary < long , long > { { pOid , pVersion } } ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
public void DeleteEmployeeCustomerRelation ( long pOid , long pVersion )
{
try
{
this . DeleteEmployeeCustomerRelations ( new Dictionary < long , long > { { pOid , pVersion } } ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
public void DeleteEmployeeCustomerRelations ( Dictionary < long , long > pOid2Version )
{
try
{
var lOriginals = DAOFactory . GenericDAO . LoadByIDs < Employee2Customer > ( pOid2Version . Select ( e = > e . Key ) ) ;
lOriginals . DoForEach ( or = > MapperFactory . EmployeeCustomerRelDC_Employee2CustomerMapper . ConcurrencyCheck ( pOid2Version [ or . Oid . Value ] , or ) ) ;
DAOFactory . GenericDAO . Delete ( lOriginals ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
public void DeleteEmployees ( Dictionary < long , long > pOid2Version )
{
try
{
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 ) ) ;
2019-07-10 10:11:10 +02:00
foreach ( Employee e in lOriginals )
{
MakeNewEmployeeHistoryEntry ( e , StatementType . Delete ) ;
}
2016-06-27 01:45:38 +02:00
DAOFactory . GenericDAO . Delete ( lOriginals ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
public List < CompactEmployeeDC > FindEmployee ( string pFirstName , string pLastName , string pPersonnelNumber )
{
try
{
return MapperFactory . CompactEmployeeDC_Employee . MapToNewDCs ( DAOFactory . SearchDAO . FindEmployee ( pFirstName , pLastName , pPersonnelNumber ) ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
public List < CompactTeamDC > FindTeams ( string pTeamName , string pLeaderFirstName , string pLeaderLastName )
{
try
{
return MapperFactory . CompactTeamDC_Team . MapToNewDCs ( DAOFactory . SearchDAO . FindTeams ( pTeamName , pLeaderFirstName , pLeaderLastName ) ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
public List < CompactEmployeeDC > GetAllActiveAndArchivedEmployeesCompact ( )
{
try
{
2018-10-08 11:57:16 +02:00
var s = PluginLoader . FindClass < EmployeeService > ( ) ;
return s . GetAllActiveAndArchivedEmployeesCompact ( ) ;
2016-06-27 01:45:38 +02:00
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
public List < CompactEmployeeDC > GetAllActiveEmployeesCompact ( )
{
try
{
2018-10-08 11:57:16 +02:00
var s = PluginLoader . FindClass < EmployeeService > ( ) ;
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 ) ;
}
2018-10-08 11:57:16 +02:00
2016-06-27 01:45:38 +02:00
}
public List < CompactEmployeeDC > GetAllTeamMember ( CompactEmployeeDC employee )
{
try
{
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 )
{
2017-11-23 10:58:07 +01:00
bool contained = ( team . Leader ! = null & & team . Leader . Oid = = employee . EmployeeOid ) ;
if ( ! contained )
2016-06-27 01:45:38 +02:00
{
2017-11-23 10:58:07 +01:00
foreach ( var e in team . MemberList )
{
if ( e . Oid . Value . Equals ( employee . EmployeeOid ) )
contained = true ;
}
}
2016-06-27 01:45:38 +02:00
if ( contained )
{
foreach ( var e in team . MemberList )
{
if ( ! inTeamDict . ContainsKey ( e . Oid . Value ) )
{
teamMember . Add ( e ) ;
inTeamDict . Add ( e . Oid . Value , true ) ;
}
}
}
}
var dcList = MapperFactory . CompactEmployeeDC_Employee . MapToNewDCs ( teamMember ) ;
if ( ! inTeamDict . ContainsKey ( employee . EmployeeOid ) )
dcList . Add ( employee ) ;
return dcList ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
public List < EmploymentTypeDC > GetAllEmploymentTypes ( )
{
try
{
return MapperFactory . EmploymentTypeDC_EmploymentType . MapToNewDCs ( DAOFactory . GenericDAO . GetAllActive < EmploymentType > ( ) ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
public List < long > InsertNewEmploymentTypes ( List < EmploymentTypeDC > pEntries )
{
try
{
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 ) ;
}
}
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 ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
public void DeactivateEmploymentTypes ( Dictionary < long , long > pOid2Version )
{
try
{
ServiceLogic . SetActivationType < EmploymentType > ( pOid2Version , ActivationTypeId . Deleted ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
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 ) ;
}
}
public List < AssessmentSheetEntryDC > GetAllAssessmentSheetEntries ( )
{
try
{
return MapperFactory . AssessmentSheetEntryDC_AssessmentSheetEntry . MapToNewDCs ( DAOFactory . GenericDAO . GetAllActive < AssessmentSheetEntry > ( ) ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
public List < AssessmentSheetValueDC > GetAllAssessmentSheetValues ( )
{
try
{
return MapperFactory . AssessmentSheetValueDC_AssessmentSheetValue . MapToNewDCs ( DAOFactory . GenericDAO . GetAllActive < AssessmentSheetValue > ( ) ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
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 ) ;
}
}
public List < NewsItemDC > GetAllNewsItems ( )
{
try
{
return MapperFactory . NewsItemDC_NewsItem . MapToNewDCs ( DAOFactory . GenericDAO . GetAllActive < NewsItem > ( ) ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
public List < CompactTeamDC > GetAllTeamsCompact ( )
{
try
{
2019-08-01 11:27:28 +02:00
var s = PluginLoader . FindClass < EmployeeService > ( ) ;
2017-08-23 17:17:08 +02:00
2019-08-01 11:27:28 +02:00
return s . GetAllTeamsCompact ( ) ;
2017-02-01 13:53:59 +01:00
2016-06-27 01:45:38 +02:00
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
public List < AssessmentSheetEntryDC > GetAssessmentSheetEntriesForCustomer ( long customerOid , DateTime startDt , DateTime endDt )
{
try
{
return MapperFactory . AssessmentSheetEntryDC_AssessmentSheetEntry . MapToNewDCs ( DAOFactory . SearchDAO . GetAssessmentSheetEntriesForCustomer ( customerOid , startDt , endDt ) ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
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
{
throw new FaultException < BeWoFault > ( new BeWoFault ( String . Format ( "Mitarbeiter mit Id {0} wurde nicht gefunden!" , pPersonOid ) ) ) ;
}
}
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 ) ;
}
}
public List < CompactTeamDC > GetLastOpenedTeams ( )
{
try
{
return MapperFactory . CompactTeamDC_Team . MapToNewDCs ( SettingsLogic . GetLastOpened < Team > ( ) ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
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 ) ;
}
}
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 ) ;
} ) . 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 ) ;
return dcList . OrderByDescending ( i = > i . PublishDate ) . ToList ( ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
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 )
{
try
{
DAOFactory . GenericDAO . Insert ( MapperFactory . EmployeeCustomerRelDC_Employee2CustomerMapper . MapToNewEntity ( pRelationDC ) ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
public List < long > InsertNewAssessmentSheetCategories ( List < AssessmentSheetCategoryDC > dcs )
{
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 ) ;
}
}
public List < long > InsertNewAssessmentSheetEntries ( List < AssessmentSheetEntryDC > dcs )
{
try
{
var newAssessmentSheetEntries = MapperFactory . AssessmentSheetEntryDC_AssessmentSheetEntry . MapToNewEntities ( dcs ) ;
DAOFactory . GenericDAO . Insert ( newAssessmentSheetEntries ) ;
return newAssessmentSheetEntries . Select ( i = > i . Oid . Value ) . ToList ( ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
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 ) ;
}
}
public long InsertNewEmployee ( EmployeeDC pEmployeeDC )
{
try
{
var li = SecurityUtils . GetLicenseInfo ( ) ;
if ( li . EmployeeCount > = li . MaxEmployeeCount )
{
return - 1 ;
}
2018-10-08 11:57:16 +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 ) ;
MakeNewEmployeeHistoryEntry ( temp , StatementType . Insert ) ;
2020-04-08 14:25:01 +02:00
OwnChatHelper . StartOwnChatSync ( ) ;
2019-09-17 17:44:57 +02:00
2020-04-08 14:25:01 +02:00
return id ;
2016-06-27 01:45:38 +02:00
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
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 ) ;
}
}
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
OwnChatHelper . StartOwnChatSync ( ) ;
2016-06-27 01:45:38 +02:00
return lTeam . Oid . Value ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
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 ) ;
}
}
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 ) ;
}
}
public EmployeeDC LoadLoggedOnEmployee ( long pEmployeeOid )
{
try
{
return MapperFactory . EmployeeDC_Employee . MapToNewDC ( DAOFactory . GenericDAO . LoadByID < Employee > ( pEmployeeOid ) ) ;
}
catch ( Exception e )
{
throw new FaultException < BeWoFault > ( new BeWoFault ( e ) , e . Message ) ;
}
}
public EmployeeDC LoadEmployee ( long pEmployeeOid )
{
try
{
SettingsLogic . AddToUsersHistory < Employee > ( pEmployeeOid ) ;
return MapperFactory . EmployeeDC_Employee . MapToNewDC ( DAOFactory . GenericDAO . LoadByID < Employee > ( pEmployeeOid ) ) ;
}
catch ( Exception e )
{
throw new FaultException < BeWoFault > ( new BeWoFault ( e ) , e . Message ) ;
}
}
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 ) ;
}
}
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 ) ;
}
}
public void UpdateAssessmentSheetEntries ( List < AssessmentSheetEntryDC > dcs )
{
try
{
var originals = DAOFactory . GenericDAO . LoadByIDs < AssessmentSheetEntry > ( dcs . Select ( i = > i . AssessmentSheetEntryOid . Value ) ) ;
var aSCategories = DAOFactory . GenericDAO . GetAll < AssessmentSheetCategory > ( ) . Where ( c = > c . SystemEntryID . Equals ( SystemEntryID . AdditionalServiceAssessmentSheet ) ) ;
List < AssessmentSheetEntry > removeList = new List < AssessmentSheetEntry > ( ) ;
foreach ( var ase in originals )
{
if ( ase . SystemEntryID . Equals ( SystemEntryID . AdditionalServiceAssessmentSheet ) & &
aSCategories . Count ( c = > c . Description . Equals ( ase . AssessmentSheetCategory . Description ) ) > 0 )
{
removeList . Add ( ase ) ;
}
}
foreach ( var ase in removeList )
{
originals . Remove ( ase ) ;
}
if ( originals . Count > 0 )
{
MapperFactory . AssessmentSheetEntryDC_AssessmentSheetEntry . MergeWithEntitys ( dcs , originals ) ;
if ( originals . Count > 0 )
DAOFactory . GenericDAO . Update ( originals ) ;
}
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
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 ) ;
}
}
public long UpdateEmployee ( EmployeeDC pEmployeeDC )
{
try
{
var lOriginal = DAOFactory . GenericDAO . LoadByID < Employee > ( pEmployeeDC . EmployeeOid . Value ) ;
MapperFactory . EmployeeDC_Employee . MergeWithEntity ( pEmployeeDC , lOriginal ) ;
2019-07-10 10:11:10 +02:00
MakeNewEmployeeHistoryEntry ( lOriginal , StatementType . Update ) ;
2016-06-27 01:45:38 +02:00
DAOFactory . GenericDAO . Update ( lOriginal ) ;
2020-04-08 14:25:01 +02:00
OwnChatHelper . StartOwnChatSync ( ) ;
2016-06-27 01:45:38 +02:00
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 ) ;
}
}
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 ) ;
}
}
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
OwnChatHelper . StartOwnChatSync ( ) ;
2016-06-27 01:45:38 +02:00
return lOriginal . Oid . Value ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
public List < AbsenceTimeDC > GetAllEmployeeAbsenceTimes ( )
{
try
{
return MapperFactory . AbsenceTimeDC_AbsenceTime . MapToNewDCs ( DAOFactory . SearchDAO . FindAbsenceTimes ( true , false ) ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
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 ) ;
}
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 ) ;
2019-02-12 19:22:22 +01:00
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 ;
}
}
2016-06-27 01:45:38 +02:00
foreach ( var groupOfPeople in allgroups )
{
if ( ! processedGroups . ContainsKey ( groupOfPeople . Oid . Value ) )
{
processedGroups . Add ( groupOfPeople . Oid . Value , true ) ;
2019-02-12 19:22:22 +01:00
if ( nurEigene )
{
if ( employeeOid . Value = = groupOfPeople . CreatedByEmployeeOid | | ContainsMemberOfEmployee ( groupOfPeople , emp ) )
groups . Add ( groupOfPeople ) ;
}
else
{
2016-06-27 01:45:38 +02:00
groups . Add ( groupOfPeople ) ;
2019-02-12 19:22:22 +01:00
}
2016-06-27 01:45:38 +02:00
}
}
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 ) ;
}
}
public List < OvertimeDC > GetAllOvertimes ( )
{
try
{
var allOvertimes = DAOFactory . GenericDAO . GetAll < Overtime > ( ) ;
return MapperFactory . OvertimeDC_Overtime . MapToNewDCs ( allOvertimes ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
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 ) ) ;
DAOFactory . GenericDAO . Delete ( lOriginals ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
public List < long > InsertOvertimes ( List < OvertimeDC > pOvertimes )
{
try
{
var newOvertimes = MapperFactory . OvertimeDC_Overtime . MapToNewEntities ( pOvertimes ) ;
DAOFactory . GenericDAO . Insert ( newOvertimes ) ;
return newOvertimes . Select ( i = > i . Oid . Value ) . ToList ( ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
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 ) ;
MapperFactory . OvertimeDC_Overtime . MergeWithEntitys ( pOvertimes , lOriginals ) ;
DAOFactory . GenericDAO . Update ( lOriginals ) ;
return ( from mumu in lOriginals where mumu . Oid . HasValue select mumu . Oid . Value ) . ToList ( ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
public List < AuszahlungsartDC > GetAllAuszahlungsarten ( )
{
try
{
var alleAuszahlungsarten = DAOFactory . GenericDAO . GetAll < Auszahlungsart > ( ) ;
return MapperFactory . AuszahlungsartDC_Auszahlungsart . MapToNewDCs ( alleAuszahlungsarten ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
public List < long > InsertAuszahlungsarten ( IEnumerable < AuszahlungsartDC > pAuszahlungsarten )
{
try
{
var neueAuszahlungsarten = MapperFactory . AuszahlungsartDC_Auszahlungsart . MapToNewEntities ( pAuszahlungsarten ) ;
DAOFactory . GenericDAO . Insert ( neueAuszahlungsarten ) ;
return neueAuszahlungsarten . Select ( i = > i . Oid . Value ) . ToList ( ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
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 ) ;
MapperFactory . AuszahlungsartDC_Auszahlungsart . MergeWithEntitys ( pAuszahlungsarten , lOriginals ) ;
DAOFactory . GenericDAO . Update ( lOriginals ) ;
return ( from mumu in lOriginals where mumu . Oid . HasValue select mumu . Oid . Value ) . ToList ( ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
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 ) ) ;
DAOFactory . GenericDAO . Delete ( lOriginals ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
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 ) ;
}
}
public List < CompactEmployeeDC > GetAllChatActiveEmployeesCompact ( )
{
try
{
var employees = DAOFactory . SearchDAO . FindAllChatActiveEmployees ( ) ;
return MapperFactory . CompactEmployeeDC_Employee . MapToNewDCs ( employees ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
public List < EmployeeAPPCodeDC > GetAllEmployeeAppCodes ( long pEmployeeOid )
{
2017-10-06 12:06:34 +02:00
try
{
var liste = DAOFactory . SearchDAO . FindAllEmployeeAppCodes ( pEmployeeOid ) ;
2016-06-27 01:45:38 +02:00
2017-10-06 12:06:34 +02:00
return MapperFactory . EmployeeAPPCodeDC_EmployeeAPPCode . MapToNewDCs ( liste ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
2016-06-27 01:45:38 +02:00
}
2017-10-06 12:06:34 +02:00
2016-07-18 09:15:00 +02:00
public Byte [ ] GetEmployeeImage ( long employeeOid )
{
try
{
var employee = DAOFactory . GenericDAO . GetByID < Employee > ( employeeOid ) ;
2017-02-01 13:53:59 +01:00
return employee . Person . Images ! = null & & employee . Person . Images . Count > 0 ? employee . Person . Images [ 0 ] . Original : null ;
2016-07-18 09:15:00 +02:00
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2016-06-27 01:45:38 +02:00
2016-10-06 08:57:05 +02:00
public Byte [ ] GetEmployeeThumbnail ( long employeeOid )
{
try
{
var employee = DAOFactory . GenericDAO . GetByID < Employee > ( employeeOid ) ;
2017-02-01 13:53:59 +01:00
return employee . Person . Images ! = null & & employee . Person . Images . Count > 0 ? employee . Person . Images [ 0 ] . SmallThumbnail : null ;
2016-10-06 08:57:05 +02:00
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
2017-04-07 13:44:07 +02:00
}
public CompactEmployeeDC GetActiveCompactEmployeeWithOid ( long employeeOid )
{
try
{
var employee = DAOFactory . GenericDAO . GetByID < Employee > ( employeeOid ) ;
return MapperFactory . CompactEmployeeDC_Employee . MapToNewDC ( employee ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2016-06-27 01:45:38 +02:00
2017-05-15 09:11:13 +02:00
public void InsertNewArbeitsZeit ( ArbeitszeitDC arbeitszeit , ArbeitszeitEintragDC arbeitszeitEintrag )
{
try
{
var x = MapperFactory . ArbeitszeitDC_Arbeitszeit . MapToNewEntity ( arbeitszeit ) ;
2017-05-15 10:51:21 +02:00
DAOFactory . GenericDAO . Insert ( x ) ;
2017-05-15 09:11:13 +02:00
arbeitszeitEintrag . ArbeitszeitOid = x . Oid ;
var y = MapperFactory . ArbeitszeitEintragDC_ArbeitszeitEintrag . MapToNewEntity ( arbeitszeitEintrag ) ;
2017-05-15 10:51:21 +02:00
2017-05-15 09:11:13 +02:00
DAOFactory . GenericDAO . Insert ( y ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2017-05-17 08:28:12 +02:00
public ArbeitszeitDC UpdateArbeitszeit ( ArbeitszeitDC pArbeitszeit )
{
try
{
var lOriginal = DAOFactory . GenericDAO . LoadByID < Arbeitszeit > ( pArbeitszeit . ArbeitszeitOid . Value ) ;
MapperFactory . ArbeitszeitDC_Arbeitszeit . MergeWithEntity ( pArbeitszeit , lOriginal ) ;
DAOFactory . GenericDAO . Update ( lOriginal ) ;
return MapperFactory . ArbeitszeitDC_Arbeitszeit . MapToNewDC ( lOriginal ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2017-05-23 13:42:42 +02:00
public void DeleteArbeitszeitEintrag ( long arbeistzeitEintragOid )
{
try
{
var lOriginal = DAOFactory . GenericDAO . LoadByID < ArbeitszeitEintrag > ( arbeistzeitEintragOid ) ;
2016-06-27 01:45:38 +02:00
2017-05-23 13:42:42 +02:00
DAOFactory . GenericDAO . Delete ( lOriginal ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2017-06-19 11:37:57 +02:00
2018-05-23 10:37:57 +02:00
public List < CompactVertreterEmployeeDC > GetAllActiveVertreterEmployeesCompact ( long? customerOid , DateTime date )
2017-06-19 11:37:57 +02:00
{
try
{
2019-08-08 14:47:53 +02:00
var vertretungsManager = new VertretungsManager ( ) ;
var vertretungsListe = vertretungsManager . CreateVertretungsListe ( date , date ) ;
2018-10-08 11:57:16 +02:00
2019-09-27 15:55:01 +02:00
// EmployeeOids der Mitarbeiter, die einen abwesenden Mitarbeiter vertreten
2019-08-16 18:03:30 +02:00
var ausgewaehlteVertreter = vertretungsListe . Where ( vertretungsItem = > vertretungsItem . VertretungsStatus ! = VertretungsStatus . KlientKrank & &
vertretungsItem . Vertreter ! = null & &
vertretungsItem . Vertreter . ActivationType = = ActivationTypeId . Active ) . Select ( item = > item . Vertreter . EmployeeOid ) ;
2019-09-27 15:55:01 +02:00
// EmployeeOids der Betreuer abwesender Klienten, die nicht schon einen anderen Klienten vertreten
2019-08-16 18:03:30 +02:00
var employeeOids = vertretungsListe . Where ( vertretungsItem = > vertretungsItem . Employee ! = null & &
vertretungsItem . VertretungsStatus = = VertretungsStatus . KlientKrank & &
! ausgewaehlteVertreter . Contains ( vertretungsItem . Employee . EmployeeOid ) ) . Select ( s = > s . Employee . EmployeeOid ) ;
2019-08-08 14:47:53 +02:00
2019-09-27 15:55:01 +02:00
// EmployeeOids von abwesenden Mitarbeitern
2019-08-16 18:03:30 +02:00
var abwesenendeEmployeeOids = vertretungsListe . Where ( vertretungsItem = > vertretungsItem . VertretungsStatus ! = VertretungsStatus . KlientKrank & &
vertretungsItem . Employee ! = null ) . Select ( item = > item . Employee . EmployeeOid ) ;
2019-08-08 14:47:53 +02:00
2019-08-16 18:03:30 +02:00
employeeOids = employeeOids . Where ( e = > ! abwesenendeEmployeeOids . Contains ( e ) ) ;
2020-04-15 18:22:10 +02:00
var list = MapperFactory . CompactVertreterEmployeeDC_VertreterEmployee . MapToNewDCs ( DAOFactory . GenericDAO . GetActiveByIDs < Employee > ( employeeOids ) ) ;
//Setze Betreuungszeiten
foreach ( var vertreter in list )
{
foreach ( var item in vertretungsListe )
{
2020-10-01 10:32:31 +02:00
if ( item . Employee ! = null & & item . Employee . EmployeeOid = = vertreter . EmployeeOid )
2020-04-15 18:22:10 +02:00
{
//if (vertreter.Arbeitszeit == null)
//{
// vertreter.Arbeitszeit = new List<ArbeitszeitDC>();
//}
//if (vertreter.Arbeitszeit.Count == 0)
//{
// vertreter.Arbeitszeit.Add(new ArbeitszeitDC
// {
// Eintraege = new List<ArbeitszeitEintragDC>()
// });
//}
//vertreter.Arbeitszeit[0].Eintraege.AddRange(item.Arbeitszeiten);
vertreter . Arbeitszeit = new List < ArbeitszeitDC > ( ) ;
vertreter . Arbeitszeit . Add (
new ArbeitszeitDC
{
Eintraege = item . Arbeitszeiten . ToList ( )
} ) ;
}
}
}
return list ;
2017-06-19 11:37:57 +02:00
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2017-06-30 13:33:49 +02:00
public List < EmployeeTokenRelationDC > LoadEmployeeTokenRelationsByOid ( IEnumerable < long > pOids )
{
try
{
var customerTokenRels = DAOFactory . GenericDAO . LoadByIDs < Employee2Token > ( pOids ) ;
return MapperFactory . EmployeeTokenRelationDC_Employee2Token . MapToNewDCs ( customerTokenRels ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2017-07-25 10:50:45 +02:00
public EmployeeDC GetEmployeeByID ( long employeeOid )
{
try
{
var employee = DAOFactory . GenericDAO . GetByID < Employee > ( employeeOid ) ;
return MapperFactory . EmployeeDC_Employee . MapToNewDC ( employee ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2017-11-09 12:18:50 +01:00
public void CreateOrUpdateChatBewoMessageSync ( long? eOid , string text )
{
try
{
var chatMessageSync = DAOFactory . SearchDAO . FindEmployeeChatBewoMessageSync ( eOid . Value ) ;
int count = chatMessageSync . Count ( ) ;
if ( count > 0 ) {
foreach ( var item in chatMessageSync )
{
item . MessageSyncText = text ;
}
DAOFactory . GenericDAO . Update ( chatMessageSync ) ;
}
else {
ChatBewoMessageSyncDC cms = new ChatBewoMessageSyncDC ( ) ;
cms . EmployeeOid = eOid ;
cms . MessageSyncText = text ;
var x = MapperFactory . ChatBewoMessageSyncDC_ChatBewoMessageSync . MapToNewEntity ( cms ) ;
DAOFactory . GenericDAO . Insert ( x ) ;
}
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
public ChatBewoMessageSyncDC GetChatBewoMessageSync ( long? eOid )
{
try
{
var chatMessageSync = DAOFactory . GenericDAO . GetAllActive < ChatBewoMessageSync > ( ) ;
ChatBewoMessageSync cms = null ;
foreach ( var item in chatMessageSync )
{
if ( eOid = = item . EmployeeOid )
{
cms = item ;
}
}
if ( cms ! = null )
{
var x = MapperFactory . ChatBewoMessageSyncDC_ChatBewoMessageSync . MapToNewDC ( cms ) ;
return x ;
}
return null ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2017-06-30 13:33:49 +02:00
2018-05-20 13:19:28 +02:00
public void ReactivateEmployee ( long pOid , long pVersion )
{
try
{
2019-07-10 10:11:10 +02:00
var e = DAOFactory . GenericDAO . LoadByID < Employee > ( pOid ) ;
MakeNewEmployeeHistoryEntry ( e , StatementType . Reactivate ) ;
2018-05-20 13:19:28 +02:00
ServiceLogic . SetActivationType < Employee > ( pOid , pVersion , ActivationTypeId . Active ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
public List < CompactEmployeeDC > GetAllCompactEmployees ( )
{
try
{
2020-08-17 15:50:00 +02:00
var s = PluginLoader . FindClass < EmployeeService > ( ) ;
return s . GetAllCompactEmployees ( ) ;
2018-05-20 13:19:28 +02:00
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2019-07-10 10:11:10 +02:00
public void MakeNewEmployeeHistoryEntry ( Employee employee , StatementType statementType )
{
2019-09-27 15:55:01 +02:00
try
{
var employeeHistory = new EmployeeHistory
{
ChangeType = statementType ,
Employee_Aggressiv = employee . Aggressiv ,
//Employee_ApplicationUserOid,
//Employee_CancellationPeriod,
Employee_EmployeeColor = employee . EmployeeColor ,
//Employee_EntryDate,
Employee_HealthInsurance = employee . HealthInsurance ,
//Employee_HourlyRate,
Employee_Hygienebelehrung = employee . Hygienebelehrung ,
Employee_InsTs = employee . InsTs ,
Employee_InsuranceNumber = employee . InsuranceNumber ,
Employee_InsUser = employee . InsUser ,
Employee_IsActive = employee . IsActive ,
Employee_IsQualified = employee . IsQualified ,
//Employee_leavedays,
Employee_Notice = employee . Notice ,
Employee_Notice2 = employee . Notice2 ,
Employee_Oid = employee . Oid ,
Employee_PersonnelNumber = employee . PersonnelNumber ,
//Employee_PersonOid,
Employee_Pflege = employee . Pflege ,
//Employee_ProbationPeriod,
Employee_Schutzstufe = employee . Schutzstufe ,
//Employee_Sequence,
Employee_SystemEntryID = employee . SystemEntryID ,
Employee_TaxNumber = employee . TaxNumber ,
Employee_Text1 = employee . Text1 ,
Employee_Text2 = employee . Text2 ,
Employee_Text3 = employee . Text3 ,
Employee_Text4 = employee . Text4 ,
Employee_Text5 = employee . Text5 ,
Employee_Tid = employee . Tid ,
Employee_Toilettengang = employee . Toilettengang ,
Employee_UdpUser = employee . UdpUser ,
Employee_Version = employee . Version ,
//Employee_weeklyfls = employee,
//Employee_weeklytotalhours,
} ;
CustomerServiceImp . MakeNewPersonHistoryEntry ( employee . Person , statementType ) ;
DAOFactory . GenericDAO . Insert ( employeeHistory ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
public List < long > LoadTeamsRelatedCustomerOids ( long employeeOid )
{
try
{
return DAOFactory . SearchDAO . FindTeamRelatedCustomerOids ( employeeOid ) ;
}
catch ( Exception e )
{
throw Utils . CreateBeWoFaultException ( e ) ;
}
}
2020-08-17 16:52:25 +02:00
public List < EmployeeDC > GetAllActiveEmployees ( )
{
try
{
var employees = DAOFactory . GenericDAO . GetAllActive < Employee > ( ) ;
return MapperFactory . EmployeeDC_Employee . MapToNewDCs ( employees ) ;
}
catch ( Exception exception )
{
throw Utils . CreateBeWoFaultException ( exception ) ;
}
}
2020-09-14 19:07:23 +02:00
2020-11-09 17:55:01 +01: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>
2020-09-14 19:07:23 +02:00
public List < CompactCustomerDC > GetActiveCompactCustomersForEmployee ( long? employeeOid )
{
try
{
var customers = DAOFactory . SearchDAO . GetAllCustomersForEmployee ( employeeOid ) ;
return MapperFactory . CompactCustomerDC_Customer . MapToNewDCs ( customers ) ;
}
catch ( Exception exception )
{
throw Utils . CreateBeWoFaultException ( exception ) ;
}
}
2020-09-30 19:23:42 +02:00
2020-11-09 17:55:01 +01: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>
2020-09-30 19:23:42 +02:00
public List < CompactEmployeeDC > GetActiveCompactEmployeesForEmployee ( long employeeOid )
{
try
{
var employees = DAOFactory . SearchDAO . GetAllActiveEmployeesForEmployee ( employeeOid ) ;
return MapperFactory . CompactEmployeeDC_Employee . MapToNewDCs ( employees ) ;
}
catch ( Exception exception )
{
throw Utils . CreateBeWoFaultException ( exception ) ;
}
}
2020-11-09 17:55:01 +01: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 > ( ) ;
var teams = new List < Team > ( ) ;
2021-02-17 16:59:26 +01:00
var teamOids = teams . Where ( team = > team . Oid . HasValue ) . Select ( team = > team . Oid . Value ) ;
2020-11-09 17:55:01 +01: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
teams . DoForEach ( team = >
2020-11-09 17:55:01 +01:00
{
2021-02-17 16:59:26 +01:00
team . MemberList . Where ( member = > member . Oid . HasValue & & member . Oid ! = employeeOid ) . DoForEach ( member = >
2020-11-09 17:55:01 +01:00
{
2021-02-17 16:59:26 +01:00
// 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 )
) ;
} ) ;
} ) ;
2020-11-09 17:55:01 +01:00
return result ;
}
catch ( Exception exception )
{
throw Utils . CreateBeWoFaultException ( exception ) ;
}
}
/// <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 ) ;
return MapperFactory . TeamDC_Team . MapToNewDCs ( teams ) ;
}
catch ( Exception exception )
{
throw Utils . CreateBeWoFaultException ( exception ) ;
}
}
/// <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 ) ;
return MapperFactory . CompactTeamDC_Team . MapToNewDCs ( teams ) ;
}
catch ( Exception exception )
{
throw Utils . CreateBeWoFaultException ( exception ) ;
}
}
2020-12-16 21:49:47 +01:00
public List < SupportConceptDC > GetActiveSupportConceptsForEmployee ( long? employeeOid , CustomerFilterEnum supportConceptFilter )
{
try
{
var supportConcepts = DAOFactory . SearchDAO . GetActiveSupportConceptsForEmployee ( employeeOid , supportConceptFilter ) ;
return MapperFactory . SupportConceptDC_SupportConcept . MapToNewDCs ( supportConcepts ) ;
}
catch ( Exception exception )
{
throw Utils . CreateBeWoFaultException ( exception ) ;
}
}
2021-02-17 16:59:26 +01:00
public List < long > FindTeamCustomers ( long? teamOid )
{
try
{
var customerOids = new List < long > ( ) ;
ApplicationUser loggedInUser ;
if ( LoggedInUserOperationContextExt . Current ! = null & & LoggedInUserOperationContextExt . Current . User ! = null )
{
loggedInUser = LoggedInUserOperationContextExt . Current . User ;
}
else
{
loggedInUser = SessionFacade . LoggedInUser ;
}
if ( loggedInUser ? . Employee ! = null )
{
var teams = new List < Team > ( ) ;
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 ) ) ;
}
foreach ( var team in teams )
{
if ( ! team . Oid . HasValue )
{
continue ;
}
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 ) ;
}
}
}
}
}
return customerOids ;
}
catch ( Exception exception )
{
throw Utils . CreateBeWoFaultException ( exception ) ;
}
}
2016-06-27 01:45:38 +02:00
}
}