/**
*
*/
package qa.qcri.aidr.manager.service.impl;
import java.util.List;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import qa.qcri.aidr.manager.persistence.entities.Collection;
import qa.qcri.aidr.manager.persistence.entities.CollectionCollaborator;
import qa.qcri.aidr.manager.persistence.entities.UserAccount;
import qa.qcri.aidr.manager.repository.CollectionCollaboratorRepository;
import qa.qcri.aidr.manager.service.CollectionCollaboratorService;
import qa.qcri.aidr.manager.service.CollectionService;
import qa.qcri.aidr.manager.service.UserService;
/**
* @author Latika
*
*/
@Service
public class CollectionCollaboratorServiceImpl implements CollectionCollaboratorService {
private Logger logger = Logger.getLogger(CollectionCollaboratorServiceImpl.class);
@Autowired
private CollectionCollaboratorRepository collaboratorRepository;
@Autowired
private UserService userService;
@Autowired
private CollectionService collectionService;
@Override
public List<UserAccount> fetchCollaboratorsByCollection(Long collectionId) {
return collaboratorRepository.getCollaboratorsByCollection(collectionId);
}
@Override
@Transactional(readOnly = false)
public boolean addCollaboratorToCollection(String collectionCode, Long userId) throws Exception {
try {
Collection collection = collectionService.findByCode(collectionCode);
CollectionCollaborator collaborator = collaboratorRepository.findByCollaboratorIdAndCollectionId(userId, collection.getId());
if(collaborator == null) {
CollectionCollaborator collectionCollaborator = new CollectionCollaborator();
collectionCollaborator.setAccount(userService.getById(userId));
collectionCollaborator.setCollection(collection);
collaboratorRepository.save(collectionCollaborator);
return true;
}
} catch (Exception e) {
logger.error("Error in adding collaborator to collection", e);
throw e;
}
return false;
}
@Override
@Transactional(readOnly = false)
public boolean removeCollaboratorFromCollection(Long collectionId, Long userId) throws Exception {
try {
if(collectionId != null) {
CollectionCollaborator collaborator = collaboratorRepository.findByCollaboratorIdAndCollectionId(userId, collectionId);
if(collaborator != null) {
collaboratorRepository.delete(collaborator);
}
return true;
}
} catch (Exception e) {
logger.error("Error in adding collaborator to collection", e);
throw e;
}
return false;
}
@Override
public List<Collection> fetchCollectionsByCollaborator(Long userId, Integer start, Integer limit, boolean trashed) {
return collaboratorRepository.getCollectionByCollaborator(userId, start, limit, trashed);
}
}