public IHttpActionResult UpdateWall(string wallId, WallModelCreateRequest request) { wallId = Helpers.TextSanitizer.Hypersanitize(wallId, true); if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var wallModel = DatabaseContext.Shared.WallModels.Find(wallId); if (wallModel == null) { return(NotFound()); } if (!IsOwner(wallModel, request)) { return(Unauthorized()); } if (request.Password != null) { wallModel.Password = request.WantedPassword; } if (request.BackgroundUrl != null) { wallModel.BackgroundUrl = Helpers.TextSanitizer.MakeSafe(request.BackgroundUrl, false); } if (request.TileBackground != null) { wallModel.TileBackground = request.TileBackground.Value; } if (request.Title != null) { wallModel.Title = Helpers.TextSanitizer.MakeSafe(request.Title, false); } if (request.Subtitle != null) { wallModel.Subtitle = Helpers.TextSanitizer.MakeSafe(request.Subtitle, false); } if (request.WallMode != WallModel.WallModes.INVALID) { wallModel.WallMode = request.WallMode; } if (request.UnauthorizedUserPermissions != WallModel.WallAccessPermissionLevels.INVALID) { wallModel.UnauthorizedUserPermissionLevel = request.UnauthorizedUserPermissions; } DatabaseContext.Shared.SaveChanges(); var info = GetInfo(wallModel); DatabaseContext.Release(); return(Ok(info)); }
public IHttpActionResult CreateWall(WallModelCreateRequest request) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var ownerName = GetUsername(); var wallModel = DatabaseContext.Shared.WallModels.Create(); wallModel.OwnerName = ownerName; wallModel.OwnerPrivate = GetPrivateKey(request); wallModel.OwnerPublic = GetPublicKey(request); wallModel.Password = request.WantedPassword; wallModel.WallUrl = Helpers.TextSanitizer.Hypersanitize(request.RequestedUrl, true); wallModel.Title = Helpers.TextSanitizer.MakeSafe(request.Title, false); wallModel.Subtitle = Helpers.TextSanitizer.MakeSafe(request.Subtitle, false); wallModel.BackgroundUrl = Helpers.TextSanitizer.MakeSafe(request.BackgroundUrl, false); if (request.TileBackground != null) { wallModel.TileBackground = request.TileBackground.Value; } wallModel.WallMode = (request.WallMode == WallModel.WallModes.INVALID ? WallModel.WallModes.Stream : request.WallMode); wallModel.UnauthorizedUserPermissionLevel = (request.UnauthorizedUserPermissions == WallModel.WallAccessPermissionLevels.INVALID ? WallModel.WallAccessPermissionLevels.ViewEdit : request.UnauthorizedUserPermissions); var post = GetStarterPost(); wallModel.AddPost(post); DatabaseContext.Shared.WallModels.Add(wallModel); try { DatabaseContext.Shared.SaveChanges(); } catch (DbUpdateException e) { if (WallModelExists(wallModel.WallUrl)) { return(Conflict()); } else { throw e; } } //Add to user, if any var user = GetUser(); if (user != null) { user.Add(wallModel); _authRepo.SaveUserUpdate(); } var info = GetInfo(wallModel); DatabaseContext.Release(); return(Ok(info)); }