public async Task SetUpWeaponsMapAsync()
        {
            await _weaponMapSetUpSemaphore.WaitAsync();

            try
            {
                using var factory = _dbContextHelper.GetFactory();
                var dbContext = factory.GetDbContext();

                var nonWeaponItemCategoryIds = _itemCategoryService.GetNonWeaponItemCateogryIds();

                var storeWeapons = await dbContext.Items
                                   .Where(i => i.ItemCategoryId.HasValue && !nonWeaponItemCategoryIds.Contains((int)i.ItemCategoryId))
                                   .ToListAsync();

                foreach (var weaponId in WeaponsMap.Keys)
                {
                    if (!storeWeapons.Any(i => i.Id == weaponId))
                    {
                        WeaponsMap.TryRemove(weaponId, out var removedItem);
                    }
                }

                foreach (var weapon in storeWeapons)
                {
                    if (WeaponsMap.ContainsKey(weapon.Id))
                    {
                        WeaponsMap[weapon.Id] = weapon;
                    }
                    else
                    {
                        WeaponsMap.TryAdd(weapon.Id, weapon);
                    }
                }
            }
            catch (Exception ex)
            {
                _logger.LogError($"Error setting up Weapons Map: {ex}");
            }
            finally
            {
                _weaponMapSetUpSemaphore.Release();
            }
        }