예제 #1
0
        public async Task <string> CreateAsync(NewOrderDTO newOrder)
        {
            ValidateNewOrder(newOrder);

            var payload = new MessageBrokerEnvelope <NewOrderDTO>(MessageTypes.NewOrder, newOrder);
            await _messageBroker.SendMessageAsync("new-orders", payload);

            return(payload.RequestId);
        }
예제 #2
0
        /// <summary>
        /// Creates a new order
        /// </summary>
        /// <param name="orderDTO">information needed to create a new order</param>
        /// <returns>The newly created order's order number</returns>
        public int CreateOrder(NewOrderDTO newOrderDTO)
        {
            // this method is used to validate incoming data - NEVER TRUST DATA COMING FROM A UI

            int order_number = -1;

            // although we list the price of items in the UI, we never assume that the price being passed in is correct.
            // we only pass in the product id, and then we lookup the price to ensure its accuracy

            // create the orderDTO for persistence and populate its properties
            OrderDTO orderDTO = new OrderDTO()
            {
                customer_id = newOrderDTO.customer_id,
                order_date  = newOrderDTO.order_date,
                staff_id    = newOrderDTO.staff_id,
                store_id    = newOrderDTO.store_id,
            };

            // now we'll use a method to get the order status
            // a method is the preferred way, as maybe there is some business
            // logic to determine was a new order's status is based on certain parameters
            orderDTO.order_status = (int)GetNewOrderStatus();


            //save to the persistence store, and get the order number back?
            order_number = _orderDAO.CreateOrder(orderDTO);

            // this is an unfortunate step - having to put the order_number into the DTO.  It's a little bit of data logic leaking into the
            // business logic.  But it unfortunately is necessary when not using an advanced framework for persistence
            orderDTO.order_number = order_number;

            // now to populate items
            OrderItemDTO         orderItemDTO;
            IList <OrderItemDTO> items = new List <OrderItemDTO>();

            foreach (NewOrderItemDTO item in newOrderDTO.items)
            {
                var product = _productService.GetByID(item.product_id);
                orderItemDTO = new OrderItemDTO()
                {
                    product_id   = item.product_id,
                    price        = product.list_price,
                    quantity     = item.quantity,
                    order_number = order_number
                };

                items.Add(orderItemDTO);
            }

            //now save the items to the persistence store
            _orderItemDAO.CreateOrder(items);

            OnOrderCreated(orderDTO, items);


            return(order_number);
        }
예제 #3
0
        public OrderDTO CreateOrder(NewOrderDTO order)
        {
            var dbOrder = Mapper.Map <Order>(order);

            var addedOrder = _dbContext.Orders.Add(dbOrder);

            _dbContext.SaveChanges();

            return(Mapper.Map <OrderDTO>(addedOrder));
        }
예제 #4
0
        public IActionResult addPizzaOrder(NewOrderDTO newOrderDto)
        {
            var SINGLE_ORDER_TIME = 30;
            var time = SINGLE_ORDER_TIME;

            var order = new Order();

            order.OrderStatusName = Dto.OrderStatus.IN_REALIZATION.ToString();
            if (newOrderDto.payOnline)
            {
                order.OrderStatusName = Dto.OrderStatus.WAITING_FOR_PAYMENT.ToString();
            }

            order.Phone = newOrderDto.Phone;

            try
            {
                order.Price = getOrderPrice(newOrderDto.PizzaDefinition);
                if (order.Price <= 0)
                {
                    return(BadRequest());
                }
            }
            catch (BadRequestException ex)
            {
                return(BadRequest());
            }

            _context.Order.ToList().ForEach(it =>
            {
                if (it.OrderStatusName != Dto.OrderStatus.DELIVERED.ToString())
                {
                    time += SINGLE_ORDER_TIME;
                }
            });

            order.PizzaDefinition = JsonConvert.SerializeObject(newOrderDto.PizzaDefinition);
            order.Uid             = Guid.NewGuid().ToString();

            //order.Phone = "";
            //order.Uid = "1";
            //order.OrderStatusName = "";
            //order.PizzaDefinition = "";
            //order.Price = 10;

            _context.Order.Add(order);
            _context.SaveChanges();

            return(Ok(new NewOrderResponseDTO()
            {
                time = time,
                uid = order.Uid
            }
                      ));
        }
        private async Task <Order> SaveNewOrderAsync(NewOrderDTO newOrder)
        {
            var newOrderModel = _mapper.Map <NewOrderDTO, Order>(newOrder);

            newOrderModel.CreatedAt = newOrderModel.LastUpdatedAt = DateTime.Now;
            newOrderModel.Status    = OrderStatus.New;

            foreach (var orderItem in newOrderModel.Items)
            {
                orderItem.Status = OrderItemStatus.New;
            }

            return(await _unitOfWork.OrderRepository.CreateAsync(newOrderModel));
        }
예제 #6
0
        /// <summary>
        /// creates an order from the form
        /// </summary>
        private void CreateOrder()
        {
            NewOrderDTO newOrderDTO = CreateOrderDTO();

            try
            {
                _newOrderCreator.CreateOrder(newOrderDTO);
                MessageBox.Show("Order created successfully.", "Order Created", MessageBoxButtons.OK, MessageBoxIcon.Information);
                Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("An error occurred while creating this order: " + ex.Message, "Error Occurred", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
예제 #7
0
        /// <summary>
        /// Creates the new order DTO
        /// </summary>
        private NewOrderDTO CreateOrderDTO()
        {
            StaffViewModel    selected_staff    = (StaffViewModel)cbStaff.SelectedItem;
            StoreViewModel    selected_store    = (StoreViewModel)cbStore.SelectedItem;
            ProductViewModel  selected_product  = (ProductViewModel)lstBxProducts.SelectedItem;
            CustomerViewModel selected_customer = (CustomerViewModel)lstBxCustomers.SelectedItem;
            int quantity = Convert.ToInt32(txtQuantity.Text);

            NewOrderDTO newOrderDTO = new NewOrderDTO()
            {
                staff_id    = selected_staff.StaffID,
                customer_id = selected_customer.CustomerID,
                order_date  = DateTime.Now,
                store_id    = selected_store.StoreID
            };

            newOrderDTO.items.Add(CreateOrderItemDTO(selected_product, quantity));

            return(newOrderDTO);
        }
예제 #8
0
        public ActionResult CreateOrder(UWAdventure.WebApp.Models.NewOrderModel formdata)
        {
            NewOrderDTO dto = new NewOrderDTO();

            dto.customer_id = formdata.Customer;
            dto.store_id    = formdata.SelectedStore;
            dto.order_date  = DateTime.Now;
            dto.staff_id    = formdata.SalesAssociate;

            NewOrderItemDTO item = new NewOrderItemDTO();

            item.product_id = formdata.Product;
            item.quantity   = formdata.Quantity;

            dto.items.Add(item);

            NewOrderCreator order_creator = new NewOrderCreator();
            var             order_number  = order_creator.CreateOrder(dto);

            return(RedirectToAction("AfterOrder", new { o = order_number }));
        }
예제 #9
0
        public IHttpActionResult CreateNewOrder(NewOrderDTO neworder)
        {
            // we don't have any products in the dto
            if (neworder.OfferIds.Count == 0)
            {
                return(BadRequest("No Products Ids have been provided"));
            }

            var company = _context.Companies.Single(c => c.ID == neworder.CompanyId);

            // if company id is not valid
            if (company == null)
            {
                return(BadRequest("CompanyId is not Valid"));
            }

            var offers = _context.Offers.Where(p => neworder.OfferIds.Contains(p.ID)).ToList();

            foreach (var i in offers)
            {
                if (i.NumberAvailable == 0)
                {
                    return(BadRequest("This product is unavailable"));
                }
                i.NumberAvailable--;

                var order = new Order
                {
                    Company      = company,
                    Offer        = i,
                    Date_Ordered = DateTime.Now
                };

                _context.Orders.Add(order);
            }

            _context.SaveChanges();

            return(Ok());
        }
예제 #10
0
        public Zamowienie PostOrder(int IdKlient, NewOrderDTO NewOrder)
        {
            Klient klient = context.Find <Klient>(IdKlient);

            if (klient == null)
            {
                return(null);
            }

            Zamowienie zamowienie = new Zamowienie
            {
                DataPrzyjecia = NewOrder.dataPrzyjecia,
                Klient        = klient,
                Uwagi         = NewOrder.uwagi
            };

            context.Zamowienies.Add(zamowienie);

            foreach (NewOrderDTO.NewOrderWyrob Wyrob in NewOrder.wyroby)
            {
                WyrobCukierniczy WyrobCukierniczy;
                try
                {
                    WyrobCukierniczy = context.WyrobCukierniczies
                                       .Where <WyrobCukierniczy>(item => item.Nazwa.Equals(Wyrob.wyrob))
                                       .First();
                } catch (InvalidOperationException e) { return(null); };
                // if (WyrobCukierniczy == null) return null;
                context.Zamowienie_WyrobCukierniczies.Add(new Zamowienie_WyrobCukierniczy
                {
                    WyrobCukierniczy = WyrobCukierniczy,
                    Zamowienie       = zamowienie,
                    Ilosc            = Wyrob.ilosc,
                    Uwagi            = Wyrob.uwagi
                });
            }
            context.SaveChanges();
            return(zamowienie);
        }
예제 #11
0
        /// <summary>
        /// Runs the order form in the UI
        /// </summary>
        private static void CreateOrderForm()
        {
            int store_id, staff_id, product_id, customer_id, quantity;

            if (_storeViewer == null)
            {
                _storeViewer = new StoreViewer();
            }
            if (_staffViewer == null)
            {
                _staffViewer = new StaffViewer();
            }
            if (_productViewer == null)
            {
                _productViewer = new ProductViewer();
            }
            if (_customerViewer == null)
            {
                _customerViewer = new CustomerViewer();
            }
            if (_newOrderCreator == null)
            {
                _newOrderCreator = new NewOrderCreator();
            }

            IList <StaffViewModel>    staff;
            IList <StoreViewModel>    stores    = _storeViewer.GetAllStores();
            IList <CustomerViewModel> customers = _customerViewer.GetRandom10();
            IList <ProductViewModel>  products  = _productViewer.GetRandom10();

            WriteHeader();
            WriteOrderFormHeader();

            Console.WriteLine("Select store:");
            Console.WriteLine("---------------");
            for (var i = 0; i < stores.Count; i++)
            {
                Console.WriteLine("{0}. {1}", i + 1, stores[i].Name);
            }

            CommandPrompt("Select store");
            string str_store_id = Console.ReadLine();

            //validate the incoming store_id
            if (!Int32.TryParse(str_store_id, out store_id) || store_id > stores.Count || store_id < 1)
            {
                Console.WriteLine("Invalid store entry.  Press any key...");
                Console.ReadKey();
                return;
            }

            //store_id is valid - grab employees
            staff = _staffViewer.GetAllEmployesByStore(store_id);

            //write the employee info onscreen
            WriteHeader();
            WriteOrderFormHeader();

            Console.WriteLine("Select salesperson:");
            Console.WriteLine("--------------------");
            for (var i = 0; i < staff.Count; i++)
            {
                Console.WriteLine("{0}. {1} {2}", i + 1, staff[i].FirstName, staff[i].LastName);
            }
            CommandPrompt("Select salesperson");
            string str_staff_id = Console.ReadLine();

            //validate the incoming staff_id
            if (!Int32.TryParse(str_staff_id, out staff_id) || staff_id > staff.Count || staff_id < 1)
            {
                Console.WriteLine("Invalid salesperson entry.  Press any key...");
                Console.ReadKey();
                return;
            }

            //staff_id is valid - print out customers
            WriteHeader();
            WriteOrderFormHeader();
            Console.WriteLine("Select customer:");
            Console.WriteLine("--------------------");
            for (var i = 0; i < customers.Count; i++)
            {
                Console.WriteLine("{0}. {1} {2}", i + 1, customers[i].FirstName, customers[i].LastName);
            }
            CommandPrompt("Select customer");
            string str_customer_id = Console.ReadLine();

            //validate the incoming customer_id
            if (!Int32.TryParse(str_customer_id, out customer_id) || customer_id > customers.Count || customer_id < 1)
            {
                Console.WriteLine("Invalid customer entry.  Press any key...");
                Console.ReadKey();
                return;
            }


            //customer_id is valid - print out products
            WriteHeader();
            WriteOrderFormHeader();
            Console.WriteLine("Select product:");
            Console.WriteLine("--------------------");
            for (var i = 0; i < products.Count; i++)
            {
                Console.WriteLine("{0}. {1}", i + 1, products[i].Name);
            }
            CommandPrompt("Select product");
            string str_product_id = Console.ReadLine();

            //validate the incoming product_id
            if (!Int32.TryParse(str_product_id, out product_id) || product_id > products.Count || product_id < 1)
            {
                Console.WriteLine("Invalid product entry.  Press any key...");
                Console.ReadKey();
                return;
            }

            //product_id is valid - print out quantity
            WriteHeader();
            WriteOrderFormHeader();
            Console.WriteLine("Select quantity:");
            string str_quantity = Console.ReadLine();

            //validate the incoming product_id
            if (!Int32.TryParse(str_quantity, out quantity) || quantity < 1)
            {
                Console.WriteLine("Invalid quantity.  Press any key...");
                Console.ReadKey();
                return;
            }

            //all inputs valid - show an order summary screen
            WriteHeader();
            WriteOrderFormHeader();
            Console.WriteLine("Order Details:");
            Console.WriteLine("----------------");
            Console.WriteLine("Entered by {0} {1} at {2}", staff[staff_id - 1].FirstName, staff[staff_id - 1].LastName, stores[store_id - 1].Name);
            Console.WriteLine("Order for {0} {1}", customers[customer_id - 1].FirstName, customers[customer_id - 1].LastName);
            Console.WriteLine(products[product_id - 1].Name);
            Console.WriteLine("Qty: {0}", quantity);
            CommandPrompt("Is this correct? (Y/N)");
            string str_response = Console.ReadLine();

            if (str_response.ToLower() == "y")
            {
                NewOrderDTO newOrder = new NewOrderDTO()
                {
                    store_id    = store_id,
                    staff_id    = staff_id,
                    customer_id = customer_id,
                    order_date  = DateTime.Now,
                };

                NewOrderItemDTO newItem = new NewOrderItemDTO()
                {
                    product_id = product_id,
                    quantity   = quantity
                };

                newOrder.items.Add(newItem);

                _newOrderCreator = new NewOrderCreator();
                try
                {
                    int order_number = _newOrderCreator.CreateOrder(newOrder);
                    WriteHeader();
                    WriteOrderFormHeader();
                    Console.WriteLine("Order #{0} created successfully.", order_number);
                    Console.WriteLine("Press any key...");
                    Console.ReadKey();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                return;
            }
        }
예제 #12
0
 public Task <IActionResult> AddNewOrder([FromBody] NewOrderDTO data)
 {
     throw new NotImplementedException();
 }
        public async Task <ActionResult <string> > CreateOrder(NewOrderDTO newOrder)
        {
            var requestId = await _ordersService.CreateAsync(newOrder);

            return(Accepted(requestId));
        }
예제 #14
0
 public Task <bool> AddNewOrder(NewOrderDTO data)
 {
     throw new NotImplementedException();
 }