public Form GetForm(PurseContext context) { if (null == context) { throw new ArgumentNullException(nameof(context)); } var template = TemplateLoader.LoadSubmitFormTemplate(context.ExtensionManager, ExtensionCatalog.RedeemPaymer); var origin = new AccountDropDownListOrigin(context.UnityContainer) { SelectedAccountNumber = context.Account.Number }; origin.FilterCriteria.CurrencyCapabilities = CurrencyCapabilities.Transfer; var itemTemplates = AccountDisplayHelper.BuildAccountDropDownListItemTemplates(origin); var redeemPaymerFormTemplateWrapper = new RedeemPaymerFormTemplateWrapper(template); redeemPaymerFormTemplateWrapper.Control1RedeemTo.Items.Clear(); redeemPaymerFormTemplateWrapper.Control1RedeemTo.Items.AddRange(itemTemplates); var form = new SubmitForm(); ErrorFormDisplayHelper.ApplyErrorAction(context.ExtensionManager, form); form.ApplyTemplate(template); form.WorkCallback = (step, list) => { var valuesWrapper = new RedeemPaymerFormValuesWrapper(list); var transferService = context.UnityContainer.Resolve <ITransferService>(); transferService.RedeemPaymer(valuesWrapper.Control1RedeemTo, valuesWrapper.Control2Number, valuesWrapper.Control3Code); return(new Dictionary <string, object>()); }; return(form); }
private Form GetForm(SessionContext context, string phone) { var template = TemplateLoader.LoadSubmitFormTemplate(context.ExtensionManager, ExtensionCatalog.SendSms); var templateWrapper = new SendSmsFormTemplateWrapper(template); if (null != phone) { templateWrapper.Control1PhoneNumber.DefaultValue = phone; } var origin = new AccountDropDownListOrigin(context.UnityContainer); origin.FilterCriteria.HasMoney = true; origin.FilterCriteria.CurrencyCapabilities = CurrencyCapabilities.Transfer; var form = new SubmitForm(); ErrorFormDisplayHelper.ApplyErrorAction(context.ExtensionManager, form); form.ApplyTemplate(template); form.WorkCallback = (step, list) => { var valuesWrapper = new SendSmsFormValuesWrapper(list); var smsService = context.UnityContainer.Resolve <ISmsService>(); smsService.SendSms(null, valuesWrapper.Control1PhoneNumber, valuesWrapper.Control2Message, valuesWrapper.Control3UseTransliteration); return(new Dictionary <string, object>()); }; return(form); }
public TransferRegisterForm(SessionContext context, string accountNumber = null) { _context = context ?? throw new ArgumentNullException(nameof(context)); _currencyService = context.UnityContainer.Resolve <ICurrencyService>(); _formattingService = context.UnityContainer.Resolve <IFormattingService>(); InitializeComponent(); var origin = new AccountDropDownListOrigin(context.UnityContainer); origin.FilterCriteria.CurrencyCapabilities = CurrencyCapabilities.Actual | CurrencyCapabilities.Transfer; if (null != accountNumber) { origin.SelectedAccountNumber = accountNumber; } var itemTemplates = AccountDisplayHelper.BuildAccountDropDownListItemTemplates(origin); var accountDropDownListTemplate = new AccountDropDownListTemplate("[empty]"); accountDropDownListTemplate.Items.AddRange(itemTemplates); sourcePurseDropDownList.BeginUpdate(); sourcePurseDropDownList.Items.Clear(); sourcePurseDropDownList.ApplyTemplate(accountDropDownListTemplate); sourcePurseDropDownList.EndUpdate(); mTunableGrid.ParseCellValue += ParseCellValue; bundleNameTextBox.Click += (sender, args) => { mErrorProvider.SetError(bundleNameTextBox, null); }; }
private Form GetForm(SessionContext context, string accountNumber) { if (null == context) { throw new ArgumentNullException(nameof(context)); } var template = TemplateLoader.LoadSubmitFormTemplate(context.ExtensionManager, ExtensionCatalog.TakeTrust); var origin = new AccountDropDownListOrigin(context.UnityContainer) { Source = AccountSource.MasterIdentifier }; origin.FilterCriteria.CurrencyCapabilities = CurrencyCapabilities.Transfer; if (null != accountNumber) { origin.SelectedAccountNumber = accountNumber; } var itemTemplates = AccountDisplayHelper.BuildAccountDropDownListItemTemplates(origin); var step1TemplateWrapper = new TakeTrustFormTemplateWrapper.Step1(template); step1TemplateWrapper.Control1StorePurse.Items.Clear(); step1TemplateWrapper.Control1StorePurse.Items.AddRange(itemTemplates); var form = new SubmitForm(); ErrorFormDisplayHelper.ApplyErrorAction(context.ExtensionManager, form); form.ApplyTemplate(template); form.ServiceCommand += (sender, args) => { if (TakeTrustFormValuesWrapper.Step1.Control7WMIDCommandFindPassport.Equals(args.Command)) { var identifierValue = (string)args.Argument; IdentifierDisplayHelper.ShowFindCertificateForm(form, context, identifierValue); return; } if (TakeTrustFormValuesWrapper.Step2.Control4SmsReferenceCommandGoTo.Equals(args.Command)) { Process.Start((string)args.Argument); } }; form.WorkCallback = (step, list) => { var trustService = context.UnityContainer.Resolve <ITrustService>(); switch (step) { case 0: var step1ValuesWrapper = new TakeTrustFormValuesWrapper.Step1(list); ExtendedIdentifier extendedIdentifier; switch (step1ValuesWrapper.Control5IdentifierType) { case TakePaymentFormValuesWrapper.Step1.Control3IdentifierTypeValueWmid: extendedIdentifier = new ExtendedIdentifier(ExtendedIdentifierType.WmId, step1ValuesWrapper.Control7WMID); break; case TakePaymentFormValuesWrapper.Step1.Control3IdentifierTypeValuePhone: extendedIdentifier = new ExtendedIdentifier(ExtendedIdentifierType.Phone, step1ValuesWrapper.Control6Phone); break; case TakePaymentFormValuesWrapper.Step1.Control3IdentifierTypeValueEmail: extendedIdentifier = new ExtendedIdentifier(ExtendedIdentifierType.Email, step1ValuesWrapper.Control8Email); break; default: throw new InvalidOperationException( "step1ValuesWrapper.Control5IdentifierType == " + step1ValuesWrapper.Control5IdentifierType); } var originalExpressTrust = new OriginalExpressTrust(step1ValuesWrapper.Control1StorePurse, extendedIdentifier); originalExpressTrust.DayLimit = step1ValuesWrapper.Control2DailyAmountLimit; originalExpressTrust.WeekLimit = step1ValuesWrapper.Control3WeeklyAmountLimit; originalExpressTrust.MonthLimit = step1ValuesWrapper.Control4MonthlyAmountLimit; var trustConfirmationInstruction = trustService.RequestTrust(originalExpressTrust); var step2IncomeValuesWrapper = new TakeTrustFormValuesWrapper.Step2 { Control1RequestNumber = trustConfirmationInstruction.Reference.ToString(), Control2Message = trustConfirmationInstruction.PublicMessage ?? string.Empty, Control4SmsReference = !string.IsNullOrEmpty(trustConfirmationInstruction.SmsReference) ? string.Format(CultureInfo.InvariantCulture, CheckSmsStateUrlTemplate, trustConfirmationInstruction.SmsReference) : string.Empty }; return(step2IncomeValuesWrapper.CollectIncomeValues()); case 1: var step2ValuesWrapper = new TakeTrustFormValuesWrapper.Step2(list); var trustConfirmation = new TrustConfirmation(int.Parse(step2ValuesWrapper.Control1RequestNumber), step2ValuesWrapper.Control5Code); trustService.ConfirmTrust(trustConfirmation); break; } return(new Dictionary <string, object>()); }; return(form); }
public Form GetForm(IncomingInvoiceContext context) { if (null == context) { throw new ArgumentNullException(nameof(context)); } var invoice = context.Invoice; var currencyService = context.UnityContainer.Resolve <ICurrencyService>(); var currency = currencyService.ObtainCurrencyByAccountNumber(invoice.TargetPurse); var template = TemplateLoader.LoadSubmitFormTemplate(context.ExtensionManager, ExtensionCatalog.PayInvoice); var templateWrapper = new PayInvoiceFormTemplateWrapper(template); templateWrapper.Control4Amount.CurrencyName = currencyService.AddPrefix(currency); // Устанавливаем кошельки var origin = new AccountDropDownListOrigin(context.UnityContainer); // Оплата в долг не требует денег на кошельке, осуществляется с кредитного кошелька (WMC). if (currencyService.CheckCapabilities(currency, CurrencyCapabilities.Debit)) { currency = currencyService.SelectCurrencies(CurrencyCapabilities.Credit).First(); } else { origin.FilterCriteria.HasMoney = true; } origin.FilterCriteria.Currency = currency; origin.FilterCriteria.CurrencyCapabilities = CurrencyCapabilities.Actual | CurrencyCapabilities.TransferByInvoice; var itemTemplates = AccountDisplayHelper.BuildAccountDropDownListItemTemplates(origin); templateWrapper.Control11PayFrom.Items.Clear(); templateWrapper.Control11PayFrom.Items.AddRange(itemTemplates); // Запрещена оплата с протекцией if (null == invoice.ProtectionPeriod) { templateWrapper.Control12UsePaymentProtection.Enabled = false; } else { templateWrapper.Control14ProtectionPeriod.MaxValue = invoice.ProtectionPeriod.Value; } var formattingService = context.UnityContainer.Resolve <IFormattingService>(); var incomeValuesWrapper = new PayInvoiceFormValuesWrapper { Control1TargetIdentifier = formattingService.FormatIdentifier(invoice.TargetIdentifier), Control2TargetPurse = invoice.TargetPurse, Control3Amount = invoice.Amount, Control4Description = invoice.Description ?? string.Empty, Control5OrderId = invoice.OrderId.ToString(), Control6Address = invoice.Address ?? string.Empty, Control7PaymentPeriod = invoice.ExpirationPeriod.ToString(), Control9TransferId = context.Session.SettingsService.AllocateTransferId() }; if (null != invoice.ProtectionPeriod) { incomeValuesWrapper.Control8MaxProtectionPeriod = invoice.ProtectionPeriod.Value.ToString(); } var form = new SubmitForm(); ErrorFormDisplayHelper.ApplyErrorAction(context.ExtensionManager, form); form.ApplyTemplate(template, incomeValuesWrapper.CollectIncomeValues()); form.ServiceCommand += (sender, args) => { if (!PayInvoiceFormValuesWrapper.Control1TargetIdentifierCommandFindPassport.Equals(args.Command)) { return; } IdentifierDisplayHelper.ShowFindCertificateForm(form, context, (string)args.Argument); }; form.WorkCallback = (step, list) => { var valuesWrapper = new PayInvoiceFormValuesWrapper(list); var transferService = context.UnityContainer.Resolve <ITransferService>(); var originalTransfer = new OriginalTransfer(valuesWrapper.Control9TransferId, valuesWrapper.Control10PayFrom, invoice.TargetPurse, invoice.Amount, invoice.Description) { InvoiceId = invoice.PrimaryId }; if (valuesWrapper.Control11UsePaymentProtection) { originalTransfer.ProtectionPeriod = valuesWrapper.Control12ProtectionPeriod; if (valuesWrapper.Control14ProtectionByTime) { originalTransfer.ProtectionCode = valuesWrapper.Control13ProtectionCode; } } transferService.CreateTransfer(originalTransfer); return(new Dictionary <string, object>()); }; return(form); }
public Form GetForm(PurseContext context) { if (null == context) { throw new ArgumentNullException(nameof(context)); } var template = TemplateLoader.LoadSubmitFormTemplate(context.ExtensionManager, ExtensionCatalog.TakePayment); var origin = new AccountDropDownListOrigin(context.UnityContainer) { SelectedAccountNumber = context.Account.Number }; origin.FilterCriteria.CurrencyCapabilities = CurrencyCapabilities.Transfer; var itemTemplates = AccountDisplayHelper.BuildAccountDropDownListItemTemplates(origin); var step1TemplateWrapper = new TakePaymentFormTemplateWrapper.Step1(template); step1TemplateWrapper.Control2StorePurse.Items.Clear(); step1TemplateWrapper.Control2StorePurse.Items.AddRange(itemTemplates); var form = new SubmitForm(); ErrorFormDisplayHelper.ApplyErrorAction(context.ExtensionManager, form); var incomeValuesWrapper = new TakePaymentFormValuesWrapper.Step1 { Control2OrderId = context.Session.SettingsService.AllocateOrderId() }; form.ApplyTemplate(template, incomeValuesWrapper.CollectIncomeValues()); form.ServiceCommand += (sender, args) => { if (!TakePaymentFormValuesWrapper.Step1.Control5WMIDCommandFindPassport.Equals(args.Command)) { return; } var identifierValue = (string)args.Argument; IdentifierDisplayHelper.ShowFindCertificateForm(form, context, identifierValue); }; long invoiceId = 0; string purse = ""; form.WorkCallback = (step, list) => { var paymentService = context.UnityContainer.Resolve <IPaymentService>(); switch (step) { case 0: var step1ValuesWrapper = new TakePaymentFormValuesWrapper.Step1(list); ExtendedIdentifier extendedIdentifier; switch (step1ValuesWrapper.Control3IdentifierType) { case TakePaymentFormValuesWrapper.Step1.Control3IdentifierTypeValueWmid: extendedIdentifier = new ExtendedIdentifier(ExtendedIdentifierType.WmId, step1ValuesWrapper.Control5WMID); break; case TakePaymentFormValuesWrapper.Step1.Control3IdentifierTypeValuePhone: extendedIdentifier = new ExtendedIdentifier(ExtendedIdentifierType.Phone, step1ValuesWrapper.Control4Phone); break; case TakePaymentFormValuesWrapper.Step1.Control3IdentifierTypeValueEmail: extendedIdentifier = new ExtendedIdentifier(ExtendedIdentifierType.Email, step1ValuesWrapper.Control6Email); break; default: throw new InvalidOperationException( "step1ValuesWrapper.Control3IdentifierType == " + step1ValuesWrapper.Control3IdentifierType); } var originalExpressPayment = new OriginalExpressPayment(step1ValuesWrapper.Control2OrderId, step1ValuesWrapper.Control1StorePurse, step1ValuesWrapper.Control7PaymentAmount, step1ValuesWrapper.Control9Description, extendedIdentifier); originalExpressPayment.ConfirmationType = (ConfirmationType)Enum.Parse(typeof(ConfirmationType), step1ValuesWrapper.Control8ConfirmationType); purse = originalExpressPayment.TargetPurse; var confirmationInstruction = paymentService.RequestPayment(originalExpressPayment); invoiceId = confirmationInstruction.InvoiceId; var step2IncomeValuesWrapper = new TakePaymentFormValuesWrapper.Step2(); step2IncomeValuesWrapper.Control1InvoiceId = confirmationInstruction.InvoiceId.ToString(); step2IncomeValuesWrapper.Control2Message = confirmationInstruction.PublicMessage ?? string.Empty; return(step2IncomeValuesWrapper.CollectIncomeValues()); case 1: var step2ValuesWrapper = new TakePaymentFormValuesWrapper.Step2(list); var paymentConfirmation = new PaymentConfirmation(purse, invoiceId) { ConfirmationCode = step2ValuesWrapper.Control4CancelInvoice ? "-1" : step2ValuesWrapper.Control3Code }; paymentService.ConfirmPayment(paymentConfirmation); break; default: throw new InvalidOperationException("step == " + step); } return(new Dictionary <string, object>()); }; return(form); }
private Form GetForm(SessionContext context, string purseNumber, long?id, PaymentNumberKind numberKind) { var template = TemplateLoader.LoadSubmitFormTemplate(context.ExtensionManager, ExtensionCatalog.FindMerchantTransfer); var origin = new AccountDropDownListOrigin(context.UnityContainer) { SelectedAccountNumber = purseNumber }; origin.FilterCriteria.CurrencyCapabilities = CurrencyCapabilities.Invoice; var itemTemplates = AccountDisplayHelper.BuildAccountDropDownListItemTemplates(origin); var step1TemplateWrapper = new FindMerchantTransferFormTemplateWrapper.Step1(template); step1TemplateWrapper.Control1FromPurse.Items.Clear(); step1TemplateWrapper.Control1FromPurse.Items.AddRange(itemTemplates); var form = new SubmitForm(); ErrorFormDisplayHelper.ApplyErrorAction(context.ExtensionManager, form); var incomeValuesWrapperStep1 = new FindMerchantTransferFormValuesWrapper.Step1(); if (id.HasValue) { incomeValuesWrapperStep1.Control2Number = id.Value; } incomeValuesWrapperStep1.Control3NumberType = numberKind.ToString(); form.ApplyTemplate(template, incomeValuesWrapperStep1.CollectIncomeValues()); form.WorkCallback = (step, list) => { switch (step) { case 0: var valuesWrapperStep1 = new FindMerchantTransferFormValuesWrapper.Step1(list); var paymentService = context.UnityContainer.Resolve <IPaymentService>(); var merchantPayment = paymentService.FindPayment(valuesWrapperStep1.Control1FromPurse, valuesWrapperStep1.Control2Number, (PaymentNumberKind)Enum.Parse(typeof(PaymentNumberKind), valuesWrapperStep1.Control3NumberType)); var formattingService = context.UnityContainer.Resolve <IFormattingService>(); var records = new List <ResultRecord>(); records.Add(new ResultRecord( Translator.Instance.Translate(ExtensionCatalog.FindMerchantTransfer, "System transfer ID"), merchantPayment.TransferId.ToString())); records.Add(new ResultRecord( Translator.Instance.Translate(ExtensionCatalog.FindMerchantTransfer, "System invoice ID"), merchantPayment.InvoiceId.ToString())); records.Add(new ResultRecord( Translator.Instance.Translate(ExtensionCatalog.FindMerchantTransfer, "Amount"), formattingService.FormatAmount(merchantPayment.Amount))); records.Add(new ResultRecord( Translator.Instance.Translate(ExtensionCatalog.FindMerchantTransfer, "Creation time"), formattingService.FormatDateTime(merchantPayment.CreationTime))); records.Add(new ResultRecord( Translator.Instance.Translate(ExtensionCatalog.FindMerchantTransfer, "Description"), merchantPayment.Description ?? string.Empty)); records.Add(new ResultRecord( Translator.Instance.Translate(ExtensionCatalog.FindMerchantTransfer, "Source purse"), merchantPayment.SourcePurse ?? string.Empty)); records.Add(new ResultRecord( Translator.Instance.Translate(ExtensionCatalog.FindMerchantTransfer, "Source WMID"), formattingService.FormatIdentifier(merchantPayment.SourceIdentifier))); records.Add(new ResultRecord( Translator.Instance.Translate(ExtensionCatalog.FindMerchantTransfer, "Is Capitaller"), merchantPayment.IsCapitaller.ToString())); records.Add(new ResultRecord( Translator.Instance.Translate(ExtensionCatalog.FindMerchantTransfer, "Is enum"), merchantPayment.IsEnum.ToString())); records.Add(new ResultRecord( Translator.Instance.Translate(ExtensionCatalog.FindMerchantTransfer, "IP Address"), merchantPayment.IPAddress?.ToString())); records.Add(new ResultRecord( Translator.Instance.Translate(ExtensionCatalog.FindMerchantTransfer, "Telepat phone"), merchantPayment.TelepatPhone ?? string.Empty)); records.Add(new ResultRecord( Translator.Instance.Translate(ExtensionCatalog.FindMerchantTransfer, "Telepat method"), merchantPayment.TelepatMethod?.ToString() ?? string.Empty)); records.Add(new ResultRecord( Translator.Instance.Translate(ExtensionCatalog.FindMerchantTransfer, "Paymer number"), merchantPayment.PaymerNumber ?? string.Empty)); records.Add(new ResultRecord( Translator.Instance.Translate(ExtensionCatalog.FindMerchantTransfer, "Paymer email"), merchantPayment.PaymerEmail ?? string.Empty)); records.Add(new ResultRecord( Translator.Instance.Translate(ExtensionCatalog.FindMerchantTransfer, "Paymer type"), merchantPayment.PaymerType.ToString())); records.Add(new ResultRecord( Translator.Instance.Translate(ExtensionCatalog.FindMerchantTransfer, "Cashier number"), merchantPayment.CashierNumber ?? string.Empty)); records.Add(new ResultRecord( Translator.Instance.Translate(ExtensionCatalog.FindMerchantTransfer, "Cashier date"), merchantPayment.CashierDate?.ToString() ?? string.Empty)); var cashierAmountValue = string.Empty; if (null != merchantPayment.CashierAmount) { cashierAmountValue = formattingService.FormatAmount(merchantPayment.CashierAmount.Value); } records.Add(new ResultRecord( Translator.Instance.Translate(ExtensionCatalog.FindMerchantTransfer, "Cashier amount"), cashierAmountValue)); // TODO [M] добавить SDP // records.Add(new ResultRecord("sdp_type", merchantPayment.)); var valuesWrapperStep2 = new FindMerchantTransferFormValuesWrapper.Step2(); valuesWrapperStep2.Control1Payment = records.Select(r => new ListItemContent(r)).ToList(); return(valuesWrapperStep2.CollectIncomeValues()); case 1: return(new Dictionary <string, object>()); default: throw new InvalidOperationException("step == " + step); } }; if (null != id) { form.Load += (sender, args) => { form.Submit(); }; } return(form); }
public Form GetForm(SessionContext context, string sourceIdentifierValue, string targetAccountNumber) { if (null == context) { throw new ArgumentNullException(nameof(context)); } var template = TemplateLoader.LoadSubmitFormTemplate(context.ExtensionManager, ExtensionCatalog.CreateOutgoingInvoice); var templateWrapper = new CreateOutgoingInvoiceFormTemplateWrapper(template); if (null != sourceIdentifierValue) { templateWrapper.Control2ReceiversWmid.DefaultValue = sourceIdentifierValue; } // Кошельки var origin = new AccountDropDownListOrigin(context.UnityContainer); if (null != targetAccountNumber) { origin.SelectedAccountNumber = targetAccountNumber; } origin.FilterCriteria.CurrencyCapabilities = CurrencyCapabilities.Invoice; var itemTemplates = AccountDisplayHelper.BuildAccountDropDownListItemTemplates(origin); templateWrapper.Control3PayTo.Items.Clear(); templateWrapper.Control3PayTo.Items.AddRange(itemTemplates); var form = new SubmitForm(); ErrorFormDisplayHelper.ApplyErrorAction(context.ExtensionManager, form); var incomeValuesWrapper = new CreateOutgoingInvoiceFormValuesWrapper { Control1OrderId = context.Session.SettingsService.AllocateOrderId() }; form.ApplyTemplate(template, incomeValuesWrapper.CollectIncomeValues()); form.ServiceCommand += (sender, args) => { if (!CreateOutgoingInvoiceFormValuesWrapper.Control2ReceiversWmidCommandFindPassport .Equals(args.Command)) { return; } IdentifierDisplayHelper.ShowFindCertificateForm(form, context, (string)args.Argument); }; form.WorkCallback = (step, list) => { var valuesWrapper = new CreateOutgoingInvoiceFormValuesWrapper(list); var originalInvoice = new OriginalOutgoingInvoice(valuesWrapper.Control1OrderId, valuesWrapper.Control2ReceiversWmid, valuesWrapper.Control3PayTo, valuesWrapper.Control4Amount, valuesWrapper.Control5Description); if (valuesWrapper.Control6SpecifyAdditionalParameters) { originalInvoice.Address = valuesWrapper.Control7Address; if (valuesWrapper.Control8SpecifyPaymentPeriod) { originalInvoice.ExpirationPeriod = valuesWrapper.Control9PaymentPeriod; } if (valuesWrapper.Control10AllowPaymentWithProtection) { originalInvoice.ProtectionPeriod = valuesWrapper.Control11ProtectionPeriod; } } var invoiceService = context.UnityContainer.Resolve <IInvoiceService>(); invoiceService.CreateOutgoingInvoice(originalInvoice); return(new Dictionary <string, object>()); }; return(form); }
public Form GetForm(PurseContext context) { if (null == context) { throw new ArgumentNullException(nameof(context)); } var template = TemplateLoader.LoadSubmitFormTemplate(context.ExtensionManager, ExtensionCatalog.CreatePaymentLink); var step1TemplateWrapper = new CreatePaymentLinkFormTemplateWrapper.Step1(template); var origin = new AccountDropDownListOrigin(context.UnityContainer) { SelectedAccountNumber = context.Account.Number }; origin.FilterCriteria.CurrencyCapabilities = CurrencyCapabilities.Transfer; var itemTemplates = AccountDisplayHelper.BuildAccountDropDownListItemTemplates(origin); step1TemplateWrapper.Control1StorePurse.Items.Clear(); step1TemplateWrapper.Control1StorePurse.Items.AddRange(itemTemplates); var form = new SubmitForm(); ErrorFormDisplayHelper.ApplyErrorAction(context.ExtensionManager, form); var inputStep1ValuesWrapper = new CreatePaymentLinkFormValuesWrapper.Step1 { Control2OrderId = context.Session.SettingsService.AllocateOrderId() }; form.ApplyTemplate(template, inputStep1ValuesWrapper.CollectIncomeValues()); form.WorkCallback = (step, list) => { switch (step) { case 0: var step1ValuesWrapper = new CreatePaymentLinkFormValuesWrapper.Step1(list); var paymentLinkRequest = new PaymentLinkRequest(step1ValuesWrapper.Control2OrderId, step1ValuesWrapper.Control1StorePurse, step1ValuesWrapper.Control3PaymentAmount, step1ValuesWrapper.Control5Description) { Lifetime = step1ValuesWrapper.Control4ValidityPeriod }; var paymentService = context.UnityContainer.Resolve <IPaymentService>(); var link = paymentService.CreatePaymentLink(paymentLinkRequest); var step2ValuesWrapper = new CreatePaymentLinkFormValuesWrapper.Step2 { Control1PaymentLink = link }; return(step2ValuesWrapper.CollectIncomeValues()); case 1: return(new Dictionary <string, object>()); default: throw new InvalidOperationException("step == " + step); } }; return(form); }
public static Form CreateForm(SessionContext context, ITrust trust) { if (null == context) { throw new ArgumentNullException(nameof(context)); } var template = TemplateLoader.LoadSubmitFormTemplate(context.ExtensionManager, null == trust ? ExtensionCatalog.CreateTrust : ExtensionCatalog.UpdateTrust); if (null != trust) { template.Text = Translator.Instance.Translate(ExtensionCatalog.UpdateTrust, "Change trust"); } // Устанавливаем кошельки var origin = new AccountDropDownListOrigin(context.UnityContainer); origin.FilterCriteria.CurrencyCapabilities = CurrencyCapabilities.Actual; if (null != trust) { origin.Source = AccountSource.Trusts; origin.SelectedAccountNumber = trust.Purse; } var itemTemplates = AccountDisplayHelper.BuildAccountDropDownListItemTemplates(origin); var templateWrapper = new CreateTrustFormTemplateWrapper(template); templateWrapper.Control2PurseNumber.Items.Clear(); templateWrapper.Control2PurseNumber.Items.AddRange(itemTemplates); if (null != trust) { templateWrapper.Control1MasterIdentifier.ReadOnly = true; templateWrapper.Control2PurseNumber.Enabled = false; } var form = new SubmitForm(); ErrorFormDisplayHelper.ApplyErrorAction(context.ExtensionManager, form); var incomeValuesWrapper = new CreateTrustFormValuesWrapper(); if (null != trust) { var formattingService = context.UnityContainer.Resolve <IFormattingService>(); incomeValuesWrapper.Control1MasterIdentifier = formattingService.FormatIdentifier(trust.MasterIdentifier); incomeValuesWrapper.Control2PurseNumber = trust.Purse; incomeValuesWrapper.Control3InvoiceAllowed = trust.InvoiceAllowed; incomeValuesWrapper.Control4BalanceAllowed = trust.BalanceAllowed; incomeValuesWrapper.Control5HistoryAllowed = trust.HistoryAllowed; incomeValuesWrapper.Control6TransferAllowed = trust.TransferAllowed; if (trust.TransferAllowed) { incomeValuesWrapper.Control7DailyAmountLimit = trust.DayLimit; incomeValuesWrapper.Control8DayAmountLimit = trust.DayLimit; incomeValuesWrapper.Control9WeeklyAmountLimit = trust.WeekLimit; incomeValuesWrapper.Control10MonthlyAmountLimit = trust.MonthLimit; } } form.ApplyTemplate(template, incomeValuesWrapper.CollectIncomeValues()); form.ServiceCommand += (sender, args) => { if (!CreateTrustFormValuesWrapper.Control1MasterIdentifierCommandFindPassport.Equals(args.Command)) { return; } var identifierValue = (string)args.Argument; IdentifierDisplayHelper.ShowFindCertificateForm(form, context, identifierValue); }; form.WorkCallback = (step, list) => { var valuesWrapper = new CreateTrustFormValuesWrapper(list); var purse = null != trust ? trust.Purse : valuesWrapper.Control2PurseNumber; var originalTrust = new OriginalTrust(long.Parse(valuesWrapper.Control1MasterIdentifier), purse) { InvoiceAllowed = valuesWrapper.Control3InvoiceAllowed, BalanceAllowed = valuesWrapper.Control4BalanceAllowed, HistoryAllowed = valuesWrapper.Control5HistoryAllowed, TransferAllowed = valuesWrapper.Control6TransferAllowed }; if (valuesWrapper.Control6TransferAllowed) { originalTrust.DayLimit = valuesWrapper.Control8DayAmountLimit; originalTrust.WeekLimit = valuesWrapper.Control9WeeklyAmountLimit; originalTrust.MonthLimit = valuesWrapper.Control10MonthlyAmountLimit; } var trustService = context.UnityContainer.Resolve <ITrustService>(); trustService.CreateTrust(originalTrust); return(new Dictionary <string, object>()); }; form.FinalAction = objects => { EventBroker.OnTrustChanged(new DataChangedEventArgs { FreshDataRequired = true }); return(true); }; return(form); }
public static List <AccountDropDownListItemTemplate> BuildAccountDropDownListItemTemplates( AccountDropDownListOrigin origin) { if (null == origin) { throw new ArgumentNullException(nameof(origin)); } var purseService = origin.Container.Resolve <IPurseService>(); var currencyService = origin.Container.Resolve <ICurrencyService>(); var transferService = origin.Container.Resolve <ITransferService>(); List <IAccount> accounts; switch (origin.Source) { case AccountSource.CurrentIdentifier: accounts = purseService.SelectAccounts().ToList(); break; case AccountSource.MasterIdentifier: accounts = purseService.SelectAccounts(false, true).ToList(); break; case AccountSource.Trusts: { var fastAccounts = new List <Account>(); var trustService = origin.Container.Resolve <ITrustService>(); var trusts = trustService.SelectTrusts(); foreach (var trust in trusts) { fastAccounts.Add(new Account(trust.Purse, null, null)); } foreach (var account in purseService.SelectAccounts().ToList()) { var fastAccount = fastAccounts.FirstOrDefault(a => a.Number == account.Number); if (null != fastAccount) { fastAccount.Name = account.Name; fastAccount.Amount = account.Amount; } } accounts = new List <IAccount>(); accounts.AddRange(fastAccounts); } break; default: throw new ArgumentException("origin.Source == " + origin.Source); } var result = new List <AccountDropDownListItemTemplate>(); foreach (var account in accounts) { var currency = currencyService.ObtainCurrencyByAccountNumber(account.Number); if (null != origin.FilterCriteria) { if (null != origin.FilterCriteria.Currency && !currency.Equals(origin.FilterCriteria.Currency)) { continue; } if (origin.FilterCriteria.HasMoney && null != account.Amount && 0 == account.Amount.Value) { continue; } if (!currencyService.CheckCapabilities(currency, origin.FilterCriteria.CurrencyCapabilities)) { continue; } } decimal?amount = account.Amount; decimal?recommendedAmount = null; if (null != amount) { decimal commission = 0.01M; if (amount >= 0.01M) { commission = transferService.CalculateCommission(amount.Value, currency); } if (commission > amount.Value) { recommendedAmount = 0; } else { recommendedAmount = amount - commission; } } result.Add(new AccountDropDownListItemTemplate(account.Number) { Amount = amount, AvailableAmount = amount, RecommendedAmount = recommendedAmount, Currency = currencyService.AddPrefix(currency), Name = account.Name }); } if (null != origin.SelectedAccountNumber) { foreach (var itemTemplate in result) { if (itemTemplate.Number.Equals(origin.SelectedAccountNumber)) { itemTemplate.Selected = true; break; } } } return(result); }
public Form GetForm(PurseContext context) { if (null == context) { throw new ArgumentNullException(nameof(context)); } var template = TemplateLoader.LoadSubmitFormTemplate(context.ExtensionManager, ExtensionCatalog.CreateTransfer); var origin = new AccountDropDownListOrigin(context.UnityContainer) { SelectedAccountNumber = context.Account.Number }; origin.FilterCriteria.HasMoney = true; origin.FilterCriteria.CurrencyCapabilities = CurrencyCapabilities.Transfer; var itemTemplates = AccountDisplayHelper.BuildAccountDropDownListItemTemplates(origin); var templateWrapper = new CreateTransferFormTemplateWrapper(template); templateWrapper.Control3FromPurse.Items.Clear(); templateWrapper.Control3FromPurse.Items.AddRange(itemTemplates); var form = new SubmitForm(); ErrorFormDisplayHelper.ApplyErrorAction(context.ExtensionManager, form); var incomeValuesWrapper = new CreateTransferFormValuesWrapper { Control1TransferId = context.Session.SettingsService.AllocateTransferId() }; form.ApplyTemplate(template, incomeValuesWrapper.CollectIncomeValues()); form.ServiceCommand += (sender, args) => { if (!CreateTransferFormValuesWrapper.Control2ToPurseCommandFindIdentifier.Equals(args.Command)) { return; } IdentifierDisplayHelper.ShowFindIdentifierForm(form, context, (string)args.Argument); }; form.WorkCallback = (step, list) => { var valuesWrapper = new CreateTransferFormValuesWrapper(list); var transferService = context.UnityContainer.Resolve <ITransferService>(); var originalTransfer = new OriginalTransfer(valuesWrapper.Control1TransferId, valuesWrapper.Control3FromPurse, valuesWrapper.Control2ToPurse, valuesWrapper.Control4Amount, valuesWrapper.Control5Description); if (valuesWrapper.Control6UsePaymentProtection) { originalTransfer.ProtectionPeriod = valuesWrapper.Control7ProtectionPeriod; if (!valuesWrapper.Control9ProtectionByTime) { originalTransfer.ProtectionCode = valuesWrapper.Control8ProtectionCode; } } transferService.CreateTransfer(originalTransfer); return(new Dictionary <string, object>()); }; form.FinalAction = objects => { EventBroker.OnPurseChanged(new DataChangedEventArgs { FreshDataRequired = true }); return(true); }; return(form); }