package org.dicadeveloper.weplantaforest.admin.slider;
import java.io.IOException;
import javax.transaction.Transactional;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.dicadeveloper.weplantaforest.admin.FileSystemInjector;
import org.dicadeveloper.weplantaforest.common.image.ImageHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
@Service
@RequiredArgsConstructor(onConstructor = @__(@Autowired) )
public class MainSliderImageService {
protected final Log LOG = LogFactory.getLog(MainSliderImageService.class.getName());
private @NonNull ImageHelper _imageHelper;
private @NonNull MainSliderImageRepository _mainSliderImageRepository;
public ResponseEntity<?> saveMainSliderImageEntity(MainSliderImage image) {
try {
image = _mainSliderImageRepository.save(image);
return new ResponseEntity<>(image.getImageId(), HttpStatus.OK);
} catch (Exception e) {
return new ResponseEntity<>(e, HttpStatus.INTERNAL_SERVER_ERROR);
}
}
@Transactional
public ResponseEntity<?> uploadImageFile(Long imageId, MultipartFile file) {
MainSliderImage image = _mainSliderImageRepository.findOne(imageId);
String imageFolder = FileSystemInjector.getMainImageFolder();
String imageName;
if (image.getImageFileName() != null) {
imageName = image.getImageFileName();
} else {
imageName = "image_" + image.getImageId() + ".jpg";
}
if (!file.isEmpty()) {
try {
imageName = _imageHelper.storeImage(file, imageFolder, imageName, true);
image.setImageFileName(imageName);
image = _mainSliderImageRepository.save(image);
return new ResponseEntity<>(image, HttpStatus.OK);
} catch (IOException e) {
return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
}
} else {
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
}
}
public ResponseEntity<?> deleteImage(Long imageId) {
try {
MainSliderImage mainSliderImage = _mainSliderImageRepository.findOne(imageId);
String imageFolder = FileSystemInjector.getMainImageFolder();
String imageName = mainSliderImage.getImageFileName();
_imageHelper.deleteImage(imageFolder, imageName);
_mainSliderImageRepository.delete(imageId);
return new ResponseEntity<>(HttpStatus.OK);
} catch (Exception e) {
return new ResponseEntity<>(e, HttpStatus.INTERNAL_SERVER_ERROR);
}
}
}