diff --git a/JetKarmaBot/Commands/AwardCommand.cs b/JetKarmaBot/Commands/AwardCommand.cs index 2e83736..23072c6 100644 --- a/JetKarmaBot/Commands/AwardCommand.cs +++ b/JetKarmaBot/Commands/AwardCommand.cs @@ -154,7 +154,7 @@ namespace JetKarmaBot.Commands } else { - return awardType.Name; + return awardType.NominativeName; } } diff --git a/JetKarmaBot/Commands/AwardTypeCommand.cs b/JetKarmaBot/Commands/AwardTypeCommand.cs index 63b9522..2022cd5 100644 --- a/JetKarmaBot/Commands/AwardTypeCommand.cs +++ b/JetKarmaBot/Commands/AwardTypeCommand.cs @@ -24,7 +24,7 @@ namespace JetKarmaBot.Commands { Router = r; Router.SuperCommand = "at"; - r.Add(c.GetInstance()); + r.Add(c.GetInstance()); r.Add(c.GetInstance()); } diff --git a/JetKarmaBot/Commands/AwardTypeManage/CreateCommand.cs b/JetKarmaBot/Commands/AwardTypeManage/CreateCommand.cs new file mode 100644 index 0000000..cc0b616 --- /dev/null +++ b/JetKarmaBot/Commands/AwardTypeManage/CreateCommand.cs @@ -0,0 +1,101 @@ +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using JetKarmaBot.Models; +using JetKarmaBot.Services; +using Perfusion; +using Telegram.Bot; +using Telegram.Bot.Args; + +namespace JetKarmaBot.Commands.AwardTypeManage +{ + public class CreateCommand : IChatCommand + { + public IReadOnlyCollection Names => new[] { "create" }; + + public string Description => "Create an award type."; + + public string DescriptionID => "jetkarmabot.at.create.help"; + [Inject] TelegramBotClient Client { get; set; } + [Inject] public KarmaContextFactory Db { get; set; } + [Inject] public Localization Locale { get; set; } + + public IReadOnlyCollection Arguments => new[] { + new ChatCommandArgument() { + Name="cmdname", + Required=true, + Type=ChatCommandArgumentType.String, + Description="Name used when awarding to user.", + DescriptionID="jetkarmabot.at.create.cmdnamehelp" + }, + new ChatCommandArgument() { + Name="nomname", + Required=true, + Type=ChatCommandArgumentType.String, + Description="Name used when in currencies list.", + DescriptionID="jetkarmabot.at.create.nomnamehelp" + }, + new ChatCommandArgument() { + Name="accname", + Required=true, + Type=ChatCommandArgumentType.String, + Description="Name used in award message", + DescriptionID="jetkarmabot.at.create.accnamehelp" + }, + new ChatCommandArgument() { + Name="symbol", + Required=true, + Type=ChatCommandArgumentType.String, + Description="Symbol of the award type.", + DescriptionID="jetkarmabot.at.create.symbolhelp" + }, + new ChatCommandArgument() { + Name="desc", + Required=false, + Type=ChatCommandArgumentType.String, + Description="Description of the award type.", + DescriptionID="jetkarmabot.at.create.symbolhelp" + } + }; + + public async Task Execute(ICommandRouter route, CommandString cmd, MessageEventArgs args) + { + using (var db = Db.GetContext()) + { + var currentLocale = Locale[(await db.Chats.FindAsync(args.Message.Chat.Id)).Locale]; + if (cmd.Parameters.Length < 4 || cmd.Parameters.Length > 5) + { + await Client.SendTextMessageAsync( + args.Message.Chat.Id, + currentLocale["jetkarmabot.at.create.errarg"], + replyToMessageId: args.Message.MessageId); + } + + string cmdname = cmd.Parameters[0]; + string nomname = cmd.Parameters[1]; + string accname = cmd.Parameters[2]; + string symbol = cmd.Parameters[3]; + string desc = cmd.Parameters.Length == 4 ? "" : cmd.Parameters[4]; + + + await db.AwardTypes.AddAsync(new AwardType() + { + CommandName = cmdname, + NominativeName = nomname, + AccusativeName = accname, + Symbol = symbol, + Description = desc, + ChatId = args.Message.Chat.Id + }); + await db.SaveChangesAsync(); + + await Client.SendTextMessageAsync( + args.Message.Chat.Id, + currentLocale["jetkarmabot.at.create.success"], + replyToMessageId: args.Message.MessageId); + + return true; + } + } + } +} \ No newline at end of file diff --git a/JetKarmaBot/Commands/AwardTypeManage/TestCommand.cs b/JetKarmaBot/Commands/AwardTypeManage/TestCommand.cs deleted file mode 100644 index 48c14ba..0000000 --- a/JetKarmaBot/Commands/AwardTypeManage/TestCommand.cs +++ /dev/null @@ -1,23 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Threading.Tasks; -using Telegram.Bot.Args; - -namespace JetKarmaBot.Commands.AwardTypeManage -{ - public class TestCommand : IChatCommand - { - public IReadOnlyCollection Names => new[] { "test" }; - - public string Description => "test"; - - public string DescriptionID => "test"; - - public IReadOnlyCollection Arguments => Array.Empty(); - - public Task Execute(ICommandRouter route, CommandString cmd, MessageEventArgs messageEventArgs) - { - throw new NotImplementedException(); - } - } -} \ No newline at end of file diff --git a/JetKarmaBot/Commands/CurrenciesCommand.cs b/JetKarmaBot/Commands/CurrenciesCommand.cs index d3a1228..21d5073 100644 --- a/JetKarmaBot/Commands/CurrenciesCommand.cs +++ b/JetKarmaBot/Commands/CurrenciesCommand.cs @@ -31,7 +31,7 @@ namespace JetKarmaBot.Commands string resp = currentLocale["jetkarmabot.currencies.listtext"] + "\n" + $"★ (star) {currentLocale["jetkarmabot.star.nominative"]}\n" + string.Join("\n", - (await db.AwardTypes.ToListAsync()).Select(x => $"{x.Symbol} ({x.CommandName}) {x.Name}")); + (await db.AwardTypes.ToListAsync()).Select(x => $"{x.Symbol} ({x.CommandName}) {x.NominativeName}")); await Client.SendTextMessageAsync( args.Message.Chat.Id, resp, diff --git a/JetKarmaBot/Models/AwardType.cs b/JetKarmaBot/Models/AwardType.cs index 1a49aa4..255f7e6 100644 --- a/JetKarmaBot/Models/AwardType.cs +++ b/JetKarmaBot/Models/AwardType.cs @@ -14,7 +14,8 @@ namespace JetKarmaBot.Models public sbyte AwardTypeId { get; set; } public string CommandName { get; set; } public long ChatId { get; set; } - public string Name { get; set; } + [Column("name")] + public string NominativeName { get; set; } [Column("accname")] public string AccusativeName { get; set; } public string Symbol { get; set; } diff --git a/JetKarmaBot/Models/KarmaContext.cs b/JetKarmaBot/Models/KarmaContext.cs index 4307dd5..90ee54c 100644 --- a/JetKarmaBot/Models/KarmaContext.cs +++ b/JetKarmaBot/Models/KarmaContext.cs @@ -130,7 +130,7 @@ namespace JetKarmaBot.Models .HasColumnName("description") .HasColumnType("text"); - entity.Property(e => e.Name) + entity.Property(e => e.NominativeName) .IsRequired() .HasColumnName("name") .HasColumnType("varchar(32)");