Esempio n. 1
0
        public async Task <ActionResult> Create(CouponVM c)
        {
            if (ModelState.IsValid)
            {
                // check if only one of the possible options has been selected
                if (!c.IsOnlyOneOptionSelected)
                {
                    ModelState.AddModelError(string.Empty, "Only one of the options should be selected");
                    await PopulateSelectLists();

                    return(View(c));
                }

                var uniqueId = GenerateUniqueId();

                while (await _cs.UniqueIdExisting(uniqueId))
                {
                    uniqueId = GenerateUniqueId();
                }

                c.UniqueId   = uniqueId;
                c.SiteUserId = UserData.UserId;
                c.Img        = await GenerateImage(uniqueId, c.Expires, c.Discount);

                c = await _cs.Create(c);

                return(RedirectToAction("Index", new { createdId = c.CouponId }));
            }

            await PopulateSelectLists();

            return(View(c));
        }
Esempio n. 2
0
        public async Task <IHttpActionResult> PostCoupon(Coupon coupon)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            coupon.StartDate = DateTime.UtcNow;
            db.Coupons.Add(coupon);
            await db.SaveChangesAsync();

            var cou = await db.Coupons.Include(c => c.Products).Include(c => c.Campuses).SingleOrDefaultAsync(c => c.Id == coupon.Id);

            var data = new CouponVM()
            {
                CouponName = coupon.CouponName,
                Id         = coupon.Id,
                OverDate   = coupon.OverDate,
                Rule       = coupon.Rule,
                StartDate  = coupon.StartDate,
                State      = coupon.State,
                Vlaue      = coupon.Vlaue,
                campusIds  = coupon.Campuses.Select(c => c.CampusID).ToList(),
                productIds = coupon.Products.Select(c => c.ProductId).ToList()
            };

            return(CreatedAtRoute("DefaultApi", new { id = data.Id }, data));
        }
Esempio n. 3
0
        public async Task <IHttpActionResult> PatchStudent(int id, JsonPatchDocument <Coupon> newdata)
        {
            var coupon = await db.Coupons.FindAsync(id);

            if (coupon == null)
            {
                return(NotFound());
            }
            newdata.ApplyUpdatesTo(coupon);
            await db.SaveChangesAsync();

            coupon = await db.Coupons.Include(cou => cou.Campuses).Include(c => c.Products).Where(c => c.Id == id).SingleOrDefaultAsync();

            var data = new CouponVM()
            {
                CouponName = coupon.CouponName,
                Id         = coupon.Id,
                OverDate   = coupon.OverDate,
                Rule       = coupon.Rule,
                StartDate  = coupon.StartDate,
                State      = coupon.State,
                Vlaue      = coupon.Vlaue,
                campusIds  = coupon.Campuses.Select(c => c.CampusID).ToList(),
                productIds = coupon.Products.Select(c => c.ProductId).ToList()
            };

            return(Ok(data));
        }
Esempio n. 4
0
        public async Task <IHttpActionResult> PutProducts(int id, bool prd, List <int> pids)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var products = db.CouponProducts.Where(c => c.CouponId == id).ToList();
            var oldids   = products.Select(c => c.ProductId);

            foreach (var prdt in products) //删除产品
            {
                if (!pids.Contains(prdt.ProductId))
                {
                    db.CouponProducts.Remove(prdt);
                }
            }
            foreach (var cid in pids) //新增产品
            {
                if (!oldids.Contains(cid))
                {
                    CouponProduct cc = new CouponProduct();
                    cc.ProductId = cid;
                    cc.CouponId  = id;
                    db.CouponProducts.Add(cc);
                }
            }
            try
            {
                await db.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!CouponExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }
            var coupon = await db.Coupons.Include(c => c.Products).Include(c => c.Campuses).SingleOrDefaultAsync(c => c.Id == id);

            var data = new CouponVM()
            {
                CouponName = coupon.CouponName,
                Id         = coupon.Id,
                OverDate   = coupon.OverDate,
                Rule       = coupon.Rule,
                StartDate  = coupon.StartDate,
                State      = coupon.State,
                Vlaue      = coupon.Vlaue,
                campusIds  = coupon.Campuses.Select(c => c.CampusID).ToList(),
                productIds = coupon.Products.Select(c => c.ProductId).ToList()
            };

            return(Ok(data));
        }
Esempio n. 5
0
        public async Task <CouponVM> Create(CouponVM cvm)
        {
            var c = _map.Map <Coupon>(cvm);

            c = db.Coupons.Add(c);
            await db.SaveChangesAsync();

            return(_map.Map <CouponVM>(c));
        }
Esempio n. 6
0
        public async Task <ActionResult> Create()
        {
            var c = new CouponVM();

            c.Expires = DateTime.Now.AddDays(30); // default expiration date
            c.ForAll  = true;                     //select for all products by default
            await PopulateSelectLists();

            return(View(c));
        }
Esempio n. 7
0
 public static bool IsDatesValid(this CouponVM model)
 {
     if (model.StartDate < DateTime.Today || model.EndDate < DateTime.Today ||
         model.EndDate < model.StartDate)
     {
         return(false);
     }
     else
     {
         return(true);
     }
 }
Esempio n. 8
0
        // GET: Pharmacist/Coupons
        public ActionResult Index()
        {
            var model = new CouponVM();

            model.Coupons = db.Coupons
                            .ToArray()
                            .OrderByDescending(c => c.StartDate)
                            .Where(c => c.isLoyaltyCoupon == false && c.Active == true)
                            .Select(c => new CouponItem(c))
                            .ToList();

            ViewBag.Customers = db.Patients.ToList();

            return(View(model));
        }
Esempio n. 9
0
        public async Task <IHttpActionResult> PutCoupon(int id, Coupon coupon)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != coupon.Id)
            {
                return(BadRequest());
            }

            db.Entry(coupon).State = EntityState.Modified;

            try
            {
                await db.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!CouponExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }
            coupon = await db.Coupons.Include(cou => cou.Campuses).Include(c => c.Products).Where(c => c.Id == id).SingleOrDefaultAsync();

            var data = new CouponVM()
            {
                CouponName = coupon.CouponName,
                Id         = coupon.Id,
                OverDate   = coupon.OverDate,
                Rule       = coupon.Rule,
                StartDate  = coupon.StartDate,
                State      = coupon.State,
                Vlaue      = coupon.Vlaue,
                campusIds  = coupon.Campuses.Select(c => c.CampusID).ToList(),
                productIds = coupon.Products.Select(c => c.ProductId).ToList()
            };

            return(Ok(data));
        }
Esempio n. 10
0
        public async Task <ActionResult> AddCoupon(CouponVM model)
        {
            if (!ModelState.IsValid)
            {
                TempData["Error"] = "Something happened!";
                return(RedirectToAction("index"));
            }

            var code_upper = model.Code.ToUpper();

            if (!model.IsDatesValid())
            {
                TempData["Error"] = "Dates were invalid!";
                return(RedirectToAction("index"));
            }

            var isCodeValid = db.Coupons.IsCodeUnique(code_upper);

            if (!isCodeValid)
            {
                TempData["Error"] = "Coupon Code already exists";
                return(RedirectToAction("index"));
            }

            #region Generating QR
            //string _path = Path.Combine(Server
            //                .MapPath("~/Files/Coupons"), code_upper + ".png");
            //try
            //{
            //    //using IronBarCode;
            //    //using System.Drawing;
            //    // Styling a QR code and adding annotation text
            //    var MyBarCode = IronBarCode.BarcodeWriter.CreateBarcode(code_upper, BarcodeWriterEncoding.QRCode);
            //    MyBarCode.AddAnnotationTextAboveBarcode("Coupon");
            //    MyBarCode.AddBarcodeValueTextBelowBarcode();
            //    MyBarCode.SetMargins(100);
            //    MyBarCode.ChangeBarCodeColor(Color.Purple);
            //    // Save as HTML
            //    MyBarCode.SaveAsPng(_path);
            //}
            //catch (Exception e)
            //{
            //    throw;
            //}

            #endregion

            db.Coupons.Add(new Coupon
            {
                Code         = code_upper,
                Description  = model.Description,
                StartDate    = model.StartDate,
                EndDate      = model.EndDate,
                DiscountRate = model.DiscountRate,
                //QRcodeURL = "/Files/Coupons/" + code_upper + ".png",
                QRcodeURL          = "/",
                MinimumOrderAmount = model.MinimumOrderAmount,
                isLoyaltyCoupon    = false,
                Active             = true,
                Display            = false
            });

            await db.SaveChangesAsync();

            TempData["Success"] = "Coupon was successfully created";
            return(RedirectToAction("index"));
        }