Skip to content

Commit

Permalink
functionalities clear
Browse files Browse the repository at this point in the history
  • Loading branch information
NicoleNG18 committed Apr 16, 2024
1 parent fbeff57 commit 0ae2309
Show file tree
Hide file tree
Showing 17 changed files with 211 additions and 114 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,31 +9,41 @@

public class ClassEditBindingDto {

@NotEmpty(message = CLASS_NAME_REQUIRED)
private String className;

@Positive
@NotNull(message = CLASS_NUM_REQUIRED)
private int classNum;

// @NotEmpty(message = CLASS_NAME_REQUIRED)
// private String className;
//
// @Positive
// @NotNull(message = CLASS_NUM_REQUIRED)
// private int classNum;

private String teacher;
public ClassEditBindingDto() {
}

public String getClassName() {
return className;
}

public ClassEditBindingDto setClassName(String className) {
this.className = className;
return this;
}

public int getClassNum() {
return classNum;
public String getTeacher() {
return teacher;
}

public ClassEditBindingDto setClassNum(int classNum) {
this.classNum = classNum;
public ClassEditBindingDto setTeacher(String teacher) {
this.teacher = teacher;
return this;
}
//
// public String getClassName() {
// return className;
// }
//
// public ClassEditBindingDto setClassName(String className) {
// this.className = className;
// return this;
// }
//
// public int getClassNum() {
// return classNum;
// }
//
// public ClassEditBindingDto setClassNum(int classNum) {
// this.classNum = classNum;
// return this;
// }
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ public class UserRegistrationBindingDto {
@ValidEmail
@UniqueUserEmail(message = EMAIL_UNIQUE)
private String email;
@ValidSchool

private String school;
@ValidPassword
private String password;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package pmgkn.pescores.pescores.domain.dto.view;

import pmgkn.pescores.pescores.domain.entity.SchoolEntity;
import pmgkn.pescores.pescores.domain.entity.StudentEntity;
import pmgkn.pescores.pescores.domain.entity.UserEntity;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public class ClassEntity extends BaseEntity {
@OneToMany(cascade = CascadeType.ALL)
private List<StudentEntity> students;

@ManyToOne(cascade = CascadeType.ALL)
@ManyToOne
private UserEntity teacher;

@ManyToOne
Expand Down
35 changes: 30 additions & 5 deletions src/main/java/pmgkn/pescores/pescores/service/ClassesService.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import pmgkn.pescores.pescores.domain.dto.binding.ClassAddBindingDto;
import pmgkn.pescores.pescores.domain.dto.binding.ClassEditBindingDto;
import pmgkn.pescores.pescores.domain.dto.view.ClassViewDto;
import pmgkn.pescores.pescores.domain.dto.view.StudentViewDto;
import pmgkn.pescores.pescores.domain.entity.ClassEntity;
Expand Down Expand Up @@ -120,6 +121,7 @@ public ClassViewDto getClassById(UUID id) {
.setClassName(referenceById.getClassName())
.setClassNum(referenceById.getClassNum())
.setId(referenceById.getId())
.setTeacher(referenceById.getTeacher())
.setStudents(referenceById.getStudents());
}

Expand All @@ -140,27 +142,50 @@ public ClassEntity getClassEntityByNameAndTeacher(String className,
return this.classRepository.findByClassNameAndTeacher(className, teacherEntity);
}

@Transactional
public ClassEntity getClassEntityByLoggedUserAndName(String loggedUser, String className){

return this.userService.getUserByEmail(loggedUser).getSchool().getClasses().stream().filter(c->c.getClassName().equals(className)).findFirst().get();
}

public void editClass(UUID id,
ClassAddBindingDto classEdit) {
ClassEditBindingDto classEdit) {

ClassEntity classEntity = this.classRepository.findClassById(id);
UserEntity currentTeacher = classEntity.getTeacher();
currentTeacher.getClasses().remove(classEntity);
this.userService.saveTeacher(currentTeacher);

UserEntity newTeacher = this.userService.getUserByEmail(classEdit.getTeacher());
this.userService.setClassToTeacher(classEntity,newTeacher.getEmail());

classEntity
.setClassName(classEdit.getClassName())
.setClassNum(classEdit.getClassNum());
// .setClassName(classEdit.getClassName())
// .setClassNum(classEdit.getClassNum())
.setTeacher(newTeacher);

this.classRepository.saveAndFlush(classEntity);
}

public void deleteClass(UUID id) {

ClassEntity classEntity = this.classRepository.findClassById(id);
UserEntity currentTeacher = classEntity.getTeacher();
currentTeacher.getClasses().remove(classEntity);
this.userService.saveTeacher(currentTeacher);

SchoolEntity school = classEntity.getSchool();
school.getClasses().remove(classEntity);
this.schoolService.saveSchoolToRepository(school);

this.classRepository.deleteById(id);
}

public void addStudent(StudentEntity studentToSave,
String className,
String teacherName) {
String loggedUser) {

ClassEntity classEntity = this.getClassEntityByNameAndTeacher(className, teacherName);
ClassEntity classEntity = this.getClassEntityByLoggedUserAndName(loggedUser,className);
classEntity.addStudent(studentToSave);

this.classRepository.saveAndFlush(classEntity);
Expand Down
28 changes: 27 additions & 1 deletion src/main/java/pmgkn/pescores/pescores/service/SchoolService.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,13 @@

import org.modelmapper.ModelMapper;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import pmgkn.pescores.pescores.domain.dto.binding.SchoolAddBindingDto;
import pmgkn.pescores.pescores.domain.dto.view.SchoolViewDto;
import pmgkn.pescores.pescores.domain.entity.ClassEntity;
import pmgkn.pescores.pescores.domain.entity.SchoolEntity;
import pmgkn.pescores.pescores.domain.entity.UserEntity;
import pmgkn.pescores.pescores.repositories.ClassRepository;
import pmgkn.pescores.pescores.repositories.SchoolRepository;

import java.util.List;
Expand All @@ -19,10 +21,15 @@ public class SchoolService {
private final SchoolRepository schoolRepository;
private final ModelMapper modelMapper;

private final ClassRepository classRepository;


public SchoolService(SchoolRepository schoolRepository,
ModelMapper modelMapper) {
ModelMapper modelMapper,
ClassRepository classRepository) {
this.schoolRepository = schoolRepository;
this.modelMapper = modelMapper;
this.classRepository = classRepository;
}

public void saveSchool(SchoolAddBindingDto schoolAddBindingDto) {
Expand Down Expand Up @@ -65,4 +72,23 @@ public void addClassToSchool(SchoolEntity schoolByTeacher,
schoolByTeacher.getClasses().add(classToSave);
this.schoolRepository.saveAndFlush(schoolByTeacher);
}

public void saveSchoolToRepository(SchoolEntity school) {
this.schoolRepository.saveAndFlush(school);
}


public void deleteSchool(UUID id) {

// SchoolEntity schoolEntity = this.schoolRepository.findById(id).get();
// for (ClassEntity classEntity :schoolEntity.getClasses()){
// this.classRepository.deleteById(id);
// }

this.schoolRepository.deleteById(id);
}

public SchoolEntity findSchoolByName(String s) {
return this.schoolRepository.findBySchoolName(s).get();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -58,23 +58,23 @@ public StudentsService(ModelMapper modelMapper,
this.tTestRepository = tTestRepository;
}

public UUID saveStudent(String name,
public UUID saveStudent(String loggedUser,
StudentAddBindingDto studentAddBindingDto) {

StudentEntity studentToSave = mapToStudentEntity(studentAddBindingDto, name);
StudentEntity studentToSave = mapToStudentEntity(studentAddBindingDto, loggedUser);

this.studentRepository.saveAndFlush(studentToSave);

this.classesService.addStudent(studentToSave, studentAddBindingDto.getStudentClass(), name);
this.classesService.addStudent(studentToSave, studentAddBindingDto.getStudentClass(), loggedUser);

return this.classesService.getClassById(studentToSave.getStudentClass().getId()).getId();
}

private StudentEntity mapToStudentEntity(StudentAddBindingDto studentAddBindingDto,
String name) {
String loggedUser) {
return this.modelMapper.map(studentAddBindingDto, StudentEntity.class)
.setTeacher(this.userService.getUserByEmail(name))
.setStudentClass(this.classesService.getClassEntityByNameAndTeacher(studentAddBindingDto.getStudentClass(), name));
.setTeacher(this.userService.getUserByEmail(loggedUser))
.setStudentClass(this.classesService.getClassEntityByLoggedUserAndName(loggedUser,studentAddBindingDto.getStudentClass()));
}

public UUID editStudent(StudentUpdateBindingDto studentUpdate,
Expand Down Expand Up @@ -170,10 +170,10 @@ private static int getCount(StudentEntity studentEntity) {
}

public boolean checkIfClassNumRepeats(String studentClass,
String teacher,
String loggedUser,
Integer studentNumber) {

ClassEntity classEntityByNameAndTeacher = this.classesService.getClassEntityByNameAndTeacher(studentClass, teacher);
ClassEntity classEntityByNameAndTeacher=this.classesService.getClassEntityByLoggedUserAndName(loggedUser,studentClass);

List<Integer> collect = classEntityByNameAndTeacher.
getStudents()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -135,4 +135,8 @@ public List<ClassEntity> getSchoolClassesByAdmin(String principal) {
public SchoolEntity getSchoolByTeacher(String teacherName) {
return this.userRepository.findByEmail(teacherName).getSchool();
}

public void saveTeacher(UserEntity currentTeacher) {
this.userRepository.saveAndFlush(currentTeacher);
}
}
49 changes: 23 additions & 26 deletions src/main/java/pmgkn/pescores/pescores/web/ClassesController.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@
import pmgkn.pescores.pescores.domain.dto.binding.ClassAddBindingDto;
import pmgkn.pescores.pescores.domain.dto.binding.ClassEditBindingDto;
import pmgkn.pescores.pescores.domain.dto.binding.StudentUpdateBindingDto;
import pmgkn.pescores.pescores.domain.dto.view.ClassViewDto;
import pmgkn.pescores.pescores.domain.entity.ClassEntity;
import pmgkn.pescores.pescores.domain.entity.UserEntity;
import pmgkn.pescores.pescores.service.ClassesService;
import pmgkn.pescores.pescores.service.SchoolService;
import pmgkn.pescores.pescores.service.UserService;

import java.security.Principal;
Expand Down Expand Up @@ -53,9 +53,10 @@ public String getClasses(Model model,
}

@GetMapping("/add")
public String getAddClass(Model model,Principal principal) {
public String getAddClass(Model model,
Principal principal) {

model.addAttribute("teachers",this.userService.getTeachers(principal.getName()));
model.addAttribute("teachers", this.userService.getTeachers(principal.getName()));

return "add-class";
}
Expand Down Expand Up @@ -83,19 +84,16 @@ public String postAddClass(@Valid ClassAddBindingDto classAddBindingDto,
return "redirect:/classes/add";
}

UUID classId = this.classesService.saveClass(classAddBindingDto, classAddBindingDto.getTeacher());
UserEntity currentUser = this.userService.getUserByEmail(principal.getName());

return "redirect:/classes/" + currentUser.getId() + "/" + classId;
return "redirect:/classes";
}

@GetMapping("/{idTeacher}/{id}")
public String getCurrentClass(@PathVariable("idTeacher") UUID idTeacher,
@PathVariable("id") UUID id,

@GetMapping("/{id}")
public String getCurrentClass(@PathVariable("id") UUID id,
Model model,
Principal principal) {

if (!this.userService.getUserById(idTeacher).equals(this.userService.getUserByEmail(principal.getName()))) {
if (!this.classesService.getClassById(id).getTeacher().getSchool().getName().equals(this.userService.getUserByEmail(principal.getName()).getSchool().getName())) {
throw new ObjectNotFoundException("the info is not yours", ClassEntity.class);
}

Expand All @@ -108,25 +106,21 @@ public String getCurrentClass(@PathVariable("idTeacher") UUID idTeacher,
return "current-class";
}

@GetMapping("/edit/{idTeacher}/{id}")
public String getEditClass(@PathVariable("idTeacher") UUID idTeacher,
@PathVariable("id") UUID id,
@GetMapping("/edit/{id}")
public String getEditClass(@PathVariable("id") UUID id,
Model model,
Principal principal) {

if (!this.userService.getUserById(idTeacher).equals(this.userService.getUserByEmail(principal.getName()))) {
throw new ObjectNotFoundException("the info is not yours", ClassEntity.class);
}

model.addAttribute("class", this.classesService.getClassById(id));
model.addAttribute("teachers", this.userService.getTeachers(principal.getName()));

return "classes-edit";
}

@PatchMapping("/edited/{id}")
public String editClass(
@PathVariable("id") UUID id,
@Valid ClassAddBindingDto classEdit,
@Valid ClassEditBindingDto classEdit,
BindingResult bindingResult,
RedirectAttributes redirectAttributes,
Principal principal) {
Expand All @@ -137,22 +131,25 @@ public String editClass(
redirectAttributes.addFlashAttribute("org.springframework.validation.BindingResult.classEdit"
, bindingResult);

return "redirect:/classes/edit/{idTeacher}/{id}";
return "redirect:/classes/edit/{id}";
}

this.classesService.editClass(id, classEdit);

UserEntity currentUser = this.userService.getUserByEmail(principal.getName());
// UserEntity currentUser = this.userService.getUserByEmail(principal.getName());

return "redirect:/classes/" + currentUser.getId() + "/" + id;
// return "redirect:/classes/" + currentUser.getId() + "/" + id;
return "redirect:/classes/"+id;
}

@PostMapping("/delete/{idTeacher}/{id}")
public String deleteClass(@PathVariable("idTeacher") UUID idTeacher,
@PathVariable("id") UUID id,
@PostMapping("/delete/{id}")
public String deleteClass(@PathVariable("id") UUID id,
Principal principal) {

if (!this.userService.getUserById(idTeacher).equals(this.userService.getUserByEmail(principal.getName()))) {
ClassViewDto classById = this.classesService.getClassById(id);
UserEntity loggedUser = this.userService.getUserByEmail(principal.getName());

if (!classById.getTeacher().getSchool().equals(loggedUser.getSchool())) {
throw new ObjectNotFoundException("the info is not yours", ClassEntity.class);
}

Expand Down
Loading

0 comments on commit 0ae2309

Please sign in to comment.