/// <summary> /// Start recording multiple actions /// </summary> static public void BeginTransaction() { lock (Lock) { TransCommand = new TransactionCommand(); Transacting = true; } }
public virtual Response Pay(Request request) { Sam.Command.Abstract.Command command = new TransactionCommand(transaction); Response response = command.Execute(); voids.Add(command); return(response); }
/// <summary> /// End recording multiple actions /// </summary> static public void EndTransaction() { lock (Lock) { Transacting = false; var newState = new State(); newState.PrevCommand = TransCommand; AddNewState(newState); TransCommand = null; } }
public static Transaction MapToTransaction(TransactionCommand command) { return(new Transaction { AccountNumber = command.AccountNumber, AuthorizationCode = command.AuthorizationCode, Id = Guid.NewGuid(), MerchantId = command.MerchantId, TransactionDateTime = command.TransactionDateTime }); }
public bool ValidateTransaction(TransactionCommand command) { if (AmountIsNotMultipleOfUnit(command)) { throw new TransactionException("Amount is not multiple of currency sell unit"); } if (IsCurrenciesPublicationDateTooOld(command)) { throw new TransactionException("Currencies are out of date"); } return(true); }
public void Render_FullTransacion_AllFieldsTracked() { var info = new TransactionInfo("ord123", "Achme store", 250.45M, 10.15M, 15M, AnalyticsCurrency.DKK); info.AddItem("Black shirt", "S1002", "Shirts", 100M, 2); info.AddItem("White pants", "S1004", "Pants", 50.45M, 1); var subject = new TransactionCommand(info); string rendered = subject.RenderCommand(); Assert.That(rendered, Is.StringContaining("ga('ecommerce:addTransaction', {'id': 'ord123','affiliation': 'Achme store','revenue': 250.45,'shipping': 10.15,'tax': 15,'currency': 'DKK'});")); Assert.That(rendered, Is.StringContaining("ga('ecommerce:addItem', {'id': 'ord123','name': 'Black shirt','sku': 'S1002','category': 'Shirts','price': 100,'quantity': 2,'currency': 'DKK'});")); Assert.That(rendered, Is.StringContaining("ga('ecommerce:addItem', {'id': 'ord123','name': 'White pants','sku': 'S1004','category': 'Pants','price': 50.45,'quantity': 1,'currency': 'DKK'});")); Assert.That(rendered, Is.StringContaining("ga('ecommerce:send');")); }
public TransactionService ( IPlayerRepository playerRepository, ITransactionRepository transactionRepository, IBalanceRepository balanceRepository, IUnitOfWork unitOfWork ) { _playerRepository = playerRepository; _transactionRepository = transactionRepository; _balanceRepository = balanceRepository; _unitOfWork = unitOfWork; var operationCommand = new OperationCommand { DepositDelegate = Deposit, StakeDelegate = Stake, WinDelegate = Win }; _transactionCommand = new TransactionCommand(operationCommand); }
private void ParseCommand(string line) { if (string.IsNullOrEmpty(line)) { return; } //NOTE: Parse in ascending length order! if (line.Substring(0, 1).Equals("#")) { return; } if (line.Length < 4) { Warn("invalid command: {0}", line); return; } if (line.Substring(0, 4).ToLower().Equals("quit") || line.Substring(0, 4).ToLower().Equals("exit")) { return; } var idx = line.IndexOf(' '); string cmd; if (idx < 0) { idx = 0; cmd = line; } else { cmd = line.Substring(0, idx).ToLower(); } var args = idx == 0 ? string.Empty : line.Substring(idx + 1).Trim(); if (CR.abort.IndexOf(cmd, 0, StringComparison.Ordinal) == 0) { StartTimer(); var c = new AbortCommand(); c.Execute(context); StopTimer(CR.abort + " " + args); return; } if (CR.addalias.IndexOf(cmd, 0, StringComparison.Ordinal) == 0) { StartTimer(); var c = new AddAliasCommand(); c.Execute(context, args); StopTimer(CR.addalias + " " + args); return; } if (CR.addindex.IndexOf(cmd, 0, StringComparison.Ordinal) == 0) { StartTimer(); var c = new AddIndexCommand(); c.Execute(context, args); StopTimer(CR.addindex + " " + args); return; } if (CR.close.IndexOf(cmd, 0, StringComparison.Ordinal) == 0) { StartTimer(); var c = new CloseCommand(); c.Execute(context, args); StopTimer(CR.close + " " + args); return; } if (CR.commit.IndexOf(cmd, 0, StringComparison.Ordinal) == 0) { StartTimer(); var c = new CommitCommand(); c.Execute(context, args); StopTimer(CR.commit + " " + args); return; } if (CR.compactcontainer.IndexOf(cmd, 0, StringComparison.Ordinal) == 0) { StartTimer(); var c = new CompactContainerCommand(); c.Execute(context, args); StopTimer(CR.compactcontainer + " " + args); return; } if (CR.contextquery.IndexOf(cmd, 0, StringComparison.Ordinal) == 0) { StartTimer(); var c = new ContextQueryCommand(); c.Execute(context, args); StopTimer(CR.contextquery + " " + args); return; } if (CR.cquery.IndexOf(cmd, 0, StringComparison.Ordinal) == 0) { StartTimer(); var c = new CQueryCommand(); c.Execute(context, args); StopTimer(CR.cquery + " " + args); return; } if (CR.createcontainer.IndexOf(cmd, 0, StringComparison.Ordinal) == 0) { StartTimer(); var c = new CreateContainerCommand(); c.Execute(context, args); StopTimer(CR.createcontainer + " " + args); return; } if (CR.delindex.IndexOf(cmd, 0, StringComparison.Ordinal) == 0) { StartTimer(); var c = new DeleteIndexCommand(); c.Execute(context, args); StopTimer(CR.delindex + " " + args); return; } if (CR.echo.IndexOf(cmd, 0, StringComparison.Ordinal) == 0) { Msg(args); return; } if (CR.getdocuments.IndexOf(cmd, 0, StringComparison.Ordinal) == 0) { StartTimer(); var c = new GetDocumentsCommand(); c.Execute(context, args); StopTimer(CR.getdocuments + " " + args); return; } if (CR.getmetadata.IndexOf(cmd, 0, StringComparison.Ordinal) == 0) { StartTimer(); var c = new GetMetadataCommand(); c.Execute(context, args); StopTimer(CR.getmetadata + " " + args); return; } if (CR.help.IndexOf(cmd, 0, StringComparison.Ordinal) == 0) { var c = new HelpCommand(); c.Execute(args); return; } if (CR.info.IndexOf(cmd, 0, StringComparison.Ordinal) == 0) { StartTimer(); var c = new InfoCommand(); c.Execute(context, args); StopTimer(CR.info + " " + args); return; } if (CR.listindexes.IndexOf(cmd, 0, StringComparison.Ordinal) == 0) { StartTimer(); var c = new ListIndexesCommand(); c.Execute(context, args); StopTimer(CR.listindexes + " " + args); return; } if (CR.lookupedgeindex.IndexOf(cmd, 0, StringComparison.Ordinal) == 0) { StartTimer(); var c = new LookupEdgeIndexCommand(); c.Execute(context, args); StopTimer(CR.lookupedgeindex + " " + args); return; } if (CR.lookupindex.IndexOf(cmd, 0, StringComparison.Ordinal) == 0) { StartTimer(); var c = new LookupIndexCommand(); c.Execute(context, args); StopTimer(CR.lookupindex + " " + args); return; } if (CR.lookupstats.IndexOf(cmd, 0, StringComparison.Ordinal) == 0) { StartTimer(); var c = new LookupStatisticsCommand(); c.Execute(context, args); StopTimer(CR.lookupstats + " " + args); return; } if (CR.opencontainer.IndexOf(cmd, 0, StringComparison.Ordinal) == 0) { StartTimer(); var c = new OpenContainerCommand(); c.Execute(context, args); StopTimer(CR.opencontainer + " " + args); return; } if (CR.preload.IndexOf(cmd, 0, StringComparison.Ordinal) == 0) { StartTimer(); var c = new PreloadCommand(); c.Execute(context, args); StopTimer(CR.preload + " " + args); return; } if (CR.prepare.IndexOf(cmd, 0, StringComparison.Ordinal) == 0) { StartTimer(); var c = new PrepareCommand(); c.Execute(context, args); StopTimer(CR.prepare + " " + args); return; } if (CR.print.IndexOf(cmd, 0, StringComparison.Ordinal) == 0 || cmd.ToLower().Equals("printnames")) { StartTimer(); var c = new PrintCommand(); c.Execute(context, cmd.Equals("printnames") ? "printnames " + args : args); StopTimer(cmd.Equals("printnames") ? "printNames" : CR.print); return; } if (CR.putdocuments.Equals(cmd)) { StartTimer(); var c = new PutDocumentsCommand(); c.Execute(context, args); StopTimer(CR.putdocuments + " " + args); return; } if (CR.putdocument.IndexOf(cmd, 0, StringComparison.Ordinal) == 0) { StartTimer(); var c = new PutDocumentCommand(); c.Execute(context, args); StopTimer(CR.putdocument + " " + args); return; } if (CR.query.IndexOf(cmd, 0, StringComparison.Ordinal) == 0) { StartTimer(); var c = new QueryCommand(); c.Execute(context, args); StopTimer(CR.query + " " + args); return; } if (CR.queryplan.IndexOf(cmd, 0, StringComparison.Ordinal) == 0) { StartTimer(); var c = new QueryPlanCommand(); c.Execute(context, args); StopTimer(CR.queryplan + " " + args); return; } if (CR.reindexcontainer.IndexOf(cmd, 0, StringComparison.Ordinal) == 0) { StartTimer(); var c = new ReindexContainerCommand(); c.Execute(context, args); StopTimer(CR.reindexcontainer + " " + args); return; } if (CR.removealias.IndexOf(cmd, 0, StringComparison.Ordinal) == 0) { StartTimer(); var c = new RemoveAliasCommand(); c.Execute(context, args); StopTimer(CR.removealias + " " + args); return; } if (CR.removecontainer.IndexOf(cmd, 0, StringComparison.Ordinal) == 0) { StartTimer(); var c = new RemoveContainerCommand(); c.Execute(context, args); StopTimer(CR.removecontainer + " " + args); return; } if (CR.removedocument.IndexOf(cmd, 0, StringComparison.Ordinal) == 0) { StartTimer(); var c = new RemoveDocumentCommand(); c.Execute(context, args); StopTimer(CR.removedocument + " " + args); return; } if (CR.run.IndexOf(cmd, 0, StringComparison.Ordinal) == 0) { var c = new RunCommand(); c.Execute(context, args); var l2 = new List <string>(originalArgs) { "-s", c.Script }; StartTimer(); Main(l2.ToArray()); StopTimer(CR.run + " " + args); return; } if (CR.setautoindexing.IndexOf(cmd, 0, StringComparison.Ordinal) == 0) { StartTimer(); var c = new SetAutoIndexingCommand(); c.Execute(context, args); StopTimer(CR.setautoindexing + " " + args); return; } if (CR.setbaseuri.IndexOf(cmd, 0, StringComparison.Ordinal) == 0) { StartTimer(); var c = new SetBaseUriCommand(); c.Execute(context, args); StopTimer(CR.setbaseuri + " " + args); return; } if (CR.setignore.IndexOf(cmd, 0, StringComparison.Ordinal) == 0) { var c = new SetIgnoreCommand(); c.Execute(context, args); ignoreErrors = c.Ignore; return; } if (CR.setlazy.IndexOf(cmd, 0, StringComparison.Ordinal) == 0) { StartTimer(); var c = new SetLazyCommand(); c.Execute(context, args); StopTimer(CR.setlazy + " " + args); return; } if (CR.setmetadata.IndexOf(cmd, 0, StringComparison.Ordinal) == 0) { StartTimer(); var c = new SetMetadataCommand(); c.Execute(context, args); StopTimer(CR.setmetadata + " " + args); return; } if (CR.setnamespace.IndexOf(cmd, 0, StringComparison.Ordinal) == 0) { StartTimer(); var c = new SetNamespaceCommand(); c.Execute(context, args); StopTimer(CR.setnamespace + " " + args); return; } if (CR.setprojection.IndexOf(cmd, 0, StringComparison.Ordinal) == 0) { StartTimer(); var c = new SetProjectionCommand(); c.Execute(context, args); StopTimer(CR.setprojection + " " + args); return; } if (CR.setquerytimeout.IndexOf(cmd, 0, StringComparison.Ordinal) == 0) { StartTimer(); var c = new SetQueryTimeoutCommand(); c.Execute(context, args); StopTimer(CR.setquerytimeout + " " + args); return; } if (CR.setvariable.IndexOf(cmd, 0, StringComparison.Ordinal) == 0) { StartTimer(); var c = new SetVariableCommand(); c.Execute(context, args); StopTimer(CR.setvariable + " " + args); return; } if (CR.setverbose.IndexOf(cmd, 0, StringComparison.Ordinal) == 0) { StartTimer(); var c = new SetVerboseCommand(); c.Execute(context, args); StopTimer(CR.setverbose + " " + args); return; } if (CR.sync.IndexOf(cmd, 0, StringComparison.Ordinal) == 0) { StartTimer(); context.Sync(); StopTimer(CR.sync + " " + args); return; } if (CR.time.IndexOf(cmd, 0, StringComparison.Ordinal) == 0) { time = true; ParseCommand(args); return; } if (CR.transaction.IndexOf(cmd, 0, StringComparison.Ordinal) == 0) { StartTimer(); var c = new TransactionCommand(); c.Execute(context, args); StopTimer(CR.transaction + " " + args); return; } if (CR.upgradecontainer.IndexOf(cmd, 0, StringComparison.Ordinal) == 0) { StartTimer(); var c = new UpgradeContainerCommand(); c.Execute(context, args); StopTimer(CR.upgradecontainer + " " + args); return; } Warn("Command not recognized: {0}", cmd); }
public MessageInfo(TransactionCommand command, string messageId, int deliverCount, DateTime enqueuedTimeUtc) { Command = command; }
/// <summary> /// 操作を実行し、かつその内容を履歴に追加します。 /// </summary> /// <param name="doMethod">操作を行なうメソッド</param> /// <param name="doParamater">doMethodに必要な引数</param> /// <param name="undoMethod">操作を行なう前の状態に戻すためのメソッド</param> /// <param name="undoParamater">undoMethodに必要な引数</param> public void Do(Delegate doMethod, object[] doParamater, Delegate undoMethod, object[] undoParamater) { TransactionCommand command = new TransactionCommand(doMethod, doParamater, undoMethod, undoParamater); this.Do(command); }
public async Task <IActionResult> DoCommand([FromBody] TransactionCommand command) { var updateddata = await mediator.Send(command); return(Ok(updateddata)); }
private bool AmountIsNotMultipleOfUnit(TransactionCommand command) { return(command.Amount % command.Currency.Unit != 0); }
private bool IsCurrenciesPublicationDateTooOld(TransactionCommand command) { double totalDaysOutOfDate = (DateTime.Now - command.CantorWallet.PublicationDate).TotalDays; return(totalDaysOutOfDate > 2); }
public static async Task Run( [BlobTrigger("data/{filename}", Connection = "DataStorageConnectionString")] Stream blob, string filename, ILogger log) { const int MaxErrorCount = 5; // Maximum number of line parse errors before exception thrown log.LogInformation($"NewFile Blob trigger function Processed blob\n Name:{filename} \n Size: {blob.Length} Bytes"); // Can't get DI to work in WebJobs SDK :| _config = Program.Services.GetService <IConfiguration>(); // Each line in the CSV is a transaction. Create Command as Event Data for each transaction. // Batches cannot be larger than 1MB so split the events into batches. var batches = new List <EventDataBatch>(); batches.Add(EventHubClient.CreateBatch()); int batchNo = 0; decimal checksum = 0; int i = 0; int errorCount = 0; using (StreamReader reader = new StreamReader(blob)) { while (reader.Peek() >= 0) { i++; if (i == 1) { // ignore header reader.ReadLine(); continue; } // Parse line and create Command TransactionCommand command = null; try { command = ParseLineToCommand(log, filename, i, reader.ReadLine()); } catch (InvalidOperationException ex) { errorCount++; log.LogError(ex, $"errorCount = {errorCount}. {ex.Message}"); if (errorCount > MaxErrorCount) { throw; } } if (!batches[batchNo].TryAdd(new EventData(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(command))))) { // If TryAdd() fails, batch is full log.LogInformation($"Batch {batchNo} is full at line {i}. Adding new batch"); // Create a new batch and add event batches.Add(EventHubClient.CreateBatch()); batchNo++; if (!batches[batchNo].TryAdd(new EventData(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(command))))) { throw new InvalidOperationException(); } } // Taking a running checksum to compare with other parts of the pipeline checksum += command.Amount; } } // Send all transaction events in batched operations // https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-dotnet-standard-getstarted-send int eventCount = 0; foreach (EventDataBatch batch in batches) { log.LogInformation($"Sending batch of {batch.Count} events."); await EventHubClient.SendAsync(batch); eventCount += batch.Count; } log.LogInformation($"Filename: {filename}"); log.LogInformation($"Lines (incl. header): {i}"); log.LogInformation($"Events: {eventCount}"); log.LogInformation($"Batches: {batches.Count}"); log.LogInformation($"Sum of amount: {checksum}"); }
public CommitTransactionLocalDataViewCommand(TransactionCommand command) : base(command) { TransactionModes = TransactionModes.Commit; }