public ActionResult Edit(ProductCategoryItem item)
 {
     try
     {
         Service.ProductCategory.Save(item);
         return(RedirectToRouteNotify("EditProductCategory", new { id = item.Id }));
     }
     catch (ValidationException ex)
     {
         AddModelErrors(ex);
         Service.ProductCategory.AppendData(item);
         return(View("~/Views/Admin/ProductCategories/Edit.cshtml", item));
     }
 }
        public void Save(ProductCategoryItem item)
        {
            var errors = item.GetValidationErrors();

            errors.ThrowIfHasErrors();

            var category = item.Id == 0 ? Db.CreateAndAdd <tblProductCategory>() : Db.Set <tblProductCategory>().Single(x => x.Id == item.Id);

            category.Name             = item.Name;
            category.ParentCategoryId = item.ParentCategoryId;

            Db.SaveChanges();

            item.Id = category.Id;
        }
        public ProductCategoryItem Edit(long id)
        {
            var category = new ProductCategoryItem();

            if (id != 0)
            {
                category = Db.Set <tblProductCategory>()
                           .Select(x => new ProductCategoryItem
                {
                    Id                 = x.Id,
                    Name               = x.Name,
                    ParentCategoryId   = x.ParentCategoryId,
                    ParentCategoryName = x.ParentCategoryId != null ? x.tblProductCategory2.Name : ""
                })
                           .Single(x => x.Id == id);
            }

            AppendData(category);

            return(category);
        }
 public void AppendData(ProductCategoryItem item)
 {
     item.AvaliableCategories = item.Id == 0
         ? AllRoot()
         : AllRoot().Where(x => x.Id != item.Id).ToList();
 }
    public static List<ProductCategoryItem> GetProductCategories(SqlConnection sqlconn, string mainCategoryName, string subCategoryName) {

        SqlCommand query = new SqlCommand("proc_get_product_category", sqlconn);
        query.CommandType = CommandType.StoredProcedure;

        query.Parameters.Add("@categoryName", SqlDbType.VarChar);
        query.Parameters["@categoryName"].Value = mainCategoryName;
        query.Parameters.Add("@subCategoryName", SqlDbType.VarChar);
        query.Parameters["@subCategoryName"].Value = subCategoryName;

        try {
            List<ProductCategoryItem> list = new List<ProductCategoryItem>();

            // Get the data
            var reader = query.ExecuteReader();

            while (reader.Read()) {
                ProductCategoryItem product = new ProductCategoryItem(reader.GetString(0), reader.GetString(1), reader.GetString(2));

                list.Add(product);
            }

            return list;
        }
        catch {
            return null;
        }
    }