コード例 #1
0
        public static DefinitionModel MapDefinition(
            CoreModel designer,
            DefinitionModel model,
            LookupValues lookupValues)
        {
            model.Keys = lookupValues.DefinitionValues
                         .Where(dv => dv.Id == model.Id)
                         .ToDictionary(kvp => kvp.Key, kvp => kvp);

            model.Tags = lookupValues.DefinitionTags
                         .Where(dt => dt.DefinitionId == model.Id);

            model.Settings = lookupValues.DefinitionSettings
                             .Where(ds => ds.DefinitionId == model.Id);

            model.Settings.ToList().ForEach(s =>
            {
                // Get all values for DefinitionSettings
                s.Keys = lookupValues.DefinitionSettingsValues
                         .Where(dsv => dsv.Id == s.Id)
                         .ToDictionary(kvp => kvp.Key, kvp => kvp);
            });

            return(model);
        }
コード例 #2
0
ファイル: GameService.cs プロジェクト: tVeratti/Forge
        /// <summary>
        /// Read all data required to build the Game Designer view.
        /// </summary>
        /// <param name="Id">The Id of the Game to request data for.</param>
        public CoreModel Designer(long Id, long UserId)
        {
            var spr_name = "[Verspyre].[Select_Designer]";

            using (var multi = _cnx.QueryMultiple(spr_name, new { Id, UserId }, commandType: CommandType.StoredProcedure))
            {
                // Read Designer DataSets
                // --------------------------------------------------
                CoreModel model = new CoreModel()
                {
                    Game        = multi.Read <GameModel>().Single(),
                    Rules       = multi.Read <RuleModel>(),
                    Definitions = multi.Read <DefinitionModel>(),
                    Settings    = multi.Read <SettingModel>(),
                    Tags        = multi.Read <TagModel>(),
                    Controls    = multi.Read <ControlModel>(),
                    Groups      = multi.Read <GroupModel>()
                };

                // Map Definition Properties
                // --------------------------------------------------
                var lookupValues = new LookupValues()
                {
                    SettingsKeys       = multi.Read <SettingKeyModel>(),
                    DefinitionTags     = multi.Read <DefinitionTagModel>(),
                    DefinitionSettings = multi.Read <DefinitionSettingModel>(),

                    // IdKeyValuePairs
                    RulesValues              = multi.Read <IdKeyValuePairModel>(),
                    DefinitionValues         = multi.Read <IdKeyValuePairModel>(),
                    DefinitionSettingsValues = multi.Read <IdKeyValuePairModel>()
                };

                // Settings Values
                model.Settings.ToList().ForEach(setting =>
                {
                    setting.Keys = lookupValues.SettingsKeys
                                   .Where(k => k.SettingId == setting.Id)
                                   .ToDictionary(kvp => kvp.Key, kvp => kvp);
                });

                // Rules Values
                model.Rules.ToList().ForEach(rule =>
                {
                    rule.Keys = lookupValues.RulesValues
                                .Where(rv => rv.Id == rule.Id)
                                .ToDictionary(kvp => kvp.Key, kvp => kvp);
                });

                model.Definitions = model.Definitions.Select(definition =>
                                                             MappingService.MapDefinition(
                                                                 model,
                                                                 definition,
                                                                 lookupValues
                                                                 )
                                                             );

                return(model);
            }
        }