public OrderDataTransferObject CreateOrder(OrderDataTransferObject order)
        {
            Guid           id          = Guid.NewGuid();
            DateTimeOffset currentTime = DateTimeOffset.Now;
            Order          newOrder    = new Order
            {
                Id          = id,
                Customer    = _database.Customers.GetItem(order.CustomerId),
                OrderDate   = currentTime,
                OrderNumber = order.OrderNumber,
                Status      = OrderStatusType.New,
                OrderItems  = order.OrderItems.Select(orderItem => new OrderItem
                {
                    Id         = Guid.NewGuid(),
                    Item       = _database.Items.GetItem(orderItem.ItemID),
                    ItemsCount = orderItem.ItemsCount,
                    ItemPrice  = orderItem.ItemPrice
                }).ToList()
            };

            _database.Orders.Create(newOrder);
            _database.Save();
            return(new OrderDataTransferObject
            {
                Id = newOrder.Id,
                Customer = new CustomerDataTransferObject
                {
                    Id = newOrder.Customer.Id,
                    Name = newOrder.Customer.Name,
                    Code = newOrder.Customer.Code,
                    Adress = newOrder.Customer.Adress,
                    Discount = newOrder.Customer.Discount
                },
                OrderDate = newOrder.OrderDate,
                ShipmentDate = (DateTimeOffset)(newOrder.ShipmentDate == null ? default(DateTimeOffset) : newOrder.ShipmentDate),
                Status = (OrderStatusType)(newOrder.Status == null ? OrderStatusType.New : newOrder.Status),
                OrderNumber = (int)newOrder.OrderNumber,
                OrderItems = newOrder.OrderItems.Select(oi => new OrderItemDataTransferObject
                {
                    Id = oi.Id,
                    Item = new ItemDataTransferObject
                    {
                        Id = oi.Item.Id,
                        Name = oi.Item.Name,
                        Code = oi.Item.Code,
                        Price = (double)oi.Item.Price,
                        Category = oi.Item.Category
                    },
                    ItemsCount = oi.ItemsCount,
                    ItemPrice = oi.ItemPrice
                }).ToList()
            });
        }
        public void AcceptOrder(OrderDataTransferObject orderDataTransferObject)
        {
            Order order = _database.Orders.GetOrdersByPredicate(o => o.Id == orderDataTransferObject.Id).FirstOrDefault();

            if (order.Status == OrderStatusType.New)
            {
                order.Status       = OrderStatusType.IsExecuted;
                order.ShipmentDate = orderDataTransferObject.ShipmentDate;
                _database.Orders.Update(order);
                _database.Save();
            }
        }
Пример #3
0
        public IActionResult CreateOrder([FromBody] OrderCreateModel order)
        {
            if (order == null || !ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var newOrder = new OrderDataTransferObject
            {
                CustomerId  = order.CustomerId,
                OrderNumber = order.OrderNumber,
                OrderItems  = order.OrderItems.Select(oi => new OrderItemDataTransferObject
                {
                    ItemID     = oi.Item.Id,
                    ItemPrice  = oi.ItemPrice,
                    ItemsCount = oi.ItemsCount
                }).ToList()
            };
            var newOrderDataTransferObject = _orderService.CreateOrder(newOrder);

            return(CreatedAtRoute("GetOrder", new { id = newOrderDataTransferObject.Id }, new OrderGetModel
            {
                Id = newOrderDataTransferObject.Id,
                Customer = new CustomerGetModel
                {
                    Id = newOrderDataTransferObject.Customer.Id,
                    Name = newOrderDataTransferObject.Customer.Name,
                    Code = newOrderDataTransferObject.Customer.Code,
                    Adress = newOrderDataTransferObject.Customer.Adress,
                    Discount = newOrderDataTransferObject.Customer.Discount
                },
                OrderDate = newOrderDataTransferObject.OrderDate,
                ShipmentDate = newOrderDataTransferObject.ShipmentDate,
                OrderNumber = newOrderDataTransferObject.OrderNumber,
                Status = newOrderDataTransferObject.Status,
                OrderItems = newOrderDataTransferObject.OrderItems.Select(oi => new OrderItemModel
                {
                    Id = oi.Id,
                    Item = new ItemGetModel
                    {
                        Id = oi.Item.Id,
                        Name = oi.Item.Name,
                        Code = oi.Item.Code,
                        Price = oi.Item.Price,
                        Category = oi.Item.Category
                    },
                    ItemPrice = oi.ItemPrice,
                    ItemsCount = oi.ItemsCount
                }).ToList()
            }));
        }