NavigationAccessController.java

package fr.avenirsesr.portfolio.navigation.access.application.adapter.controller;

import fr.avenirsesr.portfolio.common.configuration.domain.model.InstitutionConfigurationElements;
import fr.avenirsesr.portfolio.navigation.access.application.adapter.dto.NavigationAccessDTO;
import fr.avenirsesr.portfolio.program.domain.port.input.InstitutionService;
import fr.avenirsesr.portfolio.student.progress.imported.domain.port.input.StudentProgressService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@Slf4j
@AllArgsConstructor
@RestController
@RequestMapping("/me/navigation-access")
public class NavigationAccessController {
  private final InstitutionService institutionService;
  private final StudentProgressService studentProgressService;

  @GetMapping
  public ResponseEntity<NavigationAccessDTO> getStudentNavigationAccess() {
    InstitutionConfigurationElements institutionConfig =
        institutionService.getInstitutionConfiguration();
    var isAPCEnabledByInstitution = institutionConfig.apcEnabled();
    var isLifeProjectEnabledByInstitution = institutionConfig.lifeProjectEnabled();

    var isFollowingAPCProgram = studentProgressService.isStudentFollowingAPCProgram();

    var navigationAccess =
        new NavigationAccessDTO(
            new NavigationAccessDTO.AccessInfoAPC(isAPCEnabledByInstitution, isFollowingAPCProgram),
            new NavigationAccessDTO.AccessInfoLifeProject(isLifeProjectEnabledByInstitution));

    return ResponseEntity.ok(navigationAccess);
  }
}