コード例 #1
0
        public async Task <IActionResult> AddUserToCourse(string userId, int courseId, bool mainPage)
        {
            var roleId = await _context.UserRoles.Where(ur => ur.UserId.Equals(userId)).Select(ur => ur.RoleId).FirstOrDefaultAsync();

            var roleName = await _context.Roles.Where(r => r.Id.Equals(roleId)).Select(r => r.Name).FirstOrDefaultAsync();

            var userCourse = new SystemUserCourse
            {
                SystemUserId  = userId,
                CourseId      = courseId,
                Discriminator = roleName
            };

            _context.UserCourses.Add(userCourse);
            await _context.SaveChangesAsync();

            if (mainPage)
            {
                return(ViewComponent("Users", new { courseId }));
            }
            return(RedirectToAction("Edit", new { id = courseId }));
        }
コード例 #2
0
        //Used for ViewComponent
        public async Task <Course> GetUserCourse(string id)
        {
            SystemUserCourse course = await _context.UserCourses.Where(u => u.SystemUserId.Equals(id)).FirstOrDefaultAsync();

            return(course != null? await _context.Courses.Where(u => u.Id.Equals(course.CourseId)).FirstOrDefaultAsync() : null);
        }
コード例 #3
0
ファイル: SeedData.cs プロジェクト: Rocangus/LexiconLMS
        public static async Task Initialize(IServiceProvider services, IConfiguration configuration,
                                            UserManager <SystemUser> userManager, RoleManager <IdentityRole> roleManager)
        {
            var option = services.GetRequiredService <DbContextOptions <ApplicationDbContext> >();

            using (var context = new ApplicationDbContext(option))
            {
                string[] roleNames = { "Student", "Teacher" };

                foreach (var name in roleNames)
                {
                    IdentityResult roleExistsResult;
                    if (!await roleManager.RoleExistsAsync(name))
                    {
                        roleExistsResult = await roleManager.CreateAsync(new IdentityRole(name));

                        if (roleExistsResult != IdentityResult.Success)
                        {
                            throw new Exception(string.Join("\n", roleExistsResult.Errors));
                        }
                    }
                }

                string adminName  = "Administrator";
                string adminEmail = "*****@*****.**";
                if (!context.Users.Any(u => u.Email == adminEmail))
                {
                    SystemUser admin = new SystemUser
                    {
                        UserName       = "******",
                        Name           = adminName,
                        Email          = adminEmail,
                        EmailConfirmed = true
                    };

                    var adminPassword = configuration["LMS:AdminPW"];

                    var addUserResult = await userManager.CreateAsync(admin, adminPassword);

                    if (!addUserResult.Succeeded)
                    {
                        throw new Exception(string.Join("\n", addUserResult.Errors));
                    }

                    var addToRoleResult = await userManager.AddToRoleAsync(admin, roleNames[1]);

                    if (!addToRoleResult.Succeeded)
                    {
                        throw new Exception(string.Join("\n", addToRoleResult.Errors));
                    }

                    await context.SaveChangesAsync();
                }

                if (!context.ActivityTypes.Any())
                {
                    string[] activityTypeNames = new string[] { "E-learning session", "Lecture", "Exam", "Assignment",
                                                                "Practice session" };

                    foreach (var typeName in activityTypeNames)
                    {
                        var activityType = new ActivityType
                        {
                            Name = typeName
                        };
                        context.Add(activityType);
                    }
                    await context.SaveChangesAsync();
                }

                var faker = GetFaker();

                if (context.Users.Count() <= 10)
                {
                    var bogusPassword = configuration["LMS:AdminPW"];
                    for (int i = 0; i < 200; i++)
                    {
                        var name      = faker.Name.FullName();
                        var userEmail = faker.Internet.Email($"{name}");
                        var user      = new SystemUser
                        {
                            Name     = name,
                            Email    = userEmail,
                            UserName = userEmail
                        };
                        var addFakeUserResult = await userManager.CreateAsync(user, bogusPassword);

                        if (!addFakeUserResult.Succeeded)
                        {
                            throw new Exception(string.Join("\n", addFakeUserResult.Errors));
                        }

                        var teacherRandomness = faker.Random.Int(1, 10);

                        IdentityResult addFakeUserToRoleResult;

                        if (teacherRandomness < 10)
                        {
                            addFakeUserToRoleResult = await userManager.AddToRoleAsync(user, roleNames[0]);
                        }
                        else
                        {
                            addFakeUserToRoleResult = await userManager.AddToRoleAsync(user, roleNames[1]);
                        }

                        if (!addFakeUserToRoleResult.Succeeded)
                        {
                            throw new Exception(string.Join("\n", addFakeUserToRoleResult.Errors));
                        }
                    }

                    await context.SaveChangesAsync();
                }

                if (context.Courses.Count() <= 1)
                {
                    var now = DateTime.UtcNow;
                    for (int i = 0; i < 4; i++)
                    {
                        var course = new Course
                        {
                            Name        = faker.Company.CatchPhrase(),
                            StartDate   = faker.Date.Future(1, now),
                            Description = faker.Lorem.Sentences(6)
                        };

                        await context.AddAsync(course);
                    }
                    await context.SaveChangesAsync();
                }

                foreach (var course in context.Courses.ToList())
                {
                    if (!context.Modules.Any(m => m.CourseId == course.Id))
                    {
                        var startDate = course.StartDate.AddDays(faker.Random.Int(0, 90));
                        for (int i = 0; i < faker.Random.Int(2, 10); i++)
                        {
                            var module = new Module
                            {
                                CourseId    = course.Id,
                                Name        = faker.Company.CatchPhrase(),
                                Description = faker.Lorem.Sentences(6),
                                StartDate   = startDate,
                                EndDate     = startDate.AddDays(faker.Random.Int(0, 5))
                            };

                            context.Add(module);
                        }
                        context.SaveChanges();
                    }
                }


                foreach (var module in await context.Modules.ToListAsync())
                {
                    if (!context.Activities.Any(a => a.ModuleId == module.Id))
                    {
                        for (int i = 0; i < faker.Random.Int(0, 5); i++)
                        {
                            var activityStartTime = faker.Date.Soon((module.StartDate - module.EndDate).Days, module.StartDate);
                            var activityTypeCount = context.ActivityTypes.Count();
                            var activity          = new Activity
                            {
                                Name           = faker.Company.CatchPhrase(),
                                ActivityTypeId = faker.Random.Int(0, activityTypeCount),
                                Description    = faker.Lorem.Sentences(6),
                                StartTime      = activityStartTime,
                                EndTime        = activityStartTime + faker.Date.Timespan(new TimeSpan(TimeSpan.TicksPerDay)),
                                ModuleId       = module.Id
                            };
                            context.Add(activity);
                        }
                        await context.SaveChangesAsync();
                    }
                }

                var teacherRole = context.Roles.Where(r => r.Name.Equals(roleNames[1])).FirstOrDefault();
                var courseCount = context.Courses.Count();

                foreach (var user in await context.Users.ToListAsync())
                {
                    if (!context.UserCourses.Any(uc => uc.SystemUserId.Equals(user.Id)))
                    {
                        SystemUserCourse userCourse;
                        if (context.UserRoles.Any(ur => ur.UserId.Equals(user.Id) && ur.RoleId.Equals(teacherRole.Id)))
                        {
                            userCourse = new SystemUserCourse
                            {
                                CourseId      = faker.Random.Int(1, courseCount),
                                SystemUserId  = user.Id,
                                Discriminator = "Teacher"
                            };
                        }
                        else
                        {
                            userCourse = new SystemUserCourse
                            {
                                CourseId      = faker.Random.Int(1, courseCount),
                                SystemUserId  = user.Id,
                                Discriminator = "Student"
                            };
                        };

                        context.Add(userCourse);
                        await context.SaveChangesAsync();
                    }
                }
            }
        }