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 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 getManagers() { return managerService.getManagers(); } }