protected string RenderUserDetails(TaglistRegisteredUser Model)
 {
     return(string.Format(
                "Imgur Username — {1}"
                + "\r\nImgur Account ID — {0}"
                + "\r\nRatings interested in — {2}"
                + "\r\nCategory Blacklist — {3}",
                Model.ID,
                Model.Username,
                Model.AcceptedRatings,
                string.Join(", ", Model.CategoryBlacklist)
                ));
 }
Ejemplo n.º 2
0
        private async Task <string> ExecuteRegistration(string TaglistName, TaglistRegisteredUser ToRegister)
        {
            Log.Application_.LogVerbose("Registering user; performing Registration");
            Taglist Model;
            Lock    Lock;

            try{
                Tuple <Taglist, Lock> LoadResult = await Repository.LoadAndLock(TaglistName);

                Model = LoadResult.Item1;
                Lock  = LoadResult.Item2;
            }catch (EntityNotFoundException) {
                return(string.Format("No Taglist with the name '{0}' exists", TaglistName));
            }catch (DataAccessException Error) {
                return("Error retrieving Taglist data: " + Error.Message);
            }
            try{
                bool added;
                try{
                    added = Model.RegisterUser(ToRegister);
                }catch (AlreadyExistsException Error) {
                    return("Username Conflict — " + Error.Message);
                }
                try{
                    await Repository.Save(Model, Lock);
                }catch (DataAccessException Error) {
                    return("Error saving updated Taglist: " + Error.Message);
                }
                string Response;
                if (added)
                {
                    Response = "Imgur user '{1}' (ID {0:D}) has been Registered to Taglist '{2}'; Ratings — {3}; Category Blacklist — {4}";
                }
                else
                {
                    Response = "Imgur user '{1}' (ID {0:D}) has been updated in the Taglist '{2}'; Updated Ratings — {3}; Updated Category Blacklist — {4}";
                }
                return(string.Format(
                           Response,
                           ToRegister.ID,
                           ToRegister.Username,
                           Model.Name,
                           ToRegister.AcceptedRatings,
                           string.Join(", ", ToRegister.CategoryBlacklist)
                           ));
            }finally{
                Lock.Release();
            }
        }
Ejemplo n.º 3
0
        private async Task Execute(
            string Username,
            int?UserID,
            string TaglistName,
            string RatingsInterestedInSpecifier,
            params string[] CategoryBlacklist
            )
        {
            if (UserID is null)
            {
                if (string.IsNullOrWhiteSpace(Username))
                {
                    await base.ReplyAsync("Specify a non-empty username");

                    return;
                }
            }
            TaglistRegisteredUser.RatingFlags?ToRegisterRatings = ParseRatings(RatingsInterestedInSpecifier, out string RatingsParseError);
            if (ToRegisterRatings is null)
            {
                await base.ReplyAsync(RatingsParseError);

                return;
            }
            Log.Application_.LogVerbose("Registering user; parsed Ratings - {0}", ToRegisterRatings);
            Tuple <int, string> ToRegisterUserDetails = await RetrieveUserIdentity(UserID, Username);

            if (ToRegisterUserDetails is null)
            {
                return;
            }
            Log.Application_.LogVerbose("Registering user; username '{1}', ID {0:D}", ToRegisterUserDetails.Item1, ToRegisterUserDetails.Item2);
            TaglistRegisteredUser ToRegister = new TaglistRegisteredUser(
                ToRegisterUserDetails.Item2,
                ToRegisterUserDetails.Item1,
                ToRegisterRatings.Value,
                CategoryBlacklist
                );
            string Response = await ExecuteRegistration(TaglistName, ToRegister);

            await base.ReplyAsync(Response);
        }