Commit 490fd3b0 authored by Muhammad Suleman's avatar Muhammad Suleman

Added Upload Marks Feature

parent f5443341
...@@ -31,16 +31,12 @@ public class TeacherController { ...@@ -31,16 +31,12 @@ public class TeacherController {
@PostMapping("/upload/marks") @PostMapping("/upload/marks")
public void addAssessment(@RequestBody AddAssessmentDTO addAssessmentDTO){ public void addAssessment(@RequestBody AddAssessmentDTO addAssessmentDTO){
uploadMarksService.setAssessment(addAssessmentDTO).getAssessmentId(); uploadMarksService.setAssessment(addAssessmentDTO);
} }
@PostMapping("/upload/marks/section") @PostMapping("/upload/marks/assessments")
public void addSectionInAssessment(@RequestBody AddSectionDTO addSectionDTO) { public void addMarks(@RequestBody UploadMarksDTO uploadMarksDTO){
uploadMarksService.setSection(addSectionDTO); uploadMarksService.setObtainedMarks(uploadMarksDTO);
} }
@PostMapping("/upload/marks/section/assessment")
public void setStudentMarks(@RequestBody UploadMarksDTO uploadMarksDTO) {
uploadMarksService.setMarks(uploadMarksDTO);
}
} }
...@@ -3,13 +3,11 @@ package com.school.project.dto.teacher; ...@@ -3,13 +3,11 @@ package com.school.project.dto.teacher;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.nio.file.LinkOption;
@Getter @Getter
@Setter @Setter
public class AddSectionDTO { public class ObtainedMarksDTO {
private String studentRollNumber;
private Long obtainedMarks;
private Long assessmentId;
private Long totalMarks;
private Long totalWeightage;
} }
package com.school.project.dto.teacher;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
@Getter
@Setter
public class SectionsDTO {
private Long sectionId;
private Long marks;
private Long weightage;
private List<ObtainedMarksDTO> obtainedMarksDTOS;
}
package com.school.project.dto.teacher; package com.school.project.dto.teacher;
import com.school.project.model.marks.Section;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
...@@ -11,8 +12,7 @@ import java.util.Set; ...@@ -11,8 +12,7 @@ import java.util.Set;
@Setter @Setter
public class UploadMarksDTO { public class UploadMarksDTO {
private Long sectionId; private Long assessmentId;
private List<String> studentRollNumbers; private List<SectionsDTO> sectionsList;
private List<Long> obtainedMarks;
} }
package com.school.project.mapper;
import com.school.project.model.marks.Assessment;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
@Component
public class AssessmentToListOfAssessment {
public List<Assessment> modelToList(Assessment assessment) {
List<Assessment> assessmentList = new ArrayList<>();
assessmentList.add(assessment);
return assessmentList;
}
}
...@@ -40,7 +40,10 @@ public class Course { ...@@ -40,7 +40,10 @@ public class Course {
@JsonIgnore @JsonIgnore
private Set<Teacher> teacherList; private Set<Teacher> teacherList;
@OneToMany(mappedBy = "course",cascade = CascadeType.ALL,fetch = FetchType.LAZY) @OneToMany(fetch = FetchType.LAZY)
@JsonIgnore @JoinTable(name = "courses_assessments",
private List<Assessment> assessment; joinColumns = {@JoinColumn(name = "course_id",insertable = false,updatable = false)},
inverseJoinColumns = {@JoinColumn(name = "assessment_id",insertable = false,updatable = false)})
private List<Assessment> assessments;
} }
...@@ -55,9 +55,11 @@ public class Student { ...@@ -55,9 +55,11 @@ public class Student {
@JsonIgnore @JsonIgnore
private User studentAppUser; private User studentAppUser;
@OneToMany(mappedBy = "student",cascade = CascadeType.ALL,fetch = FetchType.LAZY) @OneToMany(fetch = FetchType.LAZY)
@JoinTable(name = "student_obtained_marks",
joinColumns = {@JoinColumn(name = "student_id",insertable = false,updatable = false)},
inverseJoinColumns = {@JoinColumn(name = "student_marks_id",insertable = false,updatable = false)})
@JsonIgnore @JsonIgnore
private List<StudentMarks> studentMarks; private Set<StudentMarks> studentMarks;
} }
...@@ -6,11 +6,9 @@ import com.school.project.model.Course; ...@@ -6,11 +6,9 @@ import com.school.project.model.Course;
import com.sun.istack.NotNull; import com.sun.istack.NotNull;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity;
import javax.persistence.*; import javax.persistence.*;
import java.util.List; import java.util.List;
import java.util.Set;
@Getter @Getter
@Setter @Setter
...@@ -29,15 +27,18 @@ public class Assessment { ...@@ -29,15 +27,18 @@ public class Assessment {
private AssessmentType assessmentType; private AssessmentType assessmentType;
@ManyToOne(fetch = FetchType.LAZY) @ManyToOne(fetch = FetchType.LAZY)
@JoinTable(name = "course_assessments", @JoinTable(name = "courses_assessments",
joinColumns = {@JoinColumn(name = "assessment_id")}, joinColumns = {@JoinColumn(name = "assessment_id")},
inverseJoinColumns = {@JoinColumn(name = "course_id")}) inverseJoinColumns = {@JoinColumn(name = "course_id")})
@NotNull @NotNull
@JsonIgnore @JsonIgnore
private Course course; private Course course;
@OneToMany(fetch = FetchType.LAZY)
@OneToMany(mappedBy = "assessment",fetch = FetchType.LAZY) @JoinTable(name = "assessment_sections",
joinColumns = {@JoinColumn(name = "assessment_id",insertable = false,updatable = false)},
inverseJoinColumns = {@JoinColumn(name = "section_id",insertable = false,updatable = false)})
@JsonIgnore @JsonIgnore
private List<Section> section; private List<Section> section;
} }
...@@ -6,6 +6,7 @@ import lombok.Getter; ...@@ -6,6 +6,7 @@ import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import javax.persistence.*; import javax.persistence.*;
import java.util.List;
import java.util.Set; import java.util.Set;
@Getter @Getter
...@@ -31,12 +32,17 @@ public class Section { ...@@ -31,12 +32,17 @@ public class Section {
@JoinTable(name = "assessment_sections", @JoinTable(name = "assessment_sections",
joinColumns = {@JoinColumn(name = "section_id")}, joinColumns = {@JoinColumn(name = "section_id")},
inverseJoinColumns = {@JoinColumn(name = "assessment_id")}) inverseJoinColumns = {@JoinColumn(name = "assessment_id")})
@NotNull
@JsonIgnore @JsonIgnore
private Assessment assessment; private Assessment assessment;
@OneToMany(mappedBy = "section",cascade = CascadeType.ALL,fetch = FetchType.LAZY) @OneToMany(fetch = FetchType.LAZY)
@JoinTable(name = "student_marks_section",
joinColumns = {@JoinColumn(name = "section_id",insertable = false,updatable = false)},
inverseJoinColumns = {@JoinColumn(name = "student_marks_id",insertable = false,updatable = false)})
@JsonIgnore @JsonIgnore
private Set<StudentMarks> studentMarks; private List<StudentMarks> studentMarks;
} }
...@@ -21,13 +21,17 @@ public class StudentMarks { ...@@ -21,13 +21,17 @@ public class StudentMarks {
@Column(name = "obtained_marks") @Column(name = "obtained_marks")
private Long obtainedMarks; private Long obtainedMarks;
@ManyToOne(fetch = FetchType.LAZY,cascade = CascadeType.ALL) @ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "student_id") @JoinTable(name = "student_obtained_marks",
joinColumns = {@JoinColumn(name = "student_marks_id")},
inverseJoinColumns = {@JoinColumn(name = "student_id")})
@NotNull @NotNull
private Student student; private Student student;
@ManyToOne(fetch = FetchType.LAZY,cascade = CascadeType.ALL) @ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "section_id") @JoinTable(name = "student_marks_section",
joinColumns = {@JoinColumn(name = "student_marks_id")},
inverseJoinColumns = {@JoinColumn(name = "section_id")})
@NotNull @NotNull
private Section section; private Section section;
} }
...@@ -4,4 +4,5 @@ import com.school.project.model.marks.Section; ...@@ -4,4 +4,5 @@ import com.school.project.model.marks.Section;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
public interface SectionRepository extends JpaRepository<Section,Long> { public interface SectionRepository extends JpaRepository<Section,Long> {
} }
package com.school.project.service.teacher; package com.school.project.service.teacher;
import com.school.project.dto.teacher.AddAssessmentDTO; import com.school.project.dto.teacher.AddAssessmentDTO;
import com.school.project.dto.teacher.AddSectionDTO; import com.school.project.dto.teacher.ObtainedMarksDTO;
import com.school.project.dto.teacher.UploadMarksDTO; import com.school.project.dto.teacher.UploadMarksDTO;
import com.school.project.model.marks.Assessment; import com.school.project.model.marks.Assessment;
import com.school.project.model.marks.Section; import com.school.project.model.marks.Section;
import com.school.project.model.marks.StudentMarks;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@Service @Service
public interface UploadMarksService { public interface UploadMarksService {
Assessment setAssessment(AddAssessmentDTO assessmentDTO); void setAssessment(AddAssessmentDTO assessmentDTO);
Section setSection(AddSectionDTO sectionDTO); void setObtainedMarks(UploadMarksDTO uploadMarksDTO);
void setMarks(UploadMarksDTO marksDTO);
} }
package com.school.project.service.teacher; package com.school.project.service.teacher;
import com.school.project.dto.teacher.AddAssessmentDTO; import com.school.project.dto.teacher.AddAssessmentDTO;
import com.school.project.dto.teacher.AddSectionDTO;
import com.school.project.dto.teacher.UploadMarksDTO; import com.school.project.dto.teacher.UploadMarksDTO;
import com.school.project.mapper.MarksToListOfMarks; import com.school.project.mapper.AssessmentToListOfAssessment;
import com.school.project.mapper.SectionToListOfSectionMapper; import com.school.project.model.Course;
import com.school.project.model.Student;
import com.school.project.model.marks.Assessment; import com.school.project.model.marks.Assessment;
import com.school.project.model.marks.Section; import com.school.project.model.marks.Section;
import com.school.project.model.marks.StudentMarks; import com.school.project.model.marks.StudentMarks;
...@@ -15,7 +15,6 @@ import com.school.project.repository.marks.AssessmentTypeRepository; ...@@ -15,7 +15,6 @@ import com.school.project.repository.marks.AssessmentTypeRepository;
import com.school.project.repository.marks.SectionRepository; import com.school.project.repository.marks.SectionRepository;
import com.school.project.repository.marks.StudentMarksRepository; import com.school.project.repository.marks.StudentMarksRepository;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.transaction.Transactional; import javax.transaction.Transactional;
...@@ -25,6 +24,10 @@ public class UploadMarksServiceImpl implements UploadMarksService { ...@@ -25,6 +24,10 @@ public class UploadMarksServiceImpl implements UploadMarksService {
@Autowired @Autowired
CourseRepository courseRepository; CourseRepository courseRepository;
@Autowired
StudentRepository studentRepository;
@Autowired @Autowired
AssessmentTypeRepository assessmentTypeRepository; AssessmentTypeRepository assessmentTypeRepository;
...@@ -35,84 +38,58 @@ public class UploadMarksServiceImpl implements UploadMarksService { ...@@ -35,84 +38,58 @@ public class UploadMarksServiceImpl implements UploadMarksService {
SectionRepository sectionRepository; SectionRepository sectionRepository;
@Autowired @Autowired
StudentRepository studentRepository; StudentMarksRepository studentMarksRepository;
@Autowired
SectionToListOfSectionMapper sectionMapper;
@Autowired @Autowired
MarksToListOfMarks marksMapper; AssessmentToListOfAssessment assessmentMapper;
@Autowired
StudentMarksRepository studentMarksRepository;
@Override @Override
@Transactional @Transactional
public Assessment setAssessment(AddAssessmentDTO assessmentDTO) { public void setAssessment(AddAssessmentDTO assessmentDTO) {
Assessment assessment = new Assessment(); Assessment assessment = new Assessment();
assessment.setAssessmentType(assessmentTypeRepository.findByAssessmentTypeName( Course course = courseRepository.findByCourseCode(assessmentDTO.getCourseCode());
assessmentDTO.getAssessment()));
assessment.setAssessmentType(assessmentTypeRepository.findByAssessmentTypeName(assessmentDTO.getAssessment()));
assessment.setCourse(courseRepository.findByCourseCode( assessment.setCourse(course);
assessmentDTO.getCourseCode()));
return assessmentRepository.save(assessment); assessmentRepository.save(assessment);
} }
@Override @Override
@Transactional @Transactional
@Modifying public void setObtainedMarks(UploadMarksDTO uploadMarksDTO) {
public Section setSection(AddSectionDTO sectionDTO) {
Section section = new Section();
section.setAssessment(assessmentRepository.findByAssessmentId(sectionDTO.getAssessmentId())); Assessment assessment = assessmentRepository.findByAssessmentId(uploadMarksDTO.getAssessmentId());
section.setTotalMarks(sectionDTO.getTotalMarks());
section.setTotalWeightage(sectionDTO.getTotalWeightage());
section = sectionRepository.save(section); uploadMarksDTO.getSectionsList().forEach(sectionInList -> {
Assessment assessment = assessmentRepository.findByAssessmentId(sectionDTO.getAssessmentId()); Section newSection = new Section();
assessment.setSection(sectionMapper.modelToList(section));
return section; newSection.setTotalMarks(sectionInList.getMarks());
} newSection.setTotalWeightage(sectionInList.getWeightage());
newSection.setAssessment(assessment);
@Override Section section = sectionRepository.save(newSection);
@Transactional
public void setMarks(UploadMarksDTO marksDTO) {
int marksSize = marksDTO.getObtainedMarks().size();
Section section = sectionRepository.findById(marksDTO.getSectionId()).get();
/* List<Student> studentsSet = new ArrayList<>(); sectionInList.getObtainedMarksDTOS().forEach(obtainedMarksInList -> {
List<Long> studentObtainedMarks = marksDTO.getObtainedMarks();
studentRollNumbers.forEach(studentRollNumber -> studentsSet.add(studentRepository.findByRollNumber(studentRollNumber)));
studentsSet.forEach(student -> { Student student = studentRepository.findByRollNumber(obtainedMarksInList.getStudentRollNumber());
StudentMarks studentMarks = new StudentMarks();
studentMarks.setStudent(student); StudentMarks studentMarks = new StudentMarks();
studentMarks.setSection(section);
studentMarks =studentMarksRepository.save(studentMarks);
student.setStudentMarks(studentMarks);
});*/git
for (int i = 0; i<marksDTO.getStudentRollNumbers().size() ;i++) { studentMarks.setObtainedMarks(obtainedMarksInList.getObtainedMarks());
StudentMarks studentMarks = new StudentMarks(); studentMarks.setStudent(student);
studentMarks.setSection(section);
studentMarks.setSection(section); studentMarksRepository.save(studentMarks);
studentMarks.setStudent(studentRepository.findByRollNumber(marksDTO.getStudentRollNumbers().get(i)));
if( i < marksDTO.getObtainedMarks().size() ) { });
studentMarks.setObtainedMarks(marksDTO.getObtainedMarks().get(i));
} else {
studentMarks.setObtainedMarks(0l);
}
studentMarksRepository.save(studentMarks); }
} );
} }
} }
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
spring.jpa.hibernate.ddl-auto=update spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mysql://localhost:3306/school-portal spring.datasource.url=jdbc:mysql://localhost:3306/school-portal
spring.datasource.username=root spring.datasource.username=root
spring.datasource.password=root spring.datasource.password=charlie123
spring.security.user.name= sulemantalpur6@gmail.com spring.security.user.name= sulemantalpur6@gmail.com
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment