public static ListOutput OutputList(ulong userId, params string[] input)
        {
            if (input.Length != 1)
            {
                throw GetListManagerException(ListErrorMessage.General.WrongFormat);
            }

            CustomList list = GetList(userId, input[0]);

            CheckPermissionWrite(userId, list);

            if (list.Count() == 0)
            {
                throw GetListManagerException(ListErrorMessage.General.ListIsEmpty_list, input[0]);
            }

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

            var maxItemLength = 0;
            var values        = new string[list.Count(), 1];

            for (int i = 0; i < list.Count(); i++)
            {
                var row = $"{(i+1).ToString()}: {list.Contents[i]}";
                values[i, 0]  = row;
                maxItemLength = GetLonger(maxItemLength, row.Length);
            }
            maxItemLength = GetLonger(maxItemLength, list.Name.Length);

            var    tableSettings = new MessageFormater.TableSettings(list.Name, -(maxItemLength), false);
            string output        = MessageFormater.CreateTable(tableSettings, values);

            return(GetListOutput(output, list.Permission));
        }
Exemple #2
0
        private ListOutput OutputList(UserInfo userInfo, ListPermission permission, params string[] input)
        {
            if (input.Length != 1)
            {
                throw GetListManagerException(ListErrorMessage.General.WrongFormat);
            }

            CustomList list = GetList(input[0]);

            ThrowIfMissingReadPermission(userInfo, list);

            if (list.Count() == 0)
            {
                throw GetListManagerException(ListErrorMessage.General.ListIsEmpty_list, input[0]);
            }

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

            var maxItemLength = 0;
            var values        = new string[list.Count(), 1];

            for (int i = 0; i < list.Count(); i++)
            {
                var row = $"{(i + 1).ToString()}: {list.Contents[i]}";
                values[i, 0]  = row;
                maxItemLength = GetLonger(maxItemLength, row.Length);
            }
            maxItemLength = GetLonger(maxItemLength, list.Name.Length);

            var    tableSettings = new MessageFormater.TableSettings(list.Name, -(maxItemLength), false);
            string output        = MessageFormater.CreateTable(tableSettings, values);

            var outputPermission = permission == ListPermission.PRIVATE ? list.PermissionByRole.First().Value : permission;

            return(GetListOutput(output, outputPermission));
        }
Exemple #3
0
        private ListOutput GetAll(UserInfo userInfo, ListPermission outputPermission)
        {
            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(userInfo))
                {
                    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);
        }