/home/ivoiecob/email.hirewise-va.com/static/js/SharedContacts.app.7fc5addfea702f7d9ddb.js
"use strict";
(self["webpackChunkafterlogic_aurora_platform"] = self["webpackChunkafterlogic_aurora_platform"] || []).push([[44],{

/***/ "IWER":
/*!*******************************************************************!*\
  !*** ./modules/SharedContacts/js/popups/AddressbookSharePopup.js ***!
  \*******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

/* provided dependency */ var $ = __webpack_require__(/*! jquery */ "M4cL");


var _ = __webpack_require__(/*! underscore */ "C3HO"),
  ko = __webpack_require__(/*! knockout */ "p09A"),
  TextUtils = __webpack_require__(/*! modules/CoreWebclient/js/utils/Text.js */ "LKDt"),
  Types = __webpack_require__(/*! modules/CoreWebclient/js/utils/Types.js */ "ERH9"),
  Ajax = __webpack_require__(/*! modules/CoreWebclient/js/Ajax.js */ "8QQh"),
  AlertPopup = __webpack_require__(/*! modules/CoreWebclient/js/popups/AlertPopup.js */ "Rjyw"),
  Api = __webpack_require__(/*! modules/CoreWebclient/js/Api.js */ "Z9uT"),
  App = __webpack_require__(/*! modules/CoreWebclient/js/App.js */ "yU9o"),
  CAbstractPopup = __webpack_require__(/*! modules/CoreWebclient/js/popups/CAbstractPopup.js */ "69av"),
  ConfirmPopup = __webpack_require__(/*! modules/CoreWebclient/js/popups/ConfirmPopup.js */ "MYiO"),
  ModulesManager = __webpack_require__(/*! modules/CoreWebclient/js/ModulesManager.js */ "5D2l"),
  Popups = __webpack_require__(/*! modules/CoreWebclient/js/Popups.js */ "PMEU"),
  Screens = __webpack_require__(/*! modules/CoreWebclient/js/Screens.js */ "D2Gh"),
  CAddressbookShareModel = __webpack_require__(/*! modules/SharedContacts/js/models/CAddressbookShareModel.js */ "k2HI");

/**
 * @constructor
 */
function CAddressbookSharePopup() {
  CAbstractPopup.call(this);
  this.addressbook = null;
  this.accessList = ko.computed(function () {
    return [{
      value: Enums.SharedAddressbookAccess.Read,
      label: TextUtils.i18n('SHAREDCONTACTS/LABEL_READ_ACCESS')
    }, {
      value: Enums.SharedAddressbookAccess.Write,
      label: TextUtils.i18n('SHAREDCONTACTS/LABEL_WRITE_ACCESS')
    }, {
      value: Enums.SharedAddressbookAccess.NoAccess,
      label: TextUtils.i18n('SHAREDCONTACTS/LABEL_NOSHARE_ACCESS')
    }];
  }, this);
  this.shares = ko.observableArray([]);
  this.sharesScrollAreaDom = ko.observable(null);
  this.selectedTeammateDom = ko.observable(null);
  this.selectedTeammateDom.subscribe(function () {
    this.selectedTeammateDom().on('click', function () {
      if (this.selectedTeammateEmail() !== '') {
        if (!$(this.selectedTeammateDom().autocomplete('widget')).is(':visible')) {
          this.selectedTeammateDom().autocomplete('search');
        }
      }
    }.bind(this));
  }, this);
  this.selectedTeammateEmail = ko.observable('');
  this.selectedTeammateData = ko.observable(null);
  this.selectedTeammateData.subscribe(function () {
    if (this.selectedTeammateData()) {
      this.selectedTeammateEmail(this.selectedTeammateData().email);
    }
  }, this);
  this.selectAccessDom = ko.observable(null);
  this.lastRecievedSuggestList = [];
  this.isSaving = ko.observable(false);
  this.loadingAddressbookShares = ko.observable(false);
}
_.extendOwn(CAddressbookSharePopup.prototype, CAbstractPopup.prototype);
CAddressbookSharePopup.prototype.PopupTemplate = 'SharedContacts_AddressbookSharePopup';

/**
 * @param {object} addressbook
 */
CAddressbookSharePopup.prototype.onOpen = function () {
  var addressbook = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
  if (addressbook === null) {
    this.closePopup();
    return;
  }
  this.addressbook = addressbook;
  this.selectedTeammateEmail('');
  this.selectedTeammateData(null);
  this.fillUpShares();
  this.requestAddressbookShares(function (shares) {
    this.updateAddressbookShares(shares);
    this.fillUpShares();
  }.bind(this));
};
CAddressbookSharePopup.prototype.fillUpShares = function () {
  var sharesData = Types.pArray(this.addressbook && this.addressbook.Shares);
  this.shares(_.map(sharesData, function (shareData) {
    return new CAddressbookShareModel(shareData);
  }));
};
CAddressbookSharePopup.prototype.requestAddressbookShares = function (callback) {
  var addressbook = this.addressbook;
  var parameters = {
    'Id': addressbook.Id
  };
  this.loadingAddressbookShares(true);
  Ajax.send('SharedContacts', 'GetSharesForAddressbook', parameters, function (response, request) {
    this.loadingAddressbookShares(false);
    var shares = response && response.Result;
    if (shares) {
      callback(shares);
    } else {
      callback([]);
    }
  }.bind(this));
};
CAddressbookSharePopup.prototype.updateAddressbookShares = function (newShares) {
  if (!this.addressbook) {
    return;
  }
  this.addressbook.Shares = Types.pArray(newShares);
};
CAddressbookSharePopup.prototype.getCurrentShares = function () {
  return _.map(this.shares(), function (share) {
    var access = share.access();
    if (share.groupId) {
      return {
        PublicId: share.publicId,
        Access: access,
        IsAll: share.isAllUsersGroup,
        IsGroup: true,
        GroupId: share.groupId
      };
    } else {
      var state = {
        PublicId: share.publicId,
        Access: access
      };
      return state;
    }
  }, this);
};
CAddressbookSharePopup.prototype.hasChanges = function () {
  var addressbook = this.addressbook,
    savedShares = Types.pArray(addressbook && addressbook.Shares),
    currentShares = this.getCurrentShares();
  savedShares = _.sortBy(savedShares, 'PublicId');
  currentShares = _.sortBy(currentShares, 'PublicId');
  return addressbook && (!_.isEqual(savedShares, currentShares) || this.selectedTeammateEmail());
};
CAddressbookSharePopup.prototype.onEscHandler = function () {
  this.cancelPopup();
};
CAddressbookSharePopup.prototype.cancelPopup = function () {
  if (this.isSaving()) {
    return;
  }
  if (this.hasChanges()) {
    Popups.showPopup(ConfirmPopup, [TextUtils.i18n('COREWEBCLIENT/CONFIRM_DISCARD_CHANGES'), function (discardConfirmed) {
      if (discardConfirmed) {
        this.closePopup();
      }
    }.bind(this)]);
  } else {
    this.closePopup();
  }
};
CAddressbookSharePopup.prototype.autocompleteCallback = function (request, response) {
  var addressbook = this.addressbook;
  if (!this.addressbook) {
    fResponse([]);
    return;
  }
  var owner = App.getUserPublicId(),
    suggestParameters = {
      storage: 'team',
      addContactGroups: false,
      addUserGroups: true,
      exceptEmail: owner,
      withoutEmptyEmails: false
    },
    autocompleteCallback = ModulesManager.run('ContactsWebclient', 'getSuggestionsAutocompleteCallback', [suggestParameters]),
    markRecipientsWithKeyCallback = function (recipientList) {
      var _this = this;
      var ownerLowerCase = owner.toLowerCase();
      var filteredList = recipientList.filter(function (suggestion) {
        var emailLowerCase = suggestion.email.toLowerCase();
        return ownerLowerCase !== emailLowerCase && !_this.shares().find(function (share) {
          return share.publicId.toLowerCase() === emailLowerCase;
        });
      });
      this.lastRecievedSuggestList = filteredList;
      if (filteredList.length > 0) {
        response(filteredList);
      } else {
        response([{
          label: TextUtils.i18n('SHAREDCONTACTS/INFO_NO_SUGGESTED_CONTACTS'),
          disabled: true
        }]);
      }
    }.bind(this);
  if (_.isFunction(autocompleteCallback)) {
    this.selectedTeammateData(null);
    autocompleteCallback(request, markRecipientsWithKeyCallback);
  }
};
CAddressbookSharePopup.prototype.selectAccess = function (hasExpandClass, control) {
  var hasExpandClass = this.selectAccessDom().hasClass('expand');
  if (hasExpandClass) {
    this.selectAccessDom().removeClass('expand');
  } else {
    if (this.selectedTeammateData() === null) {
      var enteredTeammate = this.selectedTeammateEmail(),
        enteredTeammateLower = enteredTeammate.toLowerCase();
      if (enteredTeammate === '') {
        var alertText = TextUtils.i18n('SHAREDCONTACTS/WARNING_SELECT_TEAMMATE'),
          alertCallback = function () {
            this.selectedTeammateDom().focus();
            this.selectedTeammateDom().autocomplete('option', 'minLength', 0); //for triggering search on empty field
            this.selectedTeammateDom().autocomplete('search');
            this.selectedTeammateDom().autocomplete('option', 'minLength', 1);
          }.bind(this);
        Popups.showPopup(AlertPopup, [alertText, alertCallback]);
      } else {
        var teammateData = _.find(this.lastRecievedSuggestList, function (data) {
          return data.value.toLowerCase() === enteredTeammateLower || data.email.toLowerCase() === enteredTeammateLower || data.name.toLowerCase() === enteredTeammateLower;
        }.bind(this));
        if (teammateData) {
          this.selectedTeammateData(teammateData);
        } else {
          teammateData = _.find(this.lastRecievedSuggestList, function (data) {
            return data.value.toLowerCase().indexOf(enteredTeammateLower) !== -1;
          }.bind(this));
          if (teammateData) {
            var confirmText = TextUtils.i18n('SHAREDCONTACTS/CONFIRM_ADD_TEAMMATE', {
                'EMAIL': teammateData.email
              }),
              confirmCallback = function (addConfirmed) {
                if (addConfirmed) {
                  this.selectedTeammateEmail(teammateData.email);
                  this.selectedTeammateData(teammateData);
                  this.selectAccessDom().addClass('expand');
                } else {
                  this.selectedTeammateDom().focus();
                  this.selectedTeammateDom().autocomplete('search');
                }
              }.bind(this),
              yesButtonText = TextUtils.i18n('SHAREDCONTACTS/ACTION_YES'),
              noButtonText = TextUtils.i18n('SHAREDCONTACTS/ACTION_NO');
            Popups.showPopup(ConfirmPopup, [confirmText, confirmCallback, '', yesButtonText, noButtonText]);
          } else {
            var alertText = TextUtils.i18n('SHAREDCONTACTS/WARNING_NO_TEAMMATE_SELECTED', {
                'EMAIL': enteredTeammate
              }),
              alertCallback = function () {
                this.selectedTeammateDom().focus();
                this.selectedTeammateDom().autocomplete('search');
              }.bind(this);
            Popups.showPopup(AlertPopup, [alertText, alertCallback]);
          }
        }
      }
    }
    if (this.selectedTeammateData() !== null) {
      this.selectAccessDom().addClass('expand');
    }
  }
};
CAddressbookSharePopup.prototype.addNewShare = function (access) {
  if (!this.selectedTeammateData()) {
    this.selectedTeammateDom().focus();
    this.selectedTeammateDom().autocomplete('search');
    return;
  }
  this.shares.push(new CAddressbookShareModel({
    PublicId: this.selectedTeammateData().email,
    GroupId: this.selectedTeammateData().groupId,
    IsAll: this.selectedTeammateData().isAllUsersGroup,
    Access: access
  }));
  this.selectedTeammateData(null);
  this.selectedTeammateEmail('');
  var scrollArea = this.sharesScrollAreaDom(),
    listArea = scrollArea !== null ? scrollArea.find('.shares_list') : null;
  if (listArea !== null) {
    scrollArea.scrollTop(listArea.height() - scrollArea.height());
  }
};
CAddressbookSharePopup.prototype.deleteShare = function (publicId, groupId) {
  if (groupId) {
    this.shares(_.filter(this.shares(), function (share) {
      return share.groupId !== groupId;
    }));
  } else {
    this.shares(_.filter(this.shares(), function (share) {
      return share.publicId !== publicId;
    }));
  }
};
CAddressbookSharePopup.prototype.checkAndSaveShares = function () {
  if (this.isSaving()) {
    return;
  }
  this.isSaving(true);
  this.requestAddressbookShares(function (sharesFromServer) {
    this.isSaving(false);
    var addressbook = this.addressbook;
    var savedShares = Types.pArray(addressbook && addressbook.Shares);
    sharesFromServer = _.sortBy(sharesFromServer, 'PublicId');
    savedShares = _.sortBy(savedShares, 'PublicId');
    if (_.isEqual(savedShares, sharesFromServer)) {
      this.saveShares();
    } else {
      var alertText = TextUtils.i18n('SHAREDCONTACTS/WARNING_SHARES_CHANGED_BY_OTHER_USER'),
        alertCallback = function () {
          this.updateAddressbookShares(sharesFromServer);
          this.fillUpShares();
        }.bind(this);
      Popups.showPopup(AlertPopup, [alertText, alertCallback]);
    }
  }.bind(this));
};
CAddressbookSharePopup.prototype.saveShares = function () {
  if (this.isSaving()) {
    return;
  }
  if (this.selectedTeammateEmail()) {
    var confirmText = TextUtils.i18n('SHAREDCONTACTS/CONFIRM_SAVE_SHARES_WITHOUT_LAST_EMAIL', {
        'EMAIL': this.selectedTeammateEmail()
      }),
      confirmCallback = function (saveConfirmed) {
        if (saveConfirmed) {
          this.confirmedSaveShares();
        } else {
          setTimeout(this.selectAccess.bind(this));
        }
      }.bind(this);
    Popups.showPopup(ConfirmPopup, [confirmText, confirmCallback]);
  } else {
    this.confirmedSaveShares();
  }
};
CAddressbookSharePopup.prototype.confirmedSaveShares = function () {
  if (this.isSaving()) {
    return;
  }
  var shares = this.getCurrentShares(),
    parameters = {
      'Id': this.addressbook.Id,
      'Shares': shares
    };
  this.isSaving(true);
  Ajax.send('SharedContacts', 'UpdateAddressbookShare', parameters, _.bind(this.onUpdateShareResponse, this));
};
CAddressbookSharePopup.prototype.onUpdateShareResponse = function (response, request) {
  this.isSaving(false);
  if (response.Result) {
    this.requestAddressbookShares(function (shares) {
      this.updateAddressbookShares(shares);
      Screens.showReport(TextUtils.i18n('SHAREDCONTACTS/INFO_SHARING_STATUS_UPDATED'));
      this.addressbook = null;
      this.closePopup();
    }.bind(this));
  } else {
    Api.showErrorByCode(response);
  }
};
module.exports = new CAddressbookSharePopup();

/***/ }),

/***/ "gOg/":
/*!************************************************************************!*\
  !*** ./modules/SharedContacts/js/views/ShareAddressbookControlView.js ***!
  \************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {



var TextUtils = __webpack_require__(/*! modules/CoreWebclient/js/utils/Text.js */ "LKDt"),
  Ajax = __webpack_require__(/*! modules/CoreWebclient/js/Ajax.js */ "8QQh"),
  Api = __webpack_require__(/*! modules/CoreWebclient/js/Api.js */ "Z9uT"),
  ConfirmPopup = __webpack_require__(/*! modules/CoreWebclient/js/popups/ConfirmPopup.js */ "MYiO"),
  Popups = __webpack_require__(/*! modules/CoreWebclient/js/Popups.js */ "PMEU"),
  AddressbookSharePopup = __webpack_require__(/*! modules/SharedContacts/js/popups/AddressbookSharePopup.js */ "IWER");
function CShareAddressbookControlView() {}
CShareAddressbookControlView.prototype.ViewTemplate = 'SharedContacts_ShareAddressbookControlView';
CShareAddressbookControlView.prototype.openAddressbookSharePopup = function (addressbook) {
  if (AddressbookSharePopup && addressbook) {
    Popups.showPopup(AddressbookSharePopup, [addressbook]);
  }
};
CShareAddressbookControlView.prototype.leaveAddressbookShare = function (addressbook) {
  var addressbookName = addressbook.DisplayName || '',
    confirm = TextUtils.i18n('SHAREDCONTACTS/CONFIRM_LEAVE_SHARE', {
      'NAME': addressbookName
    }),
    confirmedLeaveShare = this.confirmedLeaveShare.bind(this, addressbook),
    okButtonText = TextUtils.i18n('SHAREDCONTACTS/ACTION_LEAVE_SHARE');
  Popups.showPopup(ConfirmPopup, [confirm, confirmedLeaveShare, '', okButtonText]);
};
CShareAddressbookControlView.prototype.confirmedLeaveShare = function (addressbook, confirmed) {
  if (confirmed) {
    var parameters = {
      'Id': addressbook.Id
    };
    Ajax.send('SharedContacts', 'LeaveShare', parameters, this.onLeaveShareResponse, this);
  }
};
CShareAddressbookControlView.prototype.onLeaveShareResponse = function (response, request) {
  if (response && response.Result) {
    Ajax.send('Contacts', 'GetStorages');
  } else {
    Api.showErrorByCode(response);
  }
};
module.exports = new CShareAddressbookControlView();

/***/ }),

/***/ "jll8":
/*!**********************************************!*\
  !*** ./modules/SharedContacts/js/manager.js ***!
  \**********************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

/* provided dependency */ var $ = __webpack_require__(/*! jquery */ "M4cL");


module.exports = function (appData) {
  var App = __webpack_require__(/*! modules/CoreWebclient/js/App.js */ "yU9o");
  if (App.isUserNormalOrTenant()) {
    return {
      start: function start() {
        $('html').addClass('shared-addressbooks');
      },
      getShareAddressbookControlView: function getShareAddressbookControlView() {
        return __webpack_require__(/*! modules/SharedContacts/js/views/ShareAddressbookControlView.js */ "gOg/");
      }
    };
  }
  return null;
};

/***/ }),

/***/ "k2HI":
/*!********************************************************************!*\
  !*** ./modules/SharedContacts/js/models/CAddressbookShareModel.js ***!
  \********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {



var ko = __webpack_require__(/*! knockout */ "p09A"),
  TextUtils = __webpack_require__(/*! modules/CoreWebclient/js/utils/Text.js */ "LKDt"),
  Types = __webpack_require__(/*! modules/CoreWebclient/js/utils/Types.js */ "ERH9");

/**
 * @constructor
 * @param {object} oData
 */
function CAddressbookShareModel(oData) {
  this.publicId = Types.pString(oData.PublicId);
  this.groupId = Types.pInt(oData.GroupId);
  this.isAllUsersGroup = Types.pBool(oData.IsAll);
  this.access = ko.observable(Types.pInt(oData.Access));
  this.accessText = ko.computed(function () {
    switch (this.access()) {
      case Enums.SharedAddressbookAccess.Write:
        return TextUtils.i18n('SHAREDCONTACTS/LABEL_WRITE_ACCESS');
      case Enums.SharedAddressbookAccess.Read:
        return TextUtils.i18n('SHAREDCONTACTS/LABEL_READ_ACCESS');
      case Enums.SharedAddressbookAccess.NoAccess:
        return TextUtils.i18n('SHAREDCONTACTS/LABEL_NOSHARE_ACCESS');
    }
  }, this);
}
module.exports = CAddressbookShareModel;

/***/ })

}]);