예제 #1
0
        public async Task <IActionResult> Edit(int id, [Bind("Id,Order,Start,Einde")] Tijdvak tijdvak)
        {
            if (id != tijdvak.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(tijdvak);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!TijdvakExists(tijdvak.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(tijdvak));
        }
예제 #2
0
        public async Task <IActionResult> Create([Bind("Id,Order,Start,Einde")] Tijdvak tijdvak)
        {
            if (ModelState.IsValid)
            {
                _context.Add(tijdvak);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(tijdvak));
        }
예제 #3
0
        public async Task Initialize()
        {
            await _context.Database.MigrateAsync();

            // check if roles table populated, if not -> populate
            if (_roleManager.Roles.Select(r => new SelectListItem {
                Text = r.Name, Value = r.Id
            }).ToList().Count == 0)
            {
                // insert basis roles
                await _roleManager.CreateAsync(new IdentityRole { Name = "User" });

                await _roleManager.CreateAsync(new IdentityRole { Name = "Admin" });
            }

            // check if basic admin account from Azure environment is present, if not create it and give or restore admin rights
            var userid   = _configuration["adminuser:email"];
            var password = _configuration["adminuser:password"];
            var user     = await _userManager.Users.SingleOrDefaultAsync <ApplicationUser>(u => u.Email == userid);

            if (user == null)
            {
                // add admin user
                var appuser = new ApplicationUser {
                    UserName = userid, Email = userid, EmailConfirmed = true, Name = userid, Organisation = "RdwTechday"
                };
                IdentityResult result = await _userManager.CreateAsync(appuser, password);

                if (!result.Succeeded)
                {
                    string msg = "";
                    foreach (IdentityError err in result.Errors)
                    {
                        msg = msg + err.Description;
                    }
                    throw new System.InvalidOperationException("Error creating standard admin user" + msg);
                }
                user = await _userManager.Users.SingleOrDefaultAsync <ApplicationUser>(u => u.Email == userid);
            }
            var roles = await _userManager.GetRolesAsync(user);

            if (!roles.Contains("Admin"))
            {
                IdentityResult roleResult = await _userManager.AddToRoleAsync(user, "Admin");

                if (!roleResult.Succeeded)
                {
                    string msg = "";
                    foreach (IdentityError err in roleResult.Errors)
                    {
                        msg = msg + err.Description;
                    }
                    throw new System.InvalidOperationException("Error creating standard admin user" + msg);
                }
            }
            await _context.SaveChangesAsync();

            if (_context.Maxima.Any())
            {
                return;   // DB has been seeded
            }

            var maxima = new List <Maxima>();

            maxima.Add(new Maxima {
                MaxRDW = 200, MaxNonRDW = 50
            });
            _context.Maxima.AddRange(maxima);

            var ruimtes = new List <Ruimte>();

            ruimtes.Add(new Ruimte {
                Naam = "Groningen", Capacity = 70
            });
            ruimtes.Add(new Ruimte {
                Naam = "Amsterdam", Capacity = 70
            });
            ruimtes.Add(new Ruimte {
                Naam = "Rotterdam", Capacity = 70
            });
            ruimtes.Add(new Ruimte {
                Naam = "Utrecht", Capacity = 70
            });
            ruimtes.Add(new Ruimte {
                Naam = "Nijmegen", Capacity = 22
            });
            ruimtes.Add(new Ruimte {
                Naam = "Leiden", Capacity = 22
            });
            ruimtes.Add(new Ruimte {
                Naam = "Delft", Capacity = 22
            });
            _context.Ruimtes.AddRange(ruimtes);

            var tijdvakken = new List <Tijdvak>();
            var tv11       = new Tijdvak {
                Start = "10:00", Einde = "11:00", Order = 1
            };

            tijdvakken.Add(tv11);
            var tv12 = new Tijdvak {
                Start = "11:15", Einde = "12:15", Order = 2
            };

            tijdvakken.Add(tv12);
            var tv13 = new Tijdvak {
                Start = "13:15", Einde = "14:15", Order = 3
            };

            tijdvakken.Add(tv13);
            var tv14 = new Tijdvak {
                Start = "14:30", Einde = "15:30", Order = 4
            };

            tijdvakken.Add(tv14);
            var tv21 = new Tijdvak {
                Start = "10:00", Einde = "12:15", Order = 1
            };

            tijdvakken.Add(tv21);
            var tv22 = new Tijdvak {
                Start = "13:15", Einde = "15:30", Order = 2
            };

            tijdvakken.Add(tv22);
            _context.Tijdvakken.AddRange(tijdvakken);

            var tracks = new List <Track>();

            tracks.Add(new Track {
                Naam = "Infra", Rgb = "FFC548"
            });
            tracks.Add(new Track {
                Naam = "Apps", Rgb = "B0A0C5"
            });
            tracks.Add(new Track {
                Naam = "Collaboratie", Rgb = "9CD2E0"
            });
            tracks.Add(new Track {
                Naam = "Inspiratie", Rgb = "FFAC59"
            });
            tracks.Add(new Track {
                Naam = "Workshops I", Rgb = "D99690"
            });
            tracks.Add(new Track {
                Naam = "Workshops II", Rgb = "D99690"
            });
            _context.Tracks.AddRange(tracks);

            await _context.SaveChangesAsync();

            // Creeer TRack met bijbehorende tijdvakken, workshop duren 2 uur, daarom aparte loop voor de workshops
            List <string> lecturenames = new List <string>()
            {
                "Infra", "Apps", "Inspiratie", "Collaboratie"
            };

            foreach (string naam in lecturenames)
            {
                _context.TrackTijdvakken.Add(new TrackTijdvak {
                    TrackID = tracks.Single(i => i.Naam == naam).Id, TijdvakID = tv11.Id
                });
                _context.TrackTijdvakken.Add(new TrackTijdvak {
                    TrackID = tracks.Single(i => i.Naam == naam).Id, TijdvakID = tv12.Id
                });
                _context.TrackTijdvakken.Add(new TrackTijdvak {
                    TrackID = tracks.Single(i => i.Naam == naam).Id, TijdvakID = tv13.Id
                });
                _context.TrackTijdvakken.Add(new TrackTijdvak {
                    TrackID = tracks.Single(i => i.Naam == naam).Id, TijdvakID = tv14.Id
                });
            }
            List <string> workshopnames = new List <string>()
            {
                "Workshops I", "Workshops II"
            };

            foreach (string naam in workshopnames)
            {
                _context.TrackTijdvakken.Add(new TrackTijdvak {
                    TrackID = tracks.Single(i => i.Naam == naam).Id, TijdvakID = tv21.Id
                });
                _context.TrackTijdvakken.Add(new TrackTijdvak {
                    TrackID = tracks.Single(i => i.Naam == naam).Id, TijdvakID = tv22.Id
                });
            }

            await _context.SaveChangesAsync();


            var faker = new Faker("nl");

            Randomizer.Seed = new System.Random(8675309);

            int maxDeelnemers           = 50;
            int maxRegistratieVerzoeken = maxDeelnemers + 20;
            int maxDeelnemersMetSessies = maxDeelnemers - 20;

            // creeer sessies, itereer over Tracks en de Tijdvakken in een Track heen
            var sessies = new List <Sessie>();

            foreach (string naam in lecturenames)
            {
                Track track = tracks.Single(i => i.Naam == naam);
                foreach (TrackTijdvak tracktijdvak in track.Tijdvakken)
                {
                    sessies.Add(new Sessie {
                        Naam = faker.Lorem.Sentence(3), Ruimte = faker.PickRandom <Ruimte>(ruimtes), Track = track, Tijdvak = tracktijdvak.Tijdvak
                    });
                }
            }

            foreach (string naam in workshopnames)
            {
                Track track = tracks.Single(i => i.Naam == naam);
                foreach (TrackTijdvak tracktijdvak in track.Tijdvakken)
                {
                    sessies.Add(new Sessie {
                        Naam = faker.Lorem.Sentence(3), Ruimte = faker.PickRandom <Ruimte>(ruimtes), Track = track, Tijdvak = tracktijdvak.Tijdvak
                    });
                }
            }
            _context.Sessies.AddRange(sessies);

            await _context.SaveChangesAsync();
        }
        public async Task Initialize()
        {
            await _context.Database.MigrateAsync();

            if (_context.Maxima.Any())
            {
                return;   // DB has been seeded
            }

            var maxima = new List <Maxima>();

            maxima.Add(new Maxima {
                MaxRDW = 200, MaxNonRDW = 50
            });
            _context.Maxima.AddRange(maxima);

            var tijdvakken = new List <Tijdvak>();
            var tv0        = new Tijdvak {
                Start = "09:00", Einde = "09:45", Order = 1
            };

            tijdvakken.Add(tv0);
            var tv1 = new Tijdvak {
                Start = "10:00", Einde = "11:00", Order = 2
            };

            tijdvakken.Add(tv1);
            var tv2 = new Tijdvak {
                Start = "11:15", Einde = "12:15", Order = 3
            };

            tijdvakken.Add(tv2);
            var tv3 = new Tijdvak {
                Start = "13:15", Einde = "14:15", Order = 4
            };

            tijdvakken.Add(tv3);
            var tv4 = new Tijdvak {
                Start = "14:30", Einde = "15:30", Order = 5
            };

            tijdvakken.Add(tv4);
            var tv5 = new Tijdvak {
                Start = "15:45", Einde = "16:30", Order = 6
            };

            tijdvakken.Add(tv5);

            _context.Tijdvakken.AddRange(tijdvakken);

            // check if roles table populated, if not -> populate
            if (_roleManager.Roles.Select(r => new SelectListItem {
                Text = r.Name, Value = r.Id
            }).ToList().Count == 0)
            {
                // insert basis roles
                await _roleManager.CreateAsync(new IdentityRole { Name = "User" });

                await _roleManager.CreateAsync(new IdentityRole { Name = "Admin" });
            }

            // check if basic admin account from Azure environment is present, if not create it and give or restore admin rights
            var userid   = _configuration["adminuser:email"];
            var password = _configuration["adminuser:password"];
            var user     = await _userManager.Users.SingleOrDefaultAsync <ApplicationUser>(u => u.Email == userid);

            if (user == null)
            {
                ApplicationUser appuser = new ApplicationUser {
                    UserName = userid, Email = userid, EmailConfirmed = true, Name = userid, Organisation = "RdwTechday"
                };
                // add admin user
                await appuser.AddTijdvakkenAsync(_context);

                IdentityResult result = await _userManager.CreateAsync(appuser, password);

                if (!result.Succeeded)
                {
                    string msg = "";
                    foreach (IdentityError err in result.Errors)
                    {
                        msg = msg + err.Description;
                    }
                    throw new System.InvalidOperationException("Error creating standard admin user" + msg);
                }
                user = await _userManager.Users.SingleOrDefaultAsync <ApplicationUser>(u => u.Email == userid);

                await _userManager.AddToRoleAsync(user, "User");
            }
            var roles = await _userManager.GetRolesAsync(user);

            if (!roles.Contains("Admin"))
            {
                IdentityResult roleResult = await _userManager.AddToRoleAsync(user, "Admin");

                if (!roleResult.Succeeded)
                {
                    string msg = "";
                    foreach (IdentityError err in roleResult.Errors)
                    {
                        msg = msg + err.Description;
                    }
                    throw new System.InvalidOperationException("Error creating standard admin user" + msg);
                }
            }
            await _context.SaveChangesAsync();

            var ruimtes = new List <Ruimte>();
            var room250 = new Ruimte {
                Naam = "Grote zaal", Capacity = 250
            };

            ruimtes.Add(room250);
            var roomGrn = new Ruimte {
                Naam = "Groningen", Capacity = 70
            };

            ruimtes.Add(roomGrn);
            var roomAms = new Ruimte {
                Naam = "Amsterdam", Capacity = 70
            };

            ruimtes.Add(roomAms);
            var roomRdm = new Ruimte {
                Naam = "Rotterdam", Capacity = 70
            };

            ruimtes.Add(roomRdm);
            var roomUtr = new Ruimte {
                Naam = "Utrecht", Capacity = 70
            };

            ruimtes.Add(roomUtr);
            var roomNij = new Ruimte {
                Naam = "Nijmegen", Capacity = 22
            };

            ruimtes.Add(roomNij);
            var roomLei = new Ruimte {
                Naam = "Leiden", Capacity = 22
            };

            ruimtes.Add(roomLei);
            var roomDel = new Ruimte {
                Naam = "Delft", Capacity = 22
            };

            ruimtes.Add(roomDel);
            _context.Ruimtes.AddRange(ruimtes);


            var tracks = new List <Track>();

            var track0 = new Track {
                Naam = "Keynote", Rgb = "B9CA8A", BadgeCode = "KN"
            }; tracks.Add(track0);
            var track1 = new Track {
                Naam = "Infra", Rgb = "FFC548", BadgeCode = "IF"
            }; tracks.Add(track1);
            var track2 = new Track {
                Naam = "Apps", Rgb = "B0A0C5", BadgeCode = "AP"
            }; tracks.Add(track2);
            var track3 = new Track {
                Naam = "Collaboratie", Rgb = "9CD2E0", BadgeCode = "CO"
            }; tracks.Add(track3);
            var track4 = new Track {
                Naam = "Inspiratie", Rgb = "FFAC59", BadgeCode = "IS"
            }; tracks.Add(track4);
            var track5 = new Track {
                Naam = "Workshops I", Rgb = "D99690", BadgeCode = "W1"
            }; tracks.Add(track5);
            var track6 = new Track {
                Naam = "Workshops II", Rgb = "D99690", BadgeCode = "W2"
            }; tracks.Add(track6);
            var track7 = new Track {
                Naam = "Closing Note", Rgb = "B9CA8A", BadgeCode = "CN"
            }; tracks.Add(track7);

            _context.Tracks.AddRange(tracks);

            var initresult = await _context.SaveChangesAsync();
        }