private AnnualPlanKindGameModel GetKindAnnualPlanModel(IGrouping <int, GameDto> gameByKind) { var annualPlanSubKindGameModels = new List <AnnualPlanSubKindGameModel>(); foreach (var gameBySubKind in gameByKind.GroupBy(x => x.SubKind)) { if (gameBySubKind.Key.HasValue) { AnnualPlanSubKindGameModel subKindGameModel = GetSubKindAnnualPlanModel(gameByKind.Key, gameBySubKind); annualPlanSubKindGameModels.Add(subKindGameModel); } } var annualPlanKindGameModel = new AnnualPlanKindGameModel { Kind = gameByKind.Key, KindName = GamesByType.FirstOrDefault(x => x.Kind == gameByKind.Key).KindName, Type = (GameType)GameType, AnnualPlanSubKindGameModels = annualPlanSubKindGameModels }; List <int> gameIds = GamesByType.Where(x => x.Kind == gameByKind.Key).Select(x => x.Id).ToList(); annualPlanKindGameModel = SetPlans(annualPlanKindGameModel, gameIds); return(annualPlanKindGameModel); }
private AnnualPlanSubKindGameModel GetSubKindAnnualPlanModel(int?gameKind, IGrouping <int?, GameDto> gameBySubKind) { if (!gameBySubKind.Key.HasValue) { return(new AnnualPlanSubKindGameModel()); } List <GameHuntPlanDto> classHuntPlans = (from game in Games join currentHuntPlan in CurrentHuntPlans on game.Id equals currentHuntPlan.GameId where game.Kind == gameKind && game.SubKind == gameBySubKind.Key && currentHuntPlan.Class != null select currentHuntPlan).ToList(); var annualPlanClassGameModels = new List <AnnualPlanClassGameModel>(); foreach (GameHuntPlanDto classHuntPlan in classHuntPlans) { AnnualPlanClassGameModel annualPlanClassGameModel = GetClassAnnualPlanModel(classHuntPlan); annualPlanClassGameModels.Add(annualPlanClassGameModel); } var annualPlanKindGameModel = new AnnualPlanSubKindGameModel { Type = (GameType)GameType, SubKind = gameBySubKind.Key, SubKindName = GamesByType.FirstOrDefault(x => x.Kind == gameKind && x.SubKind == gameBySubKind.Key).SubKindName, AnnualPlanClassGameModels = annualPlanClassGameModels }; int gameId = GamesByType.FirstOrDefault(x => x.Kind == gameKind && x.SubKind == gameBySubKind.Key).Id; annualPlanKindGameModel = SetPlans(annualPlanKindGameModel, new List <int> { gameId }); return(annualPlanKindGameModel); }