diff --git a/MySQL_conf_pbx/test1/Rest-API-Postman/CezenPBX_API.postman_collection.json b/MySQL_conf_pbx/test1/Rest-API-Postman/CezenPBX_API.postman_collection.json index 92ed814..9652191 100644 --- a/MySQL_conf_pbx/test1/Rest-API-Postman/CezenPBX_API.postman_collection.json +++ b/MySQL_conf_pbx/test1/Rest-API-Postman/CezenPBX_API.postman_collection.json @@ -147,6 +147,35 @@ } }, "response": [] + }, + { + "name": "Add_a_global_extension_feature", + "request": { + "method": "PUT", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"context\": \"default\",\n \"extension\": \"w\",\n \"priority\": 5,\n \"app\": \"Dial\",\n \"appdata\": \"W conf\"\n}\n", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://localhost:8081/cezen/add_feature", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8081", + "path": [ + "cezen", + "add_feature" + ] + } + }, + "response": [] } ] } \ No newline at end of file diff --git a/MySQL_conf_pbx/test1/mariadb_data/aria_log.00000001 b/MySQL_conf_pbx/test1/mariadb_data/aria_log.00000001 index c609d75..8b58be4 100644 Binary files a/MySQL_conf_pbx/test1/mariadb_data/aria_log.00000001 and b/MySQL_conf_pbx/test1/mariadb_data/aria_log.00000001 differ diff --git a/MySQL_conf_pbx/test1/mariadb_data/aria_log_control b/MySQL_conf_pbx/test1/mariadb_data/aria_log_control index 08e5c4f..e0a15ce 100644 Binary files a/MySQL_conf_pbx/test1/mariadb_data/aria_log_control and b/MySQL_conf_pbx/test1/mariadb_data/aria_log_control differ diff --git a/MySQL_conf_pbx/test1/mariadb_data/ib_logfile0 b/MySQL_conf_pbx/test1/mariadb_data/ib_logfile0 index 403db68..13a022c 100644 Binary files a/MySQL_conf_pbx/test1/mariadb_data/ib_logfile0 and b/MySQL_conf_pbx/test1/mariadb_data/ib_logfile0 differ diff --git a/MySQL_conf_pbx/test1/springCezenPBX/src/main/java/com/example/cezenPBX/DAO/BasicAsteriskOpsDAO.java b/MySQL_conf_pbx/test1/springCezenPBX/src/main/java/com/example/cezenPBX/DAO/BasicAsteriskOpsDAO.java index 8d76b84..34920d3 100644 --- a/MySQL_conf_pbx/test1/springCezenPBX/src/main/java/com/example/cezenPBX/DAO/BasicAsteriskOpsDAO.java +++ b/MySQL_conf_pbx/test1/springCezenPBX/src/main/java/com/example/cezenPBX/DAO/BasicAsteriskOpsDAO.java @@ -112,4 +112,23 @@ public class BasicAsteriskOpsDAO implements CezenPbxOpsDAO { return query.executeUpdate() == 1; } + + @Override + @Transactional + public ReturnStatus saveAnExtensionByCharacters(ExtensionsTable extensionsTable) { + + try{ + + this.entityManager.persist(extensionsTable); + + return new ReturnStatus(true, + extensionsTable.getExtension() +" configured as "+ extensionsTable.getContext() +" added", + ""); + + }catch (Exception e){ + return new ReturnStatus(false, + extensionsTable.getExtension() +" configured as "+ extensionsTable.getContext() +" Already exists", + e.toString()); + } + } } diff --git a/MySQL_conf_pbx/test1/springCezenPBX/src/main/java/com/example/cezenPBX/DAO/CezenPbxOpsDAO.java b/MySQL_conf_pbx/test1/springCezenPBX/src/main/java/com/example/cezenPBX/DAO/CezenPbxOpsDAO.java index 0ce7d36..0da37bf 100644 --- a/MySQL_conf_pbx/test1/springCezenPBX/src/main/java/com/example/cezenPBX/DAO/CezenPbxOpsDAO.java +++ b/MySQL_conf_pbx/test1/springCezenPBX/src/main/java/com/example/cezenPBX/DAO/CezenPbxOpsDAO.java @@ -19,4 +19,6 @@ public interface CezenPbxOpsDAO { int getTheHighestPriorityNumberByEndpoint(String endpoint); boolean deleteAnExtensionPoint(String endpoint); + + ReturnStatus saveAnExtensionByCharacters(ExtensionsTable extensionsTable); } diff --git a/MySQL_conf_pbx/test1/springCezenPBX/src/main/java/com/example/cezenPBX/controller/CezenPbxController.java b/MySQL_conf_pbx/test1/springCezenPBX/src/main/java/com/example/cezenPBX/controller/CezenPbxController.java index 6d8a9b1..ed52823 100644 --- a/MySQL_conf_pbx/test1/springCezenPBX/src/main/java/com/example/cezenPBX/controller/CezenPbxController.java +++ b/MySQL_conf_pbx/test1/springCezenPBX/src/main/java/com/example/cezenPBX/controller/CezenPbxController.java @@ -80,4 +80,17 @@ public class CezenPbxController { return this.basicPbxServiceInterface.deleteByExtension(sipNumber); } + + // add global extension features like voicemail + @PutMapping("/add_feature") + public ReturnStatus addAGlobalFeatureToExtension(@RequestBody ExtensionsDTO extensionsDTO){ + + return this.basicPbxServiceInterface.addFeaturesToExtensionsForEndpoints( + extensionsDTO.context(), + extensionsDTO.extension(), + extensionsDTO.priority(), + extensionsDTO.app(), + extensionsDTO.appdata()); + } + } diff --git a/MySQL_conf_pbx/test1/springCezenPBX/src/main/java/com/example/cezenPBX/service/BasicPbxService.java b/MySQL_conf_pbx/test1/springCezenPBX/src/main/java/com/example/cezenPBX/service/BasicPbxService.java index 9f76bef..f2263ee 100644 --- a/MySQL_conf_pbx/test1/springCezenPBX/src/main/java/com/example/cezenPBX/service/BasicPbxService.java +++ b/MySQL_conf_pbx/test1/springCezenPBX/src/main/java/com/example/cezenPBX/service/BasicPbxService.java @@ -100,4 +100,35 @@ public class BasicPbxService implements BasicPbxServiceInterface { return this.cezenPbxOpsDAO.deleteAnExtensionPoint(extensionNumber); } + + // TODO make sure you check if the extension field is a literal character + @Override + public ReturnStatus addFeaturesToExtensionsForEndpoints(String context, String extension, int priority, String app, String appdata) { + // check if extension is a character + String extensionWordLiteral = ""; + + if(extension.chars().allMatch(Character::isLetter)){ + + extensionWordLiteral = extension; + }else{ + + return new ReturnStatus(false, "Only Character type extension point allowed", "User entered a numerical character sequence expected an alphabetical one instead"); + } + + + //if received input is empty + if(extensionWordLiteral.isEmpty()) return new ReturnStatus(false, "Extension field is empty", "User entered an empty extension"); + + // if yes then add the feature to the database + //return the status of the feature addition + return this.cezenPbxOpsDAO.saveAnExtensionByCharacters( + new ExtensionsTable( + context, + extension, + priority, + app, + appdata + ) + ); + } } diff --git a/MySQL_conf_pbx/test1/springCezenPBX/src/main/java/com/example/cezenPBX/service/BasicPbxServiceInterface.java b/MySQL_conf_pbx/test1/springCezenPBX/src/main/java/com/example/cezenPBX/service/BasicPbxServiceInterface.java index 5279985..520b626 100644 --- a/MySQL_conf_pbx/test1/springCezenPBX/src/main/java/com/example/cezenPBX/service/BasicPbxServiceInterface.java +++ b/MySQL_conf_pbx/test1/springCezenPBX/src/main/java/com/example/cezenPBX/service/BasicPbxServiceInterface.java @@ -18,4 +18,7 @@ public interface BasicPbxServiceInterface { public ReturnStatus setAors(String id, int maxContacts); public boolean deleteByExtension(String extensionNumber); + + // this method will allow the creation of global features azs long as 'extension' field is a literal character + public ReturnStatus addFeaturesToExtensionsForEndpoints(String context, String extension, int priority, String app, String appdata); }