Skip to content

Commit

Permalink
[SELC-5804] feat: added api to import a psp
Browse files Browse the repository at this point in the history
  • Loading branch information
pierpaolodidato89 authored Oct 29, 2024
1 parent 4a70509 commit cbab0e3
Show file tree
Hide file tree
Showing 10 changed files with 2,353 additions and 2,082 deletions.
60 changes: 60 additions & 0 deletions apps/onboarding-ms/src/main/docs/openapi.json
Original file line number Diff line number Diff line change
Expand Up @@ -902,6 +902,44 @@
} ]
}
},
"/v1/onboarding/psp/import" : {
"post" : {
"tags" : [ "Onboarding Controller" ],
"summary" : "Import PSP onboarding with token creation and complete to COMPLETED.",
"description" : "Perform onboarding as /onboarding/psp but create token and completing the onboarding request to COMPLETED phase.",
"operationId" : "onboardingPspImport",
"requestBody" : {
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/OnboardingImportPspRequest"
}
}
}
},
"responses" : {
"200" : {
"description" : "OK",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/OnboardingResponse"
}
}
}
},
"401" : {
"description" : "Not Authorized"
},
"403" : {
"description" : "Not Allowed"
}
},
"security" : [ {
"SecurityScheme" : [ ]
} ]
}
},
"/v1/onboarding/users" : {
"post" : {
"tags" : [ "Onboarding Controller" ],
Expand Down Expand Up @@ -2287,6 +2325,28 @@
},
"createdAt" : {
"$ref" : "#/components/schemas/LocalDateTime"
},
"activatedAt" : {
"$ref" : "#/components/schemas/LocalDateTime"
}
}
},
"OnboardingImportPspRequest" : {
"required" : [ "institution", "productId", "contractImported" ],
"type" : "object",
"properties" : {
"institution" : {
"$ref" : "#/components/schemas/InstitutionPspRequest"
},
"billing" : {
"$ref" : "#/components/schemas/BillingRequest"
},
"productId" : {
"minLength" : 1,
"type" : "string"
},
"contractImported" : {
"$ref" : "#/components/schemas/OnboardingImportContract"
}
}
},
Expand Down
44 changes: 44 additions & 0 deletions apps/onboarding-ms/src/main/docs/openapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -652,6 +652,32 @@ paths:
description: Not Allowed
security:
- SecurityScheme: []
/v1/onboarding/psp/import:
post:
tags:
- Onboarding Controller
summary: Import PSP onboarding with token creation and complete to COMPLETED.
description: Perform onboarding as /onboarding/psp but create token and completing
the onboarding request to COMPLETED phase.
operationId: onboardingPspImport
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/OnboardingImportPspRequest"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/OnboardingResponse"
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
/v1/onboarding/users:
post:
tags:
Expand Down Expand Up @@ -1659,6 +1685,24 @@ components:
type: string
createdAt:
$ref: "#/components/schemas/LocalDateTime"
activatedAt:
$ref: "#/components/schemas/LocalDateTime"
OnboardingImportPspRequest:
required:
- institution
- productId
- contractImported
type: object
properties:
institution:
$ref: "#/components/schemas/InstitutionPspRequest"
billing:
$ref: "#/components/schemas/BillingRequest"
productId:
minLength: 1
type: string
contractImported:
$ref: "#/components/schemas/OnboardingImportContract"
OnboardingImportRequest:
required:
- institution
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,20 @@ public Uni<OnboardingResponse> onboardingPaImport(@Valid OnboardingImportRequest
.onboardingImport(fillUserId(onboardingMapper.toEntity(onboardingRequest), userId), onboardingRequest.getUsers(), onboardingRequest.getContractImported()));
}

@Operation(
summary = "Import PSP onboarding with token creation and complete to COMPLETED.",
description = "Perform onboarding as /onboarding/psp but create token and completing the onboarding request to COMPLETED phase."
)
@POST
@Path("/psp/import")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Uni<OnboardingResponse> onboardingPspImport(@Valid OnboardingImportPspRequest onboardingRequest, @Context SecurityContext ctx) {
return readUserIdFromToken(ctx)
.onItem().transformToUni(userId -> onboardingService
.onboardingImport(fillUserId(onboardingMapper.toEntity(onboardingRequest), userId), List.of(), onboardingRequest.getContractImported()));
}

@Operation(
summary = "Complete PSP onboarding request and set status to COMPLETED.",
description = "Perform onboarding as /onboarding/psp but completing the onboarding request to COMPLETED phase."
Expand All @@ -200,7 +214,6 @@ public Uni<OnboardingResponse> onboardingPspCompletion(@Valid OnboardingPspReque
.onboardingCompletion(fillUserId(onboardingMapper.toEntity(onboardingRequest), userId), onboardingRequest.getUsers()));
}


@Operation(
summary = "Complete PG onboarding request on PNPG domain and set status to COMPLETED.",
description = "Perform onboarding as /onboarding/psp but completing the onboarding request to COMPLETED phase."
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,17 @@

import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

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

@NotEmpty(message = "fileName is required")
Expand All @@ -16,4 +22,5 @@ public class OnboardingImportContract {
private String contractType;
@NotNull(message = "createdAt is required")
private LocalDateTime createdAt;
private LocalDateTime activatedAt;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package it.pagopa.selfcare.onboarding.controller.request;

import jakarta.validation.Valid;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

@Data
public class OnboardingImportPspRequest {

@NotNull(message = "institutionData is required")
@Valid
private InstitutionPspRequest institution;

private BillingRequest billing;

@NotEmpty(message = "productId is required")
private String productId;

@NotNull
private OnboardingImportContract contractImported;

}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import lombok.Data;

import java.util.ArrayList;
import java.util.List;

@Data
public class PaymentServiceProviderRequest {
Expand All @@ -11,7 +11,7 @@ public class PaymentServiceProviderRequest {
private String legalRegisterNumber;
private String legalRegisterName;
private boolean vatNumberGroup;
private ArrayList<String> providerNames;
private List<String> providerNames;
private String contractType;
private String contractId;
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import org.mapstruct.*;
import org.openapi.quarkus.onboarding_functions_json.model.PartyRole;

import java.time.LocalDateTime;
import java.time.OffsetDateTime;
import java.util.Collections;
import java.util.List;
Expand Down Expand Up @@ -40,7 +41,10 @@ public interface OnboardingMapper {
@Mapping(target = "id", expression = "java(UUID.randomUUID().toString())")
@Mapping(target = "activatedAt", source = "contractImported.createdAt")
Onboarding toEntity(OnboardingImportRequest request);

@Mapping(target = "id", expression = "java(UUID.randomUUID().toString())")
@Mapping(target = "activatedAt", source = "contractImported", qualifiedByName = "getActivatedAt")
@Mapping(target = "billing.recipientCode", source = "billing.recipientCode", qualifiedByName = "toUpperCase")
Onboarding toEntity(OnboardingImportPspRequest request);
@Mapping(source = "taxCode", target = "institution.taxCode")
@Mapping(source = "businessName", target = "institution.description")
@Mapping(source = "digitalAddress", target = "institution.digitalAddress")
Expand Down Expand Up @@ -74,6 +78,14 @@ default String toUpperCase(String recipientCode) {
return Objects.nonNull(recipientCode) ? recipientCode.toUpperCase() : null;
}

@Named("getActivatedAt")
default LocalDateTime getActivatedAt(OnboardingImportContract onboardingImportContract) {
if (Objects.nonNull(onboardingImportContract.getActivatedAt())) {
return onboardingImportContract.getActivatedAt();
}
return onboardingImportContract.getCreatedAt();
}

@Mapping(target = "workflowType", source = "workflowType", qualifiedByName = "toWorkflowType")
@Mapping(target = "users", source = "users", qualifiedByName = "toUsers")
@Mapping(target = "createdAt", source = "createdAt", qualifiedByName = "toOffsetDateTime")
Expand Down
Loading

0 comments on commit cbab0e3

Please sign in to comment.