Exemplo n.º 1
0
    /// <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;
    }
Exemplo n.º 2
0
 public static UserKink CreateFrom(Kink kink)
 {
     return(new UserKink
     {
         Kink = kink,
         Preference = KinkPreference.NoPreference
     });
 }
Exemplo n.º 3
0
        /// <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());
        }
Exemplo n.º 4
0
 public Embed BuildKinkInfoEmbed(Kink kink)
 {
     return(new Embed
     {
         Colour = _feedback.Theme.Secondary,
         Title = kink.Name.Transform(To.TitleCase),
         Description = kink.Description
     });
 }
Exemplo n.º 5
0
        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);
            }
        }
Exemplo n.º 6
0
        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);
            }
        }
Exemplo n.º 7
0
        /// <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);
        }
Exemplo n.º 8
0
        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));
        }
Exemplo n.º 9
0
        /// <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));
        }
Exemplo n.º 10
0
        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);
            }
        }