public void RunAction(PurseContext context) { if (null == context) { throw new ArgumentNullException(nameof(context)); } var message = string.Format(CultureInfo.InvariantCulture, "{0} {1} {2}", Translator.Instance.Translate(ExtensionCatalog.ClearMerchantKey, "Merchant key for purse"), context.Account.Number, Translator.Instance.Translate(ExtensionCatalog.ClearMerchantKey, "will be deleted permanently.")); if (DialogResult.OK != MessageBox.Show(null, message, Translator.Instance.Translate(ExtensionCatalog.ClearMerchantKey, "Сonfirm deletion"), MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2)) { return; } var purseService = context.UnityContainer.Resolve <IPurseService>(); purseService.ClearMerchantKey(context.Account.Number); purseService.ClearSecretKeyX20(context.Account.Number); EventBroker.OnPurseChanged(new DataChangedEventArgs { FreshDataRequired = false }); }
public bool CheckCompatibility(PurseContext context) { if (null == context) { throw new ArgumentNullException(nameof(context)); } return(true); }
public bool CheckCompatibility(PurseContext context) { if (null == context) { throw new ArgumentNullException(nameof(context)); } return(context.Account.IsManuallyAdded); }
public bool CheckCompatibility(PurseContext context) { if (null == context) { throw new ArgumentNullException(nameof(context)); } return(context.Account.HasMerchantKey || context.Account.HasSecretKeyX20); }
public Form GetForm(PurseContext context) { if (null == context) { throw new ArgumentNullException(nameof(context)); } return(GetForm(context, context.Account.Number)); }
public bool CheckCompatibility(PurseContext context) { if (context.Account.Amount > 0) { return(true); } return(false); }
public void RunAction(PurseContext context) { if (null == context) { throw new ArgumentNullException(nameof(context)); } Copy(context.Account.Number); }
private static void FillPurse(Purse purse, List <Currency> currencies, PurseContext ctx) { purse.Accounts = new List <Account>(); var random = new Random(); for (var i = 0; i < 3; i++) { ctx.Accounts.Add(new Account() { Currency = currencies[random.Next(currencies.Count)], Amount = random.Next(1000, 30000), Purse = purse }); } }
public Form GetForm(PurseContext context) { if (null == context) { throw new ArgumentNullException(nameof(context)); } var template = TemplateLoader.LoadTemplate <TunableGridTemplate>(context.ExtensionManager, ExtensionCatalog.TransferRegister); var form = new TransferRegisterForm(context, context.Account.Number); form.ApplyTemlate(template); return(form); }
public bool CheckCompatibility(PurseContext context) { if (null == context) { throw new ArgumentNullException(nameof(context)); } var currencyService = context.UnityContainer.Resolve <ICurrencyService>(); var currency = currencyService.ObtainCurrencyByAccountNumber(context.Account.Number); if (!currencyService.CheckCapabilities(currency, CurrencyCapabilities.Invoice)) { return(false); } return(true); }
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); }
public static void Initialize(IServiceProvider serviceProvider) { using (var context = new PurseContext( serviceProvider.GetRequiredService < DbContextOptions <PurseContext> >())) { if (context.Users.Any()) { return; } string defaultSource = "https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml"; var currencies = Currency.Import(defaultSource); if (currencies != null) { currencies.ToList().ForEach(x => context.Currencies.Add(x)); var config = new Configuration() { CurrencySource = defaultSource, Updated = DateTime.Now.Date }; context.Configuration.Add(config); context.SaveChanges(); } var user1 = new User { Name = "Tom", Purse = new Purse() }; var user2 = new User { Name = "Ray", Purse = new Purse() }; context.Users.AddRange(user1, user2); context.SaveChanges(); FillPurse(user1.Purse, currencies.ToList(), context); FillPurse(user2.Purse, currencies.ToList(), context); context.SaveChanges(); } }
public bool CheckCompatibility(PurseContext context) { if (null == context) { throw new ArgumentNullException(nameof(context)); } var currencyService = context.UnityContainer.Resolve <ICurrencyService>(); var currency = currencyService.ObtainCurrencyByAccountNumber(context.Account.Number); if (!currencyService.CheckCapabilities(currency, CurrencyCapabilities.Actual | CurrencyCapabilities.Transfer)) { return(false); } if (AuthenticationMethod.KeeperClassic != context.Session.AuthenticationService.AuthenticationMethod && !context.Account.HasMerchantKey) { return(false); } return(true); }
public Form GetForm(PurseContext context) { return(new Form1("Выбран кошелек: " + context.Account.Number)); }
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); }
public EFUnitOfWork(string connectionString) { db = new PurseContext(connectionString); }
public Form GetForm(PurseContext context) { if (null == context) { throw new ArgumentNullException(nameof(context)); } var origin = new FilterOrigin(context.ExtensionManager, ExtensionCatalog.OutgoingInvoiceFilter) { MenuItemsTagName = ExtensionCatalog.Tags.OutgoingInvoiceExtension, CommandBarTagName = ExtensionCatalog.Tags.OutgoingInvoiceFilterExtension, ColumnsSettings = context.Session.SettingsService.GetSettings().OutgoingInvoiceSettings }; var template = FilterDisplayHelper.LoadFilterFormTemplate(origin); template.Title = string.Format(CultureInfo.InvariantCulture, "{0} {1}", Translator.Instance.Translate(ExtensionCatalog.TransferFilter, "Outgoing invoices by purse"), context.Account.Number); // Отключаем кнопки. foreach (var templateCommandButton in template.FilterScreen.CommandButtons) { var purseFormProvider = context.ExtensionManager.TryGetPurseFormProvider(templateCommandButton.Command); if (!(purseFormProvider?.CheckCompatibility(context) ?? false)) { templateCommandButton.Enabled = false; } } var form = new FilterForm(); ErrorFormDisplayHelper.ApplyErrorAction(context.ExtensionManager, form); var now = DateTime.Now; var incomeValuesWrapper = new OutgoingInvoiceFilterFormValuesWrapper { Control1FromTime = new DateTime(now.Year, now.Month, now.Day, 0, 0, 0, DateTimeKind.Local), Control2ToTime = new DateTime(now.Year, now.Month, now.Day, 23, 59, 59, DateTimeKind.Local) }; form.ApplyTemplate(template); form.ApplyShapeValues(incomeValuesWrapper.CollectIncomeValues()); // Сохранение документа form.SaveItemsCallback = (s, list) => { var importExportService = context.UnityContainer.Resolve <IImportExportService>(); importExportService.Save(list, s); }; // Сохранение настроек form.FormClosing += (sender, args) => { var settings = context.Session.SettingsService.GetSettings(); var outgoingInvoiceSettings = settings.OutgoingInvoiceSettings; FilterDisplayHelper.UpdateColumnsSettings(outgoingInvoiceSettings, form.SelectGridSettings()); context.Session.SettingsService.SetSettings(settings); context.Session.SettingsService.Save(); }; // Меню form.MenuItemResolver = (entity, command) => { var invoice = form.CurrentEntity as IOutgoingInvoice; if (null == invoice) { return(false); } var invoiceContext = new OutgoingInvoiceContext(context, invoice); var formProvider = context.ExtensionManager.TryGetOutgoingInvoiceFormProvider(command); return(formProvider?.CheckCompatibility(invoiceContext) ?? false); }; // Обработка событий. form.ServiceCommand += (sender, args) => { string command = args.Command; if (null == command) { throw new InvalidOperationException("null == command"); } if (command.StartsWith("CellContentClick:", StringComparison.Ordinal)) { return; } if (command.StartsWith("CellMouseDoubleClick:", StringComparison.Ordinal)) { command = ExtensionCatalog.Details; } var invoice = args.Argument as IOutgoingInvoice; // Кнопки if (null == invoice) { var formProvider = context.ExtensionManager.TryGetPurseFormProvider(command); formProvider?.GetForm(context).Show(form); } else { // Системная var formProvider = context.ExtensionManager.TryGetOutgoingInvoiceFormProvider(command); formProvider?.GetForm(new OutgoingInvoiceContext(context, invoice)) .Show(form); } }; // Команда Refresh form.WorkCallback = list => { var valuesWrapper = new OutgoingInvoiceFilterFormValuesWrapper(list); var invoiceService = context.UnityContainer.Resolve <IInvoiceService>(); var invoices = invoiceService.SelectOutgoingInvoices(context.Account.Number, valuesWrapper.Control1FromTime.ToUniversalTime(), valuesWrapper.Control2ToTime.ToUniversalTime(), true); var gridRowContentList = new List <GridRowContent>(); var operationSettings = context.Session.SettingsService.GetSettings().OperationSettings; decimal paid = 0; decimal notPaid = 0; decimal refused = 0; foreach (var invoice in invoices) { var gridRowContent = new GridRowContent(invoice.PrimaryId.ToString(), invoice); switch (invoice.State) { case InvoiceState.Paid: Paid: gridRowContent.ForeColor = operationSettings.OutcomeForeColor; gridRowContent.SelectionForeColor = operationSettings.OutcomeForeColor; break; case InvoiceState.PaidWithProtection: gridRowContent.BackColor = operationSettings.ProtectedColor; gridRowContent.SelectionBackColor = ColorUtility.CalculateSelectionColor(operationSettings.ProtectedColor); goto Paid; case InvoiceState.Refusal: gridRowContent.Strikeout = true; break; } switch (invoice.State) { case InvoiceState.NotPaid: notPaid += invoice.Amount; break; case InvoiceState.PaidWithProtection: case InvoiceState.Paid: paid += invoice.Amount; break; case InvoiceState.Refusal: refused += invoice.Amount; break; default: throw new ArgumentOutOfRangeException(); } gridRowContentList.Add(gridRowContent); } var chartPoint1 = new ChartPoint(Translator.Instance.Translate(ExtensionCatalog.OutgoingInvoiceFilter, "Paid"), (double)paid); var chartPoint2 = new ChartPoint( Translator.Instance.Translate(ExtensionCatalog.OutgoingInvoiceFilter, "Not paid"), (double)notPaid); var chartPoint3 = new ChartPoint( Translator.Instance.Translate(ExtensionCatalog.OutgoingInvoiceFilter, "Refused"), (double)refused); var filterScreenContent = new FilterScreenContent(); filterScreenContent.RowContentList.AddRange(gridRowContentList); if (paid > 0) { filterScreenContent.ChartPoints.Add(chartPoint1); } if (notPaid > 0) { filterScreenContent.ChartPoints.Add(chartPoint2); } if (refused > 0) { filterScreenContent.ChartPoints.Add(chartPoint3); } var formattingService = context.UnityContainer.Resolve <IFormattingService>(); var filterFormContent = new FilterFormContent(filterScreenContent); filterFormContent.LabelValues.Add( $"{Translator.Instance.Translate(ExtensionCatalog.TransferFilter, "PAID")}: {formattingService.FormatAmount(paid)}"); filterFormContent.LabelValues.Add( $"{Translator.Instance.Translate(ExtensionCatalog.TransferFilter, "UNP")}: {formattingService.FormatAmount(notPaid)}"); filterFormContent.LabelValues.Add( $"{Translator.Instance.Translate(ExtensionCatalog.TransferFilter, "REF")}: {formattingService.FormatAmount(refused)}"); return(filterFormContent); }; return(form); }
public AccountRepository(PurseContext context) { this.db = context; }
public RefillController(PurseContext context) { ctx = context; }
public TransactionRepository(PurseContext context) { this.db = context; }
public WithdrawController(PurseContext context) { ctx = context; }
public Form GetForm(PurseContext context) { if (null == context) { throw new ArgumentNullException(nameof(context)); } var origin = new FilterOrigin(context.ExtensionManager, ExtensionCatalog.TransferFilter) { MenuItemsTagName = ExtensionCatalog.Tags.TransferExtension, CommandBarTagName = ExtensionCatalog.Tags.TransferFilterExtension, ColumnsSettings = context.Session.SettingsService.GetSettings().TransferSettings }; var template = FilterDisplayHelper.LoadFilterFormTemplate(origin); template.Title = string.Format(CultureInfo.InvariantCulture, "{0} {1}", Translator.Instance.Translate(ExtensionCatalog.TransferFilter, "History by purse"), context.Account.Number); // Отключаем кнопки. foreach (var buttonTemplate in template.FilterScreen.CommandButtons) { var formProvider = context.ExtensionManager.TryGetPurseFormProvider(buttonTemplate.Command); if (!(formProvider?.CheckCompatibility(context) ?? false)) { buttonTemplate.Enabled = false; } } var form = new FilterForm(); ErrorFormDisplayHelper.ApplyErrorAction(context.ExtensionManager, form); form.ApplyTemplate(template); var now = DateTime.Now; var incomeValuesWrapper = new TransferFilterFormValuesWrapper { Control1FromTime = new DateTime(now.Year, now.Month, now.Day, 0, 0, 0, DateTimeKind.Local), Control2ToTime = new DateTime(now.Year, now.Month, now.Day, 23, 59, 59, DateTimeKind.Local) }; form.ApplyShapeValues(incomeValuesWrapper.CollectIncomeValues()); // Сохранение документа form.SaveItemsCallback = (s, list) => { var importExportService = context.UnityContainer.Resolve <IImportExportService>(); importExportService.Save(list, s); }; // Сохранение настроек form.FormClosing += (sender, args) => { var settings = context.Session.SettingsService.GetSettings(); var transferSettings = settings.TransferSettings; FilterDisplayHelper.UpdateColumnsSettings(transferSettings, form.SelectGridSettings()); context.Session.SettingsService.SetSettings(settings); context.Session.SettingsService.Save(); }; // Меню form.MenuItemResolver = (entity, command) => { var transfer = form.CurrentEntity as ITransfer; if (null == transfer) { return(false); } var transferContext = new TransferContext(context, transfer); var formProvider = context.ExtensionManager.TryGetTransferFormProvider(command); return(formProvider?.CheckCompatibility(transferContext) ?? false); }; // Обработка событий. form.ServiceCommand += (sender, args) => { string command = args.Command; if (null == command) { throw new InvalidOperationException("null == command"); } if (command.StartsWith("CellContentClick:", StringComparison.Ordinal)) { return; } if (command.StartsWith("CellMouseDoubleClick:", StringComparison.Ordinal)) { command = ExtensionCatalog.Details; } var transfer = args.Argument as ITransfer; // Кнопки if (null == transfer) { var formProvider = context.ExtensionManager.TryGetPurseFormProvider(command); formProvider?.GetForm(context).Show(form); } else { // Системная var formProvider = context.ExtensionManager.TryGetTransferFormProvider(command); formProvider?.GetForm(new TransferContext(context, transfer)) .Show(form); } }; // Команда Refresh form.WorkCallback = values => { var valuesWrapper = new TransferFilterFormValuesWrapper(values); var tansferService = context.UnityContainer.Resolve <ITransferService>(); var transfers = tansferService.SelectTransfers(context.Account.Number, valuesWrapper.Control1FromTime.ToUniversalTime(), valuesWrapper.Control2ToTime.ToUniversalTime(), !valuesWrapper.Control3OfflineSearch); var gridRowContentList = new List <GridRowContent>(); decimal income = 0; decimal outcome = 0; var operationSettings = context.Session.SettingsService.GetSettings().OperationSettings; foreach (var transfer in transfers) { var gridRowContent = new GridRowContent(transfer.PrimaryId.ToString(), transfer); switch (transfer.Type) { case TransferType.Regular: gridRowContent.SelectionBackColor = operationSettings.SelectionColor; break; case TransferType.Protected: Protected: gridRowContent.BackColor = operationSettings.ProtectedColor; gridRowContent.SelectionBackColor = ColorUtility.CalculateSelectionColor(operationSettings.ProtectedColor); break; case TransferType.Canceled: gridRowContent.Strikeout = true; goto Protected; } var foreColor = transfer.SourcePurse.Equals(context.Account.Number) ? operationSettings.OutcomeForeColor : operationSettings.IncomeForeColor; gridRowContent.ForeColor = foreColor; gridRowContent.SelectionForeColor = foreColor; if (TransferType.Canceled != transfer.Type && TransferType.Protected != transfer.Type) { if (transfer.SourcePurse.Equals(context.Account.Number)) { outcome += transfer.Amount; } else { income += transfer.Amount; } } gridRowContentList.Add(gridRowContent); } var chartPoint1 = new ChartPoint( Translator.Instance.Translate(ExtensionCatalog.TransferFilter, "Income"), (double)income) { Color = operationSettings.IncomeChartColor, FontColor = ChartFontColor }; var chartPoint2 = new ChartPoint( Translator.Instance.Translate(ExtensionCatalog.TransferFilter, "Outcome"), (double)outcome) { Color = operationSettings.OutcomeChartColor, FontColor = ChartFontColor }; var filterScreenContent = new FilterScreenContent(); filterScreenContent.RowContentList.AddRange(gridRowContentList); if (income > 0) { filterScreenContent.ChartPoints.Add(chartPoint1); } if (outcome > 0) { filterScreenContent.ChartPoints.Add(chartPoint2); } var formattingService = context.UnityContainer.Resolve <IFormattingService>(); var filterFormContent = new FilterFormContent(filterScreenContent); filterFormContent.LabelValues.Add( $"{Translator.Instance.Translate(ExtensionCatalog.TransferFilter, "IN")}: {formattingService.FormatAmount(income)}"); filterFormContent.LabelValues.Add( $"{Translator.Instance.Translate(ExtensionCatalog.TransferFilter, "OUT")}: {formattingService.FormatAmount(outcome)}"); return(filterFormContent); }; 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); }
public Form GetForm(PurseContext context) { if (null == context) { throw new ArgumentNullException(nameof(context)); } var incomeValuesWrapper = new SetMerchantKeyFormValuesWrapper(); if (context.Account.HasMerchantKey) { incomeValuesWrapper.Control1HasSecretKey = true; incomeValuesWrapper.Control2SecretKey = KeyMask; } if (context.Account.HasSecretKeyX20) { incomeValuesWrapper.Control3HasSecretKeyX20 = true; incomeValuesWrapper.Control4SecretKeyX20 = KeyMask; } var form = SubmitFormDisplayHelper.LoadSubmitFormByExtensionId(context.ExtensionManager, ExtensionCatalog.SetMerchantKey, incomeValuesWrapper.CollectIncomeValues()); form.WorkCallback = (step, list) => { var valuesWrapper = new SetMerchantKeyFormValuesWrapper(list); var purseService = context.UnityContainer.Resolve <IPurseService>(); if (valuesWrapper.Control1HasSecretKey) { if (!KeyMask.Equals(valuesWrapper.Control2SecretKey, StringComparison.Ordinal)) { purseService.SetMerchantKey(context.Account.Number, valuesWrapper.Control2SecretKey); } } else { purseService.ClearMerchantKey(context.Account.Number); } if (valuesWrapper.Control3HasSecretKeyX20) { if (!KeyMask.Equals(valuesWrapper.Control4SecretKeyX20, StringComparison.Ordinal)) { purseService.SetSecretKeyX20(context.Account.Number, valuesWrapper.Control4SecretKeyX20); } } else { purseService.ClearSecretKeyX20(context.Account.Number); } return(new Dictionary <string, object>()); }; form.FinalAction = objects => { EventBroker.OnPurseChanged(new DataChangedEventArgs { FreshDataRequired = false }); return(true); }; 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 TransferController(PurseContext context) { ctx = context; }
public DetailsController(PurseContext context) { ctx = context; }
public Control GetScreen(ScreenContainerContext context) { _context = context ?? throw new ArgumentNullException(nameof(context)); var origin = new AccountListScreenOrigin(context, ExtensionCatalog.PursesScreen) { MenuItemsTagName = ExtensionCatalog.Tags.PurseExtension, CommandBarTagName = ExtensionCatalog.Tags.PursesScreenExtension }; var template = AccountDisplayHelper.LoadListScreenTemplate(origin); _screen = new ListScreen { Dock = DockStyle.Fill }; ErrorFormDisplayHelper.ApplyErrorAction(context.ExtensionManager, _screen); EventBroker.PurseChanged += OnPurseChanged; _screen.Disposed += (sender, args) => { EventBroker.PurseChanged -= OnPurseChanged; }; _screen.ApplyTemplate(template); // Команда Refresh _screen.RefreshCallback += () => SelectAccounts(true); _screen.MenuItemResolver = (entity, command) => { var account = _screen.CurrentEntity as IAccount; if (null == account) { return(false); } var purseContext = new PurseContext(context, account); if (command.Equals(ExtensionCatalog.CopyPurseNumber) || command.Equals(ExtensionCatalog.ClearMerchantKey) || command.Equals(ExtensionCatalog.RemovePurse)) { var actionProvider = context.ExtensionManager.TryGetPurseActionProvider(command); return(actionProvider?.CheckCompatibility(purseContext) ?? false); } var formProvider = context.ExtensionManager.TryGetPurseFormProvider(command); return(formProvider?.CheckCompatibility(purseContext) ?? false); }; // Обработка событий. _screen.ServiceCommand += (sender, args) => { string command = args.Command; if (null == command) { throw new InvalidOperationException("null == command"); } switch (command) { case "BeginRefresh": context.ScreenContainer.OnStartProgress(); break; case "EndRefresh": context.ScreenContainer.OnStopProgress(); break; default: { var account = args.Argument as IAccount; // Кнопки if (null == account) { var formProvider = context.ExtensionManager.TryGetTopFormProvider(command); formProvider?.GetForm(context).Show(context.ScreenContainer); } else { if (command.Equals(TunableList.CellMouseDoubleClickCommandName)) { command = ExtensionCatalog.TransferFilter; } var purseContext = new PurseContext(context, account); // Системная if (command.Equals(ExtensionCatalog.CopyPurseNumber) || command.Equals(ExtensionCatalog.ClearMerchantKey) || command.Equals(ExtensionCatalog.RemovePurse)) { var actionProvider = context.ExtensionManager.TryGetPurseActionProvider(command); actionProvider?.RunAction(purseContext); } else { var formProvider = context.ExtensionManager.TryGetPurseFormProvider(command); formProvider?.GetForm(purseContext) .Show(context.ScreenContainer); } } } break; } }; _screen.DisplayContent(SelectAccounts(false)); return(_screen); }