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 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 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); }