202 lines
7.3 KiB
C#
202 lines
7.3 KiB
C#
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 UserService : AbstractIDSpecificDefaultClass<UserService>
|
|
{
|
|
//Für alte Versionen, kann später weg
|
|
public virtual UserDC LoadUserByLoginName(string pUserName)
|
|
{
|
|
UserDC userDC = null;
|
|
|
|
ApplicationUser user = DAOFactory.UserDAO.FindUserByLoginName(pUserName);
|
|
if (user != null)
|
|
{
|
|
userDC = MapperFactory.UserDC_User.MapToNewDC(user);
|
|
|
|
CompactEmployeeDC emp = userDC.Employee;
|
|
if (emp != null)
|
|
{
|
|
//foreach (var item in user.Employee.Employee2CustomerList)
|
|
//{
|
|
// if (emp.RelatedCustomerOIDList == null)
|
|
// emp.RelatedCustomerOIDList = new List<long>();
|
|
// emp.RelatedCustomerOIDList.Add(item.CustomerOid.Value);
|
|
//}
|
|
emp.AllTeamMemberOids = new List<long>();
|
|
|
|
if (user.Employee.LeadingTeams.Count > 0)
|
|
{
|
|
emp.IsTeamLeader = true;
|
|
|
|
List<long> oids = new List<long>();
|
|
foreach (var item in user.Employee.LeadingTeams)
|
|
{
|
|
oids.Add(item.Oid.Value);
|
|
|
|
foreach (var member in item.MemberList)
|
|
{
|
|
emp.AllTeamMemberOids.Add(member.Oid.Value);
|
|
}
|
|
}
|
|
|
|
emp.LeadingTeamOids = oids;
|
|
}
|
|
|
|
//var teams = DAOFactory.SearchDAO.FindAllActiveTeamsOfEmployee(emp.EmployeeOid);
|
|
//emp.TeamOids = new List<long>();
|
|
//foreach (var t in teams)
|
|
//{
|
|
// emp.TeamOids.Add(t.Oid.Value);
|
|
|
|
// foreach (var member in t.MemberList)
|
|
// {
|
|
// emp.AllTeamMemberOids.Add(member.Oid.Value);
|
|
// }
|
|
//}
|
|
}
|
|
}
|
|
|
|
return userDC;
|
|
}
|
|
|
|
public virtual UserDC LoadUserByLoginName(string pUserName, string password)
|
|
{
|
|
UserDC userDC = null;
|
|
|
|
ApplicationUser user = DAOFactory.UserDAO.FindUserByLoginName(pUserName);
|
|
|
|
if (user != null && user.IsActive == ActivationTypeId.Active && DAOFactory.UserDAO.CheckPassword(user, password))
|
|
{
|
|
userDC = MapperFactory.UserDC_User.MapToNewDC(user);
|
|
|
|
CompactEmployeeDC emp = userDC.Employee;
|
|
if (emp != null)
|
|
{
|
|
//foreach (var item in user.Employee.Employee2CustomerList)
|
|
//{
|
|
// if (emp.RelatedCustomerOIDList == null)
|
|
// emp.RelatedCustomerOIDList = new List<long>();
|
|
// emp.RelatedCustomerOIDList.Add(item.CustomerOid.Value);
|
|
//}
|
|
emp.AllTeamMemberOids = new List<long>();
|
|
emp.TeamOids = new List<long>();
|
|
|
|
if (user.Employee.LeadingTeams.Count > 0)
|
|
{
|
|
emp.IsTeamLeader = true;
|
|
|
|
List<long> oids = new List<long>();
|
|
foreach (var item in user.Employee.LeadingTeams)
|
|
{
|
|
oids.Add(item.Oid.Value);
|
|
|
|
foreach (var member in item.MemberList)
|
|
{
|
|
emp.AllTeamMemberOids.Add(member.Oid.Value);
|
|
}
|
|
}
|
|
|
|
emp.LeadingTeamOids = oids;
|
|
}
|
|
|
|
//var teams = DAOFactory.SearchDAO.FindAllActiveTeamsOfEmployee(emp.EmployeeOid);
|
|
//emp.TeamOids = new List<long>();
|
|
//foreach (var t in teams)
|
|
//{
|
|
// emp.TeamOids.Add(t.Oid.Value);
|
|
|
|
// foreach (var member in t.MemberList)
|
|
// {
|
|
// emp.AllTeamMemberOids.Add(member.Oid.Value);
|
|
// }
|
|
//}
|
|
}
|
|
CheckRightVersion(userDC);
|
|
}
|
|
|
|
return userDC;
|
|
}
|
|
|
|
private void CheckRightVersion(UserDC userDC)
|
|
{
|
|
var lastLogins = DAOFactory.SearchDAO.FindLastLogins(userDC.LoginName, 1).ToList();
|
|
if (lastLogins != null && lastLogins.Count > 0)
|
|
{
|
|
var login = lastLogins[0];
|
|
if (!String.IsNullOrEmpty(login.Referrer))
|
|
{
|
|
//var test = "MobilClient, Version: Unbekannt";
|
|
//var test2 = "BeWoClient, Version: Microsoft Windows NT 6.2.9200.0;CLRVersion=4.0.30319.42000;BeWoVersion=Version 3.16;IsNet45OrNewer=True";
|
|
|
|
var str = login.Referrer;
|
|
//str = test;
|
|
var start = str.IndexOf("BeWoVersion=");
|
|
if (start > 0)
|
|
{
|
|
var stop = str.IndexOf(";", start);
|
|
if (stop > start)
|
|
{
|
|
//BeWoClient, Version: Microsoft Windows NT 6.2.9200.0;CLRVersion=4.0.30319.42000;BeWoVersion=Version 3.17;IsNet45OrNewer=True
|
|
|
|
|
|
var version = str.Substring(start + 12, stop - start - 12);
|
|
version = version.Replace("Version", "").Trim();
|
|
|
|
foreach (var ug in userDC.UserGroups)
|
|
{
|
|
var allrights = ug.Rights;
|
|
ug.Rights = new List<UserRightType>();
|
|
foreach (var r in allrights)
|
|
{
|
|
if (IsCorrectVersion(r, version))
|
|
{
|
|
ug.Rights.Add(r);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private bool IsCorrectVersion(UserRightType r, string version)
|
|
{
|
|
var rightVersion = GetRightVersion(r);
|
|
|
|
if (version.CompareTo(rightVersion) < 0)
|
|
{
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
private object GetRightVersion(UserRightType r)
|
|
{
|
|
if (r == UserRightType.Customer_ViewBetreuung || r == UserRightType.Customer_ViewAbsenceTimes)
|
|
{
|
|
return "3.17";
|
|
}
|
|
return "1.0";
|
|
}
|
|
}
|
|
}
|