private async Task SaveProfileDataToCsv(FortniteProfileData data, FortniteAccount account) { // NOTE: Just in case, to prevent crash if (data.ProfileChanges.Count <= 0) { return; } var accountId = data.ProfileChanges[0].Profile.AccountId; var items = data.ProfileChanges[0].Profile.Item; var outfits = SkinParser.GetOutfit(items); var backblings = SkinParser.GetBackBlings(items); var gliders = SkinParser.GetGliders(items); var pickaxes = SkinParser.GetPickaxes(items); var userProfileData = data.ProfileChanges[0].Profile; var createdAt = userProfileData.Created; var lastUpdated = userProfileData.Updated; var hasBattlePass = userProfileData.Stats.Attributes.BookPurchased; var currentPassTier = userProfileData.Stats.Attributes.BookLevel; var lifetimeWins = userProfileData.Stats.Attributes.LifetimeWins; var currentLevel = userProfileData.Stats.Attributes.Level; var accountLevel = userProfileData.Stats.Attributes.AccountLevel; var oldSeasons = new List <OldSeason>(); foreach (var season in userProfileData.Stats.Attributes.PastSeasons) { oldSeasons.Add(new OldSeason { SeasonNumber = season.SeasonNumber, PurchasedBattlePass = season.PurchasedVip, BattlePassLevel = season.BookLevel, SeasonLevel = season.SeasonLevel, SeasonWins = season.NumWins }); } var fullProfile = new FortniteAccountFullData { AccountData = account, AccountId = accountId, CreatedAt = createdAt, LastUpdate = lastUpdated, HasBattlePassPurchased = hasBattlePass, CurrentBattlePassLevel = currentPassTier, LifetimeTotalWins = lifetimeWins, CurrentSeasonalLevel = currentLevel, AccountLevel = accountLevel, //PastSeasons = oldSeasons, Outfits = outfits, Backblings = backblings, Gliders = gliders, Pickaxes = pickaxes }; _csvWriter.WriteRecord(fullProfile); // Write the fields for each previous season manually because CsvHelper doesn't support List<T> var seasonStats = new StringBuilder(); foreach (var season in oldSeasons) { seasonStats.AppendLine("Season number: " + season.SeasonNumber); seasonStats.AppendLine("Season wins: " + season.SeasonWins); seasonStats.AppendLine("Season level: " + season.SeasonLevel); seasonStats.AppendLine("Season pass: "******"Season pass level: " + season.BattlePassLevel); _csvWriter.WriteField(seasonStats); seasonStats.Clear(); } // Finish the row after writing the season data and go to next await _csvWriter.NextRecordAsync(); _textWriter.Flush(); }