public override string ToString()
        {
            sb = new StringBuilder();
            serviceTypeColWidth = 15;

            sb.AppendLF("Branch \"{0}\": {1}", office.BranchId, office.IsOpen ? "Open" : "Closed");

            WriteIdleUsers(sb);

            stl = office.ServiceTypes.ToList();
            queueColStops = GetColumnIndents(stl.Select(st => string.Format("S-TYPE: #{0}   ", st.Number)), RowWidth).ToList();
            if (queueColStops.Count < stl.Count)
            {
                int fixedWidth = (RowWidth + 10) / stl.Count;
                int cc = 0;
                queueColStops = new List<int>();
                foreach (var st in stl)
                {
                    queueColStops.Add(cc);
                    cc += fixedWidth;
                }
            }

            sb.AppendLF();
            WriteQueueHeaders(sb);
            WriteActiveUsers(sb);
            WriteOpenCashiers(sb);
            WriteDesk(sb);
            WriteTickets();
            NewQueueRow(sb);

            return sb.ToString();
        }
        private void WriteIdleUsers(StringBuilder sb)
        {
            sb.AppendLF("USERS (IDLE):");

            // Idle users first
            var idleUsers = office.Users.Where(u => u.IsIdle).ToList();
            if (idleUsers.Count > 0)
            {
                foreach (var usrRow in Columnize(idleUsers.Select(u => u.ToString())))
                    sb.AppendLF(usrRow);
            }
            else sb.AppendLF("");
        }
 private void NewQueueRow(StringBuilder dest)
 {
     while (rowBuilders.Count > 0)
     {
         dest.AppendLF(rowBuilders[0].ToString());
         rowBuilders.RemoveAt(0);
     }
 }