Ejemplo n.º 1
0
        private ValidationDictionary <ViewModelArticleCategory> SaveArticleCategory(int clientId,
                                                                                    ViewModelArticleCategory viewModelArticleCategory)
        {
            var validator = new ValidationDictionary <ViewModelArticleCategory>();

            if (viewModelArticleCategory == null)
            {
                validator.IsValid = false;
                validator.AddError("", "The XX you're trying to save is null");
                return(validator);
            }

            // rule based here
            var existingWithSameName = _articleCategoryRepository
                                       .FilterBy(o => o.ArticleCategoryName.ToLower() == viewModelArticleCategory.ArticleCategoryName.ToLower() &&
                                                 o.ClientId == clientId &&
                                                 !o.IsDeleted)
                                       .ToList();

            if (existingWithSameName.Any())
            {
                var haveSameId = viewModelArticleCategory.ArticleCategoryId <= 0 ||
                                 (viewModelArticleCategory.ArticleCategoryId > 0 &&
                                  existingWithSameName.Any(o => o.ArticleCategoryId != viewModelArticleCategory.ArticleCategoryId));
                if (haveSameId)
                {
                    validator.IsValid = false;
                    validator.AddError("", "Article Category with same name is already existed");
                    return(validator);
                }
            }

            ArticleCategory articleCategory;

            if (viewModelArticleCategory.ArticleCategoryId > 0)
            {
                articleCategory = _articleCategoryRepository
                                  .FindBy(o => o.ArticleCategoryId == viewModelArticleCategory.ArticleCategoryId && o.ClientId == clientId);
                var dateCreated = articleCategory.DateCreated;
                articleCategory.InjectFrom(viewModelArticleCategory);
                articleCategory.ClientId        = clientId;
                articleCategory.DateLastUpdated = DateTime.UtcNow;
                articleCategory.DateCreated     = dateCreated;
                _articleCategoryRepository.Update(articleCategory);
            }
            else
            {
                articleCategory = new ArticleCategory();
                articleCategory.InjectFrom(viewModelArticleCategory);
                articleCategory.ClientId        = clientId;
                articleCategory.DateCreated     = DateTime.UtcNow;
                articleCategory.DateLastUpdated = DateTime.UtcNow;
                _articleCategoryRepository.Add(articleCategory);
            }

            var rawPinged = _articleCategoryRepository
                            .FindBy(o => o.ArticleCategoryId == articleCategory.ArticleCategoryId && o.ClientId == clientId);
            var pinged = new ViewModelArticleCategory().InjectFrom(rawPinged) as ViewModelArticleCategory;

            validator.IsValid       = true;
            validator.RelatedObject = pinged;
            return(validator);
        }