コード例 #1
0
        /// <summary>
        /// Подобрать для документа подходящее хранилище.
        /// </summary>
        /// <param name="document">Документ.</param>
        /// <returns>Наиболее подходящее хранилище для документа.</returns>
        public virtual IStorage GetStorageByPolicies(IOfficialDocument document)
        {
            var policies = StoragePolicies.GetAllCached().Where(r => r.Status == Docflow.StoragePolicyBase.Status.Active &&
                                                                (document.DocumentKind == null ||
                                                                 !r.DocumentKinds.Any() ||
                                                                 r.DocumentKinds.Any(k => Equals(k.DocumentKind, document.DocumentKind))));

            var policy = policies.OrderByDescending(p => p.Priority).FirstOrDefault();

            if (policy != null)
            {
                return(policy.Storage);
            }

            return(null);
        }