(function () {
  angular.module('mCord')
  .service('Enodeb', function($resource, $q, $http, baseUrl){
    const r = $resource(`${baseUrl}api/enodeb/:id`, {id: '@id'});

    r.prototype.getProfiles = function(){
      const d = $q.defer();

      $http.get(`${baseUrl}api/enodeb/${this.eNBId}/profile`)
      .then(res => {
        d.resolve(res.data);
      })
      .catch(err => {
        d.reject(err)
      });

      return d.promise;
    };

    r.prototype.getStats = function(){
      const d = $q.defer();

      $http.get(`${baseUrl}api/stats/enodeb/${this.eNBId}/10`)
      .then(res => {
        d.resolve(res.data);
      })
      .catch(err => {
        d.reject(err)
      });

      return d.promise;
    };

    return r;
  })
})();