/// <summary> /// Get Product /// </summary> /// <param name="productID"></param> /// <param name="transaction"></param> /// <returns></returns> public Product GetProduct(Guid productID, out TransactionalInformation transaction) { transaction = new TransactionalInformation(); Product product = new Product(); try { productsDataService.CreateSession(); product = productsDataService.GetProduct(productID); transaction.ReturnStatus = true; } catch (Exception ex) { transaction.ReturnMessage = new List<string>(); string errorMessage = ex.Message; transaction.ReturnStatus = false; transaction.ReturnMessage.Add(errorMessage); } finally { productsDataService.CloseSession(); } return product; }
/// <summary> /// Create Product /// </summary> /// <param name="product"></param> public void CreateProduct(Product product) { product.ProductID = Guid.NewGuid(); DateTime now = DateTime.Now; product.DateCreated = now; product.DateUpdated = now; dbConnection.Products.Add(product); }
/// <summary> /// Validate Product Update /// </summary> /// <param name="product"></param> /// <param name="dataService"></param> public void ValidateProductUpdate(Product product, IProductsDataService dataService) { productsDataService = dataService; InitializeValidationRules(product); ValidateRequired("ProductCode", "Product Code"); ValidateRequired("Description", "Description"); ValidateRequired("UnitOfMeasure", "UnitOfMeasure"); ValidateDecimalIsNotZero("UnitPrice", "Unit Price"); ValidateDecimalGreaterThanZero("UnitPrice", "Unit Price"); ValidateUniqueProductCode(product.ProductID, product.ProductCode); }
/// <summary> /// Initialize user Business Rules /// </summary> /// <param name="user"></param> /// <param name="dataService"></param> public void InitializeProductsBusinessRules(Product product, IProductsDataService dataService) { productsDataService = dataService; InitializeValidationRules(product); }
/// <summary> /// Product Inquiry /// </summary> /// <param name="productCode"></param> /// <param name="description"></param> /// <param name="paging"></param> /// <param name="transaction"></param> /// <returns></returns> public List<Product> ProductInquiry(string productCode, string description, DataGridPagingInformation paging, out TransactionalInformation transaction) { transaction = new TransactionalInformation(); string sortExpression = paging.SortExpression; if (paging.SortDirection != string.Empty) sortExpression = sortExpression + " " + paging.SortDirection; List<Product> productInquiry = new List<Product>(); int numberOfRows = 0; var productQuery = dbConnection.Products.AsQueryable(); if (productCode != null && productCode.Trim().Length > 0) { productQuery = productQuery.Where(c => c.ProductCode.StartsWith(productCode)); } if (description != null && description.Trim().Length > 0) { productQuery = productQuery.Where(c => c.Description.StartsWith(description)); } var products = from p in productQuery select new { p.ProductID, p.ProductCode, p.Description, p.UnitPrice, p.UnitOfMeasure }; numberOfRows = products.Count(); products = products.OrderBy(sortExpression); var productList = products.Skip((paging.CurrentPageNumber - 1) * paging.PageSize).Take(paging.PageSize); paging.TotalRows = numberOfRows; paging.TotalPages = AngularJSUtilities.Utilities.CalculateTotalPages(numberOfRows, paging.PageSize); foreach (var product in productList) { Product productData = new Product(); productData.ProductID = product.ProductID; productData.ProductCode = product.ProductCode; productData.Description = product.Description; productData.UnitOfMeasure = product.UnitOfMeasure; productData.UnitPrice = product.UnitPrice; productInquiry.Add(productData); } transaction.TotalPages = paging.TotalPages; transaction.TotalRows = paging.TotalRows; transaction.ReturnStatus = true; transaction.ReturnMessage.Add(numberOfRows.ToString() + " product records found."); return productInquiry; }
/// <summary> /// Update Product /// </summary> /// <param name="product"></param> public void UpdateProduct(Product product) { DateTime now = DateTime.Now; product.DateUpdated = now; }
public ProductsApiModel() { Product = new Product(); Products = new List<Product>(); }
/// <summary> /// Import Product /// </summary> /// <param name="columns"></param> /// <returns></returns> private Boolean ImportProduct(string[] columns) { Product product = new Product(); product.ProductCode = GenerateProductCode(columns[0].Trim(), columns[1].Trim()); product.Description = columns[1].Trim(); product.UnitPrice = Convert.ToDecimal(columns[5].Trim()); product.UnitOfMeasure = columns[4].Trim(); Boolean valid = productsDataService.ValidateDuplicateProduct(product.ProductCode); if (valid) { productsDataService.CreateProduct(product); } return valid; }
/// <summary> /// Update Product /// </summary> /// <param name="productID"></param> /// <param name="productCode"></param> /// <param name="description"></param> /// <param name="unitPrice"></param> /// <param name="unitOfMeasure"></param> /// <param name="transaction"></param> /// <returns></returns> public Product UpdateProduct(Guid productID, string productCode, string description, decimal unitPrice, string unitOfMeasure, out TransactionalInformation transaction) { transaction = new TransactionalInformation(); ProductsBusinessRules productsBusinessRules = new ProductsBusinessRules(); Product product = new Product(); try { productsDataService.CreateSession(); product = productsDataService.GetProduct(productID); product.ProductCode = productCode; product.Description = description; product.UnitPrice = unitPrice; product.UnitOfMeasure = unitOfMeasure; productsBusinessRules.ValidateProductUpdate(product, productsDataService); if (productsBusinessRules.ValidationStatus == true) { productsDataService.BeginTransaction(); productsDataService.UpdateProduct(product); productsDataService.CommitTransaction(true); transaction.ReturnStatus = true; transaction.ReturnMessage.Add("Product successfully updated at " + product.DateUpdated.ToString()); } else { transaction.ReturnStatus = productsBusinessRules.ValidationStatus; transaction.ReturnMessage = productsBusinessRules.ValidationMessage; transaction.ValidationErrors = productsBusinessRules.ValidationErrors; } } catch (Exception ex) { transaction.ReturnMessage = new List<string>(); string errorMessage = ex.Message; transaction.ReturnStatus = false; transaction.ReturnMessage.Add(errorMessage); } finally { productsDataService.CloseSession(); } return product; }