/// <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);
        }
Example #6
0
        /// <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);
            }
        }
Example #8
0
        /// <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");
            }
        }
Example #14
0
        /// <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");
            }
        }