Exemplo n.º 1
0
        private static async Task FillMissions(List <MissionRequest> missionRequests)
        {
            var missionIds  = missionRequests.GroupBy(mr => mr.MissionId).Select(group => group.Key).ToArray();
            var expressions = new List <Expression <Func <Mission, bool> > >();

            for (int index = 0; index < missionIds.Length; index++)
            {
                var missionId = missionIds[index];
                if (index > 0)
                {
                    var lastCriteria = expressions[index - 1];
                    expressions.Add(mission => lastCriteria.Invoke(mission) || mission.Id == missionId);
                }
                else
                {
                    expressions.Add(mission => mission.Id == missionId);
                }
            }

            var queryOptions = new QueryOptions <Mission> {
                Filter = expressions.Last().Expand()
            };
            var missionManager = new AzureTableStorageManager(AzureTableName.Missions);


            if (missionRequests.Count > 1) //for admin list
            {
                var initialFilter = TableQuery.GenerateFilterCondition(
                    AzureTableConstants.RowKey,
                    QueryComparisons.Equal,
                    AzureTableConstants.MissionRowKey);
                var missions =
                    await
                    missionManager.GetEntitiesAsync(
                        queryOptions.GenerateTableQuery <Mission, MissionAzure>(initialFilter));

                foreach (var missionRequest in missionRequests)
                {
                    missionRequest.Mission =
                        missions.FirstOrDefault(mission => mission.Id == missionRequest.MissionId).FromAzureModel();
                }
            }
            else //for single request get full mission
            {
                var initialFilter = TableQuery.GenerateFilterCondition(
                    AzureTableConstants.PartitionKey,
                    QueryComparisons.Equal,
                    missionRequests[0].MissionId);
                var missions =
                    await missionManager.GetEntitiesAsync(queryOptions.GenerateTableQuery <Mission, MissionAzure>(initialFilter));

                missionRequests[0].Mission = Converters.ConvertToMission(missions, true);
            }
        }
Exemplo n.º 2
0
        private static async Task FillUsers(List <MissionRequest> missionRequests)
        {
            var userIds     = missionRequests.GroupBy(mr => mr.UserId).Select(group => group.Key).ToArray();
            var expressions = new List <Expression <Func <User, bool> > >();

            for (int index = 0; index < userIds.Length; index++)
            {
                var userId = userIds[index];
                if (index > 0)
                {
                    var lastCriteria = expressions[index - 1];
                    expressions.Add(user => lastCriteria.Invoke(user) || user.Id == userId);
                }
                else
                {
                    expressions.Add(user => user.Id == userId);
                }
            }

            var queryOptions = new QueryOptions <User> {
                Filter = expressions.Last().Expand()
            };
            var userManager = new AzureTableStorageManager(AzureTableName.User);

            if (missionRequests.Count > 1)//for admin list
            {
                var initialFilter = TableQuery.GenerateFilterCondition(
                    AzureTableConstants.RowKey,
                    QueryComparisons.Equal,
                    AzureTableConstants.UserRowKey);
                var usersResult =
                    await userManager.GetEntitiesAsync(queryOptions.GenerateTableQuery <User, UserAzure>(initialFilter));//TODO don't load all users

                foreach (var missionRequest in missionRequests)
                {
                    missionRequest.User = usersResult.SingleOrDefault(user => user.Id == missionRequest.UserId).FromAzureModel();
                }
            }
            else //for single request get user qualities
            {
                var initialFilter = TableQuery.GenerateFilterCondition(
                    AzureTableConstants.PartitionKey,
                    QueryComparisons.Equal,
                    missionRequests[0].UserId);
                var usersResult =
                    await userManager.GetEntitiesAsync(queryOptions.GenerateTableQuery <User, UserAzure>(initialFilter));

                missionRequests[0].User = Converters.ConvertToUser(usersResult, true);
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// Return the list of hint requests.
        /// </summary>
        /// <param name="options">Options for table query.</param>
        /// <returns></returns>
        public async Task <List <HintRequest> > GetHintRequests(QueryOptions <HintRequest> options)
        {
            var tableQuery   = options.GenerateTableQuery <HintRequest, HintRequestAzure>();
            var hintRequests = await _azureManager.GetEntitiesAsync(tableQuery);

            return(hintRequests.Select(t => t.FromAzureModel()).ToList());
        }
Exemplo n.º 4
0
        /// <summary>
        ///     Gets the person qualities.
        /// </summary>
        /// <param name="options">The options.</param>
        /// <returns>Task{IEnumerable{PersonQuality}}.</returns>
        public async Task <List <PersonQuality> > GetPersonQualities(QueryOptions <PersonQuality> options)
        {
            var tableQuery = options.GenerateTableQuery <PersonQuality, PersonQualityAzure>();
            var result     = await _azureManager.GetEntitiesAsync(tableQuery);

            var personQualities = result.Select(az => az.FromAzureModel()).ToList();

            return(personQualities.FilterCollectionPostFactum(options));
        }
Exemplo n.º 5
0
        /// <summary>
        ///     Gets the users identities.
        /// </summary>
        /// <param name="options">The options.</param>
        /// <returns>Task{IEnumerable{UserIdentity}}.</returns>
        public async Task <IEnumerable <UserIdentity> > GetUsersIdentities(QueryOptions <UserIdentity> options)
        {
            var tableQuery      = options.GenerateTableQuery <UserIdentity, UserIdentityAzure>();
            var azureIdentities = await _azureManager.GetEntitiesAsync(tableQuery);

            var userIdentities = azureIdentities.Select(a => a.FromAzureModel()).ToList();

            return(userIdentities.FilterCollectionPostFactum(options));
        }
Exemplo n.º 6
0
        /// <summary>
        ///     Gets the aliases.
        /// </summary>
        /// <param name="options">The options.</param>
        /// <returns>Task{IEnumerable{CommonPlaceAlias}}.</returns>
        public async Task <IEnumerable <CommonPlaceAlias> > GetAliases(QueryOptions <CommonPlaceAlias> options)
        {
            var tableQuery   = options.GenerateTableQuery <CommonPlaceAlias, CommonPlaceAliasAzure>();
            var azureAliases = await _azureManager.GetEntitiesAsync(tableQuery);

            var aliases = azureAliases.Select(a => a.FromAzureModel()).ToList();

            return(aliases.FilterCollectionPostFactum(options));
        }
Exemplo n.º 7
0
        /// <summary>
        ///     Gets the kindActions.
        /// </summary>
        /// <param name="options">
        ///     The options.
        /// </param>
        /// <returns>
        ///     Task{IEnumerable{KindAction}}.
        /// </returns>
        public async Task <List <KindAction> > GetKindActions(QueryOptions <KindAction> options)
        {
            var tableQuery = options.GenerateTableQuery <KindAction, KindActionAzure>();
            var result     = await _azureManager.GetEntitiesAsync(tableQuery);

            var azureKindActions = result.Select(azureModel => azureModel.FromAzureModel()).ToList();

            return(azureKindActions.FilterCollectionPostFactum(options));
        }
Exemplo n.º 8
0
        /// <summary>
        ///     Gets the appErrorInfos.
        /// </summary>
        /// <param name="options">
        ///     The options.
        /// </param>
        /// <returns>
        ///     Task{IEnumerable{AppErrorInfo}}.
        /// </returns>
        public async Task <IEnumerable <AppErrorInfo> > GetAppErrorInfos(QueryOptions <AppErrorInfo> options)
        {
            var tableQuery = options.GenerateTableQuery <AppErrorInfo, AppErrorInfoAzure>();
            var result     = await _azureManager.GetEntitiesAsync(tableQuery);

            var azureAppErrorInfos = result.Select(azureModel => azureModel.FromAzureModel()).ToList();

            return(azureAppErrorInfos.FilterCollectionPostFactum(options));
        }
Exemplo n.º 9
0
        /// <summary>
        ///     Gets the missions.
        /// </summary>
        /// <param name="options">
        ///     The options.
        /// </param>
        /// <returns>
        ///     Task{IEnumerable{Mission}}.
        /// </returns>
        public async Task <List <Mission> > GetMissions(QueryOptions <Mission> options)
        {
            string expandFilter;
            bool   needExpand = CheckExpandGetFilter(options.Expand, out expandFilter);
            var    tableQuery = options.GenerateTableQuery <Mission, MissionAzure>(expandFilter);

            var azureMissions = await _azureManager.GetEntitiesAsync(tableQuery);

            var missions =
                azureMissions.GroupBy(m => m.PartitionKey).Select(group => Converters.ConvertToMission(group.ToList(), needExpand)).ToList();

            return(missions.FilterCollectionPostFactum(options));
        }
Exemplo n.º 10
0
        /// <summary>
        ///     Gets the users.
        /// </summary>
        /// <param name="options">The options.</param>
        /// <returns></returns>
        public async Task <IEnumerable <User> > GetUsers(QueryOptions <User> options)
        {
            string expandFilter;
            var    needExpand = CheckExpandGetFilter(options.Expand, out expandFilter);
            var    tableQuery = options.GenerateTableQuery <User, UserAzure>(expandFilter);

            var azureMissions = await _azureManager.GetEntitiesAsync(tableQuery);

            var users =
                azureMissions.GroupBy(m => m.PartitionKey)
                .Select(group => Converters.ConvertToUser(group.ToIList(), needExpand))
                .ToList();

            return(users.FilterCollectionPostFactum(options));
        }
Exemplo n.º 11
0
        /// <summary>
        ///     Gets the missionRequests.
        /// </summary>
        /// <param name="options">
        ///     The options.
        /// </param>
        /// <returns>
        ///     Task{IEnumerable{MissionRequest}}.
        /// </returns>
        public async Task <List <MissionRequest> > GetMissionRequests(QueryOptions <MissionRequest> options)
        {
            var tableQuery = options.GenerateTableQuery <MissionRequest, MissionRequestAzure>();

            var azureMissionRequests = await _azureManager.GetEntitiesAsync(tableQuery);

            var missionRequests =
                azureMissionRequests.Select(missionRequest => missionRequest.FromAzureModel()).ToList();

            if (options.Expand != null && missionRequests.Any())
            {
                await GetExpandProperties(options.Expand, missionRequests);
            }

            var filteredRequests = missionRequests.FilterCollectionPostFactum(options);

            return(filteredRequests);
        }
Exemplo n.º 12
0
        /// <summary>
        ///     Gets the MissionSets.
        /// </summary>
        /// <param name="options">
        ///     The options.
        /// </param>
        /// <returns>
        ///     Task{IEnumerable{MissionSet}}.
        /// </returns>
        public async Task <List <MissionSet> > GetMissionSets(QueryOptions <MissionSet> options)
        {
            string expandFilter;
            bool   needExpand = CheckExpandGetFilter(options.Expand, out expandFilter);
            var    tableQuery = options.GenerateTableQuery <MissionSet, MissionSetAzure>(expandFilter);

            var azureMissionSets = await _azureManager.GetEntitiesAsync(tableQuery);

            var missionSetsQuery =
                azureMissionSets.GroupBy(m => m.PartitionKey)
                .Select(group => ConvertToMissionSet(group.ToIList(), needExpand));

            var missionSets = await Task.WhenAll(missionSetsQuery);

            var filteredMissionSets = missionSets.ToList().FilterCollectionPostFactum(options);

            return(filteredMissionSets);
        }