/// <summary> /// Executes this command. /// </summary> /// <param name="request">A filter to search for specific categories.</param> /// <returns>A list of categories.</returns> public SearchableGridViewModel <CategoryItemViewModel> Execute(SearchableGridOptions request) { SearchableGridViewModel <CategoryItemViewModel> model; request.SetDefaultSortingOptions("Name"); Root.Models.Category alias = null; CategoryItemViewModel modelAlias = null; var query = UnitOfWork.Session .QueryOver(() => alias) .Where(() => !alias.IsDeleted); if (!string.IsNullOrWhiteSpace(request.SearchQuery)) { var searchQuery = string.Format("%{0}%", request.SearchQuery); query = query.Where(Restrictions.InsensitiveLike(NHibernate.Criterion.Projections.Property(() => alias.Name), searchQuery)); } query = query .SelectList(select => select .Select(() => alias.Id).WithAlias(() => modelAlias.Id) .Select(() => alias.Name).WithAlias(() => modelAlias.Name) .Select(() => alias.Version).WithAlias(() => modelAlias.Version)) .TransformUsing(Transformers.AliasToBean <CategoryItemViewModel>()); var count = query.ToRowCountFutureValue(); var categories = query.AddSortingAndPaging(request).Future <CategoryItemViewModel>(); model = new SearchableGridViewModel <CategoryItemViewModel>(categories.ToList(), request, count.Value); return(model); }
/// <summary> /// Initializes a new instance of the <see cref="RenderPageCategoryViewModel" /> class. /// </summary> public RenderPageCategoryViewModel(Root.Models.Category category) { if (category != null) { Id = category.Id; Version = category.Version; Name = category.Name; } }
/// <summary> /// Executes a command to save category. /// </summary> /// <param name="categoryItem">The category item.</param> /// <returns> /// true if category saved successfully; false otherwise. /// </returns> public CategoryItemViewModel Execute(CategoryItemViewModel categoryItem) { Root.Models.Category category; var categoryName = Repository.FirstOrDefault <Root.Models.Category>(c => c.Name == categoryItem.Name); if (categoryName != null && categoryName.Id != categoryItem.Id) { var message = string.Format(RootGlobalization.SaveCategory_CategoryExists_Message, categoryItem.Name); var logMessage = string.Format("Category already exists. Category name: {0}, Id: {1}", categoryItem.Name, categoryItem.Id); throw new ValidationException(() => message, logMessage); } if (categoryItem.Id == default(Guid)) { category = new Root.Models.Category(); } else { category = Repository.AsProxy <Root.Models.Category>(categoryItem.Id); } category.Version = categoryItem.Version; category.Name = categoryItem.Name; Repository.Save(category); UnitOfWork.Commit(); if (categoryItem.Id == default(Guid)) { Events.RootEvents.Instance.OnCategoryCreated(category); } else { Events.RootEvents.Instance.OnCategoryUpdated(category); } return(new CategoryItemViewModel { Id = category.Id, Version = category.Version, Name = category.Name }); }