static void Main(string[] args) { var db = new TransactionEntities(); Console.WriteLine("DB Connection Established."); Console.WriteLine("Clearing old recommendations."); db.ProductRecommendations.ToList().Select(p => db.ProductRecommendations.Remove(p)); db.SaveChanges(); Console.WriteLine("Calculating new recommendations."); var records = db.TransactionRecords.ToList(); var products = records.Select(t => t.productId).Distinct().OrderBy(t => t).ToList(); var results = new List <ProductRecommendation>(); products.ForEach(p => { Console.WriteLine($"Calculating recommendations for {p}"); var rec = new ProductRecommendation(); rec.ProductId = int.Parse(p); rec.RecomendedProductIdsJson = JsonConvert.SerializeObject(CommonlyPurchasedTogether(p, records)); }); Console.WriteLine("Saving results."); db.ProductRecommendations.AddRange(results); db.SaveChanges(); Console.WriteLine("All done. Press the anykey to exit!"); Console.ReadLine(); }
dynamic MapProduct(ProductRecommendation p) { return new { id = p.ProductId, partId = p.PartId, dispPartId = p.DisplayPartId, name = p.ProductName, desc = p.ProductDescription, shade = p.ShadeName, price = p.ListPrice, useupRate = 0, // p.UseUpRateInDays, // TODO: add useupRate when supported from endeca listImage = MapImageUrl(p.ProductImageUrl) }; }
protected override Task InitializeAsync(DownstreamRequest request) { var jTokens = Json.SelectTokens(request.Scenario.Connection.ResponseJsonPath, errorWhenNoMatch: true); foreach (var jToken in jTokens) { var product = new ProductRecommendation { ProductId = jToken.ToString(), Scenario = request.Scenario.Name, }; Products.Add(product); } return(Task.CompletedTask); }
public static void createTestData(TestContext context) { #region Product List and User List Creation - check valid list item for usage List <ProductRecommendation> testPR = new List <ProductRecommendation>(); List <UserRecommendation> testUR = new List <UserRecommendation>(); Product product1 = new Product(); product1.ProductId = "1"; product1.ProductName = "Product1"; product1.ProductDescription = string.Empty; product1.ProductImageurl = string.Empty; Product product2 = new Product(); product2.ProductId = "2"; product2.ProductName = "Product2"; product2.ProductDescription = string.Empty; product2.ProductImageurl = string.Empty; Product product3 = new Product(); product3.ProductId = "3"; product3.ProductName = "Product3"; product3.ProductDescription = string.Empty; product3.ProductImageurl = string.Empty; ProductRecommendation pr1 = new ProductRecommendation(); pr1.Rank = 1; pr1.Product = product1; ProductRecommendation pr2 = new ProductRecommendation(); pr2.Rank = 2; pr2.Product = product2; ProductRecommendation pr3 = new ProductRecommendation(); pr3.Rank = 3; pr3.Product = product3; testPR.Add(pr1); testPR.Add(pr2); testPR.Add(pr3); foreach (ProductRecommendation item in testPR) { string commandText = getCommand(true, item, PARAM_SOURCE_ID, PARAM_PRODUCT_KEY); executeCommand(commandText); } UserRecommendation ur1 = new UserRecommendation(); ur1.Rank = 1; ur1.Product = product1; UserRecommendation ur2 = new UserRecommendation(); ur2.Rank = 2; ur2.Product = product2; UserRecommendation ur3 = new UserRecommendation(); ur3.Rank = 3; ur3.Product = product3; testUR.Add(ur1); testUR.Add(ur2); testUR.Add(ur3); foreach (UserRecommendation item in testUR) { string commandText = getCommand(true, item, PARAM_SOURCE_ID, PARAM_USER_KEY); executeCommand(commandText); } #endregion Product List and User List Creation - check valid list item for usage }
public void productToProductRecommendationTest() { bool actual = false; Result actualResult; Result expectedResult; Mock <IWebOperationContext> mockContext = new Mock <IWebOperationContext> { DefaultValue = DefaultValue.Mock }; using (new MockedWebOperationContext(mockContext.Object)) { #region Same Product List and params from Initialization APIPrototypeService target = new APIPrototypeService(); string tenantId = PARAM_TENANT_ID; string sourceId = PARAM_SOURCE_ID; string productKey = PARAM_PRODUCT_KEY; List <ProductRecommendation> testPR = new List <ProductRecommendation>(); Product product1 = new Product(); product1.ProductId = "1"; product1.ProductName = "Product1"; product1.ProductDescription = string.Empty; product1.ProductImageurl = string.Empty; Product product2 = new Product(); product2.ProductId = "2"; product2.ProductName = "Product2"; product2.ProductDescription = string.Empty; product2.ProductImageurl = string.Empty; Product product3 = new Product(); product3.ProductId = "3"; product3.ProductName = "Product3"; product3.ProductDescription = string.Empty; product3.ProductImageurl = string.Empty; ProductRecommendation pr1 = new ProductRecommendation(); pr1.Rank = 1; pr1.Product = product1; ProductRecommendation pr2 = new ProductRecommendation(); pr2.Rank = 2; pr2.Product = product2; ProductRecommendation pr3 = new ProductRecommendation(); pr3.Rank = 3; pr3.Product = product3; testPR.Add(pr1); testPR.Add(pr2); testPR.Add(pr3); #endregion Same Product List and params from Initialization expectedResult = new Result(); expectedResult.tenantId = long.Parse(tenantId); expectedResult.resultSet = testPR; actualResult = target.productToProductRecommendation(tenantId, sourceId, productKey); //Compare values of object expected and actual from service by Value! actual = APIPrototype.Utils.ObjectHelper.AreObjectsEqual(actualResult, expectedResult); } Assert.IsTrue(actual); }
/// <summary> /// Returns TSQL for given object /// </summary> /// <param name="isInsert"></param> /// <param name="referenceObject"></param> /// <param name="sourceSystemId"></param> /// <param name="key"></param> /// <returns></returns> private static string getCommand(bool isInsert, object referenceObject, string sourceSystemId, string key) { string retVal = string.Empty; if (isInsert) { if (referenceObject.GetType() == typeof(ProductRecommendation)) { string productInsertQuery = SqlResource.ProductInsertQuery; ProductRecommendation pr = (ProductRecommendation)referenceObject; productInsertQuery = productInsertQuery.Replace("[[sourcesystemid]]", sourceSystemId); productInsertQuery = productInsertQuery.Replace("[[targetproductid]]", formatSQLInput(key)); productInsertQuery = productInsertQuery.Replace("[[productid]]", formatSQLInput(pr.Product.ProductId)); productInsertQuery = productInsertQuery.Replace("[[productname]]", formatSQLInput(pr.Product.ProductName)); productInsertQuery = productInsertQuery.Replace("[[productdescription]]", formatSQLInput(pr.Product.ProductDescription)); productInsertQuery = productInsertQuery.Replace("[[productimageurl]]", formatSQLInput(pr.Product.ProductImageurl)); productInsertQuery = productInsertQuery.Replace("[[rank]]", pr.Rank.ToString()); retVal = productInsertQuery; } else if (referenceObject.GetType() == typeof(UserRecommendation)) { string userInsertQuery = SqlResource.UserInsertQuery; UserRecommendation ur = (UserRecommendation)referenceObject; userInsertQuery = userInsertQuery.Replace("[[sourcesystemid]]", sourceSystemId); userInsertQuery = userInsertQuery.Replace("[[userid]]", formatSQLInput(key)); userInsertQuery = userInsertQuery.Replace("[[productid]]", formatSQLInput(ur.Product.ProductId)); userInsertQuery = userInsertQuery.Replace("[[productname]]", formatSQLInput(ur.Product.ProductName)); userInsertQuery = userInsertQuery.Replace("[[productdescription]]", formatSQLInput(ur.Product.ProductDescription)); userInsertQuery = userInsertQuery.Replace("[[productimageurl]]", formatSQLInput(ur.Product.ProductImageurl)); userInsertQuery = userInsertQuery.Replace("[[rank]]", ur.Rank.ToString()); retVal = userInsertQuery; } else { throw new Exception("Incorrect command option for given object"); } } else // delete command is requested { if (referenceObject.GetType() == typeof(ProductRecommendation)) { string productDeleteQuery = SqlResource.ProductDeleteQuery; productDeleteQuery = productDeleteQuery.Replace("[[sourcesystemid]]", sourceSystemId); productDeleteQuery = productDeleteQuery.Replace("[[targetproductid]]", formatSQLInput(key)); retVal = productDeleteQuery; } else if (referenceObject.GetType() == typeof(UserRecommendation)) { string userDeleteQuery = SqlResource.UserDeleteQuery; userDeleteQuery = userDeleteQuery.Replace("[[sourcesystemid]]", sourceSystemId); userDeleteQuery = userDeleteQuery.Replace("[[userid]]", formatSQLInput(key)); retVal = userDeleteQuery; } else { throw new Exception("Incorrect command option for given object"); } } return(retVal); }