|
5 | 5 | import com.codedifferently.lesson26.library.MediaItem;
|
6 | 6 | import com.codedifferently.lesson26.library.search.SearchCriteria;
|
7 | 7 | import java.io.IOException;
|
| 8 | +import java.util.ArrayList; |
8 | 9 | import java.util.List;
|
9 | 10 | import java.util.Optional;
|
10 | 11 | import java.util.Set;
|
@@ -65,33 +66,47 @@ public ResponseEntity<MediaItemResponse> getItemById(@PathVariable("id") UUID id
|
65 | 66 | }
|
66 | 67 |
|
67 | 68 | @PostMapping()
|
68 |
| - public ResponseEntity<?> postItems(@RequestBody(required = true) MediaItemRequest request) { |
69 |
| - MediaItem newMediaItem = MediaItemRequest.asMediaItem(request); |
70 |
| - |
71 |
| - if (newMediaItem.getTitle() == null |
72 |
| - || newMediaItem.getType() == null |
73 |
| - || request.getType() == null) { |
74 |
| - |
75 |
| - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(request); |
| 69 | + public ResponseEntity<?> postItems(@RequestBody CreateMediaItemRequest requestBody) { |
| 70 | + List<String> errorsList = new ArrayList<>(); |
| 71 | + MediaItemRequest request = requestBody.getItem(); |
| 72 | + if (requestBody.getItem() == null) { |
| 73 | + errorsList.add("Cannot enter null"); |
| 74 | + } else { |
| 75 | + if ((request.getTitle() == null || request.getTitle().isBlank()) |
| 76 | + && (request.getType() == null || request.getType().isBlank())) { |
| 77 | + errorsList.add("title and type cannot be null or blank"); |
| 78 | + } else { |
| 79 | + if (request.getTitle() == null || request.getTitle().isBlank()) { |
| 80 | + errorsList.add("title cannot be null or blank"); |
| 81 | + } else { |
| 82 | + if (request.getType() == null || request.getType().isBlank()) { |
| 83 | + errorsList.add("type cannot be null or blank"); |
| 84 | + } |
| 85 | + } |
| 86 | + } |
76 | 87 | }
|
77 |
| - |
| 88 | + if (!errorsList.isEmpty()) { |
| 89 | + return ResponseEntity.status(HttpStatus.BAD_REQUEST) |
| 90 | + .body( |
| 91 | + new Object() { |
| 92 | + public final List<String> errors = errorsList; |
| 93 | + }); |
| 94 | + } |
| 95 | + MediaItem newMediaItem = MediaItemRequest.asMediaItem(request); |
78 | 96 | library.addMediaItem(newMediaItem, librarian);
|
79 |
| - |
80 |
| - return ResponseEntity.status(HttpStatus.CREATED).body(request); |
| 97 | + return ResponseEntity.ok(requestBody); |
81 | 98 | }
|
82 | 99 |
|
83 | 100 | @DeleteMapping(value = "/{id}")
|
84 | 101 | public ResponseEntity<Void> deleteItem(@PathVariable("id") UUID id) {
|
85 |
| - Set<MediaItem> test1 = library.search(SearchCriteria.builder().id(id.toString()).build()); |
86 |
| - |
| 102 | + Set<MediaItem> test1 = library.search(SearchCriteria.builder().build()); |
87 | 103 | Set<MediaItem> item = library.search(SearchCriteria.builder().id(id.toString()).build());
|
88 | 104 | if (item.isEmpty()) {
|
89 |
| - ResponseEntity.notFound().build(); |
90 |
| - } else if (!test1.contains(item.iterator().next())) { |
91 |
| - ResponseEntity.notFound().build(); |
| 105 | + return ResponseEntity.notFound().build(); |
| 106 | + } else if (!test1.contains(item.iterator().next()) || item.iterator().next() == null) { |
| 107 | + return ResponseEntity.notFound().build(); |
92 | 108 | }
|
93 | 109 | library.removeMediaItem(id, librarian);
|
94 |
| - // Set<MediaItem> libraryAltercation = library.search(SearchCriteria.builder().build()); |
95 | 110 | return ResponseEntity.noContent().build();
|
96 | 111 | }
|
97 | 112 | }
|
0 commit comments