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());
        }
Esempio n. 2
0
        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);
        }