using System.Collections.Generic; using System.Linq; using Nancy; using Nancy.ModelBinding; using Sony.Filtr.Applications; using Sony.Filtr.Core.Settings; namespace Sony.Filtr.AdminAPI.Modules.PublicData { public class DefaultFilteringModule : BaseModule { private readonly List _settableValues = new List() { "minTempo", "maxTempo", "minDanceability", "maxDanceability", "minEnergy", "maxEnergy", "minHotness", "maxHotness", "minDuration", "maxDuration", }; public DefaultFilteringModule(SettingsManager settingsManager, ApplicationInstanceManager applicationInstanceManager) : base(applicationInstanceManager) { Get["GetDefaultFiltering", "/defaultFilteringSettings"] = parameters => { var defaultParameters = new Dictionary(); foreach (var settableValue in _settableValues) { var value = settingsManager.GetDoubleSetting(settableValue, applicationInstanceManager.GetGlobalPushApplication()); defaultParameters.Add(settableValue, value); } return Response.AsJson(new DefaultFilteringSettingsViewModel() { DefaultSettings = defaultParameters}); }; Put["UpdateDefaultFiltering", "/defaultFilteringSettings"] = parameters => { var defaultParameters = this.Bind(); if (defaultParameters == null || defaultParameters.DefaultSettings == null) return HttpStatusCode.BadRequest; foreach (var settableValue in _settableValues) { if (defaultParameters.DefaultSettings.ContainsKey(settableValue)) settingsManager.SetDoubleSetting(settableValue, defaultParameters.DefaultSettings[settableValue], applicationInstanceManager.GetGlobalPushApplication()); } return Response.AsJson(defaultParameters); }; } } public class DefaultFilteringSettingsViewModel { public Dictionary DefaultSettings { get; set; } } }