Example #1
0
        private static readonly bool ReInitialize = false; // NOTE: when true the DB will be reset with the entries below

        public static void Initialize(BlogContext context)
        {
            context.Database.EnsureCreated();

            if (ReInitialize) // removes all entries from database
            {
                context.ThreadTags.RemoveRange(context.ThreadTags.Where(t => t.ThreadId == t.ThreadId));
                context.Tags.RemoveRange(context.Tags.Where(t => t.Id == t.Id));
                context.Evaluations.RemoveRange(context.Evaluations.Where(e => e.Id == e.Id));
                context.EvaluationValues.RemoveRange(context.EvaluationValues.Where(e => e.Id == e.Id));
                context.Comments.RemoveRange(context.Comments.Where(c => c.Id == c.Id).IgnoreQueryFilters());
                context.Threads.RemoveRange(context.Threads.Where(t => t.Id == t.Id));
                context.Users.RemoveRange(context.Users.Where(u => u.Id == u.Id));
                context.Ranks.RemoveRange(context.Ranks.Where(r => r.Id == r.Id));

                context.SaveChanges();
            }

            if (context.Ranks.Any()) // true if the code below have been run before and ReInitialize = false
            {
                return;              // DB has been seeded, end method
            }


            Rank[] ranks = new Rank[]
            {
                new Rank {
                    Name = Ranks.Member.ToString()
                },
                new Rank {
                    Name = Ranks.Moderator.ToString()
                },
                new Rank {
                    Name = Ranks.Administrator.ToString()
                }
            };
            foreach (Rank r in ranks.Reverse())
            {
                context.Ranks.Add(r);
            }
            context.SaveChanges();


            User[] users = new User[]
            {
                new User {
                    Username = "******",
                    Password = Security.ROT13EncryptMessage("pass123"),
                    Rank     = Array.Find(ranks, r => r.Name.Equals(Ranks.Administrator.ToString())),
                    JoinTime = DateTime.Now
                },
                new User {
                    Username = "******",
                    Password = Security.ROT13EncryptMessage("pass123"),
                    Rank     = Array.Find(ranks, r => r.Name.Equals(Ranks.Moderator.ToString())),
                    JoinTime = DateTime.Now + TimeSpan.FromSeconds(5)
                },
                new User {
                    Username = "******",
                    Password = Security.ROT13EncryptMessage("qwerty"),
                    Rank     = Array.Find(ranks, r => r.Name.Equals(Ranks.Member.ToString())),
                    JoinTime = DateTime.Now + TimeSpan.FromSeconds(10)
                }
            };
            foreach (User u in users.Reverse())
            {
                context.Users.Add(u);
            }
            context.SaveChanges();


            Thread[] threads = new Thread[]
            {
                new Thread {
                    User         = Array.Find(users, u => u.Username.Equals("Admin")),
                    Title        = "#1",
                    Message      = "This is the first thread made!",
                    CreationTime = DateTime.Now
                },
                new Thread {
                    User    = Array.Find(users, u => u.Username.Equals("Mikael")),
                    Title   = "Second thread test",
                    Message = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, " +
                              "sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. " +
                              "Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris " +
                              "nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in " +
                              "reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla" +
                              " pariatur. Excepteur sint occaecat cupidatat non proident, sunt in " +
                              "culpa qui officia deserunt mollit anim id est laborum.",
                    CreationTime = DateTime.Now + TimeSpan.FromSeconds(30)
                }
            };
            foreach (Thread t in threads.Reverse())
            {
                context.Threads.Add(t);
            }
            context.SaveChanges();


            Tag[] tags = new Tag[]
            {
                new Tag {
                    Name = Tags.Comedy.ToString()
                },
                new Tag {
                    Name = Tags.Information.ToString()
                },
                new Tag {
                    Name = Tags.Political.ToString()
                },
                new Tag {
                    Name = Tags.Sponsored.ToString()
                },
                new Tag {
                    Name = Tags.Discussion.ToString()
                },
                new Tag {
                    Name = Tags.Announcement.ToString()
                }
            };
            foreach (Tag t in tags.Reverse())
            {
                context.Tags.Add(t);
            }
            context.SaveChanges();


            ThreadTag[] threadTags = new ThreadTag[]
            {
                new ThreadTag {
                    Thread = threads[0],
                    Tag    = Array.Find(tags, t => t.Name.Equals(Tags.Discussion.ToString()))
                },
                new ThreadTag {
                    Thread = threads[0],
                    Tag    = Array.Find(tags, t => t.Name.Equals(Tags.Announcement.ToString()))
                }
            };
            foreach (ThreadTag t in threadTags.Reverse())
            {
                context.ThreadTags.Add(t);
            }
            context.SaveChanges();


            Comment[] comments = new Comment[]
            {
                new Comment {
                    User         = Array.Find(users, u => u.Username.Equals("Billy")),
                    Thread       = threads[0],
                    Message      = "Cool!",
                    CreationTime = DateTime.Now + TimeSpan.FromSeconds(20)
                },
                new Comment {
                    User         = Array.Find(users, u => u.Username.Equals("Billy")),
                    Thread       = threads[0],
                    Message      = "Disapprove this comment",
                    CreationTime = DateTime.Now + TimeSpan.FromSeconds(40)
                },
                new Comment {
                    User    = Array.Find(users, u => u.Username.Equals("Mikael")),
                    Thread  = threads[1],
                    Message = "Sed ut perspiciatis unde omnis iste natus error " +
                              "sit voluptatem accusantium doloremque laudantium, totam rem" +
                              " aperiam, eaque ipsa quae ab illo inventore veritatis et quasi" +
                              " architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam" +
                              " voluptatem quia voluptas sit aspernatur aut odit aut fugit, " +
                              "sed quia consequuntur magni dolores eos qui ratione voluptatem" +
                              " sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum " +
                              "quia dolor sit amet, consectetur, adipisci velit, sed quia non" +
                              " numquam eius modi tempora incidunt ut labore et dolore magnam" +
                              " aliquam quaerat voluptatem. Ut enim ad minima veniam, quis " +
                              "nostrum exercitationem ullam corporis suscipit laboriosam, " +
                              "nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum" +
                              " iure reprehenderit qui in ea voluptate velit esse quam nihil " +
                              "molestiae consequatur, vel illum qui dolorem eum fugiat quo " +
                              "voluptas nulla pariatur?",
                    CreationTime = DateTime.Now + TimeSpan.FromSeconds(60)
                },
                new Comment {
                    User         = Array.Find(users, u => u.Username.Equals("Billy")),
                    Thread       = threads[0],
                    Message      = "Can I get mod?",
                    CreationTime = DateTime.Now + TimeSpan.FromSeconds(80)
                },
                new Comment {
                    User         = Array.Find(users, u => u.Username.Equals("Billy")),
                    Thread       = threads[0],
                    Message      = "Hello???",
                    CreationTime = DateTime.Now + TimeSpan.FromSeconds(600)
                }
            };
            foreach (Comment c in comments.Reverse())
            {
                context.Comments.Add(c);
            }
            context.SaveChanges();


            EvaluationValue[] evaluationValues = new EvaluationValue[]
            {
                new EvaluationValue {
                    Name = EvaluationValues.Approved.ToString()
                },
                new EvaluationValue {
                    Name = EvaluationValues.Disapproved.ToString()
                }
            };
            foreach (EvaluationValue e in evaluationValues.Reverse())
            {
                context.EvaluationValues.Add(e);
            }
            context.SaveChanges();


            Evaluation[] evaluations = new Evaluation[]
            {
                new Evaluation {
                    Comment         = comments[0],
                    EvaluationValue = Array.Find(evaluationValues, e => e.Name.Equals(EvaluationValues.Approved.ToString())),
                    EvaluatedBy     = Array.Find(users, u => u.Username.Equals("Admin")),
                    EvaluationTime  = DateTime.Now + TimeSpan.FromSeconds(40)
                },
                new Evaluation {
                    Comment         = comments[0],
                    EvaluationValue = Array.Find(evaluationValues, e => e.Name.Equals(EvaluationValues.Approved.ToString())),
                    EvaluatedBy     = Array.Find(users, u => u.Username.Equals("Mikael")),
                    EvaluationTime  = DateTime.Now + TimeSpan.FromSeconds(60)
                },
                new Evaluation {
                    Comment         = comments[1],
                    EvaluationValue = Array.Find(evaluationValues, e => e.Name.Equals(EvaluationValues.Disapproved.ToString())),
                    EvaluatedBy     = Array.Find(users, u => u.Username.Equals("Mikael")),
                    EvaluationTime  = DateTime.Now + TimeSpan.FromSeconds(80)
                },
                new Evaluation {
                    Comment         = comments[2],
                    EvaluationValue = Array.Find(evaluationValues, e => e.Name.Equals(EvaluationValues.Approved.ToString())),
                    EvaluatedBy     = Array.Find(users, u => u.Username.Equals("Mikael")),
                    EvaluationTime  = DateTime.Now + TimeSpan.FromSeconds(100)
                }
            };
            foreach (Evaluation e in evaluations.Reverse())
            {
                context.Evaluations.Add(e);
            }
            context.SaveChanges();
        }