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

@Ankur Bawiskar  - I made the changes advised above in the script ..but  CC Notification checkbox is  not getting autocheked when selecting Approvals , assignmnets and invitation checkbox

@Mishu 

you will have to debug further

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

@Mishu 

I can provide you the logic

The onApprovals(), onAssignments(), and onInvitations() methods should automatically set the c.notifications model to true (i.e., select the "CC notifications" checkbox) if any of these checkboxes are checked.

If my response helped please mark it correct and close the thread so that it benefits future readers.

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

@Ankur Bawiskar - Thanks, Let me try and get back