Exemplo n.º 1
0
 public void ApplyCoupon(string coupon)
 {
     CouponCode.SetText(coupon);
     ApplyCouponButton.Click();
     MessageAlert.ToHasContent().ToBeVisible().WaitToBe();
     MessageAlert.ValidateInnerTextIs(CouponSuccessfullyAdded);
 }
        public async Task <ActionResult <CouponCode> > PostCouponCode(CouponCode couponCode)
        {
            _context.CouponCode.Add(couponCode);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetCouponCode", new { id = couponCode.Id }, couponCode));
        }
        public void valid(string code)
        {
            var cc = new CouponCode(code);

            Assert.Equal(code, cc.Value);
            Assert.Equal(code, cc.ToString());
        }
Exemplo n.º 4
0
        public async Task <IActionResult> ApplyCoupon(string couponCode)
        {
            try
            {
                if (string.IsNullOrEmpty(couponCode))
                {
                    ModelState.AddModelError("", "Please enter coupon code to continue");
                }
                else
                {
                    CouponCode cp = await couponDAL.FindCouponByCodeAsync(couponCode);

                    if (cp == null) // if coupon code is not found or outdated
                    {
                        ModelState.AddModelError("", "Coupon Code " + couponCode.ToUpper() + " is not existed or out of date");
                        // if there was old coupon code, leave it remain in cart
                    }
                    else
                    {
                        cart.ApplyCoupon(couponCode);
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            catch (Exception ex)
            {
                logger.Error(ex.Message);
                throw;
            }
        }
        public async Task <IActionResult> PutCouponCode(int id, CouponCode couponCode)
        {
            if (id != couponCode.Id)
            {
                return(BadRequest());
            }

            _context.Entry(couponCode).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!CouponCodeExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
Exemplo n.º 6
0
        private static void ProcessEachForRigister(Coupon master)
        {
            //获取注册未发放优惠券的顾客  (实时发)5分钟一次,造优惠券,发给顾客
            string          userType     = "R";
            List <Customer> customerList = CouponDA.GetRegisterUser(userType, master);//获取注册未发放优惠券的顾客

            if (customerList == null || customerList.Count <= 0)
            {
                WriteLog("没能查询到符合条件的用户");
                return;
            }
            WriteLog("查询到新注册的用户" + customerList.Count + "个");

            master.BindStatus = "S";//字段
            CouponDA.UpdateBindRulesStatus(master);
            int    num      = 0;
            string userList = string.Empty;

            foreach (Customer customer in customerList)
            {
                #region CreateCode

                CouponCode codeEntity = new CouponCode();
                codeEntity.CouponSysNo          = master.SysNo;
                codeEntity.CodeType             = "C";
                codeEntity.CustomerMaxFrequency = 1;
                GetCodeExpireDate(master, codeEntity);
                codeEntity = CouponDA.CreateCode(codeEntity);

                #endregion

                CouponCodeCustomerLog logEntity = new CouponCodeCustomerLog();
                logEntity.CouponCode    = codeEntity.Code;
                logEntity.CouponSysNo   = master.SysNo;
                logEntity.CustomerSysNo = customer.CustomerSysNo;
                logEntity.UserCodeType  = userType;
                CouponDA.InsertCustomerLog(logEntity);

                #region sendMail
                MailEntity customerMail = new MailEntity();
                customerMail.MailSubject = master.CouponName;

                if (!string.IsNullOrEmpty(customer.MailAddress) && master.IsSendMail == "Y")
                {
                    customerMail.MailBody = ConstValues.MailTemplate.Replace("@InDate", DateTime.Now.ToString("yyyy-MM-dd"))
                                            .Replace("@CustomerHello@", customer.CustomerID)
                                            .Replace("@CouponCode@", codeEntity.Code)
                                            .Replace("@nums@", "1")
                                            .Replace("@EndDateStr@", codeEntity.EndDate.ToString("yyyy-MM-dd"));

                    customerMail.MailAddress = customer.MailAddress;
                    CouponDA.SendMailInfo(customerMail);
                }
                #endregion
                num++;
                userList += "顾客编号:" + customer.CustomerSysNo + ",顾客ID:" + customer.CustomerID + "\r\n";
            }
            WriteLog(DateTime.Now + "注册送优惠券成功发送" + num + "个顾客,分别是:\r\n" + userList);
        }
        public void ConvertToEntity_CouponCodeNotNull_ReturnSameProducts()
        {
            CreateCouponCodeInput input = MockCreateCouponCodeInput();

            CouponCode couponCode = input.ConvertToEntity();

            Assert.Equal(input.Products, couponCode.Products);
        }
        public void ConvertToEntity_CouponCodeNotNull_ReturnSameMinAmount()
        {
            CreateCouponCodeInput input = MockCreateCouponCodeInput();

            CouponCode couponCode = input.ConvertToEntity();

            Assert.Equal(input.MinAmount, couponCode.MinAmount);
        }
        public void ConvertToEntity_CouponCodeNotNull_ReturnEmplyId()
        {
            CreateCouponCodeInput input = MockCreateCouponCodeInput();

            CouponCode couponCode = input.ConvertToEntity();

            Assert.Equal(Guid.Empty, couponCode.Id);
        }
        public void ConvertToEntity_CouponCodeNotNull_ReturnSameCDateStart()
        {
            CreateCouponCodeInput input = MockCreateCouponCodeInput();

            CouponCode couponCode = input.ConvertToEntity();

            Assert.Equal(input.DateStart, couponCode.DateStart);
        }
        public void ConvertToEntity_CouponCodeNotNull_ReturnSameCode()
        {
            CreateCouponCodeInput input = MockCreateCouponCodeInput();

            CouponCode couponCode = input.ConvertToEntity();

            Assert.Equal(input.Code.ToUpper(), couponCode.Code);
        }
Exemplo n.º 12
0
        public void ConvertToDto_CouponCodeNotNull_ReturnSameSubCategories()
        {
            CouponCode couponCode = MockCouponCode();

            CouponCodeDto couponCodeDto = couponCode.ConvertToDto();

            Assert.Equal(couponCode.SubCategories, couponCodeDto.SubCategories);
        }
Exemplo n.º 13
0
        public void ConvertToDto_CouponCodeNotNull_ReturnSameDateExpire()
        {
            CouponCode couponCode = MockCouponCode();

            CouponCodeDto couponCodeDto = couponCode.ConvertToDto();

            Assert.Equal(couponCode.DateExpire, couponCodeDto.DateExpire);
        }
Exemplo n.º 14
0
 public async Task <ActionResult> Edit(CouponCode cp)
 {
     if (ModelState.IsValid)
     {
         var model = await m_couponCodeManager.UpdateAsync(cp);
     }
     return(RedirectToAction("Index", "CouponCodeAdmin"));
 }
        public async Task <CouponCode> CreateAsync(CouponCode couponCode)
        {
            await this.couponCodeRepository.AddAsync(couponCode);

            await this.couponCodeRepository.SaveChangesAsync();

            return(couponCode);
        }
Exemplo n.º 16
0
        public void ConvertToDto_CouponCodeNotNull_ReturnSameMinAmount()
        {
            CouponCode couponCode = MockCouponCode();

            CouponCodeDto couponCodeDto = couponCode.ConvertToDto();

            Assert.Equal(couponCode.MinAmount, couponCodeDto.MinAmount);
        }
Exemplo n.º 17
0
        public void ConvertToDto_CouponCodeNotNull_ReturnSameProducts()
        {
            CouponCode couponCode = MockCouponCode();

            CouponCodeDto couponCodeDto = couponCode.ConvertToDto();

            Assert.Equal(couponCode.Products, couponCodeDto.Products);
        }
Exemplo n.º 18
0
        public void ConvertToDto_CouponCodeNotNull_ReturnSameId()
        {
            CouponCode couponCode = MockCouponCode();

            CouponCodeDto couponCodeDto = couponCode.ConvertToDto();

            Assert.Equal(couponCode.Id, couponCodeDto.Id);
        }
Exemplo n.º 19
0
        public void ConvertToDto_CouponCodeNotNull_ReturnSameCDateStart()
        {
            CouponCode couponCode = MockCouponCode();

            CouponCodeDto couponCodeDto = couponCode.ConvertToDto();

            Assert.Equal(couponCode.DateStart, couponCodeDto.DateStart);
        }
        public void ConvertToEntity_CouponCodeNotNull_ReturnSameSubCategories()
        {
            CreateCouponCodeInput input = MockCreateCouponCodeInput();

            CouponCode couponCode = input.ConvertToEntity();

            Assert.Equal(input.SubCategories, couponCode.SubCategories);
        }
Exemplo n.º 21
0
        public void ConvertToDto_CouponCodeNotNull_ReturnSameCustomers()
        {
            CouponCode couponCode = MockCouponCode();

            CouponCodeDto couponCodeDto = couponCode.ConvertToDto();

            Assert.Equal(couponCode.Customers, couponCodeDto.Customers);
        }
Exemplo n.º 22
0
        private static void ProcessEachForTBVip_Old(Coupon master)
        {
            string userType = "Z";   //触发条件

            master.BindStatus = "S"; //发放状态


            List <Customer> customerList = CouponDA.GetAlipayCustomer(userType, master);//获取未发放优惠券的顾客

            WriteLog("获取用户数" + customerList.Count + "个");
            if (customerList.Count <= 0)
            {
                WriteLog("没有找到符合条件的支付宝金账户");
            }
            else
            {
                using (TransactionScope ts = new TransactionScope())
                {
                    string message = string.Format("({0}){1} -- ", master.SysNo, master.CouponName);
                    //通用型优惠券代码
                    CouponCode code = CouponDA.QueryBindingCode(master);

                    CouponDA.UpdateBindRulesStatus(master);

                    int    index    = 0;
                    string userList = string.Empty;
                    CouponCodeCustomerLog logEntity = new CouponCodeCustomerLog();
                    logEntity.CouponCode  = code.Code;
                    logEntity.CouponSysNo = master.SysNo;

                    MailEntity customerMail = new MailEntity();
                    customerMail.MailSubject = master.CouponName;
                    foreach (Customer customer in customerList)
                    {
                        logEntity.CustomerSysNo = customer.CustomerSysNo;
                        logEntity.UserCodeType  = userType;
                        CouponDA.InsertCustomerLog(logEntity);

                        if (!string.IsNullOrEmpty(customer.MailAddress) && master.IsSendMail == "Y")
                        {
                            customerMail.MailBody = ConstValues.MailTemplate.Replace("@Title@", master.CouponName)
                                                    .Replace("@CustomerHello@", "您好,感谢您对大昌优品的支持。")
                                                    .Replace("@CouponCode@", code.Code)
                                                    .Replace("@nums@", code.CustomerMaxFrequency.ToString())
                                                    .Replace("@EndDateStr@", code.EndDate.ToString("yyyy-MM-dd"));

                            customerMail.MailAddress = customer.MailAddress;
                            CouponDA.SendMailInfo(customerMail);
                        }
                        ++index;
                        userList += "顾客编号:" + customer.CustomerSysNo + ",顾客ID:" + customer.CustomerID + "\r\n";
                    }

                    WriteLog(DateTime.Now + "支付宝金账户优惠券成功发送" + index + "个顾客,分别是:\r\n" + userList);
                    ts.Complete();
                }
            }
        }
Exemplo n.º 23
0
        /// <summary>
        /// 支付宝金账户发放优惠券
        /// </summary>
        /// <param name="item"></param>
        private static void ProcessEachForTBVip(Coupon master)
        {
            string userType = "Z";   //触发条件

            master.BindStatus = "S"; //发放状态
            List <Customer> customerList = null;

            customerList = CouponDA.GetAlipayCustomer(userType, master);//获取未发放优惠券的顾客
            if (customerList.Count <= 0)
            {
                WriteLog("没有找到符合条件的支付宝金账户");
                return;
            }

            //更新绑定状态为S
            CouponDA.UpdateBindRulesStatus(master);
            int    num      = 0;
            string userList = string.Empty;

            foreach (Customer customer in customerList)
            {
                #region CreateCode

                CouponCode codeEntity = new CouponCode();
                codeEntity.CouponSysNo = master.SysNo;
                GetCodeExpireDate(master, codeEntity);
                codeEntity = CouponDA.CreateCode(codeEntity);

                #endregion

                CouponCodeCustomerLog logEntity = new CouponCodeCustomerLog();
                logEntity.CouponCode    = codeEntity.Code;
                logEntity.CouponSysNo   = master.SysNo;
                logEntity.CustomerSysNo = customer.CustomerSysNo;
                logEntity.UserCodeType  = userType;
                CouponDA.InsertCustomerLog(logEntity);

                #region sendMail
                MailEntity customerMail = new MailEntity();
                customerMail.MailSubject = master.CouponName;

                if (!string.IsNullOrEmpty(customer.MailAddress) && master.IsSendMail == "Y")
                {
                    customerMail.MailBody = ConstValues.MailTemplate.Replace("@InDate", DateTime.Now.ToString("yyyy-MM-dd"))
                                            .Replace("@CustomerHello@", customer.CustomerID)
                                            .Replace("@CouponCode@", codeEntity.Code)
                                            .Replace("@nums@", "1")
                                            .Replace("@EndDateStr@", codeEntity.EndDate.ToString("yyyy-MM-dd"));

                    customerMail.MailAddress = customer.MailAddress;
                    CouponDA.SendMailInfo(customerMail);
                }
                #endregion
                num++;
                userList += "顾客编号:" + customer.CustomerSysNo + ",顾客ID:" + customer.CustomerID + "\r\n";
            }
            WriteLog(DateTime.Now + "支付宝金账户送优惠券成功发送" + num + "个顾客,分别是:\r\n" + userList);
        }
Exemplo n.º 24
0
 /// <summary>
 /// Returns a hash code for this instance.
 /// </summary>
 /// <returns>
 /// A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
 /// </returns>
 public override int GetHashCode()
 {
     unchecked
     {
         int hashCode = CouponCode.GetHashCode();
         hashCode = (hashCode * 397) ^ DiscountId;
         return(hashCode);
     }
 }
Exemplo n.º 25
0
        // 3. These elements are always used together when coupon is applied. There are many test cases where you need to apply different coupons and so on.
        // This way you reuse the code instead of copy-paste it. If there is a change in the way how the coupon is applied, change the workflow only here.
        // Even single line of code is changed in your tests.
        public void ApplyCoupon(string coupon)
        {
            CouponCode.SetText(coupon);
            ApplyCouponButton.Click();
            MessageAlert.ToHasContent().ToBeVisible().WaitToBe();

            // Usually, it is not entirely correct to make assertions inside action methods. However, Validate methods are just waiting for something to happen.
            MessageAlert.ValidateInnerTextIs(CouponSuccessfullyAdded);
        }
Exemplo n.º 26
0
 public void UpdateSimplePropertiesTo(Promotion promotion)
 {
     promotion.Name                = Name.Trim();
     promotion.StartTimeUtc        = StartTime == null ? null : (DateTime?)StartTime.Value.ToUniversalTime();
     promotion.EndTimeUtc          = EndTime == null ? null : (DateTime?)EndTime.Value.ToUniversalTime();
     promotion.RequireCouponCode   = RequireCouponCode;
     promotion.CouponCode          = CouponCode.TrimOrNull();
     promotion.Priority            = Priority;
     promotion.PromotionPolicyName = PromotionPolicy;
     promotion.OverlappingUsage    = OverlappingUsage;
 }
Exemplo n.º 27
0
        public static void CreateCouponCode(CouponCode info, string username)
        {
            DataCommand cmd = DataCommandManager.GetDataCommand("CreateCouponCode");

            cmd.SetParameterValue("@CouponSysNo", info.CouponSysNo);
            cmd.SetParameterValue("@CouponCode", info.Code);
            cmd.SetParameterValue("@CustomerMaxFrequency", info.CustomerMaxFrequency);
            cmd.SetParameterValue("@TotalCount", info.TotalCount);
            cmd.SetParameterValue("@InUser", username);
            cmd.ExecuteNonQuery();
        }
Exemplo n.º 28
0
        public async Task <IActionResult> Index()
        {
            try
            {
                CouponCode cp = null;
                if (!string.IsNullOrEmpty(cart.Coupon?.Code)) // check if cart contains coupon code
                {
                    cp = await couponDAL.FindCouponByCodeAsync(cart.Coupon.Code);

                    if (cp == null) // if coupon code is not found or outdated
                    {
                        ModelState.AddModelError("", "Coupon Code " + cart.Coupon.Code.ToUpper() + " is not existed or out of date");
                        cart.RemoveCoupon(); // remove coupon code from cart
                    }
                    else
                    {
                        cart.Coupon = cp;
                    }
                }
                if (cart.Lines.Count() > 0)
                {
                    foreach (CartLine cartLine in cart.Lines)
                    {
                        Tour tour = await tourDAL.FindTourByTourIdAsync(cartLine.Tour.Id); //find tour which is active

                        if (tour == null || tour.FromDate < DateTime.Now)
                        {
                            ModelState.AddModelError("", "Tour " + cartLine.Tour.Id.ToUpper() + " is not existed or available");
                        }
                        else
                        {
                            cartLine.Tour           = tour;
                            cartLine.Tour.TakenSlot = await tourDAL.GetTakenSlotByTourIdAsync(cartLine.Tour.Id);

                            if ((cartLine.AdultTicket + cartLine.KidTicket) > (cartLine.Tour.MaxGuest - cartLine.Tour.TakenSlot))
                            {
                                ModelState.AddModelError("", "Not enough tickets of tour " + cartLine.Tour.Id.ToUpper());
                            }
                        }
                    }
                }
                CartViewModel model = new CartViewModel
                {
                    Cart = cart
                };
                return(View(model));
            }
            catch (Exception ex)
            {
                logger.Error(ex.Message);
                throw;
            }
        }
Exemplo n.º 29
0
 public async Task AddCouponCode(CouponCode code)
 {
     try
     {
         await _context.CouponCodes.InsertOneAsync(code);
     }
     catch (Exception ex)
     {
         // log or manage the exception
         throw ex;
     }
 }
Exemplo n.º 30
0
        /// <summary>
        /// 插入优惠券码
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        public static int InsertCouponCode(int customerSysNo, CouponCode entity)
        {
            DataCommand command = DataCommandManager.GetDataCommand("Coupon_InsertCouponCode");

            command.SetParameterValue("@CouponSysNo", entity.CouponSysNo);
            command.SetParameterValue("@CouponCode", entity.Code);
            command.SetParameterValue("@CodeType", entity.CodeType);
            command.SetParameterValue("@BeginDate", entity.BeginDate);
            command.SetParameterValue("@EndDate", entity.EndDate);
            command.SetParameterValue("@InUser", customerSysNo);
            command.ExecuteNonQuery();
            return((int)command.GetParameterValue("SysNo"));
        }