Exemplo n.º 1
0
        public async Task <int> CreateGuildProfileAsync(
            string creatorId,
            string profileName,
            GuildSlim guild,
            EfModels.StoredBlizzardModels.StoredRealm realm,
            EfEnums.GameRegionEnum region,
            bool isPublic)
        {
            using (var transaction = await this.context.Database.BeginTransactionAsync())
            {
                var newProfile = new EF.Models.GuildProfile()
                {
                    CreatorId   = creatorId,
                    ProfileName = profileName,
                    RealmId     = realm.Id,
                    IsPublic    = isPublic
                };

                this.context.GuildProfile.Add(newProfile);

                await this.context.SaveChangesAsync();

                EfModels.StoredBlizzardModels.StoredGuild storedGuild = new EfModels.StoredBlizzardModels.StoredGuild()
                {
                    Name      = guild.Name,
                    RealmId   = realm.Id,
                    ProfileId = newProfile.Id
                };

                this.context.StoredGuilds.Add(storedGuild);
                newProfile.CreatorGuild = storedGuild;

                if (!isPublic)
                {
                    this.context.User_GuildProfilePermissions.Add(new EF.Models.User_GuildProfilePermissions()
                    {
                        PermissionLevelId = (int)EF.Models.Enums.GuildProfilePermissionLevel.Admin,
                        ProfileId         = newProfile.Id,
                        UserId            = creatorId
                    });
                }

                await this.context.SaveChangesAsync();

                transaction.Commit();

                return(newProfile.Id);
            }
        }
Exemplo n.º 2
0
        private StoredRealm MapRealm(EfModels.StoredBlizzardModels.StoredRealm efRealm)
        {
            if (efRealm == null)
            {
                return(null);
            }

            return(new StoredRealm()
            {
                Id = efRealm.Id,
                Name = efRealm.Name,
                Slug = efRealm.Slug,
                RegionId = efRealm.RegionId
            });
        }
Exemplo n.º 3
0
        private async Task <IEnumerable <EfBlizzardModels.StoredPlayer> > GetOrInsertProfileGuildMembers(int profileId, EfBlizzardModels.StoredGuild guild, EfBlizzardModels.StoredRealm realm, EfEnums.GameRegionEnum region)
        {
            var members = await this.guildMemberCache.GetMembers(region, realm.Name, guild.Name);

            var realmNames = members.Select(x => x.PlayerRealmName).Distinct();

            var realmsTasks = realmNames.Select(async x => await this.realmStoreByValues.GetRealmAsync(x, region));
            await Task.WhenAll(realmsTasks);

            var realms = realmsTasks.Select(x => x.Result);

            var newPlayers = await this.dataRepo.InsertGuildPlayersIfNeededAsync(members.Select(x =>
                                                                                                new EfBlizzardModels.StoredPlayer()
            {
                Name      = x.PlayerName,
                Class     = x.Class,
                Level     = x.Level,
                GuildId   = guild.Id,
                RealmId   = realms.SingleOrDefault(y => y.Name == x.PlayerRealmName).Id,
                ProfileId = profileId
            }),
                                                                                 profileId,
                                                                                 guild.Id);

            return(newPlayers);
        }