public static void Generate(IServiceProvider serviceProvider)
        {
            using var context = new PromotionEngineDbContext(
                      serviceProvider.GetRequiredService <DbContextOptions <PromotionEngineDbContext> >());

            // Check whether data has been generated
            if (context.PromotionTypes.Any())
            {
                return; // Data already generated
            }

            // Setup ID's for Promotions
            string promotionId1 = "prom_" + PrimaryKeyGenerator.Generate();
            string promotionId2 = "prom_" + PrimaryKeyGenerator.Generate();
            string promotionId3 = "prom_" + PrimaryKeyGenerator.Generate();
            string promotionId4 = "prom_" + PrimaryKeyGenerator.Generate();

            // Setup ID's for Promotion Types
            string promotionTypeId1 = "ptype_" + PrimaryKeyGenerator.Generate();
            string promotionTypeId2 = "ptype_" + PrimaryKeyGenerator.Generate();
            string promotionTypeId3 = "ptype_" + PrimaryKeyGenerator.Generate();

            // Insert promotion types
            context.PromotionTypes.AddRange(
                new PromotionType
            {
                PromotionTypeId = promotionTypeId1,
                Cost            = 130
            },
                new PromotionType
            {
                PromotionTypeId = promotionTypeId2,
                Cost            = 45
            },
                new PromotionType
            {
                PromotionTypeId = promotionTypeId3,
                Cost            = 30
            }
                );

            // Insert promotions:
            //  3A's  = 130
            //  2B's  = 45
            //  C + D = 30
            context.Promotions.AddRange(
                new Promotion
            {
                PromotionId     = promotionId1,
                PromotionTypeId = promotionTypeId1,
                SKU             = SKUEnum.A,
                Count           = 3
            },
                new Promotion
            {
                PromotionId     = promotionId2,
                PromotionTypeId = promotionTypeId2,
                SKU             = SKUEnum.B,
                Count           = 2
            },
                new Promotion
            {
                PromotionId     = promotionId3,
                PromotionTypeId = promotionTypeId3,
                SKU             = SKUEnum.C,
                Count           = 1
            },
                new Promotion
            {
                PromotionId     = promotionId4,
                PromotionTypeId = promotionTypeId3,
                SKU             = SKUEnum.D,
                Count           = 1
            }
                );

            context.SaveChanges();
        }
Beispiel #2
0
 public PromotionEngine(IServiceProvider serviceProvider)
 {
     _context = serviceProvider.GetRequiredService <PromotionEngineDbContext>();
 }