private static void CreateTestDataIn(Database db)
        {
            var createRole = new CreateRole
            {
                Name = "Admin",
                Permissions = new[] {"View Users", "Edit Users", "Deactivate Users"}
            };
            db.CreateRole(createRole);
            db.CreateUser(new CreateUser {FullName = "Dan Barua", UserName = "******", RoleId = createRole.Id.GetValueOrDefault()});
            db.CreateUser(new CreateUser {FullName = "Jonathon Channon", UserName = "******", RoleId = createRole.Id.GetValueOrDefault()});

            // let's generate some random data!
            var fixture = new Fixture {RepeatCount = 100};

            var roles = fixture.CreateMany<CreateRole>().ToList();
            var users = fixture.CreateMany<CreateUser>().ToList();
            foreach (var r in roles)
            {
                db.CreateRole(r);
            }

            var roleCount = roles.Count();
            foreach (var u in users)
            {
                u.RoleId = roles.Skip(new Random().Next(0, roleCount)).Take(1).First().Id.GetValueOrDefault();
                // select random id from roles
                db.CreateUser(u);
            }
        }
        protected override void ConfigureApplicationContainer(TinyIoc.TinyIoCContainer container)
        {
            base.ConfigureApplicationContainer(container);

            // This is the important part - build HAL config for types
            container.Register(typeof(IProvideHalTypeConfiguration), HypermediaConfiguration());

            var db = new Database();
            CreateTestDataIn(db);
            container.Register(db);
        }
Beispiel #3
0
        public RolesModule(Database db)
            : base("/roles")
        {
            this.Get["/"] = _ => 
                    {
                        var request = this.Bind<GetRoleList>();
                        var roles = db.GetAllRoles();
                        return Negotiate.WithModel(roles);
                    };

            this.Get["/{roleId:guid}"] = _ => 
                {
                    var req = this.Bind<GetRoleDetails>();
                    var role = db.GetRoleById(req.RoleId);

                    if (role == null)
                    {
                        return 404;
                    }

                    return Negotiate.WithModel(role);
                };

            this.Post["/"] = _ =>
                {
                    var req = this.Bind<CreateRole>();
                    db.CreateRole(req);
                        var role = db.GetRoleById(req.Id.GetValueOrDefault());
                        return Negotiate
                            .WithHeader("Location", "/roles/" + req.Id.GetValueOrDefault())
                            .WithModel(role)
                            .WithStatusCode(HttpStatusCode.Created);
                    };

            this.Put["/{roleId:guid}"] = _ =>
                {
                    var req = this.Bind<UpdateRole>();
                    db.UpdateRole(req);
                    var role = db.GetRoleById(req.RoleId);
                    
                    return
                        Negotiate.WithHeader("Location", "/roles/" + req.RoleId)
                                 .WithModel(role);
                };

            this.Delete["/{roleId:guid}"] = _ => 
                    {
                        var req = this.Bind<DeleteRole>();
                        db.DeleteRole(req);
                        return this.Negotiate.WithStatusCode(HttpStatusCode.NoContent);
                    };
        }
Beispiel #4
0
        public UsersModule(Database db)
            : base("/users")
        {
            this.Get["/"] = _ => 
                {
                    var request = this.Bind<GetUserList>();
                    var users = db.GetAllUsersPaged(request);

                    return Negotiate.WithModel(users);
                };

            this.Get["/{userId:guid}"] = _ => 
                    {
                        var request = this.Bind<GetUserDetails>();
                        var user = db.GetUserById(request.UserId);
                        if (user == null)
                        {
                            return 404;
                        }

                        return Negotiate.WithModel(user);
                    };

            this.Post["/"] = _ => 
                    {
                        var request = this.Bind<CreateUser>();
                        db.CreateUser(request);
                        var user = db.GetUserById(request.Id.GetValueOrDefault());

                        return
                            this.Negotiate.WithHeader("Location", LinkTemplates.Users.GetUser.CreateLink(new { Id = user.Id }).ToString())
                                     .WithModel(user)
                                     .WithStatusCode(HttpStatusCode.Created);
                    };

            this.Put["/{userId:guid}"] = _ =>
                    {
                        var request = this.Bind<UpdateUserDetails>();
                        db.UpdateUser(request);
                        var user = db.GetUserById(request.UserId);

                        return this.Negotiate.WithModel(user)
                            .WithStatusCode(HttpStatusCode.OK);
                    };

            this.Put["/{userId:guid}/deactivate"] = _ => 
                    {
                        var request = this.Bind<DeactivateUser>();
                        db.Deactivate(request);
                        var user = db.GetUserById(request.UserId);

                        return this.Negotiate.WithModel(user)
                            .WithStatusCode(HttpStatusCode.OK);
                    };

            this.Put["/{userId:guid}/reactivate"] = _ =>
                    {
                        var request = this.Bind<ReactivateUser>();
                        db.Reactivate(request);
                        var user = db.GetUserById(request.UserId);

                        return this.Negotiate.WithModel(user)
                            .WithStatusCode(HttpStatusCode.OK);
                    };

            this.Put["/{userId:guid}/role/{roleId:guid}"] = _ => 
                {
                    var request = this.Bind<ChangeUserRole>();
                    db.ChangeRole(request);
                    var user = db.GetUserById(request.UserId);

                    return this.Negotiate.WithModel(user)
                        .WithStatusCode(HttpStatusCode.OK);
                };
        }