Exemplo n.º 1
0
        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();
        }