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); }
/// <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); } }