PackageCreationAndAddingBenifitSteps()
        {
            driverIE         = ObjectRepository.Driver;
            callCenterSearch = new CallCenterEnquirySearch(driverIE);
            callCenter       = new CallCenter(driverIE);

            employeeDetails     = new EmployeeDetails(driverIE);
            processsMenuPage    = new ProcessMenuPage(driverIE);
            packageAdminDetails = new PackageAdminDetails(driverIE);

            payRoll     = new PayRollDetails(driverIE);
            adminFees   = new AdminFeesPage(driverIE);
            editpackage = new EditPackage(driverIE);

            packAdminDetailEdit = new PackageAdminDetailsEdit(driverIE);
            payRollDetailEdit   = new PayRollDetailsEdit(driverIE);
            benefitPage         = new BenefitPage(driverIE);

            benefitDetails  = new BenefitDetails(driverIE);
            activatePackage = new ReviewAndActiveatePage(driverIE);
            cardScreen      = new CardScreen(driverIE);

            batchProcessTest = new BatchProcessTest();
            amendments       = new AmendmentsScreen(driverIE);
        }
        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);
            }
        }
        private static void SaveImages(EditPackage editPackage, int packageID)
        {
            var curList = PackageImages.GetByPackageID(packageID);

            foreach (var image in editPackage.Images)
            {
                if (!curList.Any(item => item.ID == image.ID))
                {
                    var packageImage = Mapper.Map <PackageImage>(image);

                    packageImage.PackageID = packageID;

                    PackageImages.Insert(packageImage);
                }
                else
                {
                    PackageImages.UpdatePackageImagePlace(image.ID, image.ProductImagePlace);
                    curList.Remove(curList.Single(cls => cls.ID == image.ID));
                }
            }

            foreach (var item in curList)
            {
                PackageImages.Delete(item.ID);
            }
        }
        private void editPackageToolStripMenuItem_Click(object sender, EventArgs e)
        {
            EditPackage   Frm   = new EditPackage();
            List <string> ToAdd = new List <string>();

            foreach (ListViewItem item in listViewPckg.Items)
            {
                ToAdd.Add(item.Text);
            }
            Frm.SetPkgList = ToAdd.ToArray();
            Frm.ShowDialog(this);
        }
        public ActionResult Edit(EditPackage editPackage, string score)
        {
            try
            {
                float scoreValue = score != "" ? float.Parse(score) : 0;

                var package = Mapper.Map <Package>(editPackage);

                package.LastUpdate   = DateTime.Now;
                package.PackageScore = scoreValue;
                ViewBag.Success      = true;

                int packageID = package.ID;
                if (packageID == -1)
                {
                    package.CreatedDate = DateTime.Now;

                    Packages.Insert(package);
                    packageID = package.ID;

                    SaveImages(editPackage, packageID);
                    SaveProducts(editPackage, packageID);

                    UserNotifications.Send(UserID, String.Format("جدید - بسته '{0}'", editPackage.Title), "/Admin/Packages/Edit/" + editPackage.ID, NotificationType.Success);
                    editPackage = new EditPackage();
                }
                else
                {
                    Packages.Update(package);

                    SaveImages(editPackage, packageID);
                    SaveProducts(editPackage, packageID);

                    editPackage.Text         = HttpUtility.HtmlDecode(editPackage.Text);
                    editPackage.PackageScore = package.PackageScore;
                }
            }
            catch (Exception ex)
            {
                SetErrors(ex);
            }

            return(ClearView(editPackage));
        }
        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));
        }