How to delete a record on the service portal

sinu2
Tera Expert

Hi Team,

I have a widget where i am populating user information from the custom table. Once user has added , we have another button called "Remove" as soon as user clicks on Remove button on the portal. Only that particular record should delete from that custom table. How can we achieve this through portal 

 

HTML CODE

<td><button id ={{r.data.teamsysID}} ng-click="confirmDelete()">Remove</button></td>

 

CLIENT SCRIPT CODE

c.confirmDelete = function(){
    c.server.get({
			action:'confirmDelete',
			ID:c.data.teamMembers.sys_id		
		}).then(function(r){
			spUtil.addTrivialMessage("The " + c.data.teamMembers.sys_id + "record has been deleted");
			$rootScope.$emit('confirmDelete', c.data.teamMembers.sys_id);
			c.data.teamMembers.sys_id='';
		});
   }

SERVER CODE

 

if (input) {
 if (input.action == 'deleteRecord'){
	gs.addInfoMessage('entered');
	 
 }

}

 I am not able to understand how can we get that particular sys_id from that custom table

1 ACCEPTED SOLUTION

Hi,

I have modified the code for you. Please use the same as mentioned below:

HTML:

<table class='table'>
  <thead class="thead-dark">
    <caption style="color:Brown;"><b>Member details of the selected team</b></caption>
    <tr class="tm-header">
    <th scope="col">Team</th>
    <th scope ="col">Team Members</th>
      <th scope ="col">Email</th>
     <th scope="col"><button class="btn btn-primary" ng-click="c.openModal()">${Add user}</button></th>
  </tr>
  </thead>
  <tbody>
    <tr style="background-color:white; color:blue;" ng-repeat="teamDetails in c.data.member">
      <td>{{c.data.teamName}}</td>
      <td>{{teamDetails.name}}</td>
      <td>{{teamDetails.email}}</td>
      <td><button id ={{r.data.teamsysID}} ng-click="confirmDelete($index)">Remove</button></td>
    </tr>
  </tbody>
</table>
 
<script>
 <div class="panel panel-default">
 <div class="panel-heading">
 <h4 class="panel-title">Modal Window</h4>
   </div>
 <div class="panel-body wrapper-xl">
 <b>Name: </b><sn-record-picker id="user" field="user" table="'sys_user'" display-field="'user'" value-field="'sys_id'" search-fields="'user_id'" page-size="100" ></sn-record-picker>
 <br>
 <b>Team: </b><sn-record-picker id="team" field="team" table="'x_80859_teamcool4u_team'" display-field="'team'" value-field="'sys_id'" search-fields="'name'" page-size="100" ></sn-record-picker>

   </div>
 <div class="panel-footer text-right">
 <button type="button" ng-click="c.closeModal()">Add User</button>
 </div>
 </div>
</script>

 

Client:

function($uibModal,$scope,$rootScope,spModal,spUtil){
	var c =this;
	var userData = [];
	var team = '';
	$rootScope.$on('selectTeam', function(event,data){
c.server.get({
action:'getTeam',
teamID:$rootScope.teamID
}).then(function(r) {
		c.data.member = r.data.teamMembers;
		c.data.teamName = r.data.teamName;
		team = r.data.teamName;
	});
});

c.openModal = function(){
	c.modalInstance = $uibModal.open({
	templateUrl: 'modalTemplate',
		scope: $scope	
		});	
}
	
c.closeModal= function() {
	debugger;
	var user = $('#user').select2('val');
	var teamName = $('#team').select2('val');
	c.server.get({
		action: 'createRecord',
		selectTeam: teamName,
		userName: user
	}).then(function(r){
		$rootScope.$emit('createRecord',r.data);
	});
	c.modalInstance.close();
}
	
	//Delete record
	
c.confirmDelete = function(idx){
    c.server.get({
			action:'confirmDelete',
			ID:idx		
	}).then(function(response) {
//Process your response
c.data.retrivedList = response.data.incList;
alert("Received data from server" + c.data.schedList.toString());
});
}
}

Server:

(function() {
  /* populate the 'data' object */
  /* e.g., data.table = $sp.getValue('table'); */
 data.teamMembers = [];
	data.teamName = '';
	data.teamsysID = '';
	data.UserSysID='';
	if(input){
		if(input && input.teamID){
			if(input.action == 'getTeam'){
				var teamSysID = input.teamID;
				//gs.addInfoMessage('teamSysID----'+teamSysID);
				data.teamsysID = teamSysID;
				var grteamcool4 = new GlideRecord('x_80859_teamcool4u_team');
				grteamcool4.addQuery('sys_id',teamSysID);
				grteamcool4.query();
				if(grteamcool4.next()){
					
					data.teamName = grteamcool4.getValue('name');
					//gs.addInfoMessage('teamName----'+grteamcool4.getValue('name'));
				}
				
				var grTeamID = new GlideRecord('x_80859_teamcool4u_m2m_users_teams');
				grTeamID.addQuery('team', teamSysID);
				grTeamID.query();
				while(grTeamID.next()){
					 var userID = grTeamID.getValue('user');
					var grUserDetails = new GlideRecord('sys_user');
					grUserDetails.addQuery('sys_id', userID);
					grUserDetails.query();
					
					if(grUserDetails.next()){
						var teamMembersObj = {};
						$sp.getRecordDisplayValues(teamMembersObj, grUserDetails, 'name,email');
						data.teamMembers.push(teamMembersObj);
						data.UserSysID=grTeamID.getValue('user');
						
					}
				}
			
			}		
		}	
	
if(input.action=='createRecord'){
	gs.info('Create Action triggered');
	
	var m2mTableForUserCreation = new GlideRecord('x_80859_teamcool4u_m2m_users_teams');
	m2mTableForUserCreation.initialize();
	m2mTableForUserCreation.team = input.selectTeam;
	m2mTableForUserCreation.user = input.userName;
	
	if(m2mTableForUserCreation.insert()){
		
		gs.addInfoMessage('User Added Successfully');
	}
	else{
		
		gs.error('Insert Failed');
	}
}

    


 if (input.action == 'confirmDelete'){
var gr = new GlideRecord('x_80859_teamcool4u_m2m_users_teams');
gr.addQuery('sys_id',input.ID);
gr.query();
if(gr.next()){
	gr.deleteRecord();
}



}
	 
 }


		
	
	
	/*function validateNewUSer(teamSysId, userSysId){
			return false;
			if(!teamSysId || !userSysId)
				return false;
			
			return true;
		}*/
	
	})();

 

Hope this helps. Please mark the answer as correct/helpful based on impact.

Regards,
Shloke

Hope this helps. Please mark the answer as correct/helpful based on impact.

Regards,
Shloke

View solution in original post

11 REPLIES 11

Hi Ankur,

 

Below is my code. Log is entering in server side script but record is not deleting. ANy modifications required????

HTML Code::

<td><button id ={{r.data.teamsysID}} ng-click="c.confirmDelete($index)">Remove</button></td>

 

Client side Code@@@@@@@@@@@

c.confirmDelete = function(idx){
    c.server.get({
			action:'confirmDelete',
			ID:c.data.record_id		
		}).then(function(r){
c.server.update();
		});
   }

 

Server Side Code@@@@@@@@@@

 

 if (input.action == 'confirmDelete'){
	gs.addInfoMessage('entered confirmDelete');
	 
	data.record_id = $sp.getParameter("sys_id")
gs.addInfoMessage('sys_id of the record m2m--');
var gr = new GlideRecord('x_80859_teamcool4u_m2m_users_teams');

gr.addQuery('sys_id',data.record_id);

gr.query();

if(gr.next())

{

gr.deleteRecord();

}
	 
 }

 

Hi,

I have modified the code for you. Please use the same as mentioned below:

HTML:

<table class='table'>
  <thead class="thead-dark">
    <caption style="color:Brown;"><b>Member details of the selected team</b></caption>
    <tr class="tm-header">
    <th scope="col">Team</th>
    <th scope ="col">Team Members</th>
      <th scope ="col">Email</th>
     <th scope="col"><button class="btn btn-primary" ng-click="c.openModal()">${Add user}</button></th>
  </tr>
  </thead>
  <tbody>
    <tr style="background-color:white; color:blue;" ng-repeat="teamDetails in c.data.member">
      <td>{{c.data.teamName}}</td>
      <td>{{teamDetails.name}}</td>
      <td>{{teamDetails.email}}</td>
      <td><button id ={{r.data.teamsysID}} ng-click="confirmDelete($index)">Remove</button></td>
    </tr>
  </tbody>
</table>
 
<script>
 <div class="panel panel-default">
 <div class="panel-heading">
 <h4 class="panel-title">Modal Window</h4>
   </div>
 <div class="panel-body wrapper-xl">
 <b>Name: </b><sn-record-picker id="user" field="user" table="'sys_user'" display-field="'user'" value-field="'sys_id'" search-fields="'user_id'" page-size="100" ></sn-record-picker>
 <br>
 <b>Team: </b><sn-record-picker id="team" field="team" table="'x_80859_teamcool4u_team'" display-field="'team'" value-field="'sys_id'" search-fields="'name'" page-size="100" ></sn-record-picker>

   </div>
 <div class="panel-footer text-right">
 <button type="button" ng-click="c.closeModal()">Add User</button>
 </div>
 </div>
</script>

 

Client:

function($uibModal,$scope,$rootScope,spModal,spUtil){
	var c =this;
	var userData = [];
	var team = '';
	$rootScope.$on('selectTeam', function(event,data){
c.server.get({
action:'getTeam',
teamID:$rootScope.teamID
}).then(function(r) {
		c.data.member = r.data.teamMembers;
		c.data.teamName = r.data.teamName;
		team = r.data.teamName;
	});
});

c.openModal = function(){
	c.modalInstance = $uibModal.open({
	templateUrl: 'modalTemplate',
		scope: $scope	
		});	
}
	
c.closeModal= function() {
	debugger;
	var user = $('#user').select2('val');
	var teamName = $('#team').select2('val');
	c.server.get({
		action: 'createRecord',
		selectTeam: teamName,
		userName: user
	}).then(function(r){
		$rootScope.$emit('createRecord',r.data);
	});
	c.modalInstance.close();
}
	
	//Delete record
	
c.confirmDelete = function(idx){
    c.server.get({
			action:'confirmDelete',
			ID:idx		
	}).then(function(response) {
//Process your response
c.data.retrivedList = response.data.incList;
alert("Received data from server" + c.data.schedList.toString());
});
}
}

Server:

(function() {
  /* populate the 'data' object */
  /* e.g., data.table = $sp.getValue('table'); */
 data.teamMembers = [];
	data.teamName = '';
	data.teamsysID = '';
	data.UserSysID='';
	if(input){
		if(input && input.teamID){
			if(input.action == 'getTeam'){
				var teamSysID = input.teamID;
				//gs.addInfoMessage('teamSysID----'+teamSysID);
				data.teamsysID = teamSysID;
				var grteamcool4 = new GlideRecord('x_80859_teamcool4u_team');
				grteamcool4.addQuery('sys_id',teamSysID);
				grteamcool4.query();
				if(grteamcool4.next()){
					
					data.teamName = grteamcool4.getValue('name');
					//gs.addInfoMessage('teamName----'+grteamcool4.getValue('name'));
				}
				
				var grTeamID = new GlideRecord('x_80859_teamcool4u_m2m_users_teams');
				grTeamID.addQuery('team', teamSysID);
				grTeamID.query();
				while(grTeamID.next()){
					 var userID = grTeamID.getValue('user');
					var grUserDetails = new GlideRecord('sys_user');
					grUserDetails.addQuery('sys_id', userID);
					grUserDetails.query();
					
					if(grUserDetails.next()){
						var teamMembersObj = {};
						$sp.getRecordDisplayValues(teamMembersObj, grUserDetails, 'name,email');
						data.teamMembers.push(teamMembersObj);
						data.UserSysID=grTeamID.getValue('user');
						
					}
				}
			
			}		
		}	
	
if(input.action=='createRecord'){
	gs.info('Create Action triggered');
	
	var m2mTableForUserCreation = new GlideRecord('x_80859_teamcool4u_m2m_users_teams');
	m2mTableForUserCreation.initialize();
	m2mTableForUserCreation.team = input.selectTeam;
	m2mTableForUserCreation.user = input.userName;
	
	if(m2mTableForUserCreation.insert()){
		
		gs.addInfoMessage('User Added Successfully');
	}
	else{
		
		gs.error('Insert Failed');
	}
}

    


 if (input.action == 'confirmDelete'){
var gr = new GlideRecord('x_80859_teamcool4u_m2m_users_teams');
gr.addQuery('sys_id',input.ID);
gr.query();
if(gr.next()){
	gr.deleteRecord();
}



}
	 
 }


		
	
	
	/*function validateNewUSer(teamSysId, userSysId){
			return false;
			if(!teamSysId || !userSysId)
				return false;
			
			return true;
		}*/
	
	})();

 

Hope this helps. Please mark the answer as correct/helpful based on impact.

Regards,
Shloke

Hope this helps. Please mark the answer as correct/helpful based on impact.

Regards,
Shloke

Hi Shloke,

 

As per your suggestion, I have modified my like below. But still not working

#note: I have observed in my addInfoMessage Input.ID is not coming sys_id while querying in server side.

 

ANY MODIFICATIONS NEEDED?

 

HTML CODE

<table class='table'>
  <thead class="thead-dark">
    <caption style="color:Brown;"><b>Member details of the selected team</b></caption>
    <tr class="tm-header">
    <th scope="col">Team</th>
    <th scope ="col">Team Members</th>
      <th scope ="col">Email</th>
     <th scope="col"><button class="btn btn-primary" ng-click="c.openModal()">${Add user}</button></th>
  </tr>
  </thead>
  <tbody>
    <tr style="background-color:white; color:blue;" ng-repeat="teamDetails in c.data.member">
      <td>{{c.data.teamName}}</td>
      <td>{{teamDetails.name}}</td>
      <td>{{teamDetails.email}}</td>
      <td><button ng-click="c.confirmDelete($index)">Remove</button></td>
    </tr>
  </tbody>
</table>
 
<script type="text/ng-template" id="modalTemplate">
 <div class="panel panel-default">
 <div class="panel-heading">
 <h4 class="panel-title">Modal Window</h4>
   </div>
 <div class="panel-body wrapper-xl">
 <b>Name: </b><sn-record-picker id="user" field="user" table="'sys_user'" display-field="'user'" value-field="'sys_id'" search-fields="'user_id'" page-size="100" ></sn-record-picker>
 <br>
 <b>Team: </b><sn-record-picker id="team" field="team" table="'x_80859_teamcool4u_team'" display-field="'team'" value-field="'sys_id'" search-fields="'name'" page-size="100" ></sn-record-picker>

   </div>
 <div class="panel-footer text-right">
 <button type="button" ng-click="c.closeModal()">Add User</button>
 </div>
 </div>
</script>

 

CLient

 

function($uibModal,$scope,$rootScope,spModal,spUtil){
	var c =this;
	var userData = [];
	var team = '';
	$rootScope.$on('selectTeam', function(event,data){
c.server.get({
action:'getTeam',
teamID:$rootScope.teamID
}).then(function(r) {
		c.data.member = r.data.teamMembers;
		c.data.teamName = r.data.teamName;
		team = r.data.teamName;
	});
});

c.openModal = function(){
	c.modalInstance = $uibModal.open({
	templateUrl: 'modalTemplate',
		scope: $scope	
		});	
}
	
c.closeModal= function() {
	debugger;
	var user = $('#user').select2('val');
	var teamName = $('#team').select2('val');
	c.server.get({
		action: 'createRecord',
		selectTeam: teamName,
		userName: user
	}).then(function(r){
		$rootScope.$emit('createRecord',r.data);
	});
	c.modalInstance.close();
}
	
	//Delete record
	
c.confirmDelete = function(idx){
    c.server.get({
			action:'confirmDelete',
			ID:idx		
	}).then(function(response) {
//Process your response
c.data.retrivedList = response.data.incList;
alert("Received data from server" + c.data.schedList.toString());
});
}
}

 

Server Side

 

(function() {
  /* populate the 'data' object */
  /* e.g., data.table = $sp.getValue('table'); */
 data.teamMembers = [];
	data.teamName = '';
	data.teamsysID = '';
	data.UserSysID='';
	if(input){
		if(input && input.teamID){
			if(input.action == 'getTeam'){
				var teamSysID = input.teamID;
				//gs.addInfoMessage('teamSysID----'+teamSysID);
				data.teamsysID = teamSysID;
				var grteamcool4 = new GlideRecord('x_80859_teamcool4u_team');
				grteamcool4.addQuery('sys_id',teamSysID);
				grteamcool4.query();
				if(grteamcool4.next()){
					
					data.teamName = grteamcool4.getValue('name');
					//gs.addInfoMessage('teamName----'+grteamcool4.getValue('name'));
				}
				
				var grTeamID = new GlideRecord('x_80859_teamcool4u_m2m_users_teams');
				grTeamID.addQuery('team', teamSysID);
				grTeamID.query();
				while(grTeamID.next()){
					 var userID = grTeamID.getValue('user');
					var grUserDetails = new GlideRecord('sys_user');
					grUserDetails.addQuery('sys_id', userID);
					grUserDetails.query();
					
					if(grUserDetails.next()){
						var teamMembersObj = {};
						$sp.getRecordDisplayValues(teamMembersObj, grUserDetails, 'name,email');
						data.teamMembers.push(teamMembersObj);
						data.UserSysID=grTeamID.getValue('user');
						
					}
				}
			
			}		
		}	
	
if(input.action=='createRecord'){
	gs.info('Create Action triggered');
	
	var m2mTableForUserCreation = new GlideRecord('x_80859_teamcool4u_m2m_users_teams');
	m2mTableForUserCreation.initialize();
	m2mTableForUserCreation.team = input.selectTeam;
	m2mTableForUserCreation.user = input.userName;
	
	if(m2mTableForUserCreation.insert()){
		
		gs.addInfoMessage('User Added Successfully');
	}
	else{
		
		gs.error('Insert Failed');
	}
}

    


 if (input.action == 'confirmDelete'){
var gr = new GlideRecord('x_80859_teamcool4u_m2m_users_teams');
gr.addQuery('sys_id',input.ID);
	 gs.addInfoMessage('input id is---'+input.ID);
gr.query();
if(gr.next()){
	gr.deleteRecord();
}



}
	 
 }


		
	
	
	/*function validateNewUSer(teamSysId, userSysId){
			return false;
			if(!teamSysId || !userSysId)
				return false;
			
			return true;
		}*/
	
	})();

okay not an issue. We can debug this and get you to a solution. Pleas modify your HTMl as below:

HTML:

<table class='table'>
  <thead class="thead-dark">
    <caption style="color:Brown;"><b>Member details of the selected team</b></caption>
    <tr class="tm-header">
    <th scope="col">Team</th>
    <th scope ="col">Team Members</th>
      <th scope ="col">Email</th>
     <th scope="col"><button class="btn btn-primary" ng-click="c.openModal()">${Add user}</button></th>
  </tr>
  </thead>
  <tbody>
    <tr style="background-color:white; color:blue;" ng-repeat="teamDetails in c.data.member">
      <td>{{c.data.teamName}}</td>
      <td>{{teamDetails.name}}</td>
      <td>{{teamDetails.email}}</td>
      <td><button id ={{r.data.teamsysID}} ng-click="confirmDelete(teamDetails.sys_id)">Remove</button></td>
    </tr>
  </tbody>
</table>
 
<script>
 <div class="panel panel-default">
 <div class="panel-heading">
 <h4 class="panel-title">Modal Window</h4>
   </div>
 <div class="panel-body wrapper-xl">
 <b>Name: </b><sn-record-picker id="user" field="user" table="'sys_user'" display-field="'user'" value-field="'sys_id'" search-fields="'user_id'" page-size="100" ></sn-record-picker>
 <br>
 <b>Team: </b><sn-record-picker id="team" field="team" table="'x_80859_teamcool4u_team'" display-field="'team'" value-field="'sys_id'" search-fields="'name'" page-size="100" ></sn-record-picker>

   </div>
 <div class="panel-footer text-right">
 <button type="button" ng-click="c.closeModal()">Add User</button>
 </div>
 </div>
</script>

 

Client Controller:

function($uibModal,$scope,$rootScope,spModal,spUtil){
	var c =this;
	var userData = [];
	var team = '';
	$rootScope.$on('selectTeam', function(event,data){
c.server.get({
action:'getTeam',
teamID:$rootScope.teamID
}).then(function(r) {
		c.data.member = r.data.teamMembers;
		c.data.teamName = r.data.teamName;
		team = r.data.teamName;
	});
});

c.openModal = function(){
	c.modalInstance = $uibModal.open({
	templateUrl: 'modalTemplate',
		scope: $scope	
		});	
}
	
c.closeModal= function() {
	debugger;
	var user = $('#user').select2('val');
	var teamName = $('#team').select2('val');
	c.server.get({
		action: 'createRecord',
		selectTeam: teamName,
		userName: user
	}).then(function(r){
		$rootScope.$emit('createRecord',r.data);
	});
	c.modalInstance.close();
}
	
	//Delete record
	
c.confirmDelete = function(id){
	alert('Value of ID is '+ id);
    c.server.get({
			action:'confirmDelete',
			ID:id		
	}).then(function(response) {
//Process your response
c.data.retrivedList = response.data.incList;
alert("Received data from server" + c.data.schedList.toString());
});
}
}

 

No change in Server is needed.

Also have put an alert in Client side as below:

Value of ID is

 

Check what is coming in this alert and let me know.

 

Hope this helps. Please mark the answer as correct/helpful based on impact.

Regards,
Shloke

Hope this helps. Please mark the answer as correct/helpful based on impact.

Regards,
Shloke

HI,

Kindly please find the below alert answer

find_real_file.png