Exemplo n.º 1
0
        public async Task <IActionResult> GetByEmailAddress(string emailAddress)
        {
            IActionResult result = null;

            using (ILifetimeScope scope = _container.BeginLifetimeScope())
            {
                SettingsFactory     settingsFactory = scope.Resolve <SettingsFactory>();
                CoreSettings        settings        = settingsFactory.CreateAccount(_settings.Value);
                IUserFactory        userFactory     = scope.Resolve <IUserFactory>();
                IEnumerable <IUser> users           = await userFactory.GetByEmailAddress(settings, emailAddress);

                IAccountFactory accountFactory = scope.Resolve <IAccountFactory>();
                ConcurrentBag <Task <IEnumerable <IAccount> > > accounts = new ConcurrentBag <Task <IEnumerable <IAccount> > >();
                users.AsParallel().ForAll(user => accounts.Add(accountFactory.GetByUserId(settings, user.UserId)));
                IMapper mapper = MapperConfigurationFactory.CreateMapper();
                result = Ok(
                    (await Task.WhenAll <IEnumerable <IAccount> >(accounts))
                    .SelectMany(results => results)
                    .Where(a => UserCanAccessAccount(a.AccountId))
                    .Select <IAccount, Account>(innerAccount => mapper.Map <Account>(innerAccount))
                    .ToList()
                    );
            }
            return(result);
        }
Exemplo n.º 2
0
        public async Task <IActionResult> GetAll()
        {
            IActionResult result = null;

            using (ILifetimeScope scope = _container.BeginLifetimeScope())
            {
                SettingsFactory settingsFactory = scope.Resolve <SettingsFactory>();
                CoreSettings    settings        = settingsFactory.CreateAccount(_settings.Value);
                IUser           user            = await GetUser(scope.Resolve <IUserFactory>(), settings);

                IAccountFactory        accountFactory = scope.Resolve <IAccountFactory>();
                IEnumerable <IAccount> accounts       = await accountFactory.GetByUserId(settings, user.UserId);

                IMapper mapper = MapperConfigurationFactory.CreateMapper();
                result = Ok(
                    accounts.Select <IAccount, Account>(innerAccount => mapper.Map <Account>(innerAccount))
                    );
            }
            return(result);
        }