Skip to content

Commit

Permalink
Merge pull request #89 from InseeFr/feat_record_communication
Browse files Browse the repository at this point in the history
Feat record communication
  • Loading branch information
EricThuaud authored Nov 7, 2024
2 parents 63f5158 + 12e5487 commit 7e0fd40
Show file tree
Hide file tree
Showing 11 changed files with 132 additions and 5 deletions.
4 changes: 2 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.3.4</version>
<version>3.3.5</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<groupId>fr.insee.survey</groupId>
<artifactId>platine-management</artifactId>
<version>2.6.1</version>
<version>2.6.2</version>
<name>platine-management</name>
<description>REST API for communication between DB and Platine-Management UI and Platine-My-Surveys UI</description>
<properties>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ private Constants() {
public static final String API_QUESTIONING_QUESTIONING_EVENTS = "/api/questionings/questioning-events";
public static final String API_QUESTIONING_ID_QUESTIONING_EVENTS = "/api/questionings/{id}/questioning-events";
public static final String API_QUESTIONING_QUESTIONING_EVENTS_ID = "/api/questionings/questioning-events/{id}";
public static final String API_QUESTIONING_ID_QUESTIONING_COMMUNICATIONS = "/api/questionings/{id}/questioning-communications";

public static final String API_MAIN_CONTACT = "/api/main-contact";


Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
package fr.insee.survey.datacollectionmanagement.questioning.controller;

import fr.insee.survey.datacollectionmanagement.config.auth.user.AuthorityPrivileges;
import fr.insee.survey.datacollectionmanagement.constants.Constants;
import fr.insee.survey.datacollectionmanagement.questioning.domain.Questioning;
import fr.insee.survey.datacollectionmanagement.questioning.domain.QuestioningCommunication;
import fr.insee.survey.datacollectionmanagement.questioning.dto.QuestioningCommunicationDto;
import fr.insee.survey.datacollectionmanagement.questioning.service.QuestioningService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.modelmapper.ModelMapper;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

import java.text.ParseException;
import java.util.Set;

@RestController
@PreAuthorize(AuthorityPrivileges.HAS_MANAGEMENT_PRIVILEGES)
@Tag(name = "2 - Questioning", description = "Enpoints to create, update, delete and find entities around the questionings")
@Slf4j
@RequiredArgsConstructor
public class QuestioningCommunicationController {

private final QuestioningService questioningService;

private final ModelMapper modelMapper;

@Operation(summary = "Search for questioning communications by questioning id")
@GetMapping(value = Constants.API_QUESTIONING_ID_QUESTIONING_COMMUNICATIONS, produces = "application/json")
public ResponseEntity<?> findQuestioningCommunicationsByQuestioningId(@PathVariable("id") Long id) {
Questioning questioning = questioningService.findbyId(id);
Set<QuestioningCommunication> setQe = questioning.getQuestioningCommunications();
return ResponseEntity.status(HttpStatus.OK)
.body(setQe.stream()
.map(this::convertToDto).toList());

}


private QuestioningCommunicationDto convertToDto(QuestioningCommunication questioningCommunication) {
return modelMapper.map(questioningCommunication, QuestioningCommunicationDto.class);
}

private QuestioningCommunication convertToEntity(QuestioningCommunicationDto questioningCommunicationDto) throws ParseException {
return modelMapper.map(questioningCommunicationDto, QuestioningCommunication.class);
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,16 @@ public class Questioning {
@NonNull
private String idPartitioning;

@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private Set<QuestioningAccreditation> questioningAccreditations;

@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private Set<QuestioningEvent> questioningEvents;

@ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private Set<QuestioningCommunication> questioningCommunications;

@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@NonNull
private SurveyUnit surveyUnit;

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package fr.insee.survey.datacollectionmanagement.questioning.domain;

import fr.insee.survey.datacollectionmanagement.questioning.util.StatusCommunication;
import fr.insee.survey.datacollectionmanagement.questioning.util.TypeCommunicationEvent;
import jakarta.persistence.*;
import lombok.Getter;
import lombok.Setter;

import java.util.Date;

@Entity
@Getter
@Setter
@Table(indexes = {
@Index(name = "idQuestioningComm_index", columnList = "questioning_id")
})
public class QuestioningCommunication {

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "questioning_communication_seq")
private Long id;

private Date date;
@Enumerated(EnumType.STRING)
private TypeCommunicationEvent type;

@ManyToOne
private Questioning questioning;
@Enumerated(EnumType.STRING)
private StatusCommunication status;

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package fr.insee.survey.datacollectionmanagement.questioning.dto;

import lombok.Getter;
import lombok.Setter;

import java.util.Date;

@Getter
@Setter
public class QuestioningCommunicationDto {

private Long id;
private Long questioningId;
private Date date;
private String type;
private String status;

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package fr.insee.survey.datacollectionmanagement.questioning.util;

public enum StatusCommunication {
AUTOMATIC, MANUAL
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package fr.insee.survey.datacollectionmanagement.questioning.util;

public enum TypeCommunicationEvent {
COURRIER_OUVERTURE, MAIL_OUVERTURE, COURRIER_RELANCE, MAIL_RELANCE, COURRIER_MED, COURRIER_CNR;
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import fr.insee.survey.datacollectionmanagement.questioning.domain.Questioning;
import fr.insee.survey.datacollectionmanagement.questioning.domain.QuestioningAccreditation;
import fr.insee.survey.datacollectionmanagement.questioning.service.QuestioningService;
import jakarta.transaction.Transactional;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
Expand Down Expand Up @@ -35,6 +36,7 @@
@SpringBootTest
@ActiveProfiles("test")
@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS)
@Transactional
class QuestionningAccreditationControllerTest {

@Autowired
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.transaction.annotation.Transactional;

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
Expand All @@ -40,6 +41,7 @@ void init() {
}

@Test
@Transactional
void getQuestioningOk() throws Exception {
Questioning questioning = questioningService.findBySurveyUnitIdSu("100000001").stream().findFirst().get();
Long id = questioning.getQuestioningAccreditations().stream().findFirst().get().getId();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.transaction.annotation.Transactional;

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
Expand All @@ -40,6 +41,7 @@ void init() {


@Test
@Transactional
void getQuestioningEventOk() throws Exception {
Questioning questioning = questioningService.findBySurveyUnitIdSu("100000001").stream().findFirst().get();
Long id = questioning.getQuestioningAccreditations().stream().findFirst().get().getId();
Expand Down

0 comments on commit 7e0fd40

Please sign in to comment.