using System; using System.Collections.Generic; using System.IO; using System.Linq; using BeWo.Data; using BeWo.Data.Access; using BeWo.Data.Entities; using BeWo.Service.Core; using BeWo.Service.DCEntityMapper; using BeWo.Service.MessageContracts; using BS.Shared; using BS.Shared.Core; using BS.Shared.DataContracts; using BS.Shared.DataContracts.Compact; using BS.Shared.Extensions; using BS.Shared.Services; using Utils = BeWo.Service.Core.Utils; namespace BeWo.Service.Plugins { public class EmployeeService : AbstractIDSpecificDefaultClass { public virtual EmployeeDC LoadEmployee(long eOid) { SettingsLogic.AddToUsersHistory(eOid); var dc = MapperFactory.EmployeeDC_Employee.MapToNewDC(DAOFactory.GenericDAO.LoadByID(eOid)); return dc; } public virtual long InsertNewEmployee(EmployeeDC pEmployeeDC) { Employee lEmployee = MapperFactory.EmployeeDC_Employee.MapToNewEntity(pEmployeeDC); DAOFactory.GenericDAO.Insert(lEmployee); return lEmployee.Oid.Value; } public virtual List GetAllActiveEmployeesCompact() { return MapperFactory.CompactEmployeeDC_Employee.MapToNewDCs(DAOFactory.GenericDAO.GetAllActive()); } public virtual List GetAllActiveAndArchivedEmployeesCompact() { return MapperFactory.CompactEmployeeDC_Employee.MapToNewDCs(DAOFactory.GenericDAO.GetAllActiveAndArchived()); } public virtual List GetAllTeamsCompact() { if (Utils.UserHasRight(GetLoggedInUser(), UserRightType.TeamView_ViewAll)) { return MapperFactory.CompactTeamDC_Team.MapToNewDCs(DAOFactory.GenericDAO.GetAllActive()); } if (Utils.UserHasRight(GetLoggedInUser(), UserRightType.TeamView_ViewMyTeams)) { var teams = DAOFactory.SearchDAO.FindAllActiveTeamsOfEmployee(LoggedInUserOperationContextExt.Current.User.Employee.Oid.Value); return MapperFactory.CompactTeamDC_Team.MapToNewDCs(teams); } return new List(); } //Für Main Navigation View public virtual List GetAllCompactEmployees() { var employees = DAOFactory.GenericDAO.GetAll(); var dcs = MapperFactory.CompactEmployeeDC_Employee.MapToNewDCs(employees); var teams = GetAllTeamsCompact(); var teamDCs = new List(); foreach (var ct in teams) teamDCs.Add(MapperFactory.TeamDC_Team.MapToNewDC(DAOFactory.GenericDAO.GetByID(ct.TeamOid))); foreach (var dc in dcs) { foreach (var tDC in teamDCs) { if (tDC.Member.Contains(dc)) { if (dc.TeamOids == null) dc.TeamOids = new List(); if (!dc.TeamOids.Contains(tDC.TeamOid.Value)) dc.TeamOids.Add(tDC.TeamOid.Value); } } if (dc.TeamOids != null) { foreach (var oid in dc.TeamOids) { var team = teamDCs.FirstOrDefault(t => t.TeamOid == oid); if (team != null) { if (dc.RelatedTeams == null) dc.RelatedTeams = "Teams: " + team.Name + ", "; else dc.RelatedTeams += team.Name + ", "; } } if (dc.RelatedTeams != null && dc.RelatedTeams.Length > 0) dc.RelatedTeams = dc.RelatedTeams.Remove(dc.RelatedTeams.Length - 2, 1); } } return dcs; } public virtual List GetAllAuthorizedCompactEmployees() { var user = GetLoggedInUser(); var employees = DAOFactory.GenericDAO.GetAllActive(); //var dcs = MapperFactory.CompactEmployeeDC_Employee.MapToNewDCs(employees); var result = new List(); bool darfAlleSehen = false; bool darfAlleDesTeamsSehen = false; bool darfAlleEigenenSehen = false; if (Core.Utils.UserHasRight(user, UserRightType.Employee_AllowViewOwnEmployees)) { darfAlleEigenenSehen = true; } if (Core.Utils.UserHasRight(user, UserRightType.EmployeeView_View)) { darfAlleSehen = true; } if (Core.Utils.UserHasRight(user, UserRightType.Employee_AllowViewOwnTeam)) { darfAlleDesTeamsSehen = true; } List teamMemberOids = new List(); foreach (var item in user.Employee.LeadingTeams) { foreach (var member in item.MemberList) { teamMemberOids.Add(member.Oid.Value); } } foreach (var emp in employees) { if (darfAlleSehen) { result.Add(MapperFactory.CompactEmployeeDC_Employee.MapToNewDC(emp)); } else if (darfAlleDesTeamsSehen) { if (emp.Oid == user.Employee.Oid || teamMemberOids.Contains(emp.Oid.Value)) { result.Add(MapperFactory.CompactEmployeeDC_Employee.MapToNewDC(emp)); } } else if (darfAlleEigenenSehen) { if (emp.Oid == user.Employee.Oid) { result.Add(MapperFactory.CompactEmployeeDC_Employee.MapToNewDC(emp)); } } } return result.OrderBy(e => e.LastName).ToList(); } private ApplicationUser GetLoggedInUser() { if(LoggedInUserOperationContextExt.Current != null && LoggedInUserOperationContextExt.Current.User != null) { return LoggedInUserOperationContextExt.Current.User; } return SessionFacade.LoggedInUser; } } }