예제 #1
0
        private async Task EnsureCreatedCore()
        {
            var created = await Database.EnsureCreatedAsync();

            if (!created)
            {
                return;
            }

            var adminUser = await Users.FirstOrDefaultAsync(u => u.Name == "admin", CancellationToken.None);

            var userRex = await Users.FirstOrDefaultAsync(u => u.Name == "rex", CancellationToken.None);

            var userQuick = await Users.FirstOrDefaultAsync(u => u.Name == "quick", CancellationToken.None);

            var userBlocked = await Users.FirstOrDefaultAsync(u => u.Name == "blocked", CancellationToken.None);

            adminUser ??= new User
            {
                Name        = "admin",
                Password    = _passwordHasher.Hash("admin"),
                Permissions = Permission.AllPermissions.ToList()
            };
            userRex ??= new User
            {
                Name        = "rex",
                Password    = _passwordHasher.Hash("rex"),
                Permissions = Role.Editor.ToList()
            };
            userQuick ??= new User
            {
                Name        = "quick",
                Password    = _passwordHasher.Hash("quick"),
                Permissions = Role.Editor.ToList()
            };
            userBlocked ??= new User
            {
                Name        = "blocked",
                Password    = _passwordHasher.Hash("blocked"),
                Permissions = Role.BlockedUser.ToList()
            };

            await Users.AddRangeAsync(adminUser, userRex, userQuick, userBlocked);

            await SaveChangesAsync();

            ProjectTemplate projectTemplateVanilla5000   = null;
            ProjectTemplate projectTemplateVanilla7000   = null;
            ProjectTemplate projectTemplateVanilla708711 = null;

            projectTemplateVanilla5000 = new ProjectTemplate
            {
                Name          = "Vanilla 5.0.0.0",
                ClientVersion = "5.0.0.0",
                Location      = "D:\\UO\\Vanilla\\5.0.0.0\\5.0.0.0\\Server"
            };

            projectTemplateVanilla7000 = new ProjectTemplate
            {
                Name          = "Vanilla 7.0.0.0",
                ClientVersion = "7.0.0.0",
                Location      = @"D:\Private\Code\Projects\UOStudio\src\UOStudio.Server.Api\bin\Debug\ProjectTemplates\Vanilla-7.0.0.0\"
            };

            projectTemplateVanilla708711 = new ProjectTemplate
            {
                Name          = "Vanilla 7.0.87.11",
                ClientVersion = "7.0.87.11",
                Location      = "D:\\UO\\Vanilla\\7.0.87.11\\7.0.87.11\\Server"
            };

            await ProjectTemplates.AddRangeAsync(projectTemplateVanilla5000, projectTemplateVanilla7000, projectTemplateVanilla708711);

            await SaveChangesAsync();

            var privateProject5000 = new Project
            {
                Name         = "Private Project 1",
                Description  = "Some Private Project Rex is working on, based on 5.0.0.0",
                IsPublic     = false,
                Template     = projectTemplateVanilla5000,
                CreatedBy    = userRex,
                CreatedAt    = DateTimeOffset.Now,
                AllowedUsers = new List <User> {
                    userQuick, userRex
                }
            };

            var privateProject7000 = new Project
            {
                Name         = "Private Project 1",
                Description  = "Some Private Project Rex is working on, based on 7.0.0.0",
                IsPublic     = false,
                Template     = projectTemplateVanilla7000,
                CreatedBy    = userQuick,
                CreatedAt    = DateTimeOffset.Now,
                AllowedUsers = new List <User> {
                    userQuick, adminUser
                }
            };

            var publicProject = new Project
            {
                Name        = "Public Project",
                Description = "Anybody can join",
                IsPublic    = true,
                Template    = projectTemplateVanilla708711,
                CreatedBy   = adminUser,
                CreatedAt   = DateTimeOffset.Now,
            };

            await Projects.AddRangeAsync(privateProject5000, privateProject7000, publicProject);

            await SaveChangesAsync();
        }