81 lines
3.0 KiB
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();
|
|
}
|
|
}
|