Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @RestController
- @RequestMapping(value = "/api/v1/message/", produces = MediaType.APPLICATION_JSON_VALUE)
- @Api(value = "Message API", description = "Provides a list of methods that manage messages")
- public class MessageRestController {
- @Autowired
- private MessageService messageService;
- @Autowired
- private AuthorizationService authorizationService;
- @Autowired
- private UnidirectionalConverter<SendMessageDTO, Message> converterSendMessageDTOToMessage;
- @Autowired
- private UnidirectionalConverter<Message, SentMessageInfoDTO> converterMessageToSentMessageInfoDTO;
- @Autowired
- private UnidirectionalConverter<Message, SentMessageDTO> converterMessageToSentMessageDTO;
- @Autowired
- private UnidirectionalConverter<Message, ReceivedMessageInfoDTO> converterMessageToReceivedMessageInfoDTO;
- @Autowired
- private UnidirectionalConverter<Message, ReceivedMessageDTO> converterMessageToReceivedMessageDTO;
- @ApiOperation(value = "Save message", code = 201)
- @ApiResponses(value = { @ApiResponse(code = 400, message = "Incorrect data in the form") })
- @PostMapping
- public
- HttpEntity<Boolean> addMessage(
- @ApiParam(value = "Message", required = true) @RequestBody @Valid SendMessageDTO sendMessageDTO,
- UriComponentsBuilder uriComponentsBuilder
- ) {
- messageService.saveMessage(converterSendMessageDTOToMessage.convert(sendMessageDTO));
- UriComponents uriComponents
- = uriComponentsBuilder.path("/profile/{username}").buildAndExpand(sendMessageDTO.getTo());
- HttpHeaders httpHeaders = new HttpHeaders();
- httpHeaders.setLocation(uriComponents.toUri());
- return new ResponseEntity<>(true, httpHeaders, HttpStatus.CREATED);
- }
- @ApiOperation(value = "Get sent message by ID")
- @ApiResponses(value = { @ApiResponse(code = 404, message = "No messages found") })
- @GetMapping(value = "/sent/{id}")
- public
- HttpEntity<SentMessageDTO> getSentMessage(
- @ApiParam(value = "The message ID", required = true) @RequestParam Long id
- ) {
- return messageService.findByIdAndSender(id, authorizationService.getUserId())
- .map(message -> ResponseEntity.ok().body(converterMessageToSentMessageDTO.convert(message)))
- .orElseGet(() -> ResponseEntity.notFound().build());
- }
- @ApiOperation(value = "Get received message by ID")
- @ApiResponses(value = { @ApiResponse(code = 404, message = "No messages found") })
- @GetMapping(value = "/received/{id}")
- public
- HttpEntity<ReceivedMessageDTO> getReceivedMessage(
- @ApiParam(value = "The message ID", required = true) @RequestParam Long id
- ) {
- return messageService.findByIdAndRecipient(id, authorizationService.getUserId())
- .map(message -> ResponseEntity.ok().body(converterMessageToReceivedMessageDTO.convert(message)))
- .orElseGet(() -> ResponseEntity.notFound().build());
- }
- @ApiOperation(value = "Remove sent message by ID")
- @ApiResponses(value = { @ApiResponse(code = 404, message = "No messages found") })
- @DeleteMapping(value = "/sent")
- public
- HttpEntity<Boolean> removeSentMessage(
- @ApiParam(value = "The message ID", required = true) @RequestParam Long id
- ) {
- return messageService.findBySender(authorizationService.getUserId()).stream().anyMatch(message -> message.getId().equals(id)) ?
- ResponseEntity.ok().body(messageService.removeSentMessage(id)) : ResponseEntity.notFound().build();
- }
- @ApiOperation(value = "Remove received message by ID")
- @ApiResponses(value = { @ApiResponse(code = 404, message = "No messages found") })
- @DeleteMapping(value = "/received")
- public
- HttpEntity<Boolean> removeReceivedMessage(
- @ApiParam(value = "The message ID", required = true) @RequestParam Long id
- ) {
- return messageService.findByRecipient(authorizationService.getUserId()).stream().anyMatch(message -> message.getId().equals(id)) ?
- ResponseEntity.ok().body(messageService.removeReceivedMessage(id)) : ResponseEntity.notFound().build();
- }
- @ApiOperation(value = "Search sent messages by phrase")
- @ApiResponses(value = { @ApiResponse(code = 404, message = "No messages found") })
- @GetMapping(value = "/sent/search")
- public
- HttpEntity<List<SentMessageInfoDTO>> searchSentMessage(
- @ApiParam(value = "Search for a phrase", required = true) @RequestParam String q
- ) {
- List<Message> messageList = messageService.findSentMessagesByContaining(authorizationService.getUserId(), q);
- return !messageList.isEmpty() ?
- ResponseEntity.ok().body(converterMessageToSentMessageInfoDTO.convertAll(messageList)) : ResponseEntity.notFound().build();
- }
- @ApiOperation(value = "Search received messages by phrase")
- @ApiResponses(value = { @ApiResponse(code = 404, message = "No messages found") })
- @GetMapping(value = "/received/search")
- public
- HttpEntity<List<ReceivedMessageInfoDTO>> searchReceivedMessage(
- @ApiParam(value = "Search for a phrase", required = true) @RequestParam String q
- ) {
- List<Message> messageList = messageService.findReceivedMessagesByContaining(authorizationService.getUserId(), q);
- return !messageList.isEmpty() ?
- ResponseEntity.ok().body(converterMessageToReceivedMessageInfoDTO.convertAll(messageList)) : ResponseEntity.notFound().build();
- }
- @ApiOperation(value = "Get all sent messages by user ID")
- @ApiResponses(value = { @ApiResponse(code = 404, message = "No messages found") })
- @GetMapping(value = "/sent/list")
- public
- HttpEntity<List<SentMessageInfoDTO>> getSentMessageInfoDTO() {
- List<Message> messageList = messageService.findBySender(authorizationService.getUserId());
- return !messageList.isEmpty() ?
- ResponseEntity.ok().body(converterMessageToSentMessageInfoDTO.convertAll(messageList)) : ResponseEntity.notFound().build();
- }
- @ApiOperation(value = "Get all received messages by user ID")
- @ApiResponses(value = { @ApiResponse(code = 404, message = "No messages found") })
- @GetMapping(value = "/received/list")
- public
- HttpEntity<List<ReceivedMessageInfoDTO>> getReceivedMessageInfoDTO() {
- List<Message> messageList = messageService.findByRecipient(authorizationService.getUserId());
- return !messageList.isEmpty() ?
- ResponseEntity.ok().body(converterMessageToReceivedMessageInfoDTO.convertAll(messageList)) : ResponseEntity.notFound().build();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement