public void GetTotalPrice_ThreeApplesTwoBiscuitsOneUnkownItem_TotalPriceMatchExpectedPrice() { // Arrange decimal expectedPrice = 2.70m; CheckoutManager checkoutManager = new CheckoutManager(); Item apple = new Item() { Sku = "A99" }; Item biscuit = new Item() { Sku = "B15" }; Item unkownItem = new Item() { Sku = "C40" }; // Act checkoutManager.Scan(apple); checkoutManager.Scan(biscuit); checkoutManager.Scan(apple); checkoutManager.Scan(biscuit); checkoutManager.Scan(unkownItem); checkoutManager.Scan(apple); // Assert decimal price = checkoutManager.Total(); Assert.AreEqual(price, expectedPrice); }
public void GetDicountPrice_ThreeApplesTwoBiscuits_DiscountPriceMatchExpectedPrice() { // Arrange decimal expectedPrice = 1.75m; CheckoutManager checkoutManager = new CheckoutManager(); Item apple = new Item() { Sku = "A99" }; Item biscuit = new Item() { Sku = "B15" }; // Act checkoutManager.Scan(apple); checkoutManager.Scan(biscuit); checkoutManager.Scan(apple); checkoutManager.Scan(biscuit); checkoutManager.Scan(apple); // Assert decimal price = checkoutManager.TotalOfferInclusive(); Assert.AreEqual(price, expectedPrice); }
public void Scan_NullItem_ThrowException() { // Arrange CheckoutManager checkoutManager = new CheckoutManager(); // Assert Assert.ThrowsException <Exception>(() => checkoutManager.Scan(null)); }
private void asyncCheckoutBtn_Click(object sender, EventArgs e) { textBoxResult.Clear(); if (this.m_status == CheckoutManagerState.idle) { string files = GetFiles(); // Create configuration Item configuration = m_inn.newItem(); configuration.loadAML(files); // Create Aras.IOME.CheckoutManager m_cmgr = new CheckoutManager(configuration); // Lock all items in the configuration (!File, !Vault, !Located) Item lockResult = m_cmgr.Lock(); if (lockResult.isError()) { MessageBox.Show(lockResult.getErrorString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } int numberOfThreads = (int)thCount.Value; string targetFolder = textBoxDestination.Text; // Event handlers are attached to Aras.IOME.CheckoutManager events. m_cmgr.DownloadFileCompleted += new Aras.IOME.DownloadFileCompletedEventHandler(HandleDownloadFileCompleted); m_cmgr.DownloadFilesCompleted += new Aras.IOME.DownloadFilesCompletedEventHandler(HandleDownloadFilesCompleted); m_cmgr.DownloadFilesProgressChanged += new Aras.IOME.DownloadFilesProgressChangedEventHandler(HandleDownloadFileProgressChanged); this.m_failed_count = 0; progressBar.Value = 0; // Begin download files asynchronously m_cmgr.DownloadFilesAsync(targetFolder, numberOfThreads); // Toggle button state cancelBtn.Enabled = true; asyncCheckoutBtn.Text = "Pause"; this.m_status = CheckoutManagerState.running; } else if (this.m_status == CheckoutManagerState.running) { m_cmgr.DownloadFilesPauseAsync(); cancelBtn.Enabled = false; asyncCheckoutBtn.Text = "Resume"; this.m_status = CheckoutManagerState.paused; } else if (this.m_status == CheckoutManagerState.paused) { m_cmgr.DownloadFilesResumeAsync(); cancelBtn.Enabled = true; asyncCheckoutBtn.Text = "Pause"; this.m_status = CheckoutManagerState.running; } }
public void Scan_NonExistentItem_ThrowException() { // Arrange CheckoutManager checkoutManager = new CheckoutManager(); Item nonExistentItem = new Item() { Sku = "" }; // Assert Assert.ThrowsException <Exception>(() => checkoutManager.Scan(nonExistentItem)); }
private void Awake() { if (singleton != null && singleton != this) { Destroy(gameObject); return; } else { singleton = this; DontDestroyOnLoad(gameObject); } }
protected void btnRemoveProvTax(object sender, EventArgs e) { ckm = (CheckoutManager)Session["CheckOutTotals"]; noPST = ckm.blPst; balancedue = ckm.dblTotal + ckm.dblShipping + ckm.dblGst + ckm.dblPst - (ckm.dblDiscounts + ckm.dblTradeIn); if (noPST) { //noPST is now false so add back in noPST = false; ckm.blPst = noPST; if (ckm.blGst) { balancedue -= ckm.dblGst; lblGovernmentAmount.Text = "$ 0.00"; } btnRemoveProv.Text = "Remove PST"; lblProvincialAmount.Text = "$ " + ckm.dblPst.ToString("#0.00"); } else { //noPST is now True so remove noPST = true; ckm.blPst = noPST; if (!ckm.blGst) { balancedue -= ckm.dblPst; lblGovernmentAmount.Text = "$ " + ckm.dblGst.ToString("#0.00"); } else if (ckm.blGst) { balancedue -= ckm.dblGst + ckm.dblPst; lblGovernmentAmount.Text = "$ 0.00"; } lblProvincialAmount.Text = "$ 0.00"; btnRemoveProv.Text = "Add PST"; } lblBalanceAmount.Text = "$ " + balancedue.ToString("#0.00"); Session["CheckOutTotals"] = ckm; if (Session["MethodsofPayment"] == null) { lblRemainingBalanceDueDisplay.Text = "$ " + balancedue.ToString("#0.00"); } else { lblRemainingBalanceDueDisplay.Text = "$ " + (balancedue - dblAmountPaid).ToString("#0.00"); } }
public void GetTotalPrice_SingleApple_TotalPriceMatchExpectedPrice() { // Arrange decimal expectedPrice = 0.50m; CheckoutManager checkoutManager = new CheckoutManager(); Item apple = new Item() { Sku = "A99" }; // Act checkoutManager.Scan(apple); // Assert decimal price = checkoutManager.Total(); Assert.AreEqual(price, expectedPrice); }
public string ExecuteCompleteCheckout( ParseUser loggedInUser, CheckoutViewModel checkoutViewModel, string worldId, Purchase[] userHistoricalPurchases, out string paymentUrl) { paymentUrl = string.Empty; var completeCheckoutLetterDto = new CompleteCheckoutLetterDto(); var completeCheckoutStatementsArray = new List<CheckoutStatementBase>(); var checkoutItemLetterDtoArray = new List<CheckoutItemLetterDto>(); var accountStatementsBuilder = new AccountStatementBuilder(_repository, _currencyRetriver); var checkoutManager = new CheckoutManager(_repository, loggedInUser, checkoutViewModel); try { CreatePaymentRecords(checkoutViewModel, worldId, userHistoricalPurchases, checkoutManager,completeCheckoutLetterDto, checkoutItemLetterDtoArray, completeCheckoutStatementsArray); SetLetters(loggedInUser,checkoutViewModel,completeCheckoutStatementsArray,checkoutItemLetterDtoArray,completeCheckoutLetterDto,loggedInUser); if (checkoutViewModel.PaymentTransactionForCalc == 0) { checkoutManager.SavePaymentRecords(completeCheckoutStatementsArray, accountStatementsBuilder, checkoutViewModel); InitPuchaseView(loggedInUser, checkoutViewModel); } else { _state.Set(STATE_KEY,completeCheckoutStatementsArray); paymentUrl = GetPaymentUrl(checkoutManager,checkoutViewModel); } } catch(Exception ex) { BL.DomainServices.Log.LoggerFactory.GetLogger().LogError(ex); Mailer.SendCheckoutError(loggedInUser, checkoutManager.EventId, "Check out error"); throw; } return checkoutManager.EventId; }
private void syncCheckoutBtn_Click(object sender, EventArgs e) { int numberOfThreads = (int)thCount.Value; string targetFolder = textBoxDestination.Text; //Strat the timer sw.Start(); textBoxResult.Clear(); string files = GetFiles(); Item configuration = m_inn.newItem(); configuration.loadAML(files); // get checkout manager CheckoutManager checkoutManager2 = new CheckoutManager(configuration); // Lock all items in the configuration (!File, !Vault, !Located) // NOTE: In this particular example this call could be skipped as the configuration the way it's built does NOT have any items that have to be locked. Item lockResult = checkoutManager2.Lock(); if (lockResult.isError()) { MessageBox.Show(lockResult.getErrorString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } progressBar.Value = 0; // Download files synchronously System.Collections.Hashtable downloadResults = checkoutManager2.DownloadFiles(targetFolder, numberOfThreads); ProcessResult(downloadResults, configuration); }
//Populating gridview with MOPs protected void populateGridviewMOP(double amountPaid, string methodOfPayment) { Checkout tempCK = new Checkout(methodOfPayment, amountPaid); if (Session["MethodsofPayment"] != null) { mopList = (List <Checkout>)Session["MethodsofPayment"]; } //ck = ckm.methodsOfPayment(methodOfPayment, amountPaid, ck); mopList.Add(tempCK); gvCurrentMOPs.DataSource = mopList; foreach (var mop in mopList) { dblAmountPaid += mop.amountPaid; } gvCurrentMOPs.DataBind(); foreach (GridViewRow row in gvCurrentMOPs.Rows) { foreach (TableCell cell in row.Cells) { cell.Attributes.CssStyle["text-align"] = "center"; } } Session["MethodsofPayment"] = mopList; ckm = (CheckoutManager)Session["CheckOutTotals"]; if (!ckm.blGst) { dblRemaining += ckm.dblGst; } if (!ckm.blPst) { dblRemaining += ckm.dblPst; } dblRemaining += ckm.dblTotal + ckm.dblShipping - (ckm.dblDiscounts + ckm.dblTradeIn); lblRemainingBalanceDueDisplay.Text = "$ " + (dblRemaining - dblAmountPaid).ToString("#0.00"); }
protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { List <Tax> t = new List <Tax>(); List <Cart> cart = new List <Cart>(); CalculationManager cm = new CalculationManager(); if (Session["MethodsofPayment"] == null) { double dblShippingAmount = Convert.ToDouble(Session["ShippingAmount".ToString()]); bool bolShipping = Convert.ToBoolean(Session["shipping"]); if (bolShipping) { int custNum = (int)Convert.ToInt32(Session["key"].ToString()); Customer c = ssm.GetCustomerbyCustomerNumber(custNum); t = ssm.getTaxes(c.province); lblShipping.Visible = true; lblShippingAmount.Visible = true; } else { //**Will need to be enabled not shipping //t = ssm.getTaxes(Convert.ToInt(Session["location"].ToString()); lblShipping.Visible = false; lblShippingAmount.Visible = false; } ckm = new CheckoutManager(cm.returnTotalAmount(cart), cm.returnDiscount(cart), cm.returnTradeInAmount(cart), dblShippingAmount, true, true, 0, 0, 0, cm.returnSubtotalAmount(cart)); foreach (var T in t) { switch (T.taxName) { case "GST": lblGovernment.Visible = true; ckm.dblGst = cm.returnGSTAmount(T.taxRate, ckm.dblSubTotal); lblGovernmentAmount.Text = "$ " + ckm.dblGst.ToString("#0.00"); btnRemoveGov.Visible = true; break; case "PST": lblProvincial.Visible = true; pst = Math.Round((T.taxRate * subtotal), 2); lblProvincialAmount.Text = "$ " + pst.ToString("#0.00"); btnRemoveProv.Visible = true; break; case "HST": lblProvincial.Visible = false; lblGovernment.Text = "HST"; gst = Math.Round((T.taxRate * subtotal), 2); lblGovernmentAmount.Text = "$ " + gst.ToString("#0.00"); btnRemoveProv.Visible = false; btnRemoveGov.Text = "HST"; break; case "RST": lblProvincial.Visible = true; lblProvincial.Text = "RST"; pst = Math.Round((T.taxRate * subtotal), 2); lblProvincialAmount.Text = "$ " + pst.ToString("#0.00"); btnRemoveProv.Visible = true; btnRemoveProv.Text = "RST"; break; case "QST": lblProvincial.Visible = true; lblProvincial.Text = "QST"; pst = Math.Round((T.taxRate * subtotal), 2); lblProvincialAmount.Text = "$ " + pst.ToString("#0.00"); btnRemoveProv.Visible = true; btnRemoveProv.Text = "QST"; break; } } } else { ckm = (CheckoutManager)Session["CheckOutTotals"]; mopList = (List <Checkout>)Session["MethodsofPayment"]; foreach (var mop in mopList) { dblAmountPaid += mop.amountPaid; } gvCurrentMOPs.DataSource = mopList; gvCurrentMOPs.DataBind(); ckm.dblAmountPaid = dblAmountPaid; ckm.dblRemainingBalance = ckm.dblSubTotal - ckm.dblAmountPaid; } Session["CheckOutTotals"] = ckm; //***Assign each item to its Label. // //Assigning session brought from the cart to variables // int custNum = (int)(Convert.ToInt32(Session["key"].ToString())); // bool shipping = Convert.ToBoolean(Session["shipping"]); // cart = (List<Cart>)Session["ItemsInCart"]; // double dblShippingAmount = Convert.ToDouble(Session["ShippingAmount"].ToString()); // Customer c = ssm.GetCustomerbyCustomerNumber(custNum); // //End of assigning // if (shipping == false) // { // //**Need to change to location for taxes // t = ssm.getTaxes(c.province); // lblShipping.Visible = false; // lblShippingAmount.Visible = false; // //txtShippingAmount.Visible = false; // } // else if (shipping == true) // { // t = ssm.getTaxes(c.province); // lblShipping.Visible = true; // lblShippingAmount.Visible = true; // //txtShippingAmount.Visible = true; // } // lblTotalInCartAmount.Text = "$ " + cm.returnTotalAmount(cart).ToString("#0.00"); // lblTotalInDiscountsAmount.Text = "$ " + cm.returnDiscount(cart).ToString("#0.00"); // lblTradeInsAmount.Text = "$ " + cm.returnTradeInAmount(cart).ToString("#0.00"); // subtotal = cm.returnSubtotalAmount(cart); // lblSubTotalAmount.Text = "$ " + subtotal.ToString("#0.00"); // lblShippingAmount.Text = "$ " + dblShippingAmount.ToString("#0.00"); // foreach (var T in t) // { // switch (T.taxName) // { // case "GST": // lblGovernment.Visible = true; // gst = cm.returnGSTAmount(T.taxRate, cart); // lblGovernmentAmount.Text = "$ " + gst.ToString("#0.00"); // btnRemoveGov.Visible = true; // break; // case "PST": // lblProvincial.Visible = true; // pst = Math.Round((T.taxRate * subtotal), 2); // lblProvincialAmount.Text = "$ " + pst.ToString("#0.00"); // btnRemoveProv.Visible = true; // break; // case "HST": // lblProvincial.Visible = false; // lblGovernment.Text = "HST"; // gst = Math.Round((T.taxRate * subtotal), 2); // lblGovernmentAmount.Text = "$ " + gst.ToString("#0.00"); // btnRemoveProv.Visible = false; // btnRemoveGov.Text = "HST"; // break; // case "RST": // lblProvincial.Visible = true; // lblProvincial.Text = "RST"; // pst = Math.Round((T.taxRate * subtotal), 2); // lblProvincialAmount.Text = "$ " + pst.ToString("#0.00"); // btnRemoveProv.Visible = true; // btnRemoveProv.Text = "RST"; // break; // case "QST": // lblProvincial.Visible = true; // lblProvincial.Text = "QST"; // pst = Math.Round((T.taxRate * subtotal), 2); // lblProvincialAmount.Text = "$ " + pst.ToString("#0.00"); // btnRemoveProv.Visible = true; // btnRemoveProv.Text = "QST"; // break; // } // } // dblAmountPaid = 0; // //Checking if there are MOP's // if (Session["MethodsofPayment"] != null) // { // ck = (List<Checkout>)Session["MethodsofPayment"]; // foreach (var mop in ck) // { // dblAmountPaid += mop.amountPaid; // } // gvCurrentMOPs.DataSource = ck; // gvCurrentMOPs.DataBind(); // } // //End of checking MOP's // ckm = new CheckoutManager(cm.returnTotalAmount(cart), cm.returnDiscount(cart), cm.returnTradeInAmount(cart), dblShippingAmount, noGST, noPST, gst, pst,(cm.returnSubtotalAmount(cart)-dblAmountPaid)); // balancedue = ckm.dblGst + ckm.dblPst + ckm.dblShipping + ckm.dblTotal - (ckm.dblDiscounts + ckm.dblTradeIn); // lblBalanceAmount.Text = "$ " + balancedue.ToString("#0.00"); // lblRemainingBalanceDueDisplay.Text = "$ " + balancedue.ToString("#0.00"); // Session["CheckOutTotals"] = ckm; //} //if (txtShippingAmount.Text == null || txtShippingAmount.Text == "") //{ // txtShippingAmount.Text = "0"; //} //shippingCost = Convert.ToDouble(txtShippingAmount.Text); //ckm = (CheckoutManager)Session["CheckOutTotals"]; //ckm.dblShipping = shippingCost; //balancedue = ckm.dblGst + ckm.dblPst + ckm.dblShipping + ckm.dblTotal - (ckm.dblDiscounts + ckm.dblTradeIn); //lblBalanceAmount.Text = "$ " + balancedue.ToString("#0.00"); //Session["CheckOutTotals"] = ckm; //if (Session["MethodsofPayment"] == null) //{ // lblRemainingBalanceDueDisplay.Text = "$ " + balancedue.ToString("#0.00"); //} //else //{ // ck = (List<Checkout>)Session["MethodsofPayment"]; // gvCurrentMOPs.DataSource = ck; // gvCurrentMOPs.DataBind(); // foreach (var mop in ck) // { // dblAmountPaid += mop.amountPaid; // } // if (!ckm.blGst) // { // dblRemaining += ckm.dblGst; // } // if (!ckm.blPst) // { // dblRemaining += ckm.dblPst; // } // dblRemaining += ckm.dblTotal + ckm.dblShipping - (ckm.dblDiscounts + ckm.dblTradeIn); // lblRemainingBalanceDueDisplay.Text = "$ " + (dblRemaining - dblAmountPaid).ToString("#0.00"); } }
private void SetLetters(ParseUser loggedInUser, CheckoutViewModel checkoutViewModel, List<CheckoutStatementBase> completeCheckoutStatementsArray, List<CheckoutItemLetterDto> checkoutItemLetterDtos, CompleteCheckoutLetterDto completeCheckoutLetterDto, ParseUser inUser) { var checkoutManager = new CheckoutManager(_repository, loggedInUser, checkoutViewModel); //כתיבת רשומת מכתב לפריט למורה checkoutManager.GetItemLetterForTeacher(completeCheckoutStatementsArray,checkoutItemLetterDtos); //כתיבת רשומת מכתב לפריט לסוכן checkoutManager.GetItemLetterForAgent(completeCheckoutStatementsArray,checkoutItemLetterDtos); //כתיבת רשומת מכתב לפריט למנהל checkoutManager.GetItemLetterForAdmin(completeCheckoutStatementsArray,checkoutItemLetterDtos,completeCheckoutLetterDto); // כתיבת רשומת מכתב סיכום לרוכש checkoutManager.GetSummaryLetterForStudent(completeCheckoutStatementsArray,completeCheckoutLetterDto,checkoutViewModel); //כתיבת רשומת מכתב סיכום למנהל checkoutManager.GetSummaryLetterForAdmin(completeCheckoutStatementsArray,completeCheckoutLetterDto,checkoutViewModel); if (checkoutViewModel.PurchaseFor != loggedInUser.Username) { //מכתב לתלמיד checkoutManager.GetStudentLetter(completeCheckoutStatementsArray, completeCheckoutLetterDto, checkoutViewModel); } }
private string GetPaymentUrl(CheckoutManager checkoutManager, CheckoutViewModel checkoutViewModel) { var checkoutItems = new List<CheckoutItem>(); foreach (var purchaseViewModel in checkoutViewModel.PurchasesForUser) { string name = Language.CurrentLanguageCode == Cultures.HE_IL ? purchaseViewModel.ContentName_he_il : purchaseViewModel.ContentName_en_us; double price = purchaseViewModel.HasCoupon ? purchaseViewModel.PriceWithCoupon: purchaseViewModel.RegularPrice; name = string.Format("{0}{1}", purchaseViewModel.IsLesson ? MyMentorResources.checkoutLesson : MyMentorResources.checkoutBundle, name); checkoutItems.Add(new CheckoutItem { Name = name, Price = price }); } if (checkoutViewModel.BalanceForCalc > 0) { checkoutItems.Add(new CheckoutItem { Name = MyMentorResources.checkoutBalance, Price = (checkoutViewModel.BalanceForCalc * -1) }); } if (checkoutViewModel.BalanceForCalc < 0) { checkoutItems.Add(new CheckoutItem { Name = MyMentorResources.checkoutBalanceCover, Price = (checkoutViewModel.BalanceForCalc * -1) }); } var response = _payPalExpressCheckoutManager.ValidatePayment( checkoutItems, checkoutViewModel.UserCurrency.PaypalCode, checkoutViewModel.PaymentTransactionForCalc); return response.ValidationUrl; }
private static void CreatePaymentRecords( CheckoutViewModel checkoutViewModel, string worldId, Purchase[] userHistoricalPurchases, CheckoutManager checkoutManager, CompleteCheckoutLetterDto completeCheckoutLetterDto, List<CheckoutItemLetterDto> checkoutItemLetterDtoArray, List<CheckoutStatementBase> completeCheckoutStatementsArray) { checkoutManager.StartPaymentEvent(completeCheckoutLetterDto); checkoutManager.SetPayerCreditForPayment(completeCheckoutStatementsArray, completeCheckoutLetterDto, worldId); checkoutManager.SetPayerDebitForContent(completeCheckoutStatementsArray, completeCheckoutLetterDto); checkoutManager.SetSiteAndVatAccountRecords(completeCheckoutStatementsArray, completeCheckoutLetterDto); foreach (var purchaseViewModel in checkoutViewModel.PurchasesForUser) { var checkoutItemLetterDto = new CheckoutItemLetterDto(); checkoutItemLetterDto.IsLesson = purchaseViewModel.IsLesson; checkoutManager.SetTeacherCommission(checkoutItemLetterDto, purchaseViewModel); checkoutManager.SetTeacherData(checkoutItemLetterDto, purchaseViewModel); checkoutManager.SetAgentCommission(checkoutItemLetterDto, purchaseViewModel); checkoutManager.SetTeacherSiteAgentCommissionsCalculations(checkoutItemLetterDto, purchaseViewModel); checkoutManager.SetMaam(checkoutItemLetterDto); checkoutManager.SetConvertsionCommissions(checkoutItemLetterDto); // כתיבת תנועות כספיות checkoutManager.TeacherSaleCommissionCredit(completeCheckoutStatementsArray, checkoutItemLetterDto,purchaseViewModel); checkoutManager.TeacherSaleCommissionDebit(completeCheckoutStatementsArray, checkoutItemLetterDto,purchaseViewModel); checkoutManager.TeacherConversionDebit(completeCheckoutStatementsArray, checkoutItemLetterDto, purchaseViewModel); checkoutManager.SiteConversionCredit(completeCheckoutStatementsArray, checkoutItemLetterDto, purchaseViewModel); checkoutManager.AgentToAgentConversionCredit(completeCheckoutStatementsArray, checkoutItemLetterDto,purchaseViewModel); checkoutManager.AgentToSiteConversionCredit(completeCheckoutStatementsArray, checkoutItemLetterDto,purchaseViewModel); checkoutManager.AgentConversionDebit(completeCheckoutStatementsArray, checkoutItemLetterDto, purchaseViewModel); checkoutManager.SiteAgentConversionCredit(completeCheckoutStatementsArray, checkoutItemLetterDto,purchaseViewModel); // כתיבת רשומות checkoutManager.UpdateCoupon(completeCheckoutStatementsArray, purchaseViewModel); checkoutManager.UpdatePurchase(completeCheckoutStatementsArray, completeCheckoutLetterDto, purchaseViewModel); // טיפול בחבילה checkoutManager.HandlePackage(completeCheckoutStatementsArray, purchaseViewModel, checkoutViewModel, userHistoricalPurchases, worldId, completeCheckoutLetterDto.StudentKeyLetter,completeCheckoutLetterDto.StudentCurrencyLetter); checkoutItemLetterDtoArray.Add(checkoutItemLetterDto); } // add basketitemnames checkoutManager.GetBasketItemNames(completeCheckoutStatementsArray, checkoutItemLetterDtoArray, checkoutViewModel); }
public void ExecutePayment(string payerId, string paymentId, CheckoutViewModel checkoutViewModel, ParseUser loggedInUser) { var completeCheckoutStatementsArray = _state.Get<List<CheckoutStatementBase>>(STATE_KEY); var eventId = completeCheckoutStatementsArray.OfType<TransactionStatement>().First().Event; var executePayment = _payPalExpressCheckoutManager.ExecutePayment(payerId, paymentId); if (executePayment == null) { Mailer.SendCheckoutError(loggedInUser, eventId,"payment failed, database not upadated"); return; } try { var accountStatementsBuilder = new AccountStatementBuilder(_repository, _currencyRetriver); var checkoutManager = new CheckoutManager(_repository, loggedInUser, checkoutViewModel); checkoutManager.EventId = eventId; checkoutManager.SavePaymentRecords(completeCheckoutStatementsArray, accountStatementsBuilder, checkoutViewModel, executePayment.ConvertToJson()); InitPuchaseView(loggedInUser, checkoutViewModel); } catch (Exception ex) { Mailer.SendCheckoutError(loggedInUser, eventId, "Payment succeeded, Data Base update failed"); BL.DomainServices.Log.LoggerFactory.GetLogger().LogError(ex); throw; } }