OneCompiler

Java backend code Controller Layer

595

//package com.example.OepAchievers.Controller;
//
//import com.example.OepAchievers.Model.Course;
//import com.example.OepAchievers.Service.CourseService;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.http.ResponseEntity;
//import org.springframework.web.bind.annotation.*;
//
//import java.util.List;
//
//@RestController
//@RequestMapping("/api/courses")
//@CrossOrigin(origins = "http://localhost:3000/")
//public class CourseController {
//
// @Autowired
// private CourseService courseService;
//
// @PostMapping
// public ResponseEntity<Course> createCourse(@RequestBody Course course) {
// return ResponseEntity.ok(courseService.createCourse(course));
// }
//
// @GetMapping("/{id}")
// public ResponseEntity<Course> getCourse(@PathVariable Long id) {
// return ResponseEntity.ok(courseService.getCourseById(id));
// }
//
// @GetMapping("/published")
// public ResponseEntity<List<Course>> getPublishedCourses() {
// return ResponseEntity.ok(courseService.getPublishedCourses());
// }
//
// @PutMapping("/{id}/status")
// public ResponseEntity<Course> updateCourseStatus(
// @PathVariable Long id,
// @RequestParam Course.CourseStatus status) {
// Course course = courseService.getCourseById(id);
// course.setStatus(status);
// return ResponseEntity.ok(courseService.createCourse(course));
// }
//}
//
//

package com.example.OepAchievers.Controller;

import com.example.OepAchievers.Model.Course;
import com.example.OepAchievers.Service.CourseService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/api/courses")
@CrossOrigin(origins = "http://localhost:3000/")
public class CourseController {
private static final Logger logger= LoggerFactory.getLogger(CourseController.class);
@Autowired
private CourseService courseService;

@PostMapping
public ResponseEntity<Course> createCourse(@RequestBody Course course) {
    logger.info("Request to create course: {}",course);
    Course createdCourse=courseService.createCourse(course);
    logger.info("Course created successfully with ID: {}",createdCourse.getId());
    return ResponseEntity.ok(createdCourse);
}

@GetMapping("/{id}")
public ResponseEntity<Course> getCourse(@PathVariable Long id) {
    logger.info("Request to get course with ID: {}",id);
    Course course=courseService.getCourseById(id);
    logger.info("Course retrieved: {}",course);
    return ResponseEntity.ok(course);
}

@GetMapping("/published")
public ResponseEntity<List<Course>> getPublishedCourses() {
    logger.info("Request to get all published courses");
    List<Course> courses=courseService.getPublishedCourses();
    logger.info("Number of published courses retrieved:{}",courses.size());
    return ResponseEntity.ok(courses);
}

@PutMapping("/{id}/status")
public ResponseEntity<Course> updateCourseStatus(
        @PathVariable Long id,
        @RequestParam Course.CourseStatus status) {
    logger.info("Request to update course status with ID: {} to {}",id,status);
    Course course = courseService.getCourseById(id);
    course.setStatus(status);
    Course updatedCourse=courseService.createCourse(course);
    logger.info("Course status updated successfully for ID: {} ",id);
    return ResponseEntity.ok(updatedCourse);
}

}

//package com.example.OepAchievers.Controller;
//
//import com.example.OepAchievers.Model.Enrollment;
//import com.example.OepAchievers.Service.EnrollmentService;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.http.ResponseEntity;
//import org.springframework.web.bind.annotation.*;
//
//import java.util.List;
//
//@RestController
//@RequestMapping("/api/enrollments")
//@CrossOrigin(origins = "http://localhost:3000/")
//public class EnrollmentController {
// @Autowired
// private EnrollmentService enrollmentService;
//
// @PostMapping
// public ResponseEntity<Enrollment> enrollInCourse(@RequestBody Enrollment enrollment) {
// return ResponseEntity.ok(enrollmentService.enroll(enrollment));
// }
//
// @GetMapping("/student/{studentId}")
// public ResponseEntity<List<Enrollment>> getStudentEnrollments (Long studentId) {
// return ResponseEntity.ok(enrollmentService.getStudentEnrollments(studentId));
// }
//
// @PutMapping("/{id}/progress")
// public ResponseEntity<Void> updateProgress(
// @PathVariable Long id,
// @RequestParam Double progress) {
// enrollmentService.updateProgress(id, progress);
// return ResponseEntity.ok().build();
// }
//
//}

package com.example.OepAchievers.Controller;

import com.example.OepAchievers.Model.Enrollment;
import com.example.OepAchievers.Service.EnrollmentService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/api/enrollments")
@CrossOrigin(origins = "http://localhost:3000/")
public class EnrollmentController {
@Autowired
private EnrollmentService enrollmentService;

private static final Logger logger= LoggerFactory.getLogger(EnrollmentController.class);

@PostMapping
public ResponseEntity<Enrollment> enrollInCourse(@RequestBody Enrollment enrollment) {
    logger.info("Request to enroll in course: {}",enrollment);
    Enrollment enrolled=enrollmentService.enroll(enrollment);
    logger.info("Enrollment successful: {}",enrolled);
    return ResponseEntity.ok(enrolled);
}

@GetMapping("/student/{studentId}")
public ResponseEntity<List<Enrollment>> getStudentEnrollments (Long studentId) {
    logger.info("Request to get enrollments for student ID: {}",studentId);
    List<Enrollment> enrollments= enrollmentService.getStudentEnrollments(studentId);
    logger.info("Number of enrollments retrieved for student ID {}: {}",studentId,enrollments.size());
    return ResponseEntity.ok(enrollments);
}

@PutMapping("/{id}/progress")
public ResponseEntity<Void> updateProgress(
        @PathVariable Long id,
        @RequestParam Double progress) {
    logger.info("Request to update progress for enrollment ID:{} to {}",id,progress);
    enrollmentService.updateProgress(id, progress);
    logger.info("progress updated successfully for enrollment ID: {}",id);
    return ResponseEntity.ok().build();
}

}

////package com.example.OepAchievers.Controller;
////
////import ch.qos.logback.classic.Logger;
////import com.example.OepAchievers.Dto.LoginDto;
////import com.example.OepAchievers.Model.User;
////
////import com.example.OepAchievers.Service.UserServ;
////import org.springframework.beans.factory.annotation.Autowired;
////import org.springframework.http.ResponseEntity;
////import org.springframework.web.bind.annotation.;
////
////@RestController
////@RequestMapping("/api/users")
////@CrossOrigin(origins = "http://localhost:3003/")
////public class UserController {
////
//// @Autowired
//// private UserServ userService;
////
//// @PostMapping("/register")
//// public ResponseEntity<String> registerUser(@RequestBody User user) {
//// try{
//// return ResponseEntity.ok("Request processed successfully");
//// }catch (Exception e){
//// Logger logger = null;
//// logger.error("Error processing request", e);
//// return ResponseEntity.badRequest().body("Invalid request");
//// }
////
//// }
////
//// @GetMapping("/{id}")
//// public ResponseEntity<User> getUser(@PathVariable Long id) {
//// return ResponseEntity.ok(userService.getUserById(id));
//// }
//// @GetMapping("/login")
//// public String login(@RequestBody LoginDto loginDto){
////User user=userService.getUserByUsername(loginDto.getUsername());
//// return "LOGIN SUCCESS"+user;
//// }
////}
////
////
////
//
//
//package com.example.OepAchievers.Controller;
//
//import ch.qos.logback.classic.Logger;
//import com.example.OepAchievers.Dto.LoginDto;
//import com.example.OepAchievers.Model.User;
//import com.example.OepAchievers.Service.UserServ;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.http.ResponseEntity;
//import org.springframework.security.crypto.password.PasswordEncoder;
//import org.springframework.web.bind.annotation.
;
//
//@RestController
//@RequestMapping("/api/users")
//@CrossOrigin(origins = "http://localhost:3000/") // Ensure your React app is on this port
//public class UserController {
//
// @Autowired
// private UserServ userService;
// @Autowired
// private PasswordEncoder passwordEncoder;
//
// // Registration endpoint
// @PostMapping("/register")
// public ResponseEntity<String> registerUser(@RequestBody User user) {
// try {
// userService.saveUser(user); // Save the user (you should implement this method in your service)
// return ResponseEntity.ok("User registered successfully");
// } catch (Exception e) {
// Logger logger = null;
// if (logger != null) logger.error("Error processing request", e);
// return ResponseEntity.badRequest().body("Error processing request");
// }
// }
//
// // Get user by id
// @GetMapping("/{id}")
// public ResponseEntity<User> getUser(@PathVariable Long id) {
// return ResponseEntity.ok(userService.getUserById(id));
// }
//
// // Login endpoint
// @PostMapping("/login")
// public ResponseEntity<String> login(@RequestBody LoginDto loginDto){
// User user = userService.getUserByUsername(loginDto.getUsername());
// if(user != null && passwordEncoder.matches(loginDto.getPassword(), user.getPassword())) {
// return ResponseEntity.ok("LOGIN SUCCESS " + user.getUsername());
// } else {
// return ResponseEntity.status(401).body("Invalid username or password");
// }
// }
//}

package com.example.OepAchievers.Controller;

import com.example.OepAchievers.Dto.LoginDto;
import com.example.OepAchievers.Model.User;
import com.example.OepAchievers.Service.UserServ;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/api/users")
@CrossOrigin(origins = "http://localhost:3000/") // Ensure your React app is on this port
public class UserController {

private static final Logger logger= LoggerFactory.getLogger(UserController .class);

@Autowired
private UserServ userService;
@Autowired
private PasswordEncoder passwordEncoder;

@PostMapping("/register")
public ResponseEntity<String> registerUser(@RequestBody User user) {
    logger.info("Request to register user: {}",user);

    try {
        userService.saveUser(user); // Save the user (you should implement this method in your service)
        logger.info("User registered successfully: {}",user.getUsername());
        return ResponseEntity.ok("User registered successfully");
    } catch (Exception e) {
        logger.error("Error registering user: {}",user,e);
        return ResponseEntity.badRequest().body("Error processing request");
    }
}

@GetMapping("/{id}")
public ResponseEntity<User> getUser(@PathVariable Long id) {
    logger.info("Request to get user with id {}",id);
    User user=userService.getUserById(id);
    logger.info("User retrieved: {}",user);
    return ResponseEntity.ok(user);
}

@PostMapping("/login")
public ResponseEntity<String> login(@RequestBody LoginDto loginDto){
    logger.info("Login request for username: {}",loginDto.getUsername());
    User user = userService.getUserByUsername(loginDto.getUsername());
    if((user != null) && passwordEncoder.matches(loginDto.getPassword(),user.getPassword())) {
        logger.info("Login successful for username: {}",loginDto.getUsername());
        return ResponseEntity.ok("LOGIN SUCCESS " + user.getRole()  + " "+user.getId());
    } else {
        logger.warn("Login failed for username: {}",loginDto.getUsername());
        return ResponseEntity.status(401).body("Invalid username or password");
    }
}

}