using Infrastructure.Data; using Infrastructure.Web; using IoT.Shared.Application.Domain.Entities; using Microsoft.EntityFrameworkCore; using System.Collections.Generic; using System.Linq; using System.Security.Claims; namespace Platform { public class UserService : IUserService { private readonly IRepository _userRepo; public UserService(IRepository userRepo) { this._userRepo = userRepo; } public List GetOrgans(string userName) { var list = this._userRepo.ReadOnlyTable().Where(o => o.UserName == userName) .SelectMany(o => o.OrganUsers) .Select(o => o.OrganId.ToString()) .ToList(); return list; } public List GetRoles(string userName) { var user = this._userRepo.ReadOnlyTable() .Where(o => o.UserName == userName) .Include(o => o.OrganUsers).ThenInclude(o => o.Organ) .Include(o => o.UserRoles).ThenInclude(o => o.Role).ThenInclude(o => o.RolePermissions).ThenInclude(o => o.Permission) .FirstOrDefault(); List list = null; if (user != null) { list = user.UserRoles.Select(o => o.Role) .SelectMany(o => o.RolePermissions) .Select(o => o.Permission.Number) .Select(o => new Claim(ClaimTypes.Role, o)) .ToList(); list.Add(new Claim(ClaimTypes.GivenName, user.NickName)); } return list; } } }