private static ListOutput CreateList(ulong userId, CustomList.ListPermission listPermissions, params string[] input)
        {
            if (input.Length == 0 || input.Length > 2)
            {
                throw GetListManagerException(ListErrorMessage.General.WrongFormat);
            }
            var listName = input[0];

            try
            {
                GetList(userId, listName);
            }
            catch (ListManagerException)
            {
                var newList = new CustomList(userId, listPermissions, listName);
                newList.SaveList();

                Lists.Add(newList);

                WriteContents();

                var permissionAsString = CustomList.permissionStrings[(int)listPermissions];
                return(GetListOutput($"Created {permissionAsString} list '{listName}'", listPermissions));
            }
            throw GetListManagerException(ListErrorMessage.General.ListAlreadyExists_list, listName);
        }
 public static ListOutput GetListOutput(Embed e, CustomList.ListPermission p)
 {
     return(new ListOutput {
         outputEmbed = e, permission = p
     });
 }
 public static ListOutput GetListOutput(string s, CustomList.ListPermission p)
 {
     return(new ListOutput {
         outputString = s, permission = p
     });
 }
        private static ListOutput GetAll(ulong userId, CustomList.ListPermission outputPermission, params string[] input)
        {
            if (Lists.Count == 0)
            {
                throw GetListManagerException(ListErrorMessage.General.NoLists);
            }

            Func <int, int, int> GetLonger = (i1, i2) => { return(i1 > i2 ? i1 : i2); };

            var tableValuesList = new Dictionary <String, String>();

            for (int i = 0; i < Lists.Count; i++)
            {
                CustomList l = Lists[i];
                if (l.IsAllowedToList(userId))
                {
                    tableValuesList.Add(l.Name, $"{l.Count()} {GetNounPlural("item", l.Count())}");
                }
            }
            var maxItemLength = 0;
            var tableValues   = new string[tableValuesList.Count, 2];

            for (int i = 0; i < tableValues.GetLength(0); i++)
            {
                var keyPair = tableValuesList.ElementAt(i);
                tableValues[i, 0] = keyPair.Key;
                tableValues[i, 1] = keyPair.Value;
                maxItemLength     = GetLonger(maxItemLength, keyPair.Key.Length);
                maxItemLength     = GetLonger(maxItemLength, keyPair.Value.Length);
            }

            var header = new[] { "List name", "Item count" };

            foreach (string s in header)
            {
                maxItemLength = GetLonger(maxItemLength, s.Length);
            }
            var    tableSettings = new MessageFormater.TableSettings("All lists", header, -(maxItemLength), true);
            string output        = MessageFormater.CreateTable(tableSettings, tableValues);
            var    count         = 0;

            for (int i = 0; i < output.Length; i++)
            {
                if (output[i] == '\n')
                {
                    if (count == 8)
                    {
                        output = output.Insert(i, LineIndicator);
                        break;
                    }
                    else
                    {
                        count++;
                    }
                }
            }

            var returnValue = GetListOutput(output, outputPermission);

            returnValue.listenForReactions = true;
            return(returnValue);
        }