예제 #1
0
        /// <summary>
        /// Gets the coupon create item view model async.
        /// </summary>
        /// <returns>The coupon create item view model async.</returns>
        /// <param name="Id">Identifier.</param>
        public async Task <CouponCreateItemViewModel> GetCouponCreateItemViewModelAsync(Guid Id)
        {
            var coupon = await _context.Coupons.Include(item => item.Products)
                         .SingleOrDefaultAsync(m => m.Id == Id);

            if (coupon == null)
            {
                return(null);
            }
            var couponModel = new CouponCreateItemViewModel
            {
                Id               = coupon.Id,
                Caption          = coupon.Caption,
                DiscountTypeText = coupon.DiscountType,
                Discount         = coupon.Discount,
                TotalCapacity    = coupon.TotalCapacity,
                CurrentCapacity  = coupon.CurrentCapacity,
                StartDate        = coupon.StartDate,
                EndDate          = coupon.EndDate,
                IsApproved       = coupon.IsApproved,
                ProductsId       = coupon.Products.Select(item => item.Id),
                ImageView        = coupon.Image,
                Products         = GetSelectListProducts(),
                DiscountType     = GetSelectListDiscountTypes()
            };

            return(couponModel);
        }
예제 #2
0
        public async Task UpdateCouponAsync(CouponCreateItemViewModel couponModel)
        {
            var coupon = await GetCouponAsync(couponModel.Id);

            coupon.Caption         = couponModel.Caption;
            coupon.Id              = couponModel.Id;
            coupon.Discount        = couponModel.Discount;
            coupon.DiscountType    = couponModel.DiscountTypeText;
            coupon.StartDate       = couponModel.StartDate;
            coupon.EndDate         = couponModel.EndDate;
            coupon.TotalCapacity   = couponModel.TotalCapacity;
            coupon.CurrentCapacity = couponModel.CurrentCapacity;
            coupon.IsApproved      = couponModel.IsApproved;
            coupon.Products        = await _context.Products.Where(item => couponModel.ProductsId.Contains(item.Id)).ToListAsync();


            if (couponModel.Image != null)
            {
                using (var memoryStream = new MemoryStream())
                {
                    await couponModel.Image.CopyToAsync(memoryStream);

                    if (memoryStream != null)
                    {
                        coupon.Image = memoryStream.ToArray();
                    }
                }
            }
            _context.Update(coupon);
            await _context.SaveChangesAsync();
        }
예제 #3
0
        public async Task <Coupon> CreateCouponAsync(CouponCreateItemViewModel couponModel)
        {
            var networkBarcodes = from c in couponModel.NetworkBarcodes
                                  select new NetworkBarcode()
            {
                BarcodeValue = c.BarcodeValue,
                BarcodeType  = c.BarcodeType,
                Id           = Guid.NewGuid(),
                Networks     = _context.Networks.Where(x => c.Networks.Contains(x.Id)).ToList()
            };
            var networkCoupons = networkBarcodes.SelectMany(item => item.Networks).ToList();

            var coupon = new Coupon
            {
                Caption         = couponModel.Caption,
                Id              = Guid.NewGuid(),
                Discount        = couponModel.Discount,
                DiscountType    = couponModel.DiscountTypeText,
                StartDate       = couponModel.StartDate,
                EndDate         = couponModel.EndDate,
                TotalCapacity   = couponModel.TotalCapacity,
                CurrentCapacity = couponModel.CurrentCapacity,
                IsApproved      = couponModel.IsApproved,
                NetworkCoupons  = new List <NetworkCoupon>(),
                NetworkBarcodes = networkBarcodes.ToList(),
                UserCoupons     = new List <UserCoupon>(),
                Products        = await _context.Products.Where(item => couponModel.ProductsId.Contains(item.Id)).ToListAsync()
            };

            var networkCouponsList = new List <NetworkCoupon>(networkCoupons.Count);

            networkCouponsList = networkCoupons.Select(item => new NetworkCoupon
            {
                CouponId  = coupon.Id,
                Coupon    = coupon,
                NetworkId = item.Id,
                Network   = item
            }).ToList();

            coupon.NetworkCoupons = networkCouponsList;

            if (couponModel.Image != null)
            {
                using (var memoryStream = new MemoryStream())
                {
                    await couponModel.Image.CopyToAsync(memoryStream);

                    if (memoryStream != null)
                    {
                        coupon.Image = memoryStream.ToArray();
                    }
                }
            }
            _context.Add(coupon);
            await _context.SaveChangesAsync();

            return(coupon);
        }
예제 #4
0
        public async Task <IActionResult> Edit(Guid id, CouponCreateItemViewModel couponModel)
        {
            if (id != couponModel.Id)
            {
                return(NotFound());
            }


            if (ModelState.IsValid)
            {
                try
                {
                    //    var coupon = new Coupon
                    //    {
                    //        TotalCapacity = couponItem.TotalCapacity,
                    //        CurrentCapacity = couponItem.CurrentCapacity,
                    //        CouponName = couponItem.CouponName,
                    //        Id = couponItem.Id
                    //    };
                    //    using (var memoryStream = new MemoryStream())
                    //    {
                    //        await couponItem.CouponImage.CopyToAsync(memoryStream);
                    //        if (memoryStream != null)
                    //        {
                    //            coupon.CouponImage = memoryStream.ToArray();
                    //        }
                    //    }

                    //    _context.Update(coupon);
                    //    await _context.SaveChangesAsync();
                    await _couponService.UpdateCouponAsync(couponModel);
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!CouponExists(couponModel.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            couponModel.Products     = _couponService.GetSelectListProducts();
            couponModel.DiscountType = _couponService.GetSelectListDiscountTypes();
            couponModel.Networks     = _couponService.GetMultiSelectListNetworks();
            return(View(couponModel));
        }
예제 #5
0
        public async Task <CouponCreateItemViewModel> GetCouponProductsListItemViewModelAsync()
        {
            var couponModel = new CouponCreateItemViewModel();

            couponModel.Products        = GetSelectListProducts();
            couponModel.NetworkBarcodes = new List <NetworkBarcodeViewModel>()
            {
                new NetworkBarcodeViewModel()
                {
                    BarcodeValue = "",
                    Networks     = new List <Guid>()
                }
            };

            couponModel.Networks     = GetMultiSelectListNetworks();
            couponModel.DiscountType = GetSelectListDiscountTypes();
            return(couponModel);
        }
예제 #6
0
        public async Task <IActionResult> Create(CouponCreateItemViewModel couponModel)
        {
            if (couponModel.DiscountTypeText.Equals(Constants.DISCOUNT_TYPE_PERCENT))
            {
                if (couponModel.Discount < 0 || couponModel.Discount > 100)
                {
                    ModelState.AddModelError("Discount", "Out of range of possible values");
                }
            }
            if (couponModel.Image == null)
            {
                ModelState.AddModelError("Image", "Please, provide image for coupon");
            }
            if (ModelState.IsValid)
            {
                var coupon = await _couponService.CreateCouponAsync(couponModel);

                // for test only! AA
                //    var location = Helpers.CookiesHelper.GetGeolocation(HttpContext);

                //    var coupon = new Coupon
                //    {
                //        TotalCapacity = couponItem.TotalCapacity,
                //        CurrentCapacity = couponItem.CurrentCapacity,
                //        CouponName = couponItem.CouponName,
                //        Id = Guid.NewGuid()
                //        //MerchantUser = _userManager.Users.FirstOrDefault(item => item.Id == couponItem.MerchantUserId),

                //    };
                //    using (var memoryStream = new MemoryStream())
                //    {
                //        await couponItem.CouponImage.CopyToAsync(memoryStream);
                //        coupon.CouponImage = memoryStream.ToArray();
                //    }
                //    _context.Add(coupon);
                //    await _context.SaveChangesAsync();
                return(RedirectToAction(nameof(Index)));
            }
            couponModel.Products     = _couponService.GetSelectListProducts();
            couponModel.DiscountType = _couponService.GetSelectListDiscountTypes();
            couponModel.Networks     = _couponService.GetMultiSelectListNetworks();
            return(View(couponModel));
        }