public async Task <List <UsersEnvironments> > Handle(GetAllEnvironmentsCommand request, CancellationToken cancellationToken) { AccessCardOfUser card = await _securityService.GetUserCard(); var result = (from app in _configContext.UsersApplications.Where(w => w.Application.Code.Equals(request.ApplicationCode) && w.UserId.Equals(card.UserId)) join env in _configContext.UsersEnvironments.Include(i => i.Environment) on app.ApplicationId equals env.Environment.ApplicationId into userEnv from environmentAccess in userEnv.DefaultIfEmpty() where (environmentAccess.UserId.Equals(card.UserId) && app.AccessRole < ApplicationRole.Administrator) || (!environmentAccess.UserId.Equals(card.UserId) && app.AccessRole >= ApplicationRole.Administrator) select new { appId = app.ApplicationId, env = environmentAccess }).ToList(); return(result.Select(s => s.env).ToList()); }
public async Task <UsersEnvironments> GetEnvironment(EnvironmentArgumentCommand request, CancellationToken cancellationToken) { AccessCardOfUser card = await _securityService.GetUserCard(); var result = await(from app in _configContext.UsersApplications.Include(i => i.Application).Where(w => w.Application.Code.Equals(request.ApplicationCode) && w.UserId.Equals(card.UserId)) join env in _configContext.UsersEnvironments.Include(i => i.Environment) on app.ApplicationId equals env.Environment.ApplicationId into userEnv from environmentAccess in userEnv.DefaultIfEmpty() where environmentAccess.Environment.Code.Equals(request.EnvironmentCode) && environmentAccess.UserId.Equals(card.UserId) select new { appId = app.ApplicationId, env = environmentAccess }).FirstOrDefaultAsync(cancellationToken); request.ThrowNotFoundExceptionWhenValueIsNull(result); return(result.env); }