Exemple #1
0
        public void GetBestPrice_Selling_UnsuitableBalanceException()
        {
            decimal sellAmount = 4M;
            Order   sellOrder  = new SellingOrder(sellAmount);

            Assert.Throws <Exception>(() => _marketHandler.ProcessOrder(sellOrder));
        }
Exemple #2
0
        public VMachine()
        {
            InitializeComponent();
            currentVisitor = null;
            newSellOrder   = null;
            rfidVM         = new RFID();
            rfidVM.Tag    += rfidVM_Reader;
            LatitudeVM     = new DataForEvent(1);
            LatitudeVM.SyncEventInfo();
            myVM       = LatitudeVM.MyEvent.GetShopById(5); // This is vending machine id 5
            itemsForVM = new List <EventItem>();
            int count = 0;

            foreach (EventItem i in LatitudeVM.MyEvent.Items)
            {
                if (i is ItemForSale)
                {
                    if (((ItemForSale)i).IsSuitableForVM)
                    {
                        itemsForVM.Add(i);
                        count++;
                        if (i.QuantityInStock > 0)
                        {
                            cbSelectItemVM.Items.Add(count);
                        }
                    }
                }
            }
            GeneratePictureBox(itemsForVM, tabVM);
            GenerateLabel(itemsForVM, tabVM);
        }
Exemple #3
0
        public void GetBestPrice_Selling_NegativeAmountException()
        {
            decimal sellAmount = -1M;
            Order   sellOrder  = new SellingOrder(sellAmount);

            Assert.Throws <Exception>(() => _marketHandler.ProcessOrder(sellOrder));
        }
Exemple #4
0
        public void GetBestPrice_Selling_EqualTrue()
        {
            decimal   sellAmount = 1M;
            Order     sellOrder  = new SellingOrder(sellAmount);
            BestPrice bestSell   = _marketHandler.ProcessOrder(sellOrder);

            Assert.Equal(bestSell.price, 690M);
        }
Exemple #5
0
        private void ExecuteSellingOrderAction(int colorId, int sizeId, int quantity, Customer selectedCustomer, Clothes selectedClothes, Rate rate)
        {
            int    customerId  = selectedCustomer.Id;
            int    clothesId   = selectedClothes.Id;
            string clothesName = selectedClothes.Name;

            Console.WriteLine("# Create selling order: ");
            var newOrder = new SellingOrder
            {
                SupplierId = selectedClothes.SupplierId,
                CustomerId = customerId,
                Status     = OrderStatus.New,
                OrderDate  = DateTime.Now
            };

            Console.WriteLine($"+ New selling order - Id: {newOrder.Id}, Order date: {newOrder.OrderDate}, CustomerId Id: {customerId}, CustomerId Name: {selectedCustomer.Name}");

            var tempSellingOrders      = _dataProvider.sellingOrders.GetAll();
            var tempSellingOrderDetail = _dataProvider.sellingOrderDetails.GetAll();

            Console.WriteLine("+ Save temp order");
            TransactionProvider.ExecuteOperationInTransaction(() =>
            {
                int newOrderId = tempSellingOrders.Add <SellingOrder>(newOrder);

                var sellingRateByClothes = _dataProvider.clothesRates.GetBy(x => x.ClothesId == selectedClothes.Id && x.RateId == rate.Id).FirstOrDefault();
                if (sellingRateByClothes == null)
                {
                    throw new Exception("Selling rate does not exist for clothes");
                }

                Console.WriteLine("# Create selling order detail");

                var newOrderDetail = new SellingOrderDetail
                {
                    OrderId    = newOrderId,
                    ClothesId  = clothesId,
                    ColorId    = colorId,
                    SizeId     = sizeId,
                    Quantity   = quantity,
                    TotalPrice = quantity * sellingRateByClothes.Price
                };
                tempSellingOrderDetail.Add(newOrderDetail);

                Console.WriteLine($"+ New selling order detail - OrderId: {newOrderDetail.OrderId}, Clothes Id: {clothesId}, Clothes Name: {clothesName}, Quantity: {newOrderDetail.Quantity}, TotalPrice: {newOrderDetail.TotalPrice}");
            });

            Console.WriteLine("+ Save actual order");
            _dataProvider.sellingOrders       = tempSellingOrders;
            _dataProvider.sellingOrderDetails = tempSellingOrderDetail;

            Console.WriteLine("+ Approve order and add to stock");
        }
Exemple #6
0
        static void Main(string[] args)
        {
            MetaMarketHandler marketHandler = new MetaMarketHandler();

            decimal   amount   = 4.25M;
            Order     buyOrder = new BuyingOrder(amount);
            BestPrice bestBuy  = marketHandler.ProcessOrder(buyOrder);

            Console.WriteLine(bestBuy);

            // without data resetting, previous sell/buy will impact on future results
            marketHandler.ResetData(); // if we wanna re-gather data and reset existing balances

            decimal   sellAmount = 1.67M;
            Order     sellOrder  = new SellingOrder(sellAmount);
            BestPrice bestSell   = marketHandler.ProcessOrder(sellOrder);

            Console.WriteLine(bestSell);
        }
Exemple #7
0
 private void rfidVM_Reader(object sender, RFIDTagEventArgs e)
 {
     if (e.Tag != null)
     {
         currentVisitor = LatitudeVM.MyEvent.GetVisitorByRfid(e.Tag);
         if (currentVisitor != null)
         {
             tbCustomerName.Text    = currentVisitor.FirstName + " " + currentVisitor.LastName;
             tbBalance.Text         = string.Format("€{0:n2}", currentVisitor.Balance);
             cbSelectItemVM.Enabled = true;
             newSellOrder           = new SellingOrder(LatitudeVM.GetNextOrderNumber() + 1, currentVisitor, myVM);
             rfidVM.Close();
         }
         else
         {
             MessageBox.Show("Cannot recognize visitor with this RFID tag");
         }
     }
 }
Exemple #8
0
 //Map from Entity to Dto
 public static SellingOrderDto MappingDto(this SellingOrder sellingOrder)
 {
     return(new SellingOrderDto
     {
         Id = sellingOrder.Id,
         CustomerId = sellingOrder.CustomerId,
         Customer = new CustomerDto()
         {
             Id = sellingOrder.Customer.Id,
             Fullname = sellingOrder.Customer.Fullname
         },
         EmployeeId = sellingOrder.EmployeeId,
         Employee = new EmployeeDto()
         {
             Id = sellingOrder.Employee.Id,
             Fullname = sellingOrder.Employee.Fullname
         },
         CreatedDate = sellingOrder.CreatedDate,
         Status = sellingOrder.Status,
         TotalPrice = sellingOrder.TotalPrice,
         NameCode = sellingOrder.NameCode
     });
 }