From 64fac715ea5d7f7935ec06f2428296c741534652 Mon Sep 17 00:00:00 2001
From: juanf <juanf>
Date: Wed, 9 Nov 2016 12:46:41 +0000
Subject: [PATCH] SSDM-2597 : Delete works again for samples, now using v3 API.

SVN: 37292
---
 .../eln-lims/html/js/server/ServerFacade.js   | 29 +++++++++++++++++--
 .../SampleTable/SampleTableController.js      |  6 ++--
 2 files changed, 30 insertions(+), 5 deletions(-)

diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/server/ServerFacade.js b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/server/ServerFacade.js
index d7d7c334d43..f9b4d42cd1c 100644
--- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/server/ServerFacade.js
+++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/server/ServerFacade.js
@@ -362,8 +362,33 @@ function ServerFacade(openbisServer) {
 		this.openbisServer.deleteDataSets(datasetIds, reason, "TRASH", callback);
 	}
 	
-	this.deleteSamples = function(sampleIds, reason, callback) {
-		this.openbisServer.deleteSamples(sampleIds, reason, "TRASH", callback);
+	this.deleteSamples = function(samplePermIds, reason, callback) {
+		require([ 'openbis', "as/dto/sample/id/SamplePermId", "as/dto/sample/delete/SampleDeletionOptions" ], 
+		        function(openbis, SamplePermId, SampleDeletionOptions) {
+					//Boilerplate
+					var testProtocol = window.location.protocol;
+					var testHost = window.location.hostname;
+					var testPort = window.location.port;
+					
+					var testUrl = testProtocol + "//" + testHost + ":" + testPort;
+					var testApiUrl = testUrl + "/openbis/openbis/rmi-application-server-v3.json";
+					
+					var v3Api = new openbis(testApiUrl);
+					v3Api._private.sessionToken = mainController.serverFacade.getSession();
+			
+		            var samplePermIdsObj = [];
+		            for(var sPIdx = 0; sPIdx < samplePermIds.length; sPIdx++) {
+		            	samplePermIdsObj.push(new SamplePermId(samplePermIds[sPIdx]));
+		            }
+		 
+		            var deletionOptions = new SampleDeletionOptions();
+		            deletionOptions.setReason(reason);
+		 
+		            // logical deletion (move objects to the trash can)
+		            v3Api.deleteSamples(samplePermIdsObj, deletionOptions).done(function(deletionId) {
+		            	callback(deletionId);
+		            });
+		 });
 	}
 	
 	this.deleteExperiments = function(experimentIds, reason, callback) {
diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleTable/SampleTableController.js b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleTable/SampleTableController.js
index 76202417ca7..e45bd922413 100644
--- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleTable/SampleTableController.js
+++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleTable/SampleTableController.js
@@ -81,14 +81,14 @@ function SampleTableController(parentController, title, experimentIdentifier, pr
 					Util.showError("Please select at least one sample to delete!");
 				} else {
 					var warningText = "The next " + ELNDictionary.samples + " will be deleted: ";
-					var sampleTechIds = [];
+					var samplePermIds = [];
 					for(var sIdx = 0; sIdx < selected.length; sIdx++) {
-						sampleTechIds.push(selected[sIdx].id);
+						samplePermIds.push(selected[sIdx].permId);
 						warningText += selected[sIdx].identifier + " ";
 					}
 					
 					var modalView = new DeleteEntityController(function(reason) {
-						mainController.serverFacade.deleteSamples(sampleTechIds, reason, function(data) {
+						mainController.serverFacade.deleteSamples(samplePermIds, reason, function(data) {
 							if(data.error) {
 								Util.showError(data.error.message);
 							} else {
-- 
GitLab