OneCompiler

oep controller

515

controller- coursecontroller, enrollmentcontroller, usercontroller

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.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 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;

@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");
    }
}

@GetMapping("/{id}")
public ResponseEntity<User> getUser(@PathVariable Long id) {
    return ResponseEntity.ok(userService.getUserById(id));
}

@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");
    }
}

}