Пример #1
0
 /// <summary>
 /// Получить список внутренних документов
 /// </summary>
 /// <param name="options">параметры поиска/фильтрации внутренних документов</param>
 /// <returns>Cписок внутренних документов</returns>
 public DocumentEntryList GetInternalDocuments(InternalListOptions options)
 {
     return CheckAutorizedInvoke(() => client.GetInternalDocuments(Token, options));
 }
Пример #2
0
        /// <summary>
        /// Обработка консольной команды:
        /// получение и отображение списка внутренних документов
        /// </summary>
        private void GetInternalDocuments()
        {
            var internalListOptions = new InternalListOptions
                {
                    BoxId = _context.CurrentBox,
                    First = 0,
                    Max = 10
                };

            if (UserInput.ChooseYesNo("Указать параметры фильтрации", false))
            {
                var excludeUnavailable =
                    UserInput.ChooseYesNo("Исключить из списка документы, подписание/отказ по которым недоступны", false);
                internalListOptions.ExcludeUnavailable = excludeUnavailable;

                var currentOrganizationId = _context.CurrentOrganizationId.ToString(CultureInfo.InvariantCulture);
                if (UserInput.ChooseYesNo("Указать подразделение отправителя"))
                {
                    var senderDepartment = ChooseOrganizationStructureElement(currentOrganizationId);
                    if (senderDepartment != null)
                        internalListOptions.SenderDepartmentIds = new[] { senderDepartment.Id };
                }

                if (UserInput.ChooseYesNo("Указать подразделение получателя"))
                {
                    var recipientDepartment = ChooseOrganizationStructureElement(currentOrganizationId);
                    if (recipientDepartment != null)
                    {
                        internalListOptions.RecipientDepartmentIds = new[] { recipientDepartment.Id };
                        if (UserInput.ChooseYesNo("Указать пользователя получателя"))
                        {
                            var recipientUser = ChooseUser(recipientDepartment.Id);
                            if (recipientUser != null)
                                internalListOptions.RecipientUserLogins = new[] { recipientUser.Login };
                        }
                    }
                }

                if (UserInput.ChooseYesNo("Указать статусы подписания"))
                {
                    var signStatuses = new List<DocumentSignStatus>();
                    if (UserInput.ChooseYesNo("Подпись не требуется"))
                        signStatuses.Add(DocumentSignStatus.NoSignNeeded);
                    if (UserInput.ChooseYesNo("Подписан"))
                        signStatuses.Add(DocumentSignStatus.Signed);
                    if (UserInput.ChooseYesNo("Отказано"))
                        signStatuses.Add(DocumentSignStatus.SignRejected);
                    if (UserInput.ChooseYesNo("Требуется подпись"))
                        signStatuses.Add(DocumentSignStatus.WaitingForSign);
                    internalListOptions.DocumentSignStatuses = signStatuses.ToArray();
                }

                if (UserInput.ChooseYesNo("Указать период отправки"))
                {
                    internalListOptions.From = ChooseDate(true);
                    internalListOptions.To = ChooseDate(false);
                }
            }

            var internalDocuments = _context.ServiceClient.GetInternalDocuments(internalListOptions);
            Console.Out.WriteLine("Всего внутренних документов {0}", internalDocuments.Total);

            while (true)
            {
                Console.Out.WriteLine("Внутренние документов с "
                    + (internalListOptions.First + 1) + " по "
                                      +
                                      Math.Min(internalListOptions.First + internalListOptions.Max,
                                          internalDocuments.Total));

                foreach (var documentEntryItem in internalDocuments.Items)
                {
                    var flow = documentEntryItem.Flows.First();
                    Console.Out.WriteLine("{0, -60} {1, -20} {2, -20} {3, -20} {4} {5}",
                        documentEntryItem.Name,
                        flow.SenderDepartment.Name,
                        flow.RecipientDepartment.Name,
                        flow.RecipientStatus,
                        documentEntryItem.DocumentId,
                        documentEntryItem.SentDate);
                }

                if (internalListOptions.First + internalListOptions.Max > internalDocuments.Total)
                    break;
                if (!UserInput.ChooseYesNo("Далее"))
                    break;

                internalListOptions.First += internalListOptions.Max;
                internalDocuments = _context.ServiceClient.GetInternalDocuments(internalListOptions);
            }
        }