public IActionResult GroupList(int folderId)
        {
            try
            {
                var currentUser = userManager.GetUserAsync(User).Result;

                var depList = db.UserDepartments.Where(m => m.UserId == currentUser.Id).Select(m => m.DepartmentId);

                IQueryable <DocGroupFolder> list = null;

                DocCardFolder folder = (DocCardFolder)folderId;

                switch (folder)
                {
                case DocCardFolder.In:
                    var allDocs = db.DocCards
                                  .Where(d => depList.Contains(d.DepartmentToId))
                                  .Select(m => new { docGroup = m.DocumentType.DocumentGroup, isNew = (m.DocumentStatus.Value == "1" ? 1 : 0) });


                    list = allDocs.GroupBy(m => m.docGroup)
                           .Select(g => new DocGroupFolder {
                        id = g.Key.Id, name = g.Key.DisplayName, badge = g.Sum(s => s.isNew)
                    })
                           .OrderBy(d => d.name);

                    break;

                case DocCardFolder.Out:
                    list = db.DocCards
                           .Where(d => depList.Contains(d.DepartmentFromId))
                           .Select(d => d.DocumentType.DocumentGroup)
                           .Distinct()
                           .Select(d => new DocGroupFolder {
                        id = d.Id, name = d.DisplayName, badge = 0
                    })
                           .OrderBy(d => d.name);
                    break;

                default:
                    break;
                }

                return(Json(list));
            }
            catch (Exception ex)
            {
                return(BadRequest(ExceptionTools.GetExceptionMessage(ex)));
            }
        }
        public IActionResult DocList(int folderId, int?groupId)
        {
            try
            {
                var currentUser = userManager.GetUserAsync(User).Result;
                var depList     = db.UserDepartments.Where(m => m.UserId == currentUser.Id).Select(m => m.DepartmentId);

                IQueryable <DocCard> list = null;

                DocCardFolder folder = (DocCardFolder)folderId;

                switch (folder)
                {
                case DocCardFolder.In:
                    list = db.DocCards.Where(d => depList.Contains(d.DepartmentToId)).OrderByDescending(d => d.DisplayName);
                    break;

                case DocCardFolder.Out:
                    list = db.DocCards.Where(d => depList.Contains(d.DepartmentFromId)).OrderByDescending(d => d.DisplayName);
                    break;

                default:
                    break;
                }

                if (list == null)
                {
                    return(BadRequest("Ошибка определения списка документов"));
                }

                if (groupId.HasValue)
                {
                    list = list.Where(m => m.DocumentType.DocumentGroupId == groupId.Value);
                }

                var ret = list.Select(d => new DocCardViewModel
                {
                    Id                 = d.Id,
                    AuthorId           = d.AuthorId,
                    AuthorName         = d.Author.DisplayName,
                    Barcode            = d.Barcode,
                    Content1           = d.Content1,
                    Content2           = d.Content2,
                    Content3           = d.Content3,
                    Content4           = d.Content4,
                    Content5           = d.Content5,
                    ContractorFromId   = d.ContractorFromId,
                    ContractorFromName = d.ContractorFrom.DisplayName,
                    ContractorToId     = d.ContractorToId,
                    ContractorToName   = d.ContractorTo.DisplayName,
                    CreatedBy          = d.CreatedBy,
                    CreatedDate        = d.CreatedDate,
                    DisplayName        = d.DisplayName,
                    DocDate            = d.DocDate,
                    DocNumber          = d.DocNumber,
                    DocumentStatusId   = d.DocumentStatusId,
                    DocumentStatusName = d.DocumentStatus.DisplayName,
                    DocumentTypeId     = d.DocumentTypeId,
                    DocumentTypeName   = d.DocumentType.DisplayName,
                    LastUpdatedBy      = d.LastUpdatedBy,
                    LastUpdatedDate    = d.LastUpdatedDate,
                    DepartmentFromId   = d.DepartmentFromId,
                    DepartmentFromName = d.DepartmentFrom.DisplayName,
                    DepartmentToId     = d.DepartmentToId,
                    DepartmentToName   = d.DepartmentTo.DisplayName
                }).ToList();

                return(Json(ret));
            }
            catch (Exception ex)
            {
                return(BadRequest(ExceptionTools.GetExceptionMessage(ex)));
            }
        }