示例#1
0
        /// <summary>
        /// Method to see the database. Should not be used in production: demo purposes only.
        /// </summary>
        /// <param name="options">The configured options.</param>
        /// <param name="count">The number of contacts to seed.</param>
        /// <returns>The <see cref="Task"/>.</returns>
        private static async Task SeedDBAsync(DbContextOptions <JASContext> options, int count)
        {
            // empty to avoid logging while inserting (otherwise will flood console)
            var factory = new LoggerFactory();
            var builder = new DbContextOptionsBuilder <JASContext>(options)
                          .UseLoggerFactory(factory);

            using var context = new JASContext(builder.Options);
            // result is true if the database had to be created
            if (await context.Database.EnsureCreatedAsync())
            {
                var issueSeed = new SeedIssues();
                await issueSeed.SeedIssuesAsync(context);
            }

            RelationalDatabaseCreator databaseCreator =
                (RelationalDatabaseCreator)context.Database.GetService <IDatabaseCreator>();

            try
            {
                databaseCreator.CreateTables();
            }
            catch (Exception err) { }
            finally
            {
                Debug.WriteLine("Seeding Table");
                var issueSeed = new SeedIssues();
                await issueSeed.SeedIssuesAsync(context);
            }
        }
示例#2
0
        public async Task SeedIssuesAsync(JASContext context)
        {
            DateTime     currTime = DateTime.Now;
            int          daysToGenerateIssueFor = 30;
            List <Issue> issueList = new List <Issue>();


            for (int i = daysToGenerateIssueFor; i >= 0; i--)
            {
                for (int j = 0; j < _random.Next(1, 4); j++)
                {
                    Issue currIssue = new Issue();

                    currIssue.Title     = _dummyTitle.Substring(_random.Next(5, _dummyTitle.Length)) + currIssue.Id;
                    currIssue.CreatedOn = currTime.AddDays(-i);
                    if (_random.Next(0, 10) % _random.Next(1, 4) == 0)
                    {
                        currIssue.ClosedOn = currTime.AddDays(-_random.Next(0, _random.Next(0, i)));
                    }

                    int type = _random.Next(0, 3);
                    currIssue.Type   = (IssueType)type;
                    currIssue.Labels = new List <string>();
                    currIssue.Labels.Add(_issueTypes[type]);
                    if (currIssue.Type == IssueType.Bug)
                    {
                        int sev = _random.Next(0, 3);
                        currIssue.Severity = (IssueSeverity)sev;
                        currIssue.Labels.Add(_severities[sev]);
                    }
                    currIssue.Labels.Add("team " + _random.Next(1, 3));
                    currIssue.Labels.Add("priority " + _random.Next(1, 7));
                    currIssue.Labels.Add(_componentList[_random.Next(0, _componentList.Length - 1)]);
                    currIssue.Labels.Add(_random.Next(0, 20) % 6 == 0 ? "appearance" : "functionality");
                    currIssue.Labels.Add(currIssue.IsOpen ? "open" : "closed");

                    currIssue.Description = "<p style=\"margin: 0px 0px 15px; padding: 0px; text-align: justify; font-family: 'Open Sans', Arial, sans-serif;\"><strong>Lorem ipsum </strong>dolor sit amet, consectetur adipiscing elit. Nam eget diam et ipsum vulputate porta. Duis non venenatis odio, ut sagittis mi. Nam et pellentesque dolor. Pellentesque ornare neque ac feugiat convallis:</p><ul>	<li style =\"margin: 0px 0px 15px; padding: 0px; text-align: justify; font-family: 'Open Sans', Arial, sans-serif;\"> Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. </li><li style =\"margin: 0px 0px 15px; padding: 0px; text-align: justify; font-family: 'Open Sans', Arial, sans-serif; \">In ac eros eget elit laoreet congue vitae vel quam. </li><li style =\"margin: 0px 0px 15px; padding: 0px; text-align: justify; font-family: 'Open Sans', Arial, sans-serif; \">Suspendisse potenti. </li><li style =\"margin: 0px 0px 15px; padding: 0px; text-align: justify; font-family: 'Open Sans', Arial, sans-serif; \">Fusce vitae magna maximus, ornare turpis quis, porttitor velit. Nam ac condimentum massa, vitae tristique nulla.</li></ul><h5 style =\"margin: 0px 0px 15px; padding: 0px; text-align: justify; font-family: 'Open Sans', Arial, sans-serif; \">Vestibulum vitae ante egestas, sollicitudin justo a, pulvinar turpis.</h5><p style =\"margin: 0px 0px 15px; padding: 0px; text-align: justify; font-family: 'Open Sans', Arial, sans-serif; \"> Sed at condimentum turpis. Mauris fermentum, felis non euismod sagittis, nisl dui bibendum urna, vel iaculis mi nunc dictum turpis. In sodales at sapien eget pellentesque.</p>";

                    issueList.Add(currIssue);
                }
            }

            if (issueList.Count > 0)
            {
                context.Issues.AddRange(issueList);
                try
                {
                    Debug.WriteLine("Seeding: " + issueList.Count + " issues.");
                    await context.SaveChangesAsync();
                }
                catch (DBConcurrencyException err) { } // dump it
            }
        }
示例#3
0
 public async Task Initialize(JASContext context)
 {
     Context = context;
     await FetchIssues();
 }