class PlaceServiceImpl implements PlaceService {

    @Transactional
    @Override
    public Place save(PlaceAddDto dto, String email) {
        log.info(LogMessage.IN_SAVE, dto.getName(), email);

        proposePlaceService.checkLocationValues(dto.getLocation());
        proposePlaceService.checkInputTime(dto.getOpeningHoursList());

        Place place = modelMapper.map(dto, Place.class);
        setUserToPlaceByEmail(email, place);

        place.setCategory(categoryService.findByName(dto.getCategory().getName()));
        proposePlaceService.saveDiscountValuesWithPlace(place.getDiscountValues(), place);
        proposePlaceService.savePhotosWithPlace(place.getPhotos(), place);

        return placeRepo.save(place);
    }

    @Autowired public  PlaceServiceImpl(PlaceRepo placeRepo,
                            ModelMapper modelMapper,
                            CategoryService categoryService,
                            LocationService locationService,
                            SpecificationService specificationService,
                            UserService userService,
                            OpenHoursService openingHoursService,
                            DiscountService discountService,
                            NotificationService notificationService,
                            @Qualifier(value = "datasourceTimezone") ZoneId datasourceTimezone,
                            RabbitTemplate rabbitTemplate,
                            ProposePlaceServiceImpl proposePlaceService);

}