From 40462ff73136cacd3f3381214886c84b4ae72d45 Mon Sep 17 00:00:00 2001
From: Jayaprakash8887 <Jayaprakash.narayanaswamy@tarento.com>
Date: Tue, 13 Sep 2022 11:28:37 +0530
Subject: [PATCH] Issue #KN-257 feat: Content Release DIAL codes API refactor.

---
 .../org/sunbird/content/dial/DIALManager.scala    | 15 +++++++--------
 .../sunbird/content/util/ContentConstants.scala   |  1 +
 content-api/content-service/conf/application.conf |  1 +
 3 files changed, 9 insertions(+), 8 deletions(-)

diff --git a/content-api/content-actors/src/main/scala/org/sunbird/content/dial/DIALManager.scala b/content-api/content-actors/src/main/scala/org/sunbird/content/dial/DIALManager.scala
index 61bfee6b2..b5d3eada4 100644
--- a/content-api/content-actors/src/main/scala/org/sunbird/content/dial/DIALManager.scala
+++ b/content-api/content-actors/src/main/scala/org/sunbird/content/dial/DIALManager.scala
@@ -279,12 +279,11 @@ object DIALManager {
 			validateContentForReserveAndReleaseDialcodes(contentMetadata)
 			validateCountForReservingAndReleasingDialCode(request.getRequest.get(DIALConstants.DIALCODES).asInstanceOf[util.Map[String, AnyRef]])
 
-			if(operation.nonEmpty && operation.equalsIgnoreCase(ContentConstants.RESERVE)) {
-				reserve(request, channelId, contentId, rootNode, contentMetadata)
-			} else if(operation.nonEmpty && operation.equalsIgnoreCase(ContentConstants.RELEASE)) {
-				release(request, contentId, rootNode, contentMetadata)
-			} else throw new ClientException(DIALErrors.ERR_INVALID_OPERATION, DIALErrors.ERR_INVALID_OPERATION_MSG)
-
+			operation match {
+				case ContentConstants.RESERVE => reserve(request, channelId, contentId, rootNode, contentMetadata)
+				case ContentConstants.RELEASE => release(request, contentId, rootNode, contentMetadata)
+				case _ => throw new ClientException(DIALErrors.ERR_INVALID_OPERATION, DIALErrors.ERR_INVALID_OPERATION_MSG)
+			}
 		})
 	}
 
@@ -403,8 +402,8 @@ object DIALManager {
 		val validMimeType = if (Platform.config.hasPath("reserve_dialcode.mimeType")) Platform.config.getStringList("reserve_dialcode.mimeType") else util.Arrays.asList(ContentConstants.COLLECTION_MIME_TYPE)
 		if (!validMimeType.contains(metaData.get(ContentConstants.MIME_TYPE))) throw new ClientException(DIALErrors.ERR_CONTENT_MIMETYPE, DIALErrors.ERR_CONTENT_MIMETYPE_MSG)
 
-		if(metaData.get(ContentConstants.STATUS).asInstanceOf[String].equalsIgnoreCase("Retired"))
-			throw new ClientException(DIALErrors.ERR_CONTENT_RETIRED_OBJECT_ID, DIALErrors.ERR_CONTENT_RETIRED_OBJECT_ID_MSG)
+		val validContentStatus = if (Platform.config.hasPath("reserve_dialcode.valid_content_status")) Platform.config.getStringList("reserve_dialcode.valid_content_status") else util.Arrays.asList(ContentConstants.DRAFT)
+		if(!validContentStatus.contains(metaData.get(ContentConstants.STATUS).asInstanceOf[String])) throw new ClientException(DIALErrors.ERR_CONTENT_RETIRED_OBJECT_ID, DIALErrors.ERR_CONTENT_RETIRED_OBJECT_ID_MSG)
 	}
 
 	def validateCountForReservingAndReleasingDialCode(requestDIALCodesMap: util.Map[String, AnyRef]): Unit = {
diff --git a/content-api/content-actors/src/main/scala/org/sunbird/content/util/ContentConstants.scala b/content-api/content-actors/src/main/scala/org/sunbird/content/util/ContentConstants.scala
index aa199a481..8ae26a27a 100644
--- a/content-api/content-actors/src/main/scala/org/sunbird/content/util/ContentConstants.scala
+++ b/content-api/content-actors/src/main/scala/org/sunbird/content/util/ContentConstants.scala
@@ -77,4 +77,5 @@ object ContentConstants {
     val PROCESSING: String = "Processing"
     val RESERVE: String = "reserve"
     val RELEASE: String = "release"
+    val DRAFT: String = "Draft"
 }
diff --git a/content-api/content-service/conf/application.conf b/content-api/content-service/conf/application.conf
index 910dd9406..5a77be1c5 100644
--- a/content-api/content-service/conf/application.conf
+++ b/content-api/content-service/conf/application.conf
@@ -612,6 +612,7 @@ dial_service {
 reserve_dialcode {
     mimeType = ["application/vnd.ekstep.content-collection"]
     max_count = 250
+    valid_content_status = ["Draft","Live"]
 }
 
 content.link_dialcode.validation=true
-- 
GitLab