예제 #1
0
        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);
                }
            }
        }
예제 #2
0
        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
        }
예제 #3
0
        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);
        }