Commit 6c2d7aee authored by Muhammad Suleman's avatar Muhammad Suleman

Added Marks Upload

parent a0ebbfe7
...@@ -8,13 +8,11 @@ import com.school.project.dto.userRegistration.UserRegistrationDTO; ...@@ -8,13 +8,11 @@ import com.school.project.dto.userRegistration.UserRegistrationDTO;
import com.school.project.service.userRegistration.admin.AdminRegistrationService; import com.school.project.service.userRegistration.admin.AdminRegistrationService;
import com.school.project.service.userRegistration.student.StudentRegistrationService; import com.school.project.service.userRegistration.student.StudentRegistrationService;
import com.school.project.service.userRegistration.teacher.TeacherRegistrationService; import com.school.project.service.userRegistration.teacher.TeacherRegistrationService;
import lombok.Getter;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.server.ResponseStatusException; import org.springframework.web.server.ResponseStatusException;
@RestController @RestController
......
package com.school.project.controller; package com.school.project.controller;
import com.school.project.dto.teacher.AddAssessmentDTO;
import com.school.project.dto.teacher.AddSectionDTO;
import com.school.project.dto.teacher.TeacherViewCoursesDTO; import com.school.project.dto.teacher.TeacherViewCoursesDTO;
import com.school.project.dto.teacher.TeacherViewDataDTO; import com.school.project.dto.teacher.TeacherViewDataDTO;
import com.school.project.service.teacher.TeacherServiceImpl; import com.school.project.service.teacher.TeacherServiceImpl;
import com.school.project.service.teacher.UploadMarksServiceImpl;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -15,6 +18,9 @@ public class TeacherController { ...@@ -15,6 +18,9 @@ public class TeacherController {
@Autowired @Autowired
TeacherServiceImpl teacherService; TeacherServiceImpl teacherService;
@Autowired
UploadMarksServiceImpl uploadMarksService;
@GetMapping("") @GetMapping("")
public TeacherViewDataDTO getTeacherData(Principal principal) { public TeacherViewDataDTO getTeacherData(Principal principal) {
...@@ -25,4 +31,14 @@ public class TeacherController { ...@@ -25,4 +31,14 @@ public class TeacherController {
public TeacherViewCoursesDTO getTeacherCourses(Principal principal) { public TeacherViewCoursesDTO getTeacherCourses(Principal principal) {
return teacherService.getTeacherCourses(principal.getName()); return teacherService.getTeacherCourses(principal.getName());
} }
@PostMapping("/upload/marks")
public void addAssessment(@RequestBody AddAssessmentDTO addAssessmentDTO){
uploadMarksService.setAssessment(addAssessmentDTO).getAssessmentId();
}
@PostMapping("/upload/marks/section")
public void addSectionInAssessment(@RequestBody AddSectionDTO addSectionDTO) {
uploadMarksService.setSection(addSectionDTO);
}
} }
package com.school.project.dto.teacher;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class AddAssessmentDTO {
private String courseCode;
private String assessment;
}
package com.school.project.dto.teacher;
import lombok.Getter;
import lombok.Setter;
import java.nio.file.LinkOption;
@Getter
@Setter
public class AddSectionDTO {
private Long assessmentId;
private Long totalMarks;
private Long totalWeightage;
}
package com.school.project.dto.teacher; package com.school.project.dto.teacher;
import com.school.project.model.Course;
import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.Setter; import lombok.Setter;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.Set; import java.util.Set;
......
package com.school.project.mapper;
import com.school.project.model.marks.Section;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
@Component
public class SectionToListOfSectionMapper {
public List<Section> modelToList(Section section) {
List<Section> sectionList = new ArrayList<>();
sectionList.add(section);
return sectionList;
}
}
package com.school.project.model; package com.school.project.model;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import com.school.project.model.marks.Assessment;
import com.sun.istack.NotNull; import com.sun.istack.NotNull;
import lombok.*; import lombok.*;
...@@ -39,4 +40,6 @@ public class Course { ...@@ -39,4 +40,6 @@ public class Course {
@JsonIgnore @JsonIgnore
private Set<Teacher> teacherList; private Set<Teacher> teacherList;
@OneToMany(mappedBy = "course",cascade = CascadeType.ALL,fetch = FetchType.LAZY)
private List<Assessment> assessment;
} }
package com.school.project.model; package com.school.project.model;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import com.school.project.model.marks.StudentMarks;
import com.school.project.model.userRegistration.User; import com.school.project.model.userRegistration.User;
import com.sun.istack.NotNull; import com.sun.istack.NotNull;
import lombok.*; import lombok.*;
...@@ -53,4 +54,10 @@ public class Student { ...@@ -53,4 +54,10 @@ public class Student {
@JoinColumn(name = "student_id") @JoinColumn(name = "student_id")
@JsonIgnore @JsonIgnore
private User studentAppUser; private User studentAppUser;
@OneToOne(mappedBy = "student",cascade = CascadeType.ALL,fetch = FetchType.LAZY)
@JsonIgnore
private StudentMarks studentMarks;
} }
package com.school.project.model.marks;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.school.project.model.Course;
import com.sun.istack.NotNull;
import lombok.Getter;
import lombok.Setter;
import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity;
import javax.persistence.*;
import java.util.List;
import java.util.Set;
@Getter
@Setter
@Entity
@Table(name = "assessment")
public class Assessment {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "assessment_id")
private Long assessmentId;
@ManyToOne
@JoinColumn(name = "assessment_type_id")
@NotNull
private AssessmentType assessmentType;
@ManyToOne(fetch = FetchType.LAZY)
@JoinTable(name = "course_assessments",
joinColumns = {@JoinColumn(name = "assessment_id")},
inverseJoinColumns = {@JoinColumn(name = "course_id")})
@NotNull
@JsonIgnore
private Course course;
@OneToMany(cascade = CascadeType.MERGE, fetch = FetchType.LAZY,orphanRemoval = true)
@JoinTable(name = "assessment_sections",
joinColumns = {@JoinColumn(name = "assessment_id")},
inverseJoinColumns = {@JoinColumn(name = "section_id")})
@JsonIgnore
private List<Section> section;
}
package com.school.project.model.marks;
import com.sun.istack.NotNull;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.*;
@Getter
@Setter
@Entity
@Table(name = "assessment_type")
public class AssessmentType {
public enum types {
ASSIGNMENT,
QUIZ,
MIDTERM,
FINAL,
PROJECT,
PRESENTATION,
REPORT,
PARTICIPATION,
LABWORK,
LABTASK
}
@Id
@Column(name = "assessment_type_id")
private Long assessmentTypeId;
@Column(name = "assessment_type_name")
@NotNull
private String assessmentTypeName;
}
package com.school.project.model.marks;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.sun.istack.NotNull;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.*;
@Getter
@Setter
@Entity
@Table(name = "section")
public class Section {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "section_id")
private Long sectionId;
@NotNull
@Column(name = "total_marks")
private Long totalMarks;
@NotNull
@Column(name = "total_weightage")
private Long totalWeightage;
@ManyToOne(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)})
private Assessment assessment;
@OneToOne(mappedBy = "section",cascade = CascadeType.ALL,fetch = FetchType.LAZY)
@JsonIgnore
private StudentMarks studentMarks;
}
package com.school.project.model.marks;
import com.school.project.model.Student;
import com.sun.istack.NotNull;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.*;
@Getter
@Setter
@Entity
@Table(name = "student_marks")
public class StudentMarks {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "student_marks_id")
private Long studentMarksId;
@NotNull
@Column(name = "obtained_marks")
private Long obtainedMarks;
@OneToOne(fetch = FetchType.LAZY,cascade = CascadeType.ALL)
@JoinColumn(name = "student_id")
@NotNull
private Student student;
@OneToOne(fetch = FetchType.LAZY,cascade = CascadeType.ALL)
@JoinColumn(name = "section_id")
@NotNull
private Section section;
}
...@@ -5,4 +5,6 @@ import org.springframework.data.jpa.repository.JpaRepository; ...@@ -5,4 +5,6 @@ import org.springframework.data.jpa.repository.JpaRepository;
public interface CourseRepository extends JpaRepository<Course,Long> { public interface CourseRepository extends JpaRepository<Course,Long> {
Course findByCourseName(String name); Course findByCourseName(String name);
Course findByCourseCode(String name);
} }
package com.school.project.repository.marks;
import com.school.project.model.marks.Assessment;
import org.springframework.data.jpa.repository.JpaRepository;
public interface AssessmentRepository extends JpaRepository<Assessment,Long> {
Assessment findByAssessmentId(Long id);
}
package com.school.project.repository.marks;
import com.school.project.model.marks.AssessmentType;
import org.springframework.data.jpa.repository.JpaRepository;
public interface AssessmentTypeRepository extends JpaRepository<AssessmentType,Long> {
AssessmentType findByAssessmentTypeName(String name);
}
package com.school.project.repository.marks;
import com.school.project.model.marks.Section;
import org.springframework.data.jpa.repository.JpaRepository;
public interface SectionRepository extends JpaRepository<Section,Long> {
}
package com.school.project.repository.marks;
import com.school.project.model.marks.StudentMarks;
import org.springframework.data.jpa.repository.JpaRepository;
public interface StudentMarksRepository extends JpaRepository<StudentMarks,Long> {
}
package com.school.project.service.teacher;
import com.school.project.dto.teacher.AddAssessmentDTO;
import com.school.project.dto.teacher.AddSectionDTO;
import com.school.project.model.marks.Assessment;
import com.school.project.model.marks.Section;
import org.springframework.stereotype.Service;
@Service
public interface UploadMarksService {
Assessment setAssessment(AddAssessmentDTO assessmentDTO);
Section setSection(AddSectionDTO sectionDTO);
}
package com.school.project.service.teacher;
import com.school.project.dto.teacher.AddAssessmentDTO;
import com.school.project.dto.teacher.AddSectionDTO;
import com.school.project.mapper.SectionToListOfSectionMapper;
import com.school.project.model.marks.Assessment;
import com.school.project.model.marks.Section;
import com.school.project.repository.CourseRepository;
import com.school.project.repository.marks.AssessmentRepository;
import com.school.project.repository.marks.AssessmentTypeRepository;
import com.school.project.repository.marks.SectionRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
@Service
public class UploadMarksServiceImpl implements UploadMarksService {
@Autowired
CourseRepository courseRepository;
@Autowired
AssessmentTypeRepository assessmentTypeRepository;
@Autowired
AssessmentRepository assessmentRepository;
@Autowired
SectionRepository sectionRepository;
@Autowired
SectionToListOfSectionMapper mapper;
@Override
@Transactional
public Assessment setAssessment(AddAssessmentDTO assessmentDTO) {
Assessment assessment = new Assessment();
assessment.setAssessmentType(assessmentTypeRepository.findByAssessmentTypeName(
assessmentDTO.getAssessment()));
assessment.setCourse(courseRepository.findByCourseCode(
assessmentDTO.getCourseCode()));
return assessmentRepository.save(assessment);
}
@Override
@Transactional
@Modifying
public Section setSection(AddSectionDTO sectionDTO) {
Section section = new Section();
section.setAssessment(assessmentRepository.findByAssessmentId(sectionDTO.getAssessmentId()));
section.setTotalMarks(sectionDTO.getTotalMarks());
section.setTotalWeightage(sectionDTO.getTotalWeightage());
section = sectionRepository.save(section);
Assessment assessment = assessmentRepository.findByAssessmentId(sectionDTO.getAssessmentId());
assessment.setSection(mapper.modelToList(section));
return section;
}
}
...@@ -11,5 +11,4 @@ INSERT INTO assessment_type VALUES (6,'PRESENTATION'); ...@@ -11,5 +11,4 @@ INSERT INTO assessment_type VALUES (6,'PRESENTATION');
INSERT INTO assessment_type VALUES (7,'REPORT'); INSERT INTO assessment_type VALUES (7,'REPORT');
INSERT INTO assessment_type VALUES (8,'PARTICIPATION'); INSERT INTO assessment_type VALUES (8,'PARTICIPATION');
INSERT INTO assessment_type VALUES (9,'LABWORK'); INSERT INTO assessment_type VALUES (9,'LABWORK');
INSERT INTO assessment_type VALUES (10,'LABTASK'); INSERT INTO assessment_type VALUES (10,'LABTASK');
\ No newline at end of file
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