예제 #1
0
        public void Configure(EntityTypeBuilder <CatalogItem> builder)
        {
            builder.ToTable("Catalog");

            builder.HasKey(ci => ci.Id);

            builder.Property(ci => ci.Name)
            .IsRequired()
            .HasMaxLength(50);

            builder.Property(ci => ci.Price)
            .IsRequired();

            builder.Property(ci => ci.PictureFileName)
            .IsRequired();

            builder.Ignore(ci => ci.PictureUri);

            builder.HasOne(ci => ci.CatalogBrand)
            .WithMany()
            .HasForeignKey(ci => ci.CatalogBrandId);

            builder.HasOne(ci => ci.CatalogType)
            .WithMany()
            .HasForeignKey(ci => ci.CatalogTypeId);

            builder.HasData(
                PreconfiguredData.GetPreconfiguredCatalogItems()
                );
        }
 public CatalogServiceMock()
 {
     catalogItems      = new List <CatalogItem>(PreconfiguredData.GetPreconfiguredCatalogItems());
     catalogBrands     = new List <CatalogBrand>(PreconfiguredData.GetPreconfiguredCatalogBrands());
     catalogTypes      = new List <CatalogType>(PreconfiguredData.GetPreconfiguredCatalogTypes());
     catalogItemsStock = new List <CatalogItemsStock>(PreconfiguredData.GetPreconfiguredCatalogItemsStock());
 }
    private void AddCatalogItems(CatalogDBContext context)
    {
        var preconfiguredItems = useCustomizationData
            ? GetCatalogItemsFromFile(context)
            : PreconfiguredData.GetPreconfiguredCatalogItems();

        foreach (var item in preconfiguredItems)
        {
            var sequenceId = _indexGenerator.GetNextSequenceValue(context);
            item.Id = sequenceId;
            context.CatalogItems.Add(item);
        }

        context.SaveChanges();
    }
    IEnumerable <CatalogItem> GetCatalogItemsFromFile(CatalogDBContext context)
    {
        var    contentRootPath     = GetContentRootPath();
        string csvFileCatalogItems = Path.Combine(contentRootPath, "Setup", "CatalogItems.csv");

        if (!File.Exists(csvFileCatalogItems))
        {
            return(PreconfiguredData.GetPreconfiguredCatalogItems());
        }

        string[] csvheaders;
        string[] requiredHeaders = { "catalogtypename", "catalogbrandname", "description", "name", "price", "pictureFileName" };
        string[] optionalheaders = { "availablestock", "restockthreshold", "maxstockthreshold", "onreorder" };
        csvheaders = GetHeaders(csvFileCatalogItems, requiredHeaders, optionalheaders);

        var catalogTypeIdLookup  = context.CatalogTypes.ToDictionary(ct => ct.Type, ct => ct.Id);
        var catalogBrandIdLookup = context.CatalogBrands.ToDictionary(ct => ct.Brand, ct => ct.Id);

        return(File.ReadAllLines(csvFileCatalogItems)
               .Skip(1)      // skip header row
               .Select(row => Regex.Split(row, ",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)"))
               .Select(column => CreateCatalogItem(column, csvheaders, catalogTypeIdLookup, catalogBrandIdLookup))
               .Where(x => x != null));
    }
 public CatalogServiceMock()
 {
     catalogItems = new List <CatalogItem>(PreconfiguredData.GetPreconfiguredCatalogItems());
 }
 // GET api/values/5
 public CatalogItem Get(int id)
 {
     return(PreconfiguredData.GetPreconfiguredCatalogItems().FirstOrDefault(x => x.Id == id));
 }
예제 #7
0
 public CatalogServiceTest()
 {
     catalogItems     = new List <CatalogItem>(PreconfiguredData.GetPreconfiguredCatalogItems());
     catalogItemSpecs = new List <CatalogItemSpecs>(PreconfiguredData.GetPreconfiguredCatalogItemSpecs());
 }