public virtual JsonResult SubmitChange(AddDiscountModel model)
        {
            if (model.DiscountType == 0)
            {
                return(Json(new ActionResponse <bool> {
                    Message = LocalMessage.InvalidDiscountType
                }, JsonRequestBehavior.AllowGet));
            }

            if (model.CodeType == 0)
            {
                return(Json(new ActionResponse <bool> {
                    Message = LocalMessage.InvalidCodeType
                }, JsonRequestBehavior.AllowGet));
            }

            if (model.Value == 0)
            {
                return(Json(new ActionResponse <bool> {
                    Message = LocalMessage.InvalidValue
                }, JsonRequestBehavior.AllowGet));
            }

            if (model.Ceiling == 0 && model.DiscountType == DiscountType.PercentageWithCeiling)
            {
                return(Json(new ActionResponse <bool> {
                    Message = LocalMessage.InvalidCelling
                }, JsonRequestBehavior.AllowGet));
            }

            if (model.IsNotNull().And(ModelState.IsValid))
            {
                model.UserId = (User as ICurrentUserPrincipal).UserId;
                return(Json(_discountBusiness.Generate(model), JsonRequestBehavior.AllowGet));
            }

            return(Json(new ActionResponse <bool> {
                Message = LocalMessage.BadRequest
            }, JsonRequestBehavior.AllowGet));
        }
Пример #2
0
        public IActionResponse <bool> Generate(AddDiscountModel model)
        {
            var response = new ActionResponse <bool>();

            if (model.Count <= 0)
            {
                response.Message = BusinessMessage.InvalidCodeCount;
                return(response);
            }

            if (model.CodeLength < 12)
            {
                response.Message = BusinessMessage.TheMinimumNumberOfCharactersIs8;
                return(response);
            }

            int insertedCount = 0;

            while (insertedCount < model.Count)
            {
                using (var dbContextTransaction = _uow.Database.BeginTransaction())
                {
                    try
                    {
                        int tempCount = model.Count - insertedCount;
                        for (int i = 1; i <= (tempCount >= 50 ? 50 : tempCount); i++)
                        {
                            _discount.Add(new Discount
                            {
                                Ceiling         = model.Ceiling,
                                Code            = model.Code,//GenerateCode(type: model.CodeType),
                                CodeType        = model.CodeType,
                                DiscountType    = model.DiscountType,
                                ForFirstUser    = model.ForFirstUser,
                                UseForOnce      = model.UseForOnce,
                                IsUsed          = false,
                                ValidFromDateMi = PersianDateTime.Parse(model.ValidFromDateSh).ToDateTime(),
                                ValidFromDateSh = model.ValidFromDateSh,
                                ValidToDateMi   = PersianDateTime.Parse(model.ValidToDateSh).ToDateTime(),
                                ValidToDateSh   = model.ValidToDateSh,
                                Value           = model.Value,
                                UserId          = model.UserId,
                            });
                        }

                        var result = _uow.SaveChanges();
                        if (result <= 0)
                        {
                            throw new Exception("Unchange or Error in Operation!");
                        }
                        dbContextTransaction.Commit();
                        insertedCount += (tempCount >= 50 ? 50 : tempCount);
                    }
                    catch (Exception e)
                    {
                        dbContextTransaction.Rollback();
                        FileLoger.Error(e);
                    }
                }
            }

            response.IsSuccessful = response.Result = (insertedCount == model.Count);
            response.Message      = response.IsSuccessful ? BusinessMessage.Success : BusinessMessage.Error;
            return(response);
        }