/*
 * This program is part of the OpenLMIS logistics management information system platform software.
 * Copyright © 2017 VillageReach
 *
 * This program is free software: you can redistribute it and/or modify it under the terms
 * of the GNU Affero General Public License as published by the Free Software Foundation, either
 * version 3 of the License, or (at your option) any later version.
 *  
 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
 * See the GNU Affero General Public License for more details. You should have received a copy of
 * the GNU Affero General Public License along with this program. If not, see
 * http://www.gnu.org/licenses.  For additional information contact info@OpenLMIS.org. 
 */

(function () {

  'use strict';

  /**
   * @ngdoc service
   * @name stock-program-util.stockProgramUtilService
   *
   * @description
   * Responsible for retrieving all supported programs and has right assigned with it from server.
   */
  angular
    .module('stock-program-util')
    .service('stockProgramUtilService', service);

  service.$inject = ['authorizationService', 'programService'];

  function service(authorizationService, programService) {

    this.getPrograms = function (userId, rightName) {
      var programIds = _.chain(authorizationService.getRights()).filter(function (right) {
        return right.name === rightName;
      }).map(function (right) {
        return right.programIds;
      }).flatten().value();

      return programService.getUserPrograms(userId, true).then(function (programs) {
        return programs.filter(function (program) {
          return _.contains(programIds, program.id);
        });
      });
    }
  }
})();

/*
 * This program is part of the OpenLMIS logistics management information system platform software.
 * Copyright © 2017 VillageReach
 *
 * This program is free software: you can redistribute it and/or modify it under the terms
 * of the GNU Affero General Public License as published by the Free Software Foundation, either
 * version 3 of the License, or (at your option) any later version.
 *  
 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
 * See the GNU Affero General Public License for more details. You should have received a copy of
 * the GNU Affero General Public License along with this program. If not, see
 * http://www.gnu.org/licenses.  For additional information contact info@OpenLMIS.org. 
 */

(function () {

  'use strict';

  /**
   * @ngdoc service
   * @name stock-program-util.stockProgramUtilService
   *
   * @description
   * Responsible for retrieving all supported programs and has right assigned with it from server.
   */
  angular
    .module('stock-program-util')
    .service('stockProgramUtilService', service);

  service.$inject = ['authorizationService', 'programService'];

  function service(authorizationService, programService) {

    this.getPrograms = function (userId, rightName) {
      var programIds = _.chain(authorizationService.getRights()).filter(function (right) {
        return right.name === rightName;
      }).map(function (right) {
        return right.programIds;
      }).flatten().value();

      return programService.getUserHomeFacilitySupportedPrograms(userId).then(function (programs) {
        return programs.filter(function (program) {
          return _.contains(programIds, program.id);
        });
      });
    }
  }
})();

use only supported programs in program-util service