TraceServiceConfig.java

package fr.avenirsesr.portfolio.trace.infrastructure.adapter.service;

import fr.avenirsesr.portfolio.additionalskill.domain.port.output.repository.AdditionalSkillProgressRepository;
import fr.avenirsesr.portfolio.ams.domain.port.output.repository.AMSRepository;
import fr.avenirsesr.portfolio.file.domain.port.output.repository.TraceAttachmentRepository;
import fr.avenirsesr.portfolio.student.progress.domain.port.output.repository.SkillLevelProgressRepository;
import fr.avenirsesr.portfolio.student.progress.infrastructure.adapter.repository.StudentProgressDatabaseRepository;
import fr.avenirsesr.portfolio.trace.domain.port.input.TraceService;
import fr.avenirsesr.portfolio.trace.domain.service.TraceServiceImpl;
import fr.avenirsesr.portfolio.trace.infrastructure.adapter.client.TraceConfigurationClient;
import fr.avenirsesr.portfolio.trace.infrastructure.adapter.repository.TraceDatabaseRepository;
import fr.avenirsesr.portfolio.user.domain.port.input.StudentService;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class TraceServiceConfig {
  private final TraceDatabaseRepository traceRepository;
  private final StudentProgressDatabaseRepository studentProgressRepository;

  private final AdditionalSkillProgressRepository additionalSkillProgressRepository;
  private final AMSRepository amsRepository;
  private final SkillLevelProgressRepository skillLevelProgressRepository;
  private final TraceConfigurationClient traceConfigurationClient;
  private final TraceAttachmentRepository traceAttachmentRepository;
  private final StudentService studentService;

  public TraceServiceConfig(
      TraceDatabaseRepository traceRepository,
      StudentProgressDatabaseRepository studentProgressRepository,
      AdditionalSkillProgressRepository additionalSkillProgressRepository,
      AMSRepository amsRepository,
      SkillLevelProgressRepository skillLevelProgressRepository,
      TraceAttachmentRepository traceAttachmentRepository,
      TraceConfigurationClient traceConfigurationClient,
      StudentService studentService) {
    this.traceRepository = traceRepository;
    this.studentProgressRepository = studentProgressRepository;
    this.additionalSkillProgressRepository = additionalSkillProgressRepository;
    this.amsRepository = amsRepository;
    this.skillLevelProgressRepository = skillLevelProgressRepository;
    this.traceConfigurationClient = traceConfigurationClient;
    this.traceAttachmentRepository = traceAttachmentRepository;
    this.studentService = studentService;
  }

  @Bean
  public TraceService traceService() {
    return new TraceServiceImpl(
        traceRepository,
        studentProgressRepository,
        additionalSkillProgressRepository,
        amsRepository,
        skillLevelProgressRepository,
        traceAttachmentRepository,
        studentService,
        traceConfigurationClient);
  }
}