/// <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 }); }
/// <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>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 }; }