private static void SaveProducts(EditPackage editPackage, int packageID)
        {
            var curList = PackageProducts.GetByPackageID(packageID);

            foreach (var product in editPackage.Products)
            {
                var packageProduct = Mapper.Map <PackageProduct>(product);

                if (packageProduct.ProductVarientID == -1)
                {
                    packageProduct.ProductVarientID = null;
                }

                if (!curList.Any(item => item.ID == product.ID))
                {
                    packageProduct.PackageID = packageID;
                    packageProduct.NewPrice  = packageProduct.NewPrice * (ExtensionMethods.IsRial ? 1 : 10);
                    packageProduct.OldPrice  = packageProduct.OldPrice * (ExtensionMethods.IsRial ? 1 : 10);

                    PackageProducts.Insert(packageProduct);
                }
                else
                {
                    PackageProducts.Update(packageProduct);
                    curList.Remove(curList.Single(cls => cls.ID == packageProduct.ID));
                }
            }

            foreach (var item in curList)
            {
                PackageProducts.Delete(item.ID);
            }
        }
        public ActionResult Edit(int?id)
        {
            EditPackage editPackage;

            if (id.HasValue)
            {
                editPackage = Mapper.Map <EditPackage>(Packages.GetByID(id.Value));
                var products = PackageProducts.GetByPackageID(editPackage.ID);

                editPackage.Text     = HttpUtility.HtmlDecode(editPackage.Text);
                editPackage.Images   = PackageImages.GetByPackageID(editPackage.ID);
                editPackage.Products = Mapper.Map <List <EditPackageProduct> >(products);
            }
            else
            {
                editPackage = new EditPackage();
            }

            return(View(editPackage));
        }