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); } }
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 }); }
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); }