Skip to content

Commit

Permalink
ADD: p360 integration
Browse files Browse the repository at this point in the history
Co-authored-by: andregroseth <lord.andre.groseth@nav.no>
  • Loading branch information
JeremiahUy and andregroseth committed Feb 19, 2025
1 parent 0750463 commit 8e68f5d
Show file tree
Hide file tree
Showing 14 changed files with 350 additions and 0 deletions.
2 changes: 2 additions & 0 deletions apps/backend/nais/backend-dev-gcp-vars.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ env:
value: https://teamkatalog.intern.nav.no/
- name: CLIENT_POLLY_URL
value: http://behandlingskatalog-backend.teamdatajegerne
- name: CLIENT_P360_URL
value: https://nav-test.public360online.com/Biz/v2/api/call/SI.Data.RPC/SI.Data.RPC
- name: AZURE_CLIENT_GROUPS
value: 7d275d5e-59a5-473d-b530-a9091b3de4c6
- name: AZURE_CLIENT_GROUPS_ADMIN
Expand Down
2 changes: 2 additions & 0 deletions apps/backend/nais/backend-prod-gcp-vars.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ env:
value: https://teamkatalog.nav.no
- name: CLIENT_POLLY_URL
value: http://behandlingskatalog-backend.teamdatajegerne
- name: CLIENT_P360_URL
value: http://behandlingskatalog-backend.teamdatajegerne
- name: AZURE_CLIENT_GROUPS
value: 7d275d5e-59a5-473d-b530-a9091b3de4c6
- name: AZURE_CLIENT_GROUPS_ADMIN
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package no.nav.data.integration.p360;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

@Data
@Configuration
@ConfigurationProperties(prefix = "client.p360")
public class P360Properties {
private String url;
private String caseUrl;
private String documentUrl;
private String authKey;
private String clientId;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
package no.nav.data.integration.p360;

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import no.nav.data.integration.p360.dto.*;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestClientException;
import org.springframework.web.client.RestTemplate;

import java.util.List;

import static java.util.Objects.requireNonNull;

@Slf4j
@Service
@RequiredArgsConstructor
public class P360Service {

private final RestTemplate restTemplate;
private final P360Properties p360Properties;


public List<P360Case> getCasesByTitle(String title) {
List<P360Case> cases = List.of();

var headers = new HttpHeaders();
headers.setBearerAuth("token placeholder for azure token");
headers.set("authkey", p360Properties.getAuthKey());
headers.set("clientid", p360Properties.getClientId());

try {
var response = restTemplate.postForEntity(p360Properties.getCaseUrl() + "/GetCases",
new HttpEntity<>( P360GetRequest.builder().title("%" + title + "%").build(), headers),
P360CasePageResponse.class);
cases = response.hasBody() ? requireNonNull(response.getBody()).getCases() : List.of();
} catch (RestClientException e) {
log.error("Unable to connect to P360, error: {}", String.valueOf(e));
}
return cases;
}

public List<P360Case> getCasesByCaseNumber(String caseNumber) {
List<P360Case> cases = List.of();

var headers = new HttpHeaders();
headers.setBearerAuth("token placeholder for azure token");
headers.set("authkey", p360Properties.getAuthKey());
headers.set("clientid", p360Properties.getClientId());

try {
var response = restTemplate.postForEntity(p360Properties.getCaseUrl() + "/GetCases",
new HttpEntity<>( P360GetRequest.builder().CaseNumber(caseNumber).build(), headers),
P360CasePageResponse.class);
cases = response.hasBody() ? requireNonNull(response.getBody()).getCases() : List.of();
} catch (RestClientException e) {
log.error("Unable to connect to P360, error: {}", String.valueOf(e));
}
return cases;
}

public P360Case createCase(P360CaseRequest request) {

var headers = new HttpHeaders();
headers.setBearerAuth("token placeholder for azure token");
headers.set("authkey", p360Properties.getAuthKey());
headers.set("clientid", p360Properties.getClientId());

try {
var response = restTemplate.postForEntity(p360Properties.getCaseUrl() + "/CreateCase",
new HttpEntity<>( request, headers),
P360Case.class);
return response.getBody();
} catch (RestClientException e) {
log.error("Unable to connect to P360, error: {}", String.valueOf(e));
return null;
}
}

public List<P360Document> getDocumentByCaseNumber(String caseNumber) {
List<P360Document> documents = List.of();

var headers = new HttpHeaders();
headers.setBearerAuth("token placeholder for azure token");
headers.set("authkey", p360Properties.getAuthKey());
headers.set("clientid", p360Properties.getClientId());

try {
var response = restTemplate.postForEntity(p360Properties.getCaseUrl() + "/GetDocuments",
new HttpEntity<>( P360GetRequest.builder().CaseNumber(caseNumber).build(), headers),
P360DocumentPageResponse.class);
documents = response.hasBody() ? requireNonNull(response.getBody()).getDocuments() : List.of();
} catch (RestClientException e) {
log.error("Unable to connect to P360, error: {}", String.valueOf(e));
}
return documents;
}

public P360Document createDocument(P360DocumentCreateRequest request) {

var headers = new HttpHeaders();
headers.setBearerAuth("token placeholder for azure token");
headers.set("authkey", p360Properties.getAuthKey());
headers.set("clientid", p360Properties.getClientId());

try {
var response = restTemplate.postForEntity(p360Properties.getCaseUrl() + "/CreateDocument",
new HttpEntity<>(request, headers),
P360Document.class);
return response.getBody();
} catch (RestClientException e) {
log.error("Unable to connect to P360, error: {}", String.valueOf(e));
return null;
}
}

public P360Document updateDocument(P360DocumentUpdateRequest request) {

var headers = new HttpHeaders();
headers.setBearerAuth("token placeholder for azure token");
headers.set("authkey", p360Properties.getAuthKey());
headers.set("clientid", p360Properties.getClientId());

try {
var response = restTemplate.postForEntity(p360Properties.getCaseUrl() + "/UpdateDocument",
new HttpEntity<>(request, headers),
P360Document.class);
return response.getBody();
} catch (RestClientException e) {
log.error("Unable to connect to P360, error: {}", String.valueOf(e));
return null;
}
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package no.nav.data.integration.p360.dto;

import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class P360Case {
private Integer Recno;
private String CaseNumber;
private Boolean Successful;
private String ErrorMessage;
private String ErrorDetails;

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package no.nav.data.integration.p360.dto;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class P360CasePageResponse {
private List<P360Case> Cases;
private Integer TotalPageCount;
private Integer TotalCount;
private Boolean Successful;
private String ErrorMessage;
private String ErrorDetails;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package no.nav.data.integration.p360.dto;


import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.FieldNameConstants;

@Data
@Builder
@FieldNameConstants
@NoArgsConstructor
@AllArgsConstructor
public class P360CaseRequest {
private String CaseType;
private String DefaultValueSet;
private String Title;
private String Status;
private String AccessCode;
private String AccessGroup;
private String ResponsiblePersonEmail;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package no.nav.data.integration.p360.dto;


import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class P360Document {

private Integer Recno;
private String DocumentNumber;

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package no.nav.data.integration.p360.dto;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class P360DocumentCreateRequest {

private String CaseNumber;
private String Archive;
private String DefaultValueSet;
private String Title;
private String DocumentDate;
private String Category;
private String Status;
private String AccessGroup;
private String ResponsiblePersonEmail;
private List<P360File> Files;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package no.nav.data.integration.p360.dto;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class P360DocumentPageResponse {
private List<P360Document> Documents;
private Integer TotalPageCount;
private Integer TotalCount;
private Boolean Successful;
private String ErrorMessage;
private String ErrorDetails;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package no.nav.data.integration.p360.dto;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class P360DocumentUpdateRequest {

private String DocumentNumber;
private String Archive;
private String DefaultValueSet;
private String Title;
private String DocumentDate;
private String Category;
private String Status;
private String AccessGroup;
private String ResponsiblePersonEmail;
private List<P360File> Files;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package no.nav.data.integration.p360.dto;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class P360File {
private String Format;
private String Title;
private String Base64Data;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package no.nav.data.integration.p360.dto;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.FieldNameConstants;

@Data
@Builder
@FieldNameConstants
@NoArgsConstructor
@AllArgsConstructor
public class P360GetRequest {
private String title;
private String CaseNumber;
}
6 changes: 6 additions & 0 deletions apps/backend/src/main/resources/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,12 @@ client:
resources-url: ${client.teamcat.url}/resource/multi
teams-url: ${client.teamcat.url}/team
url: https://teamcat/api
p360:
case-url: ${client.p360.url}/CaseService
document-url: ${client.p360.url}/DocumentService
url: ${client.p360.url:https://something}
auth-key: ${P360_AUTH_KEY:tokenkey}
client-id: ${P360_INTEGRATION_CLIENT_ID:clientId}
slack:
base-url: https://slack.com/api
token: ${SLACK_TOKEN:token}
Expand Down

0 comments on commit 8e68f5d

Please sign in to comment.