public async Task <Opportunity> AddSkillAsync(string oppId, Skill skill) { var opp = await GetOpportunityByIdAsync(oppId); if (opp.Skills == null) { opp.Skills = new List <Skill>(); } opp.Skills.Add(skill); var summary = await _summaryService.GetSummaryAsync(); var account = await _accountsService.GetAccountByIdAsync(opp.AccountId); account.TargetPositions = account.TargetPositions + 1; await _accountsService.UpdateAccountAsync(account); summary = summary.AddAccount(account.Id, account.Description); summary = summary.AddSkill(skill.Id, skill.Description); summary = summary.IncreaseTarget(skill.Id, account.Id, 1); summary.Target = summary.Target + 1; await _summaryService.UpdateSummaryAsync(summary); await UpdateOpportunityAsync(opp); return(opp); }