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); }
public ActionResult CreateUserVoucher(UserVoucherCreateModel model) { IResponse <NoValue> result = _userManager.AddUserVoucher(model); return(Json(result)); }