class UserController {

    @ApiOperation(value = "Save user profile information")
    @ApiResponses(value = {
            @ApiResponse(code = 201, message = HttpStatuses.CREATED,
                    response = UserProfileDtoResponse.class),
            @ApiResponse(code = 303, message = HttpStatuses.SEE_OTHER),
            @ApiResponse(code = 403, message = HttpStatuses.FORBIDDEN),
    })
    @PutMapping(path = "/profile", consumes = {MediaType.APPLICATION_JSON_UTF8_VALUE,
        MediaType.MULTIPART_FORM_DATA_VALUE})
    public ResponseEntity<UserProfileDtoResponse> save(
            @ApiParam(value = "User Profile Request", required = true)
            @RequestPart UserProfileDtoRequest userProfileDtoRequest,
            @ApiParam(value = "User Profile Image")
            @ImageValidation
            @RequestPart(required = false) MultipartFile image,
            @ApiIgnore Principal principal) {
        return ResponseEntity.status(HttpStatus.CREATED).body(
                userService.saveUserProfile(userProfileDtoRequest, image, principal.getName()));
    }

}