OneCompiler

Service Layer

532

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)
           .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());
}

// @Autowired
// private UsersRepository userRepository;
//
// @Override
// public UserDetails loadUserByUsername(String username,CustomUsers customUsers) throws UsernameNotFoundException {
// System.out.println("Attempting to load user: " + username);
//
// Optional<User> user = Optional.ofNullable(userRepository.findByUsername(username)
// .orElseThrow(() -> new UsernameNotFoundException("User not found: " + username)));
//
//
//
// return new CustomUsers(user);
// }

}

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

// @Bean
// public PasswordEncoder passwordEncoder() {
// return new BCryptPasswordEncoder();
// }

}