Пример #1
0
        public async Task <List <GeneralItemsClientModel> > GetClientItemsAsync(GeneralBaseRequest request)
        {
            var response = await SendRequestAsync <List <GeneralItemsClientModel> >(_requestUrlBuilder.BuildGetItemsUrl(request.SessionId, request.LanguageId));

            await LogUsageStat(ActionNameConstants.GetChampions);

            return(HandleRetMessageReponse(response));
        }
Пример #2
0
        /// <summary>
        /// Initial Seeding of the database for the following tables:
        ///     -> Language
        ///     -> Queue
        ///     -> Tier
        ///     -> Item
        ///     -> Champion
        ///     -> Champion Abilities
        ///     -> Ability
        ///     -> Skins
        /// </summary>
        /// <returns>List of NonDataResult</returns>
        public async Task <IEnumerable <NonDataResult> > SeedAsync()
        {
            var response = new List <NonDataResult>();
            //insert languages
            var langaugeResult = await _unitOfWorkManager.ExecuteSingleAsync <ILanguageRepository, NonDataResult>(u => u.InsertBaseLanguageOptionsAsync());

            response.Add(langaugeResult);
            //insert queues
            var queueResult = await _unitOfWorkManager.ExecuteSingleAsync <IQueueRepository, NonDataResult>(u => u.InsertBaseQueuesAsync());

            response.Add(queueResult);
            //insert tiers
            var tierResult = await _unitOfWorkManager.ExecuteSingleAsync <ITierRepository, NonDataResult>(u => u.InsertBaseTiersAsync());

            response.Add(tierResult);
            //generate session
            var session = await _sessionClient.GetClientSessionAsync();

            //fetch items using session
            var items = await _generalClient.GetClientItemsAsync(GeneralBaseRequest.CreateInstance(session.SessionId));

            //insert items
            var itemResult = await _unitOfWorkManager.ExecuteSingleAsync <IItemRepository, NonDataResult>
                                 (u => u.InsertItemsAsync(items.Select(x => _itemMapper.Map(x))));

            //fetch champions using session
            var champions = await _generalClient.GetClientChampionsAsync(GeneralBaseRequest.CreateInstance(session.SessionId));

            var mappedChampions = champions.Select(x => _championMapper.Map(x));
            //use champions to get all abilities
            var abilities = mappedChampions.SelectMany(x => x.Abilities);
            //insert abilities
            var abilityResult = await _unitOfWorkManager.ExecuteSingleAsync <IAbilityRepository, NonDataResult>
                                    (u => u.InsertAbilitiesAsync(abilities));

            response.Add(abilityResult);
            //insert champions
            var championResult = await _unitOfWorkManager.ExecuteSingleAsync <IChampionRepository, NonDataResult>
                                     (u => u.InsertChampionsAsync(mappedChampions));

            response.Add(championResult);
            //insert champion abilities
            var championAbilitiesResult = await _unitOfWorkManager.ExecuteSingleAsync <IChampionAbilitiesRepository, NonDataResult>(u => u.InsertLinkingRelationships(mappedChampions));

            response.Add(championAbilitiesResult);
            foreach (var champion in mappedChampions)
            {
                //foreach champion fetch champion skins
                var skins = await _generalClient.GetClientChampionSkinsAsync(ChampionSkinsRequest.CreateInstance(session.SessionId, champion.PaladinsChampionId));

                var mappedSkins = skins.Select(x => _skinMapper.Map(x)).SelectMany(x => x.ToList());
                //insert skin
                var skinResult = await _unitOfWorkManager.ExecuteSingleAsync <ISkinRepository, NonDataResult>(u => u.InsertBaseChampionSkins(mappedSkins));

                response.Add(skinResult);
            }
            return(response);
        }