Exemplo n.º 1
0
 /// <summary>
 /// Start recording multiple actions
 /// </summary>
 static public void BeginTransaction()
 {
     lock (Lock)
     {
         TransCommand = new TransactionCommand();
         Transacting  = true;
     }
 }
Exemplo n.º 2
0
        public virtual Response Pay(Request request)
        {
            Sam.Command.Abstract.Command command = new TransactionCommand(transaction);
            Response response = command.Execute();

            voids.Add(command);

            return(response);
        }
Exemplo n.º 3
0
 /// <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;
     }
 }
Exemplo n.º 4
0
 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);
 }
Exemplo n.º 6
0
        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');"));
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 9
0
 public MessageInfo(TransactionCommand command, string messageId, int deliverCount, DateTime enqueuedTimeUtc)
 {
     Command = command;
 }
Exemplo n.º 10
0
        /// <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);
        }
Exemplo n.º 14
0
        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;
 }