Example #1
0
        /// <summary>
        /// Puts the specified request.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns><c>PutCategoryResponse</c> with created or updated item id.</returns>
        public PutCategoryResponse Put(PutCategoryRequest request)
        {
            var categories = repository.AsQueryable <Module.Root.Models.Category>()
                             .Where(l => l.Id == request.Id || l.Name == request.Data.Name)
                             .ToList();

            var categoryToSave = categories.FirstOrDefault(l => l.Id == request.Id);

            var createCategory = categoryToSave == null;

            if (createCategory)
            {
                categoryToSave = new Module.Root.Models.Category
                {
                    Id = request.Id.GetValueOrDefault()
                };
            }
            else if (request.Data.Version > 0)
            {
                categoryToSave.Version = request.Data.Version;
            }

            if (categories.Any(l => l.Id != request.Id && l.Name == request.Data.Name))
            {
                var message = string.Format("Category with name '{0}' already exists.", request.Data.Name);
                throw new CmsApiValidationException(message);
            }

            unitOfWork.BeginTransaction();

            categoryToSave.Name = request.Data.Name;

            repository.Save(categoryToSave);

            unitOfWork.Commit();

            // Fire events.
            if (createCategory)
            {
                Events.RootEvents.Instance.OnCategoryCreated(categoryToSave);
            }
            else
            {
                Events.RootEvents.Instance.OnCategoryUpdated(categoryToSave);
            }

            return(new PutCategoryResponse
            {
                Data = categoryToSave.Id
            });
        }
Example #2
0
        /// <summary>
        /// Puts the specified request.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns>
        ///   <c>PutNodeResponse</c> with create or updated node id.
        /// </returns>
        public PutNodeResponse Put(PutNodeRequest request)
        {
            var categoryFuture = repository.AsQueryable<CategoryTree>(e => e.Id == request.CategoryTreeId)
//                .FetchMany(f => f.AccessRules)
                .ToFuture();

            var node =
                repository.AsQueryable<Module.Root.Models.Category>(e => e.CategoryTree.Id == request.CategoryTreeId && e.Id == request.Id)
//                    .FetchMany(n => n.Translations)
//                    .ToFuture()
//                    .ToList()
                    .FirstOrDefault();

            var category = categoryFuture.ToList().FirstOne();

//            if (cmsConfiguration.Security.AccessControlEnabled)
//            {
//                accessControlService.DemandAccess(category, securityService.GetCurrentPrincipal(), AccessLevel.ReadWrite);
//            }

            var isNew = node == null;
            if (isNew)
            {
                node = new Module.Root.Models.Category
                              {
                                  Id = request.Id.GetValueOrDefault()
                              };
            }
            else if (request.Data.Version > 0)
            {
                node.Version = request.Data.Version;
            }

            unitOfWork.BeginTransaction();

//            categoryService.ArchiveCategory(category.Id);

            node.CategoryTree = category;
            node.Name = request.Data.Name;

            node.ParentCategory = request.Data.ParentId.GetValueOrDefault() != default(Guid)
                                  ? repository.AsProxy<Module.Root.Models.Category>(request.Data.ParentId.GetValueOrDefault())
                                  : null;

            node.DisplayOrder = request.Data.DisplayOrder;
            node.Macro = request.Data.Macro;

            repository.Save(node);

            unitOfWork.Commit();

            // Fire events.
            if (isNew)
            {
                Events.RootEvents.Instance.OnCategoryCreated(node);
            }
            else
            {
                Events.RootEvents.Instance.OnCategoryUpdated(node);
            }

            Events.RootEvents.Instance.OnCategoryTreeUpdated(category);

            return new PutNodeResponse { Data = node.Id };
        }
Example #3
0
        /// <summary>
        /// Puts the specified request.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns>
        ///   <c>PutNodeResponse</c> with create or updated node id.
        /// </returns>
        public PutNodeResponse Put(PutNodeRequest request)
        {
            var categoryFuture = repository.AsQueryable <CategoryTree>(e => e.Id == request.CategoryTreeId)
//                .FetchMany(f => f.AccessRules)
                                 .ToFuture();

            var node =
                repository.AsQueryable <Module.Root.Models.Category>(e => e.CategoryTree.Id == request.CategoryTreeId && e.Id == request.Id)
//                    .FetchMany(n => n.Translations)
//                    .ToFuture()
//                    .ToList()
                .FirstOrDefault();

            var category = categoryFuture.ToList().FirstOne();

//            if (cmsConfiguration.Security.AccessControlEnabled)
//            {
//                accessControlService.DemandAccess(category, securityService.GetCurrentPrincipal(), AccessLevel.ReadWrite);
//            }

            var isNew = node == null;

            if (isNew)
            {
                node = new Module.Root.Models.Category
                {
                    Id = request.Id.GetValueOrDefault()
                };
            }
            else if (request.Data.Version > 0)
            {
                node.Version = request.Data.Version;
            }

            unitOfWork.BeginTransaction();

//            categoryService.ArchiveCategory(category.Id);

            node.CategoryTree = category;
            node.Name         = request.Data.Name;

            node.ParentCategory = request.Data.ParentId.GetValueOrDefault() != default(Guid)
                                  ? repository.AsProxy <Module.Root.Models.Category>(request.Data.ParentId.GetValueOrDefault())
                                  : null;

            node.DisplayOrder = request.Data.DisplayOrder;
            node.Macro        = request.Data.Macro;

            repository.Save(node);

            unitOfWork.Commit();

            // Fire events.
            if (isNew)
            {
                Events.RootEvents.Instance.OnCategoryCreated(node);
            }
            else
            {
                Events.RootEvents.Instance.OnCategoryUpdated(node);
            }

            Events.RootEvents.Instance.OnCategoryTreeUpdated(category);

            return(new PutNodeResponse {
                Data = node.Id
            });
        }
        /// <summary>
        /// Puts the specified request.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns><c>PutCategoryResponse</c> with created or updated item id.</returns>
        public PutCategoryResponse Put(PutCategoryRequest request)
        {
            var categories = repository.AsQueryable<Module.Root.Models.Category>()
                .Where(l => l.Id == request.Id || l.Name == request.Data.Name)
                .ToList();

            var categoryToSave = categories.FirstOrDefault(l => l.Id == request.Id);

            var createCategory = categoryToSave == null;
            if (createCategory)
            {
                categoryToSave = new Module.Root.Models.Category
                {
                    Id = request.Id.GetValueOrDefault()
                };
            }
            else if (request.Data.Version > 0)
            {
                categoryToSave.Version = request.Data.Version;
            }

            if (categories.Any(l => l.Id != request.Id && l.Name == request.Data.Name))
            {
                var message = string.Format("Category with name '{0}' already exists.", request.Data.Name);
                throw new CmsApiValidationException(message);
            }

            unitOfWork.BeginTransaction();

            categoryToSave.Name = request.Data.Name;

            repository.Save(categoryToSave);

            unitOfWork.Commit();

            // Fire events.
            if (createCategory)
            {
                Events.RootEvents.Instance.OnCategoryCreated(categoryToSave);
            }
            else
            {
                Events.RootEvents.Instance.OnCategoryUpdated(categoryToSave);
            }

            return new PutCategoryResponse
            {
                Data = categoryToSave.Id
            };
        }