Esempio n. 1
0
        public int Create(Entity entity)
        {
            var em = _domainService.Domain.Entities[entity.Name];

            CheckEntityRules(entity, em);

            StringBuilder sb = new StringBuilder();

            sb.AppendFormat("INSERT INTO [{0}] (", entity.Name);

            foreach (var pm in em.Properties.Where(p => p.Type == PropertyType.Sequence))
            {
                var sqpm = (SequencePropertyModel)pm;
                if (sqpm.SequenceType != SequenceType.Identity)
                {
                    var value = _sequenceProvider.GetNext(sqpm);
                    entity.Data[sqpm.Name] = value;
                }
            }

            string[]   columns    = new string[entity.Data.Count];
            string[]   parameters = new string[entity.Data.Count];
            int        idx        = 0;
            SqlCommand cmd        = new SqlCommand();

            foreach (var data in entity.Data)
            {
                var pm = em.Properties[data.Key];
                columns[idx]    = string.Format("[{0}]", pm.Name);
                parameters[idx] = string.Format("@{0}", pm.Name);
                cmd.Parameters.AddWithValue(pm.Name, data.Value != null ? data.Value : DBNull.Value);

                idx++;
            }

            using (var ctx = _dbService.GetDatabaseContext(true))
            {
                var sql = string.Format("INSERT INTO [{0}] ({1}) OUTPUT INSERTED.ID VALUES ({2})", em.Name, string.Join(",", columns), string.Join(",", parameters));
                cmd.CommandText = sql;
                cmd.Connection  = ctx.Connection;
                try
                {
                    int id = (Int32)cmd.ExecuteScalar();
                    entity.Id = id;
                    ctx.Complete();
                    return(id);
                }
                catch (SqlException sex)
                {
                    throw WrapSqlException(sex, em);
                }
            }
        }
        public OrderCommandsHandler(ISequenceProvider sequenceProvider)
        {
            Map <CreateOrderCommand>(c => new Order(c.OrderId, sequenceProvider.GetNext(OrdersSequenceName), c.UserId));

            Map <AddItemToOrderCommand>((c, a) => a.AddItem(c.SkuId, c.Quantity, c.TotalPrice));

            Map <CalculateOrderTotalCommand>((c, a) => a.CalculateTotal());

            Map <CompleteOrderCommand>((c, a) => a.Complete());
        }
Esempio n. 3
0
        public async Task <UserCreatedViewModel> CreateUser([FromBody] CreateUserViewModel userViewModel)
        {
            var createUserCommand    = new CreateUserCommand(Guid.NewGuid(), userViewModel.Login, Guid.NewGuid());
            var accountNumber        = _accountNumberProvider.GetNext(AccountSequenceName);
            var createAccountCommand = new CreateAccountCommand(createUserCommand.AccountId, createUserCommand.UserId, accountNumber);
            await _commandBus.Execute(createUserCommand);

            await _commandBus.Execute(createAccountCommand);

            return(new UserCreatedViewModel(createUserCommand.UserId, createAccountCommand.AccountId, accountNumber));
        }
 private SkuStockHistory CreateHistory(SkuStock skuStock, StockOperation stockOperation, int quantity)
 {
     return(new SkuStockHistory
     {
         OldAvailableQuantity = skuStock.AvailableQuantity,
         OldTotalQuantity = skuStock.TotalQuantity,
         OldReservedQuantity = skuStock.ReservedQuantity,
         Operation = stockOperation,
         Quanity = quantity,
         StockId = skuStock.Id,
         Number = _sequenceProvider.GetNext(SkuHistorySequenceName)
     });
 }
Esempio n. 5
0
 public SkuCommandsHandler(ISequenceProvider provider)
 {
     Map <CreateNewSkuCommand>(c => new Sku(c.SkuId, c.Name, c.Article, (int)provider.GetNext("Sku"), c.Price));
 }
Esempio n. 6
0
 private ModelNodeId CreateModelNodeId() => new ModelNodeId(_sequenceProvider.GetNext());
Esempio n. 7
0
        protected TestLayoutVertex CreateTestLayoutVertex([NotNull] string name, int priority = 1)
        {
            var id = _sequenceProvider.GetNext();

            return(new TestLayoutVertex(id, name, priority));
        }
Esempio n. 8
0
 /// <summary>
 /// Liefert den Wert der Sequenz und setzt diese einen Schritt weiter.
 /// Falls die Sequenz nicht existiert, wird sie angelegt mit dem gegebenen Startwert.
 /// </summary>
 /// <param name="sequenceId">Bezeichnung der Sequenz.</param>
 /// <param name="startValue">Erster wert für die Sequenz.</param>
 /// <returns>Den Wert der Sequenz oder null falls die Sequenz nicht existiert.</returns>
 public int GetNext(string sequenceId, int startValue)
 {
     return(parent.GetNext(BuildSequenceId(sequenceId), startValue));
 }