private void UpdateCouponItems() { int[] currentItemIds = GetItemIds(); if (EqualIdCollections(currentItemIds, _pendingItemIds)) { return; } if (currentItemIds != null) { List <CouponItem> couponItems = new List <CouponItem>(CouponItem.GetAll(ActiveCoupon.Id)); // Remove any in current, that doesn't exist in pending foreach (CouponItem existing in from id in currentItemIds where _pendingItemIds == null || !_pendingItemIds.Any(testId => testId == id) select CouponItem.FindByItemId(couponItems, id)) { CouponItem.Delete(existing.Id); } } // Add any missing pending to the current if (_pendingItemIds != null) { foreach (int id in _pendingItemIds .Where(id => !(currentItemIds != null && currentItemIds.Any(testId => testId == id)))) { // Add a new CouponCategory for this Coupon CouponItem.Add(ActiveCoupon.Id, id); } } }
public IHttpActionResult Create(OrderCM cm) { try { Order model = AutoMapper.Mapper.Map <OrderCM, Order>(cm); model.OrderDate = DateTime.Now.ToUniversalTime() .AddHours(ConstantDataManager.WorldTime.VIETNAM); model.Status = ConstantDataManager.OrderStatus.PENDING; model.UserId = CURRENT_USER_ID; _orderService.CreateOrder(model); _orderService.SaveOrderChanges(); foreach (int couponItemId in cm.CouponItemIds) { CouponItem coupon = _couponItemService.GetCouponItem(couponItemId); coupon.OrderId = model.Id; coupon.IsUsed = true; _couponItemService.UpdateCouponItem(coupon); _couponItemService.SaveCouponItemChanges(); } model = _orderService.GetOrder(o => o.Id == model.Id, o => o.CouponItems, o => o.OrderDetails); OrderVM result = AutoMapper.Mapper.Map <Order, OrderVM>(model); return(Ok(result)); } catch (Exception e) { return(InternalServerError(e)); } }
private bool HasRestrictions(Coupon coupon, TicketItem ticketItem) { Item item = Item.Get(ticketItem.ItemId); // Coupon Category Restrictions List <CouponCategory> cats = new List <CouponCategory>(CouponCategory.GetAll(coupon.Id)); if ((cats.Count > 0) && coupon.IsExclusive && CouponCategory.FindByCategoryId(cats, item.CategoryId) == null) { return(true); } if ((cats.Count > 0) && !coupon.IsExclusive && CouponCategory.FindByCategoryId(cats, item.CategoryId) != null) { return(true); } // Coupon Item Restrictions List <CouponItem> items = new List <CouponItem>(CouponItem.GetAll(coupon.Id)); if ((items.Count > 0) && coupon.IsExclusive && CouponItem.FindByItemId(items, item.Id) == null) { return(true); } if ((items.Count > 0) && !coupon.IsExclusive && CouponItem.FindByItemId(items, item.Id) != null) { return(true); } return(false); }
public async Task <IActionResult> PutCouponItem(long id, CouponItem CouponItem) { if (id != CouponItem.Id) { return(BadRequest()); } _context.Entry(CouponItem).State = EntityState.Modified; try { SetWinningCoupon(CouponItem); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!CouponItemExists(id)) { return(NotFound()); } else { throw; } } return(NoContent()); }
public IHttpActionResult Update(OrderUM um) { try { Order model = AutoMapper.Mapper.Map <OrderUM, Order>(um); _orderService.UpdateOrder(model); _orderService.SaveOrderChanges(); foreach (int couponItemId in um.CouponItemIds) { CouponItem coupon = _couponItemService.GetCouponItem(couponItemId); coupon.OrderId = model.Id; coupon.IsUsed = true; _couponItemService.UpdateCouponItem(coupon); _couponItemService.SaveCouponItemChanges(); } OrderVM result = AutoMapper.Mapper.Map <Order, OrderVM>(model); return(Ok(result)); } catch (Exception e) { return(InternalServerError(e)); } }
/// <inheritdoc /> /// <summary> /// Create a coupon item SKUs have to be unique in the entire store. <br><br><b>Permissions Needed:</b> COUPONS_ADMIN /// </summary> /// <param name="cascade">Whether to cascade group changes, such as in the limited gettable behavior. A 400 error will return otherwise if the group is already in use with different values.</param> /// <param name="couponItem">The coupon item object</param> public void CreateCouponItem(bool?cascade, CouponItem couponItem) { mWebCallEvent.WebPath = "/store/coupons"; if (!string.IsNullOrEmpty(mWebCallEvent.WebPath)) { mWebCallEvent.WebPath = mWebCallEvent.WebPath.Replace("{format}", "json"); } mWebCallEvent.HeaderParams.Clear(); mWebCallEvent.QueryParams.Clear(); mWebCallEvent.AuthSettings.Clear(); mWebCallEvent.PostBody = null; if (cascade != null) { mWebCallEvent.QueryParams["cascade"] = KnetikClient.ParameterToString(cascade); } mWebCallEvent.PostBody = KnetikClient.Serialize(couponItem); // http body (model) parameter // authentication settings mWebCallEvent.AuthSettings.Add("oauth2_client_credentials_grant"); // authentication settings mWebCallEvent.AuthSettings.Add("oauth2_password_grant"); // make the HTTP request mCreateCouponItemStartTime = DateTime.Now; mWebCallEvent.Context = mCreateCouponItemResponseContext; mWebCallEvent.RequestType = KnetikRequestType.POST; KnetikLogger.LogRequest(mCreateCouponItemStartTime, "CreateCouponItem", "Sending server request..."); KnetikGlobalEventSystem.Publish(mWebCallEvent); }
protected void BtnCoupon_Click(object sender, EventArgs e) { if (this.Page.IsValid) { CouponItemInfo couponItemInfo = CouponItem.GetCouponItemInfo(this.TxtCouponNum.Text, PEContext.Current.User.UserId); if (couponItemInfo.IsNull) { this.LblUseCouponMsg.Text = "对不起,不存在该优惠券,或者该优惠券您没有使用权限!"; } else { decimal totalMoney = DataConverter.CDecimal(this.HdnTotalMoney.Value); CouponInfo couponInfoById = Coupon.GetCouponInfoById(couponItemInfo.CouponId); string str = ""; switch (Coupon.CheckUsePurview(couponInfoById, couponItemInfo, totalMoney, this.FlowInfo.ShoppingCartId)) { case 1: str = "对不起,该优惠券使用次数已经超过限用次数,不能再使用!"; break; case 2: str = "对不起,该优惠券已经过期,不能再使用!"; break; case 3: str = "对不起,使用该优惠券需要订单总额达到" + couponInfoById.OrderTotalMoney.ToString("0.00") + "元!"; break; case 4: case 5: str = "对不起,需购买指定的商品才能使用该优惠券!"; break; } if (!string.IsNullOrEmpty(str)) { this.LblUseCouponMsg.Text = str; } else { this.LblUseCouponMsg.Text = "使用" + couponInfoById.CouponName + ",面值为" + couponInfoById.Money.ToString("0.00") + "元"; this.LblUseCouponMsg.ForeColor = Color.Blue; this.ShoppingCart1.CouponMoney = couponInfoById.Money; this.LbtnCancelCoupon.Visible = true; this.HdnCouponID.Value = couponInfoById.CouponId.ToString(); } } this.ShoppingCart1.UseCoupon = true; this.ShoppingCart1.CartId = this.FlowInfo.ShoppingCartId; this.ShoppingCart1.ZipCode = this.FlowInfo.ZipCode; this.ShoppingCart1.PaymentType = this.FlowInfo.PaymentType; this.ShoppingCart1.DeliverType = this.FlowInfo.DeliverType; this.ShoppingCart1.NeedInvoice = this.FlowInfo.NeedInvoice; } }
private void UpdateCoupon() { if (editorControl.UpdateCoupon()) { SetEditMode(false); if (listBox1.SelectedIndex >= 0) { var item = (FormattedListBoxItem)listBox1.SelectedItem; item.Set(editorControl.ActiveCoupon, editorControl.ActiveCoupon.Description); } else { var listItem = new FormattedListBoxItem( editorControl.ActiveCoupon, editorControl.ActiveCoupon.Description, true); listBox1.Items.Add(listItem); listBox1.SelectedItem = listItem; listBox1.ScrollIntoView(listItem); buttonDelete.IsEnabled = true; } } if (editorControl.ActiveCoupon != null) { var couponCategories = new List <CouponCategory>(CouponCategory.GetAll(editorControl.ActiveCoupon.Id)); foreach (int id in editorControl.couponCategorySelectionControl.SelectedCategoryIds .Where(id => CouponCategory.FindByCategoryId(couponCategories, id) == null)) { CouponCategory.Add(editorControl.ActiveCoupon.Id, id); } foreach (CouponCategory category in couponCategories .Where(category => !editorControl.couponCategorySelectionControl.SelectedCategoryIds .Contains(category.CategoryId))) { CouponCategory.Delete(editorControl.ActiveCoupon.Id, category.CategoryId); } var couponItems = new List <CouponItem>(CouponItem.GetAll(editorControl.ActiveCoupon.Id)); foreach (int id in editorControl.couponItemSelectionControl.SelectedItemIds .Where(id => CouponItem.FindByItemId(couponItems, id) == null)) { CouponItem.Add(editorControl.ActiveCoupon.Id, id); } foreach (CouponItem item in couponItems .Where(item => !editorControl.couponCategorySelectionControl.SelectedCategoryIds .Contains(item.ItemId))) { CouponItem.Delete(editorControl.ActiveCoupon.Id, item.ItemId); } } }
private static void SetWinningCoupon(CouponItem CouponItem) { switch (CouponItem.Code) { case "1087": case "2007": case "3151": case "4847": case "7295": CouponItem.Win = true; break; } }
public async Task <ActionResult <CouponItem> > PostCouponItem(CouponItem CouponItem) { if (string.IsNullOrEmpty(CouponItem.Name) || string.IsNullOrEmpty(CouponItem.Code)) { return(null); } SetWinningCoupon(CouponItem); _context.CouponItems.Add(CouponItem); await _context.SaveChangesAsync(); return(CreatedAtAction(nameof(GetCouponItem), new { id = CouponItem.Id }, CouponItem)); }
/// <summary> /// Adds a coupon to an existing basket. /// </summary> /// <param name="basketId">A String value containing the basket ID.</param> /// <param name="couponItem">A CouponItem document instance containing the coupon.</param> /// <returns>A Basket document instance containing the updated basket.</returns> /// <exception cref="ArgumentNullException">Thrown when <paramref name="basketId"/> is null or empty.</exception> /// <exception cref="ApiException">Thrown when a <see cref="Fault"/> document is returned.</exception> public Basket AddCouponItem(string basketId, CouponItem couponItem) { if (string.IsNullOrEmpty(basketId)) { throw new ArgumentNullException(nameof(basketId), Properties.Resources.Error_Missing_Basket_ID); } var couponUrl = $"{Configuration.ShopApiConfiguration.Url}{BASE_PATH}{basketId}/coupons"; var headers = GetWebHeaders(couponUrl, GetOcapiJwtToken()); var couponResponse = ServiceManager.HttpPost <Basket>(couponUrl, headers, GetBytes(couponItem)); return(couponResponse); }
public IHttpActionResult Create(UserCouponPackageCM cm) { try { UserCouponPackage model = AutoMapper.Mapper.Map <UserCouponPackageCM, UserCouponPackage>(cm); model.PurchasedDate = DateTime.Now; // Get Current time model.UserId = CURRENT_USER_ID; CouponPackage package = _couponPackageService.GetCouponPackage(model.CouponPackageId); // set user package property model.DrinkQuantity = package.DrinkQuantity; model.Price = package.Price; // Current hour, minute, second int cHour = model.PurchasedDate.Hour; int cMinute = model.PurchasedDate.Minute; int cSecond = model.PurchasedDate.Second; // CREATE 30 coupon item for this user package model.CouponItems = new List <CouponItem>(); for (int i = 0; i < 30; i++) { CouponItem newCouponItem = new CouponItem() { IsUsed = false, DateExpired = model.PurchasedDate.AddDays(i) .AddHours(24 - cHour - 1) .AddMinutes(60 - cMinute - 1) .AddSeconds(60 - cSecond - 1), OrderId = null }; model.CouponItems.Add(newCouponItem); } // CREATE USER PACKAGE _userCouponPackageService.CreateUserCouponPackage(model); _userCouponPackageService.SaveUserCouponPackageChanges(); UserCouponPackageVM result = AutoMapper.Mapper.Map <UserCouponPackage, UserCouponPackageVM>(model); return(Ok(result)); } catch (Exception e) { return(InternalServerError(e)); } }
private int[] GetItemIds() { if (ActiveCoupon == null) { return(null); } List <int> selected = CouponItem.GetAll(ActiveCoupon.Id) .Select(item => item.ItemId).ToList(); if (selected.Count == 0) { return(null); } selected.Sort(); return(selected.ToArray()); }
public IHttpActionResult Create(UserCouponPackageCM cm) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } try { UserCouponPackage model = AutoMapper.Mapper.Map <UserCouponPackageCM, UserCouponPackage>(cm); model.CouponItems = new List <CouponItem>(); model.PurchasedDate = DateTime.Now; // Current hour, minute, second int cHour = model.PurchasedDate.Hour; int cMinute = model.PurchasedDate.Minute; int cSecond = model.PurchasedDate.Second; // CREATE 30 coupon item for this user package for (int i = 1; i <= 30; i++) { CouponItem newCouponItem = new CouponItem() { IsUsed = false, DateExpired = model.PurchasedDate.AddDays(i) .AddHours(24 - cHour - 1) .AddMinutes(60 - cMinute - 1) .AddSeconds(60 - cSecond - 1), OrderId = null }; model.CouponItems.Add(newCouponItem); } // CREATE USER PACKAGE _userCouponPackageService.CreateUserCouponPackage(model); _userCouponPackageService.SaveUserCouponPackageChanges(); UserCouponPackageVM result = AutoMapper.Mapper.Map <UserCouponPackage, UserCouponPackageVM>(model); return(Ok(result)); } catch (Exception e) { return(InternalServerError(e)); } }
/// <inheritdoc /> /// <summary> /// Update a coupon item <b>Permissions Needed:</b> COUPONS_ADMIN /// </summary> /// <param name="id">The id of the coupon</param> /// <param name="cascade">Whether to cascade group changes, such as in the limited gettable behavior. A 400 error will return otherwise if the group is already in use with different values.</param> /// <param name="couponItem">The coupon item object</param> public void UpdateCouponItem(int?id, bool?cascade, CouponItem couponItem) { // verify the required parameter 'id' is set if (id == null) { throw new KnetikException(400, "Missing required parameter 'id' when calling UpdateCouponItem"); } mWebCallEvent.WebPath = "/store/coupons/{id}"; if (!string.IsNullOrEmpty(mWebCallEvent.WebPath)) { mWebCallEvent.WebPath = mWebCallEvent.WebPath.Replace("{format}", "json"); } mWebCallEvent.WebPath = mWebCallEvent.WebPath.Replace("{" + "id" + "}", KnetikClient.ParameterToString(id)); mWebCallEvent.HeaderParams.Clear(); mWebCallEvent.QueryParams.Clear(); mWebCallEvent.AuthSettings.Clear(); mWebCallEvent.PostBody = null; if (cascade != null) { mWebCallEvent.QueryParams["cascade"] = KnetikClient.ParameterToString(cascade); } mWebCallEvent.PostBody = KnetikClient.Serialize(couponItem); // http body (model) parameter // authentication settings mWebCallEvent.AuthSettings.Add("oauth2_client_credentials_grant"); // authentication settings mWebCallEvent.AuthSettings.Add("oauth2_password_grant"); // make the HTTP request mUpdateCouponItemStartTime = DateTime.Now; mWebCallEvent.Context = mUpdateCouponItemResponseContext; mWebCallEvent.RequestType = KnetikRequestType.PUT; KnetikLogger.LogRequest(mUpdateCouponItemStartTime, "UpdateCouponItem", "Sending server request..."); KnetikGlobalEventSystem.Publish(mWebCallEvent); }
public static void parseUtl_market(string url, UrlItem urlItem) { string redirectUrl = ApiUtil.redictUrl(url); if (!string.IsNullOrEmpty(redirectUrl)) { string me = StringUtil.subString(redirectUrl, 0, "me=", "&pid="); if (!string.IsNullOrEmpty(me)) { string str = "https://uland.taobao.com/cp/coupon?me={me}"; str = str.Replace("{me}", me); WebClient webClient = new WebClient(); webClient.Headers.Add("Accept", "*/*"); webClient.Headers.Add("X-Requested-With", "XMLHttpRequest"); webClient.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36"); webClient.Headers.Add("Accept-Encoding", "gzip, deflate, sdch"); webClient.Headers.Add("Accept-Language", "zh-CN,zh;q=0.8"); webClient.Headers.Add("Referer", url); //webClient.Headers.Add("Cookie", string.Concat("thw=cn; ctoken=", string_3)); string str2 = ""; byte[] numArray = webClient.DownloadData(str); str2 = (!"gzip".Equals(webClient.ResponseHeaders["Content-Encoding"]) ? Encoding.UTF8.GetString(numArray) : StringUtil.byte_to_str(numArray, Encoding.UTF8)); string str3 = StringUtil.subString(str2, 0, "\"title\":\"", "\","); string str4 = StringUtil.subString(str2, 0, "\"discountPrice\":", ","); string str5 = StringUtil.subString(str2, 0, "\"amount\":", ","); string[] strArrays = new string[] { str3, "原价", str4, "元,抢券立省", str5, "元" }; string num_iid = StringUtil.subString(str2, 0, "\"itemId\":", ","); urlItem.num_iid = num_iid; string money = StringUtil.subString(str2, 0, "\"amount\":", ","); CouponItem couponItem = new CouponItem(); couponItem.money = (int)double.Parse(money); couponItem.leftCount = 100000; urlItem.couponItem = couponItem; } } }
protected void BtnSubmitOrder_Click(object sender, EventArgs e) { OrderFlowInfo flowInfo = this.FlowInfo; flowInfo.OrderId = Order.GetMaxId() + 1; flowInfo.BeginDate = DateTime.Today; UserInfo usersByUserName = Users.GetUsersByUserName(PEContext.Current.User.UserName); int category = PaymentType.GetPaymentTypeById(DataConverter.CLng(this.HdnPaymentTypeId.Value)).Category; int couponId = DataConverter.CLng(this.HdnCouponID.Value); switch (Order.Add(flowInfo, usersByUserName, flowInfo.ShoppingCartId, couponId, this.ShoppingCart1.TrueTotalMoney)) { case 1: case 2: { string continueBuy = SiteConfig.ShopConfig.ContinueBuy; if (string.IsNullOrEmpty(continueBuy)) { continueBuy = "~/Category.aspx?id=4"; } DynamicPage.WriteErrMsg("<li>您好!目前您的购物车中没有任何商品,点击返回上一页继续购物?</li>", continueBuy); return; } case 0x63: if (couponId > 0) { CouponItem.AddUseTimes(this.TxtCouponNum.Text, PEContext.Current.User.UserId); } switch (category) { case 1: base.Response.Redirect("../PayOnline/PayOnline.aspx?AddOrder=success&OrderID=" + flowInfo.OrderId.ToString() + "&PayPlatformId=" + this.HdnPayPlatformId.Value); return; } base.Response.Redirect("OrderSuccess.aspx?OrderID=" + flowInfo.OrderId.ToString()); return; } }
public static CouponItem get_coupon(string coupon_url, String num_iid, String pid, out string money) { money = ""; CouponItem class2 = null; if (!(coupon_url.Contains("coupon") && coupon_url.Contains("taobao.com"))) { coupon_url = get_redirect_url(coupon_url, coupon_url); } coupon_url = HttpUtility.UrlDecode(coupon_url); coupon_url = coupon_url.Replace("seller_id=", "sellerId=").Replace("activity_id=", "activityId="); string seller_id = StringUtil.subString(coupon_url, 0, "sellerId=", "&"); string activity_id = StringUtil.subString(coupon_url, 0, "activityId=", "&"); if (!string.IsNullOrEmpty(seller_id) && !string.IsNullOrEmpty(activity_id) && !string.IsNullOrEmpty(num_iid) && !string.IsNullOrEmpty(pid)) { class2 = new CouponItem(); string out_log; string ctoken = AlimamaUtil.smethod_61(activity_id, num_iid, pid, "1", out out_log); string str1 = AlimamaUtil.smethod_62(ctoken, activity_id, num_iid, pid, "1", out out_log, out money); try { class2.money = (int)double.Parse(money); class2.leftCount = 100000; } catch { class2.money = 0; } return(class2); } string str3 = "http://shop.m.taobao.com/shop/coupon.htm?seller_id={seller_id}&activity_id={activity_id}"; string address = str3.Replace("{seller_id}", seller_id).Replace("{activity_id}", activity_id); WebClient client = new WebClient(); client.Headers.Add("user-agent", "Mozilla/5.0 (iPad; U; CPU OS 3_2_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B500 Safari/531.21.10"); byte[] buffer = client.DownloadData(address); string str5 = ""; string str6 = client.ResponseHeaders["Content-Encoding"]; if ("gzip".Equals(str6)) { str5 = GzipUtil.zip_to_string(buffer, Encoding.UTF8); } else { str5 = Encoding.UTF8.GetString(buffer); } class2 = new CouponItem(); if (!str5.Contains("该优惠券不存在或者已经过期")) { int index = str5.IndexOf("元优惠券"); int length = 1; while (regex_0.IsMatch(str5.Substring(index - length, length))) { length++; } length--; try { class2.money = int.Parse(str5.Substring(index - length, length)); } catch { class2.money = 0; } try { class2.leftCount = int.Parse(StringUtil.subString(str5, 0, "<span class=\"rest\">", "</span>")); } catch { class2.leftCount = 0; } try { class2.receiveCount = int.Parse(StringUtil.subString(str5, 0, "<span class=\"count\">", "</span>")); } catch { class2.receiveCount = 0; } class2.endTime = StringUtil.subString(str5, 0, "<dd>有效期:", "</dd>"); } return(class2); }
private int[] GetItemIds(Coupon value) { return(CouponItem.GetAll(value.Id).Select(item => item.ItemId).ToArray()); }
private void InitializeAvailableCoupons() { List <Coupon> allCoupons = new List <Coupon>(Coupon.GetAll()); List <CouponCategory> allCategories = new List <CouponCategory>(CouponCategory.GetAll()); List <CouponItem> allItems = new List <CouponItem>(CouponItem.GetAll()); listBoxAvailable.Items.Clear(); foreach (Coupon coupon in allCoupons) { if (!coupon.IsActive) { continue; } List <CouponCategory> couponCategories = new List <CouponCategory>(CouponCategory.FindAllByCouponId(allCategories, coupon.Id)); List <CouponItem> couponItems = new List <CouponItem>(CouponItem.FindAllByCouponId(allItems, coupon.Id)); // Check for applied coupons and exclude them if ((from FormattedListBoxItem item in listBoxApplied.Items select(Coupon) item.ReferenceObject) .Any(appliedCoupon => appliedCoupon.Id == coupon.Id)) { continue; } // Add applicable coupons bool add = false; if (coupon.ApplyToAll) { add = true; } else if ((SelectedTicketItem == null) && (couponItems.Count == 0) && (couponCategories.Count == 0)) { add = true; } else if (SelectedTicketItem != null) { Category category = Category.Get(SelectedItem.CategoryId); if (coupon.IsExclusive) { HasRestrictions(coupon, SelectedTicketItem); if (couponItems.Any(couponItem => SelectedTicketItem.ItemId == couponItem.ItemId)) { add = true; } if (couponCategories.Any(couponCategory => category.Id == couponCategory.CategoryId)) { add = true; } } else { bool found = couponItems.Any(couponItem => SelectedTicketItem.ItemId == couponItem.ItemId) || couponCategories.Any(couponCategory => category.Id == couponCategory.CategoryId); if (!found) { add = true; } } } if (add) { AddAvailable(coupon); } } }