|
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