using Infrastructure.Data; using Infrastructure.Web; using System.Collections.Generic; using System.Linq; using System.Security.Claims; using TeacherExt.Entities; namespace TeacherExt { public class UserService : IUserService { private readonly IRepository _personRepo; private readonly IRepository _loginRepo; private readonly IRepository _personRoleRepo; private readonly IRepository _roleRepo; public UserService(IRepository personRepo, IRepository loginRepo, IRepository personRoleRepo, IRepository roleRepo) { this._personRepo = personRepo; this._loginRepo = loginRepo; this._personRoleRepo = personRoleRepo; this._roleRepo = roleRepo; } public List GetOrgans(string userName) { return new List(); } public List GetRoles(string userName, string organId) { var list = ( from loginPerson in this._loginRepo.ReadOnlyTable().Where(o=>o.LoginName==userName) join personRole in this._personRoleRepo.ReadOnlyTable() on loginPerson.PersonId equals personRole.PersonId join role in this._roleRepo.ReadOnlyTable() on personRole.RoleId equals role.Id select role.RoleName).Distinct().ToList() .Select(o => new Claim(ClaimTypes.Role, o)).ToList(); var obj = (from loginPerson in this._loginRepo.ReadOnlyTable().Where(o => o.LoginName == userName) join person in this._personRepo.ReadOnlyTable() on loginPerson.PersonId equals person.Id select new { person.Id, person.OrganId }).FirstOrDefault(); list.Add(new Claim("PersonId", obj.Id.ToString())); list.Add(new Claim("OrganId", obj.OrganId.ToString())); return list; } } }