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); }
/// <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)); }
/// <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)); }