Ejemplo n.º 1
0
        public IResponse <NoValue> AddUserVoucher(UserVoucherCreateModel model)
        {
            Logger.Message($"AddUserVoucher(UserID: {model.UserID}, VoucherID: {model.VoucherID}, OfferID: {model.OfferID})");

            var result  = new Response <NoValue>();
            var voucher = _uow.Vouchers.Get(model.VoucherID);
            var user    = _uow.Users.Get(model.UserID);

            if (voucher.PointCost > user.PointBalance)
            {
                result.Message = Message.NotEnoughtPoints;
                result.Status  = Status.Error;
                Logger.Error(Message.NotEnoughtPoints);
            }
            else
            {
                try
                {
                    var date = DateTime.Compare(voucher.ExpirationDate, voucher.Offer.DateTo);

                    var userVoucher = new UserVoucher
                    {
                        Code       = user.UserID + DateTime.Now.ToString("yyyyMMddHHmmss") + voucher.Code,
                        OfferID    = model.OfferID,
                        VoucherID  = model.VoucherID,
                        UserID     = model.UserID,
                        ValidFrom  = voucher.Offer.DateFrom,
                        ValidTo    = (date < 1) ? voucher.ExpirationDate : voucher.Offer.DateTo,
                        RedeemDate = DateTime.UtcNow,
                        Valid      = true
                    };

                    _uow.UserVouchers.Add(userVoucher);
                    user.PointBalance = user.PointBalance - voucher.PointCost;
                    _uow.Complete();
                    result.Status = Status.Success;
                }
                catch (Exception ex)
                {
                    result.Message = Message.SomethingWrongError;
                    result.Status  = Status.Error;
                    Logger.ErrorWithException(ex);
                }
            }
            return(result);
        }
Ejemplo n.º 2
0
        public ActionResult CreateUserVoucher(UserVoucherCreateModel model)
        {
            IResponse <NoValue> result = _userManager.AddUserVoucher(model);

            return(Json(result));
        }