public async Task <IActionResult> UpdateCoreSettings(ulong guildId, [FromBody] GuildConfigUpdate model) { if (model == null) { return(BadRequest(new { error = "Not all fields are filled" })); } GuildConfig config = await _context.GuildConfigs.SingleOrDefaultAsync(x => x.GuildId == guildId); if (config == null) { return(NotFound()); } Dictionary <string, string> errors = ValidationService.ValidateGuildConfig(model, config); if (errors.Count > 0) { return(BadRequest(errors)); } await _context.SaveChangesAsync(); return(Ok()); }
public static Dictionary <string, string> ValidateGuildConfig(GuildConfigUpdate update, GuildConfig config) { var errors = new Dictionary <string, string>(); if (string.IsNullOrWhiteSpace(update.Prefix)) { errors.Add("guild_prefix_error", Required); } else if (update.Prefix.Length > 5) { errors.Add("guild_prefix_error", "Max length 5 chars."); } else { config.Prefix = update.Prefix; } config.Logging = update.Logging == "on"; config.XpGain = update.XpGain == "on"; config.CurrencyGen = update.CurrencyGen == "on"; config.ShowHelpOnError = update.ShowHelpOnError == "on"; if (string.IsNullOrWhiteSpace(update.CurrencyName)) { errors.Add("guild_curr_error", Required); } else if (update.CurrencyName.Length > 50) { errors.Add("guild_curr_error", "Max length 50 chars."); } else { config.CurrencyName = update.CurrencyName; } if (string.IsNullOrWhiteSpace(update.CurrencyNamePlural)) { errors.Add("guild_curr_error", Required); } else if (update.CurrencyNamePlural.Length > 50) { errors.Add("guild_curr_p_error", "Max length 50 chars."); } else { config.CurrencyNamePlural = update.CurrencyNamePlural; } if (string.IsNullOrWhiteSpace(update.CurrencyIcon)) { errors.Add("guild_curr_icon_error", Required); } else { config.CurrencyIcon = update.CurrencyIcon; } if (long.TryParse(update.CurrencyDefault, out long currDefault) && currDefault >= 0) { config.CurrencyDefault = currDefault; } else { errors.Add("guild_curr_default_cash_error", GreaterThanEqualTo0); } if (decimal.TryParse(update.InvestingDefault, out decimal invDefault) && invDefault >= 0) { config.InvestingDefault = invDefault; } else { errors.Add("guild_curr_default_inv_error", GreaterThan0); } if (double.TryParse(update.CurrencyGenerationChance, out double genChance) && genChance is >= 0 or <= 100) { config.CurrencyGenerationChance = genChance / 100; }