Skip to content

Commit 9b93580

Browse files
committed
2024-11-06 - add inactive flag to ext-recip
1 parent 3b72766 commit 9b93580

12 files changed

+90
-48
lines changed

server/src/main/java/com/objectcomputing/checkins/services/feedback_external_recipient/FeedbackExternalRecipient.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,13 +65,19 @@ public class FeedbackExternalRecipient {
6565
@Schema(description = "company of the feedback external recipient")
6666
private String companyName;
6767

68+
@Column(name = "inactive")
69+
@Nullable
70+
@Schema(description = "Indicates if the external-recipient can no longer be used for feedback requests")
71+
private Boolean inactive;
72+
6873
public FeedbackExternalRecipient(
69-
@NotBlank String email, @Nullable String firstName, @Nullable String lastName, @Nullable String companyName
74+
@NotBlank String email, @Nullable String firstName, @Nullable String lastName, @Nullable String companyName, @Nullable Boolean inactive
7075
) {
7176
this.email = email;
7277
this.firstName = firstName;
7378
this.lastName = lastName;
7479
this.companyName = companyName;
80+
this.inactive = inactive;
7581
}
7682

7783
public FeedbackExternalRecipient() {}
@@ -86,12 +92,13 @@ public boolean equals(Object o) {
8692
&& Objects.equals(firstName, that.firstName)
8793
&& Objects.equals(lastName, that.lastName)
8894
&& Objects.equals(companyName, that.companyName)
95+
&& Objects.equals(inactive, that.inactive)
8996
;
9097
}
9198

9299
@Override
93100
public int hashCode() {
94-
return Objects.hash(id, email, firstName, lastName, companyName);
101+
return Objects.hash(id, email, firstName, lastName, companyName, inactive);
95102
}
96103

97104
@Override
@@ -102,6 +109,7 @@ public String toString() {
102109
", firstName='" + firstName + '\'' +
103110
", lastName='" + lastName + '\'' +
104111
", company='" + companyName + '\'' +
112+
", inactive='" + inactive + '\'' +
105113
'}';
106114
}
107115
}

server/src/main/java/com/objectcomputing/checkins/services/feedback_external_recipient/FeedbackExternalRecipientController.java

Lines changed: 13 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -41,38 +41,28 @@ public FeedbackExternalRecipientController(FeedbackExternalRecipientServices fee
4141
* @param feedbackExternalRecipientCreateDTO {@link FeedbackExternalRecipientCreateDTO} New feedback-req external recipient to create
4242
* @return {@link FeedbackExternalRecipient}
4343
*/
44-
@RequiredPermission(Permission.CAN_CREATE_FEEDBACK_REQUEST)
4544
@Post
4645
public HttpResponse<FeedbackExternalRecipientResponseDTO> save(@Body @Valid @NotNull FeedbackExternalRecipientCreateDTO feedbackExternalRecipientCreateDTO) {
4746
FeedbackExternalRecipient savedFeedbackExternalRecipient;
4847
FeedbackExternalRecipient feedbackExternalRecipientFromDto = fromDTO(feedbackExternalRecipientCreateDTO);
49-
try {
50-
savedFeedbackExternalRecipient = feedbackExternalRecipientServices.save(feedbackExternalRecipientFromDto);
51-
} catch (Exception e) {
52-
throw e;
53-
}
48+
savedFeedbackExternalRecipient = feedbackExternalRecipientServices.save(feedbackExternalRecipientFromDto);
5449
return HttpResponse.created(fromEntity(savedFeedbackExternalRecipient))
5550
.headers(headers -> headers.location(URI.create("/feedback_external_recipient/" + savedFeedbackExternalRecipient.getId())));
5651
}
5752

58-
/*
59-
@Get("/{?email, firstName, lastName, companyName}")
60-
public List<FeedbackExternalRecipientResponseDTO> findByValues(@Nullable String email, @Nullable String firstName, @Nullable String lastName, @Nullable String companyName) {
61-
return this.feedbackExternalRecipientServices.findByValues(email, firstName, lastName, companyName)
62-
.stream()
63-
.map(this::fromEntity)
64-
.toList();
65-
}
66-
*/
67-
6853
/**
69-
* Return list of all external-recipients used for feedback-requests
54+
* Update a feedback request external recipient
7055
*
71-
* @return list of {@link FeedbackExternalRecipientResponseDTO}
56+
* @param email The {@link String} email of the external-recipient
57+
* @param firstName The {@link String} first name of the external-recipient
58+
* @param lastName The {@link String} last name of the external-recipient
59+
* @param companyName The {@link String} company name of the external-recipient
60+
* @param inactive The {@link Boolean} inactive status of the external-recipient
61+
* @return {@link FeedbackExternalRecipient}
7262
*/
73-
@Get("/findAll")
74-
public List<FeedbackExternalRecipientResponseDTO> findAll() {
75-
return this.feedbackExternalRecipientServices.findAll()
63+
@Get("/{?email, firstName, lastName, companyName,inactive}")
64+
public List<FeedbackExternalRecipientResponseDTO> findByValues(@Nullable String email, @Nullable String firstName, @Nullable String lastName, @Nullable String companyName, @Nullable Boolean inactive) {
65+
return this.feedbackExternalRecipientServices.findByValues(email, firstName, lastName, companyName, inactive)
7666
.stream()
7767
.map(this::fromEntity)
7868
.toList();
@@ -96,6 +86,7 @@ private FeedbackExternalRecipient fromDTO(FeedbackExternalRecipientCreateDTO dto
9686
object.setFirstName(dto.getFirstName());
9787
object.setLastName(dto.getLastName());
9888
object.setCompanyName(dto.getCompanyName());
89+
object.setInactive(dto.getInactive());
9990
return object;
10091
}
10192

@@ -106,6 +97,7 @@ private FeedbackExternalRecipientResponseDTO fromEntity(FeedbackExternalRecipien
10697
dto.setFirstName(feedbackExternalRecipient.getFirstName());
10798
dto.setLastName(feedbackExternalRecipient.getLastName());
10899
dto.setCompanyName(feedbackExternalRecipient.getCompanyName());
100+
dto.setInactive(feedbackExternalRecipient.getInactive());
109101
return dto;
110102
}
111103

server/src/main/java/com/objectcomputing/checkins/services/feedback_external_recipient/FeedbackExternalRecipientCreateDTO.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import io.micronaut.core.annotation.Introspected;
44
import io.micronaut.core.annotation.Nullable;
55
import io.swagger.v3.oas.annotations.media.Schema;
6+
import jakarta.persistence.Column;
67
import jakarta.validation.constraints.NotBlank;
78
import jakarta.validation.constraints.NotNull;
89
import lombok.Getter;
@@ -33,6 +34,10 @@ public class FeedbackExternalRecipientCreateDTO {
3334
@Schema(description = "company-name of the feedback-external-recipient")
3435
private String companyName;
3536

37+
@Nullable
38+
@Schema(description = "Indicates if the external-recipient can no longer be used for feedback requests")
39+
private Boolean inactive;
40+
3641
@Override
3742
public boolean equals(@Nullable Object o) {
3843
if (this == o) return true;
@@ -43,12 +48,13 @@ public boolean equals(@Nullable Object o) {
4348
&& Objects.equals(firstName, that.firstName)
4449
&& Objects.equals(lastName, that.lastName)
4550
&& Objects.equals(companyName, that.companyName)
51+
&& Objects.equals(inactive, that.inactive)
4652
;
4753
}
4854

4955
@Override
5056
public int hashCode() {
51-
return Objects.hash(email, firstName, lastName, companyName);
57+
return Objects.hash(email, firstName, lastName, companyName, inactive);
5258
}
5359

5460
}

server/src/main/java/com/objectcomputing/checkins/services/feedback_external_recipient/FeedbackExternalRecipientRepository.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,27 @@ public interface FeedbackExternalRecipientRepository extends CrudRepository<Feed
2323
<S extends FeedbackExternalRecipient> S save(@Valid @NotNull @NonNull S entity);
2424
@Override
2525
<S extends FeedbackExternalRecipient> S update(@NotNull @NonNull S entity);
26+
27+
// , PGP_SYM_DECRYPT(cast(FER. as bytea), '${aes.key}') as
28+
29+
@Query("" +
30+
"SELECT id" +
31+
", PGP_SYM_DECRYPT(cast(FER.email as bytea), '${aes.key}') as email" +
32+
", PGP_SYM_DECRYPT(cast(FER.firstname as bytea), '${aes.key}') as firstname" +
33+
", PGP_SYM_DECRYPT(cast(FER.lastname as bytea), '${aes.key}') as lastname" +
34+
", PGP_SYM_DECRYPT(cast(FER.company_name as bytea), '${aes.key}') as company_name" +
35+
", FER.inactive " +
36+
"FROM feedback_external_recipient FER " +
37+
"WHERE 1=1 " +
38+
"AND (:email IS NULL OR FER.email = :email) " +
39+
"AND (:firstName IS NULL OR FER.firstName = :firstName) " +
40+
"AND (:lastName IS NULL OR FER.lastName = :lastName) " +
41+
"AND (:companyName IS NULL OR FER.company_name = :companyName) " +
42+
"AND (:inactive IS NULL OR coalesce(FER.inactive,false) = :inactive)"
43+
)
44+
List<FeedbackExternalRecipient> findByValues(
45+
@Nullable String email, @Nullable String firstName, @Nullable String lastName, @Nullable String companyName, @Nullable Boolean inactive
46+
);
47+
2648
}
2749

server/src/main/java/com/objectcomputing/checkins/services/feedback_external_recipient/FeedbackExternalRecipientResponseDTO.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,4 +35,8 @@ public class FeedbackExternalRecipientResponseDTO {
3535
@Schema(description = "company-name of the feedback-external-recipient")
3636
private String companyName;
3737

38+
@Nullable
39+
@Schema(description = "Indicates if the external-recipient can no longer be used for feedback requests")
40+
private Boolean inactive;
41+
3842
}

server/src/main/java/com/objectcomputing/checkins/services/feedback_external_recipient/FeedbackExternalRecipientServices.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,8 @@ public interface FeedbackExternalRecipientServices {
99

1010
FeedbackExternalRecipient update(FeedbackExternalRecipientUpdateDTO feedbackExternalRecipientUpdateDTO);
1111

12-
void delete(UUID id);
13-
1412
FeedbackExternalRecipient getById(UUID id);
1513

16-
//List<FeedbackExternalRecipient> findByValues(String email, String firstName, String lastName, String companyName);
17-
18-
List<FeedbackExternalRecipient> findAll();
14+
List<FeedbackExternalRecipient> findByValues(String email, String firstName, String lastName, String companyName, Boolean inactive);
1915

2016
}

server/src/main/java/com/objectcomputing/checkins/services/feedback_external_recipient/FeedbackExternalRecipientServicesImpl.java

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,6 @@ public FeedbackExternalRecipient update(FeedbackExternalRecipientUpdateDTO feedb
2525
return null;
2626
}
2727

28-
@Override
29-
public void delete(UUID id) {
30-
31-
}
32-
3328
@Override
3429
public FeedbackExternalRecipient getById(UUID id) {
3530
Optional<FeedbackExternalRecipient> optional = feedbackExternalRecipientRepository.findById(id);
@@ -41,17 +36,8 @@ public FeedbackExternalRecipient getById(UUID id) {
4136
}
4237

4338
@Override
44-
public List<FeedbackExternalRecipient> findAll() {
45-
return feedbackExternalRecipientRepository.findAll();
46-
}
47-
48-
/*
49-
@Override
50-
public List<FeedbackExternalRecipient> findByValues(@Nullable String email, @Nullable String firstName, @Nullable String lastName, @Nullable String companyName) {
51-
List<FeedbackExternalRecipient> feedbackExternalRecipients = new ArrayList<>(feedbackExternalRecipientRepository.search());
52-
53-
return feedbackExternalRecipients;
39+
public List<FeedbackExternalRecipient> findByValues(@Nullable String email, @Nullable String firstName, @Nullable String lastName, @Nullable String companyName, @Nullable Boolean inactive) {
40+
return feedbackExternalRecipientRepository.findByValues(email, firstName, lastName, companyName, inactive);
5441
}
55-
*/
5642

5743
}

server/src/main/java/com/objectcomputing/checkins/services/feedback_external_recipient/FeedbackExternalRecipientUpdateDTO.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import io.micronaut.core.annotation.Introspected;
44
import io.micronaut.core.annotation.Nullable;
55
import io.swagger.v3.oas.annotations.media.Schema;
6+
import jakarta.persistence.Column;
67
import jakarta.validation.constraints.NotBlank;
78
import jakarta.validation.constraints.NotNull;
89
import lombok.Getter;
@@ -36,5 +37,9 @@ public class FeedbackExternalRecipientUpdateDTO {
3637
@Schema(description = "company-name of the feedback-external-recipient")
3738
private String companyName;
3839

40+
@Nullable
41+
@Schema(description = "Indicates if the external-recipient can no longer be used for feedback requests")
42+
private Boolean inactive;
43+
3944
}
4045

server/src/main/java/com/objectcomputing/checkins/services/feedback_request/FeedbackRequestExternalRecipientController.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,12 @@ public FeedbackRequestExternalRecipientController(FeedbackRequestServices feedba
4040
this.feedbackExternalRecipientServices = feedbackExternalRecipientServices;
4141
}
4242

43+
/**
44+
* Retrieve feedback request record by ID
45+
*
46+
* @param id {@link UUID} ID of feedback request record to retrieve
47+
* @return {@link FeedbackRequestResponseDTO}
48+
*/
4349
@Get("/{id}")
4450
public HttpResponse<FeedbackRequestResponseDTO> getById(UUID id) {
4551
FeedbackRequest feedbackRequest = feedbackReqServices.getById(id);
@@ -50,13 +56,26 @@ public HttpResponse<FeedbackRequestResponseDTO> getById(UUID id) {
5056
.headers(headers -> headers.location(URI.create("/feedback_request" + feedbackRequest.getId())));
5157
}
5258

59+
/**
60+
* Find feedback requests by values
61+
* @param creatorId {@link UUID} ID of the creator
62+
* @param requesteeId {@link UUID} ID of the requestee
63+
* @param recipientId {@link UUID} ID of the recipient
64+
* @param oldestDate {@link LocalDate} The oldest date to search for
65+
* @param reviewPeriodId {@link UUID} ID of the review period
66+
* @param templateId {@link UUID} ID of the template
67+
* @param externalRecipientId {@link UUID} ID of the external recipient
68+
* @return {@link FeedbackRequestResponseDTO}
69+
*/
70+
/*
5371
@Get("/{?creatorId,requesteeId,recipientId,oldestDate,reviewPeriodId,templateId,externalRecipientId,requesteeIds}")
5472
public List<FeedbackRequestResponseDTO> findByValues(@Nullable UUID creatorId, @Nullable UUID requesteeId, @Nullable UUID recipientId, @Nullable @Format("yyyy-MM-dd") LocalDate oldestDate, @Nullable UUID reviewPeriodId, @Nullable UUID templateId, UUID externalRecipientId, @Nullable List<UUID> requesteeIds) {
5573
return feedbackReqServices.findByValues(creatorId, requesteeId, recipientId, oldestDate, reviewPeriodId, templateId, externalRecipientId, requesteeIds)
5674
.stream()
5775
.map(this::feedbackRequestFromEntity)
5876
.toList();
5977
}
78+
*/
6079

6180
@Get("/hello")
6281
@Produces(MediaType.TEXT_HTML)
@@ -99,7 +118,6 @@ private FeedbackRequestResponseDTO feedbackRequestFromEntity(FeedbackRequest fee
99118
dto.setSubmitDate(feedbackRequest.getSubmitDate());
100119
dto.setReviewPeriodId(feedbackRequest.getReviewPeriodId());
101120
dto.setExternalRecipientId(feedbackRequest.getExternalRecipientId());
102-
103121
return dto;
104122
}
105123

server/src/main/resources/db/common/V202410241018__feedback_external_recipient.sql

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ CREATE TABLE feedback_external_recipient
44
email varchar,
55
firstname varchar,
66
lastname varchar,
7-
company_name varchar
7+
company_name varchar,
8+
inactive boolean
89
);
910
ALTER TABLE feedback_requests ADD column external_recipient_id varchar;
1011
ALTER TABLE feedback_requests ADD CONSTRAINT feedback_requests_externalrecipientid_fkey FOREIGN KEY (external_recipient_id) REFERENCES feedback_external_recipient(id) ON DELETE CASCADE;

0 commit comments

Comments
 (0)