/// <summary> /// CalculateAsync /// </summary> /// <param name="calculateCartCommand"></param> /// <returns></returns> public CalculatedCart CalculateCart(CalculateCartCommand calculateCartCommand) { try { CalculatedCart cart = null; cart = AsyncHelper.RunSync(() => _service.CartResource.CalculateAsync(calculateCartCommand)); return(cart); } catch (ApiException ex) { if (ex != null && !string.IsNullOrWhiteSpace(ex.Code) && ex.Code == "ServiceRedirect") { ServiceURLHelper.IsbLoyalServiceUrlDown = true; apiException = new APIExceptions { ErrorCode = ex.Code, ErrorDescription = "A bLoyal error occurred. Please restart your Workstation and try again.", ErrorApi = "CalculateAsync" }; } _logger.WriteLogError(ex, "LoyaltyEngineServices CalculateCartAsync"); return(null); } catch (Exception ex) { _logger.WriteLogError(ex, "LoyaltyEngineServices CalculateCartAsync"); return(null); } }
/// <summary> /// return CalculateCartCommand obj /// </summary> /// <param name="cartExternalId"></param> /// <param name="cart"></param> /// <param name="objwsMenuItem"></param> /// <returns></returns> private CalculateCartCommand CalculateCart(string cartExternalId, CalculatedCart cart, wsMenuItem[] objwsMenuItem) { CalculateCartCommand calculateCartCommand = null; try { var calculateCart = SalesTransactionLines(cartExternalId, objwsMenuItem, cart); if (calculateCart != null) { calculateCartCommand = new CalculateCartCommand { Cart = calculateCart.Cart, ReferenceNumber = calculateCart.Cart.Uid.ToString(), Uid = Guid.NewGuid() }; } return(calculateCartCommand); } catch (Exception ex) { _logger.WriteLogError(ex, "CalculateTransaction CalculateCart"); return(null); } }
/// <summary> /// Create a CartUid /// </summary> /// <returns></returns> public string CreateCart() { try { var cart = new Cart { Customer = new Customer(), Lines = new List <CartLine>() }; var request = new CalculateCartCommand() { Cart = cart, CouponCodes = new List <string>() }; var calculatedCart = CalculateCartAsync(request); if (calculatedCart != null && calculatedCart.Cart != null) { return(calculatedCart.Cart.Uid.ToString()); } } catch (Exception ex) { logger.WriteLogError("**** LoyaltyEngineServices FAILURE: CreateCartUid Exception Error= " + ex.Message); if (ex.InnerException != null) { logger.WriteLogError("**** InnerException = " + ex.InnerException.Message); } } return(string.Empty); }
/// <summary> /// Payment Refund /// </summary> /// <param name="ticketId"></param> /// <param name="amount"></param> /// <param name="refundPayment"></param> /// <param name="payment"></param> /// <returns></returns> private async Task <bool> PaymentRefundAsync(int ticketId, decimal amount, bool refundPayment, Dinerware.Payment payment) { try { var cart = await _services.GetCartBySourceExternalIdAsync(ticketId.ToString()).ConfigureAwait(true); if (cart != null && cart.Cart != null && cart.Cart.Payments != null && cart.Cart.Payments.Any()) { var paymentRef = cart.Cart.Payments.ToList().Find(t => t.Amount.Equals(amount) && t.TransactionCode.Equals(payment.AuthNum)); if (paymentRef != null && !string.IsNullOrWhiteSpace(paymentRef.TransactionCode)) { if (refundPayment) { if (!string.IsNullOrWhiteSpace(_paymentEngine.CardRefund(paymentRef.TransactionCode, ticketId.ToString(), amount))) { cart.Cart.Payments.Remove(paymentRef); //Suppose - if we have two payment method with same amount, we need to remove Refunded payment. - because it always find first one var request = new CalculateCartCommand() { Cart = cart.Cart }; _services.CalculateCart(request); } } refundPayment = false; } } } catch (Exception ex) { _logger.WriteLogError(ex, "Refund bLoyal Tenders - PaymentRefund"); } return(refundPayment); }
/// <summary> /// Add GiftCarNumber in Cart /// </summary> /// <param name="transCode"></param> /// <param name="applyBalance"></param> /// <param name="giftCardNumber"></param> /// <param name="ticketId"></param> /// <returns></returns> public async Task <CalculatedCart> AddGiftCardPaymentTransactionAsync(string transCode = "", decimal applyBalance = 0, string giftCardNumber = "", string ticketId = "", IList <CartLine> lines = null) { CalculatedCart calculatedCart = null; CalculateCartCommand request = null; try { calculatedCart = await GetCartBySourceExternalIdAsync(ticketId.ToString()).ConfigureAwait(true); var payment = new CartPayment { Amount = applyBalance, TransactionCode = transCode }; if (calculatedCart != null && calculatedCart.Cart != null) { if (calculatedCart.Cart.Payments != null && calculatedCart.Cart.Payments.Any()) { calculatedCart.Cart.Payments.Add(payment); } else { calculatedCart.Cart.Payments = new List <CartPayment>(); calculatedCart.Cart.Payments.Add(payment); } request = new CalculateCartCommand() { Cart = calculatedCart.Cart, Uid = calculatedCart.Cart.Uid }; } else { var cart = new Cart { Lines = new List <CartLine>(), SourceExternalId = ticketId, Payments = new List <CartPayment>() }; if (lines != null && lines.Any()) { cart.Lines = lines; } cart.Payments.Add(payment); request = new CalculateCartCommand() { Cart = cart }; } if (request != null) { calculatedCart = CalculateCart(request); } } catch (Exception ex) { _logger.WriteLogError(ex, "LoyaltyEngineServices AddGiftCarNumberInCart"); } return(calculatedCart); }
/// <summary> /// RemoveItem /// </summary> /// <param name="theInfo"></param> /// <param name="targetTicket"></param> /// <param name="targetItem"></param> public void removeItem(IDisplayActions.displayActionInfo theInfo, Ticket targetTicket, MenuItem targetItem) { try { if (!ConfigurationHelper.Instance.IS_Test_Virtual_Client_Connection || !ConfigurationHelper.Instance.IS_Test_BLoyal_Connection) { return; } if (_configurationHelper != null && _configurationHelper.ENABLE_bLOYAL && targetItem != null && _configurationHelper.LOAD_GIFTCARD_ITEMS != null && _configurationHelper.LOAD_GIFTCARD_ITEMS.Any()) { RefreshTicket(targetTicket); UpdateTicketDictionary(_ticketId); var loadGiftCardItem = _configurationHelper.LOAD_GIFTCARD_ITEMS.Find(t => t.Equals(targetItem.ItemName, StringComparison.InvariantCultureIgnoreCase)); if (!string.IsNullOrWhiteSpace(loadGiftCardItem)) { var service = new LoyaltyEngineServices(); var calculatedCart = AsyncHelper.RunSync(() => service.GetCartBySourceExternalIdAsync(_targetTicket.ID)); if (calculatedCart != null && calculatedCart.Cart != null && calculatedCart.Cart.Lines != null && calculatedCart.Cart.Lines.Any()) { var lines = calculatedCart.Cart.Lines; var giftCartLine = calculatedCart.Cart.Lines.ToList().Find(t => t.ProductName.Equals(loadGiftCardItem, StringComparison.InvariantCultureIgnoreCase) && !string.IsNullOrWhiteSpace(t.GiftCardNumber) && t.ProductExternalId.Equals(targetItem.TIID)); if (giftCartLine != null && giftCartLine.GiftCardAmount.HasValue && giftCartLine.GiftCardAmount.Value > 0) { if (!_calculateTransaction.CreditLoadGiftCardItem(calculatedCart, targetItem.Price, giftCartLine.GiftCardNumber, targetTicket.ID, giftCartLine)) { frmServerOfflineWarning offLineMsg = new frmServerOfflineWarning(); offLineMsg.ShowDialog(); } else { lines.Remove(giftCartLine); } } calculatedCart.Cart.Lines = lines; var request = new CalculateCartCommand() { Cart = calculatedCart.Cart, Uid = calculatedCart.Cart.Uid }; service.CalculateCart(request); } } } } catch (Exception ex) { _loggerHelper.WriteLogError(ex, "removeItem"); } }
/// <summary> /// Update CalculateCart /// </summary> /// <param name="applyGiftCardSummary"></param> /// <param name="calculatedCart"></param> /// <returns></returns> private List <ApplyGiftCardSummary> UpdateCalculateCart(List <ApplyGiftCardSummary> applyGiftCardSummary, CalculatedCart calculatedCart) { try { var request = new CalculateCartCommand() { Cart = calculatedCart.Cart, Uid = calculatedCart.Cart.Uid }; _services.CalculateCart(request); return(applyGiftCardSummary); } catch (Exception ex) { _logger.WriteLogError(ex, "CalculateTransaction UpdateCalculateCart"); return(null); } }
/// <summary> /// ApplyCoupon Load /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void frmApplyCoupon_Load(object sender, EventArgs e) { try { // Close snippets automatically Timer frmCloseTimer = new Timer(); frmCloseTimer.Interval = 300000; frmCloseTimer.Start(); frmCloseTimer.Tick += new EventHandler(CloseForm); _cartExternalId = bLoyalApplyCouponExtension.currentOpenTicketId; var calculatedCart = AsyncHelper.RunSync(() => _services.GetCartBySourceExternalIdAsync(_cartExternalId)); if (calculatedCart == null) { var cart = new Cart { Customer = new Customer(), Lines = new List <CartLine>(), SourceExternalId = _cartExternalId }; var request = new CalculateCartCommand() { Cart = cart, CouponCodes = new List <string>() }; calculatedCart = _services.CalculateCart(request); } bLoyalApplyCouponExtension.currentOpenTicketId = string.Empty; applyCouponWebBrowser.Navigate(string.Format("{0}{1}{2}{3}{4}{5}{6}", _conFigHelper.SNIPPET_URL, DinerwareUrls.APPLYCOUPON, _deviceSessionKey, Constants.LOGINDOMAIN, _conFigHelper.LOGIN_DOMAIN, Constants.CARTSOURCEEXTERNALID, _cartExternalId)); this.FormClosing += frmApplyCoupon_FormClosing; applyCouponWebBrowser.AllowNavigation = true; applyCouponWebBrowser.Navigating += WebBrowser_Navigating; } catch (Exception ex) { _logger.WriteLogError(ex, "frmApplyCoupon_Load"); } }
/// <summary> /// Create a CartUid /// </summary> /// <returns></returns> public async Task <string> CreateCartForNewTicket() { try { var cart = new Cart { Customer = new Customer(), Lines = new List <CartLine>() }; var request = new CalculateCartCommand() { Cart = cart, CouponCodes = new List <string>() }; var calculatedCart = await CalculateCartAsync(request); if (calculatedCart != null && calculatedCart.Cart != null) { return(calculatedCart.Cart.Uid.ToString()); } } catch (ApiException ex) { if (ex != null && !string.IsNullOrWhiteSpace(ex.Code) && ex.Code == "ServiceRedirect") { ServiceURLHelper.IsbLoyalServiceUrlDown = true; apiException = new APIExceptions { ErrorCode = ex.Code, ErrorDescription = "A bLoyal error occurred. Please restart your Workstation and try again.", ErrorApi = "CalculateAsync" }; } _logger.WriteLogError(ex, "LoyaltyEngineServices CreateCartUid"); return(null); } catch (Exception ex) { _logger.WriteLogError(ex, "LoyaltyEngineServices CreateCartUid"); } return(string.Empty); }
/// <summary> /// CalculateAsync /// </summary> /// <param name="calculateCartCommand"></param> /// <returns></returns> public CalculatedCart CalculateCartAsync(CalculateCartCommand calculateCartCommand) { try { return(AsyncHelpers.RunSync <CalculatedCart>(() => service.CartResource.CalculateAsync(calculateCartCommand))); } catch (ApiException ex) { apiException = new APIExceptions { ErrorCode = ex.Code, ErrorDescription = ex.Message, ErrorApi = "CalculateAsync" }; return(null); } catch (Exception ex) { logger.WriteLogError("**** LoyaltyEngineServices FAILURE: CalculateAsync Exception Error= " + ex.Message); if (ex.InnerException != null) { logger.WriteLogError("**** InnerException = " + ex.InnerException.Message); } return(null); } }
/// <summary> /// Calculate Cart /// </summary> /// <param name="transCode"></param> /// <param name="applyBalance"></param> /// <param name="giftCardNumber"></param> /// <param name="ticketId"></param> /// <returns></returns> private CalculatedCart CalculateCart(string transCode, string applyBalance, string giftCardNumber, string ticketId) { try { if (!string.IsNullOrWhiteSpace(transCode)) { var cart = new Cart { Customer = new Customer(), Lines = new List <CartLine>() }; var request = new CalculateCartCommand() { Cart = cart, CouponCodes = new List <string>() }; return(CalculateCart(request)); } } catch (ApiException ex) { if (ex != null && !string.IsNullOrWhiteSpace(ex.Code) && ex.Code == "ServiceRedirect") { ServiceURLHelper.IsbLoyalServiceUrlDown = true; apiException = new APIExceptions { ErrorCode = ex.Code, ErrorDescription = "A bLoyal error occurred. Please restart your Workstation and try again.", ErrorApi = "CalculateAsync" }; } _logger.WriteLogError(ex, "LoyaltyEngineServices CalculateCart"); return(null); } catch (Exception ex) { _logger.WriteLogError(ex, "LoyaltyEngineServices CalculateCart"); return(null); } return(null); }
/// <summary> /// CreateCartUid /// </summary> /// <param name="cartUid"></param> /// <returns></returns> public CalculatedCart CreateCartbySourceExternalId(string CartSourceExternalId) { try { var cart = new Cart { Customer = new Customer(), SourceExternalId = CartSourceExternalId, Lines = new List <CartLine>() }; var request = new CalculateCartCommand() { Cart = cart, CouponCodes = new List <string>() }; return(CalculateCartAsync(request)); } catch (Exception ex) { logger.WriteLogError("**** LoyaltyEngineServices FAILURE: CreateCartbySourceExternalId Exception Error= " + ex.Message); if (ex.InnerException != null) { logger.WriteLogError("**** InnerException = " + ex.InnerException.Message); } } return(null); }
/// <summary> /// Apply Load GiftCard Item /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void applyBtn_Click(object sender, EventArgs e) { try { if (string.IsNullOrWhiteSpace(txtGiftCardNumber.Text)) { lblEmptyCardNumberError.Visible = true; lblEmptyCardNumberError.Text = "Please enter gift card number."; } else { try { FinancialCard financialCardHelper = new FinancialCard(txtGiftCardNumber.Text); txtGiftCardNumber.Text = financialCardHelper.CardNumber; } catch (Exception ex) { _logger.WriteLogError(ex, "FinancialCard for swap Load GiftCard"); } lblEmptyCardNumberError.Visible = false; if (!string.IsNullOrWhiteSpace(txtGiftCardNumber.Text)) { CalculateTransactionHelper transaction = new CalculateTransactionHelper(); string checkLoadGiftCrad = transaction.CheckLoadGiftCard(txtGiftCardNumber.Text); if (!string.IsNullOrWhiteSpace(checkLoadGiftCrad)) { this.Hide(); frmLoadGiftCardWarning loadGiftCardWarning = new frmLoadGiftCardWarning(checkLoadGiftCrad); loadGiftCardWarning.ShowDialog(); this.Show(); } else { CalculateCartCommand request = null; if (_calculatedCart != null && _calculatedCart.Cart != null && _calculatedCart.Cart.Lines != null && _calculatedCart.Cart.Lines.Any()) { var line = _calculatedCart.Cart.Lines.ToList().Find(t => t.ProductName.Equals(_loadGiftItem, StringComparison.InvariantCultureIgnoreCase) && t.ProductExternalId.Equals(_loadMenuItem.TIID)); if (line != null) { line.GiftCardNumber = txtGiftCardNumber.Text; _giftCardNumber = txtGiftCardNumber.Text; } else { var newline = new CartLine { ProductName = _loadMenuItem.ItemName, ProductCode = _loadMenuItem.ID, GiftCardNumber = txtGiftCardNumber.Text, Price = _loadMenuItem.Price / _loadMenuItem.Quantity, Quantity = _loadMenuItem.Quantity, ExternalId = _loadMenuItem.ID, ProductExternalId = _loadMenuItem.TIID }; _calculatedCart.Cart.Lines.Add(newline); } request = new CalculateCartCommand() { Cart = _calculatedCart.Cart, Uid = _calculatedCart.Cart.Uid }; } else { var cart = new Cart { Lines = new List <CartLine>(), SourceExternalId = _currentOpenTicketId.ToString() }; var cartLineHelper = new CartLineHelper(); var lines = cartLineHelper.GetCartLines(_ticket); if (lines != null && lines.Any()) { var line = lines.ToList().Find(t => t.ProductName.Equals(_loadGiftItem, StringComparison.InvariantCultureIgnoreCase) && t.ProductExternalId.Equals(_loadMenuItem.TIID)); if (line != null) { line.GiftCardNumber = txtGiftCardNumber.Text; _giftCardNumber = txtGiftCardNumber.Text; } cart.Lines = lines; request = new CalculateCartCommand() { Cart = cart }; } } if (request != null) { _services.CalculateCart(request); } this.Close(); } } } } catch (Exception ex) { _logger.WriteLogError(ex, "bLoyal Load GiftCard applyBtn_Click"); } }
/// <summary> /// Void Ticket /// </summary> /// <param name="theInfo"></param> /// <param name="targetTicket"></param> public void voidTicket(IDisplayActions.displayActionInfo theInfo, Ticket targetTicket) { try { if (!ConfigurationHelper.Instance.IS_Test_Virtual_Client_Connection || !ConfigurationHelper.Instance.IS_Test_BLoyal_Connection) { return; } if (_configurationHelper != null && _configurationHelper.ENABLE_bLOYAL && targetTicket != null && targetTicket.Items != null && targetTicket.Items.Any() && _configurationHelper.LOAD_GIFTCARD_ITEMS != null && _configurationHelper.LOAD_GIFTCARD_ITEMS.Any()) { RefreshTicket(targetTicket); var loadGiftCardItems = _configurationHelper.LOAD_GIFTCARD_ITEMS.Where(p => targetTicket.Items.Any(p2 => p2.ItemName.Equals(p, StringComparison.InvariantCultureIgnoreCase))); if (loadGiftCardItems != null && loadGiftCardItems.Any()) { var service = new LoyaltyEngineServices(); bool isCreditLoadGiftCard = false; var calculatedCart = AsyncHelper.RunSync(() => service.GetCartBySourceExternalIdAsync(_targetTicket.ID)); if (calculatedCart != null && calculatedCart.Cart != null && calculatedCart.Cart.Lines != null) { var lines = new List <CartLine>(calculatedCart.Cart.Lines.ToList()); foreach (var giftCartLine in calculatedCart.Cart.Lines) { if (giftCartLine.GiftCardAmount.HasValue && giftCartLine.GiftCardAmount.Value > 0) { if (!_calculateTransaction.CreditLoadGiftCardItem(calculatedCart, giftCartLine.GiftCardAmount.Value, giftCartLine.GiftCardNumber, targetTicket.ID, giftCartLine)) { frmServerOfflineWarning offLineMsg = new frmServerOfflineWarning(); offLineMsg.ShowDialog(); } else { isCreditLoadGiftCard = true; lines.Remove(giftCartLine); } } } if (isCreditLoadGiftCard) { calculatedCart.Cart.Lines = lines; var request = new CalculateCartCommand() { Cart = calculatedCart.Cart, Uid = calculatedCart.Cart.Uid }; service.CalculateCart(request); } } } } } catch (Exception ex) { _loggerHelper.WriteLogError(ex, "voidTicket"); } }