oep service


service- ciourseservice, customuserdetailsservice,enrollmentservice, userserv

package com.example.OepAchievers.Service;

import com.example.OepAchievers.Model.Course;
import com.example.OepAchievers.Repository.CourseRepository;
import jakarta.persistence.EntityNotFoundException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class CourseService {
@Autowired
private CourseRepository courseRepository;

public Course createCourse(Course course) {
    return courseRepository.save(course);
}

public Course getCourseById(Long id) {
    return courseRepository.findById(id).get();

// .orElseThrow(() -> new EntityNotFoundException("Course not found"));
}

public List<Course> getPublishedCourses() {
    return courseRepository.findByStatus(Course.CourseStatus.PUBLISHED);
}

}

package com.example.OepAchievers.Service;
import com.example.OepAchievers.Model.CustomUsers;
import com.example.OepAchievers.Model.User;
import com.example.OepAchievers.Repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service;

import java.util.Optional;
@Service
public class CustomUserDetailsService implements UserDetailsService {
@Autowired
private UserRepository userRepository;
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
Optional<User> user=userRepository.findByUsername(username);
return new CustomUsers(user.get());
}

}

package com.example.OepAchievers.Service;

import com.example.OepAchievers.Model.Enrollment;
import com.example.OepAchievers.Repository.EnrollmentRepository;
import jakarta.persistence.EntityNotFoundException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class EnrollmentService {
@Autowired
private EnrollmentRepository enrollmentRepository;

public Enrollment enroll(Enrollment enrollment) {
    if (enrollmentRepository.existsByStudentIdAndCourseId(
            enrollment.getStudent().getId(),
            enrollment.getCourse().getId())) {
        throw new RuntimeException("Student already enrolled in this course");
    }
    return enrollmentRepository.save(enrollment);
}

public List<Enrollment> getStudentEnrollments(Long studentId) {
    return enrollmentRepository.findByStudentId(studentId);
}

public void updateProgress(Long enrollmentId, Double progress) {
    Enrollment enrollment = enrollmentRepository.findById(enrollmentId)
            .orElseThrow(() -> new EntityNotFoundException("Enrollment not found"));
    enrollment.setProgress(progress);
    if (progress >= 100.0) {
        enrollment.setStatus(Enrollment.EnrollmentStatus.COMPLETED);
    }
    enrollmentRepository.save(enrollment);
}

}

package com.example.OepAchievers.Service;
import com.example.OepAchievers.Model.User;
import com.example.OepAchievers.Repository.UserRepository;
import jakarta.persistence.EntityNotFoundException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.NoOpPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
@Service
public class UserServ {
@Autowired
private UserRepository userRepository;

@Autowired
private PasswordEncoder passwordEncoder;

public User createUser(User user) {
    if (userRepository.existsByEmail(user.getEmail())) {
        throw new RuntimeException("Email already exists");
    }
    user.setPassword(passwordEncoder.encode(user.getPassword()));
    userRepository.save(user);
    return user;
}

public User getUserById(Long id) {
    return userRepository.findById(id)
          .orElseThrow(() -> new EntityNotFoundException("User not found"));
}
public User getUserByUsername(String username){
    return userRepository.findByUsername(username).orElseThrow(()->new RuntimeException("NO USER FOUND"));
}

public void saveUser(User user) {
    user.setPassword(passwordEncoder.encode(user.getPassword()));
    user.setEmail(user.getEmail());
    userRepository.save(user);
}

}