public async Task <ICollection <WeaponItemDto> > Handle(GetWeaponsForCurrentCharacterCommand request,
                                                            CancellationToken cancellationToken)
    {
        var weaponItems = await _characterService.WeaponItemProperty(_userService.GetCurrentUser().Id);

        var items   = weaponItems.Select(e => e.Item.Id).ToList();
        var weapons = await _weaponService.WeaponsByProductId(items);

        var result = weaponItems.Select(e =>
        {
            var currentWeapon = weapons.First(w => w.ProductId == e.Item.ProductId);
            return(new WeaponItemDto
            {
                Item = _mapper.Map <ItemDto>(e.Item),
                IsMasterful = e.IsMasterful,
                Size = e.Size,
                Damage = currentWeapon.DamageBySize(e.Size),
                AdditionalDamages = e.AdditionalDamages,
                Range = currentWeapon.Range,
                MultiplierCrit = currentWeapon.MultiplierCrit,
                CritRange = currentWeapon.CritRange,
                Ammunition = currentWeapon.Ammunition,
                DamageTypeList = currentWeapon.DamageTypeList,
                WeaponType = currentWeapon.WeaponType
            });
        }).ToList();

        return(result);
    }