public async Task <Unit> Handle(ShowMySkillCommand command, CancellationToken cancellationToken) { var playerId = command.PlayerId; var player = await _playerDomainService.Get(playerId); if (player == null) { return(Unit.Value); } var skillModels = new List <SkillModel>(); var playerSkills = await _playerSkillDomainService.GetAll(player.Id); var baseSkills = await _skillDomainService.GetAllBaseSkills(); foreach (var baseSkill in baseSkills) { if (playerSkills.Count(x => x.SkillId == baseSkill.Id) == 0) { var playerSkill = new PlayerSkillEntity { Exp = 0, Level = 0, PlayerId = playerId, SkillId = baseSkill.Id, SkillName = baseSkill.Name }; await _playerSkillDomainService.Add(playerSkill); playerSkills.Add(playerSkill); } } var ids = playerSkills?.Select(x => x.SkillId); var skills = (await _skillDomainService.GetAll()).Where(x => ids.Contains(x.Id)); foreach (var playerSkill in playerSkills) { var skill = skills.FirstOrDefault(x => x.Id == playerSkill.SkillId); if (skill != null) { var skillModel = _mapper.Map <SkillModel>(skill); skillModel.ObjectSkillId = playerSkill.Id; skillModel.Level = playerSkill.Level; skillModel.Exp = playerSkill.Exp; skillModels.Add(skillModel); } } await _mudProvider.ShowMySkill(playerId, skillModels); return(Unit.Value); }