class PushNotificationSubscriptionRequestServiceImpl implements PushNotificationSubscriptionRequestService {

    @Transactional
    @Nonnull
    @Override
    public PushNotificationSubscriptionRequest createPushNotificationSubscriptionRequest(@Nonnull final Long userId, @Nonnull final Long userMobileDeviceId, @Nonnull final PushNotificationSubscriptionRequestDto requestDto) {
        Assert.notNull(userId, "User id should not be null");
        Assert.notNull(userMobileDeviceId, "User device id should not be null");
        assertPushNotificationSubscriptionRequestDto(requestDto);
        LOGGER.debug("Creating push notification subscription request for user with id - {}, user device id - {}, DTO - {}", userId, userMobileDeviceId, requestDto);
        final User user = userService.getUserById(userId);
        final UserDevice userMobileDevice = userMobileDeviceService.getUserDeviceById(userMobileDeviceId);
        assertSubscriptionAndMobileDeviceUsers(user, userMobileDevice);
        // Create push notification subscription request
        PushNotificationSubscriptionRequest request = new PushNotificationSubscriptionRequest(true);
        requestDto.updateDomainEntityProperties(request);
        request.setUser(user);
        request.setUserMobileDevice(userMobileDevice);
        // Persist request
        request = pushNotificationSubscriptionRequestRepository.save(request);
        LOGGER.debug("Successfully created push notification subscription request with id - {}, request - {}", request.getId(), request);
        return request;
    }

    public  PushNotificationSubscriptionRequestServiceImpl();

}