Commit 6ce91b86 authored by Usman Siddiqui's avatar Usman Siddiqui

Merge branch 'courseRegistration' into 'master'

User Functionalities

See merge request !3
parents d6f663a1 426159b6
package com.school.project.controller;
import com.fasterxml.jackson.databind.annotation.JsonAppend;
import com.school.project.dto.CourseDTO;
import com.school.project.repository.modelRepositery.CourseRepository;
import com.school.project.service.course.CourseServiceImp;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.PostMapping;
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 java.util.List;
import java.util.NoSuchElementException;
@Controller
@RestController
@RequestMapping("/course")
public class CourseController {
@Autowired(required = true)
public CourseServiceImp courseServiceImpl;
@Autowired
private CourseServiceImp courseServiceImp;
@PostMapping("/save")
public ResponseEntity<CourseDTO> saveCourse(@RequestBody CourseDTO courseDTO) {
private ResponseEntity saveCourse(@RequestBody CourseDTO course) {
try {
CourseDTO course = courseServiceImpl.saveCourse(courseDTO);
return ResponseEntity.status(HttpStatus.OK).body(course);
courseServiceImp.saveCourse(course);
return ResponseEntity.ok("Department Saved");
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.BAD_REQUEST).build();
}
}
@GetMapping("/findAll")
public ResponseEntity<List<CourseDTO>> readAllCourses() {
List<CourseDTO> course = courseServiceImpl.readAllCourse();
if (course.size() <= 0) {
return ResponseEntity.status(HttpStatus.NOT_FOUND).build();
} else {
return ResponseEntity.status(HttpStatus.OK).body(course);
throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "Data Is Not Correct", e);
}
}
@GetMapping("/find/{id}")
public ResponseEntity<CourseDTO> readCourseById(@PathVariable(name = "id") Long id) {
try {
CourseDTO course = courseServiceImpl.readCourseById(id);
return ResponseEntity.status(HttpStatus.OK).body(course);
} catch (NoSuchElementException e) {
return ResponseEntity.status(HttpStatus.NOT_FOUND).build();
}
}
@PutMapping("/update/{id}")
public ResponseEntity<CourseDTO> updateCourseById(@RequestBody CourseDTO courseDTO, @PathVariable(name = "id") Long id) {
try {
CourseDTO updateCourse = courseServiceImpl.updateCourseById(courseDTO, id);
return ResponseEntity.status(HttpStatus.OK).body(updateCourse);
} catch (NoSuchElementException e) {
return ResponseEntity.status(HttpStatus.UNPROCESSABLE_ENTITY).build();
}
}
@DeleteMapping("/delete/{id}")
public ResponseEntity deleteCourseById(@PathVariable(name = "id") Long id) {
try {
courseServiceImpl.deleteCourseById(id);
return ResponseEntity.status(HttpStatus.NO_CONTENT).build();
} catch (EmptyResultDataAccessException e) {
return ResponseEntity.status(HttpStatus.UNPROCESSABLE_ENTITY).build();
}
}
}
......@@ -3,86 +3,28 @@ package com.school.project.controller;
import com.school.project.dto.DepartmentDTO;
import com.school.project.service.department.DepartmentServiceImp;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.PostMapping;
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 java.util.List;
import java.util.NoSuchElementException;
import java.util.Optional;
@RestController
@RequestMapping("/department")
public class DepartmentController {
@Autowired(required = true)
public DepartmentServiceImp departmentServiceImp;
@GetMapping("")
public ResponseEntity<List<DepartmentDTO>> readAllDepartments() {
List<DepartmentDTO> departmentDTO = departmentServiceImp.readDepartment();
if (departmentDTO.isEmpty()) {
return ResponseEntity.status(HttpStatus.NOT_FOUND).build();
} else {
return ResponseEntity.of(Optional.of(departmentDTO));
}
}
@GetMapping("/findId/{id}")
public DepartmentDTO readDepartmentById(@PathVariable("id") Long id) {
try {
return departmentServiceImp.readDepartmentById(id);
} catch (NoSuchElementException ex) {
throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Department Not Found With This Id", ex);
}
}
@GetMapping("/findName/{name}")
public ResponseEntity<DepartmentDTO> findDepartmentByName(@PathVariable("name") String name) {
DepartmentDTO departmentDTO = departmentServiceImp.findDepartmentByName(name);
if (departmentDTO == null) {
return ResponseEntity.status(HttpStatus.NOT_FOUND).build();
} else {
return ResponseEntity.of(Optional.of(departmentDTO));
}
}
@Autowired
private DepartmentServiceImp departmentServiceImp;
@PostMapping("/save")
public ResponseEntity<DepartmentDTO> saveDepartment(@RequestBody DepartmentDTO department) {
try {
DepartmentDTO departmentDTO = departmentServiceImp.saveDepartment(department);
return ResponseEntity.status(HttpStatus.OK).body(departmentDTO);
} catch (Exception exception) {
return ResponseEntity.status(HttpStatus.BAD_REQUEST).build();
}
}
@PutMapping("/update/{id}")
public ResponseEntity<DepartmentDTO> updateDepartmentById(@RequestBody DepartmentDTO department, @PathVariable("id") Long id) {
try {
DepartmentDTO updateDepartment = departmentServiceImp.updateDepartment(department, id);
return ResponseEntity.status(HttpStatus.OK).body(updateDepartment);
} catch (NoSuchElementException e) {
return ResponseEntity.status(HttpStatus.UNPROCESSABLE_ENTITY).build();
}
}
@DeleteMapping("/delete/{id}")
public ResponseEntity<Object> deleteDepartmentById(@PathVariable("id") Long id) {
private ResponseEntity saveDepartment(@RequestBody DepartmentDTO department){
try {
departmentServiceImp.deleteDepartmentById(id);
return ResponseEntity.status(HttpStatus.NO_CONTENT).build();
} catch (EmptyResultDataAccessException e) {
return ResponseEntity.status(HttpStatus.UNPROCESSABLE_ENTITY).build();
departmentServiceImp.saveDepartment(department);
return ResponseEntity.ok("Department Saved");
} catch (Exception e) {
throw new ResponseStatusException(HttpStatus.BAD_REQUEST,"Data Is Not Correct",e);
}
}
}
package com.school.project.controller.userRegistration;
package com.school.project.controller;
import com.school.project.dto.userRegistration.AdminRegistrationDTO;
......
package com.school.project.controller;
import com.school.project.model.Student;
import com.school.project.service.student.StudentServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.annotation.CurrentSecurityContext;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/student")
public class StudentController {
@Autowired
private StudentServiceImpl studentService;
@GetMapping("/data/{id}")
public Student getUserDetails(@CurrentSecurityContext(expression = "authentication")
Authentication authentication , @PathVariable("id") Long id) {
Student student = studentService.viewData(id);
// Student student = studentService.viewData(authentication.getName());
return student;
}
}
package com.school.project.controller;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.annotation.CurrentSecurityContext;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
@RestController
@RequestMapping("/school")
public class UserController {
@GetMapping("/user")
public List<String> currentUserName(@CurrentSecurityContext(expression = "authentication")
Authentication authentication) {
List<String> data = new ArrayList<>();
data.add(authentication.getName());
data.add(String.valueOf(authentication.getAuthorities()));
data.add(String.valueOf(authentication.getCredentials()));
data.add(String.valueOf(authentication.getDetails()));
data.add(String.valueOf(authentication.getPrincipal()));
return data;
}
}
......@@ -9,12 +9,7 @@ import java.util.List;
@Data
public class CourseDTO {
private Long id;
private String title;
List<Student> studentList;
private List<Teacher> teacherList;
private String courseName;
private String courseCode;
}
......@@ -5,8 +5,6 @@ import lombok.Data;
@Data
public class DepartmentDTO {
private Long id;
private String name;
}
package com.school.project.mapper;
import com.school.project.dto.CourseDTO;
import com.school.project.model.Course;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import java.util.List;
@Mapper(componentModel = "spring")
public interface CourseMapper {
CourseMapper INSTANCE = Mappers.getMapper(CourseMapper.class);
CourseDTO courseModelToDTO(Course course);
Course courseDTOToModel(CourseDTO courseDTO);
List<CourseDTO> courseModelToDTO(List<Course> all);
}
package com.school.project.mapper;
import com.school.project.dto.DepartmentDTO;
import com.school.project.model.Department;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import java.util.List;
@Mapper(componentModel = "spring")
public interface DepartmentMapper {
DepartmentMapper INSTANCE = Mappers.getMapper(DepartmentMapper.class);
DepartmentDTO departmentModelToDTO(Department department);
Department departmentDTOToModel(DepartmentDTO saveDepartment);
List<DepartmentDTO> departmentListModelToDTO(List<Department> all);
/*@Mappings({
@Mapping(target = "id",source = "saveDepartment.departId"),
@Mapping(target ="name",source = "saveDepartment.departName")
})*/
/*@Mappings({
@Mapping(target = "departId", source ="department.id"),
@Mapping(target ="departName",source = "department.name")
})*/
}
package com.school.project.model;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.sun.istack.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.RequiredArgsConstructor;
import javax.persistence.*;
import java.util.List;
@Data
@Entity()
@AllArgsConstructor()
@NoArgsConstructor
@Table(name = "Course")
public class Course {
......@@ -17,8 +20,13 @@ public class Course {
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name = "title", unique = true)
private String title;
@NotNull
@Column(name = "name", unique = true)
private String courseName;
@NotNull
@Column(name = "courseCode",unique = true)
private String courseCode;
@ManyToMany(fetch = FetchType.LAZY, mappedBy = "courseLists")
@JsonIgnore
......
package com.school.project.model;
import com.sun.istack.NotNull;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.RequiredArgsConstructor;
import javax.persistence.*;
import java.util.List;
@Data
@Entity()
@NoArgsConstructor
@Table(name = "Department")
public class Department {
......@@ -14,6 +18,7 @@ public class Department {
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private Long id;
@NotNull
@Column(name = "name", unique = true)
private String name;
......
......@@ -6,6 +6,8 @@ import com.school.project.model.userRegistration.User;
import com.sun.istack.NotNull;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import org.springframework.context.annotation.Lazy;
import javax.persistence.*;
import java.util.List;
......@@ -45,5 +47,7 @@ public class Student {
@OneToOne
@MapsId
@JoinColumn(name = "student_id")
@Lazy
@ToString.Exclude
private User studentAppUser;
}
......@@ -6,7 +6,9 @@ import com.school.project.model.userRegistration.User;
import com.sun.istack.NotNull;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import org.codehaus.jackson.annotate.JsonIgnore;
import org.springframework.context.annotation.Lazy;
import javax.persistence.*;
import java.util.List;
......@@ -49,9 +51,11 @@ public class Teacher {
)
private List<Course> courseList;
@OneToOne
@OneToOne(fetch = FetchType.LAZY)
@MapsId
@JoinColumn(name = "teacher_id")
@JsonIgnore
@ToString.Exclude
private User teacherAppUser;
......
package com.school.project.model.userRegistration;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.sun.istack.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.RequiredArgsConstructor;
import lombok.*;
import org.springframework.context.annotation.Lazy;
import javax.persistence.*;
......@@ -25,5 +24,7 @@ public class Admin {
@OneToOne
@MapsId
@JoinColumn(name = "admin_id")
@Lazy
@ToString.Exclude
private User adminAppUser;
}
package com.school.project.model.userRegistration;
import com.fasterxml.jackson.annotation.JsonFilter;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.school.project.model.Student;
import com.school.project.model.Teacher;
import com.sun.istack.NotNull;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import javax.persistence.*;
......@@ -33,16 +36,19 @@ public class User {
@NotNull
private Role role;
@OneToOne(mappedBy = "studentAppUser", cascade = {CascadeType.MERGE})
@OneToOne(mappedBy = "studentAppUser", cascade = {CascadeType.MERGE}, fetch = FetchType.LAZY)
@PrimaryKeyJoinColumn
@ToString.Exclude
private Student studentUser;
@OneToOne(mappedBy = "teacherAppUser", cascade = {CascadeType.MERGE})
@OneToOne(mappedBy = "teacherAppUser", cascade = {CascadeType.MERGE}, fetch = FetchType.LAZY)
@PrimaryKeyJoinColumn
@ToString.Exclude
private Teacher teacherUser;
@OneToOne(mappedBy = "adminAppUser", cascade = {CascadeType.MERGE})
@OneToOne(mappedBy = "adminAppUser", cascade = {CascadeType.MERGE}, fetch = FetchType.LAZY)
@PrimaryKeyJoinColumn
@ToString.Exclude
private Admin adminUser;
}
......@@ -7,4 +7,5 @@ import org.springframework.stereotype.Repository;
@Repository
public interface TeacherRepository extends JpaRepository<Teacher,Long> {
Teacher findOneByTeacherId(Long id);
}
......@@ -9,4 +9,5 @@ import java.util.Optional;
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
Optional<User> findUserByEmail(String email);
User findOneByUserId(Long id);
}
......@@ -49,7 +49,7 @@ public class OAuth2ServerConfiguration {
.and()
.authorizeRequests()
.antMatchers("/register/**").permitAll()
.antMatchers("/department/**","/course/**").hasAuthority("ADMIN");
.antMatchers("/department/**","/course/**","/student/").hasAuthority("ADMIN");
}
}
......
......@@ -6,7 +6,7 @@ import java.util.List;
public interface CourseService {
public CourseDTO saveCourse(CourseDTO courseDTO);
public String saveCourse(CourseDTO courseDTO);
public List<CourseDTO> readAllCourse();
......
package com.school.project.service.course;
import com.school.project.dto.CourseDTO;
import com.school.project.mapper.CourseMapper;
import com.school.project.model.Course;
import com.school.project.repository.modelRepositery.CourseRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -15,17 +15,39 @@ public class CourseServiceImp implements CourseService {
@Autowired(required = true)
public CourseRepository courseRepository;
@Autowired
public CourseMapper courseMapper;
@Override
public String saveCourse(CourseDTO courseDTO) {
Course newCourse = new Course();
newCourse.setCourseCode(courseDTO.getCourseCode());
newCourse.setCourseName(courseDTO.getCourseName());
courseRepository.save(newCourse);
return "Course Saved";
}
@Override
public CourseDTO saveCourse(CourseDTO courseDTO) {
return courseMapper.courseModelToDTO(
courseRepository.save(
courseMapper.courseDTOToModel(courseDTO)));
public List<CourseDTO> readAllCourse() {
return null;
}
@Override
public CourseDTO readCourseById(Long id) {
return null;
}
@Override
public CourseDTO updateCourseById(CourseDTO courseDTO, Long id) {
return null;
}
@Transactional
@Override
public void deleteCourseById(Long id) {
}
/* @Transactional
@Override
public List<CourseDTO> readAllCourse() {
return courseMapper.courseModelToDTO(courseRepository.findAll());
......@@ -58,5 +80,5 @@ public class CourseServiceImp implements CourseService {
@Override
public void deleteCourseById(Long id) {
courseRepository.deleteById(id);
}
}*/
}
......@@ -5,7 +5,7 @@ import com.school.project.dto.DepartmentDTO;
import java.util.List;
public interface DepartmentService {
public DepartmentDTO saveDepartment(DepartmentDTO departmentDTO);
public String saveDepartment(DepartmentDTO departmentDTO);
public List<DepartmentDTO> readDepartment();
......
package com.school.project.service.department;
import com.school.project.dto.DepartmentDTO;
import com.school.project.mapper.DepartmentMapper;
import com.school.project.model.Department;
import com.school.project.repository.modelRepositery.DepartmentRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -12,17 +12,45 @@ import java.util.List;
public class DepartmentServiceImp implements DepartmentService {
@Autowired(required = true)
private DepartmentRepository departmentRepository;
@Autowired(required = true)
private DepartmentMapper departmentMapper;
@Override
public DepartmentDTO saveDepartment(DepartmentDTO departmentDTO) {
return departmentMapper.departmentModelToDTO(
departmentRepository.save(
departmentMapper.departmentDTOToModel(departmentDTO)));
public String saveDepartment(DepartmentDTO department) {
Department newDepartment = new Department();
newDepartment.setName(department.getName());
departmentRepository.save(newDepartment);
return "Department Saved";
}
@Override
public List<DepartmentDTO> readDepartment() {
return null;
}
@Override
public DepartmentDTO readDepartmentById(Long id) {
return null;
}
@Override
public DepartmentDTO updateDepartment(DepartmentDTO departmentDTO, Long id) {
return null;
}
@Override
public void deleteDepartmentById(Long id) {
}
@Override
public DepartmentDTO findDepartmentByName(String departmentName) {
return null;
}
/* @Override
public List<DepartmentDTO> readDepartment() {
return departmentMapper.departmentListModelToDTO(departmentRepository.findAll());
......@@ -54,6 +82,5 @@ public class DepartmentServiceImp implements DepartmentService {
return departmentMapper.departmentModelToDTO(departmentRepository.findByName(departmentName));
}
*/
}
package com.school.project.service.student;
import com.school.project.model.Student;
public interface StudentService {
public Student viewData(String username);
public Student viewData(Long id);
public void courseRegistration();
}
package com.school.project.service.student;
import com.school.project.model.Student;
import com.school.project.model.Teacher;
import com.school.project.repository.modelRepositery.TeacherRepository;
import com.school.project.repository.userRegistration.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Optional;
@Service
public class StudentServiceImpl implements StudentService{
@Autowired
private TeacherRepository teacherRepository;
@Autowired
private UserRepository userRepository;
@Override
public Student viewData(String username) {
return null;
}
@Override
public Student viewData(/*String username*/ Long id) {
Teacher teacher = teacherRepository.findOneByTeacherId(id);
return null;
}
@Override
public void courseRegistration() {
}
}
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