public EmbedBuilder BuildUserKinkInfoEmbedBase([NotNull] UserKink userKink)
        {
            var eb = this.Feedback.CreateEmbedBase();

            eb.AddField(userKink.Kink.Name.Transform(To.TitleCase), userKink.Kink.Description);
            eb.AddField("Current preference", userKink.Preference.Humanize());

            return(eb);
        }
Beispiel #2
0
        /// <summary>
        /// Sets the user's preference for the given kink.
        /// </summary>
        /// <param name="userKink">The user's kink.</param>
        /// <param name="preference">The new preference.</param>
        /// <returns>A modification result which may or may not have succeeded.</returns>
        public async Task <ModifyEntityResult> SetKinkPreferenceAsync
        (
            UserKink userKink,
            KinkPreference preference
        )
        {
            userKink.Preference = preference;
            await _database.SaveChangesAsync();

            return(ModifyEntityResult.FromSuccess());
        }
        /// <summary>
        /// Sets the user's preference for the given kink.
        /// </summary>
        /// <param name="userKink">The user's kink.</param>
        /// <param name="preference">The new preference.</param>
        /// <param name="ct">The cancellation token in use.</param>
        /// <returns>A modification result which may or may not have succeeded.</returns>
        public async Task <ModifyEntityResult> SetKinkPreferenceAsync
        (
            UserKink userKink,
            KinkPreference preference,
            CancellationToken ct = default
        )
        {
            userKink.Preference = preference;
            await _database.SaveChangesAsync(ct);

            return(ModifyEntityResult.FromSuccess());
        }
        /// <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));
        }
Beispiel #5
0
        /// <summary>
        /// Adds a kink to a user's preference list.
        /// </summary>
        /// <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
        (
            IUser discordUser,
            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>
        /// Sets the user's preference for the given kink.
        /// </summary>
        /// <param name="db">The database.</param>
        /// <param name="userKink">The user's kink.</param>
        /// <param name="preference">The new preference.</param>
        /// <returns>A modification result which may or may not have succeeded.</returns>
        public async Task <ModifyEntityResult> SetKinkPreferenceAsync([NotNull] GlobalInfoContext db, [NotNull] UserKink userKink, KinkPreference preference)
        {
            userKink.Preference = preference;
            await db.SaveChangesAsync();

            return(ModifyEntityResult.FromSuccess(ModifyEntityAction.Edited));
        }