seminar/src/main/java/ru/ulstu/admin/service/AdminAspirantService.java

81 lines
3.0 KiB
Java

package ru.ulstu.admin.service;
import org.springframework.stereotype.Service;
import ru.ulstu.admin.model.AspirantForm;
import ru.ulstu.aspirant.model.Aspirant;
import ru.ulstu.aspirant.service.AspirantService;
import ru.ulstu.manager.model.Manager;
import ru.ulstu.manager.service.ManagerService;
import ru.ulstu.model.User;
import ru.ulstu.model.UserRole;
import ru.ulstu.model.UserRoleConstants;
import ru.ulstu.user.UserRoleRepository;
import ru.ulstu.user.UserService;
import java.util.List;
@Service
public class AdminAspirantService {
private final AspirantService aspirantService;
private final ManagerService managerService;
private final UserService userService;
private final UserRoleRepository userRoleRepository;
public AdminAspirantService(AspirantService aspirantService,
ManagerService managerService,
UserService userService,
UserRoleRepository userRoleRepository) {
this.aspirantService = aspirantService;
this.managerService = managerService;
this.userService = userService;
this.userRoleRepository = userRoleRepository;
}
public List<Aspirant> getAspirants() {
return aspirantService.getAspirants();
}
public Aspirant getAspirantById(Integer id) {
return aspirantService.getAspirantById(id);
}
public void saveAspirant(AspirantForm aspirantForm) {
Aspirant aspirant = aspirantForm.getId() == null
? new Aspirant()
: aspirantService.getAspirantById(aspirantForm.getId());
aspirant.setName(aspirantForm.getName());
aspirant.setSurname(aspirantForm.getSurname());
aspirant.setPatronymic(aspirantForm.getPatronymic());
aspirant.setBase(aspirantForm.getBase());
aspirant.setCourse(aspirantForm.getCourse());
aspirant.setManager(managerService.getManagerById(aspirantForm.getManagerId()));
aspirant.setBirthDate(aspirantForm.getBirthDate());
aspirant.setSpeciality(aspirantForm.getSpeciality());
aspirant.setTheme(aspirantForm.getTheme());
User user;
if (aspirantForm.getUserId() != null) {
user = userService.getUserById(aspirantForm.getUserId());
if (!user.getLogin().equals(aspirantForm.getEmail())) {
user.setLogin(aspirantForm.getEmail());
if (user.getRoles().stream().anyMatch(r -> !r.getName().equals(UserRoleConstants.ASPIRANT))) {
user.getRoles().add(userRoleRepository.save(new UserRole(UserRoleConstants.ASPIRANT)));
}
userService.createUser(user);
}
} else {
user = userService.createAspirant(aspirantForm.getEmail());
}
aspirant.setUser(user);
aspirantService.save(aspirant);
}
public void deleteAspirant(AspirantForm aspirantForm) {
aspirantService.deleteAspirant(aspirantForm);
}
public List<Manager> getManagers() {
return managerService.getManagers();
}
}