示例#1
0
        public async Task <Order> GetOrderWithWithStocksAndProductsById(int id)
        {
            var entityOrder = await _ctx.Orders
                              .Where(x => x.Id == id)
                              .Include(x => x.OrderStocks)
                              .ThenInclude(x => x.Stock)
                              .ThenInclude(x => x.Product)
                              .SingleOrDefaultAsync();

            if (entityOrder is null)
            {
                throw new ArgumentException("There is no such order.");
            }

            var order = Projections.EntityOrderToDomainOrder(entityOrder);

            order.OrderStocks = entityOrder.OrderStocks.Select(x =>
            {
                var orderStock = new OrderStock
                {
                    StockId = x.StockId,
                    Qty     = x.Qty,

                    Stock = Projections.EntityStockToDomainStock(x.Stock),
                };

                orderStock.Stock.Product = Projections.EntityProductToDomainProduct(x.Stock.Product);

                return(orderStock);
            });

            return(order);
        }
示例#2
0
        public void SavesOrderStockToDatabase()
        {
            //Arrange
            var product = new Product
            {
                Name        = "ProductName",
                Description = "ProductDescription",
                Value       = 100,
                Stock       = null
            };

            var order = new Order
            {
                FirstName       = "FirstName",
                LastName        = "LastName",
                Address1        = "Address1",
                Address2        = "Address2",
                City            = "City",
                Email           = "*****@*****.**",
                OrderRef        = "REF",
                OrderStocks     = null,
                Status          = 0,
                PhoneNumber     = "8-800-555-35-35",
                PostCode        = "123",
                StripeReference = ""
            };

            var stock = new Stock
            {
                Description = "Description",
                Product     = product,
                ProductID   = 1,
                OrderStocks = null,
                Qty         = 1
            };

            var orderStock = new OrderStock
            {
                Order   = order,
                OrderID = 1,
                Qty     = 1,
                Stock   = stock,
                StockID = 1
            };

            //Act
            using (var ctx = CreateDbContext(nameof(SavesOrderStockToDatabase)))
            {
                ctx.OrderProducts.Add(orderStock);
                ctx.SaveChanges();
            }

            //Assert
            using (var ctx = CreateDbContext(nameof(SavesOrderStockToDatabase)))
            {
                var savedOrderStock = ctx.OrderProducts.Single();
                Assert.Equal(orderStock.OrderID, savedOrderStock.OrderID);
            }
        }
示例#3
0
	protected void OnRunReferenceItemDialog(object sender, Reference.RunReferenceItemDlgEventArgs e)
	{
		ResponseType Result;
		switch(e.TableName)
		{
			case "models":
				CarModelDlg ItemModel = new CarModelDlg();
				if(e.NewItem)
					ItemModel.NewItem = true;
				else
					ItemModel.Fill(e.ItemId);
				ItemModel.Show();
				Result = (ResponseType)ItemModel.Run();
				ItemModel.Destroy();
				break;
			case "status":
				Status StatusEdit = new Status();
				if(e.NewItem)
					StatusEdit.NewItem = true;
				else
					StatusEdit.Fill(e.ItemId);
				StatusEdit.Show();
				Result = (ResponseType)StatusEdit.Run();
				StatusEdit.Destroy();
				break;
			case "services":
				ServiceDlg ServiceEdit = new ServiceDlg();
				if(e.NewItem)
					ServiceEdit.NewItem = true;
				else
					ServiceEdit.Fill(e.ItemId);
				ServiceEdit.Show();
				Result = (ResponseType)ServiceEdit.Run();
				ServiceEdit.Destroy();
				break;
			case "stocks":
				OrderStock StocksEdit = new OrderStock();
				if(e.NewItem)
					StocksEdit.NewItem = true;
				else
					StocksEdit.Fill(e.ItemId);
				StocksEdit.Show();
				Result = (ResponseType)StocksEdit.Run();
				StocksEdit.Destroy();
				break;
			case "order_type":
				OrderTypeDlg OrderTypeEdit = e.NewItem ? new OrderTypeDlg() : new OrderTypeDlg(e.ItemId);
				OrderTypeEdit.Show();
				Result = (ResponseType)OrderTypeEdit.Run();
				OrderTypeEdit.Destroy();
				break;
			default:
				Result = ResponseType.None;
				break;
		}
		e.Result = Result;
	}
示例#4
0
        public async Task AddOrderStockAsync(OrderStock entity)
        {
            var sql = "insert into \"OrderStocks\" (order_id, prod_id, curr_stocks, shop_id) values (" + entity.order_id + ", " + entity.prod_id + ", " + entity.curr_stocks + ", " + entity.shop_id + ")";

            using (var db = new NpgsqlConnection(conn))
            {
                db.Open();
                await db.ExecuteAsync(sql);
            }
        }
示例#5
0
        public async Task UpdateOrderStockAsync(OrderStock entity)
        {
            var sql = "update \"OrderStocks\" set curr_stocks = " + isNotNull(entity.curr_stocks) + " where id = " + entity.id;

            using (var db = new NpgsqlConnection(conn))
            {
                db.Open();
                await db.ExecuteAsync(sql);
            }
        }
示例#6
0
 private async Task OrderStrategy(Order order)
 {
     foreach (var orderDetail in order.OrderDetails)
     {
         var orderStock = new OrderStock
         {
             order_id    = orderDetail.id,
             prod_id     = orderDetail.prod_id,
             curr_stocks = orderDetail.count,
             shop_id     = order.shop_id
         };
         await _orderStockRepo.AddOrderStockAsync(orderStock);
         await UpdateCostAndStocks(orderDetail.prod_id, order.shop_id);
     }
 }
示例#7
0
        private async Task OrderStrategyUow(Order order, IUnitOfWork uow)
        {
            _orderStockRepo = new OrderStockRepository(uow);

            foreach (var orderDetail in order.OrderDetails)
            {
                var orderStock = new OrderStock
                {
                    order_id    = orderDetail.id,
                    prod_id     = orderDetail.prod_id,
                    curr_stocks = orderDetail.count,
                    shop_id     = order.shop_id
                };
                await _orderStockRepo.InsertUow(orderStock);
                await UpdateCostAndStocksUow(orderDetail.prod_id, order.shop_id, uow);
            }
        }
示例#8
0
 private void RecordPurchasedBooksFromStocks(List <Tuple <Stock, OrderItem, int> > pConsumedStocks, BookStoreEntityModelContainer pContainer)
 {
     try
     {
         foreach (Tuple <Stock, OrderItem, int> consumedStock in pConsumedStocks)
         {
             OrderStock orderStock = new OrderStock()
             {
                 Quantity  = consumedStock.Item3,
                 Stock     = consumedStock.Item1,
                 OrderItem = consumedStock.Item2
             };
             pContainer.OrderStocks.Add(orderStock);
         }
     }
     catch (Exception lException)
     {
         throw;
     }
 }
示例#9
0
        public void SwapToOrder(string x)
        {
            using (PersonDbContext context = new PersonDbContext())
            {
                var DataGeneralStock = context.GeneralStock
                                       .FirstOrDefault(p => p.StockName == x);
                var DataOrders = context.Orders
                                 .ToList();
                var DataPeople = context.People
                                 .ToList();

                if (DataGeneralStock == null)
                {
                    Console.WriteLine("Error! Item Not found!");
                }
                else
                {
                    Orders ords;
                    int    ordsOrderId;
                    try
                    {
                        ordsOrderId = context.Orders.Max(o => o.OrderId) + 1;
                    }
                    catch (Exception)
                    {
                        ordsOrderId = 1;
                    }
                    if (MyOrderManager.GetCurrentOrder().GetItems().Count <= 1)
                    {
                        ords = new Orders()
                        {
                            OrderId   = ordsOrderId,
                            PersonId  = context.People.First(p => p.Username == MyPersonManager.GetCurrentUser().GetName()).PersonId,
                            Price     = 0,
                            OrderDate = DateTime.Now
                        };
                        context.Orders.Add(ords);
                    }
                    else
                    {
                        var w = context.People.First(p => p.Username == MyPersonManager.GetCurrentUser().GetName()).PersonId;
                        var e = context.Orders.Max(p => p.OrderId);
                        ords = context.Orders.First(p => p.OrderId == e);
                    }
                    var count = (from orsto in context.OrderStock select orsto.OrderId).Count();
                    if (count == 0)
                    {
                        var q = context.StoreStock
                                .First(p => p.StoreStockId == DataGeneralStock.StoreStockId);
                        context.StoreStock.Remove(q);
                        DataGeneralStock.StoreStockId = null;
                        OrderStock ordsto = new OrderStock
                        {
                            OrderStockId = 1,
                            OrderId      = ords.OrderId
                        };
                        DataGeneralStock.OrderStockId = ordsto.OrderStockId;
                        context.OrderStock.Add(ordsto);
                    }
                    else
                    {
                        var q = context.StoreStock
                                .First(p => p.StoreStockId == DataGeneralStock.StoreStockId);
                        context.StoreStock.Remove(q);
                        DataGeneralStock.StoreStockId = null;
                        OrderStock ordsto = new OrderStock
                        {
                            OrderStockId = context.OrderStock.Max(stock => stock.OrderStockId) + 1,
                            OrderId      = ords.OrderId
                        };
                        DataGeneralStock.OrderStockId = ordsto.OrderStockId;
                        context.OrderStock.Add(ordsto);
                        DataGeneralStock.OrderStockId = context.OrderStock.Max(order => order.OrderStockId) + 1;
                    }
                    double totalprice = 0;
                    foreach (var val in MyOrderManager.GetCurrentOrder().GetItems())
                    {
                        totalprice = totalprice + val.GetPrice();
                    }

                    ords.Price = Convert.ToDecimal(totalprice);
                    //context.OrderStock.Add(ords);

                    try
                    {
                        context.SaveChanges();
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e);
                    }
                }
            }
        }
示例#10
0
        private void SaveOrderStock()
        {
            Dictionary <string, List <Order> > MyManagedOrders = MyOrderManager.GetManagedOrders();

            using (PersonDbContext context = new PersonDbContext())
            {
                var DataTopics       = context.Topics;
                var DataOrderStock   = context.OrderStock;
                var DataGeneralStock = context.GeneralStock
                                       .Include(p => p.OrderStock);
                var DataOrders = context.Orders;

                foreach (var val1 in MyManagedOrders)
                {
                    List <Order> MyCurrentNamedOrder = val1.Value;
                    foreach (var val2 in MyCurrentNamedOrder)
                    {
                        int          added          = 0;
                        List <Stock> MyCurrentStock = val2.GetItems();
                        foreach (var val3 in MyCurrentStock)
                        {
                            var MyQuery = context.GeneralStock
                                          .FirstOrDefault(Stock => Stock.StockName == val3.GetName());

                            if (MyQuery == null)
                            {
                                GeneralStock gensto = new GeneralStock
                                {
                                    StockId          = context.GeneralStock.Max(stock => stock.StockId) + 1,
                                    TopicId          = context.Topics.First(p => p.TopicName == val3.GetTopic()).TopicId,
                                    StockName        = val3.GetName(),
                                    Price            = Convert.ToDecimal(val3.GetPrice()),
                                    StockDescription = val3.GetDescription(),
                                    OrderStockId     = context.OrderStock.Max(stock => stock.OrderStockId) + 1,
                                    StoreStockId     = null
                                };

                                Orders ords = new Orders()
                                {
                                    OrderId   = context.Orders.Max(o => o.OrderId) + 1 + added,
                                    PersonId  = context.People.First(p => p.Username == val1.Key).PersonId,
                                    Price     = Convert.ToDecimal(val2.GetPrice()),
                                    OrderDate = val2.GetDate()
                                };

                                OrderStock ordsto = new OrderStock
                                {
                                    OrderStockId = (int)gensto.OrderStockId,
                                    OrderId      = ords.OrderId
                                };

                                context.Orders.Add(ords);
                                context.GeneralStock.Add(gensto);
                                context.OrderStock.Add(ordsto);
                                try
                                {
                                    context.SaveChanges();
                                }
                                catch (Exception e)
                                {
                                    Console.WriteLine(e);
                                }
                            }
                        }
                    }
                }
            }
        }
示例#11
0
 public async Task <bool> UpdateUow(OrderStock orderStock)
 {
     return(await _unitOfWork.Connection.UpdateAsync(orderStock, transaction : _unitOfWork.Transaction));
 }
示例#12
0
 public async Task <int> InsertUow(OrderStock orderStock)
 {
     return(await _unitOfWork.Connection.InsertAsync(orderStock, transaction : _unitOfWork.Transaction));
 }