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); }
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); }; }
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); }; }