51 public ItemController(ItemService itemService, UserService userService, LoanService loanService) {
52 this.itemService = itemService;
53 this.userService = userService;
54 this.loanService = loanService;
75 Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
76 String email = authentication.getName();
78 User user = userService.getUserByEmail(email);
80 return new ResponseEntity<>(
new ArrayList<>(),HttpStatus.UNAUTHORIZED);
83 return new ResponseEntity<>(itemService.getAllItems(),HttpStatus.OK);
96 public ResponseEntity<List<Item>> getAvailableItems() {
97 Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
98 String email = authentication.getName();
100 User user = userService.getUserByEmail(email);
102 return new ResponseEntity<>(
new ArrayList<>(),HttpStatus.UNAUTHORIZED);
105 return new ResponseEntity<>(itemService.getAvailableItems(),HttpStatus.OK);
116 public ResponseEntity<List<Item>> getItemsByUser(@PathVariable Long
id) {
117 Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
118 String email = authentication.getName();
120 User user = userService.getUserByEmail(email);
123 return new ResponseEntity<>(HttpStatus.UNAUTHORIZED);
126 List<Item> items = itemService.getItemsByUser(
id);
127 return new ResponseEntity<>(items, HttpStatus.OK);
128 }
catch (RuntimeException e) {
129 return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
159 public ResponseEntity<Item> getItemById(@PathVariable Long
id) {
160 Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
161 String email = authentication.getName();
163 User user = userService.getUserByEmail(email);
164 Optional<Item> optionalItem = itemService.getItemById(
id);
166 if (user ==
null || optionalItem.isEmpty()) {
167 return new ResponseEntity<>(HttpStatus.UNAUTHORIZED);
170 Item item = optionalItem.get();
172 if (!item.getOwner().equals(user.getId())) {
173 return new ResponseEntity<>(HttpStatus.FORBIDDEN);
176 return new ResponseEntity<>(item, HttpStatus.OK);
185 public ResponseEntity<List<Item>> getLentItemsByUser() {
187 Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
188 String email = authentication.getName();
191 User user = userService.getUserByEmail(email);
193 return new ResponseEntity<>(HttpStatus.UNAUTHORIZED);
198 List<Long> lentItemsId = loanService.getLentItemsIdByUser(user.getId());
199 List<Item> lentItems = itemService.getItemsById(lentItemsId);
201 return new ResponseEntity<>(lentItems, HttpStatus.OK);
202 }
catch (RuntimeException e) {
204 return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
214 public ResponseEntity<List<Item>> getBorrowedItemsByUser() {
216 Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
217 String email = authentication.getName();
220 User user = userService.getUserByEmail(email);
222 return new ResponseEntity<>(HttpStatus.UNAUTHORIZED);
227 List<Long> lentItemsId = loanService.getBorrowedItemsIdByUser(user.getId());
228 List<Item> lentItems = itemService.getItemsById(lentItemsId);
230 return new ResponseEntity<>(lentItems, HttpStatus.OK);
231 }
catch (RuntimeException e) {
233 return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
244 public ResponseEntity<String> createItem(@RequestBody ItemRecord itemRecord) {
245 User user = getAuthenticatedUser();
247 return new ResponseEntity<>(HttpStatus.UNAUTHORIZED);
250 Item item = convertToItem(itemRecord);
251 item.setOwner(user.getId());
253 if (itemRecord.imageBase64() !=
null && !itemRecord.imageBase64().isEmpty()) {
254 String imageUrl = ImageUtil.saveBase64Image(itemRecord.imageBase64(),
"uploads");
255 item.setImage(imageUrl);
257 itemService.saveItem(item);
258 }
catch (IOException e) {
260 return new ResponseEntity<>(
"Error al guardar la imagen: " + e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
261 }
catch (RuntimeException e) {
262 return new ResponseEntity<>(e.getMessage(), HttpStatus.BAD_REQUEST);
265 return new ResponseEntity<>(HttpStatus.CREATED);
278 public ResponseEntity<String> createItem(@RequestBody ItemRecord itemRecord, @RequestParam("token") String token) {
279 User user = userService.getUserByToken(token);
281 return new ResponseEntity<>(HttpStatus.UNAUTHORIZED);
283 Item item = convertToItem(itemRecord);
284 item.setOwner(user.getId());
286 itemService.saveItem(item);
287 }
catch (RuntimeException e) {
288 return new ResponseEntity<>(e.getMessage(), HttpStatus.BAD_REQUEST);
290 return new ResponseEntity<>(HttpStatus.CREATED);
303 public ResponseEntity<String> deleteItem(@PathVariable Long
id, @RequestParam("token") String token) {
304 User user = userService.getUserByToken(token);
305 if (user ==
null || user.getAdmin()==
false && user.getId()!=itemService.getItemById(
id).get().getOwner()) {
306 return new ResponseEntity<>(HttpStatus.UNAUTHORIZED);
310 itemService.deleteItem(
id);
311 return new ResponseEntity<>(HttpStatus.OK);
323 public ResponseEntity<String> updateItem(@PathVariable Long
id, @RequestBody ItemRecord item, @RequestParam("token") String token) {
324 User user = userService.getUserByToken(token);
325 if (user ==
null || user.getId()!=Long.valueOf(itemService.getItemById(
id).get().getOwner()) && user.getAdmin()!=
true) {
326 return new ResponseEntity<>(HttpStatus.UNAUTHORIZED);
330 Item itemToModify = itemService.getItemById(
id).get();
331 itemToModify.setName(item.name() ==
null ? itemToModify.getName() : item.name() );
332 itemToModify.setDescription(item.description() ==
null ? itemToModify.getDescription() : item.description() );
333 itemToModify.setCategory(item.category() ==
null ? itemToModify.getCategory() : item.category());
334 itemToModify.setImage(item.imageBase64() ==
null ? itemToModify.getImage() : item.imageBase64());
335 itemToModify.setStatus(Item.ItemStatus.valueOf(item.status()==
null ? itemToModify.getStatus().toString() : item.status()));
336 itemToModify.setCondition(Item.ItemCondition.valueOf(item.condition()==
null ? itemToModify.getCondition().toString() : item.condition()));
337 itemService.saveItem(itemToModify);
338 return new ResponseEntity<>(HttpStatus.OK);
339 }
catch (RuntimeException e) {
340 return new ResponseEntity<>(e.getMessage(),HttpStatus.NOT_FOUND);