package com.sybit.education.taschengeldboerse.service;
import com.sybit.education.taschengeldboerse.domain.Anbieter;
import com.sybit.education.taschengeldboerse.domain.Schueler;
import com.sybit.education.taschengeldboerse.domain.User;
import com.sybit.education.taschengeldboerse.repository.AnbieterRepository;
import com.sybit.education.taschengeldboerse.repository.SchuelerRepository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
import com.sybit.education.taschengeldboerse.repository.UserRepository;
/**
* Service für die Benutzerverwaltung.
*/
@Service
public class UserServiceImpl implements UserService {
private static final Logger logger = LoggerFactory.getLogger(UserServiceImpl.class);
@Autowired
private UserRepository userRepository;
@Autowired
private SchuelerRepository schuelerRepository;
@Autowired
private AnbieterRepository anbieterRepository;
@Override
public List<User> getAllUser() {
return userRepository.findAll();
}
/**
* Benutzer anhand der E-Mail suchen und laden.
*
* @param email
* @return unique user
*/
@Override
public User getUserByEmail(String email) {
List<User> users = userRepository.findByEmail(email);
if (users.size() > 0) {
return users.get(0);
} else {
return null;
}
}
/**
* Neuen Benutzer speichern.
*
* @param user
*/
@Override
public User addUser(User user) {
if (getUserByEmail(user.getEmail()) != null) {
throw new IllegalArgumentException("E-Mail already in use!");
}
if (user.getAuthority() == null) {
user.setAuthority("unknown");
user.setEnabled(false);
}
userRepository.save(user);
return user;
}
@Override
public User updateAuthority(User user) {
if (user.getEmail() == null) {
throw new IllegalArgumentException("E-Mail muss gesetzt sein!");
}
User currentUser = getUserByEmail(user.getEmail());
currentUser.setAuthority(user.getAuthority());
userRepository.save(currentUser);
return currentUser;
}
@Override
public Schueler saveSchueler(Schueler schueler) {
schueler = schuelerRepository.save(schueler);
//jetzt benutzer aktivieren, wenn alles geklappt hat
User user = getUserByEmail(schueler.getEmail());
user.setEnabled(true);
userRepository.save(user);
return schueler;
}
@Override
public Anbieter saveAnbieter(Anbieter anbieter) {
anbieter = anbieterRepository.save(anbieter);
//jetzt benutzer aktivieren, wenn alles geklappt hat
User user = getUserByEmail(anbieter.getEmail());
user.setEnabled(true);
userRepository.save(user);
return anbieter;
}
}