Пример #1
0
        public CreateOrderOutput AddItemByOrderId([FromBody] CreateOrderInput input)
        {
            decimal           sum    = 0;
            CreateOrderOutput output = new CreateOrderOutput();

            if (input == null)
            {
                output.Status = "INPUT_IS_NULL";
            }
            else
            {
                Order order = _db.Orders.Where(e => e.Id.Equals(input.OrderId) && e.Deleted == false && e.Status == 1).FirstOrDefault();
                if (order == null)
                {
                    output.Status = "ORDER_NOT_EXIST";
                }
                else
                {
                    if (input.Items != null)
                    {
                        foreach (CreateOrderItem item in input.Items)
                        {
                            OrderItem orderItem = order.OrderItems.Where(e => e.MenuItem.Id.Equals(item.ItemId) && e.Deleted == false).FirstOrDefault();
                            MenuItem  menuItem  = _db.MenuItems.Where(e => e.Id.Equals(item.ItemId) && e.Deleted == false).FirstOrDefault();
                            sum += (decimal)item.Quantity * menuItem.Price;
                            if (orderItem == null)
                            {
                                OrderItem newItem = new OrderItem()
                                {
                                    Order     = order,
                                    MenuItem  = menuItem,
                                    UnitPrice = menuItem.Price,
                                    Quantity  = item.Quantity
                                };

                                if (order.OrderItems == null)
                                {
                                    order.OrderItems = new List <OrderItem>();
                                }

                                order.OrderItems.Add(newItem);
                            }
                            else
                            {
                                orderItem.Quantity += item.Quantity;
                            }

                            output.Status = "OK";
                            _db.SaveChanges();
                        }
                    }

                    output.Status = "OK";
                    order.Amount += sum;
                    _db.SaveChanges();
                }
            }

            return(output);
        }
        public async Task Execute(CreateOrderInput input)
        {
            if (input == null)
            {
                _outputHandler.Error("Input is null.");
                return;
            }

            var parcel = new Parcel()
            {
                Name        = input.ParcelName,
                Description = input.ParcelDescription
            };
            var Parcel = await _parcelRepository.AddParcel(parcel);

            var order = new Order()
            {
                SenderId             = input.SenderId,
                RecipientName        = input.RecipientName,
                RecipientSurname     = input.RecipientSurname,
                RecipientPhonenumber = input.RecipientPhoneNumber,
                ParcelId             = Parcel.Id,
                Status = input.Status
            };
            await _orderRepository.RegisterOrder(order);

            var createOrderOutput = new CreateOrderOutput(
                input.SenderId,
                input.RecipientName,
                input.RecipientSurname,
                input.RecipientPhoneNumber,
                Parcel,
                input.Status
                );

            _outputHandler.Standard(createOrderOutput);
        }
Пример #3
0
 public void Standard(CreateOrderOutput output)
 {
     ViewModel = new JsonResult(output);
 }
Пример #4
0
        public CreateOrderOutput Create([FromBody] CreateOrderInput input)
        {
            CreateOrderOutput output   = new CreateOrderOutput();
            Order             newOrder = new Order();
            bool    orderCreated       = false;
            Vendor  selectedVendor     = _db.Vendors.Where(e => e.Id.Equals(input.VendorId)).FirstOrDefault();
            decimal sum = 0;

            if (selectedVendor == null)
            {
                output.Status = "INCORRECT_VENDOR_ID";
            }
            else
            {
                output.VendorId = selectedVendor.Id;
                newOrder.Status = 1;
                newOrder.Vendor = selectedVendor;

                // Advised not to be used
                if (input.Type == 1)
                {
                    output.OrderId = newOrder.Id;
                    output.Status  = "OK";
                    _db.Orders.Add(newOrder);
                    _db.SaveChanges();
                    orderCreated = true;
                }
                else if (input.Type == 2)
                {
                    SessionService session = new SessionService(_db, input.SessionId, input.SessionKey);
                    if (session.IsValid)
                    {
                        User selectedUser = session.User;
                        output.OrderId = newOrder.Id;
                        output.Status  = "OK";
                        output.UserId  = selectedUser.Id;
                        newOrder.User  = session.User;
                        _db.Orders.Add(newOrder);
                        _db.SaveChanges();
                        orderCreated = true;
                    }
                    else
                    {
                        output.Status = "SESSION_NOT_FOUND_OR_EXPIRED";
                    }
                }
            }

            if (orderCreated)
            {
                Order selectedOrder = _db.Orders.Where(e => e.Id.Equals(newOrder.Id)).FirstOrDefault();
                selectedOrder.OrderItems = new List <OrderItem>();
                if (input.Items != null)
                {
                    foreach (CreateOrderItem item in input.Items)
                    {
                        MenuItem orderItem = _db.MenuItems.Where(e => e.Id.Equals(item.ItemId)).FirstOrDefault();
                        if (orderItem != null)
                        {
                            if (selectedOrder.OrderItems.Where(e => e.MenuItem == orderItem).Count() <= 0)
                            {
                                sum += orderItem.Price * (decimal)item.Quantity;
                                selectedOrder.OrderItems.Add(new OrderItem()
                                {
                                    Order     = newOrder,
                                    MenuItem  = orderItem,
                                    UnitPrice = orderItem.Price,
                                    Quantity  = item.Quantity
                                });
                            }
                            else
                            {
                                selectedOrder.OrderItems.Where(e => e.MenuItem == orderItem).FirstOrDefault().Quantity += item.Quantity;
                            }
                            _db.SaveChanges();
                        }
                    }

                    newOrder.Amount = sum;
                    _db.SaveChanges();
                }
            }
            return(output);
        }