コード例 #1
0
        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());
        }
コード例 #2
0
        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;
            }