using DAL._Shared.SharedModels; using HRD.LDAPService; using HRD.WebApi.Repositories; using Microsoft.EntityFrameworkCore; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace DAL._Shared.SharedRepositories { public class WebAppEmployeeInfoRepository : BaseRepository { public WebAppEmployeeInfoRepository() : base(new WebApiContext()) { } private IQueryable PrepareList(List departmentIds) { IQueryable items = RepositoryContext.Set().AsNoTracking(); return items.Where(x => departmentIds.Contains(x.DepartmentId)); } public async Task> GetEmailListForDepartmentsAsync(List departmentIds) { return await PrepareList(departmentIds).Select(x => x.Email).ToListAsync(); } public async Task> GetLoginnameListForDepartmentsAsync(List departmentIds) { return await PrepareList(departmentIds).Select(x => x.LoginName).ToListAsync(); } public async Task> GetShortnameListForDepartmentsAsync(List departmentIds) { return await PrepareList(departmentIds).Select(x => x.ShortName).ToListAsync(); } public async Task GetShortnameForLoginAsync(string loginname) { return (await RepositoryContext.Set().FirstAsync(x => x.LoginName == loginname)).ShortName; } //---------------- public List GetEmailListForDepartments(List departmentIds) { return PrepareList(departmentIds).Select(x => x.Email).ToList(); } public List GetLoginnameListForDepartments(List departmentIds) { return PrepareList(departmentIds).Select(x => x.LoginName).ToList(); } public List GetShortnameListForDepartments(List departmentIds) { return PrepareList(departmentIds).Select(x => x.ShortName).ToList(); } public string GetShortnameForLogin(string loginname) { return RepositoryContext.Set().First(x => x.LoginName == loginname).ShortName; } //---------------- public bool PrepareForUserLoginnameOrLoginnameListFilter(LdapUser ldapUser, ref string loginName, ref List loginNameList) { if (ldapUser.IsAdmin() || ldapUser.IsMaster()) { } else if (ldapUser.IsDepartmentMaster() || ldapUser.IsDepartmentUser()) { loginNameList = GetLoginnameListForDepartments(ldapUser.DepartmentIdListAll()); loginName = default; } else if (ldapUser.IsUser()) { loginNameList = default; loginName = ldapUser.LoginName; } else { return false; //shouldn't happen } return true; } public bool PrepareForUserEmailOrEmailListFilter(LdapUser ldapUser, ref string EmailBV, ref List EmailBVList) { if (string.IsNullOrEmpty(EmailBV)) //check for user & master { if (ldapUser.IsAdmin() || ldapUser.IsMaster()) { // No correction } else if (ldapUser.IsDepartmentMaster() || ldapUser.IsDepartmentUser()) { EmailBVList = GetEmailListForDepartments(ldapUser.DepartmentIdListAll()); EmailBV = default; } else if (ldapUser.IsUser()) { EmailBVList = default; EmailBV = ldapUser.Email; } else { return false; //shouldn't happen } } return true; } } }