public StockGet Post(StockPost post)
        {
            var stockDTO = new StockDTO(post);

            m_Context.Stocks.Add(stockDTO);
            m_Context.SaveChanges();

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

            return(new StockGet(m_Context, stockDTO));
        }
        public StockGet Put(StockPost post)
        {
            var stockDTO = m_Context.GetStock(post.ID);

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

            stockDTO.CopyFrom(post);

            m_Context.Entry(stockDTO).State = EntityState.Modified;

            m_Context.SaveChanges();

            return(new StockGet(m_Context, stockDTO));
        }
        private void UpdateStockDetails()
        {
            var details = m_TransactionSession.GetRowEntries();

            for (int i = 0; i < details.Count; ++i)
            {
                var productDetail = details[i];
                int productID     = productDetail.Product.ID;

                StockGet  stockGet  = DataService.GetStockDataController().GetByProductID(productID);
                StockPost stockPost = new StockPost(stockGet);
                stockPost.AvailableQuantity -= productDetail.Quantity;
                stockPost.AvailableQuantity  = (stockPost.AvailableQuantity < 0) ? 0 : stockPost.AvailableQuantity;

                var updatedStock = DataService.GetStockDataController().Put(stockPost);
                if (updatedStock == null)
                {
                    Assert.Do("Failed to update Stock for Product ID: " + productID);
                }
            }
        }
        public void UpdateStockDetails()
        {
            for (int i = 0; i < GetTable().Rows.Count; ++i)
            {
                int productId = int.Parse(GetTable().Rows[i].Cells["PurchaseTable_ProductId"].Value.ToString());
                int quantity  = int.Parse(GetTable().Rows[i].Cells["PurchaseTable_Quantity"].Value.ToString());


                var stockGet = DataService.GetStockDataController().GetByProductID(productId);
                if (stockGet == null)
                {
                    return;
                }

                StockPost stockPost = new StockPost();
                stockPost.ID = stockGet.ID;
                stockPost.AvailableQuantity = stockGet.AvailableQuantity + quantity;
                stockPost.TotalQuantity     = stockGet.TotalQuantity + quantity;
                stockPost.ProductID         = productId;

                var stock = DataService.GetStockDataController().Put(stockPost);
            }
        }
        public bool AddNewProduct()
        {
            var UI = m_UIControl;

            UI.DialogResult = DialogResult.None;

            UI.lbl_Error.Text = string.Empty;
            if (!ValidateProductDetails())
            {
                return(false);
            }

            string      categoryName = UI.cb_Category.Text.Trim();
            CategoryGet category     = DataService.GetCategoryDataController().GetByName(categoryName);

            int unit = UI.cb_Unit.SelectedIndex + 1;

            ProductPost productPost = new ProductPost();

            productPost.Name           = UI.tb_Name.Text.Trim();
            productPost.Barcode        = UI.tb_Barcode.Text.Trim();
            productPost.Description    = UI.tb_Description.Text.Trim();
            productPost.Unit           = unit;
            productPost.RetailPrice    = int.Parse(UI.tb_RetailPrice.Text.Trim());
            productPost.WholeSalePrice = int.Parse(UI.tb_WholeSalePrice.Text.Trim());
            productPost.CategoryID     = category.ID;
            productPost.CGST           = double.Parse(UI.tb_CGST.Text.Trim());
            productPost.SGST           = double.Parse(UI.tb_CGST.Text.Trim());
            productPost.Discount       = double.Parse(UI.tb_SGST.Text.Trim());

            productPost.ImagePath = GetImagePath();

            m_Product = DataService.GetProductDataController().Post(productPost);
            if (m_Product == null)
            {
                MessageBox.Show(UI, "Failed to Add Product!");
                return(false);
            }

            // post the Default details
            StockPost stock = new StockPost();

            stock.ProductID         = m_Product.ID;
            stock.AvailableQuantity = 0;
            stock.TotalQuantity     = 0;
            var stockPost = DataService.GetStockDataController().Post(stock);

            if (stockPost == null)
            {
                MessageBox.Show(UI, "Failed to Add Stock!");
                return(false);
            }

            // Broadcast NewProductAdded Event
            Event_NewEntryAdded e = new Event_NewEntryAdded(DBEntityType.PRODUCT, m_Product.ID);

            EventBroadcaster.Get().BroadcastEvent(e);

            MessageBox.Show(UI, "Product Added Successfully!");

            if (!m_UIControl.checkBox_AddAnotherProduct.Checked)
            {
                UI.DialogResult = DialogResult.OK;
                UI.Close();
            }

            return(true);
        }