private static void BuildSuppliedPackSizes(Events.IngredientUpdated.Builder builder, List <IngredientSuppliedPackSize> suppliedPackList, List <CategoryType> categoryTypes, List <IngredientPriceBand> priceBands) { if (suppliedPackList.Count > 0) { foreach (var suppliedPack in suppliedPackList) { var suppliedPackSizeBuilder = Events.IngredientUpdated.Types.SuppliedPackSize.CreateBuilder(); suppliedPackSizeBuilder.SetIsDefault(suppliedPack.IsDefault) .SetIsPreferred(suppliedPack.IsPreferred) .SetDistributorName(suppliedPack.DistributorName) .SetDistributorCode(suppliedPack.DistributorCode) .SetDistributorUom(suppliedPack.DistributorUom) .SetSupplyQuantityNumber(suppliedPack.SupplyQuantityNumber) .SetSupplyQuantityQuantity(suppliedPack.SupplyQuantityQuantity) .SetSupplyQuantityUom(suppliedPack.SupplyQuantityUom) .SetSupplyQuantityPackDescription(suppliedPack.SupplyQuantityPackDescription) .SetCostPrice(suppliedPack.CostPrice) .SetCostPricePerItem(suppliedPack.CostPricePerItem) .SetCurrencyIso4217Code(suppliedPack.CurrencyIso4217Code) .SetIsOrderable(suppliedPack.IsOrderable) .SetMaxOrderQuantity(suppliedPack.MaxOrderQuantity) .SetMinOrderQuantity(suppliedPack.MinOrderQuantity) .SetCreatedUserFirstName(suppliedPack.CreatedUserFirstName) .SetCreatedUserLastName(suppliedPack.CreatedUserLastName) .SetCaptureDate(suppliedPack.CaptureDate) .SetModifiedUserFirstName(suppliedPack.ModifiedUserFirstName) .SetModifiedUserLastName(suppliedPack.ModifiedUserLastName) .SetModifiedDate(suppliedPack.ModifiedDate) .SetRetailBarCodeDetails(suppliedPack.RetailBarCodeDetails) .SetRankOrder(suppliedPack.RankOrder) .SetInvoicePrice(Decimal.BuildFromDecimal(suppliedPack.InvoicePrice)) .SetInvoiceUnitOfMeasure(suppliedPack.InvoiceUnitOfMeasure) .SetIsVariableWeighted(suppliedPack.IsVariableWeighted) ; var productCategoryTypes = categoryTypes.Where(ct => ct.ProductId == suppliedPack.ProductId).ToList(); Func <dynamic> createCategoryType = () => Events.IngredientUpdated.Types.CategoryType.CreateBuilder(); Func <dynamic> createCategory = () => Events.IngredientUpdated.Types.CategoryType.Types.Category.CreateBuilder(); BuilderHelpers.BuildCategoryTypes(suppliedPackSizeBuilder, createCategoryType, createCategory, productCategoryTypes); BuildPriceBands(suppliedPackSizeBuilder, priceBands.Where(p => p.ProductId == suppliedPack.ProductId).ToList()); builder.AddSuppliedPackSizes(suppliedPackSizeBuilder); } } }
public void BuildCategoryTypes_should_init_builder_with_category_hierarchy() { var categoryTypes = new List <CategoryType>(); categoryTypes.AddRange(new[] { #region CategoryType new CategoryType { ProductId = 13768, Id = 1, ExternalId = "83A05879-8C70-4583-A36B-0A31D601F0D9", Name = "Region", CategoryExportType = 1, MainCategories = new List <Category> { #region Category new Category { Id = 51, ProductId = 13768, ExternalId = "1AF82BE6-9E9C-4585-8884-CC3B5C775846", Name = "Scandanavia", ParentExternalId = "83A05879-8C70-4583-A36B-0A31D601F0D9" } #endregion } }, #endregion #region CategoryType new CategoryType { ProductId = 13768, Id = 4, ExternalId = "AF0FB0B6-34C6-4C9B-BA20-3330FA16A299", Name = "Course123", CategoryExportType = null, MainCategories = new List <Category> { #region Category new Category { Id = 425, ProductId = 13768, ExternalId = "232789EA-841E-4FFF-9FD2-F085495E3FAD", Name = "Starters", ParentExternalId = "AF0FB0B6-34C6-4C9B-BA20-3330FA16A299" }, #endregion #region Category new Category { Id = 425, ProductId = 13768, ExternalId = "232789EA-841E-4FFF-9FD2-F085495E3FAD", Name = "Starters", ParentExternalId = "AF0FB0B6-34C6-4C9B-BA20-3330FA16A299", SubCategories = new List <Category> { #region Category new Category { Id = 442, ProductId = 13768, ExternalId = "5666E087-E0BC-4902-932A-2DA74A930469", Name = "test", ParentExternalId = "232789EA-841E-4FFF-9FD2-F085495E3FAD" } #endregion } }, #endregion #region Category new Category { Id = 427, ProductId = 13768, ExternalId = "353A88C0-C37D-416A-9C66-FE4AAFBE72CE", Name = "Desserts", ParentExternalId = "AF0FB0B6-34C6-4C9B-BA20-3330FA16A299" }, #endregion } }, #endregion #region CategoryType new CategoryType { ProductId = 13768, Id = 5, ExternalId = "576B4721-5913-439F-8453-FC5AD8B6245E", Name = "Ingredient Category", CategoryExportType = null, MainCategories = new List <Category> { #region Category new Category { Id = 382, ProductId = 13768, ExternalId = "2D868A36-9108-4389-B355-E8F86135A534", Name = "Grocery", ParentExternalId = "576B4721-5913-439F-8453-FC5AD8B6245E" }, #endregion #region Category new Category { Id = 63, ProductId = 13768, ExternalId = "02C03BD6-1368-4CDB-8D68-105CBE41FDD5", Name = "Bakery", ParentExternalId = "576B4721-5913-439F-8453-FC5AD8B6245E", SubCategories = new List <Category> { #region Category new Category { Id = 422, ProductId = 13768, ExternalId = "7C5D42AA-BED0-4ACC-8919-C291DB92E4DB", Name = "Italian Breads", ParentExternalId = "02C03BD6-1368-4CDB-8D68-105CBE41FDD5" } #endregion } }, #endregion } } #endregion }); // act var builder = RecipeUpdated.CreateBuilder(); // mandatory fields -> they are not important now builder .SetExternalId("") .SetCustomerId("") .SetCustomerName("") .SetSequenceNumber(1) .SetSource(SourceSystem.STARCHEF); Func <dynamic> createCategoryType = () => RecipeCategoryType.CreateBuilder(); Func <dynamic> createCategory = () => RecipeCategory.CreateBuilder(); BuilderHelpers.BuildCategoryTypes(builder, createCategoryType, createCategory, categoryTypes); #region assert var suppliedPackSize = builder.Build(); Assert.Equal(3, suppliedPackSize.CategoryTypesCount); var categoryType = suppliedPackSize.CategoryTypesList.Single(ct => ct.CategoryTypeName == "Region"); Assert.Equal(CategoryExportType.ING, categoryType.ExportType); Assert.Equal("83A05879-8C70-4583-A36B-0A31D601F0D9", categoryType.ExternalId); Assert.Equal(1, categoryType.MainCategoriesCount); Assert.Equal("Scandanavia", categoryType.MainCategoriesList[0].CategoryName); Assert.Equal("1AF82BE6-9E9C-4585-8884-CC3B5C775846", categoryType.MainCategoriesList[0].ExternalId); Assert.Equal("83A05879-8C70-4583-A36B-0A31D601F0D9", categoryType.MainCategoriesList[0].ParentExternalId); categoryType = suppliedPackSize.CategoryTypesList.Single(ct => ct.CategoryTypeName == "Course123"); Assert.Equal(CategoryExportType.NONE, categoryType.ExportType); Assert.Equal("AF0FB0B6-34C6-4C9B-BA20-3330FA16A299", categoryType.ExternalId); Assert.Equal(3, categoryType.MainCategoriesCount); Assert.Equal("Starters", categoryType.MainCategoriesList[0].CategoryName); Assert.Equal("232789EA-841E-4FFF-9FD2-F085495E3FAD", categoryType.MainCategoriesList[0].ExternalId); Assert.Equal("AF0FB0B6-34C6-4C9B-BA20-3330FA16A299", categoryType.MainCategoriesList[0].ParentExternalId); Assert.Equal("Starters", categoryType.MainCategoriesList[1].CategoryName); Assert.Equal("232789EA-841E-4FFF-9FD2-F085495E3FAD", categoryType.MainCategoriesList[1].ExternalId); Assert.Equal("AF0FB0B6-34C6-4C9B-BA20-3330FA16A299", categoryType.MainCategoriesList[1].ParentExternalId); Assert.Equal(1, categoryType.MainCategoriesList[1].SubCategoriesCount); Assert.Equal("test", categoryType.MainCategoriesList[1].SubCategoriesList[0].CategoryName); Assert.Equal("5666E087-E0BC-4902-932A-2DA74A930469", categoryType.MainCategoriesList[1].SubCategoriesList[0].ExternalId); Assert.Equal("232789EA-841E-4FFF-9FD2-F085495E3FAD", categoryType.MainCategoriesList[1].SubCategoriesList[0].ParentExternalId); Assert.Equal("Desserts", categoryType.MainCategoriesList[2].CategoryName); Assert.Equal("353A88C0-C37D-416A-9C66-FE4AAFBE72CE", categoryType.MainCategoriesList[2].ExternalId); Assert.Equal("AF0FB0B6-34C6-4C9B-BA20-3330FA16A299", categoryType.MainCategoriesList[2].ParentExternalId); categoryType = suppliedPackSize.CategoryTypesList.Single(ct => ct.CategoryTypeName == "Ingredient Category"); Assert.Equal(CategoryExportType.NONE, categoryType.ExportType); Assert.Equal("576B4721-5913-439F-8453-FC5AD8B6245E", categoryType.ExternalId); Assert.Equal(2, categoryType.MainCategoriesCount); Assert.Equal("Grocery", categoryType.MainCategoriesList[0].CategoryName); Assert.Equal("2D868A36-9108-4389-B355-E8F86135A534", categoryType.MainCategoriesList[0].ExternalId); Assert.Equal("576B4721-5913-439F-8453-FC5AD8B6245E", categoryType.MainCategoriesList[0].ParentExternalId); Assert.Equal("Bakery", categoryType.MainCategoriesList[1].CategoryName); Assert.Equal("02C03BD6-1368-4CDB-8D68-105CBE41FDD5", categoryType.MainCategoriesList[1].ExternalId); Assert.Equal("576B4721-5913-439F-8453-FC5AD8B6245E", categoryType.MainCategoriesList[1].ParentExternalId); Assert.Equal(1, categoryType.MainCategoriesList[1].SubCategoriesCount); Assert.Equal("Italian Breads", categoryType.MainCategoriesList[1].SubCategoriesList[0].CategoryName); Assert.Equal("7C5D42AA-BED0-4ACC-8919-C291DB92E4DB", categoryType.MainCategoriesList[1].SubCategoriesList[0].ExternalId); Assert.Equal("02C03BD6-1368-4CDB-8D68-105CBE41FDD5", categoryType.MainCategoriesList[1].SubCategoriesList[0].ParentExternalId); #endregion }
public bool SetForUpdate(Events.RecipeUpdated.Builder builder, string connectionString, int entityId, int databaseId) { if (builder == null) { return(false); } var cust = new Customer(databaseId); var reader = ExecuteDbCommand(connectionString, entityId); if (reader.Read()) { var changeTypeSc = reader["ChangeType"].ToString(); var changeType = Events.ChangeType.UPDATE; if (changeTypeSc == "Archive") { changeType = Events.ChangeType.ARCHIVE; } builder.SetCustomerId(cust.ExternalId) .SetCustomerName(cust.Name) .SetExternalId(reader[0].ToString()) .SetRecipeName(reader[1].ToString()) .SetRecipeType(OrchestrateHelper.MapRecipeType(reader[2].ToString())) .SetUnitSizeQuantity(reader.GetValueOrDefault <double>(3)) .SetPortionSizeUnitCode(reader[4].ToString()) .SetUnitSizePackDescription(reader[5].ToString()) .SetCost(reader.GetValueOrDefault <double>(8)) .SetCurrencyIso4217Code(reader[9].ToString()) .SetVatType(OrchestrateHelper.MapVatType(reader[10].ToString())) .SetVatPercentage(reader.GetValueOrDefault <double>(11)) .SetSellingPrice(reader.GetValueOrDefault <double>(12)) .SetPricingModel(Events.PricingModel.Margin) .SetPricingModelValue(reader.GetValueOrDefault <double>(14)) .SetSuggestedSellingPrice(reader.GetValueOrDefault <double>(16)) .SetSuggestedPlu(reader[17].ToString()) .SetCreatedUserFirstName(reader[18].ToString()) .SetCreatedUserLastName(reader[19].ToString()) .SetModifiedUserFirstName(reader[20].ToString()) .SetModifiedUserLastName(reader[21].ToString()) .SetCaptureDate(Fourth.Orchestration.Model.UnixDateTime.FromDateTime(reader.GetValueOrDefault <DateTime>(22))) .SetModifiedDate(Fourth.Orchestration.Model.UnixDateTime.FromDateTime(reader.GetValueOrDefault <DateTime>(23))) .SetPortionSizeQuantity(reader.GetValueOrDefault <double>("PortionSizeQuantity")) .SetPortionSizeUom(reader.GetValueOrDefault <string>("PortionSizeUom") ?? string.Empty) .SetChangeType(changeType); var barcodes = ReadBarcodes(reader); if (barcodes.Any()) { builder.AddRangeBarcode(barcodes); } } //Ingredients var ingredientList = new List <RecipeIngredient>(); if (reader.NextResult()) { ingredientList = ReadIngredients(reader, entityId); } //Kitchenarea var kitchenAreaLookup = new Dictionary <int, List <KitchenArea> >(); if (reader.NextResult()) { List <KitchenArea> kitchenAreas; reader.ReadKitchenAreas(out kitchenAreas); kitchenAreaLookup = BuildKitchenAreas(kitchenAreas); } //Build Ingredients and KitchenArea BuildIngredients(builder, ingredientList, kitchenAreaLookup); //Groups if (reader.NextResult()) { while (reader.Read()) { var groupBuilder = Events.RecipeUpdated.Types.RecipeGroup.CreateBuilder(); var externalId = reader.GetValueOrDefault <Guid>("group_guid").ToString(); var groupName = reader.GetValueOrDefault <string>("group_name"); var groupPrice = reader.GetValueOrDefault <decimal>("product_price"); groupBuilder.SetExternalId(externalId) .SetGroupName(groupName) .SetPrice(Fourth.Orchestration.Model.Common.Decimal.BuildFromDecimal(groupPrice)); builder.AddGroups(groupBuilder); } } var categoryTypes = new List <CategoryType>(); List <Category> categories; //read category types and categories if (reader.NextResult()) { reader.ReadCategories(out categoryTypes, out categories); } if (categoryTypes.Count > 0) { Func <dynamic> createCategoryType = () => Events.RecipeUpdated.Types.CategoryType.CreateBuilder(); Func <dynamic> createCategory = () => Events.RecipeUpdated.Types.CategoryType.Types.Category.CreateBuilder(); BuilderHelpers.BuildCategoryTypes(builder, createCategoryType, createCategory, categoryTypes); } //read intolerances if (reader.NextResult()) { if (reader.Read()) { if (!reader.IsDBNull(1)) { builder.SetContainsMilkOrMilkProducts(reader.GetBoolean(1)); } if (!reader.IsDBNull(2)) { builder.SetContainsEggOrEggDerivatives(reader.GetBoolean(2)); } if (!reader.IsDBNull(3)) { builder.SetContainsCerealsThatContainGluten(reader.GetBoolean(3)); } if (!reader.IsDBNull(4)) { builder.SetContainsPeanuts(reader.GetBoolean(4)); } if (!reader.IsDBNull(5)) { builder.SetContainsNutsOrNutTrace(reader.GetBoolean(5)); } if (!reader.IsDBNull(6)) { builder.SetContainsSesameSeedOrSesameSeedProducts(reader.GetBoolean(6)); } if (!reader.IsDBNull(7)) { builder.SetContainsSoya(reader.GetBoolean(7)); } if (!reader.IsDBNull(8)) { builder.SetContainsFishOrFishProducts(reader.GetBoolean(8)); } if (!reader.IsDBNull(9)) { builder.SetContainsCrustaceans(reader.GetBoolean(9)); } if (!reader.IsDBNull(10)) { builder.SetContainsMolluscs(reader.GetBoolean(10)); } if (!reader.IsDBNull(11)) { builder.SetContainsMustardOrMustardProducts(reader.GetBoolean(11)); } if (!reader.IsDBNull(12)) { builder.SetContainsCeleryOrCeleriacProducts(reader.GetBoolean(12)); } if (!reader.IsDBNull(13)) { builder.SetContainsSulphurDioxideOrSulphites(reader.GetBoolean(13)); } if (!reader.IsDBNull(14)) { builder.SetContainsLupinFlourOrLupinProducts(reader.GetBoolean(14)); } if (!reader.IsDBNull(15)) { builder.SetContainsGlutenOrGlutenProducts(reader.GetBoolean(15)); } } } //read nutritions if (reader.NextResult()) { if (reader.Read()) { if (!reader.IsDBNull(1)) { builder.SetEnergyKJperServing(reader.GetDouble(1)); } if (!reader.IsDBNull(2)) { builder.SetEnergyKCalPerServing(reader.GetDouble(2)); } if (!reader.IsDBNull(3)) { builder.SetFatPerServing(reader.GetDouble(3)); } if (!reader.IsDBNull(4)) { builder.SetSaturatedFatPerServing(reader.GetDouble(4)); } if (!reader.IsDBNull(5)) { builder.SetSugarPerServing(reader.GetDouble(5)); } if (!reader.IsDBNull(6)) { builder.SetSaltPerServing(reader.GetDouble(6)); } } } //Recipe sets var recipeSets = new List <RecipeSet>(); if (reader.NextResult()) { recipeSets = GetRecipeSets(reader); } if (!recipeSets.Any()) { builder.SetChangeType(Events.ChangeType.ARCHIVE); } BuildRecipeSets(builder, recipeSets); return(true); }