コード例 #1
0
        /// <summary>
        /// Creates and seeds a new part.
        /// </summary>
        /// <param name="item">The item this part should belong to.</param>
        /// <param name="roleId">The optional part role ID.</param>
        /// <param name="factory">The part seeder factory. This is used
        /// for layer parts, which need to seed a set of fragments.</param>
        /// <returns>A new part.</returns>
        /// <exception cref="ArgumentNullException">item or factory</exception>
        public override IPart GetPart(IItem item, string roleId,
                                      PartSeederFactory factory)
        {
            if (item == null)
            {
                throw new ArgumentNullException(nameof(item));
            }
            if (factory == null)
            {
                throw new ArgumentNullException(nameof(factory));
            }

            MsPlacePart part = new Faker <MsPlacePart>()
                               .RuleFor(p => p.Area,
                                        f => f.PickRandom("France", "Germany", "Italy"))
                               .RuleFor(p => p.Address, f => $"{f.Lorem.Word()}, {f.Lorem.Word()}")
                               .RuleFor(p => p.City, f => f.Address.City())
                               .RuleFor(p => p.Site, f => f.PickRandom("A library", "A monastery"))
                               .RuleFor(p => p.Subscriber, f => f.Lorem.Word())
                               .RuleFor(p => p.SubscriptionLoc, f =>
                                        new MsLocation
            {
                N = (short)f.Random.Number(20, 60),
                S = f.Random.Bool() ?
                    "v" : "r",
                L = (short)f.Random.Number(1, 20)
            })
                               .RuleFor(p => p.Sources, SeederHelper.GetDocReferences(1, 3))
                               .Generate();

            SetPartMetadata(part, roleId, item);

            return(part);
        }
コード例 #2
0
        /// <summary>
        /// Creates and seeds a new part.
        /// </summary>
        /// <param name="item">The item this part should belong to.</param>
        /// <param name="roleId">The optional part role ID.</param>
        /// <param name="factory">The part seeder factory. This is used
        /// for layer parts, which need to seed a set of fragments.</param>
        /// <returns>A new part.</returns>
        /// <exception cref="ArgumentNullException">item or factory</exception>
        public override IPart GetPart(IItem item, string roleId,
                                      PartSeederFactory factory)
        {
            if (item == null)
            {
                throw new ArgumentNullException(nameof(item));
            }
            if (factory == null)
            {
                throw new ArgumentNullException(nameof(factory));
            }

            CorrExchangesPart part = new CorrExchangesPart();

            SetPartMetadata(part, roleId, item);

            for (int n = 1; n <= Randomizer.Seed.Next(1, 3 + 1); n++)
            {
                part.Exchanges.Add(new Faker <CorrExchange>()
                                   .RuleFor(e => e.IsDubious, f => f.Random.Bool(0.3f))
                                   .RuleFor(e => e.IsIndirect, f => f.Random.Bool())
                                   .RuleFor(e => e.IsFromParticipant, f => f.Random.Bool())
                                   .RuleFor(e => e.Chronotopes,
                                            new List <Chronotope> {
                    SeederHelper.GetChronotope("from", 1200)
                })
                                   .RuleFor(e => e.Participants, SeederHelper.GetDecoratedIds(1, 2))
                                   .RuleFor(e => e.Sources, SeederHelper.GetDocReferences(1, 3))
                                   .RuleFor(e => e.Attachments, SeederHelper.GetAttachments(1, 3))
                                   .Generate());
            }

            return(part);
        }
コード例 #3
0
        /// <summary>
        /// Creates and seeds a new part.
        /// </summary>
        /// <param name="item">The item this part should belong to.</param>
        /// <param name="roleId">The optional part role ID.</param>
        /// <param name="factory">The part seeder factory. This is used
        /// for layer parts, which need to seed a set of fragments.</param>
        /// <returns>A new part.</returns>
        /// <exception cref="ArgumentNullException">item or factory</exception>
        public override IPart GetPart(IItem item, string roleId,
                                      PartSeederFactory factory)
        {
            if (item == null)
            {
                throw new ArgumentNullException(nameof(item));
            }
            if (factory == null)
            {
                throw new ArgumentNullException(nameof(factory));
            }

            PersonWorksPart part = new PersonWorksPart();

            SetPartMetadata(part, roleId, item);
            string[] languages = new[] { "eng", "ita", "fra", "deu", "spa" };

            for (int n = 1; n <= Randomizer.Seed.Next(1, 3 + 1); n++)
            {
                part.Works.Add(new Faker <PersonWork>()
                               .RuleFor(a => a.Language, f => f.PickRandom(languages))
                               .RuleFor(a => a.IsDubious, f => f.Random.Bool(0.2f))
                               .RuleFor(a => a.IsLost, f => f.Random.Bool(0.2f))
                               .RuleFor(a => a.Genre, f => f.Lorem.Word())
                               .RuleFor(a => a.Titles, f => new List <string>(new[] { f.Lorem.Sentence() }))
                               .RuleFor(a => a.Chronotopes, SeederHelper.GetChronotopes(1, 3))
                               .RuleFor(a => a.References, SeederHelper.GetDocReferences(1, 3))
                               .RuleFor(a => a.Note,
                                        f => f.Random.Bool(0.2f)? f.Lorem.Sentence() : null)
                               .Generate());
            }

            return(part);
        }
コード例 #4
0
        /// <summary>
        /// Creates and seeds a new part.
        /// </summary>
        /// <param name="item">The item this part should belong to.</param>
        /// <param name="roleId">The optional part role ID.</param>
        /// <param name="factory">The part seeder factory. This is used
        /// for layer parts, which need to seed a set of fragments.</param>
        /// <returns>A new part.</returns>
        /// <exception cref="ArgumentNullException">item or factory</exception>
        public override IPart GetPart(IItem item, string roleId,
                                      PartSeederFactory factory)
        {
            if (item == null)
            {
                throw new ArgumentNullException(nameof(item));
            }
            if (factory == null)
            {
                throw new ArgumentNullException(nameof(factory));
            }

            CorrPseudonymsPart part = new CorrPseudonymsPart();

            SetPartMetadata(part, roleId, item);

            part.Pseudonyms.Add(new Faker <CorrPseudonym>()
                                .RuleFor(p => p.Language, f => f.PickRandom("lat", "ita"))
                                .RuleFor(p => p.Value, f => f.Lorem.Word())
                                .RuleFor(p => p.IsAuthor, f => f.Random.Bool())
                                .RuleFor(p => p.Sources, SeederHelper.GetDocReferences(1, 3))
                                .Generate());

            return(part);
        }
コード例 #5
0
        /// <summary>
        /// Creates and seeds a new part.
        /// </summary>
        /// <param name="item">The item this part should belong to.</param>
        /// <param name="roleId">The optional part role ID.</param>
        /// <param name="factory">The part seeder factory. This is used
        /// for layer parts, which need to seed a set of fragments.</param>
        /// <returns>A new part.</returns>
        /// <exception cref="ArgumentNullException">item or factory</exception>
        public override IPart GetPart(IItem item, string roleId,
                                      PartSeederFactory factory)
        {
            if (item == null)
            {
                throw new ArgumentNullException(nameof(item));
            }
            if (factory == null)
            {
                throw new ArgumentNullException(nameof(factory));
            }

            MsWatermarksPart part = new MsWatermarksPart();

            SetPartMetadata(part, roleId, item);

            for (int n = 1; n <= Randomizer.Seed.Next(1, 3 + 1); n++)
            {
                part.Watermarks.Add(new Faker <MsWatermark>()
                                    .RuleFor(w => w.Subject, f => f.Lorem.Word())
                                    .RuleFor(w => w.SimilarityRank, f => f.Random.Short(1, 5))
                                    .RuleFor(w => w.Description, f => f.Lorem.Sentence())
                                    .RuleFor(w => w.Place, f => f.Lorem.Word())
                                    .RuleFor(w => w.Date, HistoricalDate.Parse($"{1200 + n} AD"))
                                    .RuleFor(w => w.ExternalIds, SeederHelper.GetExternalIds(1, 3))
                                    .Generate());
            }

            return(part);
        }
コード例 #6
0
 private MsDecorationArtist GetArtist()
 {
     return(new Faker <MsDecorationArtist>()
            .RuleFor(a => a.Type, f => f.PickRandom("draftsman", "miniator"))
            .RuleFor(a => a.Id, f => f.Lorem.Word())
            .RuleFor(a => a.Name, f => f.Person.FirstName)
            .RuleFor(a => a.Note, f => f.Lorem.Sentence())
            .RuleFor(a => a.Sources, SeederHelper.GetDocReferences(1, 3))
            .Generate());
 }
コード例 #7
0
ファイル: Configuration.cs プロジェクト: ece29390/playNGo
        protected override void Seed(PlayNGo.Data.DataContext context)
        {
            //  This method will be called after migrating to the latest version.

            //  You can use the DbSet<T>.AddOrUpdate() helper extension method
            //  to avoid creating duplicate seed data.

            var persons = SeederHelper.CreateInitialListOfPerson();

            context.Persons.AddRange(persons);
        }
コード例 #8
0
        /// <summary>
        /// Creates and seeds a new part.
        /// </summary>
        /// <param name="item">The item this part should belong to.</param>
        /// <param name="roleId">The optional part role ID.</param>
        /// <param name="factory">The part seeder factory. This is used
        /// for layer parts, which need to seed a set of fragments.</param>
        /// <returns>A new part.</returns>
        /// <exception cref="ArgumentNullException">item or factory</exception>
        public override IPart GetPart(IItem item, string roleId,
                                      PartSeederFactory factory)
        {
            if (item == null)
            {
                throw new ArgumentNullException(nameof(item));
            }
            if (factory == null)
            {
                throw new ArgumentNullException(nameof(factory));
            }

            int birthYear = Randomizer.Seed.Next(1200, 1300);

            PersonPart part = new Faker <PersonPart>()
                              .RuleFor(p => p.PersonId, f => f.Lorem.Word())
                              .RuleFor(p => p.ExternalIds, SeederHelper.GetExternalIds(1, 2))
                              .RuleFor(p => p.Names, new List <PersonName>(new[]
            {
                new Faker <PersonName>()
                .RuleFor(pn => pn.Language, "lat")
                .RuleFor(pn => pn.Parts, f =>
                         new List <PersonNamePart>(new[]
                {
                    new PersonNamePart
                    {
                        Type  = "first",
                        Value = f.Lorem.Word(),
                    },
                    new PersonNamePart
                    {
                        Type  = "last",
                        Value = f.Lorem.Word(),
                    }
                }))
                .Generate()
            }))
                              .RuleFor(p => p.Sex, f => f.PickRandom('M', 'F'))
                              .RuleFor(e => e.Chronotopes, new List <Chronotope>
            {
                SeederHelper.GetChronotope("birth", birthYear),
                SeederHelper.GetChronotope("death", birthYear + 80),
            })
                              .RuleFor(p => p.Bio, f => f.Lorem.Sentence())
                              .Generate();

            SetPartMetadata(part, roleId, item);

            return(part);
        }
コード例 #9
0
        /// <summary>
        /// Creates and seeds a new part.
        /// </summary>
        /// <param name="item">The item this part should belong to.</param>
        /// <param name="roleId">The optional part role ID.</param>
        /// <param name="factory">The part seeder factory. This is used
        /// for layer parts, which need to seed a set of fragments.</param>
        /// <returns>A new part.</returns>
        /// <exception cref="ArgumentNullException">item or factory</exception>
        public override IPart GetPart(IItem item, string roleId,
                                      PartSeederFactory factory)
        {
            if (item == null)
            {
                throw new ArgumentNullException(nameof(item));
            }
            if (factory == null)
            {
                throw new ArgumentNullException(nameof(factory));
            }

            MsBindingPart part = new Faker <MsBindingPart>()
                                 .RuleFor(p => p.Century, f => f.Random.Short(8, 15))
                                 .RuleFor(p => p.Description, f => f.Lorem.Sentence())
                                 .RuleFor(p => p.CoverMaterial,
                                          f => f.PickRandom("parchment", "paper"))
                                 .RuleFor(p => p.SupportMaterial,
                                          f => f.PickRandom("parchment", "paper"))
                                 .RuleFor(p => p.Size, f =>
            {
                return(new PhysicalSize
                {
                    W = new PhysicalDimension
                    {
                        Value = (float)SeederHelper.Truncate(
                            f.Random.Float(6, 21), 2),
                        Unit = "cm"
                    },
                    H = new PhysicalDimension
                    {
                        Value = (float)SeederHelper.Truncate(
                            f.Random.Float(8, 29), 2),
                        Unit = "cm"
                    },
                    D = new PhysicalDimension
                    {
                        Value = (float)SeederHelper.Truncate(
                            f.Random.Float(0.5f, 1.5f), 2),
                        Unit = "cm"
                    },
                });
            }).Generate();

            SetPartMetadata(part, roleId, item);

            return(part);
        }
コード例 #10
0
        private static List <PhysicalDimension> GetDimensions(int count)
        {
            List <PhysicalDimension> dimensions = new List <PhysicalDimension>();

            for (int n = 1; n <= count; n++)
            {
                dimensions.Add(new Faker <PhysicalDimension>()
                               .RuleFor(d => d.Tag, f => f.Lorem.Word())
                               .RuleFor(d => d.Value, f => (float)SeederHelper.Truncate(
                                            f.Random.Float(2, 10), 2))
                               .RuleFor(d => d.Unit, "cm")
                               .Generate());
            }

            return(dimensions);
        }
コード例 #11
0
        /// <summary>
        /// Creates and seeds a new part.
        /// </summary>
        /// <param name="item">The item this part should belong to.</param>
        /// <param name="roleId">The optional part role ID.</param>
        /// <param name="factory">The part seeder factory. This is used
        /// for layer parts, which need to seed a set of fragments.</param>
        /// <returns>A new part.</returns>
        /// <exception cref="ArgumentNullException">item or factory</exception>
        public override IPart GetPart(IItem item, string roleId,
                                      PartSeederFactory factory)
        {
            if (item == null)
            {
                throw new ArgumentNullException(nameof(item));
            }
            if (factory == null)
            {
                throw new ArgumentNullException(nameof(factory));
            }

            AttachmentsPart part = new AttachmentsPart();

            SetPartMetadata(part, roleId, item);

            part.Attachments = SeederHelper.GetAttachments(1, 3);

            return(part);
        }
コード例 #12
0
        /// <summary>
        /// Creates and seeds a new part.
        /// </summary>
        /// <param name="item">The item this part should belong to.</param>
        /// <param name="roleId">The optional part role ID.</param>
        /// <param name="factory">The part seeder factory. This is used
        /// for layer parts, which need to seed a set of fragments.</param>
        /// <returns>A new part.</returns>
        /// <exception cref="ArgumentNullException">item or factory</exception>
        public override IPart GetPart(IItem item, string roleId,
                                      PartSeederFactory factory)
        {
            if (item == null)
            {
                throw new ArgumentNullException(nameof(item));
            }
            if (factory == null)
            {
                throw new ArgumentNullException(nameof(factory));
            }

            MsDecorationsPart part = new MsDecorationsPart();

            SetPartMetadata(part, roleId, item);

            int count = Randomizer.Seed.Next(1, 3);

            for (int n = 1; n <= count; n++)
            {
                int sn = (n - 1) * 2;

                part.Decorations.Add(new Faker <MsDecoration>()
                                     .RuleFor(d => d.Id, f => "d" + f.UniqueIndex)
                                     .RuleFor(d => d.Name, f => f.Lorem.Word())
                                     .RuleFor(d => d.Type, f => f.PickRandom(_types))
                                     .RuleFor(d => d.Date, HistoricalDate.Parse($"{1300 + n} AD"))
                                     .RuleFor(d => d.Flags,
                                              f => new List <string>(new[] { f.PickRandom(_flags) }))
                                     .RuleFor(d => d.Place, f => f.Address.Country())
                                     .RuleFor(d => d.Artist, GetArtist())
                                     .RuleFor(d => d.Note, f => f.Random.Bool(0.25f)
                        ? f.Lorem.Sentence() : null)
                                     .RuleFor(d => d.References, SeederHelper.GetDocReferences(1, 3))
                                     .RuleFor(d => d.Elements, f => GetElements(f.Random.Number(1, 3), f))
                                     .Generate());
            }

            return(part);
        }
コード例 #13
0
        /// <summary>
        /// Creates and seeds a new part.
        /// </summary>
        /// <param name="item">The item this part should belong to.</param>
        /// <param name="roleId">The optional part role ID.</param>
        /// <param name="factory">The part seeder factory. This is used
        /// for layer parts, which need to seed a set of fragments.</param>
        /// <returns>A new part.</returns>
        /// <exception cref="ArgumentNullException">item or factory</exception>
        public override IPart GetPart(IItem item, string roleId,
                                      PartSeederFactory factory)
        {
            if (item == null)
            {
                throw new ArgumentNullException(nameof(item));
            }
            if (factory == null)
            {
                throw new ArgumentNullException(nameof(factory));
            }

            PersonHandPart part = new Faker <PersonHandPart>()
                                  .RuleFor(p => p.PersonId, f => f.Lorem.Word())
                                  .RuleFor(p => p.Job, f => f.PickRandom("copyst", "writer", "poet"))
                                  .RuleFor(p => p.Others, SeederHelper.GetDocReferences(0, 3))
                                  .Generate();

            SetPartMetadata(part, roleId, item);

            return(part);
        }
コード例 #14
0
        /// <summary>
        /// Creates and seeds a new part.
        /// </summary>
        /// <param name="item">The item this part should belong to.</param>
        /// <param name="roleId">The optional part role ID.</param>
        /// <param name="factory">The part seeder factory. This is used
        /// for layer parts, which need to seed a set of fragments.</param>
        /// <returns>A new part.</returns>
        /// <exception cref="ArgumentNullException">item or factory</exception>
        public override IPart GetPart(IItem item, string roleId,
                                      PartSeederFactory factory)
        {
            if (item == null)
            {
                throw new ArgumentNullException(nameof(item));
            }
            if (factory == null)
            {
                throw new ArgumentNullException(nameof(factory));
            }

            PersonEventsPart part = new PersonEventsPart();

            SetPartMetadata(part, roleId, item);

            for (int n = 1; n <= Randomizer.Seed.Next(1, 3 + 1); n++)
            {
                part.Events.Add(new Faker <BioEvent>()
                                .RuleFor(e => e.Type, f => n == 1?
                                         "birth" : f.PickRandom("work", "marriage"))
                                .RuleFor(e => e.Date, HistoricalDate.Parse($"{n} AD"))
                                .RuleFor(e => e.Places,
                                         f => new List <string>(new[] { f.Lorem.Word() }))
                                .RuleFor(e => e.Description, f => f.Lorem.Sentence())
                                .RuleFor(e => e.Sources, SeederHelper.GetDocReferences(1, 3))
                                .RuleFor(e => e.Participants, SeederHelper.GetDecoratedIds(1, 3))
                                .RuleFor(e => e.Work, f => f.Lorem.Sentence(1, 3))
                                .RuleFor(e => e.Rank, f => f.Random.Short(0, 3))
                                .RuleFor(e => e.IsWorkDubious, f => f.Random.Bool(0.2f))
                                .RuleFor(e => e.IsWorkLost, f => f.Random.Bool(0.2f))
                                .RuleFor(e => e.ExternalIds, SeederHelper.GetExternalIds(1, 3))
                                .Generate());
            }

            return(part);
        }
コード例 #15
0
        /// <summary>
        /// Creates and seeds a new part.
        /// </summary>
        /// <param name="item">The item this part should belong to.</param>
        /// <param name="roleId">The optional part role ID.</param>
        /// <param name="factory">The part seeder factory. This is used
        /// for layer parts, which need to seed a set of fragments.</param>
        /// <returns>A new part.</returns>
        /// <exception cref="ArgumentNullException">item or factory</exception>
        public override IPart GetPart(IItem item, string roleId,
                                      PartSeederFactory factory)
        {
            if (item == null)
            {
                throw new ArgumentNullException(nameof(item));
            }
            if (factory == null)
            {
                throw new ArgumentNullException(nameof(factory));
            }

            SerialTextInfoPart part = new Faker <SerialTextInfoPart>()
                                      .RuleFor(p => p.TextId, f => f.Lorem.Word().ToLowerInvariant())
                                      .RuleFor(p => p.Language, f => f.PickRandom("ita", "fra", "lat"))
                                      .RuleFor(p => p.Subject, f => f.Lorem.Sentence(2, 4))
                                      .RuleFor(p => p.Genre, f => f.PickRandom(new string[]
                                                                               { "lettera", "canzone" }))
                                      .RuleFor(p => p.Verse, f => f.PickRandom(new string[]
                                                                               { "settenario", "ottonario" }))
                                      .RuleFor(p => p.Rhyme, f => f.PickRandom(new string[]
            {
                "AABBCC", "ABCA"
            }))
                                      .RuleFor(p => p.Authors, SeederHelper.GetCitedPersons(1, 3))
                                      .RuleFor(p => p.Headings, f =>
                                               new List <string>(new[] { f.Lorem.Sentence(3, 5) }))
                                      .RuleFor(p => p.Recipients, SeederHelper.GetDecoratedIds(1, 3))
                                      .RuleFor(p => p.ReplyingTo, SeederHelper.GetDecoratedIds(1, 3))
                                      .RuleFor(p => p.Note, f => f.Lorem.Sentence())
                                      .Generate();

            SetPartMetadata(part, roleId, item);

            return(part);
        }
コード例 #16
0
ファイル: Program.cs プロジェクト: PhantomCloak/efurni
        private static void Seed()
        {
            // var dbConnection =
            // new MySqlConnection(connectionString);
            // dbConnection.Open();
            // Seeder.DbConnection = dbConnection;

            // if (dbConnection.State != ConnectionState.Open)
            // {
            //     return;
            // }
            Seeder.WipeTable(typeof(StoreAddress));
            Seeder.WipeTable(typeof(Stock));
            Seeder.WipeTable(typeof(Store));
            Seeder.WipeTable(typeof(CustomerReview));
            Seeder.WipeTable(typeof(ProductSalesStatistic));
            Seeder.WipeTable(typeof(Product));
            Seeder.WipeTable(typeof(Brand));
            Seeder.WipeTable(typeof(Category));
            Seeder.WipeTable(typeof(Customer));
            Seeder.WipeTable(typeof(Account));


            Seeder.Seed <Account>(() =>
            {
                int customerCounter = 1;

                var fakeAccounts = new Faker <Account>()
                                   .RuleFor(a => a.AccountId, f => customerCounter++)
                                   .RuleFor(a => a.Email, f => f.Person.Email)
                                   .RuleFor(a => a.Password, SeederHelper.CreateMd5(SeederHelper.RandomString(16)))
                                   .RuleFor(a => a.DeletedAt, f => DateTime.Now)
                                   .RuleFor(a => a.Deleted, f => false);

                return(fakeAccounts);
            }, customerCount);
            Seeder.Seed <Customer>(() =>
            {
                int customerCounter = 1;

                var fakeCustomers = new Faker <Customer>()
                                    .RuleFor(u => u.CustomerId, f => customerCounter)
                                    .RuleFor(u => u.AccountId, f => customerCounter++)
                                    .RuleFor(u => u.FirstName, f => f.Name.FirstName())
                                    .RuleFor(u => u.LastName, f => f.Name.LastName())
                                    .RuleFor(u => u.ProfilePictureUrl, f => f.Internet.Avatar())
                                    .RuleFor(u => u.PhoneNumber, f => f.Random.Int(1000, 2000).ToString());

                return(fakeCustomers);
            }, customerCount);
            Seeder.Seed <Brand>(() =>
            {
                int brandCounter = 1;

                var fakeBrands = new Faker <Brand>()
                                 .RuleFor(b => b.BrandId, f => brandCounter++)
                                 .RuleFor(b => b.BrandName, f => f.Company.CompanyName());

                return(fakeBrands);
            }, brandCount);
            Seeder.Seed <Category>(() =>
            {
                int categoryCounter = 1;

                var fakeCategories = new Faker <Category>()
                                     .RuleFor(c => c.CategoryName, f => CategoryNames[categoryCounter - 1])
                                     .RuleFor(c => c.CategoryId, f => categoryCounter++);

                return(fakeCategories);
            }, categoryCount);

            // Seeder.Seed<CustomerAddress>(() =>
            // {
            //     int customerCounter = 1;
            //     var fakeCustomerAddresses = new Faker<CustomerAddress>()
            //         .RuleFor(u => u.CustomerId, f => customerCounter++)
            //         .RuleFor(u => u.Country, f => f.Address.Country())
            //         .RuleFor(u => u.Province, f => f.Address.City())
            //         .RuleFor(u => u.District, f => f.Address.City())
            //         .RuleFor(u => u.AddressTextPrimary, f => f.Address.FullAddress())
            //         .RuleFor(u => u.AddressTextSecondary, f => f.Address.FullAddress())
            //         .RuleFor(s => s.ZipCode, f => f.PickRandom(new []{"20000","34000","06090","01010","07010"}));
            //     return fakeCustomerAddresses;
            // }, customerCount);
            //
            Seeder.Seed <Store>(() =>
            {
                int storeCounter = 1;

                var fakeStores = new Faker <Store>()
                                 .RuleFor(s => s.StoreId, f => storeCounter++)
                                 .RuleFor(s => s.Email, f => f.Person.Email)
                                 .RuleFor(s => s.PhoneNumber, f => f.Person.Phone)
                                 .RuleFor(s => s.StoreName, f => f.Company.CompanyName());

                return(fakeStores);
            }, storeCount);
            Seeder.Seed <StoreAddress>(() =>
            {
                int storeCounter = 1;

                var fakeStoreAddresses = new Faker <StoreAddress>()
                                         .RuleFor(s => s.StoreId, f => storeCounter++)
                                         .RuleFor(s => s.CountryTag, f => "TR")
                                         .RuleFor(s => s.Province, f => f.Address.City())
                                         .RuleFor(s => s.District, f => f.Address.City())
                                         .RuleFor(s => s.Neighborhood, f => f.Address.StreetAddress())
                                         .RuleFor(s => s.ZipCode, f => f.PickRandom(new [] { "20000", "34000", "06090", "01010", "07010" }))
                                         .RuleFor(s => s.AddressTextPrimary, f => f.Address.FullAddress())
                                         .RuleFor(s => s.AddressTextSecondary, f => "");

                return(fakeStoreAddresses);
            }, storeCount);
            Seeder.Seed <Product>(() =>
            {
                string[] productNames =
                {
                    new Faker().Music.Genre() + " Chair",
                    new Faker().Music.Genre() + " Armchair",
                    new Faker().Music.Genre() + " Deck chair",
                    new Faker().Music.Genre() + " Cantilever Chair",
                    new Faker().Music.Genre() + " Deck",
                    new Faker().Music.Genre() + " Desk",
                    new Faker().Music.Genre() + " Stool",
                    new Faker().Music.Genre() + " Sofa",
                    new Faker().Music.Genre() + " Sofa",
                    new Faker().Music.Genre() + " Sofa",
                    new Faker().Music.Genre() + " Sofa",
                };

                int productCounter = 1;

                var fakeProducts = new Faker <Product>()
                                   .RuleFor(p => p.ProductColor, f => ColorNames[f.Random.Int(0, ColorNames.Length - 1)])
                                   .RuleFor(p => p.CategoryId, f => f.Random.Int(1, CategoryNames.Length))
                                   .RuleFor(p => p.ProductId, f => productCounter++)
                                   .RuleFor(p => p.ProductName,
                                            (f, u) => $"{u.ProductColor} {f.Lorem.Word()} {CategoryNames[u.CategoryId - 1]}")
                                   .RuleFor(p => p.SubType, (f, u) => f.PickRandom(SubCategories[CategoryNames[u.CategoryId - 1]]))
                                   .RuleFor(p => p.ProductImage, (f, u) => $"{PhotoServer}{u.ProductColor}-{CategoryNames[u.CategoryId - 1]}-{1}.jpg")
                                   .RuleFor(p => p.ProductWidth, f => f.Random.Float(50, 120))
                                   .RuleFor(p => p.ProductHeight, f => f.Random.Float(50, 120))
                                   .RuleFor(p => p.ProductWeight, f => f.Random.Int(15, 100))
                                   .RuleFor(p => p.BoxPieces, f => f.Random.Int(20, 50))
                                   .RuleFor(p => p.BrandId, f => f.Random.Int(1, brandCount))
                                   .RuleFor(p => p.ModelYear, f => f.Random.Int(2000, 2020))
                                   .RuleFor(p => p.ListPrice, f => f.Random.Double(25, 150))
                                   .RuleFor(p => p.Discount, f => f.PickRandom(0, 0, 0, 0, 0, 0, 0, 5, 10, 20))
                                   .RuleFor(p => p.Description, f => f.Commerce.ProductDescription());
                return(fakeProducts);
            }, productCount);
            Seeder.Seed <Stock>(() =>
            {
                int productCounter = 1;

                var fakeStoreStocks = new Faker <Stock>()
                                      .RuleFor(s => s.StockId, f => productCounter)
                                      .RuleFor(s => s.ProductId, f => productCounter++)
                                      .RuleFor(s => s.StoreId, f => f.Random.Int(1, 2))
                                      .RuleFor(s => s.Quantity, f => f.Random.Int(50, 120));

                return(fakeStoreStocks);
            }, productCount);

            Seeder.Seed <CustomerReview>(() =>
            {
                var fakeComments = new Faker <CustomerReview>()
                                   .RuleFor(s => s.CustomerId, f => f.Random.Int(1, customerCount))
                                   .RuleFor(s => s.ProductId, f => f.Random.Int(1, productCount))
                                   .RuleFor(s => s.CustomerComment, f => f.Lorem.Paragraph(4))
                                   .RuleFor(s => s.CustomerRating, f => f.Random.Float(0, 5))
                                   .RuleFor(s => s.ReplyReviewId, f => 0);

                return(fakeComments);
            }, productCount * 4);

            Seeder.Seed <PostalService>(() =>
            {
                int postalServiceCounter = 1;

                var fakeComments = new Faker <PostalService>()
                                   .RuleFor(s => s.ServiceId, f => postalServiceCounter++)
                                   // .RuleFor(s => s.PostalServiceName, f => f.Company.CompanyName())
                                   .RuleFor(s => s.Price, f => f.Random.Double(25, 100));

                return(fakeComments);
            }, storeCount);

            Seeder.Seed <ProductSalesStatistic>(() =>
            {
                int productCounter = 1;

                var productStatistic = new Faker <ProductSalesStatistic>()
                                       .RuleFor(p => p.ProductId, f => productCounter++)
                                       .RuleFor(p => p.NumberSold, f => f.Random.Int(20, 500))
                                       .RuleFor(p => p.NumberViewed, f => f.Random.Int(100, 6000))
                                       .RuleFor(p => p.DateAdded, f => SeederHelper.GetRandomDate(2019));

                return(productStatistic);
            }, productCount);
        }
コード例 #17
0
        private void SeedByAlgorithm(GradeBookContext context)
        {
            try
            {
                logger.Info("Seeding began");
                UserManager <GradeBookUser, int> _userManager =
                    new UserManager <GradeBookUser, int>(
                        new UserStore <GradeBookUser, CustomRole, int, CustomUserLogin, CustomUserRole, CustomUserClaim>(context));

                RoleManager <CustomRole, int> _roleManager =
                    new RoleManager <CustomRole, int>(new RoleStore <CustomRole, int, CustomUserRole>(context));

                #region Roles
                CustomRole adminRole = new CustomRole()
                {
                    Name = "admins"
                };
                CustomRole studentRole = new CustomRole()
                {
                    Name = "students"
                };
                CustomRole teacherRole = new CustomRole()
                {
                    Name = "teachers"
                };
                CustomRole parentRole = new CustomRole()
                {
                    Name = "parents"
                };

                _roleManager.Create(adminRole);
                _roleManager.Create(studentRole);
                _roleManager.Create(teacherRole);
                _roleManager.Create(parentRole);
                #endregion

                logger.Info("Roles created");

                #region Admins
                AdminUser admin_pera = new AdminUser()
                {
                    UserName = "******", FirstName = "Pera", LastName = "Peric"
                };
                AdminUser admin_milan = new AdminUser()
                {
                    UserName = "******", FirstName = "Milan", LastName = "Milic"
                };

                _userManager.Create(admin_pera, "password");
                _userManager.Create(admin_milan, "password");

                _userManager.AddToRole(admin_pera.Id, "admins");
                _userManager.AddToRole(admin_milan.Id, "admins");
                #endregion

                logger.Info("Admins created");

                #region Courses, FOR NOW LET's use these
                List <Course> courses = new List <Course>();
                courses.Add(new Course()
                {
                    Name = "Mathematics", ColloqialName = "Matis"
                });
                courses.Add(new Course()
                {
                    Name = "Chemistry", ColloqialName = "Hemija"
                });
                courses.Add(new Course()
                {
                    Name = "Biology", ColloqialName = "Biologija"
                });
                courses.Add(new Course()
                {
                    Name = "Informatics", ColloqialName = "Informatika"
                });
                courses.Add(new Course()
                {
                    Name = "German", ColloqialName = "Nemacki"
                });
                courses.Add(new Course()
                {
                    Name = "History", ColloqialName = "Istorija"
                });
                courses.Add(new Course()
                {
                    Name = "English", ColloqialName = "Engleski"
                });

                context.Courses.AddRange(courses);

                context.SaveChanges();
                #endregion

                logger.Info("Courses cretated");

                #region Students

                List <StudentUser> students = SeederHelper.CreateStudents(20);

                foreach (var s in students)
                {
                    context.Users.Add(s);
                    context.SaveChanges();

                    CustomUserRole st = new CustomUserRole()
                    {
                        RoleId = studentRole.Id, UserId = s.Id
                    };
                    context.SaveChanges();
                }

                #endregion

                logger.Info("Students created");

                #region Teachers
                List <TeacherUser> teachers = SeederHelper.CreateTeachers(10);

                foreach (var t in teachers)
                {
                    context.Users.Add(t);
                    context.SaveChanges();

                    CustomUserRole st = new CustomUserRole()
                    {
                        RoleId = teacherRole.Id, UserId = t.Id
                    };
                    context.SaveChanges();
                }
                #endregion

                logger.Info("Teachers created");

                #region Parents
                List <StudentParent> studentParents = SeederHelper.CreateRealisticParents(students);

                List <ParentUser> parents = studentParents.Select(sp => sp.Parent).Distinct().ToList();

                foreach (var p in parents)
                {
                    context.Users.Add(p);

                    context.SaveChanges();

                    CustomUserRole st = new CustomUserRole()
                    {
                        RoleId = parentRole.Id, UserId = p.Id
                    };
                    context.SaveChanges();
                }

                context.StudentParents.AddRange(studentParents);
                context.SaveChanges();
                #endregion

                logger.Info("Parents created");

                #region Teaching (assignments)

                // --- Teaching assignments *** This one could have been added to curriculum....
                List <Teaching> teachings = SeederHelper.AssignTeaching(teachers, courses);

                context.TeachingAssignments.AddRange(teachings);
                context.SaveChanges();

                #endregion

                logger.Info("Teaching assignments created");

                #region Classrooms
                List <ClassRoom> classes = SeederHelper.CreateSchoolClasses(2, 5, 6);
                context.ClassRooms.AddRange(classes);

                context.SaveChanges();

                #endregion

                logger.Info("Classrooms created");

                #region Student enrollments, Programs
                SeederHelper.AssignStudentsToClasses(students, classes, 2);
                context.SaveChanges();

                logger.Info("Students assigned to classrooms");

                List <Program> programs = SeederHelper.AssignProgram(teachings, classes);
                context.Programs.AddRange(programs);

                logger.Info("Students assigned to takings");

                context.SaveChanges();
                #endregion

                logger.Info("Students enrolled, programs created");

                #region Learning (student learning a subject)

                List <Taking> takings = SeederHelper.AssignTakings(students, programs);
                context.Takings.AddRange(takings);
                context.SaveChanges();
                #endregion

                logger.Info("Takings creadte");

                #region Grades
                List <Grade> grades = SeederHelper.AssignGrades(takings, new DateTime(2018, 9, 1), new DateTime(2018, 12, 31), 1, 2, 5);
                context.Grades.AddRange(grades);
                context.SaveChanges();
                #endregion

                logger.Info("Grades assigned");

                #region Final Grades
                List <FinalGrade> finalGrades = SeederHelper.AssignFinalGrades(takings, new DateTime(2018, 9, 1), new DateTime(2018, 12, 31), 1);
                context.FinalGrades.AddRange(finalGrades);
                context.SaveChanges();

                #endregion

                logger.Info("Final grades assigned");
            }

            catch (SqlException ex)
            {
                Debug.WriteLine("Database cannot be accessed.");
                throw ex;
            }

            catch (Exception ex)
            {
                Debug.WriteLine("Seeding the database failed");
                throw ex;
            }
        }
コード例 #18
0
        /// <summary>
        /// Creates and seeds a new part.
        /// </summary>
        /// <param name="item">The item this part should belong to.</param>
        /// <param name="roleId">The optional part role ID.</param>
        /// <param name="factory">The part seeder factory. This is used
        /// for layer parts, which need to seed a set of fragments.</param>
        /// <returns>A new part.</returns>
        /// <exception cref="ArgumentNullException">item or factory</exception>
        public override IPart GetPart(IItem item, string roleId,
                                      PartSeederFactory factory)
        {
            if (item == null)
            {
                throw new ArgumentNullException(nameof(item));
            }
            if (factory == null)
            {
                throw new ArgumentNullException(nameof(factory));
            }

            MsHistoryPart part = new Faker <MsHistoryPart>()
                                 .RuleFor(p => p.Provenances, GetProvenances(2))
                                 .RuleFor(p => p.History, f => f.Lorem.Sentence())
                                 .Generate();

            SetPartMetadata(part, roleId, item);

            // persons
            for (int n = 1; n <= Randomizer.Seed.Next(1, 3 + 1); n++)
            {
                part.Persons.Add(new Faker <MsHistoryPerson>()
                                 .RuleFor(p => p.Role,
                                          f => f.PickRandom("scribe", "corrector", "owner"))
                                 .RuleFor(p => p.Name, new Faker <PersonName>()
                                          .RuleFor(pn => pn.Language, "lat")
                                          .RuleFor(pn => pn.Parts, f =>
                                                   new List <PersonNamePart>(new[]
                {
                    new PersonNamePart
                    {
                        Type  = "first",
                        Value = f.Lorem.Word(),
                    },
                    new PersonNamePart
                    {
                        Type  = "last",
                        Value = f.Lorem.Word(),
                    }
                }))
                                          .Generate())
                                 .RuleFor(p => p.Date, HistoricalDate.Parse($"{1200 + n} AD"))
                                 .RuleFor(p => p.Note, f => f.PickRandom(null, f.Lorem.Sentence()))
                                 .RuleFor(p => p.ExternalIds, f => new List <string>(new[]
                {
                    $"www.someurl.org/entities/{f.Random.Number()}"
                }))
                                 .RuleFor(p => p.Sources, SeederHelper.GetDocReferences(1, 3))
                                 .Generate());
            }

            // annotations
            for (int n = 1; n <= Randomizer.Seed.Next(1, 3 + 1); n++)
            {
                part.Annotations.Add(new Faker <MsAnnotation>()
                                     .RuleFor(a => a.Language, f => f.PickRandom("lat", "ita"))
                                     .RuleFor(a => a.Type, f => f.Lorem.Word())
                                     .RuleFor(a => a.Text, f => f.Lorem.Sentence())
                                     .RuleFor(a => a.PersonId, f => f.Person.FirstName)
                                     .RuleFor(r => r.Ranges, new List <MsLocationRange>(new[]
                {
                    new MsLocationRange
                    {
                        Start = new MsLocation
                        {
                            N = n,
                            S = n % 2 == 0 ? "v" : "r",
                            L = n * 5
                        },
                        End = new MsLocation
                        {
                            N = n + 1,
                            S = n % 2 == 0 ? "r" : "v",
                            L = n * 5
                        }
                    }
                }))
                                     .RuleFor(f => f.Sources, SeederHelper.GetDocReferences(1, 3))
                                     .Generate());
            }

            // restorations
            for (int n = 1; n <= Randomizer.Seed.Next(1, 3 + 1); n++)
            {
                part.Restorations.Add(new Faker <MsRestoration>()
                                      .RuleFor(r => r.Type, f => f.Lorem.Word())
                                      .RuleFor(r => r.Place, f => f.Lorem.Word())
                                      .RuleFor(r => r.Date, HistoricalDate.Parse($"{1200 + n} AD"))
                                      .RuleFor(r => r.PersonId, f => f.Person.FirstName)
                                      .RuleFor(r => r.Note, f => f.PickRandom(null, f.Lorem.Sentence()))
                                      .RuleFor(r => r.Sources, SeederHelper.GetDocReferences(1, 3))
                                      .Generate());
            }

            return(part);
        }
コード例 #19
0
 protected override void Seed(MyDbContext context)
 {
     SeederHelper.Seed(context);
 }