/// <summary>
 /// Creates the specified instance.
 /// </summary>
 /// <param name="instance">The instance.</param>
 /// <returns></returns>
 public void Create(Category instance)
 {
     Mapper.CreateMap<Category, Categories>();
     var category = Mapper.Map<Categories>(instance);
     db.Categories.Add(category);
     db.SaveChanges();
 }
        /// <summary>
        /// Creates the specified instance.
        /// </summary>
        /// <param name="instance">The instance.</param>
        /// <returns></returns>
        public void Create(Category instance)
        {
            string sqlStatement = "INSERT [dbo].[Categories]([CategoryName],[Description])";
            sqlStatement += "VALUES(@CategoryName,@Description);";

            using (SqlConnection conn = new SqlConnection(this.ConnectionString))
            using (SqlCommand command = new SqlCommand(sqlStatement, conn))
            {
                command.Parameters.Add(new SqlParameter("CategoryName", instance.CategoryName));
                command.Parameters.Add(new SqlParameter("Description", instance.Description));

                command.CommandType = CommandType.Text;
                command.CommandTimeout = 180;

                if (conn.State != ConnectionState.Open) conn.Open();

                try
                {
                    command.ExecuteNonQuery();
                }
                catch (Exception)
                {
                    throw;
                }
            }
        }
 public ActionResult Edit(Category instance)
 {
     if (ModelState.IsValid)
     {
         this._repository.Update(instance);
         return RedirectToAction("Index");
     }
     return View(instance);
 }
        /// <summary>
        /// Creates the specified instance.
        /// </summary>
        /// <param name="instance">The instance.</param>
        public void Create(Category instance)
        {
            string sqlStatement = "INSERT [dbo].[Categories]([CategoryName],[Description])";
            sqlStatement += "VALUES(@CategoryName,@Description);";

            DbCommand comm = Db.GetSqlStringCommand(sqlStatement);
            comm.Parameters.Add(new SqlParameter("CategoryName", instance.CategoryName));
            comm.Parameters.Add(new SqlParameter("Description", instance.Description));
            Db.ExecuteNonQuery(comm);
        }
        /// <summary>
        /// Gets the categories.
        /// </summary>
        /// <returns></returns>
        public List<Category> GetCategories()
        {
            List<Category> result = new List<Category>();

            var categories = this.db.Categories.OrderByDescending(x => x.CategoryID);
            foreach (var item in categories)
            {
                var category = new Category()
                {
                    CategoryID = item.CategoryID,
                    CategoryName = item.CategoryName,
                    Description = item.Description
                };
                result.Add(category);
            }

            return result;
        }
        /// <summary>
        /// Gets the categories.
        /// </summary>
        /// <returns></returns>
        public List<Category> GetCategories()
        {
            List<Category> categories = new List<Category>();

            string sqlStatement = "select * from Categories order by CategoryID Desc";

            using (DbCommand comm = Db.GetSqlStringCommand(sqlStatement))
            using (IDataReader reader = this.Db.ExecuteReader(comm))
            {
                while (reader.Read())
                {
                    Category item = new Category();
                    item.CategoryID = int.Parse(reader["CategoryID"].ToString());
                    item.CategoryName = reader["CategoryName"].ToString();
                    item.Description = reader["Description"].ToString();

                    categories.Add(item);
                }
            }
            return categories;
        }
        /// <summary>
        /// Gets the one.
        /// </summary>
        /// <param name="id">The id.</param>
        /// <returns></returns>
        public Category GetOne(int id)
        {
            string sqlStatement = "select * from Categories where CategoryID = @CategoryID";

            Category item = new Category();

            using (DbCommand comm = Db.GetSqlStringCommand(sqlStatement))
            {
                comm.Parameters.Add(new SqlParameter("CategoryID", id));

                using (IDataReader reader = this.Db.ExecuteReader(comm))
                {
                    if (reader.Read())
                    {
                        item.CategoryID = int.Parse(reader["CategoryID"].ToString());
                        item.CategoryName = reader["CategoryName"].ToString();
                        item.Description = reader["Description"].ToString();
                    }
                }
            }
            return item;
        }
        /// <summary>
        /// Updates the specified instance.
        /// </summary>
        /// <param name="instance">The instance.</param>
        /// <returns></returns>
        public void Update(Category instance)
        {
            string sqlStatement = "UPDATE [dbo].[Categories] ";
            sqlStatement += "SET ";
            sqlStatement += "[CategoryName] = @CategoryName, ";
            sqlStatement += "[Description] = @Description ";
            sqlStatement += "WHERE [dbo].[Categories].[CategoryID] = @CategoryID;";

            DbCommand comm = Db.GetSqlStringCommand(sqlStatement);
            comm.Parameters.Add(new SqlParameter("CategoryName", instance.CategoryName));
            comm.Parameters.Add(new SqlParameter("Description", instance.Description));
            comm.Parameters.Add(new SqlParameter("CategoryID", instance.CategoryID));
            Db.ExecuteNonQuery(comm);
        }
        /// <summary>
        /// Gets the categories.
        /// </summary>
        /// <returns></returns>
        public List<Category> GetCategories()
        {
            List<Category> categories = new List<Category>();

            string sqlStatement = "select * from Categories order by CategoryID desc";

            using (SqlConnection conn = new SqlConnection(this.ConnectionString))
            using (SqlCommand command = new SqlCommand(sqlStatement, conn))
            {
                command.CommandType = CommandType.Text;
                command.CommandTimeout = 180;

                if (conn.State != ConnectionState.Open) conn.Open();

                using (SqlDataReader reader = command.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        Category item = new Category();
                        item.CategoryID = int.Parse(reader["CategoryID"].ToString());
                        item.CategoryName = reader["CategoryName"].ToString();
                        item.Description = reader["Description"].ToString();

                        categories.Add(item);
                    }
                }
            }
            return categories;
        }
        /// <summary>
        /// Updates the specified instance.
        /// </summary>
        /// <param name="instance">The instance.</param>
        public void Update(Category instance)
        {
            string sqlStatement = "UPDATE [dbo].[Categories] ";
            sqlStatement += "SET ";
            sqlStatement += "[CategoryName] = @CategoryName, ";
            sqlStatement += "[Description] = @Description ";
            sqlStatement += "WHERE [dbo].[Categories].[CategoryID] = @CategoryID;";

            using (SqlConnection conn = new SqlConnection(this.ConnectionString))
            using (SqlCommand command = new SqlCommand(sqlStatement, conn))
            {
                command.Parameters.Add(new SqlParameter("CategoryName", instance.CategoryName));
                command.Parameters.Add(new SqlParameter("Description", instance.Description));
                command.Parameters.Add(new SqlParameter("CategoryID", instance.CategoryID));

                command.CommandType = CommandType.Text;
                command.CommandTimeout = 180;

                if (conn.State != ConnectionState.Open) conn.Open();

                try
                {
                    command.ExecuteNonQuery();
                }
                catch (Exception)
                {
                    throw;
                }
            }
        }
        /// <summary>
        /// Gets the one.
        /// </summary>
        /// <param name="id">The id.</param>
        /// <returns></returns>
        public Category GetOne(int id)
        {
            string sqlStatement = "select * from Categories where CategoryID = @CategoryID";

            Category item = new Category();

            using (SqlConnection conn = new SqlConnection(this.ConnectionString))
            using (SqlCommand comm = new SqlCommand(sqlStatement, conn))
            {
                comm.Parameters.Add(new SqlParameter("CategoryID", id));

                comm.CommandType = CommandType.Text;
                comm.CommandTimeout = 180;

                if (conn.State != ConnectionState.Open) conn.Open();

                using (IDataReader reader = comm.ExecuteReader())
                {
                    if (reader.Read())
                    {
                        item.CategoryID = int.Parse(reader["CategoryID"].ToString());
                        item.CategoryName = reader["CategoryName"].ToString();
                        item.Description = reader["Description"].ToString();
                    }
                }
            }
            return item;
        }
 /// <summary>
 /// Gets the one.
 /// </summary>
 /// <param name="id">The id.</param>
 /// <returns></returns>
 public Category GetOne(int id)
 {
     var item = this.db.Categories.FirstOrDefault(x => x.CategoryID == id);
     if (item == null)
     {
         return null;
     }
     else
     {
         var category = new Category()
         {
             CategoryID = item.CategoryID,
             CategoryName = item.CategoryName,
             Description = item.Description
         };
         return category;
     }
 }