Example #1
0
        public async Task <Unit> Handle(SetDefaultSkillCommand command, CancellationToken cancellationToken)
        {
            var playerId  = command.PlayerId;
            var mySkillId = command.MySkillId;
            var player    = await _playerDomainService.Get(playerId);

            if (player == null)
            {
                return(Unit.Value);
            }

            var playerSkills = await _playerSkillDomainService.GetAll(player.Id);

            if (playerSkills.Count(x => x.Id == mySkillId && !x.IsDefault) == 0)
            {
                return(Unit.Value);
            }

            int defaultSkillId = 0;

            foreach (var playerSkill in playerSkills)
            {
                if (playerSkill.IsDefault)
                {
                    defaultSkillId        = playerSkill.Id;
                    playerSkill.IsDefault = false;
                    await _playerSkillDomainService.Update(playerSkill);
                }

                if (playerSkill.Id == mySkillId)
                {
                    playerSkill.IsDefault = true;
                    await _playerSkillDomainService.Update(playerSkill);
                }
            }

            await _mudProvider.SetDefaultSkill(playerId, mySkillId);


            return(Unit.Value);
        }