Example #1
0
        public ActionResult Edit(int?id)
        {
            EditProduct editProduct;

            if (id.HasValue)
            {
                editProduct = Mapper.Map <EditProduct>(Products.GetByID(id.Value));

                editProduct.Text               = HttpUtility.HtmlDecode(editProduct.Text);
                editProduct.GroupUrlPerfix     = Groups.GetByID(editProduct.GroupID.Value).UrlPerfix;
                editProduct.Groups             = ProductGroups.GetByProductID(editProduct.ID).Select(item => item.GroupID).ToList();
                editProduct.Images             = ProductImages.GetByProductID(editProduct.ID);
                editProduct.Files              = ProductFiles.GetByProductID(editProduct.ID);
                editProduct.Marks              = ProductMarks.GetByProductID(editProduct.ID);
                editProduct.Points             = ProductPoints.GetByProductID(editProduct.ID);
                editProduct.Keywords           = ProductKeywords.GetByProductID(editProduct.ID);
                editProduct.Notes              = ProductNotes.GetByProductID(editProduct.ID);
                editProduct.ProductPricesLinks = ProductPricesLinks.GetByProductID(editProduct.ID);

                editProduct.Supplies = ProductSupplies.GetByProductID(editProduct.ID);
                editProduct.Prices   = ProductPrices.GetByProductID(editProduct.ID);
                editProduct.Varients = ProductVarients.GetByProductID(editProduct.ID);

                editProduct.Discounts = ProductDiscounts.GetAllByProductID(editProduct.ID);
            }
            else
            {
                editProduct        = new EditProduct();
                editProduct.userID = UserID;
            }

            return(View(editProduct));
        }
Example #2
0
        private async Task LoadProductDiscountLookupAsync()
        {
            ProductDiscounts.Clear();
            ProductDiscounts.Add(new NullLookupItem {
                DisplayMember = " - "
            });
            var lookup = await _productDiscountLookupDataService.GetProductDiscountLookupAsync();

            foreach (var lookupItem in lookup)
            {
                ProductDiscounts.Add(lookupItem);
            }
        }
        public ActionResult Edit(int?id)
        {
            ProductDiscount productDiscount;

            if (id.HasValue)
            {
                productDiscount       = ProductDiscounts.GetByID(id.Value);
                productDiscount.Price = (productDiscount.Price / (ExtensionMethods.IsRial ? 1 : 10));
            }
            else
            {
                productDiscount = new ProductDiscount();
            }

            if (productDiscount.ProductID.HasValue)
            {
                ViewBag.ProductDiscountProductID = true;
            }
            else
            {
                ViewBag.ProductDiscountProductID = false;
            }

            if (productDiscount.GroupID.HasValue)
            {
                ViewBag.ProductDiscountGroupID = true;
            }
            else
            {
                ViewBag.ProductDiscountGroupID = false;
            }

            if (productDiscount.RoleID != null)
            {
                ViewBag.ProductDiscountRoleID = true;
            }
            else
            {
                ViewBag.ProductDiscountRoleID = false;
            }

            return(View(productDiscount));
        }
        public JsonResult Delete(int id)
        {
            var jsonSuccessResult = new JsonSuccessResult();

            try
            {
                ProductDiscounts.Delete(id);
                jsonSuccessResult.Success = true;
            }
            catch (Exception ex)
            {
                jsonSuccessResult.Errors  = new string[] { ex.Message };
                jsonSuccessResult.Success = false;
            }

            return(new JsonResult()
            {
                Data = jsonSuccessResult
            });
        }
        public JsonResult Get(int pageIndex, int pageSize, string pageOrder, string title, string fromDate, string toDate)
        {
            DateTime?sDate = null,
                    eDate  = null;

            if (fromDate != String.Empty)
            {
                sDate = Utilities.ToEnglishDate(fromDate).Date;
            }

            if (toDate != String.Empty)
            {
                eDate = Utilities.ToEnglishDate(toDate).Date;
            }

            var list = ProductDiscounts.Get(pageIndex,
                                            pageSize,
                                            pageOrder,
                                            title,
                                            sDate,
                                            eDate);

            foreach (var item in list)
            {
                if (item.ProductID.HasValue)
                {
                    var product = Products.GetByID(item.ProductID.Value);
                    item.ProductTitle = product.Title;
                }
                else
                {
                    item.ProductTitle = "-";
                }

                if (item.GroupID.HasValue)
                {
                    var group = Groups.GetByID(item.GroupID.Value);
                    item.GroupTitle = group.Title;
                }
                else
                {
                    item.GroupTitle = "-";
                }

                if (item.RoleID != null)
                {
                    var role = IdentityDbContext.Entity.Roles.Where(r => r.Id == item.RoleID).Single();
                    item.RoleTitle = role.Name;
                }
                else
                {
                    item.RoleTitle = "-";
                }
            }

            int total     = ProductDiscounts.Count(title, sDate, eDate);
            int totalPage = (int)Math.Ceiling((decimal)total / pageSize);

            if (pageSize > total)
            {
                pageSize = total;
            }

            if (list.Count < pageSize)
            {
                pageSize = list.Count;
            }

            JsonResult result = new JsonResult()
            {
                Data = new
                {
                    TotalPages = totalPage,
                    PageIndex  = pageIndex,
                    PageSize   = pageSize,
                    Rows       = list
                },
                JsonRequestBehavior = JsonRequestBehavior.AllowGet
            };

            return(result);
        }
        public ActionResult Edit(ProductDiscount productDiscount, string discountStatus)
        {
            try
            {
                ViewBag.ProductDiscountProductID      =
                    ViewBag.ProductDiscountGroupID    =
                        ViewBag.ProductDiscountRoleID = false;

                switch (discountStatus)
                {
                case "0":
                    ViewBag.ProductDiscountProductID = true;

                    //productDiscount.ProductID = null;
                    productDiscount.GroupID = null;
                    productDiscount.RoleID  = null;
                    break;

                case "1":
                    ViewBag.ProductDiscountGroupID = true;

                    productDiscount.ProductID = null;
                    //productDiscount.GroupID = null;
                    productDiscount.RoleID = null;
                    break;

                case "2":
                    ViewBag.ProductDiscountRoleID = true;

                    productDiscount.ProductID = null;
                    productDiscount.GroupID   = null;
                    //productDiscount.RoleID = null;
                    break;

                default:
                    break;
                }

                switch (productDiscount.DiscountType)
                {
                case DiscountType.Percent:
                    productDiscount.Price = 0;
                    break;

                case DiscountType.PriceAfter:
                    productDiscount.Price   = (productDiscount.Price * (ExtensionMethods.IsRial ? 1 : 10));
                    productDiscount.Percent = 0;
                    break;

                case DiscountType.PriceBefore:
                    productDiscount.Price   = (productDiscount.Price * (ExtensionMethods.IsRial ? 1 : 10));
                    productDiscount.Percent = 0;
                    break;

                default:
                    break;
                }

                productDiscount.LastUpdate = DateTime.Now;

                ViewBag.Success = true;
                var id = productDiscount.ID;

                if (productDiscount.ID == -1)
                {
                    ProductDiscounts.Insert(productDiscount);

                    UserNotifications.Send(UserID, String.Format("جدید - تخفیف محصول '{0}'", productDiscount.Percent), "/Admin/ProductDiscounts/Edit/" + productDiscount.ID, NotificationType.Success);
                }
                else
                {
                    ProductDiscounts.Update(productDiscount);
                }

                productDiscount.Price = (productDiscount.Price / (ExtensionMethods.IsRial ? 1 : 10));

                #region Set Task

                var taskText = String.Format("تخفیف \"{0}\" در حال اتمام است.", productDiscount.Title, productDiscount.PersianEndDate);
                var taskDate = productDiscount.EndDate.AddDays(-1);

                UserTasks.SetTask("اتمام مهلت تخفیف",
                                  taskText,
                                  StaticValues.AdminID,
                                  "ProductDiscounts_" + productDiscount.ID,
                                  "/Admin/ProductDiscounts/Edit/" + productDiscount.ID,
                                  taskDate);

                #endregion Set Task

                if (id == -1)
                {
                    productDiscount = new ProductDiscount();
                }
            }
            catch (Exception ex)
            {
                SetErrors(ex);
            }

            return(ClearView(productDiscount));
        }
Example #7
0
            public async Task SaveToDbContextAsync(ApplicationDbContext context)
            {
                await semaphoreSlim.WaitAsync();

                try
                {
                    ProductsInfo currentDbState = new ProductsInfo();
                    await currentDbState.LoadFromDbContextAsync(context);

                    WrappedProductsInfo wrappedProductsInfo = new WrappedProductsInfo(this);

                    //LEFT TO ADD: Product, ProductDiscount, ProductAd, ProductImage, ProductAttributeValue, AttributeValue, Attribute, ProductProperty, ProductCategory, Category, CategoryCategory
                    //ADDING IN THIS STEP: Product, Attribute, Categories

                    //Add missing products
                    foreach (var importProduct in Products)
                    {
                        Product dbProduct = currentDbState.Products.FirstOrDefault((p) => { return(p.Equals(importProduct)); });
                        if (dbProduct == null)
                        {
                            importProduct.Id = 0;
                            context.Product.Add(importProduct);
                        }
                    }

                    //Add missing attributes
                    foreach (var importAttribute in Attributes)
                    {
                        Models.Attribute dbAttribute = currentDbState.Attributes.FirstOrDefault((a) => { return(a.Equals(importAttribute)); });
                        if (dbAttribute == null)
                        {
                            importAttribute.Id = 0;
                            context.Attribute.Add(importAttribute);
                        }
                    }

                    //Add missing categories
                    foreach (var importCategory in Categories)
                    {
                        Category dbCategory = currentDbState.Categories.FirstOrDefault((c) => { return(c.Equals(importCategory)); });
                        if (dbCategory == null)
                        {
                            importCategory.Id = 0;
                            context.Category.Add(importCategory);
                        }
                    }
                    await context.SaveChangesAsync();

                    //Update every entity's ProductId value
                    foreach (var updatedProduct in wrappedProductsInfo.Products)
                    {
                        ProductDiscounts.Where((x) => { return(x.ProductId == updatedProduct.Item1); }).All((x) => { x.ProductId = updatedProduct.Item2.Id; return(true); });
                        ProductAds.Where((x) => { return(x.ProductId == updatedProduct.Item1); }).All((x) => { x.ProductId = updatedProduct.Item2.Id; return(true); });
                        ProductImages.Where((x) => { return(x.ProductId == updatedProduct.Item1); }).All((x) => { x.ProductId = updatedProduct.Item2.Id; return(true); });
                        ProductAttributeValues.Where((x) => { return(x.ProductId == updatedProduct.Item1); }).All((x) => { x.ProductId = updatedProduct.Item2.Id; return(true); });
                        ProductProperties.Where((x) => { return(x.ProductId == updatedProduct.Item1); }).All((x) => { x.ProductId = updatedProduct.Item2.Id; return(true); });
                        ProductCategories.Where((x) => { return(x.ProductId == updatedProduct.Item1); }).All((x) => { x.ProductId = updatedProduct.Item2.Id; return(true); });
                    }

                    //Update every entity's AttributeId values
                    foreach (var updatedAttribute in wrappedProductsInfo.Attributes)
                    {
                        AttributeValues.Where((x) => { return(x.AttributeId == updatedAttribute.Item1); }).All((x) => { x.AttributeId = updatedAttribute.Item2.Id; return(true); });
                    }

                    //Update every entity's CategoryId and ParentCategoryId values
                    foreach (var updatedCategory in wrappedProductsInfo.Categories)
                    {
                        ProductCategories.Where((x) => { return(x.CategoryId == updatedCategory.Item1); }).All((x) => { x.CategoryId = updatedCategory.Item2.Id; return(true); });
                        CategoryCategories.Where((x) => { return(x.CategoryId == updatedCategory.Item1); }).All((x) => { x.CategoryId = updatedCategory.Item2.Id; return(true); });
                        CategoryCategories.Where((x) => { return(x.ParentCategoryId == updatedCategory.Item1); }).All((x) => { x.ParentCategoryId = updatedCategory.Item2.Id; return(true); });
                    }

                    //LEFT TO ADD: ProductDiscount, ProductAd, ProductImage, ProductAttributeValue, AttributeValue, ProductProperty, ProductCategory, CategoryCategory
                    //ADDING IN THIS STEP: ProductDiscount, ProductAd, ProductImage, AttributeValue, ProductProperty, CategoryCategory, ProductCategory

                    //Add missing product discounts
                    foreach (var importProductDiscount in ProductDiscounts)
                    {
                        ProductDiscount dbProductDiscount = currentDbState.ProductDiscounts.FirstOrDefault((pd) => { return(pd.Equals(importProductDiscount)); });
                        if (dbProductDiscount == null)
                        {
                            importProductDiscount.Id = 0;
                            context.ProductDiscount.Add(importProductDiscount);
                        }
                    }

                    //Add missing product ads
                    foreach (var importProductAd in ProductAds)
                    {
                        ProductAd dbProductAd = currentDbState.ProductAds.FirstOrDefault((pa) => { return(pa.Equals(importProductAd)); });
                        if (dbProductAd == null)
                        {
                            importProductAd.Id = 0;
                            context.ProductAd.Add(importProductAd);
                        }
                    }

                    //Add missing product images
                    foreach (var importProductImage in ProductImages)
                    {
                        ProductImage dbProductImage = currentDbState.ProductImages.FirstOrDefault((pi) => { return(pi.Equals(importProductImage)); });
                        if (dbProductImage == null)
                        {
                            importProductImage.Id = 0;
                            context.ProductImage.Add(importProductImage);
                        }
                    }

                    //Add missing product properties
                    foreach (var importProductProperty in ProductProperties)
                    {
                        ProductProperty dbProductProperty = currentDbState.ProductProperties.FirstOrDefault((pp) => { return(pp.Equals(importProductProperty)); });
                        if (dbProductProperty == null)
                        {
                            importProductProperty.Id = 0;
                            context.ProductProperty.Add(importProductProperty);
                        }
                    }

                    //Add missing attribute values
                    foreach (var importAttributeValue in AttributeValues)
                    {
                        AttributeValue dbAttributeValue = currentDbState.AttributeValues.FirstOrDefault((av) => { return(av.Equals(importAttributeValue)); });
                        if (dbAttributeValue == null)
                        {
                            importAttributeValue.Id = 0;
                            context.AttributeValue.Add(importAttributeValue);
                        }
                    }

                    //Add missing category categories
                    foreach (var importCategoryCategory in CategoryCategories)
                    {
                        CategoryCategory dbCategoryCategory = currentDbState.CategoryCategories.FirstOrDefault((cc) => { return(cc.Equals(importCategoryCategory)); });
                        if (dbCategoryCategory == null)
                        {
                            importCategoryCategory.Id = 0;
                            context.CategoryCategory.Add(importCategoryCategory);
                        }
                    }

                    //Add missing product categories
                    foreach (var importProductCategory in ProductCategories)
                    {
                        ProductCategory dbProductCategory = currentDbState.ProductCategories.FirstOrDefault((pc) => { return(pc.Equals(importProductCategory)); });
                        if (dbProductCategory == null)
                        {
                            importProductCategory.Id = 0;
                            context.ProductCategory.Add(importProductCategory);
                        }
                    }
                    await context.SaveChangesAsync();

                    //Update every entity's AttributeValueId
                    foreach (var updatedAttributeValue in wrappedProductsInfo.AttributeValues)
                    {
                        ProductAttributeValues.Where((x) => { return(x.AttributeValueId == updatedAttributeValue.Item1); }).All((x) => { x.AttributeValueId = updatedAttributeValue.Item2.Id; return(true); });
                    }

                    //LEFT TO ADD: ProductAttributeValue
                    //ADDING IN THIS STEP: ProductAttributeValue

                    //Add missing product attribute values
                    foreach (var importProductAttributeValue in ProductAttributeValues)
                    {
                        ProductAttributeValue dbProductAttributeValue = currentDbState.ProductAttributeValues.FirstOrDefault((pav) => { return(pav.Equals(importProductAttributeValue)); });
                        if (dbProductAttributeValue == null)
                        {
                            importProductAttributeValue.Id = 0;
                            context.ProductAttributeValue.Add(importProductAttributeValue);
                        }
                    }


                    await context.SaveChangesAsync();
                }
                finally
                {
                    semaphoreSlim.Release();
                }
            }