private ParseUser GetAgent(Purchase purchase) { ParseUser agent = null; var teacher = new ParseUser(); if (purchase.ClipKey != null) { teacher = purchase.ClipKey.Teacher; } if (purchase.BundleKey != null) { teacher = purchase.BundleKey.Teacher; } var userAdminData = teacher.GetPointerObject<UserAdminData>("adminData"); if (userAdminData != null && userAdminData.Agent != null) { agent = userAdminData.Agent; } return agent; }
private static void InitPuchaseView(ParseUser loggedInUser, CheckoutViewModel checkoutViewModel) { var adminData = loggedInUser.GetPointerObject<UserAdminData>("adminData"); adminData.PurchaseCount = 0; Task.Run(() => adminData.SaveAsync()); checkoutViewModel.PaymentSuccess = true; checkoutViewModel.PurchasesForUser = new CheckoutPurchaseViewModel[0]; }
private UserAdminData GetTeacherAdminData(Purchase purchase) { var teacher = new ParseUser(); if (purchase.ClipKey != null) { teacher = purchase.ClipKey.Teacher; } if (purchase.BundleKey != null) { teacher = purchase.BundleKey.Teacher; } return teacher.GetPointerObject<UserAdminData>("adminData"); }
private void SetPurchases(ParseRepository repository, ParseUser user) { var userPurchases = repository.FindUserPurchases(user.ObjectId); var userAdminData = user.GetPointerObject<UserAdminData>("adminData"); userAdminData.PurchaseCount = userPurchases.Count(x => x.BundleKey != null || x.ClipKey != null); Task.Run(() => userAdminData.SaveAsync()).Wait(); }
private AccountStatementDto TeacherAccountCreditStatement(CreateCouponViewModel createCouponVm, AccountStatementBuilder accountStatementBuilder, double paymentTransaction, List<AccountStatementDto> accountStatements, ParseUser teacher, CurrencyRetriver currencyRetriever) { var currentCurrencyDto = currencyRetriever.GetCurrent(); // add creding + debit record for teacher var teacherAccountCreditStatement = accountStatementBuilder.SetAccountStatement( teacher, paymentTransaction, 0, TransactionType.CouponBuyerPayment, DateTime.Now, currentCurrencyDto); var teacherAccountDebitStatement = accountStatementBuilder.SetAccountStatement( teacher, 0, createCouponVm.TeacherData.GapToPay, TransactionType.CouponBuyerDebit, DateTime.Now, currentCurrencyDto); createCouponVm.TeacherData.Balance = teacher.GetPointerObject<UserAdminData>("adminData").Balance; accountStatements.AddRange(new[] { teacherAccountCreditStatement, teacherAccountDebitStatement, }); return teacherAccountCreditStatement; }
private void SiteAccountCreditStatement(CreateCouponViewModel createCouponVm, AccountStatementBuilder accountStatementBuilder, double amountForSiteAccountCredit, List<AccountStatementDto> accountStatements, ParseUser siteAccount, CurrencyRetriver currencyRetriever) { var siteAccountCreditStatement = accountStatementBuilder.SetAccountStatement( siteAccount, amountForSiteAccountCredit, 0, TransactionType.CouponSiteCredit, DateTime.Now, currencyRetriever.GetCurrent()); createCouponVm.SiteAccountBalance = siteAccount.GetPointerObject<UserAdminData>("adminData").Balance; accountStatements.Add(siteAccountCreditStatement); }
private static void VatCreditStatement(CreateCouponViewModel createCouponVm, double maamPaymentCredit, AccountStatementBuilder accountStatementBuilder, List<AccountStatementDto> accountStatements, AccountStatementDto teacherAccountCreditStatement, double maam, double maamFromBalance, ParseUser maamAccount, ParseUser maamBalanceAccount, CurrencyRetriver currencyRetriever) { if (maamPaymentCredit > 0) { // add record for mamm account var maamAccountCreditStatement = accountStatementBuilder.SetAccountStatement( maamAccount, maamPaymentCredit, 0, TransactionType.CouponVatCredit, DateTime.Now, currencyRetriever.GetCurrent()); accountStatements.Add(maamAccountCreditStatement); createCouponVm.MaamAccountBalance = maamAccount.GetPointerObject<UserAdminData>("adminData").Balance; if (teacherAccountCreditStatement != null) { teacherAccountCreditStatement.IncludingVat = maam; } } if (maamFromBalance > 0) { // add record for mamm balance account מעמ יתרות var maamBalanceAccountCreditStatement = accountStatementBuilder.SetAccountStatement( maamBalanceAccount, maamFromBalance, 0, TransactionType.CouponVatCredit, DateTime.Now, currencyRetriever.GetCurrent()); accountStatements.Add(maamBalanceAccountCreditStatement); createCouponVm.MaamBalanceAccountBalance = maamBalanceAccount.GetPointerObject<UserAdminData>("adminData").Balance; } }
private void AgentCreditStatement(CreateCouponViewModel createCouponVm, IMyMentorRepository repository, ParseUser agentAccount, ParseUser teacher, ParseUser siteAccount, CommissionsDto globalCommissionsTable, AccountStatementBuilder accountStatementBuilder, List<AccountStatementDto> accountStatements, CurrencyRetriver currencyRetriever) { if (agentAccount == null) { //agent user not found ,send email //var missingAgent = teacher.GetPointerObject<UserAdminData>("adminData").GetPointerObject<ParseUser>("agent"); SendErrorEmail(createCouponVm,MyMentorResources.couponErrAgentNotFound); // Mailer.SendAgentNotFound(missingAgent.Username,teacher.Username,createCouponVm.EventId); return; } var userAdminData = agentAccount.GetPointerObject<UserAdminData>("adminData"); var acpAgentCommission = userAdminData.AcpTeacherCommission == Global.NoCommission ? globalCommissionsTable.AgentCommission : userAdminData.AcpTeacherCommission; var agentSugOsek = agentAccount.GetPointerObject<SugOsek>("sugOsek"); var agentGetVat = agentSugOsek.GetVat ? 1: 0; var agentPayVat = agentSugOsek.PayVat ? 1 :0; var teacherSugOsek = teacher.GetPointerObject<SugOsek>("sugOsek"); var teacherPayVat = teacherSugOsek.PayVat? 1: 0; var maamFlag = teacherPayVat == agentGetVat ? 0 : 1; var teachertCurrency = teacher.GetPointerObject<Currency>("currency").ConvertToCurrencyDto(); var agentCurrency = agentAccount.GetPointerObject<Currency>("currency").ConvertToCurrencyDto(); var emlatHamaraFlag = agentCurrency.ObjectId != teachertCurrency.ObjectId; var conversionCommission = globalCommissionsTable.ConversionCommission; var maam = globalCommissionsTable.Maam; var gapToPay = createCouponVm.TeacherData.GapToPay; var totalCommission = (gapToPay + (maamFlag * ((-gapToPay/(100 +maam)* maam * teacherPayVat)+(gapToPay*maam/100 *agentGetVat)))) * acpAgentCommission; var agentIncludingVat = agentSugOsek.GetVat ? maam : 0; double emlatHamara; // זיכוי סוכן var agentCreditAccountStatement = accountStatementBuilder.SetAccountStatement( agentAccount, totalCommission, 0, TransactionType.CouponAgentCommission, DateTime.Now, currencyRetriever.GetCurrent(), includingVAT: agentIncludingVat); accountStatements.Add(agentCreditAccountStatement); createCouponVm.AgentBalance = agentAccount.GetPointerObject<UserAdminData>("adminData").Balance; // חיוב סוכן בעמלת המרה if (emlatHamaraFlag) { emlatHamara = totalCommission*conversionCommission; var agentDebitAccountStatement = accountStatementBuilder.SetAccountStatement( agentAccount, 0, emlatHamara, TransactionType.CouponAgentExCommission, DateTime.Now, currencyRetriever.GetCurrent(), includingVAT: agentIncludingVat); accountStatements.Add(agentDebitAccountStatement); createCouponVm.AgentBalance = agentAccount.GetPointerObject<UserAdminData>("adminData").Balance; } //חיוב האתר בעמלת הסוכן maamFlag = 0 == teacherPayVat ? 0 : 1; totalCommission = (gapToPay + (maamFlag * ((-gapToPay / (100 + maam) * maam * teacherPayVat) + (gapToPay * maam / 100 * 0)))) * acpAgentCommission; var siteAccountDebitStatement = accountStatementBuilder.SetAccountStatement( siteAccount, 0, totalCommission, TransactionType.CouponAgentCommission, DateTime.Now, currencyRetriever.GetCurrent()); accountStatements.Add(siteAccountDebitStatement); createCouponVm.SiteAccountBalance = siteAccount.GetPointerObject<UserAdminData>("adminData").Balance; if (emlatHamaraFlag) { //זיכוי האתר בעמלת המרה של הסוכן emlatHamara = totalCommission*conversionCommission; siteAccountDebitStatement = accountStatementBuilder.SetAccountStatement( siteAccount, emlatHamara, 0, TransactionType.CouponAgentExCommission, DateTime.Now, currencyRetriever.GetCurrent()); accountStatements.Add(siteAccountDebitStatement); createCouponVm.SiteAccountBalance = siteAccount.GetPointerObject<UserAdminData>("adminData").Balance; ; } }