Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/main/java/com/lambdaschool/bucketlist/SeedData.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
import org.springframework.transaction.annotation.Transactional;

import java.util.ArrayList;

////
//@Transactional
//@Component
public class SeedData implements CommandLineRunner
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
package com.lambdaschool.bucketlist.controllers;

import com.lambdaschool.bucketlist.models.ErrorDetail;
import com.lambdaschool.bucketlist.models.Item;
import com.lambdaschool.bucketlist.models.User;
import com.lambdaschool.bucketlist.models.*;
import com.lambdaschool.bucketlist.repository.UserRepository;
import com.lambdaschool.bucketlist.services.FriendService;
import com.lambdaschool.bucketlist.services.ItemService;
import com.lambdaschool.bucketlist.services.UserService;
import io.swagger.annotations.*;
Expand All @@ -21,6 +20,7 @@
import javax.validation.Valid;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.HashMap;
import java.util.List;

@RestController
Expand All @@ -38,41 +38,42 @@ public class ItemController
@Autowired
private UserRepository userrepos;

@GetMapping(value = "",
produces = {"application/json"})
public ResponseEntity<?> listUsersItems(HttpServletRequest request, Authentication authentication)
{
@Autowired
private FriendService friendService;

@ApiOperation(value = "Returns the users info including userid, username, and items")
@GetMapping(value = "/user",
produces = {"application/json"})
public ResponseEntity<?> getUser(HttpServletRequest request, Authentication authentication) {
logger.trace(request.getMethod().toUpperCase() + " " + request.getRequestURI() + " accessed");

List<Item> allItems = itemService.findByUserName(authentication.getName());
return new ResponseEntity<>(allItems, HttpStatus.OK);
User u = userrepos.findByUsername(authentication.getName());
u.setRequests(friendService.getMyFriends(u.getUsername()));
u.setFriends(friendService.getAcceptedFriends(u.getUsername()));

return new ResponseEntity<>(u, HttpStatus.OK);
}


// @GetMapping(value = "/{itemid}",
// produces = {"application/json"})
// public ResponseEntity<?> getItem(HttpServletRequest request,
// @PathVariable
// Long itemid)
// {
// logger.trace(request.getMethod().toUpperCase() + " " + request.getRequestURI() + " accessed");
//
// Item q = itemService.findQuoteById(itemid);
// return new ResponseEntity<>(q, HttpStatus.OK);
// }


// @GetMapping(value = "/username/{userName}",
// produces = {"application/json"})
// public ResponseEntity<?> findItemsByUserName(HttpServletRequest request,
// @PathVariable
// String userName)
// {
// logger.trace(request.getMethod().toUpperCase() + " " + request.getRequestURI() + " accessed");
//
// List<Item> theItems = itemService.findByUserName(userName);
// return new ResponseEntity<>(theItems, HttpStatus.OK);
// }

@GetMapping(value = "/username/{userName}",
produces = {"application/json"})
public ResponseEntity<?> findItemsByUserName(HttpServletRequest request,
@PathVariable
String userName)
{
logger.trace(request.getMethod().toUpperCase() + " " + request.getRequestURI() + " accessed");
Response newResponse = new Response();

List<Item> friendItems = itemService.findItemByUserName(userName.toLowerCase());
if(friendItems == null){
newResponse.setError("No Items for that user");
return new ResponseEntity<>(newResponse, HttpStatus.NOT_FOUND);
} else {
return new ResponseEntity<>(friendItems, HttpStatus.OK);

}
}

//
@ApiOperation(value = "Create new Bucket list item")
Expand All @@ -90,26 +91,61 @@ public ResponseEntity<?> addNewItem(HttpServletRequest request,
Authentication authentication) throws URISyntaxException
{
logger.trace(request.getMethod().toUpperCase() + " " + request.getRequestURI() + " accessed");

itemService.save(item);

// set the location header for the newly created resource
HttpHeaders responseHeaders = new HttpHeaders();
// URI newQuoteURI = ServletUriComponentsBuilder.fromCurrentRequest().path("/{itemid}").buildAndExpand(newItem.getItemid()).toUri();
// responseHeaders.setLocation(newQuoteURI);
return new ResponseEntity<>(itemService.findItemById(item.getItemid()), responseHeaders, HttpStatus.CREATED);
}

@PostMapping(value = "/journal/{itemid}", consumes = {"application/json"}, produces = {"application/json"})
public ResponseEntity<?> addToJournal(@PathVariable long itemid,
@RequestBody String journalentry){

return new ResponseEntity<>("Bucket list item created successfully", responseHeaders, HttpStatus.CREATED);
itemService.addToJournal(itemid, journalentry);
return new ResponseEntity<>(itemService.findItemById(itemid), HttpStatus.OK);
}

@DeleteMapping(value = "/journal/{journalentryid}")
public ResponseEntity<?> deleteJournalEntryById(HttpServletRequest request,
@PathVariable
long journalentryid)
{
logger.trace(request.getMethod().toUpperCase() + " " + request.getRequestURI() + " accessed");
itemService.deleteFromJournal(journalentryid);
return new ResponseEntity<>(HttpStatus.OK);
}

// @DeleteMapping("/item/{id}")
// public ResponseEntity<?> deleteItemById(HttpServletRequest request,
// @PathVariable
// long id)
// {
// logger.trace(request.getMethod().toUpperCase() + " " + request.getRequestURI() + " accessed");
//
// itemService.delete(id);
// return new ResponseEntity<>(HttpStatus.OK);
// }
@DeleteMapping(value = "/item/{id}")
public ResponseEntity<?> deleteItemById(HttpServletRequest request,
@PathVariable
long id)
{
logger.trace(request.getMethod().toUpperCase() + " " + request.getRequestURI() + " accessed");
itemService.delete(id);
return new ResponseEntity<>(HttpStatus.OK);
}

@PutMapping(value = "/item/{id}")
public ResponseEntity<?> UpdateItemById(HttpServletRequest request,
@PathVariable
long id,
@RequestBody Item newItem) {
logger.trace(request.getMethod().toUpperCase() + " " + request.getRequestURI() + " accessed");
itemService.update(id, newItem);
return new ResponseEntity<>(HttpStatus.OK);
}

@PutMapping(value = "/item/{itemid}/journal/{journalid}")
public ResponseEntity<?> UpdateJournalById(HttpServletRequest request,
@PathVariable
long itemid,
@PathVariable
long journalid,
@RequestBody Journal newJournal) {
logger.trace(request.getMethod().toUpperCase() + " " + request.getRequestURI() + " accessed");
Item itemToUpdate = itemService.findItemById(itemid);
newJournal.setItem(itemToUpdate);

itemService.updateJournal(journalid, newJournal);
return new ResponseEntity<>(itemToUpdate, HttpStatus.OK);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ public ResponseEntity<?> addNewUser(HttpServletRequest request, @Valid
responseHeaders.setLocation(newRestaurantURI);



return new ResponseEntity<>("User created successfully", responseHeaders, HttpStatus.CREATED);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
package com.lambdaschool.bucketlist.controllers;

import com.lambdaschool.bucketlist.models.ErrorDetail;
import com.lambdaschool.bucketlist.models.Friend;
import com.lambdaschool.bucketlist.models.User;
import com.lambdaschool.bucketlist.models.*;
import com.lambdaschool.bucketlist.repository.UserRepository;
import com.lambdaschool.bucketlist.services.FriendService;
import com.lambdaschool.bucketlist.services.UserService;
import io.swagger.annotations.*;
Expand Down Expand Up @@ -35,57 +34,38 @@ public class UserController
@Autowired
private FriendService friendService;

// @PreAuthorize("hasAuthority('ROLE_ADMIN')")
// @GetMapping(value = "/users",
// produces = {"application/json"})
// public ResponseEntity<?> listAllUsers(HttpServletRequest request)
// {
// logger.trace(request.getMethod().toUpperCase() + " " + request.getRequestURI() + " accessed");
//
// List<User> myUsers = userService.findAll();
// return new ResponseEntity<>(myUsers, HttpStatus.OK);
// }



// @PreAuthorize("hasAuthority('ROLE_ADMIN')")
// @GetMapping(value = "/user/{userId}",
// produces = {"application/json"})
// public ResponseEntity<?> getUser(HttpServletRequest request,
// @PathVariable
// Long userId)
// {
// logger.trace(request.getMethod().toUpperCase() + " " + request.getRequestURI() + " accessed");
//
// User u = userService.findUserById(userId);
// return new ResponseEntity<>(u, HttpStatus.OK);
// }

@GetMapping(value = "/search/{username}", produces = {"application/json"})
public ResponseEntity<?> searchUsers(@PathVariable String username){
List<String> foundUsers = userService.searchUsers(username);
return new ResponseEntity<>(foundUsers, HttpStatus.OK);
}

// @GetMapping(value = "/getusername",
// produces = {"application/json"})
// @ResponseBody
// public ResponseEntity<?> getCurrentUserName(HttpServletRequest request, Authentication authentication)
// {
// logger.trace(request.getMethod().toUpperCase() + " " + request.getRequestURI() + " accessed");
//
// return new ResponseEntity<>(authentication.getPrincipal(), HttpStatus.OK);
// }
@GetMapping(value = "/searchwithlist/{username}", produces = {"application/json"})
public ResponseEntity<?> searchUsersWithList(@PathVariable String username){
List<Item> foundUsers = userService.searchUsersLike(username);
return new ResponseEntity<>(foundUsers, HttpStatus.OK);
}

@ApiOperation(value = "Send friend request")
@ApiResponses(value = {
@ApiResponse(code = 200, message = "Friend request sent", response = void.class),
@ApiResponse(code = 404, message = "Username not found", response = ErrorDetail.class),
@ApiResponse(code = 500, message = "Server error", response = ErrorDetail.class)
})
@PostMapping(value = "add/{username}", consumes = {"application/json"}, produces = {"application/json"})
@PostMapping(value = "add", consumes = {"application/json"}, produces = {"application/json"})
public ResponseEntity<?> addFriend(
@ApiParam(value = "Username", required = true, example = "JaneDoenomo")
@PathVariable
@RequestBody
String username,
Authentication authentication){
friendService.sendRequest(username, authentication.getName());
return new ResponseEntity<>("Friend request sent", HttpStatus.OK);

Response newResponse = new Response();
if(friendService.sendRequest(username, authentication.getName()) != null){
newResponse.setMessage("Friend Request Sent!");
} else {
newResponse.setError("Request already exists");
}
return new ResponseEntity<>(newResponse, HttpStatus.OK);
}

@ApiOperation(value = "Accept friend request")
Expand All @@ -94,49 +74,14 @@ public ResponseEntity<?> addFriend(
@ApiResponse(code = 404, message = "Request Id not found", response = ErrorDetail.class),
@ApiResponse(code = 500, message = "Server error", response = ErrorDetail.class)
})
@PutMapping(value = "add/{requestid}", consumes = {"application/json"}, produces = {"application/json"})
@PutMapping(value = "/add/{requestid}", consumes = {"application/json"}, produces = {"application/json"})
public ResponseEntity<?> acceptRequest(
@ApiParam(value = "Request id", required = true, example = "4")
@PathVariable long requestid){
friendService.update(requestid);
return new ResponseEntity<>(null, HttpStatus.OK);
}

// @PreAuthorize("hasAuthority('ROLE_ADMIN')")
// @PostMapping(value = "/user",
// consumes = {"application/json"},
// produces = {"application/json"})
// public ResponseEntity<?> addNewUser(HttpServletRequest request, @Valid
// @RequestBody
// User newuser) throws URISyntaxException
// {
// logger.trace(request.getMethod().toUpperCase() + " " + request.getRequestURI() + " accessed");
//
// newuser = userService.save(newuser);
//
// // set the location header for the newly created resource
// HttpHeaders responseHeaders = new HttpHeaders();
// URI newUserURI = ServletUriComponentsBuilder.fromCurrentRequest().path("/{userid}").buildAndExpand(newuser.getUserid()).toUri();
// responseHeaders.setLocation(newUserURI);
//
// return new ResponseEntity<>(null, responseHeaders, HttpStatus.CREATED);
// }


// @PutMapping(value = "/user/{id}")
// public ResponseEntity<?> updateUser(HttpServletRequest request,
// @RequestBody
// User updateUser,
// @PathVariable
// long id)
// {
// logger.trace(request.getMethod().toUpperCase() + " " + request.getRequestURI() + " accessed");
//
// userService.update(updateUser, id);
// return new ResponseEntity<>(HttpStatus.OK);
// }


@PreAuthorize("hasAuthority('ROLE_ADMIN')")
@DeleteMapping("/user/{id}")
public ResponseEntity<?> deleteUserById(HttpServletRequest request,
Expand All @@ -148,4 +93,14 @@ public ResponseEntity<?> deleteUserById(HttpServletRequest request,
userService.delete(id);
return new ResponseEntity<>(HttpStatus.OK);
}

@DeleteMapping(value = "/friends/{id}")
public ResponseEntity<?> deleteFriendById(HttpServletRequest request,
@PathVariable
long id)
{
logger.trace(request.getMethod().toUpperCase() + " " + request.getRequestURI() + " accessed");
friendService.delete(id);
return new ResponseEntity<>(HttpStatus.OK);
}
}
18 changes: 17 additions & 1 deletion src/main/java/com/lambdaschool/bucketlist/models/Friend.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,18 @@ public class Friend {

private boolean accepted;

public Friend(String friendusername, String requester, boolean accepted) {
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "userid",
nullable = false)
@JsonIgnoreProperties({"friend", "hibernateLazyInitializer"})
private User user;


public Friend(String friendusername, String requester, boolean accepted, User user) {
this.friendusername = friendusername;
this.requester = requester;
this.accepted = accepted;
this.user = user;
}

public Friend() {
Expand Down Expand Up @@ -58,4 +66,12 @@ public boolean isAccepted() {
public void setAccepted(boolean accepted) {
this.accepted = accepted;
}

public User getUser() {
return user;
}

public void setUser(User user) {
this.user = user;
}
}
Loading