diff --git a/backend/pom.xml b/backend/pom.xml
index 7fd7d06..179e5dd 100644
--- a/backend/pom.xml
+++ b/backend/pom.xml
@@ -17,7 +17,23 @@
spring-boot-starter-parent
2.7.8
-
+
+
+ local
+
+ true
+
+
+ local
+
+
+
+ container
+
+ container
+
+
+
11
@@ -173,5 +189,6 @@
+
diff --git a/backend/src/main/java/com/nttdata/calender/ApiApplication.java b/backend/src/main/java/com/nttdata/calender/ApiApplication.java
index 8526a15..ce7cc80 100644
--- a/backend/src/main/java/com/nttdata/calender/ApiApplication.java
+++ b/backend/src/main/java/com/nttdata/calender/ApiApplication.java
@@ -8,10 +8,14 @@ import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.context.annotation.Bean;
import org.springframework.session.MapSessionRepository;
+import javax.annotation.PostConstruct;
@SpringBootApplication
public class ApiApplication extends SpringBootServletInitializer {
+ // @org.springframework.beans.factory.annotation.Value("${greeting.message}")
+ // private String greetingMessage;
+
public static void main(String[] args) {
SpringApplication.run(ApiApplication.class, args);
}
diff --git a/backend/src/main/java/com/nttdata/calender/ApplicationConfig.java b/backend/src/main/java/com/nttdata/calender/ApplicationConfig.java
new file mode 100644
index 0000000..6b7be7b
--- /dev/null
+++ b/backend/src/main/java/com/nttdata/calender/ApplicationConfig.java
@@ -0,0 +1,56 @@
+package com.nttdata.calender;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.springframework.stereotype.Service;
+
+import org.springframework.beans.factory.annotation.Value;
+
+/**
+ * Java API for Remedy
+ */
+@Service
+public class ApplicationConfig {
+
+ @Value("${rssoActive}")
+ private Boolean rssoActive;
+
+ public Boolean getRssoActive() {
+ if(this.rssoActive==null)
+ return true;
+
+ return rssoActive;
+ }
+
+ @Value("${arserver}")
+ private String arserver;
+
+ public String getArserver() {
+ return arserver;
+ }
+
+ @Value("${arport}")
+ private Integer arport;
+
+ public Integer getArport() {
+ return arport;
+ }
+
+ @Value("${aruser}")
+ private String aruser;
+
+ public String getAruser() {
+ return aruser;
+ }
+
+ @Value("${arpassword}")
+ private String arpassword;
+
+ public String getArpassword() {
+ return arpassword;
+ }
+}
\ No newline at end of file
diff --git a/backend/src/main/java/com/nttdata/calender/api/RemedyJavaAPI.java b/backend/src/main/java/com/nttdata/calender/api/RemedyJavaAPI.java
index cebe13d..2189d13 100644
--- a/backend/src/main/java/com/nttdata/calender/api/RemedyJavaAPI.java
+++ b/backend/src/main/java/com/nttdata/calender/api/RemedyJavaAPI.java
@@ -24,6 +24,9 @@ import com.nttdata.calender.errorhandling.ErrorTypes.NotFoundError;
import com.nttdata.calender.states.State;
import com.nttdata.calender.supportgroup.SupportGroup;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.nttdata.calender.ApplicationConfig;
+
/**
* Java API for Remedy
*/
@@ -35,17 +38,24 @@ public class RemedyJavaAPI {
private static Logger applicationLogger = LogManager.getLogger("application");
// TODO: work with form CTM:Support Group
private static final String QUALSTR = "\'Request ID\' != \"\"";
+ private ApplicationConfig appConfig;
+
+ // @org.springframework.beans.factory.annotation.Value("${greeting.message}")
+ // private String greetingMessage;
/**
* Sets up the Remedy API with the server and admin user/password.
*/
- public RemedyJavaAPI() throws ARException, NotFoundError {
+
+ public RemedyJavaAPI(ApplicationConfig appConfig) throws ARException, NotFoundError {
+ this.appConfig=appConfig;
+ System.out.println(appConfig.getRssoActive());
server = new ARServerUser();
// server.setServer("itsm-app-dev.asfinag.at");
- server.setServer("itsm-app-dev-neu.asfinag.at");
- server.setUser("changecalender_integration");
- server.setPassword("VXrvLm4q#8P#MXthfZNc");
- server.setPort(46262);
+ server.setServer(this.appConfig.getArserver());
+ server.setUser(this.appConfig.getAruser());
+ server.setPassword(this.appConfig.getArpassword());
+ server.setPort(this.appConfig.getArport());
// server.setPort(50000);
this.connect();
diff --git a/backend/src/main/java/com/nttdata/calender/api/RequestInterceptor.java b/backend/src/main/java/com/nttdata/calender/api/RequestInterceptor.java
index 6dd62e2..0d224f4 100644
--- a/backend/src/main/java/com/nttdata/calender/api/RequestInterceptor.java
+++ b/backend/src/main/java/com/nttdata/calender/api/RequestInterceptor.java
@@ -3,6 +3,7 @@ package com.nttdata.calender.api;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.stereotype.Component;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;
@@ -27,14 +28,21 @@ import java.util.List;
@Component
public class RequestInterceptor implements HandlerInterceptor {
+
+
+ // @org.springframework.beans.factory.annotation.Value("${greeting.message}")
+ // private String greetingMessage;
+
+ @Autowired
private RemedyJavaAPI api;
+
private static final String FORM_NAME = "ASF:CHG_CAL_Transactions";
private static final Logger logger = LogManager.getLogger("application");
private static final DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
- api = new RemedyJavaAPI();
+ //api = new RemedyJavaAPI(greetingMessage);
String currentDateTime = LocalDateTime.now().format(dateTimeFormatter);
long transactionId = System.currentTimeMillis();
String out = String.format("Transaction ID = %d %s - handling request: %s", transactionId, currentDateTime, request.getRequestURI());
diff --git a/backend/src/main/java/com/nttdata/calender/api/rsso/RssoInterceptor.java b/backend/src/main/java/com/nttdata/calender/api/rsso/RssoInterceptor.java
index 8d7f562..73a9f4e 100644
--- a/backend/src/main/java/com/nttdata/calender/api/rsso/RssoInterceptor.java
+++ b/backend/src/main/java/com/nttdata/calender/api/rsso/RssoInterceptor.java
@@ -9,6 +9,8 @@ import org.springframework.web.servlet.HandlerInterceptor;
import com.bmc.thirdparty.org.springframework.beans.factory.annotation.Autowired;
+import com.nttdata.calender.ApplicationConfig;
+import com.nttdata.calender.api.RemedyJavaAPI;
/**
* Interceptor for handling Rsso related operations.
*/
@@ -17,10 +19,15 @@ public class RssoInterceptor implements HandlerInterceptor {
private final static boolean DEBUG = true;
private final Rsso rsso;
private static final Logger applicationLogger = LogManager.getLogger("application");
+ private ApplicationConfig appConfig;
+ //EW env Fix
+ private final RemedyJavaAPI javaAPI;
@Autowired
- public RssoInterceptor(Rsso rsso) {
+ public RssoInterceptor(Rsso rsso, ApplicationConfig appConfig, RemedyJavaAPI javaAPI) {
this.rsso = rsso;
+ this.appConfig=appConfig;
+ this.javaAPI=javaAPI;
}
/**
@@ -39,7 +46,8 @@ public class RssoInterceptor implements HandlerInterceptor {
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
// Check if a session exists, create one if not
- if (DEBUG) {
+ if (!this.appConfig.getRssoActive()) {
+ this.javaAPI.impersonateUser("WuiQualityKV");
return true;
}
diff --git a/backend/src/main/java/com/nttdata/calender/approval/Approval.java b/backend/src/main/java/com/nttdata/calender/approval/Approval.java
index f843d82..5ab33bf 100644
--- a/backend/src/main/java/com/nttdata/calender/approval/Approval.java
+++ b/backend/src/main/java/com/nttdata/calender/approval/Approval.java
@@ -49,8 +49,8 @@ public class Approval {
public String update(ApprovalUpdateRequest request) throws ARException {
// Clear the list before processing a new request
listOfFieldValues.clear();
-
- remedyJavaAPI.impersonateUser("WuiQualityKV");
+
+ //remedyJavaAPI.impersonateUser("WuiQualityKV");
String action = "APPROVAL";
var queryUpdate = new Query.QueryBuilder("ASF:CHG_CAL_Interactions")
diff --git a/backend/src/main/java/com/nttdata/calender/presets/Presets.java b/backend/src/main/java/com/nttdata/calender/presets/Presets.java
index 8dac690..f2f646e 100644
--- a/backend/src/main/java/com/nttdata/calender/presets/Presets.java
+++ b/backend/src/main/java/com/nttdata/calender/presets/Presets.java
@@ -58,7 +58,7 @@ public class Presets {
this.presets = new ArrayList<>();
this.listOfFieldValues = new ArrayList<>();
- api.impersonateUser("WuiQualityKV");
+ //api.impersonateUser("WuiQualityKV");
}
/**
diff --git a/backend/src/main/java/com/nttdata/calender/supportgroup/SupportGroup.java b/backend/src/main/java/com/nttdata/calender/supportgroup/SupportGroup.java
index e8972c4..b141862 100644
--- a/backend/src/main/java/com/nttdata/calender/supportgroup/SupportGroup.java
+++ b/backend/src/main/java/com/nttdata/calender/supportgroup/SupportGroup.java
@@ -51,7 +51,7 @@ public class SupportGroup {
*/
public void querySupportGroups(RemedyJavaAPI api) throws ARException, NotFoundError {
- api.impersonateUser("WuiQualityKV");
+ //api.impersonateUser("WuiQualityKV");
applicationLogger.info("\n\n\nRequest: querySupportGroups (Initial)\nUser: " + api.getUser() + "\nAdmin? "
+ (api.isAdministrator() ? "Yes" : "No"));
@@ -112,7 +112,7 @@ public class SupportGroup {
* @throws ARException if an error occurs during the query
*/
public void queryUserSupportGroup(RemedyJavaAPI api) throws ARException {
- api.impersonateUser("WuiQualityKV");
+ //api.impersonateUser("WuiQualityKV");
var querySupportGroups = new Query.QueryBuilder("CTM:Support Group Association")
.addFieldId("SupportGroupId", 1000000079).build();
diff --git a/backend/src/main/resources/application-container.properties b/backend/src/main/resources/application-container.properties
new file mode 100644
index 0000000..e9b09c7
--- /dev/null
+++ b/backend/src/main/resources/application-container.properties
@@ -0,0 +1 @@
+rssoActive=true
\ No newline at end of file
diff --git a/backend/src/main/resources/application-local.properties b/backend/src/main/resources/application-local.properties
new file mode 100644
index 0000000..505dc81
--- /dev/null
+++ b/backend/src/main/resources/application-local.properties
@@ -0,0 +1,6 @@
+rssoActive=false
+arserver=itsm-app-dev-neu.asfinag.at
+# arserver=${test}
+arport=46262
+aruser=changecalender_integration
+arpassword=VXrvLm4q#8P#MXthfZNc
\ No newline at end of file
diff --git a/backend/src/main/resources/application.properties b/backend/src/main/resources/application.properties
index c239ca1..3b79e14 100644
--- a/backend/src/main/resources/application.properties
+++ b/backend/src/main/resources/application.properties
@@ -1,3 +1,4 @@
#server.servlet.context-path=/test
server.servlet.session.timeout=24h
# server.port=${PROBE_PORT:8080}
+spring.profiles.active=@spring.profiles.active@
diff --git a/frontend/src/app/ntt-gantt/ntt-gantt.component.ts b/frontend/src/app/ntt-gantt/ntt-gantt.component.ts
index 7083546..99a6459 100644
--- a/frontend/src/app/ntt-gantt/ntt-gantt.component.ts
+++ b/frontend/src/app/ntt-gantt/ntt-gantt.component.ts
@@ -25,6 +25,8 @@ import { GanttModule, ResizeService } from '@syncfusion/ej2-angular-gantt';
import { DateAdapter } from '@angular/material/core';
import { MAT_DATE_LOCALE } from '@angular/material/core';
import * as WebFont from 'webfontloader'; // Verwende import * as
+import { AppConfig } from 'src/environments/models/environment.model';
+import { APP_CONFIG } from '../app.config';
export const MY_DATE_FORMATS = {
@@ -188,6 +190,7 @@ export class NttGanttComponent implements OnInit {
public cancelButton: boolean = false;
public reApproveButton: boolean = false;
public implementerButton: boolean = false;
+ private config: AppConfig;
@@ -200,7 +203,8 @@ export class NttGanttComponent implements OnInit {
* @param dataService injects the dataService for data management and backend communication
* @param matDialog injects the matDialog
*/
- constructor(public languageService: LanguageService, public dataService: DataService, public matDialog: MatDialog, private _snackBar: MatSnackBar, public errorService: ErrorService, private location: Location, private dateAdapter: DateAdapter) {
+ constructor(@Inject(APP_CONFIG) config: AppConfig, public languageService: LanguageService, public dataService: DataService, public matDialog: MatDialog, private _snackBar: MatSnackBar, public errorService: ErrorService, private location: Location, private dateAdapter: DateAdapter) {
+ this.config=config;
this.initLanguge(true);
}
@@ -1026,7 +1030,7 @@ export class NttGanttComponent implements OnInit {
args.milestoneColor = "#bababa";
}
} else {
- console.log(args);
+ // console.log(args);
args.taskbarElement.innerHTML = null;
args.taskbarElement.classlist = null;
@@ -1043,6 +1047,8 @@ export class NttGanttComponent implements OnInit {
* @param args event arguments from the syncfusion gantt chart.
*/
public taskbarEdited(args: any) {
+ console.log(args);
+ let data = args.data;
if (args.data.taskData.isFixed !== false) {
args.cancel = true;
} else {
@@ -1061,7 +1067,8 @@ export class NttGanttComponent implements OnInit {
);
elem.scrollLeft = this.planTimeScrollLeft;
}
-
+ console.log(found);
+ this.ganttDefault.refresh();
});
}
}
@@ -1224,9 +1231,9 @@ export class NttGanttComponent implements OnInit {
if (args.dialogModel) {
args.cancel = true;
if (args.rowData.taskData.resources[0].state == 0) {
- window.open("https://itsm-"+environment+"-neu-smartit.asfinag.at/smartit/app/#/paketPV/" + args.rowData.taskData.resources[0].packageInstanceId, "_blank");
+ window.open(this.config.consoleUrl + "/smartit/app/#/paketPV/" + args.rowData.taskData.resources[0].packageInstanceId, "_blank");
} else {
- window.open("https://itsm-"+environment+"-neu-smartit.asfinag.at/smartit/app/#/changePV/" + args.rowData.taskData.resources[0].packageInstanceId, "_blank");
+ window.open(this.config.consoleUrl + "/smartit/app/#/changePV/" + args.rowData.taskData.resources[0].packageInstanceId, "_blank");
}
this.ganttDefault.hideSpinner();
} else {
diff --git a/frontend/src/assets/environment.json b/frontend/src/assets/environment.json
index a062946..d38abd3 100644
--- a/frontend/src/assets/environment.json
+++ b/frontend/src/assets/environment.json
@@ -1 +1 @@
-{"production":false,"rssoUrl":"http://orf.at","backendUrl":"http://localhost:8080/api"}
\ No newline at end of file
+{"production":false,"rssoUrl":"http://orf.at","backendUrl":"http://localhost:8080/api", "consoleUrl": "https://itsm-dev-neu-smartit.asfinag.at"}
diff --git a/frontend/src/environments/environment.container.ts b/frontend/src/environments/environment.container.ts
index 0d28b0b..46b5531 100644
--- a/frontend/src/environments/environment.container.ts
+++ b/frontend/src/environments/environment.container.ts
@@ -3,5 +3,6 @@ import { AppConfig } from './models/environment.model';
export const environment: AppConfig = {
production: true,
rssoUrl: "RSSO_URL",
- backendUrl: "BACKEND_API_URL"
+ backendUrl: "BACKEND_API_URL",
+ consoleUrl: "CONSOLE_URL"
};
diff --git a/frontend/src/environments/environment.ts b/frontend/src/environments/environment.ts
index 5413891..197be86 100644
--- a/frontend/src/environments/environment.ts
+++ b/frontend/src/environments/environment.ts
@@ -5,5 +5,6 @@ import { AppConfig } from './models/environment.model';
export const environment: AppConfig = {
production: false,
rssoUrl: "#",
- backendUrl: "http://localhost:8080/api"
-};
\ No newline at end of file
+ backendUrl: "http://localhost:8080/api",
+ consoleUrl: "https://itsm-dev-neu-smartit.asfinag.at"
+};
diff --git a/frontend/src/environments/models/environment.model.ts b/frontend/src/environments/models/environment.model.ts
index 32164a6..367df44 100644
--- a/frontend/src/environments/models/environment.model.ts
+++ b/frontend/src/environments/models/environment.model.ts
@@ -2,4 +2,5 @@ export interface AppConfig {
production: boolean;
rssoUrl: string;
backendUrl: string;
-}
\ No newline at end of file
+ consoleUrl: string;
+}