private List<Funcionality> ChooseBestFunctionalities(IEnumerable<Funcionality> missingFunctionalities, Company company) { MarketReaction reaction = MarketReaction.HighGrowth; List<Funcionality> bestFunctionalities = new List<Funcionality>(); while (bestFunctionalities.Count() == 0) { bestFunctionalities = missingFunctionalities.Where(func => func.MarketReaction == reaction).ToList(); reaction--; } return bestFunctionalities; }
private void Step3i(Company company) { Console.Out.WriteLine("Step3i"); IEnumerable<Company> otherCompanies = mAllComapnies.Where(c => c != company); List<Funcionality> priorityFunctionalities = new List<Funcionality>(); foreach (var otherCompany in otherCompanies) { priorityFunctionalities.AddRange(otherCompany.ImplementedFunctionalites.Except(company.ImplementedFunctionalites)); } if (priorityFunctionalities.Count != 0) { priorityFunctionalities.Sort(); } priorityFunctionalities = priorityFunctionalities.Distinct().ToList(); bool leader = priorityFunctionalities.Count == 0; List<Funcionality> missingFunctionalities = leader ? company.MissingFunctionalities : priorityFunctionalities; if (!leader) { missingFunctionalities = ChooseBestFunctionalities(missingFunctionalities, company); } var functionalitesWithCost = missingFunctionalities .Select(func => new { Functionality = func, Cost = company.functionalityCost(func) }); Funcionality functionalityToDevelop = null; functionalityToDevelop = functionalitesWithCost .First(pair => pair.Cost == functionalitesWithCost.Min(internalPair => internalPair.Cost)).Functionality; company.developFunctionality(functionalityToDevelop); }
private void Step5i(Company company) { Console.Out.WriteLine("Step5i"); }