/// <summary>
        /// Get Product
        /// </summary>
        /// <param name="accountId"></param>
        /// <param name="productId"></param>
        /// <returns></returns>
        public async Task <ResponseModel <ProductDataTransformation> > GetProduct(int accountId, int productId)
        {
            ResponseModel <ProductDataTransformation> returnResponse = new ResponseModel <ProductDataTransformation>();
            ProductDataTransformation productDataTransformation      = new ProductDataTransformation();

            try
            {
                _inventoryManagementDataService.OpenConnection(_connectionStrings.PrimaryDatabaseConnectionString);

                Product product = await _inventoryManagementDataService.GetProduct(accountId, productId);

                if (product == null)
                {
                    returnResponse.ReturnStatus = false;
                    returnResponse.ReturnMessage.Add("Product Id not found.");
                }
                else
                {
                    productDataTransformation.AccountId         = product.AccountId;
                    productDataTransformation.ProductId         = product.ProductId;
                    productDataTransformation.ProductNumber     = product.ProductNumber;
                    productDataTransformation.Description       = product.Description;
                    productDataTransformation.AverageCost       = product.AverageCost;
                    productDataTransformation.BinLocation       = product.BinLocation;
                    productDataTransformation.CommittedQuantity = product.CommittedQuantity;
                    productDataTransformation.OnHandQuantity    = product.OnHandQuantity;
                    productDataTransformation.OnOrderQuantity   = product.OnOrderQuantity;
                    productDataTransformation.UnitPrice         = product.UnitPrice;

                    returnResponse.ReturnStatus = true;
                }
            }
            catch (Exception ex)
            {
                returnResponse.ReturnStatus = false;
                returnResponse.ReturnMessage.Add(ex.Message);
            }
            finally
            {
                _inventoryManagementDataService.CloseConnection();
            }

            returnResponse.Entity = productDataTransformation;

            return(returnResponse);
        }
        public async Task <ResponseModel <List <ProductDataTransformation> > > GetProduct(string searchText, int currentPageNumber, int pageSize, string sortExpression, string sortDirection)
        {
            ResponseModel <List <ProductDataTransformation> > returnResponse = new ResponseModel <List <ProductDataTransformation> >();

            List <ProductDataTransformation> salesOrders = new List <ProductDataTransformation>();

            try
            {
                _productManagementDataService.OpenConnection(_connectionStrings.PrimaryDatabaseConnectionString);

                DataGridPagingInformation dataGridPagingInformation = new DataGridPagingInformation();
                dataGridPagingInformation.CurrentPageNumber = currentPageNumber;
                dataGridPagingInformation.PageSize          = pageSize;
                dataGridPagingInformation.SortDirection     = sortDirection;
                dataGridPagingInformation.SortExpression    = sortExpression;

                List <Product> productsList = await _productManagementDataService.GetProducts(searchText, searchText, dataGridPagingInformation);

                foreach (Product product in productsList)
                {
                    ProductDataTransformation productDataTransformation = new ProductDataTransformation();
                    productDataTransformation = _mapper.Map <ProductDataTransformation>(product);
                    salesOrders.Add(productDataTransformation);
                }

                returnResponse.Entity     = salesOrders;
                returnResponse.TotalRows  = dataGridPagingInformation.TotalRows;
                returnResponse.TotalPages = dataGridPagingInformation.TotalPages;

                returnResponse.ReturnStatus = true;
            }
            catch (Exception ex)
            {
                _productManagementDataService.RollbackTransaction();
                returnResponse.ReturnStatus = false;
                returnResponse.ReturnMessage.Add(ex.Message);
            }
            finally
            {
                _productManagementDataService.CloseConnection();
            }

            return(returnResponse);
        }
Exemple #3
0
        /// <summary>
        /// Get Product
        /// </summary>
        /// <param name="accountId"></param>
        /// <param name="productNumber"></param>
        /// <returns></returns>
        public async Task <ResponseModel <ProductDataTransformation> > GetProduct(int accountId, string productNumber)
        {
            ResponseModel <ProductDataTransformation> returnResponse = new ResponseModel <ProductDataTransformation>();
            ProductDataTransformation productDataTransformation      = new ProductDataTransformation();

            try
            {
                _purchaseOrderManagementDataService.OpenConnection(_connectionStrings.PrimaryDatabaseConnectionString);

                Product product = await _purchaseOrderManagementDataService.GetProduct(accountId, productNumber);

                if (product == null)
                {
                    returnResponse.ReturnStatus = false;
                    returnResponse.ReturnMessage.Add("Product Number not found.");
                }
                else
                {
                    productDataTransformation.AccountId       = product.AccountId;
                    productDataTransformation.ProductId       = product.ProductId;
                    productDataTransformation.ProductMasterId = product.ProductMasterId;
                    productDataTransformation.ProductNumber   = product.ProductNumber;
                    productDataTransformation.Description     = product.Description;
                    returnResponse.ReturnStatus = true;
                }
            }
            catch (Exception ex)
            {
                returnResponse.ReturnStatus = false;
                returnResponse.ReturnMessage.Add(ex.Message);
            }
            finally
            {
                _purchaseOrderManagementDataService.CloseConnection();
            }

            returnResponse.Entity = productDataTransformation;

            return(returnResponse);
        }
        /// <summary>
        /// Update Product
        /// </summary>
        /// <param name="productDataTransformation"></param>
        /// <returns></returns>
        public async Task <ResponseModel <ProductDataTransformation> > UpdateProduct(ProductDataTransformation productDataTransformation)
        {
            ResponseModel <ProductDataTransformation> returnResponse = new ResponseModel <ProductDataTransformation>();

            Product product = new Product();

            try
            {
                _inventoryManagementDataService.OpenConnection(_connectionStrings.PrimaryDatabaseConnectionString);
                _inventoryManagementDataService.BeginTransaction((int)IsolationLevel.Serializable);

                ProductBusinessRules <ProductDataTransformation> productBusinessRules = new ProductBusinessRules <ProductDataTransformation>(productDataTransformation, _inventoryManagementDataService);
                ValidationResult validationResult = await productBusinessRules.Validate();

                if (validationResult.ValidationStatus == false)
                {
                    _inventoryManagementDataService.RollbackTransaction();

                    returnResponse.ReturnMessage = validationResult.ValidationMessages;
                    returnResponse.ReturnStatus  = validationResult.ValidationStatus;

                    return(returnResponse);
                }

                int productId = productDataTransformation.ProductId;

                product = await _inventoryManagementDataService.GetProductInformationForUpdate(productId);

                product.ProductNumber = productDataTransformation.ProductNumber;
                product.Description   = productDataTransformation.Description;
                product.UnitPrice     = productDataTransformation.UnitPrice;
                product.BinLocation   = productDataTransformation.BinLocation;

                await _inventoryManagementDataService.UpdateProduct(product);

                TransactionQueueOutbound transactionQueue = new TransactionQueueOutbound();
                transactionQueue.Payload         = GenerateProductUpdatePayload(product);
                transactionQueue.TransactionCode = TransactionQueueTypes.ProductUpdated;
                transactionQueue.ExchangeName    = MessageQueueExchanges.InventoryManagement;

                await _inventoryManagementDataService.CreateOutboundTransactionQueue(transactionQueue);

                //await _inventoryManagementDataService.UpdateDatabase();

                _inventoryManagementDataService.CommitTransaction();

                returnResponse.ReturnStatus = true;
            }
            catch (Exception ex)
            {
                _inventoryManagementDataService.RollbackTransaction();
                returnResponse.ReturnStatus = false;
                returnResponse.ReturnMessage.Add(ex.Message);
            }
            finally
            {
                _inventoryManagementDataService.CloseConnection();
            }

            returnResponse.Entity = productDataTransformation;

            return(returnResponse);
        }