Skip to content

Commit

Permalink
add teacher wish
Browse files Browse the repository at this point in the history
  • Loading branch information
ttrubinov committed Jun 22, 2024
1 parent 0b4d412 commit 755cac5
Show file tree
Hide file tree
Showing 6 changed files with 55 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

import lombok.RequiredArgsConstructor;
import org.conferatus.timetable.backend.dto.TeacherResponseDTO;
import org.conferatus.timetable.backend.dto.TeacherWishDto;
import org.conferatus.timetable.backend.services.TeacherService;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.DeleteMapping;
Expand Down Expand Up @@ -41,6 +42,14 @@ public ResponseEntity<TeacherResponseDTO> addTeacher(@RequestParam("name") Strin
return ResponseEntity.ok(new TeacherResponseDTO(teacherService.addTeacher(teacherName)));
}

@PostMapping("/wishes")
public ResponseEntity<TeacherResponseDTO> addTeacherWish(
@RequestParam("name") String teacherName,
@RequestParam("teacherWish") TeacherWishDto teacherWish
) {
return ResponseEntity.ok(new TeacherResponseDTO(teacherService.addTeacherWish(teacherName, teacherWish)));
}

@PutMapping
public ResponseEntity<String> updateTeacher(@RequestParam("current") String previousTeacherName,
@RequestParam("new") String newTeacherName) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,24 +1,25 @@
package org.conferatus.timetable.backend.dto;

import java.util.List;

import com.fasterxml.jackson.annotation.JsonProperty;
import org.conferatus.timetable.backend.model.entity.Lesson;
import org.conferatus.timetable.backend.model.entity.Teacher;

import java.util.List;
import java.util.stream.Collectors;
import org.conferatus.timetable.backend.model.entity.TeacherWish;

public record TeacherResponseDTO(
@JsonProperty("id") Long id,
@JsonProperty("name") String name,
// List<SubjectPlanDTO> possibleSubjects,
List<LessonDTO> lessons
List<LessonDTO> lessons,
List<TeacherWishDto> teacherWishDtos
) {
public TeacherResponseDTO(Teacher teacher) {
this(
teacher.getId(),
teacher.getName(),
// teacher.getPossibleSubjects().stream().map(SubjectPlanDTO::new).collect(Collectors.toList()),
teacher.getLessons().stream().map(LessonDTO::new).collect(Collectors.toList())
teacher.getLessons().stream().map(LessonDTO::new).toList(),
teacher.getTeacherWishes().stream().map(TeacherWish::toWishDto).toList()
);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package org.conferatus.timetable.backend.dto;

import java.time.DayOfWeek;

public record TeacherWishDto(
Long id,
DayOfWeek dayOfWeek,
long lessonNumber,
long priority
) {
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,16 @@

import java.time.DayOfWeek;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.ManyToOne;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.conferatus.timetable.backend.dto.TeacherWishDto;

@Entity
@NoArgsConstructor
Expand All @@ -32,4 +31,8 @@ public class TeacherWish {
private long lessonNumber;

private long priority;

public TeacherWishDto toWishDto() {
return new TeacherWishDto(id, dayOfWeek, lessonNumber, priority);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package org.conferatus.timetable.backend.repository;

import org.conferatus.timetable.backend.model.entity.TeacherWish;
import org.springframework.data.jpa.repository.JpaRepository;

public interface TeacherWishRepository extends JpaRepository<TeacherWish, Long> {
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,20 @@
import java.util.List;

import lombok.RequiredArgsConstructor;
import org.conferatus.timetable.backend.dto.TeacherWishDto;
import org.conferatus.timetable.backend.exception.ServerException;
import org.conferatus.timetable.backend.model.entity.Teacher;
import org.conferatus.timetable.backend.model.entity.TeacherWish;
import org.conferatus.timetable.backend.repository.TeacherRepository;
import org.conferatus.timetable.backend.repository.TeacherWishRepository;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;

@Service
@RequiredArgsConstructor
public class TeacherService {
private final TeacherRepository teacherRepository;
private final TeacherWishRepository teacherWishRepository;

public Teacher getTeacherByIdOrThrow(Long id) {
return teacherRepository.findTeacherById(id)
Expand Down Expand Up @@ -70,4 +74,16 @@ public Teacher deleteTeacherOrThrow(String teacherName) {
teacherRepository.delete(teacher);
return teacher;
}

public Teacher addTeacherWish(String teacherName, TeacherWishDto teacherWish) {
var teacher = getTeacherByNameOrThrow(teacherName);
var newTeacherWish = new TeacherWish();
newTeacherWish.setTeacher(teacher);
newTeacherWish.setPriority(teacherWish.priority());
newTeacherWish.setDayOfWeek(teacherWish.dayOfWeek());
newTeacherWish.setLessonNumber(teacherWish.lessonNumber());
newTeacherWish = teacherWishRepository.save(newTeacherWish);
teacher.getTeacherWishes().add(newTeacherWish);
return teacherRepository.save(teacher);
}
}

0 comments on commit 755cac5

Please sign in to comment.