コード例 #1
0
        public override ServiceResult <T> UpdateRange(params T[] items)
        {
            var ids       = items.Select(m => m.ID).ToArray();
            var baseParts = WidgetBasePartService.Get(m => ids.Contains(m.ID));

            foreach (var item in items)
            {
                item.CopyTo(baseParts.FirstOrDefault(m => m.ID == item.ID));
            }

            return(BeginTransaction(() =>
            {
                var baseResult = WidgetBasePartService.UpdateRange(baseParts.ToArray());
                if (baseResult.HasViolation)
                {
                    ServiceResult <T> result = new ServiceResult <T>();
                    foreach (var item in baseResult.RuleViolations)
                    {
                        result.AddRuleViolation(item.ParameterName, item.ErrorMessage);
                    }
                    return result;
                }
                return base.UpdateRange(items);
            }));
        }
コード例 #2
0
        private ServiceResult <UrlRedirect> LoopTest(UrlRedirect item)
        {
            ServiceResult <UrlRedirect> result = new ServiceResult <UrlRedirect>();
            List <string> direction            = new List <string>();

            direction.Add(item.DestinationURL.ToLowerInvariant());
            UrlRedirect        destiantion  = item;
            List <UrlRedirect> allRedirects = GetAll().Where(m => m.ID != item.ID).ToList();

            allRedirects.Add(item);
            while (true)
            {
                destiantion = allRedirects.FirstOrDefault(m => m.IsMatch(destiantion.DestinationURL));
                if (destiantion == null)
                {
                    break;
                }
                else
                {
                    string url = destiantion.DestinationURL.ToLowerInvariant();
                    if (direction.Contains(url))
                    {
                        direction.Add(url);
                        result.AddRuleViolation("DestinationURL", string.Join(" > ", direction));
                        break;
                    }
                    else
                    {
                        direction.Add(url);
                    }
                }
            }
            return(result);
        }
コード例 #3
0
        public ServiceResult <PageEntity> Publish(PageEntity item)
        {
            var result = new ServiceResult <PageEntity>();

            result.Result = item;
            try
            {
                _eventManager.Trigger(Events.OnPagePublishing, item);
                string pageId = item.ID;
                BeginTransaction(() =>
                {
                    item.IsPublish   = true;
                    item.PublishDate = DateTime.Now;
                    base.Update(item);
                    item.ReferencePageID = item.ID;
                    PublishAsNew(item);
                });
                _eventManager.Trigger(Events.OnPagePublished, item);

                PageEntity publishedPage = Get(m => m.ReferencePageID == pageId && m.IsPublishedPage == true && m.Url != item.Url).FirstOrDefault();
                if (publishedPage != null)
                {
                    _eventManager.Trigger(new EventArg
                    {
                        Name = Events.OnPageUrlChanged,
                        Data = publishedPage.Url
                    }, item);
                }
            }
            catch (Exception ex)
            {
                result.AddRuleViolation("Title", ex.Message);
            }
            return(result);
        }
コード例 #4
0
        private ServiceResult <ProductEntity> ValidProductType(ProductEntity product)
        {
            ServiceResult <ProductEntity> serviceResult = new ServiceResult <ProductEntity>();
            ProductCategory productType = _productCategoryService.Get(product.ProductCategoryID);

            if (productType == null)
            {
                serviceResult.AddRuleViolation("ProductTypeID", "Product type is not exist.");
                return(serviceResult);
            }
            return(serviceResult);
        }
コード例 #5
0
        private ServiceResult <ArticleEntity> ValidArticleType(ArticleEntity article)
        {
            ServiceResult <ArticleEntity> serviceResult = new ServiceResult <ArticleEntity>();
            ArticleType articleType = _articleTypeService.Get(article.ArticleTypeID ?? 0);

            if (articleType == null)
            {
                serviceResult.AddRuleViolation("ArticleTypeID", "Article type is not exist.");
                return(serviceResult);
            }
            return(serviceResult);
        }
コード例 #6
0
        private ServiceResult <ProductCategory> ValidParentId(ProductCategory productCategory)
        {
            ServiceResult <ProductCategory> result = new ServiceResult <ProductCategory>();

            if (productCategory.ParentID > 0)
            {
                var parentProductCategory = _productCategoryService.Get(productCategory.ParentID);
                if (parentProductCategory == null)
                {
                    result.AddRuleViolation("ParentID", "Parent is not exist");
                }
            }
            return(result);
        }
コード例 #7
0
        private ServiceResult <ArticleType> ValidParentId(ArticleType articleType)
        {
            ServiceResult <ArticleType> result = new ServiceResult <ArticleType>();

            if (articleType.ParentID.HasValue)
            {
                var parentArticleType = _articleTypeService.Get(articleType.ParentID.Value);
                if (parentArticleType == null)
                {
                    result.AddRuleViolation("ParentID", "Parent is not exist");
                }
            }
            return(result);
        }
コード例 #8
0
        private ServiceResult <UrlRedirect> PatternTest(UrlRedirect item)
        {
            ServiceResult <UrlRedirect> exceptionResult = new ServiceResult <UrlRedirect>();

            if (item.IsPattern ?? false)
            {
                try
                {
                    item.ParsePattern();
                }
                catch (Exception ex)
                {
                    exceptionResult.AddRuleViolation("InComingUrl", ex.Message);
                }
            }
            return(exceptionResult);
        }
コード例 #9
0
 public override ServiceResult <T> Update(T item)
 {
     return(BeginTransaction(() =>
     {
         var basePart = WidgetBasePartService.Get(item.ID);
         item.CopyTo(basePart);
         var baseResult = WidgetBasePartService.Update(basePart);
         if (baseResult.HasViolation)
         {
             ServiceResult <T> result = new ServiceResult <T>();
             foreach (var item in baseResult.RuleViolations)
             {
                 result.AddRuleViolation(item.ParameterName, item.ErrorMessage);
             }
             return result;
         }
         return base.Update(item);
     }));
 }
コード例 #10
0
 public override ServiceResult <T> Add(T item)
 {
     return(BeginTransaction(() =>
     {
         var id = Guid.NewGuid().ToString("N");
         var basePart = item.ToWidgetBasePart();
         basePart.ID = id;
         var baseResult = WidgetBasePartService.Add(basePart);
         if (baseResult.HasViolation)
         {
             ServiceResult <T> result = new ServiceResult <T>();
             foreach (var item in baseResult.RuleViolations)
             {
                 result.AddRuleViolation(item.ParameterName, item.ErrorMessage);
             }
             return result;
         }
         item.ID = basePart.ID;
         return base.Add(item);
     }));
 }