When Approvals, assignments or meeting invitations are True then CC notification should also be true

Mishu
Tera Expert

When Approvals, assignments, or meeting invitations are True, then CC notification should also be true in the Delegate Form. Could someone please help me, since I don't have much hands-on Service Portal ?  How can I achieve this?

 

Mishu_0-1736239832048.png

 

 

 

Below is the HTML code :

<div class="panel-body">
  <table>
    <tr>
      <td class="form-field-td">
        <table>
          <tr>
            <td>
              <div class="row form-group">
                <label class="field-label" title="">
                  <span class="field-decorations">
                    <span class="fa fa-asterisk mandatory ng-scope" ng-class="{'mandatory-filled': c.user_filled()}" style="padding-right: .25em"></span></span>
                  <span style="padding-right: .25em" class="ng-binding" title="">User</span>
                </label>
                <sn-record-picker id="user" mandatory="true" ng-change="c.onUser()" field="user" table="'sys_user'" default-query="'active=true'" sn-disabled="c.data.user_readonly" display-field="'name'" value-field="'sys_id'" search-fields="'name'" page-size="100" autofocus></sn-record-picker>
              </div>
            </td>
          </tr>
          <tr>
            <td>
              <div class="row form-group">
                <label class="field-label" title="">
                  <span class="field-decorations">
                    <span class="fa fa-asterisk mandatory ng-scope" ng-class="{'mandatory-filled': c.delegate_filled()}" style="padding-right: .25em"></span></span>
                  <span style="padding-right: .25em" class="ng-binding" title="">Delegate</span>
                </label>
                <sn-record-picker id="delegate" ng-change="c.onDelegate()" field="delegateUser" table="'sys_user'" default-query="'active=true'" display-field="'name'" value-field="'sys_id'" search-fields="'name'" page-size="100"></sn-record-picker>
              </div>
            </td>
          </tr>
          <tr>
            <td>
              <div class="row form-group">
               <label class="field-label" title="">
                  <span class="field-decorations">
                    <span class="fa fa-asterisk mandatory ng-scope" ng-class="{'mandatory-filled': c.starts_filled()}" style="padding-right: .25em"></span></span>
                  <span style="padding-right: .25em" class="ng-binding" title="">Starts</span>
                </label>
                <sp-date-picker field="starts" ng-model="c.starts" ng-model-options="{getterSetter: true}" sn-change="c.onStarts()" sn-include-time="true"></sp-date-picker>
              </div>
            </td>
          </tr>
          <tr>
            <td>
              <div class="row form-group">
                <label class="field-label" title="">
                  <span class="field-decorations">
                    <span class="fa fa-asterisk mandatory ng-scope" ng-class="{'mandatory-filled': c.ends_filled()}" style="padding-right: .25em"></span></span>
                  <span style="padding-right: .25em" class="ng-binding" title="">Ends</span>
                </label>
                <sp-date-picker field="ends" ng-model="c.ends" ng-model-options="{getterSetter: true}" sn-change="c.onEnds()" sn-include-time="true"></sp-date-picker>
              </div>
            </td>
          </tr>
        </table>
      </td>
      <td class="assignments form-field-td" style="padding-left:15%;padding-top:2%;">
        <table>
          <tr>
            <td>
              <div class="row form-group">
                <label class="checkbox-inline">
                  <input id="approvals" name="approvals" type="checkbox" ng-change="c.onApprovals()" ng-model="c.approvals">Approvals
                </label>
              </div>
            </td>
          </tr>
          <tr>
            <td>
              <div class="row form-group">
                <label class="checkbox-inline">
                  <input type="checkbox" ng-change="c.onAssignments()" ng-model="c.assignments ">Assignments
                </label>
              </div>
            </td>
          </tr>
          <tr>
            <td>
              <div class="row form-group">
                <label class="checkbox-inline">
                  <input type="checkbox" ng-change="c.onNotifications()" ng-model="c.notifications">CC notifications
                </label>
              </div>
            </td>
          </tr>
          <tr>
            <td>
              <div class="row form-group">
                <label class="checkbox-inline">
                  <input type="checkbox" ng-change="c.onInvitations()" ng-model="c.invitations">Meeting invitations
                </label>
              </div>
            </td>
          </tr>
        </table>
      </td>
    </tr>
  </table>
</div>

 

Client Script for the Widget :

 

api.controller = function($scope) {
    /* widget controller */
    var c = this;

	// get Share data from parent widget
    var shareData = c.widget.options.shared;
    var delegate = null;

	// default object to be returned to parent widget via Share data
	var newData = {
		user: null,
		delegateUser: null,
		starts: null,
		ends: null,
		approvals: null,
		assignments: null,
		notifications: null,
		meetings: null
	};
	
	c.starts = '';
	c.ends = '';
	//c.data.user_readonly = true;

	// When is an UPDATE load current Delegate data to the model
    if (shareData.update) {
		shareData.modifiedDelegateData = newData;
        delegate = shareData.currentDelegateData;
		
        c.approvals = delegate.approvals == '1';
        c.assignments = delegate.assignments == '1';
        c.notifications = delegate.notifications == '1';
        c.invitations = delegate.invitations == '1';

        c.starts = delegate.starts;
        c.ends = delegate.ends;
    } 
	// When is a NEW Delegate
	else {
		shareData.newDelegateData = newData;
        c.approvals = false;
        c.assignments = false;
        c.notifications = false;
        c.invitations = false;
    }

    $scope.user = {
        displayValue: delegate ? delegate.user_dv : $scope.data.cur_user_dv,
        value: delegate ? delegate.user_id : $scope.data.cur_user_id,
        name: 'user'
    };

    $scope.delegateUser = {
        displayValue: delegate ? delegate.delegate_dv : '',
        value: delegate ? delegate.delegate_id : '',
        name: 'delegateUser'
    };


    $scope.starts = {
        displayValue: delegate ? delegate.starts : '',
        value: delegate ? delegate.starts : '',
        name: 'starts'
    };
    $scope.ends = {
        displayValue: delegate ? delegate.ends : '',
        value: delegate ? delegate.ends : '',
        name: 'ends'
    };
	
		

	c.onUser = function() {
		shareData.modifiedDelegateData.user = $scope.user.value;
	};
	
	c.onDelegate = function() {
		if (shareData.update) shareData.modifiedDelegateData.delegateUser = $scope.delegateUser.value;
		else shareData.newDelegateData.delegateUser = $scope.delegateUser.value;
	};
	
	c.onStarts = function() {
		if (shareData.update) shareData.modifiedDelegateData.starts = c.starts;
		else shareData.newDelegateData.starts = c.starts;
	};
	
	c.onEnds = function() {
		if (shareData.update) shareData.modifiedDelegateData.ends = c.ends;
		else shareData.newDelegateData.ends = c.ends;
	};

	c.onApprovals = function() {
		if (shareData.update) {
			shareData.modifiedDelegateData.approvals = c.approvals;
			//shareData.modifiedDelegateData.notifications = true;
		}
		else{
			shareData.newDelegateData.approvals = c.approvals;
		}
	};
	
	c.onAssignments = function() {
		if (shareData.update)
		{
			shareData.modifiedDelegateData.assignments = c.assignments;
			//shareData.modifiedDelegateData.notifications = true;
		}
		else
		{
			shareData.newDelegateData.assignments = c.assignments;
		}
	};
	
	c.onNotifications = function() {
		if (shareData.update)
		{
			shareData.modifiedDelegateData.notifications = c.notifications;
		}
		else{
			shareData.newDelegateData.notifications = c.notifications;
		}
	};
	
	c.onInvitations = function() {
		if (shareData.update)
		{
			shareData.modifiedDelegateData.invitations = c.invitations;
			//shareData.modifiedDelegateData.notifications = true;
		}
		else{ 
			shareData.newDelegateData.invitations = c.invitations;
		}
	};
	
	c.user_filled = function() {
		return $scope.user.value != '';
	};
	
	c.delegate_filled = function() {
		return $scope.delegateUser.value != '';
	};
	
	c.starts_filled = function() {
		return c.starts != '';
	};
	
	c.ends_filled = function() {
		return c.ends != '';
	};
};

 

13 REPLIES 13

Mishu
Tera Expert

@Ankur Bawiskar - Can you please help me in this issue 

@Mishu 

what's your business requirement here?

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

Hi @Ankur Bawiskar 

 

The screenshot below is a widget that appears on the click of the 'New Delegate' button..the requirement is 

  • CC notification checkbox should be auto selected when Approvals checkbox , assignments or meeting invitations checkboxes are selected as emails don’t go out if CC notifications are not selected

 

Mishu_0-1736244524168.png

 

I am little clueless about where exactly I have to make changes in Widget configuration to make this work