Example #1
0
        public CustomerOrderItemView AddItem(Guid id,
                                             CustomerOrderItemDto dto)
        {
            var order = _repository.GetAll().FirstOrDefault(o => o.Id == id);

            if (order == null)
            {
                throw new ArgumentException("Order not found.");
            }

            var product = _productRepository.GetAll().FirstOrDefault(p => p.Id == dto.ProductId);

            if (product == null)
            {
                throw new ArgumentException("Product not found.");
            }

            CustomerOrderItem item = order.AddItem(product, dto.Amount);

            _repository.Update(order);

            return(new CustomerOrderItemView()
            {
                Id = item.Id,
                ProductId = item.ProductId,
                Product = item.Product.Name,
                Amount = item.Amount,
                Price = item.Price,
                TotalValue = item.TotalValue
            });
        }
Example #2
0
        public async Task <Guid> PostItem(string orderId, CustomerOrderItem item)
        {
            ServiceEventSource.Current.Message("Guid {0}, quantity {1}", item.ItemId.ToString(), item.Quantity.ToString());

            Guid orderIdGuid          = Guid.Parse(orderId);
            ServiceUriBuilder builder = new ServiceUriBuilder(CustomerOrderServiceName);

            //We create a unique Guid that is associated with a customer order, as well as with the actor that represents that order's state.
            ICustomerOrderActor customerOrder = ActorProxy.Create <ICustomerOrderActor>(new ActorId(orderIdGuid), builder.ToUri());

            try
            {
                await customerOrder.AddItemToOrderAsync(item);

                ServiceEventSource.Current.Message("Customer order submitted successfully. ActorOrderID: {0} created", orderId);
            }
            catch (InvalidOperationException ex)
            {
                ServiceEventSource.Current.Message("Web Service: Actor rejected {0}: {1}", customerOrder, ex);
                throw;
            }
            catch (Exception ex)
            {
                ServiceEventSource.Current.Message("Web Service: Exception {0}: {1}", customerOrder, ex);
                throw;
            }

            return(orderIdGuid);
        }
Example #3
0
        private void InsertOrderItem()
        {
            var container = OrderItemsListView.InsertItem;
            var dropDown  = container.FindControl("AvailableProducts") as DropDownList;

            if (dropDown.SelectedIndex > 0)
            {
                // Get the product details and prep the new item to add to the order listview
                var controller = new SalesController();
                var product    = controller.GetProduct(int.Parse(dropDown.SelectedValue));

                // Get the qty, price, and discount from the textboxes
                var theQty      = container.FindControl("NewItemQuantity") as TextBox;
                var thePrice    = container.FindControl("NewItemPrice") as TextBox;
                var theDiscount = container.FindControl("NewItemDiscount") as TextBox;

                // Place them inside of hidden fields
                var newItem = new CustomerOrderItem
                {
                    ProductId       = product.ProductId,
                    ProductName     = product.ProductName,
                    QuantityPerUnit = product.QuantityPerUnit,
                    Quantity        = short.Parse(theQty.Text),
                    UnitPrice       = decimal.Parse(thePrice.Text, System.Globalization.NumberStyles.Currency),
                    DiscountPercent = float.Parse(theDiscount.Text) / 100
                };

                // Insert the item
                var existing = ExtractFromOrderItemsListViewItems();
                existing.Add(newItem);
                SetupOrderForEditing(existing);
            }
        }
Example #4
0
        private CustomerOrderItem FromDataItem(ListViewDataItem item)
        {
            var productIdControl = item.FindControl("ProductId") as HiddenField;
            var nameLabel        = item.FindControl("ProductNameLabel") as Label;
            var inStockLabel     = item.FindControl("InStockQuantityLabel") as Label;
            var qtyPerUnitLabel  = item.FindControl("QuantityPerUnitLabel") as Label;
            var qtyTextBox       = item.FindControl("QuantityTextBox") as TextBox;
            var priceTextBox     = item.FindControl("UnitPriceTextBox") as TextBox;
            var discountTextBox  = item.FindControl("DiscountPercentTextBox") as TextBox;
            var result           = new CustomerOrderItem
            {
                ProductId   = int.Parse(productIdControl.Value),
                ProductName = nameLabel.Text,

                // TODO: Remove InStockQuantityLabel
                //InStockQuantity = short.Parse(inStockLabel.Text),

                QuantityPerUnit = qtyPerUnitLabel.Text,
                Quantity        = short.Parse(qtyTextBox.Text),
                UnitPrice       = decimal.Parse(priceTextBox.Text, System.Globalization.NumberStyles.Currency),
                DiscountPercent = float.Parse(discountTextBox.Text.Replace("%", string.Empty)) / 100
            };

            return(result);
        }
        public static CustomerOrderItemVM SetSubData(CustomerOrderItem model)
        {
            var data = CustomerOrderItemVM.MToVM(model);

            data.DateTime  = DateTimeStorageVM.MToVM(DateTimeStorageService.GetByOID(model.ID, model.API).FirstOrDefault());
            data.Item      = IS_ItemService.SetSubData(IS_ItemService.GetByID(model.ItemID), model.API);
            data.ItemColor = IS_ItemColorService.SetSubData(IS_ItemColorService.GetByID(model.ItemColorID));
            return(data);
        }
        public void MakeItem_NullProduct_ExceptionThrown()
        {
            // arrange
            var customer      = Customer.MakeCustomer("julio", "05526485072", DateTime.Now);
            var customerOrder = CustomerOrder.MakeCustomerOrder(7, customer);

            // act
            Assert.Throws <ArgumentNullException>(() => CustomerOrderItem.MakeCustomerOrderItem(customerOrder, null, 5));
        }
        public void MakeItem_NullOrder_ExceptionThrown()
        {
            // arrange
            var product = Product.MakeProduct("Test product", "Test product", 15, Dimensions.MakeDimensions(11, 12, 13));

            product.UpdateAmount(15);

            // act
            Assert.Throws <ArgumentNullException>(() => CustomerOrderItem.MakeCustomerOrderItem(null, product, 5));
        }
        public void MakeItem_NegativeAmount_ExceptionThrown()
        {
            // arrange
            var customer      = Customer.MakeCustomer("julio", "05526485072", DateTime.Now);
            var customerOrder = CustomerOrder.MakeCustomerOrder(7, customer);
            var product       = Product.MakeProduct("Test product", "Test product", 15, Dimensions.MakeDimensions(11, 12, 13));

            product.UpdateAmount(15);

            // act
            Assert.Throws <ArgumentException>(() => CustomerOrderItem.MakeCustomerOrderItem(customerOrder, product, -5));
        }
        public void ChangeAmount_AmountBiggerThanPreviousBiggerThanProducts_ExceptionThrown()
        {
            // arrange
            var customer      = Customer.MakeCustomer("julio", "05526485072", DateTime.Now);
            var customerOrder = CustomerOrder.MakeCustomerOrder(7, customer);
            var product       = Product.MakeProduct("Test product", "Test product", 15, Dimensions.MakeDimensions(11, 12, 13));

            product.UpdateAmount(15);
            var customerOrderItem = CustomerOrderItem.MakeCustomerOrderItem(customerOrder, product, 5);

            // act
            Assert.Throws <ArgumentException>(() => customerOrderItem.ChangeAmount(20));
        }
Example #10
0
        public void Delete_OrderItem_Deleted()
        {
            // arrange
            var customer      = Customer.MakeCustomer("julio", "05526485072", DateTime.Now);
            var customerOrder = CustomerOrder.MakeCustomerOrder(7, customer);
            var product       = Product.MakeProduct("Test product", "Test product", 15, Dimensions.MakeDimensions(11, 12, 13));

            product.UpdateAmount(15);
            var customerOrderItem = CustomerOrderItem.MakeCustomerOrderItem(customerOrder, product, 5);

            customerOrderItem.Delete();

            Assert.Throws <InvalidOperationException>(() => customerOrderItem.Delete());
        }
Example #11
0
        public void CDeleteCustomerOrderItem_ValidParameters_CustomerOrderItemDeleted()
        {
            // arrange
            var customer      = Customer.MakeCustomer("julio", "05526485072", DateTime.Now);
            var customerOrder = CustomerOrder.MakeCustomerOrder(7, customer);
            var product       = Product.MakeProduct("Test product", "Test product", 15, Dimensions.MakeDimensions(11, 12, 13));

            product.UpdateAmount(15);
            var customerOrderItem = CustomerOrderItem.MakeCustomerOrderItem(customerOrder, product, 5);

            // act
            customerOrderItem.Delete();

            // assert
            Assert.True(customerOrderItem.IsDeleted);
        }
        public HttpResponseMessage AddCustomerOrder(CustomerOrderItemViewModel obj)
        {
            try
            {
                using (NavAssignmentEntities db = new NavAssignmentEntities())
                {
                    CustomerOrderItem model = new CustomerOrderItem();
                    model.AddCustomerOrderItems(obj);
                }
            }
            catch (Exception)
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, "Somthing went wrong"));
            }

            return(Request.CreateResponse(HttpStatusCode.OK, "Successfull"));
        }
Example #13
0
        public async Task AddItemToOrderAsync(CustomerOrderItem orderItem)
        {
            try
            {
                var existingList = await this.StateManager.GetStateAsync <List <CustomerOrderItem> >(OrderItemListPropertyName);

                existingList.Add(orderItem);
                await this.StateManager.SetStateAsync <List <CustomerOrderItem> >(OrderItemListPropertyName, existingList);
            }
            catch (Exception e)
            {
                ActorEventSource.Current.Message(e.ToString());
            }

            ActorEventSource.Current.Message("Order item was added");

            return;
        }
Example #14
0
        public async Task <CustomerOrder> CreateOrderItemsFromCart(string cart_id)
        {
            CustomerOrder order = new CustomerOrder();

            try
            {
                CustomerCart cart = await unitOfWork.Carts.GetCartDetails(cart_id, true);

                using (var connection = this.GetOpenConnection())
                {
                    order.customer_id     = cart.customer_id;
                    order.order_total     = cart.cart_total;
                    order.total_payable   = cart.total_payable;
                    order.discount_amount = cart.cart_discount;
                    var result = await connection.InsertAsync(order);

                    if (cart.cartItems != null && cart.cartItems.Count > 0)
                    {
                        foreach (var item in cart.cartItems)
                        {
                            CustomerOrderItem orderitem = new CustomerOrderItem();
                            orderitem.rec_id        = Guid.NewGuid().ToString().ToLower().Replace("-", "");
                            orderitem.order_id      = order.rec_id;
                            orderitem.qty           = item.qty;
                            orderitem.price         = item.price;
                            orderitem.total_payable = item.total_payable;
                            orderitem.product_id    = item.product_id;
                            var Id = (int)await connection.InsertAsync(orderitem);

                            order.orderItems.Add(orderitem);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                return(null);
            }

            return(order);
        }
Example #15
0
        public void ChangePrice_PriceBiggerThanPrevious_PriceUpdated()
        {
            // arrange
            var customer      = Customer.MakeCustomer("julio", "05526485072", DateTime.Now);
            var customerOrder = CustomerOrder.MakeCustomerOrder(7, customer);
            var product       = Product.MakeProduct("Test product", "Test product", 15, Dimensions.MakeDimensions(11, 12, 13));

            product.UpdateAmount(15);
            var customerOrderItem = CustomerOrderItem.MakeCustomerOrderItem(customerOrder, product, 5);

            // act
            customerOrderItem.ChangePrice(20);

            // assert
            Assert.Equal(customerOrderItem.Amount, 5);
            Assert.Equal(customerOrderItem.Deposits.Count, 1);
            Assert.Equal(customerOrderItem.Price, 20);
            Assert.Equal(customerOrderItem.TotalValue, 100);
            Assert.Equal(customerOrder.TotalValue, 100);
            Assert.Equal(customer.TotalSpent, 100);
            Assert.Equal(product.Amount, 10);
        }
Example #16
0
        private static List <CustomerOrderItem> createTestOrder(IEnumerable <InventoryItemView> store)
        {
            Console.WriteLine("We are creating a test order for the customer now...");
            List <CustomerOrderItem> order = new List <CustomerOrderItem>();

            foreach (InventoryItemView item in store)
            {
                int quantityToAdd = item.CustomerAvailableStock / 10;
                Console.WriteLine(string.Format("We are adding {0} items of item no {1} to customer's order", quantityToAdd.ToString(), item.Id.ToString()));

                CustomerOrderItem toAdd = new CustomerOrderItem(item.Id, quantityToAdd);
                order.Add(toAdd);
            }
            //Printing contents of list to console
            Console.WriteLine("Printing contents of order list...");
            foreach (CustomerOrderItem item in order)
            {
                Console.WriteLine(string.Format("Ordering {0} items of type {1}", item.Quantity.ToString(), item.ItemId.ToString()));
            }

            return(order);
        }
Example #17
0
        public void MakeItem_ValidParameters_ItemCreated()
        {
            // arrange
            var customer      = Customer.MakeCustomer("julio", "05526485072", DateTime.Now);
            var customerOrder = CustomerOrder.MakeCustomerOrder(7, customer);
            var product       = Product.MakeProduct("Test product", "Test product", 15, Dimensions.MakeDimensions(11, 12, 13));

            product.UpdateAmount(15);

            // act
            var customerOrderItem = CustomerOrderItem.MakeCustomerOrderItem(customerOrder, product, 5);

            // assert
            Assert.Equal(customerOrderItem.Amount, 5);
            Assert.Equal(customerOrderItem.Deposits.Count, 1);
            Assert.Equal(customerOrderItem.Price, 15);
            Assert.Equal(customerOrderItem.ProductId, product.Id);
            Assert.Equal(customerOrderItem.CustomerOrderId, customerOrder.Id);
            Assert.Equal(customerOrderItem.TotalValue, 75);
            Assert.Equal(customerOrder.TotalValue, 75);
            Assert.Equal(customer.TotalSpent, 75);
            Assert.Equal(product.Amount, 10);
        }