public async Task <ActionResult <dynamic> > PutMasterProduct(long productId, MasterProduct masterProduct)
        {
            if (productId != masterProduct.ProductId)
            {
                return(BadRequest());
            }

            IBusiness <MasterProduct> productBusiness = BusinessFactory <MasterProduct> .Create();

            bool isUpdate = false, isProductNameExisting = false;
            var  productModel = await productBusiness.SingleOrDefaultAsync(x => (bool)x.Status && x.ProductId == productId);

            if (productModel != null)
            {
                isProductNameExisting = await productBusiness.Any(x => x.ProductId != masterProduct.ProductId && (bool)x.Status && x.ProductName.ToLower() == masterProduct.ProductName.ToLower());

                if (!isProductNameExisting)
                {
                    productModel.ProductName = masterProduct.ProductName;
                    productModel.Quantity    = masterProduct.Quantity;
                    productModel.Price       = masterProduct.Price;
                    productModel.Availablity = masterProduct.Quantity <= 0 ? false : true;
                    productModel.Status      = masterProduct.Status;
                    productModel.EntryBy     = masterProduct.EntryBy;
                    productModel.EntryDate   = DateTime.Now;
                    isUpdate = await productBusiness.Update(productModel, productId);
                }
            }

            dynamic saveResult = new { isUpdate, isProductNameExisting };

            return(Ok(saveResult));
        }
        public async Task <ActionResult <dynamic> > PostMasterProduct(MasterProduct masterProduct)
        {
            IBusiness <MasterProduct> productBusiness = BusinessFactory <MasterProduct> .Create();

            bool isInsert = false, isProductNameExisting = false;

            isProductNameExisting = await productBusiness.Any(x => (bool)x.Status && x.ProductName.ToLower() == masterProduct.ProductName.ToLower());

            if (!isProductNameExisting)
            {
                isInsert = await productBusiness.Insert(masterProduct);
            }

            dynamic result = new { isInsert, isProductNameExisting };

            return(Ok(result));
        }