/// <summary> /// Initializes a new instance of the <see cref="UserKink"/> class. /// </summary> /// <param name="user">The user.</param> /// <param name="kink">The user's kink.</param> public UserKink(User user, Kink kink) { this.User = user; this.Kink = kink; this.Preference = KinkPreference.NoPreference; }
public static UserKink CreateFrom(Kink kink) { return(new UserKink { Kink = kink, Preference = KinkPreference.NoPreference }); }
/// <summary> /// Builds an informational embed for the given kink. /// </summary> /// <param name="kink">The kink.</param> /// <returns>An embed.</returns> public Embed BuildKinkInfoEmbed([NotNull] Kink kink) { var eb = this.Feedback.CreateEmbedBase(); eb.WithTitle(kink.Name.Transform(To.TitleCase)); eb.WithDescription(kink.Description); return(eb.Build()); }
public Embed BuildKinkInfoEmbed(Kink kink) { return(new Embed { Colour = _feedback.Theme.Secondary, Title = kink.Name.Transform(To.TitleCase), Description = kink.Description }); }
public static async Task <bool> EditKink(ulong kinkID, string kinkName, string kinkDesc) { using (var DbContext = new SqliteDbContext()) { if (!DbContext.Kinks.Any(x => x.KinkID == kinkID)) { return(false); } Kink kinkToEdit = DbContext.Kinks.Where(x => x.KinkID == kinkID).FirstOrDefault(); kinkToEdit.KinkName = kinkName; kinkToEdit.KinkDesc = kinkDesc; await DbContext.SaveChangesAsync(); return(true); } }
public static async Task <bool> AddKinkToGroup(ulong groupID, string kinkName, ulong serverID) { using (var DbContext = new SqliteDbContext()) { Kink kinkToGroup = DbContext.Kinks.Where(x => x.KinkName == kinkName).FirstOrDefault(); if (kinkToGroup == null) { return(false); } kinkToGroup.KinkGroupID = groupID; DbContext.KinkEmojis.RemoveRange(DbContext.KinkEmojis.Where(x => x.ServerID == serverID && x.KinkID == kinkToGroup.KinkID)); await DbContext.SaveChangesAsync(); return(true); } }
/// <summary> /// Adds a kink to a user's preference list. /// </summary> /// <param name="discordUser">The user.</param> /// <param name="kink">The kink.</param> /// <param name="ct">The cancellation token in use.</param> /// <returns>A creation result which may or may not have succeeded.</returns> public async Task <CreateEntityResult <UserKink> > AddUserKinkAsync ( IUser discordUser, Kink kink, CancellationToken ct = default ) { var getUserKinksResult = await GetUserKinksAsync(discordUser, ct : ct); if (!getUserKinksResult.IsSuccess) { return(CreateEntityResult <UserKink> .FromError(getUserKinksResult)); } var userKinks = getUserKinksResult.Entity; if (userKinks.Any(k => k.Kink.FListID == kink.FListID)) { return(CreateEntityResult <UserKink> .FromError("The user already has a preference for that kink.")); } var getUserResult = await _users.GetOrRegisterUserAsync(discordUser, ct); if (!getUserResult.IsSuccess) { return(CreateEntityResult <UserKink> .FromError(getUserResult)); } var user = getUserResult.Entity; var userKink = _database.CreateProxy <UserKink>(user, kink); _database.UserKinks.Update(userKink); await _database.SaveChangesAsync(ct); return(userKink); }
public async Task <CreateEntityResult <UserKink> > AddUserKinkAsync ( [NotNull] IUser discordUser, [NotNull] Kink kink ) { var getUserKinksResult = await GetUserKinksAsync(discordUser); if (!getUserKinksResult.IsSuccess) { return(CreateEntityResult <UserKink> .FromError(getUserKinksResult)); } var userKinks = getUserKinksResult.Entity; if (userKinks.Any(k => k.Kink.FListID == kink.FListID)) { return(CreateEntityResult <UserKink> .FromError("The user already has a preference for that kink.")); } var getUserResult = await _users.GetOrRegisterUserAsync(discordUser); if (!getUserResult.IsSuccess) { return(CreateEntityResult <UserKink> .FromError(getUserResult)); } var user = getUserResult.Entity; var userKink = new UserKink(user, kink); _database.UserKinks.Update(userKink); await _database.SaveChangesAsync(); return(CreateEntityResult <UserKink> .FromSuccess(userKink)); }
/// <summary> /// Adds a kink to a user's preference list. /// </summary> /// <param name="db">The database.</param> /// <param name="discordUser">The user.</param> /// <param name="kink">The kink.</param> /// <returns>A creation result which may or may not have succeeded.</returns> public async Task <CreateEntityResult <UserKink> > AddUserKinkAsync([NotNull] GlobalInfoContext db, [NotNull] IUser discordUser, Kink kink) { var user = await db.GetOrRegisterUserAsync(discordUser); if (user.Kinks.Any(k => k.Kink.FListID == kink.FListID)) { return(CreateEntityResult <UserKink> .FromError(CommandError.MultipleMatches, "The user already has a preference for that kink.")); } var userKink = UserKink.CreateFrom(kink); user.Kinks.Add(userKink); await db.SaveChangesAsync(); return(CreateEntityResult <UserKink> .FromSuccess(userKink)); }
public async Task EditKinkData(SocketCommandContext Context) { ulong userID = Context.User.Id; Command kinkCommand = Vars.activeCommands.Where(x => x.ActorID == userID).FirstOrDefault(); Console.WriteLine(" we've got our kink command "); Kink kinkToEdit = Vars.tableEntries.Where(x => x.GetType().Name == "Kink").ToList().Cast <Kink>().ToList().Where(x => x.KinkID.ToString() == kinkCommand.CommandData).FirstOrDefault(); Console.WriteLine(" we've got our kink to edit "); if (kinkCommand.CommandData == "start") { string kinkName = Context.Message.Content; Kink kinkFromDB = DataMethods.GetKink(kinkName); if (kinkFromDB == null) { ulong msgEndID = kinkCommand.MessageID; var msgEnd = (RestUserMessage)await Context.Channel.GetMessageAsync(msgEndID); string endMessage = "Welcome " + Context.User.Mention + "\n" + "Kink not found, quitting!"; await msgEnd.ModifyAsync(x => x.Content = endMessage); Vars.activeCommands.RemoveAll(x => x.ActorID == Context.User.Id); await Context.Message.DeleteAsync(); return; } Vars.tableEntries.Add(kinkFromDB); kinkCommand.CommandData = kinkFromDB.KinkID.ToString(); kinkCommand.CommandStep = 1; string newMessage = "Welcome " + Context.User.Mention + "\n" + "Edit Kink Step 1: Enter New Name, or Fartz to skip"; ulong msgToEditID = kinkCommand.MessageID; var msgToEdit = (RestUserMessage)await Context.Channel.GetMessageAsync(msgToEditID, CacheMode.AllowDownload); await msgToEdit.ModifyAsync(x => x.Content = newMessage); await Context.Message.DeleteAsync(); } else if (kinkToEdit != null && kinkCommand.CommandStep == 1) { string newKinkName = Context.Message.Content; if (!newKinkName.Equals("fartz", StringComparison.OrdinalIgnoreCase)) { kinkToEdit.KinkName = newKinkName; Kink kinkToCheck = Vars.tableEntries.Where(x => x.GetType().Name == "Kink").ToList().Cast <Kink>().ToList().Where(x => x.KinkID.ToString() == kinkCommand.CommandData).FirstOrDefault(); if (kinkToEdit.KinkName != kinkToCheck.KinkName) { Console.WriteLine("Kink in edit list not updating"); } } kinkCommand.CommandStep = 2; string newMessage = "Welcome " + Context.User.Mention + "\n" + "Edit Kink Step 2: Enter New Description, or Fartz to skip"; ulong msgToEditID = kinkCommand.MessageID; var msgToEdit = (RestUserMessage)await Context.Channel.GetMessageAsync(msgToEditID, CacheMode.AllowDownload); await msgToEdit.ModifyAsync(x => x.Content = newMessage); await Context.Message.DeleteAsync(); } else if (kinkToEdit != null && kinkCommand.CommandStep == 2) { string newKinkDescrip = Context.Message.Content; if (!newKinkDescrip.Equals("fartz", StringComparison.OrdinalIgnoreCase)) { kinkToEdit.KinkDesc = newKinkDescrip; Kink kinkToCheck = Vars.tableEntries.Where(x => x.GetType().Name == "Kink").ToList().Cast <Kink>().ToList().Where(x => x.KinkID.ToString() == kinkCommand.CommandData).FirstOrDefault(); if (kinkToEdit.KinkDesc != kinkToCheck.KinkDesc) { Console.WriteLine("Kink in edit list not updating"); } } await Context.Message.DeleteAsync(); string newMessage = "Welcome " + Context.User.Mention + "\n" + "Now updating entry with new Name and Description: \n" + "Name: " + kinkToEdit.KinkName + "\n" + "Desc: " + kinkToEdit.KinkDesc + "\n"; ulong msgToEditID = kinkCommand.MessageID; var msgToEdit = (RestUserMessage)await Context.Channel.GetMessageAsync(msgToEditID, CacheMode.AllowDownload); await msgToEdit.ModifyAsync(x => x.Content = newMessage); await DataMethods.EditKink(kinkToEdit.KinkID, kinkToEdit.KinkName, kinkToEdit.KinkDesc); await Task.Delay(1000); newMessage += "\n."; await msgToEdit.ModifyAsync(x => x.Content = newMessage); await Task.Delay(1000); newMessage += "."; await msgToEdit.ModifyAsync(x => x.Content = newMessage); await Task.Delay(1000); newMessage += "."; await msgToEdit.ModifyAsync(x => x.Content = newMessage); await Task.Delay(1000); newMessage += " Done."; await msgToEdit.ModifyAsync(x => x.Content = newMessage); Vars.activeCommands.RemoveAll(x => x.ActorID == Context.User.Id); Vars.tableEntries.RemoveAll(x => x.GetType().Name == "Kink" && (x as Kink).KinkID == kinkToEdit.KinkID); } }