public async Task RegisterAsync(string triggerName, string triggerValue) { IUser user = Context.User; int chatId = Context.Guild.Get_ID(); int userId = user.Get_DiscriminatorInt(); ChatTriggerRequest request = new ChatTriggerRequest(chatId, userId, triggerName, triggerValue); bool success = ChatDataAccess.Instance.CreateChatTrigger(request); if (success) { ReplyAsyncCodeBlock($"Successfully created trigger for [{triggerName}]"); } else { ReplyAsyncCodeBlock($"Failed to create trigger for [{triggerName}]"); } }
public bool CreateChatTrigger(ChatTriggerRequest request) { return(PerformSqlInsertOrUpdate( (SqlConnection connection) => { string query = "MERGE " + "[ReputationBot].[dbo].[Chat_Triggers] AS T " + "USING (SELECT @chatID AS chatID, @userID as userID, @triggerName as tName, @triggerType as tType, @triggerValue as tValue) AS S " + " ON (T.ChatID = S.chatID AND T.TriggerName = S.tName) "+ "WHEN NOT MATCHED BY TARGET " + " THEN INSERT (ChatID, UserID, TriggerName, TriggerType, TriggerValue) VALUES (S.chatID, S.userID, S.tName, S.tType, s.tValue) "+ "WHEN MATCHED " + " THEN UPDATE SET T.UserID = S.userID, T.TriggerValue = s.tValue;"; SqlCommand command = new SqlCommand(query, connection); command.Parameters.AddWithValue("@chatID", request.ChatID); command.Parameters.AddWithValue("@userID", request.UserID); command.Parameters.AddWithValue("@triggerName", request.TriggerName); command.Parameters.AddWithValue("@triggerType", request.TriggerType); command.Parameters.AddWithValue("@triggerValue", request.TriggerValue); return command; })); }