public async Task <IActionResult> Details(int type, long id, long characterId)
        {
            var membershipType = (BungieMembershipType)type;

            _logger.LogInformation($"{membershipType}/{id}/{characterId}");

            var accessToken = await _contextAccessor.HttpContext.GetTokenAsync("access_token");

            var info = await _destiny2.GetProfile(accessToken, membershipType, id,
                                                  DestinyComponentType.Characters, DestinyComponentType.CharacterEquipment,
                                                  DestinyComponentType.ItemInstances, DestinyComponentType.ItemStats,
                                                  DestinyComponentType.ItemSockets, DestinyComponentType.ProfileInventories);

            var(mods, shaders) = await _perkFactory.LoadAllMods(info.ProfileInventory.Data.Items);

            var allItems = await _itemFactory.LoadItems(info.CharacterEquipment.Data[characterId].Items,
                                                        info.ItemComponents.Instances.Data,
                                                        info.ItemComponents.Stats.Data,
                                                        info.ItemComponents.Sockets.Data,
                                                        mods, shaders);

            var items       = allItems.ToDictionary(item => item.Slot.Hash);
            var stats       = GetStats(items.Values);
            var activePerks = GetActivePerks(items.Values);

            var character = info.Characters.Data[characterId];

            var model = new CharacterViewModel()
            {
                Type                 = membershipType,
                AccountId            = id,
                CharacterId          = characterId,
                Items                = items,
                EmblemPath           = _bungie.BaseUrl + character.EmblemPath,
                EmblemBackgroundPath = _bungie.BaseUrl + character.EmblemBackgroundPath,
                Stats                = stats,
                ActivePerks          = activePerks
            };

            return(View(model));
        }